diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 9325d92..80b202a 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -4173,7 +4173,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 */ MechRecCostProdPlans: () => (/* binding */ MechRecCostProdPlans)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormGroup/FormGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardActions/CardActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_gantt */ \"./app/components/p8p_gantt.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_prod_plans/hooks.js\");\n/* harmony import */ var _datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./datagrids/fcroutlst */ \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\");\n/* harmony import */ var _datagrids_incomefromdeps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./datagrids/incomefromdeps */ \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Производственная программа\r\n Панель мониторинга: Корневая панель производственной программы\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Контекст взаимодействия с сервером\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Диаграмма Ганта\n //Вспомогательные функции\n //Вспомогательные хуки\n\n\n\n//---------\n//Константы\n//---------\n\n//Склонения для документов\nconst DECLINATIONS = [\"план\", \"плана\", \"планов\"];\n\n//Поля сортировки\nconst SORT_REP_DATE = \"DREP_DATE\";\nconst SORT_REP_DATE_TO = \"DREP_DATE_TO\";\n\n//Высота диаграммы Ганта\nconst GANTT_HEIGHT = \"75vh\";\n\n//Ширина диаграммы Ганта\nconst GANTT_WIDTH = \"98vw\";\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n PLANS_CHECKBOX_HAVEDOCS: {\n alignContent: \"space-around\"\n },\n PLANS_LIST_ITEM_ZERODOCS: {\n backgroundColor: \"#ebecec\"\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 }\n },\n GANTT_CONTAINER: {\n height: GANTT_HEIGHT,\n width: GANTT_WIDTH\n },\n GANTT_TITLE: {\n paddingLeft: \"100px\",\n paddingRight: \"120px\"\n },\n SECOND_TABLE: {\n paddingTop: \"30px\"\n },\n TASK_DIALOG_CARD_CONTAINER: {\n padding: \"0px\"\n },\n TASK_DIALOG_LIST_ITEM_ICON: {\n justifyContent: \"center\"\n },\n TASK_DIALOG_ICON: {\n fontSize: \"2rem\"\n },\n TASK_DIALOG_ACTION_CONTAINER: {\n border: 1,\n borderColor: \"text.primary\",\n borderRadius: \"5px\",\n width: \"100%\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Разбор XML с данными спецификации производственной программы\nconst parseProdPlanSpXML = async xmlDoc => {\n const data = await (0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.xml2JSON)({\n xmlDoc,\n attributeValueProcessor: (name, val) => [\"numb\", \"title\"].includes(name) ? undefined : [\"start\", \"end\"].includes(name) ? (0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateJSONDateOnly)(val) : val\n });\n return data.XDATA;\n};\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_9__[\"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_10__[\"default\"], {\n sx: STYLES.PLANS_CHECKBOX_HAVEDOCS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"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_13__[\"default\"], null, planCtlgs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"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(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"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_16__[\"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_17___default().array),\n selectedPlanCtlg: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func)\n};\n\n//Генерация диалога задачи\nconst taskDialogRenderer = ({\n task,\n taskColors,\n close,\n handleTaskDetailOpen\n}) => {\n //Стиль и описание для легенды\n const legendDesc = (0,_components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__.taskLegendDesc)({\n task,\n taskColors\n });\n //Элемент карточки задачи\n const cardItem = ({\n listItemsStyle = {},\n icon,\n primaryText = null,\n secondaryText = null\n }) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n disablePadding: true,\n sx: listItemsStyle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n sx: STYLES.TASK_DIALOG_LIST_ITEM_ICON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n sx: STYLES.TASK_DIALOG_ICON\n }, icon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n primary: primaryText,\n secondary: secondaryText\n })));\n //Собираем содержимое диалога\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n title: task.name,\n titleTypographyProps: {\n variant: \"h6\"\n },\n subheader: `${(0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateRF)(task.start)} - ${(0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateRF)(task.end)}`,\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n \"aria-label\": \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\n onClick: close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], null, \"close\"))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n sx: STYLES.TASK_DIALOG_CARD_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, cardItem({\n icon: \"fast_forward\",\n primaryText: `${task.start_fact} ${task.meas}`,\n secondaryText: \"Запущено\"\n }), cardItem({\n icon: \"assessment\",\n primaryText: `${task.main_quant} ${task.meas}`,\n secondaryText: \"Количество план\"\n }), cardItem({\n icon: \"verified\",\n primaryText: `${task.rel_fact} ${task.meas}`,\n secondaryText: \"Количество сдано\"\n }), cardItem({\n icon: \"date_range\",\n primaryText: task.rep_date_to,\n secondaryText: \"Дата выпуска план\"\n }), legendDesc ? cardItem({\n listItemsStyle: legendDesc.style,\n icon: \"palette\",\n secondaryText: legendDesc.text\n }) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n disableSpacing: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n p: 2,\n display: \"flex\",\n justifyContent: \"center\",\n sx: STYLES.TASK_DIALOG_ACTION_CONTAINER\n }, task.type ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n size: \"large\",\n variant: \"contained\",\n color: \"primary\",\n onClick: () => handleTaskDetailOpen(task.rn, task.type)\n }, task[\"detail_list\"]) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n color: \"textSecondary\"\n }, `Анализ отклонений недоступен: ${task[\"detail_list\"]}`))));\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель производственной программы\nconst MechRecCostProdPlans = () => {\n //Собственное состояние\n let [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: false,\n showPlanList: false,\n planCtlgs: [],\n planCtlgsLoaded: false,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlg: null,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgGanttDef: {},\n selectedPlanCtlgSpecs: [],\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n });\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ctlgName: \"\",\n haveDocs: false\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_6__.useFilteredPlanCtlgs)(state.planCtlgs, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_2__[\"MessagingСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n // Инициализация каталогов планов\n const initPlanCtlgs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (!state.init) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCPRODPLAN_PP_CTLG_INIT\",\n args: {},\n respArg: \"COUT\",\n isArray: name => name === \"XFCPRODPLAN_CRNS\"\n });\n setState(pv => ({\n ...pv,\n init: true,\n planCtlgs: [...(data?.XFCPRODPLAN_CRNS || [])],\n planCtlgsLoaded: true\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.init, executeStored]);\n\n //Выбор каталога планов\n const selectPlan = project => {\n setState(pv => ({\n ...pv,\n selectedPlanCtlg: project,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgSpecs: [],\n selectedPlanCtlgGanttDef: {},\n showPlanList: false,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n };\n\n //Сброс выбора каталога планов\n const unselectPlan = () => setState(pv => ({\n ...pv,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlg: null,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgSpecs: [],\n selectedPlanCtlgGanttDef: {},\n showPlanList: false,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n\n //Загрузка списка спецификаций каталога планов\n const loadPlanCtglSpecs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (level = null, sort = null) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCPRODPLANSP_GET\",\n args: {\n NCRN: state.selectedPlanCtlg,\n NLEVEL: level,\n SSORT_FIELD: sort\n }\n });\n let doc = await parseProdPlanSpXML(data.COUT);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgMaxLevel: data.NMAX_LEVEL,\n selectedPlanCtlgLevel: level || level === 0 ? level : data.NMAX_LEVEL,\n selectedPlanCtlgSort: sort,\n selectedPlanCtlgMenuItems: state.selectedPlanCtlgMenuItems ? state.selectedPlanCtlgMenuItems : [...Array(data.NMAX_LEVEL).keys()].map(el => el + 1),\n selectedPlanCtlgSpecsLoaded: true,\n selectedPlanCtlgGanttDef: doc.XGANTT_DEF ? {\n ...doc.XGANTT_DEF\n } : {},\n selectedPlanCtlgSpecs: [...(doc?.XGANTT_TASKS || [])]\n }));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [executeStored, state.ident, state.selectedPlanCtlg]);\n\n //Обработка нажатия на элемент в списке каталогов планов\n const handleProjectClick = project => {\n if (state.selectedPlanCtlg != project.NRN) selectPlan(project.NRN);else unselectPlan();\n };\n\n //При подключении компонента к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n initPlanCtlgs();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При смене выбранного каталога плана\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (state.selectedPlanCtlg) loadPlanCtglSpecs(null, SORT_REP_DATE_TO);\n }, [state.selectedPlanCtlg, loadPlanCtglSpecs]);\n\n //Выбор уровня\n const handleChangeSelectLevel = selectedLevel => {\n loadPlanCtglSpecs(selectedLevel, state.selectedPlanCtlgSort);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgLevel: selectedLevel\n }));\n };\n\n //Выбор сортировки\n const handleChangeSelectSort = selectedSort => {\n loadPlanCtglSpecs(state.selectedPlanCtlgLevel, selectedSort);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgSort: selectedSort\n }));\n };\n\n //При закрытии окна детализации\n const handleTaskDetailClose = () => {\n setState(pv => ({\n ...pv,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n };\n\n //При открытии окна детализации\n const handleTaskDetailOpen = (taskRn, taskType) => {\n setState(pv => ({\n ...pv,\n selectedTaskDetail: taskRn,\n selectedTaskDetailType: taskType\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_28__[\"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_29__[\"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,\n filter: filter,\n setFilter: setFilter,\n onClick: handleProjectClick\n })), state.init == true ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n container: true,\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n item: true,\n xs: 12\n }, state.selectedPlanCtlgSpecsLoaded ? state.selectedPlanCtlgSpecs.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"В каталоге планов отсутствуют записи спецификации\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: STYLES.GANTT_CONTAINER,\n p: 1\n }, state.selectedPlanCtlgMaxLevel ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table\",\n float: \"right\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table-cell\",\n verticalAlign: \"middle\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_31__[\"default\"], {\n id: \"select-label-sort\"\n }, \"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n labelId: \"select-label-sort\",\n id: \"select-sort\",\n value: state.selectedPlanCtlgSort,\n label: \"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430\",\n onChange: event => {\n handleChangeSelectSort(event.target.value);\n },\n defaultValue: state.selectedPlanCtlgLevel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: SORT_REP_DATE_TO,\n key: \"1\"\n }, \"\\u0414\\u0430\\u0442\\u0430 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: SORT_REP_DATE,\n key: \"2\"\n }, \"\\u0414\\u0430\\u0442\\u0430 \\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table-cell\",\n verticalAlign: \"middle\",\n paddingLeft: \"15px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_31__[\"default\"], {\n id: \"select-label-level\"\n }, \"\\u0414\\u043E \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n labelId: \"select-label-level\",\n id: \"select-level\",\n value: state.selectedPlanCtlgLevel,\n label: \"\\u0423\\u0440\\u043E\\u0432\\u0435\\u043D\\u044C\",\n onChange: event => {\n handleChangeSelectLevel(event.target.value);\n },\n defaultValue: state.selectedPlanCtlgLevel\n }, state.selectedPlanCtlgMenuItems.map(el => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: el,\n key: el\n }, el))))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__.P8PGantt, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_3__.P8P_GANTT_CONFIG_PROPS, state.selectedPlanCtlgGanttDef, {\n height: GANTT_HEIGHT,\n titleStyle: STYLES.GANTT_TITLE,\n tasks: state.selectedPlanCtlgSpecs,\n taskDialogRenderer: prms => taskDialogRenderer({\n ...prms,\n handleTaskDetailOpen\n })\n }))) : !state.selectedPlanCtlg ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите каталог планов для отображения их спецификаций\"\n }) : null)) : null, state.selectedTaskDetail ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_34__[\"default\"], {\n open: true,\n onClose: handleTaskDetailClose,\n fullWidth: true,\n maxWidth: \"xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_35__[\"default\"], null, [0, 1, 4].includes(state.selectedTaskDetailType) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__.CostRouteListsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_incomefromdeps__WEBPACK_IMPORTED_MODULE_8__.IncomFromDepsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n }), state.selectedTaskDetailType === 3 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: STYLES.SECOND_TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__.CostRouteListsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_36__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n onClick: handleTaskDetailClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\"))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MechRecCostProdPlans: () => (/* binding */ MechRecCostProdPlans)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormGroup/FormGroup.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControlLabel/FormControlLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Checkbox/Checkbox.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemButton/ListItemButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemText/ListItemText.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItemIcon/ListItemIcon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardActions/CardActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Select/Select.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/p8p_gantt */ \"./app/components/p8p_gantt.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks */ \"./app/panels/mech_rec_cost_prod_plans/hooks.js\");\n/* harmony import */ var _datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./datagrids/fcroutlst */ \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\");\n/* harmony import */ var _datagrids_incomefromdeps__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./datagrids/incomefromdeps */ \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\");\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ПУП - Производственная программа\r\n Панель мониторинга: Корневая панель производственной программы\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Контекст взаимодействия с сервером\n //Контекст сообщений\n //Подключение компонентов к настройкам приложения\n //Диаграмма Ганта\n //Вспомогательные функции\n //Вспомогательные хуки\n\n\n\n//---------\n//Константы\n//---------\n\n//Склонения для документов\nconst DECLINATIONS = [\"план\", \"плана\", \"планов\"];\n\n//Поля сортировки\nconst SORT_REP_DATE = \"DREP_DATE\";\nconst SORT_REP_DATE_TO = \"DREP_DATE_TO\";\n\n//Высота диаграммы Ганта\nconst GANTT_HEIGHT = \"75vh\";\n\n//Ширина диаграммы Ганта\nconst GANTT_WIDTH = \"98vw\";\n\n//Стили\nconst STYLES = {\n PLANS_FINDER: {\n marginTop: \"10px\",\n marginLeft: \"10px\",\n width: \"93%\"\n },\n PLANS_CHECKBOX_HAVEDOCS: {\n alignContent: \"space-around\"\n },\n PLANS_LIST_ITEM_ZERODOCS: {\n backgroundColor: \"#ebecec\"\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 }\n },\n GANTT_CONTAINER: {\n height: GANTT_HEIGHT,\n width: GANTT_WIDTH\n },\n GANTT_TITLE: {\n paddingLeft: \"100px\",\n paddingRight: \"120px\"\n },\n SECOND_TABLE: {\n paddingTop: \"30px\"\n },\n TASK_DIALOG_CARD_CONTAINER: {\n padding: \"0px\"\n },\n TASK_DIALOG_LIST_ITEM_ICON: {\n justifyContent: \"center\"\n },\n TASK_DIALOG_ICON: {\n fontSize: \"2rem\"\n },\n TASK_DIALOG_ACTION_CONTAINER: {\n border: 1,\n borderColor: \"text.primary\",\n borderRadius: \"5px\",\n width: \"100%\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Разбор XML с данными спецификации производственной программы\nconst parseProdPlanSpXML = async xmlDoc => {\n const data = await (0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.xml2JSON)({\n xmlDoc,\n attributeValueProcessor: (name, val) => [\"numb\", \"title\"].includes(name) ? undefined : [\"start\", \"end\"].includes(name) ? (0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateJSONDateOnly)(val) : val\n });\n return data.XDATA;\n};\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_9__[\"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_10__[\"default\"], {\n sx: STYLES.PLANS_CHECKBOX_HAVEDOCS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n control: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"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_13__[\"default\"], null, planCtlgs.map(p => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"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(p) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n primary: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"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_16__[\"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_17___default().array),\n selectedPlanCtlg: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().number),\n onClick: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func),\n filter: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().object),\n setFilter: (prop_types__WEBPACK_IMPORTED_MODULE_17___default().func)\n};\n\n//Генерация диалога задачи\nconst taskDialogRenderer = ({\n task,\n taskColors,\n close,\n handleTaskDetailOpen\n}) => {\n //Стиль и описание для легенды\n const legendDesc = (0,_components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__.taskLegendDesc)({\n task,\n taskColors\n });\n //Элемент карточки задачи\n const cardItem = ({\n listItemsStyle = {},\n icon,\n primaryText = null,\n secondaryText = null\n }) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n disablePadding: true,\n sx: listItemsStyle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_19__[\"default\"], {\n sx: STYLES.TASK_DIALOG_LIST_ITEM_ICON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], {\n sx: STYLES.TASK_DIALOG_ICON\n }, icon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n primary: primaryText,\n secondary: secondaryText\n })));\n //Собираем содержимое диалога\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_21__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_22__[\"default\"], {\n title: task.name,\n titleTypographyProps: {\n variant: \"h6\"\n },\n subheader: `${(0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateRF)(task.start)} - ${(0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.formatDateRF)(task.end)}`,\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_23__[\"default\"], {\n \"aria-label\": \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\",\n onClick: close\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_20__[\"default\"], null, \"close\"))\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_24__[\"default\"], {\n sx: STYLES.TASK_DIALOG_CARD_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, cardItem({\n icon: \"fast_forward\",\n primaryText: `${task.start_fact} ${task.meas}`,\n secondaryText: \"Запущено\"\n }), cardItem({\n icon: \"assessment\",\n primaryText: `${task.main_quant} ${task.meas}`,\n secondaryText: \"Количество план\"\n }), cardItem({\n icon: \"verified\",\n primaryText: `${task.rel_fact} ${task.meas}`,\n secondaryText: \"Количество сдано\"\n }), cardItem({\n icon: \"date_range\",\n primaryText: task.rep_date_to,\n secondaryText: \"Дата выпуска план\"\n }), legendDesc ? cardItem({\n listItemsStyle: legendDesc.style,\n icon: \"palette\",\n secondaryText: legendDesc.text\n }) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_25__[\"default\"], {\n disableSpacing: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n p: 2,\n display: \"flex\",\n justifyContent: \"center\",\n sx: STYLES.TASK_DIALOG_ACTION_CONTAINER\n }, (0,_core_utils__WEBPACK_IMPORTED_MODULE_5__.hasValue)(task.type) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n size: \"large\",\n variant: \"contained\",\n color: \"primary\",\n onClick: () => handleTaskDetailOpen(task.rn, task.type)\n }, task[\"detail_list\"]) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n color: \"textSecondary\"\n }, `Анализ отклонений недоступен: ${task[\"detail_list\"]}`))));\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель производственной программы\nconst MechRecCostProdPlans = () => {\n //Собственное состояние\n let [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: false,\n showPlanList: false,\n planCtlgs: [],\n planCtlgsLoaded: false,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlg: null,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgGanttDef: {},\n selectedPlanCtlgSpecs: [],\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n });\n //Состояние для фильтра каталогов\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ctlgName: \"\",\n haveDocs: false\n });\n\n //Массив отфильтрованных каталогов\n const filteredPlanCtgls = (0,_hooks__WEBPACK_IMPORTED_MODULE_6__.useFilteredPlanCtlgs)(state.planCtlgs, filter);\n\n //Подключение к контексту сообщений\n const {\n InlineMsgInfo\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_2__[\"MessagingСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n // Инициализация каталогов планов\n const initPlanCtlgs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (!state.init) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCPRODPLAN_PP_CTLG_INIT\",\n args: {},\n respArg: \"COUT\",\n isArray: name => name === \"XFCPRODPLAN_CRNS\"\n });\n setState(pv => ({\n ...pv,\n init: true,\n planCtlgs: [...(data?.XFCPRODPLAN_CRNS || [])],\n planCtlgsLoaded: true\n }));\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [state.init, executeStored]);\n\n //Выбор каталога планов\n const selectPlan = project => {\n setState(pv => ({\n ...pv,\n selectedPlanCtlg: project,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgSpecs: [],\n selectedPlanCtlgGanttDef: {},\n showPlanList: false,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n };\n\n //Сброс выбора каталога планов\n const unselectPlan = () => setState(pv => ({\n ...pv,\n selectedPlanCtlgSpecsLoaded: false,\n selectedPlanCtlg: null,\n selectedPlanCtlgMaxLevel: null,\n selectedPlanCtlgLevel: null,\n selectedPlanCtlgSort: null,\n selectedPlanCtlgMenuItems: null,\n selectedPlanCtlgSpecs: [],\n selectedPlanCtlgGanttDef: {},\n showPlanList: false,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n\n //Загрузка списка спецификаций каталога планов\n const loadPlanCtglSpecs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (level = null, sort = null) => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCPRODPLANSP_GET\",\n args: {\n NCRN: state.selectedPlanCtlg,\n NLEVEL: level,\n SSORT_FIELD: sort\n }\n });\n let doc = await parseProdPlanSpXML(data.COUT);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgMaxLevel: data.NMAX_LEVEL,\n selectedPlanCtlgLevel: level || level === 0 ? level : data.NMAX_LEVEL,\n selectedPlanCtlgSort: sort,\n selectedPlanCtlgMenuItems: state.selectedPlanCtlgMenuItems ? state.selectedPlanCtlgMenuItems : [...Array(data.NMAX_LEVEL).keys()].map(el => el + 1),\n selectedPlanCtlgSpecsLoaded: true,\n selectedPlanCtlgGanttDef: doc.XGANTT_DEF ? {\n ...doc.XGANTT_DEF\n } : {},\n selectedPlanCtlgSpecs: [...(doc?.XGANTT_TASKS || [])]\n }));\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [executeStored, state.ident, state.selectedPlanCtlg]);\n\n //Обработка нажатия на элемент в списке каталогов планов\n const handleProjectClick = project => {\n if (state.selectedPlanCtlg != project.NRN) selectPlan(project.NRN);else unselectPlan();\n };\n\n //При подключении компонента к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n initPlanCtlgs();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При смене выбранного каталога плана\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (state.selectedPlanCtlg) loadPlanCtglSpecs(null, SORT_REP_DATE_TO);\n }, [state.selectedPlanCtlg, loadPlanCtglSpecs]);\n\n //Выбор уровня\n const handleChangeSelectLevel = selectedLevel => {\n loadPlanCtglSpecs(selectedLevel, state.selectedPlanCtlgSort);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgLevel: selectedLevel\n }));\n };\n\n //Выбор сортировки\n const handleChangeSelectSort = selectedSort => {\n loadPlanCtglSpecs(state.selectedPlanCtlgLevel, selectedSort);\n setState(pv => ({\n ...pv,\n selectedPlanCtlgSort: selectedSort\n }));\n };\n\n //При закрытии окна детализации\n const handleTaskDetailClose = () => {\n setState(pv => ({\n ...pv,\n selectedTaskDetail: null,\n selectedTaskDetailType: null\n }));\n };\n\n //При открытии окна детализации\n const handleTaskDetailOpen = (taskRn, taskType) => {\n setState(pv => ({\n ...pv,\n selectedTaskDetail: taskRn,\n selectedTaskDetailType: taskType\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_28__[\"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_29__[\"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,\n filter: filter,\n setFilter: setFilter,\n onClick: handleProjectClick\n })), state.init == true ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n container: true,\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_30__[\"default\"], {\n item: true,\n xs: 12\n }, state.selectedPlanCtlgSpecsLoaded ? state.selectedPlanCtlgSpecs.length === 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"В каталоге планов отсутствуют записи спецификации\"\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: STYLES.GANTT_CONTAINER,\n p: 1\n }, state.selectedPlanCtlgMaxLevel ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table\",\n float: \"right\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table-cell\",\n verticalAlign: \"middle\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_31__[\"default\"], {\n id: \"select-label-sort\"\n }, \"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n labelId: \"select-label-sort\",\n id: \"select-sort\",\n value: state.selectedPlanCtlgSort,\n label: \"\\u0421\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0430\",\n onChange: event => {\n handleChangeSelectSort(event.target.value);\n },\n defaultValue: state.selectedPlanCtlgLevel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: SORT_REP_DATE_TO,\n key: \"1\"\n }, \"\\u0414\\u0430\\u0442\\u0430 \\u0432\\u044B\\u043F\\u0443\\u0441\\u043A\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: SORT_REP_DATE,\n key: \"2\"\n }, \"\\u0414\\u0430\\u0442\\u0430 \\u0437\\u0430\\u043F\\u0443\\u0441\\u043A\\u0430\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: {\n display: \"table-cell\",\n verticalAlign: \"middle\",\n paddingLeft: \"15px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_31__[\"default\"], {\n id: \"select-label-level\"\n }, \"\\u0414\\u043E \\u0443\\u0440\\u043E\\u0432\\u043D\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_32__[\"default\"], {\n labelId: \"select-label-level\",\n id: \"select-level\",\n value: state.selectedPlanCtlgLevel,\n label: \"\\u0423\\u0440\\u043E\\u0432\\u0435\\u043D\\u044C\",\n onChange: event => {\n handleChangeSelectLevel(event.target.value);\n },\n defaultValue: state.selectedPlanCtlgLevel\n }, state.selectedPlanCtlgMenuItems.map(el => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_33__[\"default\"], {\n value: el,\n key: el\n }, el))))) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_gantt__WEBPACK_IMPORTED_MODULE_4__.P8PGantt, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_3__.P8P_GANTT_CONFIG_PROPS, state.selectedPlanCtlgGanttDef, {\n height: GANTT_HEIGHT,\n titleStyle: STYLES.GANTT_TITLE,\n tasks: state.selectedPlanCtlgSpecs,\n taskDialogRenderer: prms => taskDialogRenderer({\n ...prms,\n handleTaskDetailOpen\n })\n }))) : !state.selectedPlanCtlg ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(InlineMsgInfo, {\n okBtn: false,\n text: \"Укажите каталог планов для отображения их спецификаций\"\n }) : null)) : null, state.selectedTaskDetail ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_34__[\"default\"], {\n open: true,\n onClose: handleTaskDetailClose,\n fullWidth: true,\n maxWidth: \"xl\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_35__[\"default\"], null, [0, 1, 4].includes(state.selectedTaskDetailType) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__.CostRouteListsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_incomefromdeps__WEBPACK_IMPORTED_MODULE_8__.IncomFromDepsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n }), state.selectedTaskDetailType === 3 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_26__[\"default\"], {\n sx: STYLES.SECOND_TABLE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_datagrids_fcroutlst__WEBPACK_IMPORTED_MODULE_7__.CostRouteListsDataGrid, {\n task: state.selectedTaskDetail,\n taskType: state.selectedTaskDetailType\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_36__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_27__[\"default\"], {\n onClick: handleTaskDetailClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\"))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js?"); /***/ }),