From 0d9505834cc60a01adeb6377aa9549ea3052f78d Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Fri, 29 Nov 2024 20:07:11 +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 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 4ec990f..9ba91d2 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -4844,7 +4844,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 */ PlanSpecDetail: () => (/* binding */ PlanSpecDetail)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CircularProgress/CircularProgress.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Container/Container.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.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 _components_p8p_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../components/p8p_svg */ \"./app/components/p8p_svg.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks */ \"./app/panels/mech_rec_assembly_mon/hooks.js\");\n/* harmony import */ var _progress_box__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./progress_box */ \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Мониторинг сборки изделий\r\n Панель мониторинга: Детализация по объекту\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Таблица данных\n //Интерактивные изображения\n //Подключение компонентов к настройкам приложения\n //Вспомогательные хуки\n //Информация по прогрессу объекта\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_INFO_MAIN: {\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"35vh\",\n backgroundColor: \"background.detail_table\"\n },\n BOX_INFO_SUB: isMessage => ({\n overflow: \"hidden\",\n textAlign: \"center\",\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: isMessage ? \"center\" : \"flex-start\",\n paddingLeft: \"5px\",\n paddingRight: \"5px\",\n ...(isMessage ? {\n padding: \"5px\"\n } : {\n paddingTop: \"10px\"\n })\n }),\n DETAIL_INFO: {\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"17vh\",\n backgroundColor: \"background.detail_info\"\n },\n PRODUCT_SELECTOR_CONTAINER: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"53vh\",\n marginTop: \"16px\",\n backgroundColor: \"background.product_selector\"\n },\n PRODUCT_SELECTOR_MODEL: {\n width: \"70%\"\n },\n PLAN_INFO_MAIN: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\"\n },\n PLAN_INFO_SUB: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"280px\",\n borderBottom: \"1px solid\"\n },\n TABLE_DETAILS: {\n backgroundColor: \"background.detail_table\",\n height: \"240px\"\n },\n TABLE_DETAILS_HEADER_CELL: maxWidth => ({\n backgroundColor: \"background.detail_table\",\n color: \"text.detail_table.fontColor\",\n padding: \"2px 2px\",\n fontSize: \"11px\",\n textAlign: \"center\",\n lineHeight: \"1rem\",\n ...(maxWidth ? {\n maxWidth\n } : {})\n }),\n TABLE_DETAILS_DATA_CELL: textAlign => ({\n backgroundColor: \"background.detail_table\",\n color: \"text.detail_table.fontColor\",\n padding: \"2px 2px\",\n fontSize: \"11px\",\n ...(textAlign ? {\n textAlign\n } : {})\n }),\n TABLE_DETAILS_MORE_BUTTON: {\n borderRadius: \"25px\",\n height: \"20px\",\n color: \"text.more_button.fontColor\"\n },\n TABLE_DETAILS_TEXT: {\n color: \"text.detail_table.fontColor\"\n },\n CARD_DETAILS_CONTAINER: {\n minWidth: \"1200px\",\n maxWidth: \"1400px\"\n },\n CARD_DETAILS_NAVIGATION_STACK: {\n width: \"100%\"\n },\n NAVIGATE_BUTTONS: {\n color: \"text.title.fontColor\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Информация о выпуске плана\nconst PlanSpecInfo = ({\n planSpec\n}) => {\n return /*#__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_6__[\"default\"], {\n sx: STYLES.PLAN_INFO_MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.PLAN_INFO_SUB\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n mt: 1\n }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0438\\u0437\\u0434\\u0435\\u043B\\u0438\\u044F:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"subtitle2\"\n }, planSpec.SNUMB)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.PLAN_INFO_SUB\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n mt: 1\n }, \"\\u0413\\u043E\\u0434 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"subtitle2\"\n }, planSpec.NYEAR))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_progress_box__WEBPACK_IMPORTED_MODULE_5__.ProgressBox, {\n progress: planSpec.NPROGRESS,\n detail: planSpec.SDETAIL,\n width: \"110px\",\n height: \"110px\",\n progressVariant: \"subtitle2\",\n detailVariant: \"body3\"\n }));\n};\n\n//Контроль свойств - Информация о спецификации плана\nPlanSpecInfo.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object)\n};\n\n//Модель выпуска плана\nconst PlanSpecProductCompositionModel = ({\n model,\n products,\n onProductSelect\n}) => {\n //При выборе детали на модели\n const handleProductClick = ({\n item\n }) => {\n const product = products.find(p => p.SMODEL_ID == item.id);\n if (product && onProductSelect) onProductSelect(product);\n };\n\n //Генерация содержимого\n return /*#__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_6__[\"default\"], {\n sx: STYLES.PRODUCT_SELECTOR_MODEL\n }, model ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_svg__WEBPACK_IMPORTED_MODULE_2__.P8PSVG, {\n data: atob(model),\n items: products.map(p => ({\n id: p.SMODEL_ID,\n backgroundColor: p.SMODEL_BG_COLOR || \"red\",\n desc: p.SNAME,\n title: p.SNAME\n })),\n fillOpacity: \"0.3\",\n onItemClick: handleProductClick\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"subtitle2\"\n }, \"\\u041C\\u043E\\u0434\\u0435\\u043B\\u044C \\u0438\\u0437\\u0434\\u0435\\u043B\\u0438\\u044F \\u043D\\u0435 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0436\\u0435\\u043D\\u0430\")));\n};\n\n//Контроль свойств - Модель выпуска плана\nPlanSpecProductCompositionModel.propTypes = {\n model: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().any),\n products: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().array),\n onProductSelect: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)\n};\n\n//Генерация представления ячейки заголовка\nconst headCellRender = ({\n columnDef\n}) => ({\n stackProps: {\n justifyContent: \"center\"\n },\n cellStyle: STYLES.TABLE_DETAILS_HEADER_CELL([\"NREMN_LABOUR\", \"NAPPLICABILITY\"].includes(columnDef.name) ? \"90px\" : [\"NDEFICIT\"].includes(columnDef.name) ? \"55px\" : null)\n});\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef\n}) => ({\n cellStyle: STYLES.TABLE_DETAILS_DATA_CELL([\"SOPERATION\", \"SNOMEN\"].includes(columnDef.name) ? null : \"center\"),\n data: row[columnDef]\n});\n\n//Таблица детализации изделия\nconst ProductDetailsTable = ({\n planSpec,\n product,\n stored,\n noProductMessage,\n noPlanSpecMessage,\n noDataFoundMessage,\n title\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n planSpec: null,\n product: null,\n orders: null,\n pageNumber: 1\n });\n\n //Собственное состояние - данные таблицы\n const {\n data,\n isLoading\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useProductDetailsTable)(state.planSpec, state.product, state.orders, state.pageNumber, stored);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setState(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setState(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1\n }));\n\n //При изменении изделия\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setState(pv => ({\n ...pv,\n planSpec,\n product,\n orders: null,\n pageNumber: 1\n }));\n }, [product, planSpec]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.BOX_INFO_SUB(!product || data.rows.length === 0)\n }, !product ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"ProductDetailMessage\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, noProductMessage) : !planSpec ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"ProductDetailMessage\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, noPlanSpecMessage) : /*#__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_9__[\"default\"], {\n direction: \"row\",\n spacing: 2,\n justifyContent: \"center\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n size: 18,\n sx: {\n opacity: isLoading ? 1 : 0\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"h4\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"b\", null, title))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_CONFIG_PROPS, {\n noDataFoundText: isLoading || !data.init ? \"\" : noDataFoundMessage,\n containerComponentProps: {\n sx: STYLES.TABLE_DETAILS,\n elevation: 0\n },\n columnsDef: data.columnsDef,\n rows: data.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: data.morePages,\n morePagesBtnProps: {\n sx: STYLES.TABLE_DETAILS_MORE_BUTTON\n },\n fixedHeader: true,\n reloading: false,\n dataCellRender: dataCellRender,\n headCellRender: headCellRender,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged\n }))));\n};\n\n//Контроль свойств - Таблица детализации изделия\nProductDetailsTable.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n product: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().number),\n stored: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n noProductMessage: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n noPlanSpecMessage: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n noDataFoundMessage: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Детализация по объекту\nconst PlanSpecDetail = ({\n planSpec,\n disableNavigatePrev = false,\n disableNavigateNext = false,\n onNavigate,\n onBack\n}) => {\n //Собственное состояние - данные производственных составов SVG\n const [costProductComposition, setCostProductComposition] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useCostProductComposition)(planSpec.NRN);\n\n //Выбор элемента изделия\n const setProduct = product => {\n setCostProductComposition(pv => ({\n ...pv,\n selectedProduct: product ? {\n ...product\n } : null\n }));\n };\n\n //При навигации между карточками\n const handleNavigate = direction => {\n setProduct(null);\n if (onNavigate) onNavigate(direction);\n };\n\n //Формируем представление\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n maxWidth: false,\n sx: STYLES.CARD_DETAILS_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n container: true,\n direction: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n spacing: 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n item: true,\n display: \"flex\",\n justifyContent: \"center\",\n xs: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n sx: STYLES.CARD_DETAILS_NAVIGATION_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: disableNavigatePrev,\n onClick: () => handleNavigate(-1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n sx: STYLES.NAVIGATE_BUTTONS\n }, \"navigate_before\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n item: true,\n xs: 10\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n maxWidth: false\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n onClick: () => onBack ? onBack() : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n direction: \"row\",\n color: \"text.title.fontColor\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, \"chevron_left\"), \"\\u041D\\u0430\\u0437\\u0430\\u0434\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n container: true,\n spacing: 2,\n sx: {\n paddingTop: \"5px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n item: true,\n xs: 5\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.BOX_INFO_MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ProductDetailsTable, {\n planSpec: costProductComposition.selectedProduct?.NFCPRODPLANSP_LINK,\n product: costProductComposition.selectedProduct?.NRN,\n stored: \"PKG_P8PANELS_MECHREC.FCROUTLST_DG_BY_LINKED_GET\",\n noProductMessage: \"Укажите элемент модели, чтобы увидеть информацию о маршрутных картах\",\n noPlanSpecMessage: \"Не определена связанная запись производственной программы\",\n noDataFoundMessage: \"Маршрутные карты не найдены\",\n title: \"Маршрутные карты\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.BOX_INFO_MAIN,\n mt: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ProductDetailsTable, {\n planSpec: costProductComposition.selectedProduct?.NFCPRODPLANSP_LINK,\n product: costProductComposition.selectedProduct?.NRN,\n stored: \"PKG_P8PANELS_MECHREC.FCDELIVSH_DG_BY_LINKED_GET\",\n noProductMessage: \"Укажите элемент модели, чтобы увидеть информацию о комплектовочных ведомостях\",\n noPlanSpecMessage: \"Не определена связанная запись производственной программы\",\n noDataFoundMessage: \"Комплектовочные ведомости не найдены\",\n title: \"Дефицит комплектующих\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n item: true,\n xs: 7\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.DETAIL_INFO\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecInfo, {\n planSpec: planSpec\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.PRODUCT_SELECTOR_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecProductCompositionModel, {\n model: costProductComposition.model,\n products: costProductComposition.products,\n onProductSelect: setProduct\n })))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n item: true,\n display: \"flex\",\n justifyContent: \"center\",\n xs: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n sx: STYLES.CARD_DETAILS_NAVIGATION_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n disabled: disableNavigateNext,\n onClick: () => handleNavigate(1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n sx: STYLES.NAVIGATE_BUTTONS\n }, \"navigate_next\"))))));\n};\n\n//Контроль свойств - Детализация по объекту\nPlanSpecDetail.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().object),\n disableNavigatePrev: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n disableNavigateNext: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().bool),\n onNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n onBack: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/components/plan_detail.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PlanSpecDetail: () => (/* binding */ PlanSpecDetail)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CircularProgress/CircularProgress.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Container/Container.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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.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 _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _components_p8p_svg__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../components/p8p_svg */ \"./app/components/p8p_svg.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks */ \"./app/panels/mech_rec_assembly_mon/hooks.js\");\n/* harmony import */ var _progress_box__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./progress_box */ \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../../app.styles */ \"./app.styles.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Мониторинг сборки изделий\r\n Панель мониторинга: Детализация по объекту\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Таблица данных\n //Интерактивные изображения\n //Подключение компонентов к настройкам приложения\n //Вспомогательные хуки\n //Информация по прогрессу объекта\n //Типовые стили\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_INFO_MAIN: {\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"35vh\",\n minHeight: \"250px\",\n backgroundColor: \"background.detail_table\"\n },\n BOX_INFO_SUB: isMessage => ({\n overflow: \"hidden\",\n textAlign: \"center\",\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: isMessage ? \"center\" : \"flex-start\",\n paddingLeft: \"5px\",\n paddingRight: \"5px\",\n ...(isMessage ? {\n padding: \"5px\"\n } : {\n paddingTop: \"10px\"\n })\n }),\n DETAIL_INFO: {\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"center\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"17vh\",\n minHeight: \"120px\",\n backgroundColor: \"background.detail_info\"\n },\n PRODUCT_SELECTOR_CONTAINER: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n height: \"53vh\",\n minHeight: \"379px\",\n marginTop: \"16px\",\n backgroundColor: \"background.product_selector\"\n },\n PRODUCT_SELECTOR_MODEL: {\n width: \"70%\"\n },\n PLAN_INFO_MAIN: {\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\"\n },\n PLAN_INFO_SUB: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"280px\",\n borderBottom: \"1px solid\"\n },\n TABLE_DETAILS: {\n backgroundColor: \"background.detail_table\",\n height: \"28vh\",\n minHeight: \"187px\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_6__.APP_STYLES.SCROLL\n },\n TABLE_DETAILS_HEADER_CELL: maxWidth => ({\n backgroundColor: \"background.detail_table\",\n color: \"text.detail_table.fontColor\",\n padding: \"2px 2px\",\n fontSize: \"11px\",\n textAlign: \"center\",\n lineHeight: \"1rem\",\n ...(maxWidth ? {\n maxWidth\n } : {})\n }),\n TABLE_DETAILS_DATA_CELL: textAlign => ({\n backgroundColor: \"background.detail_table\",\n color: \"text.detail_table.fontColor\",\n padding: \"2px 2px\",\n fontSize: \"11px\",\n ...(textAlign ? {\n textAlign\n } : {})\n }),\n TABLE_DETAILS_MORE_BUTTON: {\n borderRadius: \"25px\",\n height: \"20px\",\n color: \"text.more_button.fontColor\"\n },\n TABLE_DETAILS_TEXT: {\n color: \"text.detail_table.fontColor\"\n },\n CARD_DETAILS_CONTAINER: {\n minWidth: \"1200px\",\n maxWidth: \"1400px\"\n },\n CARD_DETAILS_NAVIGATION_STACK: {\n width: \"100%\"\n },\n NAVIGATE_BUTTONS: {\n color: \"text.title.fontColor\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Информация о выпуске плана\nconst PlanSpecInfo = ({\n planSpec\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PLAN_INFO_MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PLAN_INFO_SUB\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"PlanSpecInfo\",\n mt: 1\n }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0437\\u0430\\u043A\\u0430\\u0437\\u0430:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"subtitle2\"\n }, planSpec.SNUMB)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PLAN_INFO_SUB\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"PlanSpecInfo\",\n mt: 1\n }, \"\\u0413\\u043E\\u0434 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"subtitle2\"\n }, planSpec.NYEAR))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_progress_box__WEBPACK_IMPORTED_MODULE_5__.ProgressBox, {\n progress: planSpec.NPROGRESS,\n detail: planSpec.SDETAIL,\n width: \"110px\",\n height: \"110px\",\n progressVariant: \"subtitle2\",\n detailVariant: \"body3\"\n }));\n};\n\n//Контроль свойств - Информация о спецификации плана\nPlanSpecInfo.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object)\n};\n\n//Модель выпуска плана\nconst PlanSpecProductCompositionModel = ({\n model,\n products,\n onProductSelect\n}) => {\n //При выборе детали на модели\n const handleProductClick = ({\n item\n }) => {\n const product = products.find(p => p.SMODEL_ID == item.id);\n if (product && onProductSelect) onProductSelect(product);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PRODUCT_SELECTOR_MODEL\n }, model ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_svg__WEBPACK_IMPORTED_MODULE_2__.P8PSVG, {\n data: atob(model),\n items: products.map(p => ({\n id: p.SMODEL_ID,\n backgroundColor: p.SMODEL_BG_COLOR || \"red\",\n desc: p.SNAME,\n title: p.SNAME\n })),\n fillOpacity: \"0.3\",\n onItemClick: handleProductClick\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"subtitle2\"\n }, \"\\u041C\\u043E\\u0434\\u0435\\u043B\\u044C \\u0438\\u0437\\u0434\\u0435\\u043B\\u0438\\u044F \\u043D\\u0435 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0436\\u0435\\u043D\\u0430\")));\n};\n\n//Контроль свойств - Модель выпуска плана\nPlanSpecProductCompositionModel.propTypes = {\n model: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().any),\n products: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().array),\n onProductSelect: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//Генерация представления ячейки заголовка\nconst headCellRender = ({\n columnDef\n}) => ({\n stackProps: {\n justifyContent: \"center\"\n },\n cellStyle: STYLES.TABLE_DETAILS_HEADER_CELL([\"NREMN_LABOUR\", \"NAPPLICABILITY\"].includes(columnDef.name) ? \"90px\" : [\"NDEFICIT\"].includes(columnDef.name) ? \"55px\" : null)\n});\n\n//Генерация заливки строки исходя от значений\nconst dataCellRender = ({\n row,\n columnDef\n}) => ({\n cellStyle: STYLES.TABLE_DETAILS_DATA_CELL([\"SOPERATION\", \"SNOMEN\"].includes(columnDef.name) ? null : \"center\"),\n data: row[columnDef]\n});\n\n//Таблица детализации изделия\nconst ProductDetailsTable = ({\n planSpec,\n product,\n stored,\n noProductMessage,\n noPlanSpecMessage,\n noDataFoundMessage,\n title\n}) => {\n //Собственное состояние\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n planSpec: null,\n product: null,\n orders: null,\n pageNumber: 1\n });\n\n //Собственное состояние - данные таблицы\n const {\n data,\n isLoading\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useProductDetailsTable)(state.planSpec, state.product, state.orders, state.pageNumber, stored);\n\n //При изменении состояния сортировки\n const handleOrderChanged = ({\n orders\n }) => setState(pv => ({\n ...pv,\n orders: [...orders],\n pageNumber: 1\n }));\n\n //При изменении количества отображаемых страниц\n const handlePagesCountChanged = () => setState(pv => ({\n ...pv,\n pageNumber: pv.pageNumber + 1\n }));\n\n //При изменении изделия\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setState(pv => ({\n ...pv,\n planSpec,\n product,\n orders: null,\n pageNumber: 1\n }));\n }, [product, planSpec]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.BOX_INFO_SUB(!product || data.rows.length === 0)\n }, !product ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"ProductDetailMessage\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, noProductMessage) : !planSpec ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"ProductDetailMessage\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, noPlanSpecMessage) : /*#__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_10__[\"default\"], {\n direction: \"row\",\n spacing: 2,\n justifyContent: \"center\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n size: 18,\n sx: {\n opacity: isLoading ? 1 : 0\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n variant: \"h4\",\n sx: STYLES.TABLE_DETAILS_TEXT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"b\", null, title))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_3__.P8P_DATA_GRID_CONFIG_PROPS, {\n noDataFoundText: isLoading || !data.init ? \"\" : noDataFoundMessage,\n containerComponentProps: {\n sx: STYLES.TABLE_DETAILS,\n elevation: 0\n },\n columnsDef: data.columnsDef,\n rows: data.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.SMALL,\n morePages: data.morePages,\n morePagesBtnProps: {\n sx: STYLES.TABLE_DETAILS_MORE_BUTTON\n },\n fixedHeader: true,\n reloading: false,\n dataCellRender: dataCellRender,\n headCellRender: headCellRender,\n onOrderChanged: handleOrderChanged,\n onPagesCountChanged: handlePagesCountChanged\n }))));\n};\n\n//Контроль свойств - Таблица детализации изделия\nProductDetailsTable.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number),\n product: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().number),\n stored: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n noProductMessage: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n noPlanSpecMessage: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n noDataFoundMessage: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired,\n title: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().string).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Детализация по объекту\nconst PlanSpecDetail = ({\n planSpec,\n disableNavigatePrev = false,\n disableNavigateNext = false,\n onNavigate,\n onBack\n}) => {\n //Собственное состояние - данные производственных составов SVG\n const [costProductComposition, setCostProductComposition] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useCostProductComposition)(planSpec.NRN);\n\n //Выбор элемента изделия\n const setProduct = product => {\n setCostProductComposition(pv => ({\n ...pv,\n selectedProduct: product ? {\n ...product\n } : null\n }));\n };\n\n //При навигации между карточками\n const handleNavigate = direction => {\n setProduct(null);\n if (onNavigate) onNavigate(direction);\n };\n\n //Формируем представление\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n maxWidth: false,\n sx: STYLES.CARD_DETAILS_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n container: true,\n direction: \"row\",\n justifyContent: \"center\",\n alignItems: \"center\",\n spacing: 0\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n display: \"flex\",\n justifyContent: \"center\",\n xs: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n sx: STYLES.CARD_DETAILS_NAVIGATION_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n disabled: disableNavigatePrev,\n onClick: () => handleNavigate(-1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.NAVIGATE_BUTTONS\n }, \"navigate_before\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 10\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n maxWidth: false\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: () => onBack ? onBack() : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n direction: \"row\",\n color: \"text.title.fontColor\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, \"chevron_left\"), \"\\u041D\\u0430\\u0437\\u0430\\u0434\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n container: true,\n spacing: 2,\n sx: {\n paddingTop: \"5px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 5\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.BOX_INFO_MAIN\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ProductDetailsTable, {\n planSpec: costProductComposition.selectedProduct?.NFCPRODPLANSP_LINK,\n product: costProductComposition.selectedProduct?.NRN,\n stored: \"PKG_P8PANELS_MECHREC.FCROUTLST_DG_BY_LINKED_GET\",\n noProductMessage: \"Укажите элемент модели, чтобы увидеть информацию о маршрутных картах\",\n noPlanSpecMessage: \"Не определена связанная запись производственной программы\",\n noDataFoundMessage: \"Маршрутные карты не найдены\",\n title: \"Маршрутные карты\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.BOX_INFO_MAIN,\n mt: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ProductDetailsTable, {\n planSpec: costProductComposition.selectedProduct?.NFCPRODPLANSP_LINK,\n product: costProductComposition.selectedProduct?.NRN,\n stored: \"PKG_P8PANELS_MECHREC.FCDELIVSH_DG_BY_LINKED_GET\",\n noProductMessage: \"Укажите элемент модели, чтобы увидеть информацию о комплектовочных ведомостях\",\n noPlanSpecMessage: \"Не определена связанная запись производственной программы\",\n noDataFoundMessage: \"Комплектовочные ведомости не найдены\",\n title: \"Дефицит комплектующих\"\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n xs: 7\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DETAIL_INFO\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecInfo, {\n planSpec: planSpec\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.PRODUCT_SELECTOR_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecProductCompositionModel, {\n model: costProductComposition.model,\n products: costProductComposition.products,\n onProductSelect: setProduct\n })))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n item: true,\n display: \"flex\",\n justifyContent: \"center\",\n xs: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n sx: STYLES.CARD_DETAILS_NAVIGATION_STACK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n disabled: disableNavigateNext,\n onClick: () => handleNavigate(1)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.NAVIGATE_BUTTONS\n }, \"navigate_next\"))))));\n};\n\n//Контроль свойств - Детализация по объекту\nPlanSpecDetail.propTypes = {\n planSpec: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().object),\n disableNavigatePrev: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n disableNavigateNext: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().bool),\n onNavigate: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func),\n onBack: (prop_types__WEBPACK_IMPORTED_MODULE_9___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/components/plan_detail.js?"); /***/ }), @@ -4866,7 +4866,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 */ PlanSpecsListItem: () => (/* binding */ PlanSpecsListItem)\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/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ImageList/ImageList.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ImageListItem/ImageListItem.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_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _progress_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./progress_box */ \"./app/panels/mech_rec_assembly_mon/components/progress_box.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 CONTAINER: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n gap: \"24px\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n cursor: \"pointer\",\n backgroundColor: \"background.secondary\"\n },\n TEXT_INFO_FIELD: {\n color: \"text.secondary.fontColor\"\n },\n IMAGE_BOX: {\n width: \"180px\",\n height: \"180px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n display: \"flex\"\n },\n IMAGE_LIST_ITEM: {\n textAlign: \"center\"\n },\n IMAGE_IMG: {\n width: \"160px\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Изображение для элемента\nconst PlanSpecsListItemImage = ({\n card\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.IMAGE_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n variant: \"masonry\",\n cols: 1,\n gap: 8\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n key: 1,\n sx: STYLES.IMAGE_LIST_ITEM\n }, card[\"BIMAGE\"] ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: `data:image/png;base64,${card[\"BIMAGE\"]}`,\n loading: \"lazy\",\n style: STYLES.IMAGE_IMG\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: {\n fontSize: \"5rem\"\n }\n }, \"construction\"))));\n};\n\n//Контроль свойств - Изображение для элемента\nPlanSpecsListItemImage.propTypes = {\n card: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Элемент списка выпусков планов\nconst PlanSpecsListItem = ({\n card,\n cardIndex,\n onClick\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.CONTAINER,\n onClick: () => onClick ? onClick(card, cardIndex) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecsListItemImage, {\n card: card\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n textAlign: \"center\",\n height: \"70px\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n sx: STYLES.TEXT_INFO_FIELD\n }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0438\\u0437\\u0434\\u0435\\u043B\\u0438\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"h2\"\n }, card.SNUMB || \"-\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_progress_box__WEBPACK_IMPORTED_MODULE_1__.ProgressBox, {\n progress: card.NPROGRESS,\n detail: card.SDETAIL,\n width: \"155px\",\n height: \"155px\",\n progressVariant: \"h3\",\n detailVariant: \"PlanSpecProgressDetail\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n height: \"70px\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n sx: STYLES.TEXT_INFO_FIELD\n }, \"\\u0413\\u043E\\u0434 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"subtitle1\",\n mt: -1\n }, card.NYEAR || \"-\")));\n};\n\n//Контроль свойств - Элемент списка выпусков планов\nPlanSpecsListItem.propTypes = {\n card: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object),\n cardIndex: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/components/plans_list_item.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PlanSpecsListItem: () => (/* binding */ PlanSpecsListItem)\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/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ImageList/ImageList.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ImageListItem/ImageListItem.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_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _progress_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./progress_box */ \"./app/panels/mech_rec_assembly_mon/components/progress_box.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 CONTAINER: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexDirection: \"column\",\n gap: \"24px\",\n border: \"1px solid\",\n borderRadius: \"25px\",\n cursor: \"pointer\",\n backgroundColor: \"background.secondary\"\n },\n TEXT_INFO_FIELD: {\n color: \"text.secondary.fontColor\"\n },\n IMAGE_BOX: {\n width: \"180px\",\n height: \"180px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n display: \"flex\"\n },\n IMAGE_LIST_ITEM: {\n textAlign: \"center\"\n },\n IMAGE_IMG: {\n width: \"160px\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Изображение для элемента\nconst PlanSpecsListItemImage = ({\n card\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.IMAGE_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n variant: \"masonry\",\n cols: 1,\n gap: 8\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n key: 1,\n sx: STYLES.IMAGE_LIST_ITEM\n }, card[\"BIMAGE\"] ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"img\", {\n src: `data:image/png;base64,${card[\"BIMAGE\"]}`,\n loading: \"lazy\",\n style: STYLES.IMAGE_IMG\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: {\n fontSize: \"5rem\"\n }\n }, \"construction\"))));\n};\n\n//Контроль свойств - Изображение для элемента\nPlanSpecsListItemImage.propTypes = {\n card: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Элемент списка выпусков планов\nconst PlanSpecsListItem = ({\n card,\n cardIndex,\n onClick\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.CONTAINER,\n onClick: () => onClick ? onClick(card, cardIndex) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(PlanSpecsListItemImage, {\n card: card\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n textAlign: \"center\",\n height: \"70px\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n sx: STYLES.TEXT_INFO_FIELD\n }, \"\\u041D\\u043E\\u043C\\u0435\\u0440 \\u0437\\u0430\\u043A\\u0430\\u0437\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"h2\"\n }, card.SNUMB || \"-\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_progress_box__WEBPACK_IMPORTED_MODULE_1__.ProgressBox, {\n progress: card.NPROGRESS,\n detail: card.SDETAIL,\n width: \"155px\",\n height: \"155px\",\n progressVariant: \"h3\",\n detailVariant: \"PlanSpecProgressDetail\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n height: \"70px\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"PlanSpecInfo\",\n sx: STYLES.TEXT_INFO_FIELD\n }, \"\\u0413\\u043E\\u0434 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n variant: \"subtitle1\",\n mt: -1\n }, card.NYEAR || \"-\")));\n};\n\n//Контроль свойств - Элемент списка выпусков планов\nPlanSpecsListItem.propTypes = {\n card: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object),\n cardIndex: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/components/plans_list_item.js?"); /***/ }), @@ -4910,7 +4910,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 */ MechRecAssemblyMon: () => (/* binding */ MechRecAssemblyMon)\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_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormGroup/FormGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __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/Container/Container.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.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/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/ThemeProvider.js\");\n/* harmony import */ var _components_plans_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/plans_list */ \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\");\n/* harmony import */ var _components_plan_detail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/plan_detail */ \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\");\n/* harmony import */ var _styles_themes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles/themes */ \"./app/panels/mech_rec_assembly_mon/styles/themes.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_assembly_mon/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Мониторинг сборки изделий\r\n Панель мониторинга: Корневая панель мониторинга сборки изделий\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Подключение темы\n //Список планов\n //Детали плана\n //Стиль темы\n //Вспомогательные хуки\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\",\n [`& .MuiFormLabel-root.Mui-focused`]: {\n color: \"text.title.fontColor\"\n },\n [`& .MuiInputBase-root`]: {\n color: \"text.plans_finder.fontColor\"\n },\n [`& .MuiInputBase-root.Mui-focused::after`]: {\n borderBottom: \"2px solid black\"\n }\n },\n PLANS_CHECKBOX_HAVEDOCS: {\n alignContent: \"space-around\",\n [`& .MuiCheckbox-root.Mui-checked`]: {\n color: \"text.title.fontColor\"\n }\n },\n PLANS_LIST_ITEM_ZERODOCS: {\n backgroundColor: \"background.plans_zero_docs\"\n },\n PLANS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n PLANS_LIST_ITEM_SECONDARY: {\n wordWrap: \"break-word\",\n fontSize: \"0.6rem\",\n textTransform: \"uppercase\"\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 backgroundColor: \"background.plans_drawer_paper\",\n color: \"text.plans_finder.fontColor\"\n }\n },\n PLANS_LIST_BOX: {\n paddingTop: \"20px\"\n },\n ROOT_BG: {\n backgroundColor: \"background.main\",\n minHeight: \"calc(100vh - 64px)\",\n overflow: \"hidden\"\n },\n THEME_CHANGER: {\n color: \"text.title.fontColor\"\n },\n MAIN_TITLE: {\n textAlign: \"center\",\n color: \"text.title.fontColor\",\n marginTop: \"-24px\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Склонения для документов\nconst DECLINATIONS = [\"план\", \"плана\", \"планов\"];\n\n//Форматирование для отображения количества документов\nconst formatCountDocs = nCountDocs => {\n //Получаем последнюю цифру в значении\n let num = nCountDocs % 100 % 10;\n //Документов\n if (nCountDocs > 10 && nCountDocs < 20) return `${nCountDocs} ${DECLINATIONS[2]}`;\n //Документа\n if (num > 1 && num < 5) return `${nCountDocs} ${DECLINATIONS[1]}`;\n //Документ\n if (num == 1) return `${nCountDocs} ${DECLINATIONS[0]}`;\n //Документов\n return `${nCountDocs} ${DECLINATIONS[2]}`;\n};\n\n//Список каталогов планов\nconst PlanCtlgsList = ({\n planCtlgs = [],\n selectedPlanCtlg,\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_5__[\"default\"], {\n sx: STYLES.PLANS_FINDER,\n name: \"planFilter\",\n label: \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\",\n value: filter.ctlgName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n ctlgName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.PLANS_CHECKBOX_HAVEDOCS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n checked: filter.haveDocs,\n onChange: event => setFilter(pv => ({\n ...pv,\n haveDocs: event.target.checked\n }))\n }),\n label: \"\\u0422\\u043E\\u043B\\u044C\\u043A\\u043E \\u0441 \\u043F\\u043B\\u0430\\u043D\\u0430\\u043C\\u0438\",\n labelPlacement: \"end\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, planCtlgs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: p.NCOUNT_DOCS == 0 ? STYLES.PLANS_LIST_ITEM_ZERODOCS : null,\n key: p.NRN,\n selected: p.NRN === selectedPlanCtlg,\n onClick: () => onClick ? onClick({\n NRN: p.NRN,\n SNAME: p.SNAME,\n NMIN_YEAR: p.NMIN_YEAR,\n NMAX_YEAR: p.NMAX_YEAR\n }) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.PLANS_LIST_ITEM_PRIMARY\n }, p.SNAME),\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: {\n ...STYLES.PLANS_LIST_ITEM_SECONDARY\n }\n }, formatCountDocs(p.NCOUNT_DOCS))\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nPlanCtlgsList.propTypes = {\n planCtlgs: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().array),\n selectedPlanCtlg: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель мониторинга сборки изделий\nconst MechRecAssemblyMon = () => {\n //Состояние - текущая тема\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_styles_themes__WEBPACK_IMPORTED_MODULE_3__.lightTheme);\n //Собственное состояние\n const [state, setState, selectPlanCtlg, unselectPlanCtlg] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useMechRecAssemblyMon)();\n\n //Состояние фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ctlgName: \"\",\n haveDocs: false\n });\n\n //Состояние навигации по карточкам детализации\n const [planDetailNavigation, setPlanDetailNavigation] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n disableNavigatePrev: false,\n disableNavigateNext: false,\n currentPlanIndex: 0\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useFilteredPlanCtlgs)(state.planCtlgs, filter);\n\n //Обработка нажатия на элемент в списке каталогов планов\n const handlePlanCtlgClick = planCtlg => {\n if (state.selectedPlanCtlg.NRN != planCtlg.NRN) selectPlanCtlg(planCtlg);else unselectPlanCtlg();\n };\n\n //Перемещение к нужному плану\n const navigateToPlan = planIndex => {\n if (planIndex < 0) planIndex = 0;\n if (planIndex > state.planSpecs.length - 1) planIndex = state.planSpecs.length - 1;\n setState(pv => ({\n ...pv,\n selectedPlanSpec: {\n ...state.planSpecs[planIndex]\n }\n }));\n setPlanDetailNavigation(pv => ({\n ...pv,\n disableNavigatePrev: planIndex == 0 ? true : false,\n disableNavigateNext: planIndex == state.planSpecs.length - 1 ? true : false,\n currentPlanIndex: planIndex\n }));\n };\n\n //Обработка нажатия на документ плана\n const handlePlanClick = (plan, planIndex) => navigateToPlan(planIndex);\n\n //Обработка нажатия на кнопку \"Назад\"\n const handlePlanDetailBackClick = () => {\n setState(pv => ({\n ...pv,\n selectedPlanSpec: {}\n }));\n };\n\n //Обработка навигации из карточки с деталями плана\n const handlePlanDetailNavigateClick = direction => navigateToPlan(planDetailNavigation.currentPlanIndex + direction);\n\n //Обработка изменения темы\n const handleThemeChange = () => {\n setTheme(theme.palette.type === \"light\" ? _styles_themes__WEBPACK_IMPORTED_MODULE_3__.darkTheme : _styles_themes__WEBPACK_IMPORTED_MODULE_3__.lightTheme);\n };\n\n //Формирование текста заголовка\n const title = `${state.selectedPlanCtlg.SNAME} на ${state.selectedPlanCtlg.NMIN_YEAR} ${state.selectedPlanCtlg.NMIN_YEAR == state.selectedPlanCtlg.NMAX_YEAR ? \"г.\" : `- ${state.selectedPlanCtlg.NMAX_YEAR} г.г.`} `;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_styles__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n theme: theme\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n maxWidth: false,\n disableGutters: true,\n sx: STYLES.ROOT_BG\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"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 }, \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\\u0438 \\u043F\\u043B\\u0430\\u043D\\u043E\\u0432\"), /*#__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(PlanCtlgsList, {\n planCtlgs: filteredPlanCtgls,\n selectedPlanCtlg: state.selectedPlanCtlg.NRN,\n filter: filter,\n setFilter: setFilter,\n onClick: handlePlanCtlgClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-end\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n onClick: () => handleThemeChange()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n sx: STYLES.THEME_CHANGER\n }, theme.palette.type === \"light\" ? \"brightness_4\" : \"brightness_7\"))), state.init == true ? state.selectedPlanCtlg.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_12__[\"default\"], {\n variant: \"h3\",\n sx: STYLES.MAIN_TITLE,\n pb: 2\n }, title), state.planSpecsLoaded == true ? state.selectedPlanSpec.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_plan_detail__WEBPACK_IMPORTED_MODULE_2__.PlanSpecDetail, {\n planSpec: state.selectedPlanSpec,\n disableNavigatePrev: planDetailNavigation.disableNavigatePrev,\n disableNavigateNext: planDetailNavigation.disableNavigateNext,\n onNavigate: handlePlanDetailNavigateClick,\n onBack: handlePlanDetailBackClick\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n sx: STYLES.PLANS_LIST_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_plans_list__WEBPACK_IMPORTED_MODULE_1__.PlanSpecsList, {\n planSpecs: state.planSpecs,\n onItemClick: handlePlanClick\n })) : null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"h4\",\n sx: STYLES.MAIN_TITLE\n }, \"\\u0423\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u043A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433 \\u043F\\u043B\\u0430\\u043D\\u043E\\u0432 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u0441\\u043F\\u0435\\u0446\\u0438\\u0444\\u0438\\u043A\\u0430\\u0446\\u0438\\u0439\") : null)));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MechRecAssemblyMon: () => (/* binding */ MechRecAssemblyMon)\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_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormGroup/FormGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __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/Container/Container.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.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/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material/styles */ \"./node_modules/@mui/material/styles/ThemeProvider.js\");\n/* harmony import */ var _components_plans_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/plans_list */ \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\");\n/* harmony import */ var _components_plan_detail__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/plan_detail */ \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\");\n/* harmony import */ var _styles_themes__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./styles/themes */ \"./app/panels/mech_rec_assembly_mon/styles/themes.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_assembly_mon/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Мониторинг сборки изделий\r\n Панель мониторинга: Корневая панель мониторинга сборки изделий\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Подключение темы\n //Список планов\n //Детали плана\n //Стиль темы\n //Вспомогательные хуки\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\",\n [`& .MuiFormLabel-root.Mui-focused`]: {\n color: \"text.title.fontColor\"\n },\n [`& .MuiInputBase-root`]: {\n color: \"text.plans_finder.fontColor\"\n },\n [`& .MuiInputBase-root.Mui-focused::after`]: {\n borderBottom: \"2px solid black\"\n }\n },\n PLANS_CHECKBOX_HAVEDOCS: {\n alignContent: \"space-around\",\n [`& .MuiCheckbox-root.Mui-checked`]: {\n color: \"text.title.fontColor\"\n }\n },\n PLANS_LIST_ITEM_ZERODOCS: {\n backgroundColor: \"background.plans_zero_docs\"\n },\n PLANS_LIST_ITEM_PRIMARY: {\n wordWrap: \"break-word\"\n },\n PLANS_LIST_ITEM_SECONDARY: {\n wordWrap: \"break-word\",\n fontSize: \"0.6rem\",\n textTransform: \"uppercase\"\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 backgroundColor: \"background.plans_drawer_paper\",\n color: \"text.plans_finder.fontColor\"\n }\n },\n PLANS_LIST_BOX: {\n paddingTop: \"20px\"\n },\n ROOT_BG: {\n backgroundColor: \"background.main\",\n minHeight: \"calc(100vh - 64px)\",\n overflow: \"hidden\"\n },\n THEME_CHANGER: {\n color: \"text.title.fontColor\"\n },\n MAIN_TITLE: {\n textAlign: \"center\",\n color: \"text.title.fontColor\",\n marginTop: \"-24px\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Склонения для документов\nconst DECLINATIONS = [\"план\", \"плана\", \"планов\"];\n\n//Форматирование для отображения количества документов\nconst formatCountDocs = nCountDocs => {\n //Получаем последнюю цифру в значении\n let num = nCountDocs % 100 % 10;\n //Документов\n if (nCountDocs > 10 && nCountDocs < 20) return `${nCountDocs} ${DECLINATIONS[2]}`;\n //Документа\n if (num > 1 && num < 5) return `${nCountDocs} ${DECLINATIONS[1]}`;\n //Документ\n if (num == 1) return `${nCountDocs} ${DECLINATIONS[0]}`;\n //Документов\n return `${nCountDocs} ${DECLINATIONS[2]}`;\n};\n\n//Список каталогов планов\nconst PlanCtlgsList = ({\n planCtlgs = [],\n selectedPlanCtlg,\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_5__[\"default\"], {\n sx: STYLES.PLANS_FINDER,\n name: \"planFilter\",\n label: \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\",\n value: filter.ctlgName,\n variant: \"standard\",\n fullWidth: true,\n onChange: event => {\n setFilter(pv => ({\n ...pv,\n ctlgName: event.target.value\n }));\n }\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.PLANS_CHECKBOX_HAVEDOCS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n checked: filter.haveDocs,\n onChange: event => setFilter(pv => ({\n ...pv,\n haveDocs: event.target.checked\n }))\n }),\n label: \"\\u0422\\u043E\\u043B\\u044C\\u043A\\u043E \\u0441 \\u043F\\u043B\\u0430\\u043D\\u0430\\u043C\\u0438\",\n labelPlacement: \"end\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, planCtlgs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: p.NCOUNT_DOCS == 0 ? STYLES.PLANS_LIST_ITEM_ZERODOCS : null,\n key: p.NRN,\n selected: p.NRN === selectedPlanCtlg,\n onClick: () => onClick ? onClick({\n NRN: p.NRN,\n SNAME: p.SNAME,\n NMIN_YEAR: p.NMIN_YEAR,\n NMAX_YEAR: p.NMAX_YEAR\n }) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.PLANS_LIST_ITEM_PRIMARY\n }, p.SNAME),\n secondary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: {\n ...STYLES.PLANS_LIST_ITEM_SECONDARY\n }\n }, formatCountDocs(p.NCOUNT_DOCS))\n })))));\n};\n\n//Контроль свойств - Список каталогов планов\nPlanCtlgsList.propTypes = {\n planCtlgs: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().array),\n selectedPlanCtlg: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель мониторинга сборки изделий\nconst MechRecAssemblyMon = () => {\n //Состояние - текущая тема\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_styles_themes__WEBPACK_IMPORTED_MODULE_3__.lightTheme);\n //Собственное состояние\n const [state, setState, selectPlanCtlg, unselectPlanCtlg] = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useMechRecAssemblyMon)();\n\n //Состояние фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ctlgName: \"\",\n haveDocs: false\n });\n\n //Состояние навигации по карточкам детализации\n const [planDetailNavigation, setPlanDetailNavigation] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n disableNavigatePrev: false,\n disableNavigateNext: false,\n currentPlanIndex: 0\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_4__.useFilteredPlanCtlgs)(state.planCtlgs, filter);\n\n //Обработка нажатия на элемент в списке каталогов планов\n const handlePlanCtlgClick = planCtlg => {\n if (state.selectedPlanCtlg.NRN != planCtlg.NRN) selectPlanCtlg(planCtlg);else unselectPlanCtlg();\n };\n\n //Перемещение к нужному плану\n const navigateToPlan = planIndex => {\n if (planIndex < 0) planIndex = 0;\n if (planIndex > state.planSpecs.length - 1) planIndex = state.planSpecs.length - 1;\n setState(pv => ({\n ...pv,\n selectedPlanSpec: {\n ...state.planSpecs[planIndex]\n }\n }));\n setPlanDetailNavigation(pv => ({\n ...pv,\n disableNavigatePrev: planIndex == 0 ? true : false,\n disableNavigateNext: planIndex == state.planSpecs.length - 1 ? true : false,\n currentPlanIndex: planIndex\n }));\n };\n\n //Обработка нажатия на документ плана\n const handlePlanClick = (plan, planIndex) => navigateToPlan(planIndex);\n\n //Обработка нажатия на кнопку \"Назад\"\n const handlePlanDetailBackClick = () => {\n setState(pv => ({\n ...pv,\n selectedPlanSpec: {}\n }));\n };\n\n //Обработка навигации из карточки с деталями плана\n const handlePlanDetailNavigateClick = direction => navigateToPlan(planDetailNavigation.currentPlanIndex + direction);\n\n //Обработка изменения темы\n const handleThemeChange = () => {\n setTheme(theme.palette.type === \"light\" ? _styles_themes__WEBPACK_IMPORTED_MODULE_3__.darkTheme : _styles_themes__WEBPACK_IMPORTED_MODULE_3__.lightTheme);\n };\n\n //Формирование текста заголовка\n const title = `${state.selectedPlanCtlg.SNAME} на ${state.selectedPlanCtlg.NMIN_YEAR} ${state.selectedPlanCtlg.NMIN_YEAR == state.selectedPlanCtlg.NMAX_YEAR ? \"г.\" : `- ${state.selectedPlanCtlg.NMAX_YEAR} г.г.`} `;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material_styles__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n theme: theme\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n maxWidth: false,\n disableGutters: true,\n sx: STYLES.ROOT_BG\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"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 }, \"\\u041A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\\u0438 \\u043F\\u043B\\u0430\\u043D\\u043E\\u0432\"), /*#__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(PlanCtlgsList, {\n planCtlgs: filteredPlanCtgls,\n selectedPlanCtlg: state.selectedPlanCtlg.NRN,\n filter: filter,\n setFilter: setFilter,\n onClick: handlePlanCtlgClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n display: \"flex\",\n direction: \"row\",\n justifyContent: \"flex-end\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n onClick: () => handleThemeChange()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], {\n sx: STYLES.THEME_CHANGER\n }, theme.palette.type === \"light\" ? \"brightness_4\" : \"brightness_7\"))), state.init == true ? state.selectedPlanCtlg.NRN ? state.planSpecs.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_12__[\"default\"], {\n variant: \"h3\",\n sx: STYLES.MAIN_TITLE,\n pb: 2\n }, title), state.planSpecsLoaded == true ? state.selectedPlanSpec.NRN ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_plan_detail__WEBPACK_IMPORTED_MODULE_2__.PlanSpecDetail, {\n planSpec: state.selectedPlanSpec,\n disableNavigatePrev: planDetailNavigation.disableNavigatePrev,\n disableNavigateNext: planDetailNavigation.disableNavigateNext,\n onNavigate: handlePlanDetailNavigateClick,\n onBack: handlePlanDetailBackClick\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n sx: STYLES.PLANS_LIST_BOX\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_plans_list__WEBPACK_IMPORTED_MODULE_1__.PlanSpecsList, {\n planSpecs: state.planSpecs,\n onItemClick: handlePlanClick\n })) : null) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"h4\",\n sx: STYLES.MAIN_TITLE\n }, \"\\u0412 \\u043A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433\\u0435 \\u043F\\u043B\\u0430\\u043D\\u043E\\u0432 \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u044E\\u0442 \\u0437\\u0430\\u043F\\u0438\\u0441\\u0438 \\u043F\\u043E\\u0434\\u0445\\u043E\\u0434\\u044F\\u0449\\u0438\\u0445 \\u043F\\u0435\\u0440\\u0432\\u0438\\u0447\\u043D\\u044B\\u0445 \\u0434\\u043E\\u043A\\u0443\\u043C\\u0435\\u043D\\u0442\\u043E\\u0432\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"h4\",\n sx: STYLES.MAIN_TITLE\n }, \"\\u0423\\u043A\\u0430\\u0436\\u0438\\u0442\\u0435 \\u043A\\u0430\\u0442\\u0430\\u043B\\u043E\\u0433 \\u043F\\u043B\\u0430\\u043D\\u043E\\u0432 \\u0434\\u043B\\u044F \\u043E\\u0442\\u043E\\u0431\\u0440\\u0430\\u0436\\u0435\\u043D\\u0438\\u044F \\u0441\\u043F\\u0435\\u0446\\u0438\\u0444\\u0438\\u043A\\u0430\\u0446\\u0438\\u0439\") : null)));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js?"); /***/ }),