diff --git a/dist/p8-panels.js b/dist/p8-panels.js index 7fbd5db..e33480f 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -15,7 +15,7 @@ \***********************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("var map = {\n\t\"./dummy\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/dummy\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/dummy.js\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/index\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/index.js\": \"./app/panels/dummy/index.js\",\n\t\"./eqs_prfrm\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/eqs_prfrm\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/eqs_prfrm.js\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/filter\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter.js\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter_dialog\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_dialog.js\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_input_field\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/filter_input_field.js\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/index\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/index.js\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/layouts\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./eqs_prfrm/layouts.js\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail.js\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box.js\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/hooks\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/hooks.js\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/index\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/index.js\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon.js\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/styles/themes\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_assembly_mon/styles/themes.js\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp.js\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/index\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/index.js\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/hooks\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/index\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/index.js\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks.js\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/index\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/index.js\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./prj_fin\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index.js\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/layouts\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/layouts.js\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/prj_fin\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/prj_fin.js\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/projects\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/projects.js\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/stage_arts\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_arts.js\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_contracts\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stage_contracts.js\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stages\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_fin/stages.js\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_graph\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index.js\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/layouts\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/layouts.js\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/prj_graph\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_graph/prj_graph.js\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_help\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/img/211.png\": \"./app/panels/prj_help/img/211.png\",\n\t\"./prj_help/img/212.png\": \"./app/panels/prj_help/img/212.png\",\n\t\"./prj_help/img/213.png\": \"./app/panels/prj_help/img/213.png\",\n\t\"./prj_help/img/214.png\": \"./app/panels/prj_help/img/214.png\",\n\t\"./prj_help/img/215.png\": \"./app/panels/prj_help/img/215.png\",\n\t\"./prj_help/img/221.png\": \"./app/panels/prj_help/img/221.png\",\n\t\"./prj_help/img/222.png\": \"./app/panels/prj_help/img/222.png\",\n\t\"./prj_help/img/223.png\": \"./app/panels/prj_help/img/223.png\",\n\t\"./prj_help/img/231.png\": \"./app/panels/prj_help/img/231.png\",\n\t\"./prj_help/img/232.png\": \"./app/panels/prj_help/img/232.png\",\n\t\"./prj_help/img/241.png\": \"./app/panels/prj_help/img/241.png\",\n\t\"./prj_help/img/242.png\": \"./app/panels/prj_help/img/242.png\",\n\t\"./prj_help/img/243.png\": \"./app/panels/prj_help/img/243.png\",\n\t\"./prj_help/img/244.png\": \"./app/panels/prj_help/img/244.png\",\n\t\"./prj_help/img/245.png\": \"./app/panels/prj_help/img/245.png\",\n\t\"./prj_help/img/31.png\": \"./app/panels/prj_help/img/31.png\",\n\t\"./prj_help/img/32.png\": \"./app/panels/prj_help/img/32.png\",\n\t\"./prj_help/img/33.png\": \"./app/panels/prj_help/img/33.png\",\n\t\"./prj_help/img/34.png\": \"./app/panels/prj_help/img/34.png\",\n\t\"./prj_help/img/35.png\": \"./app/panels/prj_help/img/35.png\",\n\t\"./prj_help/img/36.png\": \"./app/panels/prj_help/img/36.png\",\n\t\"./prj_help/img/411.png\": \"./app/panels/prj_help/img/411.png\",\n\t\"./prj_help/img/412.png\": \"./app/panels/prj_help/img/412.png\",\n\t\"./prj_help/img/421.png\": \"./app/panels/prj_help/img/421.png\",\n\t\"./prj_help/img/422.png\": \"./app/panels/prj_help/img/422.png\",\n\t\"./prj_help/img/431.png\": \"./app/panels/prj_help/img/431.png\",\n\t\"./prj_help/img/432.png\": \"./app/panels/prj_help/img/432.png\",\n\t\"./prj_help/img/433.png\": \"./app/panels/prj_help/img/433.png\",\n\t\"./prj_help/img/434.png\": \"./app/panels/prj_help/img/434.png\",\n\t\"./prj_help/img/441.png\": \"./app/panels/prj_help/img/441.png\",\n\t\"./prj_help/img/442.png\": \"./app/panels/prj_help/img/442.png\",\n\t\"./prj_help/img/443.png\": \"./app/panels/prj_help/img/443.png\",\n\t\"./prj_help/img/444.png\": \"./app/panels/prj_help/img/444.png\",\n\t\"./prj_help/img/451.png\": \"./app/panels/prj_help/img/451.png\",\n\t\"./prj_help/img/461.png\": \"./app/panels/prj_help/img/461.png\",\n\t\"./prj_help/img/471.png\": \"./app/panels/prj_help/img/471.png\",\n\t\"./prj_help/img/711.png\": \"./app/panels/prj_help/img/711.png\",\n\t\"./prj_help/img/721.png\": \"./app/panels/prj_help/img/721.png\",\n\t\"./prj_help/img/722.png\": \"./app/panels/prj_help/img/722.png\",\n\t\"./prj_help/img/723.png\": \"./app/panels/prj_help/img/723.png\",\n\t\"./prj_help/img/741.png\": \"./app/panels/prj_help/img/741.png\",\n\t\"./prj_help/index\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/index.js\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/prj_help\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_help/prj_help.js\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_jobs\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index.js\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl.js\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl.js\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl.js\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/layouts\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/layouts.js\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/prj_jobs\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/prj_jobs.js\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/res_mon\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./prj_jobs/res_mon.js\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./rrp_conf_editor\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/hooks\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/hooks.js\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/index\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/index.js\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/iud_form_dialog\": \"./app/panels/rrp_conf_editor/iud_form_dialog.js\",\n\t\"./rrp_conf_editor/iud_form_dialog.js\": \"./app/panels/rrp_conf_editor/iud_form_dialog.js\",\n\t\"./rrp_conf_editor/iud_form_text_field\": \"./app/panels/rrp_conf_editor/iud_form_text_field.js\",\n\t\"./rrp_conf_editor/iud_form_text_field.js\": \"./app/panels/rrp_conf_editor/iud_form_text_field.js\",\n\t\"./rrp_conf_editor/layouts\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/layouts.js\": \"./app/panels/rrp_conf_editor/layouts.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor.js\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./rrp_conf_editor/section_tab_panel\": \"./app/panels/rrp_conf_editor/section_tab_panel.js\",\n\t\"./rrp_conf_editor/section_tab_panel.js\": \"./app/panels/rrp_conf_editor/section_tab_panel.js\",\n\t\"./samples\": \"./app/panels/samples/index.js\",\n\t\"./samples/\": \"./app/panels/samples/index.js\",\n\t\"./samples/chart\": \"./app/panels/samples/chart.js\",\n\t\"./samples/chart.js\": \"./app/panels/samples/chart.js\",\n\t\"./samples/data_grid\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/data_grid.js\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/gantt\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/gantt.js\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/index\": \"./app/panels/samples/index.js\",\n\t\"./samples/index.js\": \"./app/panels/samples/index.js\",\n\t\"./samples/loader\": \"./app/panels/samples/loader.js\",\n\t\"./samples/loader.js\": \"./app/panels/samples/loader.js\",\n\t\"./samples/messages\": \"./app/panels/samples/messages.js\",\n\t\"./samples/messages.js\": \"./app/panels/samples/messages.js\",\n\t\"./samples/mui\": \"./app/panels/samples/mui.js\",\n\t\"./samples/mui.js\": \"./app/panels/samples/mui.js\",\n\t\"./samples/p8online\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/p8online.js\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/samples\": \"./app/panels/samples/samples.js\",\n\t\"./samples/samples.js\": \"./app/panels/samples/samples.js\",\n\t\"./samples/svg\": \"./app/panels/samples/svg.js\",\n\t\"./samples/svg.js\": \"./app/panels/samples/svg.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./app/panels sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/_sync_^\\.\\/.*$?"); +eval("var map = {\n\t\"./dummy\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/dummy\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/dummy.js\": \"./app/panels/dummy/dummy.js\",\n\t\"./dummy/index\": \"./app/panels/dummy/index.js\",\n\t\"./dummy/index.js\": \"./app/panels/dummy/index.js\",\n\t\"./eqs_prfrm\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/eqs_prfrm\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/eqs_prfrm.js\": \"./app/panels/eqs_prfrm/eqs_prfrm.js\",\n\t\"./eqs_prfrm/filter\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter.js\": \"./app/panels/eqs_prfrm/filter.js\",\n\t\"./eqs_prfrm/filter_dialog\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_dialog.js\": \"./app/panels/eqs_prfrm/filter_dialog.js\",\n\t\"./eqs_prfrm/filter_input_field\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/filter_input_field.js\": \"./app/panels/eqs_prfrm/filter_input_field.js\",\n\t\"./eqs_prfrm/hooks\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/hooks.js\": \"./app/panels/eqs_prfrm/hooks.js\",\n\t\"./eqs_prfrm/index\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/index.js\": \"./app/panels/eqs_prfrm/index.js\",\n\t\"./eqs_prfrm/layouts\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./eqs_prfrm/layouts.js\": \"./app/panels/eqs_prfrm/layouts.js\",\n\t\"./mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plan_detail.js\": \"./app/panels/mech_rec_assembly_mon/components/plan_detail.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/plans_list_item.js\": \"./app/panels/mech_rec_assembly_mon/components/plans_list_item.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/components/progress_box.js\": \"./app/panels/mech_rec_assembly_mon/components/progress_box.js\",\n\t\"./mech_rec_assembly_mon/hooks\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/hooks.js\": \"./app/panels/mech_rec_assembly_mon/hooks.js\",\n\t\"./mech_rec_assembly_mon/index\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/index.js\": \"./app/panels/mech_rec_assembly_mon/index.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/mech_rec_assembly_mon.js\": \"./app/panels/mech_rec_assembly_mon/mech_rec_assembly_mon.js\",\n\t\"./mech_rec_assembly_mon/styles/themes\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_assembly_mon/styles/themes.js\": \"./app/panels/mech_rec_assembly_mon/styles/themes.js\",\n\t\"./mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/fcjobssp.js\": \"./app/panels/mech_rec_cost_jobs_manage/fcjobssp.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage/index\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/index.js\": \"./app/panels/mech_rec_cost_jobs_manage/index.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\": \"./app/panels/mech_rec_cost_jobs_manage/mech_rec_cost_jobs_manage.js\",\n\t\"./mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/backend_dg.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/backend_dg.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcdeliverylistsp.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/fcroutlst.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/fcroutlst.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/goodparties.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/goodparties.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\": \"./app/panels/mech_rec_cost_prod_plans/datagrids/incomefromdeps.js\",\n\t\"./mech_rec_cost_prod_plans/hooks\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_cost_prod_plans/index\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/index.js\": \"./app/panels/mech_rec_cost_prod_plans/index.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\": \"./app/panels/mech_rec_cost_prod_plans/mech_rec_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/filter.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/filter.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/components/ins_department_dg.js\": \"./app/panels/mech_rec_dept_cost_jobs/components/ins_department_dg.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/hooks.js\": \"./app/panels/mech_rec_dept_cost_jobs/hooks.js\",\n\t\"./mech_rec_dept_cost_jobs/index\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/index.js\": \"./app/panels/mech_rec_dept_cost_jobs/index.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\": \"./app/panels/mech_rec_dept_cost_jobs/mech_rec_dept_cost_jobs.js\",\n\t\"./mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlst.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlst.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/fcroutlstsp.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/fcroutlstsp.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/hooks.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/hooks.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/incomefromdeps.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/incomefromdeps.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/index.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/index.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\": \"./app/panels/mech_rec_dept_cost_prod_plans/mech_rec_dept_cost_prod_plans.js\",\n\t\"./prj_fin\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/index.js\": \"./app/panels/prj_fin/index.js\",\n\t\"./prj_fin/layouts\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/layouts.js\": \"./app/panels/prj_fin/layouts.js\",\n\t\"./prj_fin/prj_fin\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/prj_fin.js\": \"./app/panels/prj_fin/prj_fin.js\",\n\t\"./prj_fin/projects\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/projects.js\": \"./app/panels/prj_fin/projects.js\",\n\t\"./prj_fin/stage_arts\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_arts.js\": \"./app/panels/prj_fin/stage_arts.js\",\n\t\"./prj_fin/stage_contracts\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stage_contracts.js\": \"./app/panels/prj_fin/stage_contracts.js\",\n\t\"./prj_fin/stages\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_fin/stages.js\": \"./app/panels/prj_fin/stages.js\",\n\t\"./prj_graph\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/index.js\": \"./app/panels/prj_graph/index.js\",\n\t\"./prj_graph/layouts\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/layouts.js\": \"./app/panels/prj_graph/layouts.js\",\n\t\"./prj_graph/prj_graph\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_graph/prj_graph.js\": \"./app/panels/prj_graph/prj_graph.js\",\n\t\"./prj_help\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/img/211.png\": \"./app/panels/prj_help/img/211.png\",\n\t\"./prj_help/img/212.png\": \"./app/panels/prj_help/img/212.png\",\n\t\"./prj_help/img/213.png\": \"./app/panels/prj_help/img/213.png\",\n\t\"./prj_help/img/214.png\": \"./app/panels/prj_help/img/214.png\",\n\t\"./prj_help/img/215.png\": \"./app/panels/prj_help/img/215.png\",\n\t\"./prj_help/img/221.png\": \"./app/panels/prj_help/img/221.png\",\n\t\"./prj_help/img/222.png\": \"./app/panels/prj_help/img/222.png\",\n\t\"./prj_help/img/223.png\": \"./app/panels/prj_help/img/223.png\",\n\t\"./prj_help/img/231.png\": \"./app/panels/prj_help/img/231.png\",\n\t\"./prj_help/img/232.png\": \"./app/panels/prj_help/img/232.png\",\n\t\"./prj_help/img/241.png\": \"./app/panels/prj_help/img/241.png\",\n\t\"./prj_help/img/242.png\": \"./app/panels/prj_help/img/242.png\",\n\t\"./prj_help/img/243.png\": \"./app/panels/prj_help/img/243.png\",\n\t\"./prj_help/img/244.png\": \"./app/panels/prj_help/img/244.png\",\n\t\"./prj_help/img/245.png\": \"./app/panels/prj_help/img/245.png\",\n\t\"./prj_help/img/31.png\": \"./app/panels/prj_help/img/31.png\",\n\t\"./prj_help/img/32.png\": \"./app/panels/prj_help/img/32.png\",\n\t\"./prj_help/img/33.png\": \"./app/panels/prj_help/img/33.png\",\n\t\"./prj_help/img/34.png\": \"./app/panels/prj_help/img/34.png\",\n\t\"./prj_help/img/35.png\": \"./app/panels/prj_help/img/35.png\",\n\t\"./prj_help/img/36.png\": \"./app/panels/prj_help/img/36.png\",\n\t\"./prj_help/img/411.png\": \"./app/panels/prj_help/img/411.png\",\n\t\"./prj_help/img/412.png\": \"./app/panels/prj_help/img/412.png\",\n\t\"./prj_help/img/421.png\": \"./app/panels/prj_help/img/421.png\",\n\t\"./prj_help/img/422.png\": \"./app/panels/prj_help/img/422.png\",\n\t\"./prj_help/img/431.png\": \"./app/panels/prj_help/img/431.png\",\n\t\"./prj_help/img/432.png\": \"./app/panels/prj_help/img/432.png\",\n\t\"./prj_help/img/433.png\": \"./app/panels/prj_help/img/433.png\",\n\t\"./prj_help/img/434.png\": \"./app/panels/prj_help/img/434.png\",\n\t\"./prj_help/img/441.png\": \"./app/panels/prj_help/img/441.png\",\n\t\"./prj_help/img/442.png\": \"./app/panels/prj_help/img/442.png\",\n\t\"./prj_help/img/443.png\": \"./app/panels/prj_help/img/443.png\",\n\t\"./prj_help/img/444.png\": \"./app/panels/prj_help/img/444.png\",\n\t\"./prj_help/img/451.png\": \"./app/panels/prj_help/img/451.png\",\n\t\"./prj_help/img/461.png\": \"./app/panels/prj_help/img/461.png\",\n\t\"./prj_help/img/471.png\": \"./app/panels/prj_help/img/471.png\",\n\t\"./prj_help/img/711.png\": \"./app/panels/prj_help/img/711.png\",\n\t\"./prj_help/img/721.png\": \"./app/panels/prj_help/img/721.png\",\n\t\"./prj_help/img/722.png\": \"./app/panels/prj_help/img/722.png\",\n\t\"./prj_help/img/723.png\": \"./app/panels/prj_help/img/723.png\",\n\t\"./prj_help/img/741.png\": \"./app/panels/prj_help/img/741.png\",\n\t\"./prj_help/index\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/index.js\": \"./app/panels/prj_help/index.js\",\n\t\"./prj_help/prj_help\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_help/prj_help.js\": \"./app/panels/prj_help/prj_help.js\",\n\t\"./prj_jobs\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/index.js\": \"./app/panels/prj_jobs/index.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_fact_rpt_dtl.js\": \"./app/panels/prj_jobs/lab_fact_rpt_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_fot_dtl.js\": \"./app/panels/prj_jobs/lab_plan_fot_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/lab_plan_jobs_dtl.js\": \"./app/panels/prj_jobs/lab_plan_jobs_dtl.js\",\n\t\"./prj_jobs/layouts\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/layouts.js\": \"./app/panels/prj_jobs/layouts.js\",\n\t\"./prj_jobs/prj_jobs\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/prj_jobs.js\": \"./app/panels/prj_jobs/prj_jobs.js\",\n\t\"./prj_jobs/res_mon\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./prj_jobs/res_mon.js\": \"./app/panels/prj_jobs/res_mon.js\",\n\t\"./rrp_conf_editor\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/IUD/iud_form_dialog\": \"./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js\",\n\t\"./rrp_conf_editor/IUD/iud_form_dialog.js\": \"./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js\",\n\t\"./rrp_conf_editor/IUD/iud_form_text_field\": \"./app/panels/rrp_conf_editor/IUD/iud_form_text_field.js\",\n\t\"./rrp_conf_editor/IUD/iud_form_text_field.js\": \"./app/panels/rrp_conf_editor/IUD/iud_form_text_field.js\",\n\t\"./rrp_conf_editor/components/layouts\": \"./app/panels/rrp_conf_editor/components/layouts.js\",\n\t\"./rrp_conf_editor/components/layouts.js\": \"./app/panels/rrp_conf_editor/components/layouts.js\",\n\t\"./rrp_conf_editor/components/rrp_section\": \"./app/panels/rrp_conf_editor/components/rrp_section.js\",\n\t\"./rrp_conf_editor/components/rrp_section.js\": \"./app/panels/rrp_conf_editor/components/rrp_section.js\",\n\t\"./rrp_conf_editor/components/section_tab_panel\": \"./app/panels/rrp_conf_editor/components/section_tab_panel.js\",\n\t\"./rrp_conf_editor/components/section_tab_panel.js\": \"./app/panels/rrp_conf_editor/components/section_tab_panel.js\",\n\t\"./rrp_conf_editor/hooks\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/hooks.js\": \"./app/panels/rrp_conf_editor/hooks.js\",\n\t\"./rrp_conf_editor/index\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/index.js\": \"./app/panels/rrp_conf_editor/index.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./rrp_conf_editor/rrp_conf_editor.js\": \"./app/panels/rrp_conf_editor/rrp_conf_editor.js\",\n\t\"./samples\": \"./app/panels/samples/index.js\",\n\t\"./samples/\": \"./app/panels/samples/index.js\",\n\t\"./samples/chart\": \"./app/panels/samples/chart.js\",\n\t\"./samples/chart.js\": \"./app/panels/samples/chart.js\",\n\t\"./samples/data_grid\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/data_grid.js\": \"./app/panels/samples/data_grid.js\",\n\t\"./samples/gantt\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/gantt.js\": \"./app/panels/samples/gantt.js\",\n\t\"./samples/index\": \"./app/panels/samples/index.js\",\n\t\"./samples/index.js\": \"./app/panels/samples/index.js\",\n\t\"./samples/loader\": \"./app/panels/samples/loader.js\",\n\t\"./samples/loader.js\": \"./app/panels/samples/loader.js\",\n\t\"./samples/messages\": \"./app/panels/samples/messages.js\",\n\t\"./samples/messages.js\": \"./app/panels/samples/messages.js\",\n\t\"./samples/mui\": \"./app/panels/samples/mui.js\",\n\t\"./samples/mui.js\": \"./app/panels/samples/mui.js\",\n\t\"./samples/p8online\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/p8online.js\": \"./app/panels/samples/p8online.js\",\n\t\"./samples/samples\": \"./app/panels/samples/samples.js\",\n\t\"./samples/samples.js\": \"./app/panels/samples/samples.js\",\n\t\"./samples/svg\": \"./app/panels/samples/svg.js\",\n\t\"./samples/svg.js\": \"./app/panels/samples/svg.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./app/panels sync recursive ^\\\\.\\\\/.*$\";\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/_sync_^\\.\\/.*$?"); /***/ }), @@ -4745,7 +4745,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 */ EqsPrfrm: () => (/* binding */ EqsPrfrm)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Paper/Paper.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layouts */ \"./app/panels/eqs_prfrm/layouts.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./filter */ \"./app/panels/eqs_prfrm/filter.js\");\n/* harmony import */ var _filter_dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./filter_dialog */ \"./app/panels/eqs_prfrm/filter_dialog.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Выполнение работ\r\n Панель мониторинга: Корневая панель выполнения работ\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Дополнительная разметка и вёрстка клиентских элементов\n //Тектовые ресурсы и константы\n //Компонент фильтра\n //Компонент диалогового окна фильтра отбора\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель выполнения работ\nconst EqsPrfrm = () => {\n //Собственное состояние - таблица данных\n const [dataGrid, setDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n groups: [],\n rows: [],\n reload: false\n });\n\n //Состояние фильтра\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n isOpen: false,\n isDefault: false,\n isSetByUser: false,\n values: {\n belong: \"\",\n prodObj: \"\",\n techServ: \"\",\n respDep: \"\",\n fromMonth: 1,\n fromYear: 1990,\n toMonth: 1,\n toYear: 1990\n }\n });\n\n //Состояние ячейки заголовка даты (по раскрытию/скрытию)\n const [activeRef, setActiveRef] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n\n //Состояние актуальности ссылки на ячейку\n const [refIsDeprecated, setRidFlag] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowUnit\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_4__[\"ApplicationСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_5__[\"MessagingСtx\"]);\n\n //Загрузка данных таблицы с сервера\n const loadData = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (dataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.EQUIPSRV_GRID\",\n args: {\n SBELONG: filter.values.belong,\n SPRODOBJ: filter.values.prodObj,\n STECHSERV: filter.values.techServ,\n SRESPDEP: filter.values.respDep,\n NFROMMONTH: filter.values.fromMonth,\n NFROMYEAR: filter.values.fromYear,\n NTOMONTH: filter.values.toMonth,\n NTOYEAR: filter.values.toYear\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"caption\", \"name\", \"parent\"].includes(name) ? undefined : val\n });\n let cP = 0;\n let sP = 0;\n let cF = 0;\n let sF = 0;\n let properties = [];\n if (data.XROWS != null) {\n data.XROWS.map(row => {\n properties = [];\n Object.entries(row).forEach(([key, value]) => properties.push({\n name: key,\n data: value\n }));\n let info2 = properties.find(element => {\n return element.name === \"SINFO2\";\n });\n if (info2 != undefined) {\n if (info2.data == \"План\") {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.DAY_NAME_REG_EXP.test(p.name)) cP = cP + 1;\n });\n } else if (info2.data == \"Факт\") {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.DAY_NAME_REG_EXP.test(p.name)) cF = cF + 1;\n });\n }\n } else {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.MONTH_NAME_REG_EXP.test(p.name)) {\n let str = p.data;\n let m = [];\n let i = 0;\n while ((m = _layouts__WEBPACK_IMPORTED_MODULE_6__.DIGITS_REG_EXP.exec(str)) != null) {\n if (i == 0) sP = sP + Number(m[0].replace(\",\", \".\"));else {\n sF = sF + Number(m[0].replace(\",\", \".\"));\n }\n i++;\n }\n }\n });\n }\n });\n }\n setDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: [...(data.XROWS || [])],\n groups: [...(data.XGROUPS || [])],\n dataLoaded: true,\n reload: false\n }));\n }\n }, [dataGrid.reload, filter, executeStored]);\n\n //Загрузка значений фильра по умолчанию\n const loadDefaultFilter = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.GET_DEFAULT_FP\",\n respArg: \"COUT\"\n });\n setFilter(pv => ({\n ...pv,\n values: {\n ...pv.values,\n belong: data.JURPERS,\n fromMonth: 1,\n fromYear: data.YEAR,\n toMonth: 12,\n toYear: data.YEAR\n },\n isDefault: true\n }));\n }, [executeStored]);\n\n //Отбор документа (ТОиР или Ремонтных ведомостей) по ячейке даты\n const showEquipSrv = async ({\n date,\n workType,\n info\n }) => {\n const [techName, servKind] = info.split(\"_\");\n let type;\n if (workType == \"План\") type = 0;else type = 1;\n let [year, month, day] = date.substring(1).split(\"_\");\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.SELECT_EQUIPSRV\",\n args: {\n SBELONG: filter.values.belong,\n SPRODOBJ: filter.values.prodObj,\n STECHSERV: filter.values.techServ ? filter.values.techServ : null,\n SRESPDEP: filter.values.respDep ? filter.values.respDep : null,\n STECHNAME: techName,\n SSRVKIND: servKind,\n NYEAR: Number(year),\n NMONTH: Number(month),\n NDAY: day ? Number(day) : null,\n NWORKTYPE: type\n }\n });\n if (data.NIDENT) {\n if (type == 0) pOnlineShowUnit({\n unitCode: \"EquipTechServices\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else pOnlineShowUnit({\n unitCode: \"EquipRepairSheets\",\n inputParameters: [{\n name: \"in_Ident\",\n value: data.NIDENT\n }]\n });\n } else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_7__.TEXTS.NO_DATA_FOUND);\n };\n\n //Показать/скрыть фильтр\n const setFilterOpen = isOpen => setFilter(pv => ({\n ...pv,\n isOpen\n }));\n\n //Установить значение фильтра\n const setFilterValues = values => setFilter(pv => ({\n ...pv,\n isSetByUser: true,\n values: {\n ...values\n }\n }));\n\n //Отработка события скрытия/раскрытия ячейки даты\n const handleClick = (e, ref) => {\n const curCell = ref.current;\n if (e.target.type == \"button\" || e.target.offsetParent.type == \"button\") {\n setActiveRef(curCell);\n setRidFlag(false);\n }\n };\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadData();\n }, [loadData, dataGrid.reload]);\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filter.isSetByUser) setDataGrid({\n reload: true\n });\n }, [filter.isSetByUser, filter.values.belong, filter.values.prodObj, filter.values.techServ, filter.values.respDep, filter.values.fromMonth, filter.values.fromYear, filter.values.toMonth, filter.values.toYear]);\n\n //При нажатии скрытии/раскрытии ячейки даты, фокус на неё\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!refIsDeprecated) {\n if (activeRef) {\n var cellRect = activeRef.getBoundingClientRect();\n window.scrollTo(window.scrollX + cellRect.left + activeRef.clientWidth / 2 - window.innerWidth / 2, 0);\n setRidFlag(true);\n }\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refIsDeprecated]);\n\n //При загрузке фильтра по умолчанию\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filter.isDefault) setFilterOpen(true);\n }, [filter.isDefault]);\n\n //При подключении к страницк\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadDefaultFilter();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //При открытии диалога фильтра\n const handleFilterClick = () => setFilterOpen(true);\n\n //При изменении фильтра в диалоге\n const handleFilterOk = filter => {\n setFilterValues(filter);\n setFilterOpen(false);\n };\n\n //При закрытии диалога фильтра\n const handleFilterCancel = () => setFilterOpen(false);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, filter.isOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_dialog__WEBPACK_IMPORTED_MODULE_9__.FilterDialog, {\n initial: filter.values,\n onOk: handleFilterOk,\n onCancel: handleFilterCancel\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter__WEBPACK_IMPORTED_MODULE_8__.Filter, {\n filter: filter.values,\n onClick: handleFilterClick\n }), dataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n variant: \"outlined\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n container: true,\n spacing: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 12\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n columnsDef: dataGrid.columnsDef,\n groups: dataGrid.groups,\n rows: dataGrid.rows,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n reloading: dataGrid.reload,\n headCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.headCellRender)({\n ...prms\n }, handleClick),\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.dataCellRender)({\n ...prms\n }, showEquipSrv),\n groupCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.groupCellRender)({\n ...prms\n }),\n showCellRightBorder: true\n })))))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/eqs_prfrm/eqs_prfrm.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ EqsPrfrm: () => (/* binding */ EqsPrfrm)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./layouts */ \"./app/panels/eqs_prfrm/layouts.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./filter */ \"./app/panels/eqs_prfrm/filter.js\");\n/* harmony import */ var _filter_dialog__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./filter_dialog */ \"./app/panels/eqs_prfrm/filter_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./hooks */ \"./app/panels/eqs_prfrm/hooks.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Выполнение работ\r\n Панель мониторинга: Корневая панель выполнения работ\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Контекст взаимодействия с сервером\n //Контекст приложения\n //Контекст сообщений\n //Дополнительная разметка и вёрстка клиентских элементов\n //Тектовые ресурсы и константы\n //Компонент фильтра\n //Компонент диалогового окна фильтра отбора\n //Пользовательские хуки\n\n//---------\n//Константы\n//---------\n\n//Высота меню Парус (пиксели)\nconst pxOuterMenuH = 53;\n//Высота заголовка панели (пиксели)\nconst pxPanelHeaderH = 64;\n//Минимальная ширина таблицы (пиксели)\nconst minGridW = 800;\n//Минимальная высота таблицы (пиксели)\nconst minGridH = 200;\n\n//Стили\nconst STYLES = {\n BOX_ROW: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n GRID_PADDING: {\n paddingTop: 1,\n paddingBottom: 1\n },\n GRID_SIZES: (width, height) => ({\n padding: \"0px\",\n minWidth: minGridW,\n maxWidth: width * 0.975 > minGridW ? width * 0.975 : minGridW,\n minHeight: minGridH,\n maxHeight: (height - pxOuterMenuH - pxPanelHeaderH) * 0.975 > minGridH ? (height - pxOuterMenuH - pxPanelHeaderH) * 0.975 : minGridH\n })\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель выполнения работ\nconst EqsPrfrm = () => {\n //Собственное состояние - таблица данных\n const [dataGrid, setDataGrid] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n dataLoaded: false,\n columnsDef: [],\n groups: [],\n rows: [],\n fixedHeader: false,\n fixedColumns: 0,\n reload: false\n });\n\n //Состояние фильтра\n const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n isOpen: false,\n isDefault: false,\n isSetByUser: false,\n needSave: false,\n values: {\n belong: \"\",\n prodObj: \"\",\n techServ: \"\",\n respDep: \"\",\n fromMonth: 1,\n fromYear: 1990,\n toMonth: 1,\n toYear: 1990\n }\n });\n\n //Состояние ячейки заголовка даты (по раскрытию/скрытию)\n const [activeRef, setActiveRef] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)();\n\n //Состояние актуальности ссылки на ячейку\n const [refIsDeprecated, setRidFlag] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowUnit\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_4__[\"ApplicationСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_5__[\"MessagingСtx\"]);\n\n //Загрузка данных таблицы с сервера\n const loadData = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (dataGrid.reload) {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.EQUIPSRV_GRID\",\n args: {\n SBELONG: filter.values.belong,\n SPRODOBJ: filter.values.prodObj,\n STECHSERV: filter.values.techServ,\n SRESPDEP: filter.values.respDep,\n NFROMMONTH: filter.values.fromMonth,\n NFROMYEAR: filter.values.fromYear,\n NTOMONTH: filter.values.toMonth,\n NTOYEAR: filter.values.toYear\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"caption\", \"name\", \"parent\"].includes(name) ? undefined : val\n });\n let cP = 0;\n let sP = 0;\n let cF = 0;\n let sF = 0;\n let properties = [];\n if (data.XROWS != null) {\n data.XROWS.map(row => {\n properties = [];\n Object.entries(row).forEach(([key, value]) => properties.push({\n name: key,\n data: value\n }));\n let info2 = properties.find(element => {\n return element.name === \"SINFO2\";\n });\n if (info2 != undefined) {\n if (info2.data == \"План\") {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.DAY_NAME_REG_EXP.test(p.name)) cP = cP + 1;\n });\n } else if (info2.data == \"Факт\") {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.DAY_NAME_REG_EXP.test(p.name)) cF = cF + 1;\n });\n }\n } else {\n properties.map(p => {\n if (_layouts__WEBPACK_IMPORTED_MODULE_6__.MONTH_NAME_REG_EXP.test(p.name)) {\n let str = p.data;\n let m = [];\n let i = 0;\n while ((m = _layouts__WEBPACK_IMPORTED_MODULE_6__.DIGITS_REG_EXP.exec(str)) != null) {\n if (i == 0) sP = sP + Number(m[0].replace(\",\", \".\"));else {\n sF = sF + Number(m[0].replace(\",\", \".\"));\n }\n i++;\n }\n }\n });\n }\n });\n }\n setDataGrid(pv => ({\n ...pv,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: [...(data.XROWS || [])],\n fixedHeader: data.XDATA_GRID.fixedHeader,\n fixedColumns: data.XDATA_GRID.fixedColumns,\n groups: [...(data.XGROUPS || [])],\n dataLoaded: true,\n reload: false\n }));\n }\n }, [dataGrid.reload, filter, executeStored]);\n\n //Загрузка значений фильтра по умолчанию\n const loadDefaultFilter = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.GET_DEFAULT_FP\",\n respArg: \"COUT\"\n });\n setFilter(pv => ({\n ...pv,\n values: {\n ...pv.values,\n belong: data.JURPERS,\n fromMonth: 1,\n fromYear: data.YEAR,\n toMonth: 12,\n toYear: data.YEAR\n },\n isDefault: true\n }));\n }, [executeStored]);\n\n //Загрузка значений фильтра из локального хранилища браузера\n const loadLocalFilter = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n let vs = filter.values;\n Object.keys(vs).map(function (k) {\n vs[k] = k == \"fromMonth\" || k == \"fromYear\" || k == \"toMonth\" || k == \"toYear\" ? Number(localStorage.getItem(k)) : localStorage.getItem(k);\n });\n setFilter(pv => ({\n ...pv,\n isDefault: true,\n values: {\n ...vs\n }\n }));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n //Отбор документа (ТОиР или Ремонтных ведомостей) по ячейке даты\n const showEquipSrv = async ({\n date,\n workType,\n info\n }) => {\n const [techName, servKind] = info.split(\"_\");\n let type;\n if (workType == \"План\") type = 0;else type = 1;\n let [year, month, day] = date.substring(1).split(\"_\");\n const data = await executeStored({\n stored: \"PKG_P8PANELS_EQUIPSRV.SELECT_EQUIPSRV\",\n args: {\n SBELONG: filter.values.belong,\n SPRODOBJ: filter.values.prodObj,\n STECHSERV: filter.values.techServ ? filter.values.techServ : null,\n SRESPDEP: filter.values.respDep ? filter.values.respDep : null,\n STECHNAME: techName,\n SSRVKIND: servKind,\n NYEAR: Number(year),\n NMONTH: Number(month),\n NDAY: day ? Number(day) : null,\n NWORKTYPE: type\n }\n });\n if (data.NIDENT) {\n if (type == 0) pOnlineShowUnit({\n unitCode: \"EquipTechServices\",\n inputParameters: [{\n name: \"in_SelectList_Ident\",\n value: data.NIDENT\n }]\n });else pOnlineShowUnit({\n unitCode: \"EquipRepairSheets\",\n inputParameters: [{\n name: \"in_Ident\",\n value: data.NIDENT\n }]\n });\n } else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_7__.TEXTS.NO_DATA_FOUND);\n };\n\n //Показать/скрыть фильтр\n const setFilterOpen = isOpen => setFilter(pv => ({\n ...pv,\n isOpen\n }));\n\n //Установить значение фильтра\n const setFilterValues = values => setFilter(pv => ({\n ...pv,\n isSetByUser: true,\n needSave: true,\n values: {\n ...values\n }\n }));\n\n //Отработка события скрытия/раскрытия ячейки даты\n const handleClick = (e, ref) => {\n const curCell = ref.current;\n if (e.target.type == \"button\" || e.target.offsetParent.type == \"button\") {\n setActiveRef(curCell);\n setRidFlag(false);\n }\n };\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadData();\n }, [loadData, dataGrid.reload]);\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filter.isSetByUser) setDataGrid({\n reload: true\n });\n }, [filter.isSetByUser, filter.values.belong, filter.values.prodObj, filter.values.techServ, filter.values.respDep, filter.values.fromMonth, filter.values.fromYear, filter.values.toMonth, filter.values.toYear]);\n\n //При нажатии скрытии/раскрытии ячейки даты, фокус на неё\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (!refIsDeprecated) {\n if (activeRef) {\n var cellRect = activeRef.getBoundingClientRect();\n window.scrollTo(window.scrollX + cellRect.left + activeRef.clientWidth / 2 - window.innerWidth / 2, 0);\n setRidFlag(true);\n }\n }\n //eslint-disable-next-line react-hooks/exhaustive-deps\n }, [refIsDeprecated]);\n\n //При закрытии панели\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n filter.needSave ? window.addEventListener(\"beforeunload\", function () {\n Object.keys(filter.values).map(function (k) {\n localStorage.setItem(k, filter.values[k]);\n });\n }) : null;\n }, [filter.needSave, filter.values]);\n\n //При загрузке фильтра по умолчанию\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n if (filter.isDefault) setFilterOpen(true);\n }, [filter.isDefault]);\n\n //При подключении к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n localStorage.getItem(\"belong\") ? loadLocalFilter() : loadDefaultFilter();\n }, [loadDefaultFilter, loadLocalFilter]);\n\n //При открытии диалога фильтра\n const handleFilterClick = () => setFilterOpen(true);\n\n //При изменении фильтра в диалоге\n const handleFilterOk = filter => {\n setFilterValues(filter);\n setFilterOpen(false);\n };\n\n //При закрытии диалога фильтра\n const handleFilterCancel = () => setFilterOpen(false);\n\n //Состояние ширины и высоты рабочей области окна\n const [width, height] = (0,_hooks__WEBPACK_IMPORTED_MODULE_10__.useWindowResize)();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, filter.isOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_dialog__WEBPACK_IMPORTED_MODULE_9__.FilterDialog, {\n initial: filter.values,\n onOk: handleFilterOk,\n onCancel: handleFilterCancel\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter__WEBPACK_IMPORTED_MODULE_8__.Filter, {\n filter: filter.values,\n onClick: handleFilterClick\n }), dataGrid.dataLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: {\n ...STYLES.GRID_PADDING,\n ...STYLES.BOX_ROW\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n style: {\n ...STYLES.GRID_SIZES(width, height)\n }\n },\n columnsDef: dataGrid.columnsDef,\n groups: dataGrid.groups,\n rows: dataGrid.rows,\n fixedHeader: dataGrid.fixedHeader,\n fixedColumns: dataGrid.fixedColumns,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n reloading: dataGrid.reload,\n headCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.headCellRender)({\n ...prms\n }, handleClick),\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.dataCellRender)({\n ...prms\n }, width * 0.2, showEquipSrv),\n groupCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_6__.groupCellRender)({\n ...prms\n }),\n showCellRightBorder: true\n }))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/eqs_prfrm/eqs_prfrm.js?"); /***/ }), @@ -4782,6 +4782,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./app/panels/eqs_prfrm/hooks.js": +/*!***************************************!*\ + !*** ./app/panels/eqs_prfrm/hooks.js ***! + \***************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useWindowResize: () => (/* binding */ useWindowResize)\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/*\r\n Парус 8 - Панели мониторинга - ТОиР - Выполнение работ\r\n Пользовательские хуки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук для отработки изменений ширины и высоты рабочей области окна\nconst useWindowResize = () => {\n //Состояние размера рабочей области\n const [size, setSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0]);\n //При изменении размера\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n function updateSize() {\n setSize([document.documentElement.clientWidth, document.documentElement.clientHeight]);\n }\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n return size;\n};\n\n//--------------\n//Интерфейс хука\n//--------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/eqs_prfrm/hooks.js?"); + +/***/ }), + /***/ "./app/panels/eqs_prfrm/index.js": /*!***************************************!*\ !*** ./app/panels/eqs_prfrm/index.js ***! @@ -4800,7 +4811,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 */ DAY_NAME_REG_EXP: () => (/* binding */ DAY_NAME_REG_EXP),\n/* harmony export */ DIGITS_REG_EXP: () => (/* binding */ DIGITS_REG_EXP),\n/* harmony export */ MONTH_NAME_REG_EXP: () => (/* binding */ MONTH_NAME_REG_EXP),\n/* harmony export */ STYLES: () => (/* binding */ STYLES),\n/* harmony export */ dataCellRender: () => (/* binding */ dataCellRender),\n/* harmony export */ groupCellRender: () => (/* binding */ groupCellRender),\n/* harmony export */ headCellRender: () => (/* binding */ headCellRender)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Выполнение работ\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n\n//---------\n//Константы\n//---------\n\n//Шаблон чисел и имён ячеек дат\nconst DIGITS_REG_EXP = /\\d+,?\\d*/g;\nconst MONTH_NAME_REG_EXP = /_\\d{4}_\\d{1,2}/;\nconst DAY_NAME_REG_EXP = /_\\d{4}_\\d{1,2}_\\d{1,2}/;\n\n//Стили\nconst STYLES = {\n HIDE_CELL_STYLE: {\n display: \"none\"\n },\n HCR_MAIN_STYLE: {\n border: \"1px solid rgba(0, 0, 0)\",\n textAlign: \"center\"\n },\n HCR_DATE_STYLE: {\n padding: \"5px\",\n minWidth: \"25px\",\n maxWidth: \"25px\"\n },\n DCR_MAIN_STYLE: {\n padding: \"2px\",\n border: \"1px solid rgba(0, 0, 0) !important\",\n textAlign: \"center\"\n },\n DCR_OBJECT_INFO_STYLE: {\n textAlign: \"right\",\n fontWeight: \"bold\"\n },\n DCR_PLAN_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"lightblue\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_FACT_RELATED_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"green\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_FACT_NOT_RELATED_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"crimson\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_DOUBLE_CELL: {\n padding: \"unset\"\n },\n DCR_DOUBLE_CELL_GRID_ITEM: backgroundColor => ({\n cursor: \"pointer\",\n backgroundColor\n }),\n HIDDEN_PARAGRAPH: {\n display: \"none\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Формирование даты полной и даты без дней из наименования ячейки\nconst formatDate = dateCellName => {\n const [year, month, day] = dateCellName.substring(1).split(\"_\");\n let date;\n if (day == null) date = `${month < 10 ? \"0\" + month : month}.${year}`;else date = `${day < 10 ? \"0\" + day : day}.${month < 10 ? \"0\" + month : month}.${year}`;\n return date;\n};\n\n//Генерация представления заголовка колонки\nconst headCellRender = ({\n columnDef\n}, hClick) => {\n let cellStyle = STYLES.HCR_MAIN_STYLE;\n let cellProps = {};\n let stackStyle = {};\n let data = columnDef.caption;\n //Для разворачивающихся колонок\n if (columnDef.expandable) {\n const ref = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createRef)();\n cellStyle = {\n ...cellStyle,\n padding: \"5px\"\n };\n cellProps = {\n ...cellProps,\n ref: ref,\n onClick: e => {\n hClick(e, ref);\n }\n };\n stackStyle = {\n flexDirection: \"column\"\n };\n }\n //Скрываем ненужные колонки\n if (columnDef.name == \"SOBJINFO\" || columnDef.name == \"SWRKTYPE\") cellStyle = STYLES.HIDE_CELL_STYLE;\n //Объединение нужных колонок и строк\n if (columnDef.name == \"SINFO\" || columnDef.name == \"SWRKTYPE\") {\n cellProps = {\n colSpan: 2\n };\n if (columnDef.name == \"SINFO\") cellProps = {\n ...cellProps,\n rowSpan: 2\n };\n }\n //Изменения в заголовках с датами\n if (columnDef.visible && DAY_NAME_REG_EXP.test(columnDef.name)) {\n cellStyle = {\n ...cellStyle,\n ...STYLES.HCR_DATE_STYLE\n };\n stackStyle = {\n justifyContent: \"center\"\n };\n }\n return {\n cellStyle,\n cellProps,\n stackStyle,\n data\n };\n};\n\n//Генерация представления ячейки\nconst dataCellRender = ({\n row,\n columnDef\n}, showEquipSrv) => {\n let curParent = \"\";\n let cellDate;\n let cellStyle = STYLES.DCR_MAIN_STYLE;\n let cellProps = {};\n let data = \" \";\n //Если строка с трудоёмкостью по объекту ремонта\n if (row[\"SWRKTYPE\"] == undefined) {\n //Ячейка \"Информация по объекту ремонта\"\n if (columnDef.name == \"SOBJINFO\") {\n cellProps = {\n colSpan: 2\n };\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_OBJECT_INFO_STYLE\n };\n }\n //Ячейка \"Тип работ\"\n if (columnDef.name == \"SWRKTYPE\") cellStyle = STYLES.HIDE_CELL_STYLE;\n //Ячейки колонок месяцев\n if (columnDef.parent == \"\" && columnDef.expandable == true && columnDef.expanded == false) {\n curParent = columnDef.name;\n return {\n cellStyle: {\n ...cellStyle,\n height: \"25px\"\n },\n data\n };\n }\n //Поиск развёрнутых месяцев\n else if (columnDef.name != \"SWRKTYPE\" && columnDef.parent != \"\" && columnDef.expandable == false && columnDef.expanded == true) {\n if (columnDef.name.endsWith(\"_1\")) {\n curParent = columnDef.parent;\n const [year, month] = curParent.substring(1).split(\"_\");\n cellDate = new Date(year, month, 0).getDate();\n cellProps = {\n colSpan: cellDate\n };\n data = row[curParent];\n return {\n cellStyle,\n cellProps,\n data\n };\n } else {\n cellStyle = {\n display: \"none\"\n };\n }\n }\n }\n //Строка плана по объекту ремонта\n if (columnDef.name == \"SOBJINFO\" && row[\"SWRKTYPE\"] == \"План\") {\n cellStyle = {\n ...cellStyle\n };\n cellProps = {\n rowSpan: 2\n };\n }\n //Строка факта по объекту ремонта\n if (columnDef.name == \"SOBJINFO\" && row[\"SWRKTYPE\"] == \"Факт\") {\n cellStyle = {\n display: \"none\"\n };\n }\n //Закрашивание ячеек\n switch (row[columnDef.name]) {\n case \"blue\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_PLAN_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n case \"green\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_FACT_RELATED_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n case \"red\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_FACT_NOT_RELATED_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n //Случай двойного закрашивания месяца\n case \"green red\":\n case \"red green\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_DOUBLE_CELL\n };\n cellProps = {\n title: formatDate(columnDef.name)\n };\n data = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n justifyContent: \"center\",\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n container: true,\n maxHeight: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n item: true,\n xs: 6,\n sx: STYLES.DCR_DOUBLE_CELL_GRID_ITEM(\"green\"),\n onClick: () => showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n style: STYLES.HIDDEN_PARAGRAPH\n }, \"g\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n item: true,\n xs: 6,\n sx: STYLES.DCR_DOUBLE_CELL_GRID_ITEM(\"crimson\"),\n onClick: () => showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n style: STYLES.HIDDEN_PARAGRAPH\n }, \"r\"))));\n }\n return {\n cellStyle,\n cellProps\n };\n};\n\n//Генерация представления заголовка группы\nconst groupCellRender = () => {\n //Скрываем все группы\n let cellStyle = STYLES.HIDE_CELL_STYLE;\n return {\n cellStyle\n };\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/eqs_prfrm/layouts.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DAY_NAME_REG_EXP: () => (/* binding */ DAY_NAME_REG_EXP),\n/* harmony export */ DIGITS_REG_EXP: () => (/* binding */ DIGITS_REG_EXP),\n/* harmony export */ MONTH_NAME_REG_EXP: () => (/* binding */ MONTH_NAME_REG_EXP),\n/* harmony export */ dataCellRender: () => (/* binding */ dataCellRender),\n/* harmony export */ groupCellRender: () => (/* binding */ groupCellRender),\n/* harmony export */ headCellRender: () => (/* binding */ headCellRender)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Grid/Grid.js\");\n/*\r\n Парус 8 - Панели мониторинга - ТОиР - Выполнение работ\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n\n//---------\n//Константы\n//---------\n\n//Шаблон чисел и имён ячеек дат\nconst DIGITS_REG_EXP = /\\d+,?\\d*/g;\nconst MONTH_NAME_REG_EXP = /_\\d{4}_\\d{1,2}/;\nconst DAY_NAME_REG_EXP = /_\\d{4}_\\d{1,2}_\\d{1,2}/;\n\n//Стили\nconst STYLES = {\n HIDE_CELL_STYLE: {\n display: \"none\"\n },\n HCR_MAIN_STYLE: {\n border: \"1px solid rgba(0, 0, 0)\",\n textAlign: \"center\"\n },\n HCR_DATE_STYLE: {\n padding: \"5px\",\n minWidth: \"25px\",\n maxWidth: \"25px\"\n },\n DCR_MAIN_STYLE: {\n padding: \"2px\",\n border: \"1px solid rgba(0, 0, 0) !important\",\n textAlign: \"center\"\n },\n DCR_OBJECT_INFO_STYLE: {\n textAlign: \"right\",\n fontWeight: \"bold\"\n },\n DCR_PLAN_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"lightblue\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_FACT_RELATED_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"green\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_FACT_NOT_RELATED_CELL_STYLE: {\n cursor: \"pointer\",\n backgroundColor: \"crimson\",\n border: \"1px solid rgba(0, 0, 0) !important\"\n },\n DCR_DOUBLE_CELL: {\n padding: \"unset\"\n },\n DCR_DOUBLE_CELL_GRID_ITEM: backgroundColor => ({\n cursor: \"pointer\",\n backgroundColor\n }),\n HIDDEN_PARAGRAPH: {\n display: \"none\"\n },\n STICKY_WIDTH_UNSET: {\n minWidth: \"unset\",\n maxWidth: \"unset\"\n },\n FIRST_STICKY_CELL: {\n left: \"0px\"\n },\n OBJINFO_WIDTH: width => ({\n minWidth: width,\n maxWidth: width\n }),\n OBJINFO_WRKNAME_WIDTH: width => ({\n minWidth: width * 0.6,\n maxWidth: width * 0.6\n }),\n WRKTYPE_WIDTH: width => ({\n left: width * 0.6,\n minWidth: width - width * 0.4,\n maxWidth: width - width * 0.4\n })\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Формирование даты полной и даты без дней из наименования ячейки\nconst formatDate = dateCellName => {\n const [year, month, day] = dateCellName.substring(1).split(\"_\");\n let date;\n if (day == null) date = `${month < 10 ? \"0\" + month : month}.${year}`;else date = `${day < 10 ? \"0\" + day : day}.${month < 10 ? \"0\" + month : month}.${year}`;\n return date;\n};\n\n//Генерация представления заголовка колонки\nconst headCellRender = ({\n columnDef\n}, hClick) => {\n let cellStyle = STYLES.HCR_MAIN_STYLE;\n let cellProps = {};\n let stackStyle = {};\n let data = columnDef.caption;\n //Для разворачивающихся колонок\n if (columnDef.expandable) {\n const ref = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_0__.createRef)();\n cellStyle = {\n ...cellStyle,\n padding: \"5px\"\n };\n cellProps = {\n ...cellProps,\n ref: ref,\n onClick: e => {\n hClick(e, ref);\n }\n };\n stackStyle = {\n flexDirection: \"column\"\n };\n }\n //Скрываем ненужные колонки\n if (columnDef.name == \"SOBJINFO\" || columnDef.name == \"SWRKTYPE\") cellStyle = STYLES.HIDE_CELL_STYLE;\n //Объединение нужных колонок и строк\n if (columnDef.name == \"SINFO\" || columnDef.name == \"SWRKTYPE\") {\n cellProps = {\n colSpan: 2\n };\n cellStyle = {\n ...cellStyle,\n ...STYLES.STICKY_WIDTH_UNSET\n };\n if (columnDef.name == \"SINFO\") {\n cellProps = {\n ...cellProps,\n rowSpan: 2\n };\n cellStyle = {\n ...cellStyle,\n ...STYLES.FIRST_STICKY_CELL\n };\n }\n }\n //Изменения в заголовках с датами\n if (columnDef.visible && DAY_NAME_REG_EXP.test(columnDef.name)) {\n cellStyle = {\n ...cellStyle,\n ...STYLES.HCR_DATE_STYLE\n };\n stackStyle = {\n justifyContent: \"center\"\n };\n }\n return {\n cellStyle,\n cellProps,\n stackStyle,\n data\n };\n};\n\n//Генерация представления ячейки\nconst dataCellRender = ({\n row,\n columnDef\n}, width, showEquipSrv) => {\n let curParent = \"\";\n let cellDate;\n let cellStyle = STYLES.DCR_MAIN_STYLE;\n let cellProps = {};\n let data = \" \";\n //Если строка с трудоёмкостью по объекту ремонта\n if (row[\"SWRKTYPE\"] == undefined) {\n //Ячейка \"Информация по объекту ремонта\"\n if (columnDef.name == \"SOBJINFO\") {\n cellProps = {\n colSpan: 2\n };\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_OBJECT_INFO_STYLE,\n ...STYLES.OBJINFO_WIDTH(width)\n };\n }\n //Ячейка \"Тип работ\"\n if (columnDef.name == \"SWRKTYPE\") cellStyle = {\n ...STYLES.HIDE_CELL_STYLE\n };\n //Ячейки колонок месяцев\n if (columnDef.parent == \"\" && columnDef.expandable == true && columnDef.expanded == false) {\n curParent = columnDef.name;\n return {\n cellStyle: {\n ...cellStyle,\n height: \"25px\"\n },\n data\n };\n }\n //Поиск развёрнутых месяцев\n else if (columnDef.name != \"SWRKTYPE\" && columnDef.parent != \"\" && columnDef.expandable == false && columnDef.expanded == true) {\n if (columnDef.name.endsWith(\"_1\")) {\n curParent = columnDef.parent;\n const [year, month] = curParent.substring(1).split(\"_\");\n cellDate = new Date(year, month, 0).getDate();\n cellProps = {\n colSpan: cellDate\n };\n data = row[curParent];\n return {\n cellStyle,\n cellProps,\n data\n };\n } else {\n cellStyle = {\n display: \"none\"\n };\n }\n }\n }\n //Строка плана по объекту ремонта\n if (columnDef.name == \"SOBJINFO\" && row[\"SWRKTYPE\"] == \"План\") {\n cellStyle = {\n ...cellStyle,\n ...STYLES.FIRST_STICKY_CELL,\n ...STYLES.OBJINFO_WRKNAME_WIDTH(width)\n };\n cellProps = {\n rowSpan: 2\n };\n }\n //Строка факта по объекту ремонта\n if (columnDef.name == \"SOBJINFO\" && row[\"SWRKTYPE\"] == \"Факт\") {\n cellStyle = {\n display: \"none\"\n };\n }\n //Ячейка план/факт\n if (columnDef.name == \"SWRKTYPE\") {\n cellStyle = {\n ...cellStyle,\n ...STYLES.WRKTYPE_WIDTH(width)\n };\n }\n //Закрашивание ячеек\n switch (row[columnDef.name]) {\n case \"blue\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_PLAN_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n case \"green\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_FACT_RELATED_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n case \"red\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_FACT_NOT_RELATED_CELL_STYLE\n };\n cellProps = {\n title: formatDate(columnDef.name),\n onClick: () => {\n showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n });\n }\n };\n return {\n cellStyle,\n cellProps,\n data\n };\n //Случай двойного закрашивания месяца\n case \"green red\":\n case \"red green\":\n cellStyle = {\n ...cellStyle,\n ...STYLES.DCR_DOUBLE_CELL\n };\n cellProps = {\n title: formatDate(columnDef.name)\n };\n data = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n justifyContent: \"center\",\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n container: true,\n maxHeight: \"100%\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n item: true,\n xs: 6,\n sx: STYLES.DCR_DOUBLE_CELL_GRID_ITEM(\"green\"),\n onClick: () => showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n style: STYLES.HIDDEN_PARAGRAPH\n }, \"g\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n item: true,\n xs: 6,\n sx: STYLES.DCR_DOUBLE_CELL_GRID_ITEM(\"crimson\"),\n onClick: () => showEquipSrv({\n date: columnDef.name,\n workType: row[\"SWRKTYPE\"],\n info: row[\"groupName\"]\n })\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"p\", {\n style: STYLES.HIDDEN_PARAGRAPH\n }, \"r\"))));\n }\n return {\n cellStyle,\n cellProps\n };\n};\n\n//Генерация представления заголовка группы\nconst groupCellRender = () => {\n //Скрываем все группы\n let cellStyle = STYLES.HIDE_CELL_STYLE;\n return {\n cellStyle\n };\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/eqs_prfrm/layouts.js?"); /***/ }), @@ -4910,7 +4921,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useCostJobs: () => (/* binding */ useCostJobs),\n/* harmony export */ useCostJobsSpecs: () => (/* binding */ useCostJobsSpecs),\n/* harmony export */ useEquipConfiguration: () => (/* binding */ useEquipConfiguration),\n/* harmony export */ useFilteredFcjobs: () => (/* binding */ useFilteredFcjobs)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.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 DATA_GRID_PAGE_SIZE = 50;\n\n//---------------------------------------------\n//Вспомогательные функции форматирования данных\n//---------------------------------------------\n\n//-----------\n//Тело модуля\n//-----------\n\n//Клиентский отбор сменных заданий по поисковой фразе\nconst useFilteredFcjobs = (jobs, filter) => {\n const filteredJobs = react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(() => {\n return jobs.filter(catalog => catalog.SDOC_INFO.toString().toLowerCase().includes(filter.jobName));\n }, [jobs, filter]);\n return filteredJobs;\n};\n\n//Хук для основной таблицы\nconst useCostJobs = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: false,\n showJobList: false,\n jobList: [],\n jobListLoaded: false,\n selectedJob: {},\n fromAction: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n //Подключение к контексту навигации\n const {\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //При подключении компонента к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const initPlans = async NRN => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBS_INIT\",\n args: {\n NFCJOBS: NRN ? parseInt(NRN) : null\n },\n respArg: \"COUT\",\n isArray: name => name === \"XFCJOBS\",\n attributeValueProcessor: (name, val) => [\"NHAVE_NOTE\"].includes(name) ? val == 1 : val\n });\n setState(pv => ({\n ...pv,\n init: true,\n jobList: [...(data.XFCJOBS || [])],\n selectedJob: data.XFCJOBS_SELECTED ? data.XFCJOBS_SELECTED : {},\n jobListLoaded: true,\n fromAction: NRN ? true : false\n }));\n };\n if (!state.init) {\n //Считаем параметры, переданные из действия\n const actionPrms = getNavigationSearch();\n //Иницализируем планы\n initPlans(actionPrms.NRN);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [state, setState];\n};\n\n//Хук для таблицы операций\nconst useCostJobsSpecs = task => {\n //Собственное состояние - таблица данных\n const [costJobsSpecs, setCostJobsSpecs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n task: null,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Выдача задания\n const issueCostJobsSpecs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_ISSUE\",\n args: {\n NFCJOBS: prms.NFCJOBS,\n SFCJOBSSP_LIST: prms.SFCJOBSSP_LIST\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменилось сменное задание - обновляем состояние\n if (costJobsSpecs.dataLoaded && costJobsSpecs.task !== task) {\n setCostJobsSpecs(pv => ({\n ...pv,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n }\n //Если необходимо перезагрузить\n if (costJobsSpecs.reload) {\n const loadData = async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_DG_GET\",\n args: {\n NFCJOBS: task,\n NPAGE_NUMBER: costJobsSpecs.pageNumber,\n NPAGE_SIZE: DATA_GRID_PAGE_SIZE,\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.object2Base64XML)(costJobsSpecs.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NINCLUDE_DEF: costJobsSpecs.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"NSELECT\"].includes(name) ? val === 1 : val\n });\n setCostJobsSpecs(pv => ({\n ...pv,\n task: task,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE\n }));\n };\n loadData();\n }\n }, [SERV_DATA_TYPE_CLOB, costJobsSpecs.dataLoaded, costJobsSpecs.orders, costJobsSpecs.pageNumber, costJobsSpecs.reload, costJobsSpecs.selectedRow, costJobsSpecs.task, executeStored, task]);\n return [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs];\n};\n\n//Хук для таблицы рабочих центров\nconst useEquipConfiguration = (task, fromAction) => {\n //Собственное состояние - таблица данных\n const [equipConfiguration, setEquipConfiguration] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n task: null,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Включение станка в строку сменного задания\n const includeEquipConfiguration = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_INC_EQCONFIG\",\n args: {\n NEQCONFIG: prms.NEQCONFIG,\n NFCJOBSSP: prms.NFCJOBSSP,\n NQUANT_PLAN: prms.NQUANT_PLAN\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //Исключение станка из строки сменного задания\n const excludeEquipConfiguration = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_EXC_EQCONFIG\",\n args: {\n NFCJOBSSP: prms.NFCJOBSSP\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменилось сменное задание - обновляем состояние\n if (equipConfiguration.dataLoaded && equipConfiguration.task !== task) {\n setEquipConfiguration(pv => ({\n ...pv,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n }\n if (equipConfiguration.reload) {\n const loadData = async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.EQCONFIG_DG_GET\",\n args: {\n NFCJOBS: task,\n NFROM_ACTION: fromAction ? 1 : 0,\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.object2Base64XML)(equipConfiguration.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: equipConfiguration.pageNumber,\n NPAGE_SIZE: DATA_GRID_PAGE_SIZE,\n NINCLUDE_DEF: equipConfiguration.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"NSELECT\"].includes(name) ? val === 1 : val\n });\n setEquipConfiguration(pv => ({\n ...pv,\n task: task,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE\n }));\n };\n loadData();\n }\n }, [SERV_DATA_TYPE_CLOB, equipConfiguration.dataLoaded, equipConfiguration.orders, equipConfiguration.pageNumber, equipConfiguration.reload, equipConfiguration.selectedRow, equipConfiguration.task, task, executeStored, fromAction]);\n return [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration];\n};\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useCostJobs: () => (/* binding */ useCostJobs),\n/* harmony export */ useCostJobsSpecs: () => (/* binding */ useCostJobsSpecs),\n/* harmony export */ useEquipConfiguration: () => (/* binding */ useEquipConfiguration),\n/* harmony export */ useFilteredFcjobs: () => (/* binding */ useFilteredFcjobs)\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 _context_backend__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.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 DATA_GRID_PAGE_SIZE = 50;\n\n//---------------------------------------------\n//Вспомогательные функции форматирования данных\n//---------------------------------------------\n\n//-----------\n//Тело модуля\n//-----------\n\n//Клиентский отбор сменных заданий по поисковой фразе\nconst useFilteredFcjobs = (jobs, filter) => {\n const filteredJobs = react__WEBPACK_IMPORTED_MODULE_0___default().useMemo(() => {\n return jobs.filter(catalog => catalog.SDOC_INFO.toString().toLowerCase().includes(filter.jobName));\n }, [jobs, filter]);\n return filteredJobs;\n};\n\n//Хук для основной таблицы\nconst useCostJobs = () => {\n //Собственное состояние - таблица данных\n const [state, setState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: false,\n showJobList: false,\n jobList: [],\n jobListLoaded: false,\n selectedJob: {},\n fromAction: false\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n //Подключение к контексту навигации\n const {\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_2__.NavigationCtx);\n\n //При подключении компонента к странице\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n const initPlans = async fcJob => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBS_INIT\",\n args: {\n NFCJOBS: fcJob ? parseInt(fcJob) : null\n },\n respArg: \"COUT\",\n isArray: name => name === \"XFCJOBS\",\n attributeValueProcessor: (name, val) => [\"NHAVE_NOTE\"].includes(name) ? val == 1 : val\n });\n setState(pv => ({\n ...pv,\n init: true,\n jobList: [...(data.XFCJOBS || [])],\n selectedJob: data.XFCJOBS_SELECTED ? data.XFCJOBS_SELECTED : {},\n jobListLoaded: true,\n fromAction: fcJob ? true : false\n }));\n };\n if (!state.init) {\n //Считаем параметры, переданные из действия\n const actionPrms = getNavigationSearch();\n //Иницализируем планы\n initPlans(actionPrms.NRN);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return [state, setState];\n};\n\n//Хук для таблицы операций\nconst useCostJobsSpecs = task => {\n //Собственное состояние - таблица данных\n const [costJobsSpecs, setCostJobsSpecs] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n task: null,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Выдача задания\n const issueCostJobsSpecs = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_ISSUE\",\n args: {\n NFCJOBS: prms.NFCJOBS,\n SFCJOBSSP_LIST: prms.SFCJOBSSP_LIST\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменилось сменное задание - обновляем состояние\n if (costJobsSpecs.dataLoaded && costJobsSpecs.task !== task) {\n setCostJobsSpecs(pv => ({\n ...pv,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n }\n //Если необходимо перезагрузить\n if (costJobsSpecs.reload) {\n const loadData = async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_DG_GET\",\n args: {\n NFCJOBS: task,\n NPAGE_NUMBER: costJobsSpecs.pageNumber,\n NPAGE_SIZE: DATA_GRID_PAGE_SIZE,\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.object2Base64XML)(costJobsSpecs.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NINCLUDE_DEF: costJobsSpecs.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"NSELECT\"].includes(name) ? val === 1 : val\n });\n setCostJobsSpecs(pv => ({\n ...pv,\n task: task,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE\n }));\n };\n loadData();\n }\n }, [SERV_DATA_TYPE_CLOB, costJobsSpecs.dataLoaded, costJobsSpecs.orders, costJobsSpecs.pageNumber, costJobsSpecs.reload, costJobsSpecs.selectedRow, costJobsSpecs.task, executeStored, task]);\n return [costJobsSpecs, setCostJobsSpecs, issueCostJobsSpecs];\n};\n\n//Хук для таблицы рабочих центров\nconst useEquipConfiguration = (task, fromAction) => {\n //Собственное состояние - таблица данных\n const [equipConfiguration, setEquipConfiguration] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n task: null,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Включение станка в строку сменного задания\n const includeEquipConfiguration = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_INC_EQCONFIG\",\n args: {\n NEQCONFIG: prms.NEQCONFIG,\n NFCJOBSSP: prms.NFCJOBSSP,\n NQUANT_PLAN: prms.NQUANT_PLAN\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //Исключение станка из строки сменного задания\n const excludeEquipConfiguration = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async prms => {\n try {\n await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.FCJOBSSP_EXC_EQCONFIG\",\n args: {\n NFCJOBSSP: prms.NFCJOBSSP\n }\n });\n } catch (e) {\n throw new Error(e.message);\n }\n }, [executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменилось сменное задание - обновляем состояние\n if (equipConfiguration.dataLoaded && equipConfiguration.task !== task) {\n setEquipConfiguration(pv => ({\n ...pv,\n dataLoaded: false,\n columnsDef: [],\n orders: null,\n rows: [],\n selectedRow: {},\n reload: true,\n pageNumber: 1,\n morePages: true\n }));\n }\n if (equipConfiguration.reload) {\n const loadData = async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_MECHREC.EQCONFIG_DG_GET\",\n args: {\n NFCJOBS: task,\n NFROM_ACTION: fromAction ? 1 : 0,\n CORDERS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_3__.object2Base64XML)(equipConfiguration.orders, {\n arrayNodeName: \"orders\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n },\n NPAGE_NUMBER: equipConfiguration.pageNumber,\n NPAGE_SIZE: DATA_GRID_PAGE_SIZE,\n NINCLUDE_DEF: equipConfiguration.dataLoaded ? 0 : 1\n },\n respArg: \"COUT\",\n attributeValueProcessor: (name, val) => [\"NSELECT\"].includes(name) ? val === 1 : val\n });\n setEquipConfiguration(pv => ({\n ...pv,\n task: task,\n columnsDef: data.XCOLUMNS_DEF ? [...data.XCOLUMNS_DEF] : pv.columnsDef,\n rows: pv.pageNumber == 1 ? [...(data.XROWS || [])] : [...pv.rows, ...(data.XROWS || [])],\n dataLoaded: true,\n reload: false,\n morePages: (data.XROWS || []).length >= DATA_GRID_PAGE_SIZE\n }));\n };\n loadData();\n }\n }, [SERV_DATA_TYPE_CLOB, equipConfiguration.dataLoaded, equipConfiguration.orders, equipConfiguration.pageNumber, equipConfiguration.reload, equipConfiguration.selectedRow, equipConfiguration.task, task, executeStored, fromAction]);\n return [equipConfiguration, setEquipConfiguration, includeEquipConfiguration, excludeEquipConfiguration];\n};\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/mech_rec_cost_jobs_manage/hooks.js?"); /***/ }), @@ -5354,6 +5365,61 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), +/***/ "./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js": +/*!***********************************************************!*\ + !*** ./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IUDFormDialog: () => (/* binding */ IUDFormDialog),\n/* harmony export */ STATUSES: () => (/* binding */ STATUSES)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./iud_form_text_field */ \"./app/panels/rrp_conf_editor/IUD/iud_form_text_field.js\");\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Панель мониторинга: Диалог добавления/исправления/удаления компонентов настройки регламентированного отчёта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Контекст приложения\n //Контекст взаимодействия с сервером\n //Компонент поля ввода\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n PADDING_DIALOG_BUTTONS_RIGHT: {\n paddingRight: \"32px\"\n }\n};\n\n//Статусы диалогового окна\nconst STATUSES = {\n CREATE: 0,\n EDIT: 1,\n DELETE: 2,\n RRPCONFSCTNMRK_CREATE: 3,\n RRPCONFSCTNMRK_EDIT: 4,\n RRPCONFSCTNMRK_DELETE: 5\n};\n\n//---------------\n//Тело компонента\n//---------------\n\nconst IUDFormDialog = ({\n initial,\n onClose,\n onReload\n}) => {\n //Собственное состояние\n const [formData, setFormData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ...initial\n });\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDictionary\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_2__[\"BackEndСtx\"]);\n\n //При закрытии диалога без изменений\n const handleCancel = () => onClose ? onClose() : null;\n\n //При закрытии диалога с изменениями\n const handleOK = () => {\n if (onClose) {\n changeSections();\n onClose();\n } else null;\n };\n\n //Отработка добавления/изсправления/удаления элемента\n const handleReload = () => {\n if (onReload) {\n onReload();\n } else null;\n };\n\n //При изменении значения элемента\n const handleDialogItemChange = (item, value) => {\n setFormData(pv => ({\n ...pv,\n [item]: value\n }));\n };\n\n //Отработка изменений в разделе или показателе раздела\n const changeSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n switch (formData.status) {\n case STATUSES.CREATE:\n await insertSections();\n break;\n case STATUSES.EDIT:\n await updateSections();\n break;\n case STATUSES.DELETE:\n await deleteSections();\n break;\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n await addRRPCONFSCTNMRK();\n break;\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n await editRRPCONFSCTNMRK();\n break;\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n await deleteRRPCONFSCTNMRK();\n break;\n }\n handleReload();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formData]);\n\n //Добавление раздела\n const insertSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_INSERT\",\n args: {\n NPRN: formData.prn,\n SCODE: formData.code,\n SNAME: formData.name\n }\n });\n setFormData(pv => ({\n ...pv,\n rn: Number(data.NRN)\n }));\n }, [formData.prn, formData.code, formData.name, executeStored]);\n\n //Исправление раздела\n const updateSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_UPDATE\",\n args: {\n NRN: formData.rn,\n SCODE: formData.code,\n SNAME: formData.name\n }\n });\n }, [formData.name, formData.code, formData.rn, executeStored]);\n\n //Удаление раздела\n const deleteSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_DELETE\",\n args: {\n NRN: formData.rn\n }\n });\n }, [formData.rn, executeStored]);\n\n //Добавление показателя раздела\n const addRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_INSERT\",\n args: {\n NPRN: formData.prn,\n SCODE: formData.code,\n SNAME: formData.name,\n NRRPROW: formData.rowRn,\n NRRPCOLUMN: formData.colRn\n }\n });\n }, [executeStored, formData.code, formData.colRn, formData.name, formData.prn, formData.rowRn]);\n\n //Исправление показателя раздела\n const editRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_UPDATE\",\n args: {\n NRN: formData.rn,\n SNAME: formData.name\n }\n });\n }, [executeStored, formData.name, formData.rn]);\n\n //Удаление показателя раздела\n const deleteRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_DELETE\",\n args: {\n NRN: formData.rn\n }\n });\n }, [executeStored, formData.rn]);\n\n //Формирование заголовка диалогового окна\n const formTitle = () => {\n switch (formData.status) {\n case STATUSES.CREATE:\n return \"Добавление раздела\";\n case STATUSES.EDIT:\n return \"Исправление раздела\";\n case STATUSES.DELETE:\n return \"Удаление раздела\";\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n return \"Добавление показателя раздела\";\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n return \"Исправление показателя раздела\";\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n return \"Удаление показателя раздела\";\n }\n };\n\n //Отрисовка диалогового окна\n const renderSwitch = () => {\n let btnText = \"\";\n switch (formData.status) {\n case STATUSES.CREATE:\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n btnText = \"Добавить\";\n break;\n case STATUSES.EDIT:\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n btnText = \"Исправить\";\n break;\n case STATUSES.DELETE:\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n btnText = \"Удалить\";\n break;\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => {\n handleOK({\n formData\n });\n }\n }, btnText);\n };\n\n //Выбор строки\n const selectRow = (showDictionary, callBack) => {\n showDictionary({\n unitCode: \"RRPRow\",\n inputParameters: [{\n name: \"in_RN\",\n value: formData.rowRn\n }],\n callBack: res => {\n if (res.success === true) {\n callBack(res.outParameters.out_CODE, res.outParameters.out_RN);\n setFormData(pv => ({\n ...pv,\n reload: true,\n rowCode: res.outParameters.out_CODE,\n rowRn: res.outParameters.out_RN\n }));\n } else callBack(null);\n }\n });\n };\n\n //Выбор графы\n const selectColumn = (showDictionary, callBack) => {\n showDictionary({\n unitCode: \"RRPColumn\",\n inputParameters: [{\n name: \"in_RN\",\n value: formData.colRn\n }],\n callBack: res => {\n if (res.success === true) {\n callBack(res.outParameters.out_CODE, res.outParameters.out_RN);\n setFormData(pv => ({\n ...pv,\n reload: true,\n colCode: res.outParameters.out_CODE,\n colRn: res.outParameters.out_RN\n }));\n } else callBack(null);\n }\n });\n };\n\n //Получение мнемокода и наименования показателя раздела\n const getSctnMrkCodeName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_CODE_NAME\",\n args: {\n NRRPCONFSCTN: formData.prn,\n NRRPROW: formData.rowRn,\n NRRPCOLUMN: formData.colRn\n }\n });\n setFormData(pv => ({\n ...pv,\n reload: false,\n code: data.SCODE,\n name: data.SNAME\n }));\n }, [executeStored, formData.colRn, formData.prn, formData.rowRn]);\n\n //Считывание наименования показателя\n const getMarkName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_NAME\",\n args: {\n NRRPCONFSCTNMRK: formData.rn\n }\n });\n setFormData(pv => ({\n ...pv,\n reload: false,\n name: data.SNAME\n }));\n }, [executeStored, formData.rn]);\n\n //Получение наименования и мнемокода показателя раздела при заполнении необходимых полей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если это добавление показателя и требуется сформировать мнемокод и наименование\n formData.status == STATUSES.RRPCONFSCTNMRK_CREATE && formData.reload && formData.rowRn && formData.colRn ? getSctnMrkCodeName() : null;\n //Если это исправление и требуется инициализировать наименование показателя\n formData.status == STATUSES.RRPCONFSCTNMRK_EDIT && formData.reload ? getMarkName() : null;\n }, [formData.status, formData.reload, formData.rowRn, formData.colRn, getSctnMrkCodeName, getMarkName]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: handleCancel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, formTitle()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: handleCancel,\n sx: STYLES.CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, formData.status == STATUSES.DELETE || formData.status == STATUSES.RRPCONFSCTNMRK_DELETE ? formData.status == STATUSES.DELETE ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B \", formData.name, \"?\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0430 \", formData.name, \"?\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, formData.status != STATUSES.RRPCONFSCTNMRK_EDIT ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"code\",\n elementValue: formData.code,\n labelText: \"\\u041C\\u043D\\u0435\\u043C\\u043E\\u043A\\u043E\\u0434\",\n onChange: handleDialogItemChange\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"name\",\n elementValue: formData.name,\n labelText: \"\\u041D\\u0430\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\n onChange: handleDialogItemChange\n }), formData.status == STATUSES.RRPCONFSCTNMRK_CREATE ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"row\",\n elementValue: formData.rowCode,\n labelText: \"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0430\",\n onChange: handleDialogItemChange,\n dictionary: callBack => selectRow(pOnlineShowDictionary, callBack)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"column\",\n elementValue: formData.colCode,\n labelText: \"\\u0413\\u0440\\u0430\\u0444\\u0430\",\n onChange: handleDialogItemChange,\n dictionary: callBack => selectColumn(pOnlineShowDictionary, callBack)\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.PADDING_DIALOG_BUTTONS_RIGHT\n }, renderSwitch(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: handleCancel\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\")));\n};\n\n//Контроль свойств - Диалог\nIUDFormDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n onReload: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js?"); + +/***/ }), + +/***/ "./app/panels/rrp_conf_editor/IUD/iud_form_text_field.js": +/*!***************************************************************!*\ + !*** ./app/panels/rrp_conf_editor/IUD/iud_form_text_field.js ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IUDFormTextField: () => (/* binding */ IUDFormTextField)\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_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\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//Стили\nconst STYLES = {\n DIALOG_WINDOW_WIDTH: {\n width: 400\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Поле ввода\nconst IUDFormTextField = ({\n elementCode,\n elementValue,\n labelText,\n onChange,\n dictionary,\n ...other\n}) => {\n //Значение элемента\n const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(elementValue);\n\n //При получении нового значения из вне\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setValue(elementValue);\n }, [elementValue]);\n\n //Выбор значения из словаря\n const handleDictionaryClick = () => dictionary ? dictionary(res => res ? handleChange({\n target: {\n name: elementCode,\n value: res\n }\n }) : null) : null;\n\n //Изменение значения элемента\n const handleChange = e => {\n setValue(e.target.value);\n if (onChange) onChange(e.target.name, e.target.value);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _extends({\n variant: \"standard\",\n sx: STYLES.DIALOG_WINDOW_WIDTH\n }, other), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n htmlFor: elementCode\n }, labelText), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: elementCode,\n name: elementCode,\n value: value ? value : \"\",\n endAdornment: dictionary ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"aria-label\": `${elementCode} select`,\n onClick: handleDictionaryClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"list\"))) : null,\n onChange: handleChange,\n multiline: true,\n maxRows: 4\n })));\n};\n\n//Контроль свойств - Поле ввода\nIUDFormTextField.propTypes = {\n elementCode: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n elementValue: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string),\n labelText: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n onChange: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n dictionary: (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/rrp_conf_editor/IUD/iud_form_text_field.js?"); + +/***/ }), + +/***/ "./app/panels/rrp_conf_editor/components/layouts.js": +/*!**********************************************************!*\ + !*** ./app/panels/rrp_conf_editor/components/layouts.js ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ STYLES: () => (/* binding */ STYLES),\n/* harmony export */ confSctnMrkCellRender: () => (/* binding */ confSctnMrkCellRender),\n/* harmony export */ confSctnMrkHeadCellRender: () => (/* binding */ confSctnMrkHeadCellRender)\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_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Menu/Menu.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/MenuItem/MenuItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Table/Table.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableBody/TableBody.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableRow/TableRow.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TableCell/TableCell.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_ROW: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n LINK_STYLE: {\n component: \"button\",\n cursor: \"pointer\",\n width: \"-webkit-fill-available\"\n },\n DATA_CELL: columnDef => ({\n padding: \"5px 5px\",\n fontSize: \"0.775rem\",\n letterSpacing: \"0.005em\",\n textAlign: \"center\",\n wordBreak: \"break-all\",\n backgroundColor: columnDef.name === \"SROW_NAME\" ? \"#b4b4b4\" : \"trasparent\"\n }),\n DATA_CELL_CARD: {\n padding: \"0px 3px 3px 0px\",\n border: \"1px solid lightgrey\"\n },\n DATA_CELL_CARD_HEADER: {\n padding: \"0px\"\n },\n DATA_CELL_CARD_SUBHEADER: {\n textAlign: \"left\",\n paddingLeft: \"10px\",\n fontSize: \"1rem\",\n fontWeight: \"450\"\n },\n DATA_CELL_CARD_CONTENT: listLength => {\n return {\n fontSize: \"0.75rem\",\n padding: \"5px 0px\",\n minHeight: \"105px\",\n maxHeight: \"105px\",\n overflowY: \"auto\",\n \"&::-webkit-scrollbar\": {\n width: \"8px\"\n },\n \"&::-webkit-scrollbar-track\": {\n borderRadius: \"8px\",\n backgroundColor: \"#EBEBEB\"\n },\n \"&::-webkit-scrollbar-thumb\": {\n borderRadius: \"8px\",\n backgroundColor: \"#b4b4b4\"\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n backgroundColor: \"#808080\"\n },\n \"&:last-child\": {\n paddingBottom: \"0px\"\n },\n ...(listLength === 0 ? {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n } : null)\n };\n },\n DATA_CELL_CARD_CONTEXT_FONT: {\n fontSize: \"0.75rem\"\n },\n DATA_CELL_CARD_CONTEXT_MARK: {\n padding: \"0px 0px 0px 10px\",\n borderBottom: \"1px solid #EBEBEB\"\n },\n DATA_CELL_CN: {\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\",\n padding: \"0px 5px\",\n maxWidth: \"100px\",\n border: \"none\"\n },\n GRID_PANEL_CARD: {\n maxWidth: 400,\n flexDirection: \"column\",\n display: \"flex\"\n },\n MARK_INFO: {\n fontSize: \"0.8rem\",\n textAlign: \"left\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"pre\",\n maxWidth: \"max-content\",\n width: \"-webkit-fill-available\"\n },\n BUTTON_CN_INSERT: {\n padding: \"0px 8px\",\n marginBottom: \"2px\",\n \"& .MuiIcon-root\": {\n fontWeight: \"bold\",\n fontSize: \"1rem\"\n }\n },\n HEAD_CELL: {\n backgroundColor: \"#b4b4b4\",\n textAlign: \"center\"\n },\n HEAD_CELL_STACK: {\n justifyContent: \"space-around\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Действия карты показателя\nconst DataCellCardActions = ({\n columnDef,\n menuItems,\n cellData,\n markRn\n}) => {\n //Собственное состояние\n const [cardActions, setCardActions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n anchorMenuMethods: null,\n openMethods: false\n });\n\n //По нажатию на открытие меню действий\n const handleMethodsMenuButtonClick = event => {\n setCardActions(pv => ({\n ...pv,\n anchorMenuMethods: event.currentTarget,\n openMethods: true\n }));\n };\n\n //При закрытии меню\n const handleMethodsMenuClose = () => {\n setCardActions(pv => ({\n ...pv,\n anchorMenuMethods: null,\n openMethods: false\n }));\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n sx: STYLES.BOX_ROW\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n id: `${columnDef.name}_menu_button`,\n \"aria-haspopup\": \"true\",\n onClick: handleMethodsMenuButtonClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"more_vert\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: `${columnDef.name}_menu`,\n anchorEl: cardActions.anchorMenuMethods,\n open: cardActions.openMethods,\n onClose: handleMethodsMenuClose\n }, menuItems.map(el => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n key: `${cellData}_${el.method}`,\n onClick: () => {\n el.func(markRn);\n handleMethodsMenuClose();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, el.icon), el.name);\n })));\n};\n\n//Контроль свойств - Действия карты показателя\nDataCellCardActions.propTypes = {\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n menuItems: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n cellData: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().any),\n markRn: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number)\n};\n\n//Таблица составов показателя\nconst MarkCnList = ({\n markRn,\n list,\n handleMarkCnOpen\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, list.map((el, index) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: {\n ...STYLES.DATA_CELL_CN,\n ...STYLES.DATA_CELL_CARD_CONTEXT_FONT\n },\n title: el.SDESC,\n align: \"left\",\n size: \"small\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.LINK_STYLE,\n onClick: () => handleMarkCnOpen(markRn, el.NRN)\n }, el.SDESC)));\n })));\n};\n\n//Контроль свойств - Таблица составов показателя\nMarkCnList.propTypes = {\n markRn: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired,\n list: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array).isRequired,\n handleMarkCnOpen: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func).isRequired\n};\n\n//Ячейка таблицы строки\nconst DataCellContent = ({\n row,\n columnDef,\n menuItems,\n sectionRn,\n handleMarkAdd,\n handleMarkOpen,\n handleMarkCnOpen,\n handleMarkCnInsert\n}) => {\n //Считываем информацию о показателе\n let mark = {\n sectionRn: sectionRn,\n data: row[columnDef.name],\n nRn: row[\"NMARK_RN_\" + columnDef.name.substring(5)],\n sCode: row[\"SMARK_CODE_\" + columnDef.name.substring(5)],\n sRowCode: row[\"SROW_CODE\"],\n nRowRn: row[\"NROW_RN\"],\n sColCode: columnDef.name.substring(5),\n nColRn: row[\"NCOL_RN_\" + columnDef.name.substring(5)],\n rCnList: row[\"MARK_CNS_\" + columnDef.name.substring(5)] ? [...row[\"MARK_CNS_\" + columnDef.name.substring(5)]] : []\n };\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, mark.nRn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"plain\",\n sx: STYLES.DATA_CELL_CARD\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: STYLES.DATA_CELL_CARD_HEADER,\n subheader: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.LINK_STYLE,\n onClick: () => handleMarkOpen ? handleMarkOpen(mark.nRn) : null\n }, \"\\u0421\\u043E\\u0441\\u0442\\u0430\\u0432\"), mark.rCnList.length !== 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.BUTTON_CN_INSERT,\n \"aria-haspopup\": \"true\",\n onClick: () => handleMarkCnInsert(mark.nRn)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"add\")) : null),\n subheaderTypographyProps: STYLES.DATA_CELL_CARD_SUBHEADER,\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DataCellCardActions, {\n columnDef: columnDef,\n menuItems: menuItems,\n cellData: mark.data,\n markRn: mark.nRn\n })\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n sx: STYLES.DATA_CELL_CARD_CONTEXT_MARK\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.MARK_INFO,\n title: mark.sCode\n }, mark.sCode)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n sx: STYLES.DATA_CELL_CARD_CONTENT(mark.rCnList.length)\n }, mark.rCnList.length !== 0 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MarkCnList, {\n markRn: mark.nRn,\n list: mark.rCnList,\n handleMarkCnOpen: handleMarkCnOpen\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.DATA_CELL_CARD_CONTEXT_FONT\n }, \"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C \\u043D\\u0435 \\u0438\\u043C\\u0435\\u0435\\u0442 \\u0441\\u043E\\u0441\\u0442\\u0430\\u0432\\u0430\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.LINK_STYLE,\n onClick: () => handleMarkCnInsert ? handleMarkCnInsert(mark.nRn) : null\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\")))) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n sx: STYLES.DATA_CELL_CARD_CONTEXT_FONT\n }, \"\\u041F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C \\u043E\\u0442\\u0441\\u0443\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.LINK_STYLE,\n onClick: () => handleMarkOpen ? handleMarkAdd(mark.sectionRn, mark.nRowRn, mark.sRowCode, mark.nColRn, mark.sColCode) : null\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\")));\n};\n\n//Контроль свойств - Ячейка таблицы строки\nDataCellContent.propTypes = {\n row: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n columnDef: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().object).isRequired,\n menuItems: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().array),\n sectionRn: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().number).isRequired,\n handleMarkAdd: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n handleMarkOpen: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n handleMarkCnOpen: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func),\n handleMarkCnInsert: (prop_types__WEBPACK_IMPORTED_MODULE_6___default().func)\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Генерация представления ячейки c данными показателя раздела регламентированного отчета\nconst confSctnMrkCellRender = ({\n row,\n columnDef,\n sectionRn,\n handleMarkAdd,\n handleMarkOpen,\n handleMarkCnOpen,\n handleMarkCnInsert,\n menuItems\n}) => {\n //Иницализируем стили\n let cellStyle = STYLES.DATA_CELL(columnDef);\n //Считываем значение\n let data = row[columnDef.name];\n //Если это не наименование строки и есть значение\n columnDef.name != \"SROW_NAME\" && data != undefined && columnDef.visible == true ? data = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(DataCellContent, {\n row: row,\n columnDef: columnDef,\n menuItems: menuItems,\n sectionRn: sectionRn,\n handleMarkAdd: handleMarkAdd,\n handleMarkOpen: handleMarkOpen,\n handleMarkCnOpen: handleMarkCnOpen,\n handleMarkCnInsert: handleMarkCnInsert\n }) : null;\n return {\n cellStyle: {\n ...cellStyle\n },\n data: data\n };\n};\n\n//Генерация представления ячейки заголовка группы c данными показателя раздела регламентированного отчета\nconst confSctnMrkHeadCellRender = ({\n columnDef\n}) => {\n return {\n cellStyle: STYLES.HEAD_CELL,\n stackStyle: STYLES.HEAD_CELL_STACK,\n data: columnDef.caption\n };\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/components/layouts.js?"); + +/***/ }), + +/***/ "./app/panels/rrp_conf_editor/components/rrp_section.js": +/*!**************************************************************!*\ + !*** ./app/panels/rrp_conf_editor/components/rrp_section.js ***! + \**************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SectionTab: () => (/* binding */ SectionTab)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/ListItem/ListItem.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/List/List.js\");\n/* harmony import */ var _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../components/p8p_data_grid */ \"./app/components/p8p_data_grid.js\");\n/* harmony import */ var _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _section_tab_panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./section_tab_panel */ \"./app/panels/rrp_conf_editor/components/section_tab_panel.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./layouts */ \"./app/panels/rrp_conf_editor/components/layouts.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Компонент панели: Раздел настройки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные элементы\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Компонент вкладки раздела\n //Дополнительная разметка и вёрстка клиентских элементов\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n GRID_SIZES: (height, pxOuterMenuH, pxPanelHeaderH, pxTabsH) => ({\n padding: 0,\n minWidth: \"98vw\",\n minHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.93,\n maxWidth: \"98vw\",\n maxHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.93\n }),\n TABLE_CONTAINER: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n paddingTop: 1,\n paddingBottom: 1\n },\n SECTION_ACTIONS: {\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"0px 5px\"\n },\n TABLE_SCROLL: {\n \"&::-webkit-scrollbar\": {\n width: \"12px\",\n height: \"12px\"\n },\n \"&::-webkit-scrollbar-track\": {\n borderRadius: \"88px\",\n backgroundColor: \"#EBEBEB\"\n },\n \"&::-webkit-scrollbar-thumb\": {\n borderRadius: \"88px\",\n backgroundColor: \"#b4b4b4\",\n backgroundClip: \"padding-box\",\n border: \"3px solid #EBEBEB\"\n },\n \"&::-webkit-scrollbar-thumb:hover\": {\n backgroundColor: \"#808080\"\n }\n },\n HELP_LIST_ITEM: {\n padding: \"0px 0px 0px 5px\",\n whiteSpace: \"pre\",\n fontSize: \"0.95rem\"\n },\n HELP_LIST_ITEM_NAME: {\n fontWeight: \"bold\",\n fontSize: \"inherit\",\n minWidth: \"45px\"\n },\n HELP_LIST_ITEM_DESC: {\n fontSize: \"inherit\"\n }\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Элемент списка расшифровки состава\nconst HelpListItem = ({\n name,\n desc\n}) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sx: STYLES.HELP_LIST_ITEM\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.HELP_LIST_ITEM_NAME\n }, name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n sx: STYLES.HELP_LIST_ITEM_DESC\n }, ` - ${desc}`));\n};\n\n//Контроль свойств - Элемент списка расшифровки состава\nHelpListItem.propTypes = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired,\n desc: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().string).isRequired\n};\n\n//Диалог дополнительной информации\nconst HelpDialog = ({\n handleOpenHelpChange\n}) => {\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n open: true,\n onClose: handleOpenHelpChange\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n display: \"flex\",\n alignItems: \"center\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n flexGrow: 1,\n textAlign: \"center\"\n }, \"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: handleOpenHelpChange\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"close\"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u041A\\u0430\\u0440\\u0442\\u043E\\u0447\\u043A\\u0438 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u0435\\u0439 \\u0441\\u043E\\u0434\\u0435\\u0440\\u0436\\u0430\\u0442 \\u0441\\u043E\\u043A\\u0440\\u0430\\u0449\\u0435\\u043D\\u043D\\u0443\\u044E \\u0438\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044E \\u043E \\u0442\\u0438\\u043F\\u0435 \\u0441\\u043E\\u0441\\u0442\\u0430\\u0432\\u0430 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044F.\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u0421\\u043F\\u0438\\u0441\\u043E\\u043A \\u0441\\u043E\\u043A\\u0440\\u0430\\u0449\\u0435\\u043D\\u0438\\u0439:\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n disablePadding: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"fx\",\n desc: \"\\u0444\\u043E\\u0440\\u043C\\u0443\\u043B\\u0430\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0421\\u0417\",\n desc: \"\\u0441\\u0442\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043A\\u043E\\u0435 \\u0437\\u043D\\u0430\\u0447\\u0435\\u043D\\u0438\\u0435\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0425\\u041F\",\n desc: \"\\u0445\\u0440\\u0430\\u043D\\u0438\\u043C\\u0430\\u044F \\u043F\\u0440\\u043E\\u0446\\u0435\\u0434\\u0443\\u0440\\u0430\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0420\\u041F\",\n desc: \"\\u0440\\u0430\\u0441\\u0447\\u0435\\u0442\\u043D\\u044B\\u0439 \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0425\\u041E\",\n desc: \"\\u0445\\u043E\\u0437\\u044F\\u0439\\u0441\\u0442\\u0432\\u0435\\u043D\\u043D\\u044B\\u0435 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0438\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0420\\u0421\\u0414\\u041A\",\n desc: \"\\u0440\\u0430\\u0441\\u0447\\u0451\\u0442\\u044B \\u0441 \\u0434\\u0435\\u0431\\u0438\\u0442\\u043E\\u0440\\u0430\\u043C\\u0438/\\u043A\\u0440\\u0435\\u0434\\u0438\\u0442\\u043E\\u0440\\u0430\\u043C\\u0438\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u041E\\u0421\",\n desc: \"\\u043E\\u0441\\u0442\\u0430\\u0442\\u043A\\u0438 \\u0441\\u0440\\u0435\\u0434\\u0441\\u0442\\u0432 \\u043F\\u043E \\u0441\\u0447\\u0435\\u0442\\u0430\\u043C\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0422\\u041C\\u0426\",\n desc: \"\\u043E\\u0441\\u0442\\u0430\\u0442\\u043A\\u0438 \\u0442\\u043E\\u0432\\u0430\\u0440\\u043D\\u043E-\\u043C\\u0430\\u0442\\u0435\\u0440\\u0438\\u0430\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0446\\u0435\\u043D\\u043D\\u043E\\u0441\\u0442\\u0435\\u0439\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0414\\u041A\\u0417\",\n desc: \"\\u0434\\u0435\\u0431\\u0438\\u0442\\u043E\\u0440\\u0441\\u043A\\u0430\\u044F/\\u043A\\u0440\\u0435\\u0434\\u0438\\u0442\\u043E\\u0440\\u0441\\u043A\\u0430\\u044F \\u0437\\u0430\\u0434\\u043E\\u043B\\u0436\\u0435\\u043D\\u043D\\u043E\\u0441\\u0442\\u044C\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0418\\u041A\",\n desc: \"\\u0438\\u043D\\u0432\\u0435\\u043D\\u0442\\u0430\\u0440\\u043D\\u0430\\u044F \\u043A\\u0430\\u0440\\u0442\\u043E\\u0442\\u0435\\u043A\\u0430\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u041C\\u0411\\u041F\",\n desc: \"\\u043A\\u0430\\u0440\\u0442\\u043E\\u0442\\u0435\\u043A\\u0430 \\u041C\\u0411\\u041F\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u041A\\u041E\\u0411\\u041F\",\n desc: \"\\u043A\\u0430\\u0440\\u0442\\u043E\\u0442\\u0435\\u043A\\u0430 \\u043E\\u043F\\u0435\\u0440\\u0430\\u0446\\u0438\\u0439 \\u0431\\u0443\\u0434\\u0443\\u0449\\u0438\\u0445 \\u043F\\u0435\\u0440\\u0438\\u043E\\u0434\\u043E\\u0432\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0414\\u041F\\u041D\\u041F\",\n desc: \"\\u0434\\u0435\\u043A\\u043B\\u0430\\u0440\\u0430\\u0446\\u0438\\u044F \\u043F\\u043E \\u043D\\u0430\\u043B\\u043E\\u0433\\u0443 \\u043D\\u0430 \\u043F\\u0440\\u0438\\u0431\\u044B\\u043B\\u044C\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpListItem, {\n name: \"\\u0420\\u041E\",\n desc: \"\\u0440\\u0435\\u0433\\u043B\\u0430\\u043C\\u0435\\u043D\\u0442\\u0438\\u0440\\u043E\\u0432\\u0430\\u043D\\u043D\\u044B\\u0439 \\u043E\\u0442\\u0447\\u0435\\u0442\"\n }))));\n};\n\n//Контроль свойств - Диалог дополнительной информации\nHelpDialog.propTypes = {\n handleOpenHelpChange: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func).isRequired\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Раздел настройки\nconst SectionTab = ({\n section,\n tabValue,\n index,\n containerProps,\n handleMarkAdd,\n handleReload,\n handleMarkOpen,\n handleMarkCnOpen,\n handleMarkCnInsert,\n menuItems\n}) => {\n //Состояние - диалог информации\n const [openHelp, setOpenHelp] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Изменение состояния диалога информации\n const handleOpenHelpChange = () => {\n setOpenHelp(!openHelp);\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(_section_tab_panel__WEBPACK_IMPORTED_MODULE_3__.SectionTabPanel, {\n key: section.rn,\n value: tabValue,\n index: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.SECTION_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: () => handleMarkAdd(section.rn)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"add\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: () => handleReload()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"refresh\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: () => handleOpenHelpChange()\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, \"help\")))), section.dataLoaded && section.columnsDef.length > 3 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.TABLE_CONTAINER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n sx: {\n ...STYLES.TABLE_SCROLL\n },\n style: STYLES.GRID_SIZES(containerProps.height, containerProps.pxOuterMenuH, containerProps.pxPanelHeaderH, containerProps.pxTabsH)\n },\n columnsDef: section.columnsDef,\n groups: section.groups,\n rows: section.rows,\n fixedHeader: section.fixedHeader,\n fixedColumns: section.fixedColumns,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n reloading: section.reload,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_4__.confSctnMrkCellRender)({\n ...prms,\n sectionRn: section.rn,\n handleMarkAdd: handleMarkAdd,\n handleMarkOpen: handleMarkOpen,\n handleMarkCnOpen: handleMarkCnOpen,\n handleMarkCnInsert: handleMarkCnInsert,\n menuItems: menuItems\n }),\n headCellRender: _layouts__WEBPACK_IMPORTED_MODULE_4__.confSctnMrkHeadCellRender\n }))) : null), openHelp ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(HelpDialog, {\n handleOpenHelpChange: handleOpenHelpChange\n }) : null);\n};\n\n//Контроль свойств - Раздел настройки\nSectionTab.propTypes = {\n section: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().object).isRequired,\n tabValue: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().number),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().number),\n containerProps: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().object),\n handleMarkAdd: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n handleReload: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n handleMarkOpen: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n handleMarkCnOpen: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n handleMarkCnInsert: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().func),\n menuItems: (prop_types__WEBPACK_IMPORTED_MODULE_7___default().array)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/components/rrp_section.js?"); + +/***/ }), + +/***/ "./app/panels/rrp_conf_editor/components/section_tab_panel.js": +/*!********************************************************************!*\ + !*** ./app/panels/rrp_conf_editor/components/section_tab_panel.js ***! + \********************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SectionTabPanel: () => (/* binding */ SectionTabPanel)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Панель мониторинга: Компонент вкладки раздела \r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n\n//---------\n//Константы\n//---------\n\nconst STYLES = {\n SECTION_INFO: {\n padding: \"24px 5px 0px 5px\"\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\nconst SectionTabPanel = props => {\n const {\n children,\n value,\n index,\n ...other\n } = props;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n role: \"tabpanel\",\n hidden: value !== index,\n id: `tabpanel-${index}`,\n \"aria-labelledby\": `tab-${index}`\n }, other), value === index && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n sx: STYLES.SECTION_INFO\n }, children));\n};\n\n//Контроль свойств - Вкладка раздела\nSectionTabPanel.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().node),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_2___default().number).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/components/section_tab_panel.js?"); + +/***/ }), + /***/ "./app/panels/rrp_conf_editor/hooks.js": /*!*********************************************!*\ !*** ./app/panels/rrp_conf_editor/hooks.js ***! @@ -5361,7 +5427,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 */ useWindowResize: () => (/* binding */ useWindowResize)\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/*\r\n Парус 8 - Панели мониторинга - Редактор настройки регламентированного отчёта\r\n Пользовательские хуки\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук для отработки изменений ширины и высоты рабочей области окна\nconst useWindowResize = () => {\n //Состояние размера рабочей области\n const [size, setSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0]);\n\n //При изменении размера\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n const updateSize = () => {\n setSize([document.documentElement.clientWidth, document.documentElement.clientHeight]);\n };\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n\n //Вернём размеры\n return size;\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ a11yProps: () => (/* binding */ a11yProps),\n/* harmony export */ useConf: () => (/* binding */ useConf),\n/* harmony export */ useFormDialog: () => (/* binding */ useFormDialog),\n/* harmony export */ useRecOpen: () => (/* binding */ useRecOpen),\n/* harmony export */ useTab: () => (/* binding */ useTab),\n/* harmony export */ useWindowResize: () => (/* binding */ useWindowResize)\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 _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./IUD/iud_form_dialog */ \"./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.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//Хук для отработки изменений ширины и высоты рабочей области окна\nconst useWindowResize = () => {\n //Состояние размера рабочей области\n const [size, setSize] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([0, 0]);\n\n //При изменении размера\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect)(() => {\n const updateSize = () => {\n setSize([document.documentElement.clientWidth, document.documentElement.clientHeight]);\n };\n window.addEventListener(\"resize\", updateSize);\n updateSize();\n return () => window.removeEventListener(\"resize\", updateSize);\n }, []);\n\n //Вернём размеры\n return size;\n};\n\n//Хук для настройки регламентированного отчета\nconst useConf = (currentTab, handleSectionChange) => {\n //Собственное состояние - таблица данных\n const dataGrid = {\n rn: 0,\n code: \"\",\n name: \"\",\n dataLoaded: false,\n columnsDef: [],\n groups: [],\n rows: [],\n fixedHeader: false,\n fixedColumns: 0,\n reload: false\n };\n\n //Собственное состояние\n const [rrpConf, setRrpConf] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n docLoaded: false,\n sections: [],\n reload: true\n });\n\n //Состояние массива данных разделов\n const [dataGrids] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_2__[\"BackEndСtx\"]);\n\n //Подключение к контексту навигации\n const {\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_3__.NavigationCtx);\n\n //При необходимости обновить\n const handleReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n setRrpConf(pv => ({\n ...pv,\n reload: true\n }));\n }, []);\n\n //Загрузка данных разделов регламентированного отчёта\n const loadData = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (rrpConf.reload) {\n //Переменная номера раздела с фокусом\n let tabFocus = currentTab ? currentTab : 0;\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONF_GET_SECTIONS\",\n args: {\n NRN_RRPCONF: Number(getNavigationSearch().NRN)\n },\n respArg: \"COUT\"\n });\n //Флаг первой загрузки данных\n let firstLoad = dataGrids.length == 0 ? true : false;\n //Копирование массива уже загруженных разделов\n let cloneDGs = dataGrids.slice();\n //Массив из нескольких разделов и из одного\n const sections = data.SECTIONS ? data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS] : [];\n //Заполнение очередного раздела по шаблону\n sections.map(s => {\n let dg = {};\n Object.assign(dg, dataGrid, {\n rn: s.NRN,\n code: s.SCODE,\n name: s.SNAME,\n delete_allow: s.NDELETE_ALLOW,\n dataLoaded: true,\n columnsDef: [...(s.XDATA.XCOLUMNS_DEF || [])],\n groups: [...(s.XDATA.XGROUPS || [])],\n rows: [...(s.XDATA.XROWS || [])],\n fixedHeader: s.XDATA.XDATA_GRID.fixedHeader,\n fixedColumns: s.XDATA.XDATA_GRID.fixedColumns,\n reload: false\n });\n //Если раздел имеет составы показателей\n if (s.MARK_CNS.MARK_CN) {\n //Обходим строки раздела\n dg.rows.map(row => {\n //Цикл по ключам строки\n for (let key in row) {\n //Если это ключ для группы составов показателей\n if (key.match(/MARK_CNS_.*/)) {\n //Считываем рег. номер показателя\n let markRn = key.substring(9);\n //Переносим из раздела\n row[key] = Array.isArray(s.MARK_CNS.MARK_CN) ? [...s.MARK_CNS.MARK_CN].filter(el => el.NPRN === row[`NMARK_RN_${markRn}`]) : s.MARK_CNS.MARK_CN.NPRN === row[`NMARK_RN_${markRn}`] ? [s.MARK_CNS.MARK_CN] : null;\n }\n }\n });\n }\n //Ищем загружен ли уже раздел с таким же ид.\n const dgItem = dataGrids.find(x => x.rn === dg.rn);\n //Его индекс, если нет соответствия, то -1\n let index = dataGrids.indexOf(dgItem);\n //Если было соответствие\n if (dgItem) {\n //Если в нём не найдено изменений\n if (JSON.stringify(dgItem, null, 4) === JSON.stringify(dg, null, 4)) {\n //То из копированного массива его удаляем\n cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dgItem.rn)), 1);\n } else {\n //Иначе обновляем раздел в массиве\n dataGrids[index] = dg;\n //Удаляем из копированного массива\n cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dg.rn)), 1);\n //Устанавливаем фокус на обновлённый раздел\n tabFocus = index;\n }\n } else {\n //Если раздел новый, то добавляем его в массив данных\n dataGrids.push(dg);\n //И устанавливаем на него фокус, если флаг первой загрузки = false\n tabFocus = !firstLoad ? dataGrids.length - 1 : 0;\n }\n });\n //Обходим разделы, что остались в копированном массиве (на удаление)\n cloneDGs.map(s => {\n let curIndex = dataGrids.indexOf(dataGrids.find(x => x.rn === s.rn));\n //Устаревший раздел удаляем из массива данных\n dataGrids.splice(curIndex, 1);\n //Фокус на предшествующий раздел\n if (curIndex > 0) tabFocus = curIndex - 1;\n //Иначе фокус на следующий, если был удалён первый раздел\n else tabFocus = curIndex;\n });\n setRrpConf(pv => ({\n ...pv,\n docLoaded: true,\n reload: false,\n sections: dataGrids\n }));\n handleSectionChange(tabFocus);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rrpConf.reload, rrpConf.docLoaded, dataGrid.reload, dataGrid.docLoaded, executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadData();\n }, [rrpConf.reload, dataGrid.reload, loadData]);\n return [rrpConf, handleReload];\n};\n\n//Хук для вкладки\nconst useTab = () => {\n //Состояние раздела\n const [tabValue, setTabValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n\n //Переключение раздела\n const handleSectionChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newValue => {\n setTabValue(newValue);\n }, []);\n return [tabValue, handleSectionChange];\n};\n\n//Хук для функций открытия записей\nconst useRecOpen = handleReload => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_2__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDictionary\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_4__[\"MessagingСtx\"]);\n\n //Отображение показателя раздела\n const handleMarkOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async nRrpConfSctnMrk => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_CODES\",\n args: {\n NRN: nRrpConfSctnMrk\n },\n tagValueProcessor: () => undefined\n });\n if (data) {\n pOnlineShowDictionary({\n unitCode: \"RRPConfig\",\n showMethod: \"main_mrk_settings\",\n inputParameters: [{\n name: \"in_CODE\",\n value: data.SRRPCONF\n }, {\n name: \"in_SCTN_CODE\",\n value: data.SRRPCONFSCTN\n }, {\n name: \"in_MRK_CODE\",\n value: data.SRRPCONFSCTNMRK\n }],\n callBack: res => {\n res.success ? handleReload() : null;\n }\n });\n } else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_6__.TEXTS.NO_DATA_FOUND);\n }, [executeStored, handleReload, pOnlineShowDictionary, showMsgErr]);\n\n //Отображение показателя раздела\n const handleMarkCnOpen = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (nRrpConfSctnMrk, nRrpConfSctnMrkCn) => {\n pOnlineShowDictionary({\n unitCode: \"RRPConfigSectionMark\",\n showMethod: \"link_cn\",\n inputParameters: [{\n name: \"in_RN\",\n value: nRrpConfSctnMrk\n }, {\n name: \"in_RRPCONFSCTNMRKCN\",\n value: nRrpConfSctnMrkCn\n }],\n callBack: res => {\n res.success ? handleReload() : null;\n }\n });\n }, [handleReload, pOnlineShowDictionary]);\n\n //Отображение показателя раздела\n const handleMarkCnInsert = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async nRrpConfSctnMrk => {\n pOnlineShowDictionary({\n unitCode: \"RRPConfigSectionMarkConstitution\",\n showMethod: \"link_add\",\n inputParameters: [{\n name: \"in_PRN\",\n value: nRrpConfSctnMrk\n }],\n callBack: res => {\n res.success ? handleReload() : null;\n }\n });\n }, [handleReload, pOnlineShowDictionary]);\n return [handleMarkOpen, handleMarkCnOpen, handleMarkCnInsert];\n};\n\n//Хук для форм диалогового окна\nconst useFormDialog = () => {\n //Состояние открытия диалогового окна\n const [formOpen, setForm] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Состояние диалогового окна\n const [formData, setFormData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n reload: false,\n rn: \"\",\n prn: \"\",\n sctnName: \"\",\n sctnCode: \"\",\n status: \"\",\n code: \"\",\n name: \"\",\n colCode: \"\",\n colRn: null,\n rowCode: \"\",\n rowRn: null\n });\n\n //Подключение к контексту навигации\n const {\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_3__.NavigationCtx);\n\n //Открытие диалогового окна\n const openForm = () => {\n setForm(true);\n };\n\n //Очистка диалогового окна\n const clearFormData = () => {\n setFormData({\n reload: false,\n rn: \"\",\n prn: \"\",\n sctnName: \"\",\n sctnCode: \"\",\n status: \"\",\n code: \"\",\n name: \"\",\n colCode: \"\",\n colRn: null,\n rowCode: \"\",\n rowRn: null\n });\n };\n\n //Отработка нажатия на кнопку добавления секции\n const handleSectionAdd = () => {\n setFormData({\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.CREATE,\n prn: Number(getNavigationSearch().NRN)\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку исправления секции\n const handleSectionEdit = (rn, code, name) => {\n setFormData({\n rn: rn,\n code: code,\n name: name,\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.EDIT\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку удаления секции\n const handleSectionDelete = (rn, code, name) => {\n setFormData({\n rn: rn,\n code: code,\n name: name,\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.DELETE\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку добавления показателя раздела\n const handleMarkAdd = (prn, rowRn = null, rowCode = \"\", colRn = null, colCode = \"\") => {\n setFormData({\n reload: rowRn && colRn ? true : false,\n prn: prn,\n rowRn: rowRn,\n rowCode: rowCode,\n colRn: colRn,\n colCode: colCode,\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.RRPCONFSCTNMRK_CREATE\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку исправления показателя раздела\n const handleMarkEdit = rn => {\n setFormData({\n reload: true,\n rn: rn,\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.RRPCONFSCTNMRK_EDIT\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку удаления показателя раздела\n const handleMarkDelete = rn => {\n setFormData({\n rn: rn,\n status: _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_5__.STATUSES.RRPCONFSCTNMRK_DELETE\n });\n openForm();\n };\n\n //При закрытии диалога\n const handleDialogClose = () => {\n setForm(false);\n clearFormData();\n };\n return [formOpen, formData, handleSectionAdd, handleSectionEdit, handleSectionDelete, handleMarkAdd, handleMarkEdit, handleMarkDelete, handleDialogClose];\n};\n\n//Формирование разделов\nconst a11yProps = index => {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/hooks.js?"); /***/ }), @@ -5376,39 +5442,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ }), -/***/ "./app/panels/rrp_conf_editor/iud_form_dialog.js": -/*!*******************************************************!*\ - !*** ./app/panels/rrp_conf_editor/iud_form_dialog.js ***! - \*******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IUDFormDialog: () => (/* binding */ IUDFormDialog),\n/* harmony export */ STATUSES: () => (/* binding */ STATUSES)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogTitle/DialogTitle.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./iud_form_text_field */ \"./app/panels/rrp_conf_editor/iud_form_text_field.js\");\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Панель мониторинга: Диалог добавления/исправления/удаления компонентов настройки регламентированного отчёта\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Контекст приложения\n //Контекст взаимодействия с сервером\n //Компонент поля ввода\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n CLOSE_BUTTON: {\n position: \"absolute\",\n right: 8,\n top: 8,\n color: theme => theme.palette.grey[500]\n },\n PADDING_DIALOG_BUTTONS_RIGHT: {\n paddingRight: \"32px\"\n }\n};\n\n//Статусы диалогового окна\nconst STATUSES = {\n CREATE: 0,\n EDIT: 1,\n DELETE: 2,\n RRPCONFSCTNMRK_CREATE: 3,\n RRPCONFSCTNMRK_EDIT: 4,\n RRPCONFSCTNMRK_DELETE: 5\n};\n\n//---------------\n//Тело компонента\n//---------------\n\nconst IUDFormDialog = ({\n initial,\n onClose,\n onReload\n}) => {\n //Собственное состояние\n const [formData, setFormData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n ...initial\n });\n\n //Подключение к контексту приложения\n const {\n pOnlineShowDictionary\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_2__[\"BackEndСtx\"]);\n\n //При закрытии диалога без изменений\n const handleCancel = () => onClose ? onClose() : null;\n\n //При закрытии диалога с изменениями\n const handleOK = () => {\n if (onClose) {\n changeSections();\n onClose();\n } else null;\n };\n\n //Отработка добавления/изсправления/удаления элемента\n const handleReload = () => {\n if (onReload) {\n onReload();\n } else null;\n };\n\n //При изменении значения элемента\n const handleDialogItemChange = (item, value) => setFormData(pv => ({\n ...pv,\n [item]: value\n }));\n\n //Отработка изменений в разделе или показателе раздела\n const changeSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n switch (formData.status) {\n case STATUSES.CREATE:\n await insertSections();\n break;\n case STATUSES.EDIT:\n await updateSections();\n break;\n case STATUSES.DELETE:\n await deleteSections();\n break;\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n await addRRPCONFSCTNMRK();\n break;\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n await editRRPCONFSCTNMRK();\n break;\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n await deleteRRPCONFSCTNMRK();\n break;\n }\n handleReload();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formData]);\n\n //Добавление раздела\n const insertSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_INSERT\",\n args: {\n NPRN: formData.prn,\n SCODE: formData.code,\n SNAME: formData.name\n }\n });\n setFormData(pv => ({\n ...pv,\n rn: Number(data.NRN)\n }));\n }, [formData.prn, formData.code, formData.name, executeStored]);\n\n //Исправление раздела\n const updateSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_UPDATE\",\n args: {\n NRN: formData.rn,\n SCODE: formData.code,\n SNAME: formData.name\n }\n });\n }, [formData.name, formData.code, formData.rn, executeStored]);\n\n //Удаление раздела\n const deleteSections = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTN_DELETE\",\n args: {\n NRN: formData.rn\n }\n });\n }, [formData.rn, executeStored]);\n\n //Добавление показателя раздела\n const addRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_INSERT\",\n args: {\n NPRN: formData.prn,\n SCODE: formData.code,\n SNAME: formData.name,\n SCOLCODE: formData.colCode,\n SCOLVER: formData.colVCode,\n SROWCODE: formData.rowCode,\n SROWVER: formData.rowVCode\n }\n });\n }, [executeStored, formData.code, formData.colVCode, formData.colCode, formData.name, formData.prn, formData.rowCode, formData.rowVCode]);\n\n //Исправление показателя раздела\n const editRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_UPDATE\",\n args: {\n NRN: formData.rn,\n SNAME: formData.name\n }\n });\n }, [executeStored, formData.name, formData.rn]);\n\n //Удаление показателя раздела\n const deleteRRPCONFSCTNMRK = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_DELETE\",\n args: {\n NRN: formData.rn\n }\n });\n }, [executeStored, formData.rn]);\n\n //Формирование заголовка диалогового окна\n const formTitle = () => {\n switch (formData.status) {\n case STATUSES.CREATE:\n return \"Добавление раздела\";\n case STATUSES.EDIT:\n return \"Исправление раздела\";\n case STATUSES.DELETE:\n return \"Удаление раздела\";\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n return \"Добавление показателя раздела\";\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n return \"Исправление показателя раздела\";\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n return \"Удаление показателя раздела\";\n }\n };\n\n //Отрисовка диалогового окна\n const renderSwitch = () => {\n let btnText = \"\";\n switch (formData.status) {\n case STATUSES.CREATE:\n case STATUSES.RRPCONFSCTNMRK_CREATE:\n btnText = \"Добавить\";\n break;\n case STATUSES.EDIT:\n case STATUSES.RRPCONFSCTNMRK_EDIT:\n btnText = \"Исправить\";\n break;\n case STATUSES.DELETE:\n case STATUSES.RRPCONFSCTNMRK_DELETE:\n btnText = \"Удалить\";\n break;\n }\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: () => {\n handleOK({\n formData\n });\n }\n }, btnText);\n };\n\n //Выбор строки\n const selectRow = (showDictionary, callBack) => {\n showDictionary({\n unitCode: \"RRPRow\",\n callBack: res => {\n if (res.success === true) {\n callBack(res.outParameters.out_CODE, res.outParameters.out_RRPVERSION_CODE, res.outParameters.out_RRPVERSION);\n setFormData(pv => ({\n ...pv,\n rowCode: res.outParameters.out_CODE,\n rowVCode: res.outParameters.out_RRPVERSION_CODE,\n rowVRn: res.outParameters.out_RRPVERSION\n }));\n } else callBack(null);\n }\n });\n };\n\n //Выбор графы\n const selectColumn = (showDictionary, callBack) => {\n showDictionary({\n unitCode: \"RRPColumn\",\n callBack: res => {\n if (res.success === true) {\n callBack(res.outParameters.out_CODE, res.outParameters.out_RRPVERSION_CODE, res.outParameters.out_RRPVERSION);\n setFormData(pv => ({\n ...pv,\n colCode: res.outParameters.out_CODE,\n colVCode: res.outParameters.out_RRPVERSION_CODE,\n colVRn: res.outParameters.out_RRPVERSION\n }));\n } else callBack(null);\n }\n });\n };\n\n //Получение мнемокода и наименования показателя раздела\n const getSctnMrkCodeName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_CODE_NAME\",\n args: {\n SSCTNCODE: formData.sctnCode,\n SROWCODE: formData.rowCode,\n NROWVER: formData.rowVRn,\n SCOLUMNCODE: formData.colCode,\n NCOLUMNVER: formData.colVRn\n }\n });\n setFormData(pv => ({\n ...pv,\n code: data.SCODE,\n name: data.SNAME\n }));\n }, [executeStored, formData.colCode, formData.colVRn, formData.rowCode, formData.rowVRn, formData.sctnCode]);\n\n //Получение наименования и мнемокода показателя раздела при заполнении необходимых полей\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n formData.status == STATUSES.RRPCONFSCTNMRK_CREATE && formData.sctnName && formData.sctnCode && formData.colCode && formData.rowCode ? getSctnMrkCodeName() : null;\n }, [formData.colCode, formData.rowCode, formData.sctnCode, formData.sctnName, formData.status, getSctnMrkCodeName]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: handleCancel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, formTitle()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: handleCancel,\n sx: STYLES.CLOSE_BUTTON\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, \"close\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, formData.status == STATUSES.DELETE || formData.status == STATUSES.RRPCONFSCTNMRK_DELETE ? formData.status == STATUSES.DELETE ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B \", formData.name, \"?\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null, \"\\u0412\\u044B \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043F\\u043E\\u043A\\u0430\\u0437\\u0430\\u0442\\u0435\\u043B\\u044C \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0430 \", formData.name, \"?\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, formData.status != STATUSES.RRPCONFSCTNMRK_EDIT ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"code\",\n elementValue: formData.code,\n labelText: \"\\u041C\\u043D\\u0435\\u043C\\u043E\\u043A\\u043E\\u0434\",\n onChange: handleDialogItemChange\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"name\",\n elementValue: formData.name,\n labelText: \"\\u041D\\u0430\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0438\\u0435\",\n onChange: handleDialogItemChange\n }), formData.status == STATUSES.RRPCONFSCTNMRK_CREATE ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"row\",\n elementValue: formData.rowCode,\n labelText: \"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0430\",\n onChange: handleDialogItemChange,\n dictionary: callBack => selectRow(pOnlineShowDictionary, callBack)\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_text_field__WEBPACK_IMPORTED_MODULE_3__.IUDFormTextField, {\n elementCode: \"column\",\n elementValue: formData.colCode,\n labelText: \"\\u0413\\u0440\\u0430\\u0444\\u0430\",\n onChange: handleDialogItemChange,\n dictionary: callBack => selectColumn(pOnlineShowDictionary, callBack)\n })) : null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.PADDING_DIALOG_BUTTONS_RIGHT\n }, renderSwitch(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: handleCancel\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\")));\n};\n\n//Контроль свойств - Диалог\nIUDFormDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().object).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func),\n onReload: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().func)\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/iud_form_dialog.js?"); - -/***/ }), - -/***/ "./app/panels/rrp_conf_editor/iud_form_text_field.js": -/*!***********************************************************!*\ - !*** ./app/panels/rrp_conf_editor/iud_form_text_field.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IUDFormTextField: () => (/* binding */ IUDFormTextField)\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_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/FormControl/FormControl.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputLabel/InputLabel.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Input/Input.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/InputAdornment/InputAdornment.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\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//Стили\nconst STYLES = {\n DIALOG_WINDOW_WIDTH: {\n width: 400\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Поле ввода\nconst IUDFormTextField = ({\n elementCode,\n elementValue,\n labelText,\n onChange,\n dictionary,\n ...other\n}) => {\n //Значение элемента\n const [value, setValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(elementValue);\n\n //При получении нового значения из вне\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setValue(elementValue);\n }, [elementValue]);\n\n //Выбор значения из словаря\n const handleDictionaryClick = () => dictionary ? dictionary(res => res ? handleChange({\n target: {\n name: elementCode,\n value: res\n }\n }) : null) : null;\n\n //Изменение значения элемента\n const handleChange = e => {\n setValue(e.target.value);\n if (onChange) onChange(e.target.name, e.target.value);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], _extends({\n variant: \"standard\",\n sx: STYLES.DIALOG_WINDOW_WIDTH\n }, other), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n htmlFor: elementCode\n }, labelText), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: elementCode,\n name: elementCode,\n value: value ? value : \"\",\n endAdornment: dictionary ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n position: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n \"aria-label\": `${elementCode} select`,\n onClick: handleDictionaryClick,\n edge: \"end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null, \"list\"))) : null,\n onChange: handleChange,\n multiline: true,\n maxRows: 4\n })));\n};\n\n//Контроль свойств - Поле ввода\nIUDFormTextField.propTypes = {\n elementCode: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n elementValue: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string),\n labelText: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().string).isRequired,\n onChange: (prop_types__WEBPACK_IMPORTED_MODULE_8___default().func),\n dictionary: (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/rrp_conf_editor/iud_form_text_field.js?"); - -/***/ }), - -/***/ "./app/panels/rrp_conf_editor/layouts.js": -/*!***********************************************!*\ - !*** ./app/panels/rrp_conf_editor/layouts.js ***! - \***********************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ STYLES: () => (/* binding */ STYLES),\n/* harmony export */ confSctnMrkCellRender: () => (/* binding */ confSctnMrkCellRender)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Link/Link.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n BOX_ROW: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n LINK_STYLE: {\n component: \"button\",\n cursor: \"pointer\",\n width: \"-webkit-fill-available\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Генерация представления ячейки c данными показателя раздела регламентированного отчета\nconst confSctnMrkCellRender = ({\n row,\n columnDef,\n onLinkClick,\n onEditClick,\n onDeleteClick\n}) => {\n let data = row[columnDef.name];\n columnDef.name != \"SROW_NAME\" && data != undefined && columnDef.visible == true ? data = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n sx: STYLES.BOX_ROW\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n sx: STYLES.LINK_STYLE,\n onClick: () => onLinkClick ? onLinkClick(row[\"NRN_\" + columnDef.name.substring(5)]) : null\n }, row[columnDef.name]), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: () => onEditClick ? onEditClick(row[\"NRN_\" + columnDef.name.substring(5)], row[columnDef.name]) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: () => onDeleteClick ? onDeleteClick(row[\"NRN_\" + columnDef.name.substring(5)], row[columnDef.name]) : null\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"delete\"))) : null;\n return {\n data\n };\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/layouts.js?"); - -/***/ }), - /***/ "./app/panels/rrp_conf_editor/rrp_conf_editor.js": /*!*******************************************************!*\ !*** ./app/panels/rrp_conf_editor/rrp_conf_editor.js ***! @@ -5416,18 +5449,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 */ RrpConfEditor: () => (/* binding */ RrpConfEditor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_18__ = __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 _config_wrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../config_wrapper */ \"./app/config_wrapper.js\");\n/* harmony import */ var _context_application__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _context_navigation__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../context/navigation */ \"./app/context/navigation.js\");\n/* harmony import */ var _context_messaging__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../context/messaging */ \"./app/context/messaging.js\");\n/* harmony import */ var _section_tab_panel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./section_tab_panel */ \"./app/panels/rrp_conf_editor/section_tab_panel.js\");\n/* harmony import */ var _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./iud_form_dialog */ \"./app/panels/rrp_conf_editor/iud_form_dialog.js\");\n/* harmony import */ var _layouts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./layouts */ \"./app/panels/rrp_conf_editor/layouts.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./hooks */ \"./app/panels/rrp_conf_editor/hooks.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Панель мониторинга: Корневая панель редактора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Таблица данных\n //Подключение компонентов к настройкам приложения\n //Контекст приложения\n //Контекст взаимодействия с сервером\n //Контекст навигации\n //Контекст сообщений\n //Компонент вкладки раздела\n //Диалог добавления/исправления/удаления компонентов настройки регламентированного отчёта\n //Дополнительная разметка и вёрстка клиентских элементов\n //Статусы диалогового окна\n //Текстовые константы\n //Общие стили\n //Пользовательские хуки\n\n//---------\n//Константы\n//---------\n\n//Высота меню Парус (пиксели)\nconst pxOuterMenuH = 53;\n//Высота заголовка панели (пиксели)\nconst pxPanelHeaderH = 64;\n//Ширина кнопки добавления раздела (пиксели)\nconst pxSectionAddButtonW = 40;\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n width: \"100%\"\n },\n PANELS_MAIN_COLOR: {\n backgroundColor: \"#1976d2\"\n },\n ICON_WHITE: {\n color: \"white\"\n },\n TABS_BOTTOM_LINE: {\n borderBottom: 1,\n borderColor: \"divider\"\n },\n TABS_PADDING: {\n padding: \"5px\"\n },\n TABS_SIZES: (width, pxSectionAddButtonW) => ({\n maxHeight: 150,\n maxWidth: width - pxSectionAddButtonW\n }),\n GRID_PADDING: {\n paddingTop: 1,\n paddingBottom: 1\n },\n GRID_SIZES: (width, height, pxOuterMenuH, pxPanelHeaderH, pxTabsH) => ({\n padding: 0,\n minWidth: width * 0.95,\n minHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.88,\n maxWidth: width * 0.95,\n maxHeight: (height - pxOuterMenuH - pxPanelHeaderH - pxTabsH) * 0.88\n })\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Редактор настройки регламентированного отчёта\nconst RrpConfEditor = () => {\n const dataGrid = {\n rn: 0,\n code: \"\",\n name: \"\",\n dataLoaded: false,\n columnsDef: [],\n groups: [],\n rows: [],\n fixedHeader: false,\n fixedColumns: 0,\n reload: false\n };\n\n //Собственное состояние\n const [rrpDoc, setRrpDoc] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n docLoaded: false,\n sections: [],\n reload: true\n });\n\n //Состояние массива данных разделов\n const [dataGrids] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Состояние раздела\n const [tabValue, setTabValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\");\n\n //Состояние открытия диалогового окна\n const [formOpen, setForm] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Состояние диалогового окна\n const [formData, setFormData] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n rn: \"\",\n prn: \"\",\n sctnName: \"\",\n sctnCode: \"\",\n status: \"\",\n code: \"\",\n name: \"\",\n colName: \"\",\n colCode: \"\",\n colVCode: \"\",\n colVRn: 0,\n rowName: \"\",\n rowCode: \"\",\n rowVCode: \"\",\n rowVRn: 0\n });\n\n //Открытие диалогового окна\n const openForm = () => {\n setForm(true);\n };\n\n //Очистка диалогового окна\n const clearFormData = () => {\n setFormData({\n rn: \"\",\n prn: \"\",\n sctnName: \"\",\n sctnCode: \"\",\n status: \"\",\n code: \"\",\n name: \"\",\n colName: \"\",\n colCode: \"\",\n colVCode: \"\",\n colVRn: 0,\n rowName: \"\",\n rowCode: \"\",\n rowVCode: \"\",\n rowVRn: 0\n });\n };\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_4__[\"BackEndСtx\"]);\n\n //Подключение к контексту приложения\n const {\n pOnlineShowUnit\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_3__[\"ApplicationСtx\"]);\n\n //Подключение к контексту навигации\n const {\n getNavigationSearch\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_navigation__WEBPACK_IMPORTED_MODULE_5__.NavigationCtx);\n\n //Подключение к контексту сообщений\n const {\n showMsgErr\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_messaging__WEBPACK_IMPORTED_MODULE_6__[\"MessagingСtx\"]);\n\n //Переключение раздела\n const handleSectionChange = (event, newValue) => {\n setTabValue(newValue);\n };\n\n //Отработка нажатия на кнопку добавления секции\n const addSectionClick = () => {\n setFormData({\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.CREATE,\n prn: Number(getNavigationSearch().NRN)\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку исправления секции\n const editSectionClick = (rn, code, name) => {\n setFormData({\n rn: rn,\n code: code,\n name: name,\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.EDIT\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку удаления секции\n const deleteSectionClick = (rn, code, name) => {\n setFormData({\n rn: rn,\n code: code,\n name: name,\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.DELETE\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку добавления показателя раздела\n const addSectionMarkClick = (prn, sctnCode, sctnName) => {\n setFormData({\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.RRPCONFSCTNMRK_CREATE,\n prn: prn,\n sctnCode: sctnCode,\n sctnName: sctnName\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку исправления показателя раздела\n const editSectionMarkClick = (rn, name) => {\n setFormData({\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.RRPCONFSCTNMRK_EDIT,\n rn: rn,\n name: name\n });\n openForm();\n };\n\n //Отработка нажатия на кнопку удаления показателя раздела\n const deleteSectionMarkClick = (rn, name) => {\n setFormData({\n status: _iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.STATUSES.RRPCONFSCTNMRK_DELETE,\n rn: rn,\n name: name\n });\n openForm();\n };\n\n //Отображение показателя раздела\n const showSectionMark = async rn => {\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONFSCTNMRK_GET_CODES\",\n args: {\n NRN: rn\n },\n tagValueProcessor: () => undefined\n });\n if (data) {\n pOnlineShowUnit({\n unitCode: \"RRPConfig\",\n showMethod: \"main_mrk_settings\",\n inputParameters: [{\n name: \"in_CODE\",\n value: data.SRRPCONF\n }, {\n name: \"in_SCTN_CODE\",\n value: data.SRRPCONFSCTN\n }, {\n name: \"in_MRK_CODE\",\n value: data.SRRPCONFSCTNMRK\n }]\n });\n } else showMsgErr(_app_text__WEBPACK_IMPORTED_MODULE_10__.TEXTS.NO_DATA_FOUND);\n };\n\n //Формирование разделов\n const a11yProps = index => {\n return {\n id: `simple-tab-${index}`,\n \"aria-controls\": `simple-tabpanel-${index}`\n };\n };\n\n //Загрузка данных разделов регламентированного отчёта\n const loadData = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n if (rrpDoc.reload) {\n //Переменная номера раздела с фокусом\n let tabFocus = 0;\n const data = await executeStored({\n stored: \"PKG_P8PANELS_RRPCONFED.RRPCONF_GET_SECTIONS\",\n args: {\n NRN_RRPCONF: Number(getNavigationSearch().NRN)\n },\n respArg: \"COUT\"\n });\n //Флаг первой загрузки данных\n let firstLoad = dataGrids.length == 0 ? true : false;\n //Копирование массива уже загруженных разделов\n let cloneDGs = dataGrids.slice();\n //Массив из нескольких разделов и из одного\n const sections = data.SECTIONS ? data.SECTIONS.length ? data.SECTIONS : [data.SECTIONS] : [];\n //Заполнение очередного раздела по шаблону\n sections.map(s => {\n let dg = {};\n Object.assign(dg, dataGrid, {\n rn: s.NRN,\n code: s.SCODE,\n name: s.SNAME,\n dataLoaded: true,\n columnsDef: [...(s.XDATA.XCOLUMNS_DEF || [])],\n groups: [...(s.XDATA.XGROUPS || [])],\n rows: [...(s.XDATA.XROWS || [])],\n fixedHeader: s.XDATA.XDATA_GRID.fixedHeader,\n fixedColumns: s.XDATA.XDATA_GRID.fixedColumns,\n reload: false\n });\n //Ищем загружен ли уже раздел с таким же ид.\n const dgItem = dataGrids.find(x => x.rn === dg.rn);\n //Его индекс, если нет соответствия, то -1\n let index = dataGrids.indexOf(dgItem);\n //Если было соответствие\n if (dgItem) {\n //Если в нём не найдено изменений\n if (JSON.stringify(dgItem, null, 4) === JSON.stringify(dg, null, 4)) {\n //То из копированного массива его удаляем\n cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dgItem.rn)), 1);\n } else {\n //Иначе обновляем раздел в массиве\n dataGrids[index] = dg;\n //Удаляем из копированного массива\n cloneDGs.splice(cloneDGs.indexOf(cloneDGs.find(x => x.rn === dg.rn)), 1);\n //Устанавливаем фокус на обновлённый раздел\n tabFocus = index;\n }\n } else {\n //Если раздел новый, то добавляем его в массив данных\n dataGrids.push(dg);\n //И устанавливаем на него фокус, если флаг первой загрузки = false\n tabFocus = !firstLoad ? dataGrids.length - 1 : 0;\n }\n });\n //Обходим разделы, что остались в копированном массиве (на удаление)\n cloneDGs.map(s => {\n let curIndex = dataGrids.indexOf(dataGrids.find(x => x.rn === s.rn));\n //Устаревший раздел удаляем из массива данных\n dataGrids.splice(curIndex, 1);\n //Фокус на предшествующий раздел\n if (curIndex > 0) tabFocus = curIndex - 1;\n //Иначе фокус на следующий, если был удалён первый раздел\n else tabFocus = curIndex;\n });\n setRrpDoc(pv => ({\n ...pv,\n docLoaded: true,\n reload: false,\n sections: dataGrids\n }));\n setTabValue(tabFocus);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [rrpDoc.reload, rrpDoc.docLoaded, dataGrid.reload, dataGrid.docLoaded, executeStored]);\n\n //При необходимости обновить данные таблицы\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n loadData();\n }, [rrpDoc.reload, dataGrid.reload, loadData]);\n\n //При изменениях элемента\n const handleDialogReload = () => {\n setRrpDoc(pv => ({\n ...pv,\n reload: true\n }));\n };\n\n //При закрытии диалога\n const handleDialogClose = () => {\n setForm(false);\n clearFormData();\n };\n\n //Состояние ширины и высоты рабочей области окна\n const [width, height] = (0,_hooks__WEBPACK_IMPORTED_MODULE_11__.useWindowResize)();\n\n //Состояние высоты вкладок с разделами\n const [pxTabsH, setPxTabsH] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n\n //При рендере данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n rrpDoc.docLoaded ? setPxTabsH(document.getElementById(\"sectionTabs\").offsetHeight) : null;\n }, [rrpDoc.docLoaded]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CONTAINER\n }, formOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_iud_form_dialog__WEBPACK_IMPORTED_MODULE_8__.IUDFormDialog, {\n initial: formData,\n onClose: handleDialogClose,\n onReload: handleDialogReload\n }) : null, rrpDoc.docLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\",\n sx: STYLES.TABS_BOTTOM_LINE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n id: \"sectionTabs\",\n value: tabValue,\n onChange: handleSectionChange,\n variant: \"scrollable\",\n scrollButtons: false,\n visibleScrollbar: true,\n \"aria-label\": \"section tab\",\n sx: STYLES.TABS_SIZES(width, pxSectionAddButtonW)\n }, rrpDoc.sections.map((s, i) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], _extends({\n key: s.rn\n }, a11yProps(i), {\n sx: STYLES.TABS_PADDING,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: _layouts__WEBPACK_IMPORTED_MODULE_9__.STYLES.BOX_ROW\n }, s.name, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n component: \"span\",\n onClick: () => editSectionClick(s.rn, s.code, s.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n component: \"span\",\n onClick: () => deleteSectionClick(s.rn, s.code, s.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], null, \"delete\"))),\n wrapped: true\n }));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n sx: STYLES.PANELS_MAIN_COLOR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_16__[\"default\"], {\n onClick: addSectionClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_17__[\"default\"], {\n sx: STYLES.ICON_WHITE\n }, \"add\")))), rrpDoc.sections.map((s, i) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_section_tab_panel__WEBPACK_IMPORTED_MODULE_7__.SectionTabPanel, {\n key: s.rn,\n value: tabValue,\n index: i\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_18__[\"default\"], {\n onClick: () => addSectionMarkClick(s.rn, s.code, s.name)\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"), s.dataLoaded && s.columnsDef.length > 1 ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: {\n ...STYLES.GRID_PADDING,\n ..._layouts__WEBPACK_IMPORTED_MODULE_9__.STYLES.BOX_ROW\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8PDataGrid, _extends({}, _config_wrapper__WEBPACK_IMPORTED_MODULE_2__.P8P_DATA_GRID_CONFIG_PROPS, {\n containerComponentProps: {\n elevation: 6,\n style: STYLES.GRID_SIZES(width, height, pxOuterMenuH, pxPanelHeaderH, pxTabsH)\n },\n columnsDef: s.columnsDef,\n groups: s.groups,\n rows: s.rows,\n fixedHeader: s.fixedHeader,\n fixedColumns: s.fixedColumns,\n size: _components_p8p_data_grid__WEBPACK_IMPORTED_MODULE_1__.P8P_DATA_GRID_SIZE.LARGE,\n reloading: s.reload,\n dataCellRender: prms => (0,_layouts__WEBPACK_IMPORTED_MODULE_9__.confSctnMrkCellRender)({\n ...prms,\n onLinkClick: showSectionMark,\n onEditClick: editSectionMarkClick,\n onDeleteClick: deleteSectionMarkClick\n })\n }))) : null);\n })) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/rrp_conf_editor.js?"); - -/***/ }), - -/***/ "./app/panels/rrp_conf_editor/section_tab_panel.js": -/*!*********************************************************!*\ - !*** ./app/panels/rrp_conf_editor/section_tab_panel.js ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SectionTabPanel: () => (/* binding */ SectionTabPanel)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.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\nconst SectionTabPanel = props => {\n const {\n children,\n value,\n index,\n ...other\n } = props;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n role: \"tabpanel\",\n hidden: value !== index,\n id: `tabpanel-${index}`,\n \"aria-labelledby\": `tab-${index}`\n }, other), value === index && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n p: 3\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n component: \"span\"\n }, children)));\n};\n\n//Контроль свойств - Вкладка раздела\nSectionTabPanel.propTypes = {\n children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n index: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number).isRequired,\n value: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/section_tab_panel.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RrpConfEditor: () => (/* binding */ RrpConfEditor)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tabs/Tabs.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Tab/Tab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./IUD/iud_form_dialog */ \"./app/panels/rrp_conf_editor/IUD/iud_form_dialog.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ \"./app/panels/rrp_conf_editor/hooks.js\");\n/* harmony import */ var _components_rrp_section__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/rrp_section */ \"./app/panels/rrp_conf_editor/components/rrp_section.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\r\n Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта\r\n Панель мониторинга: Корневая панель редактора\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Интерфейсные компоненты\n //Диалог добавления/исправления/удаления компонентов настройки регламентированного отчёта\n //Пользовательские хуки\n //Компонент раздела настройки\n\n//---------\n//Константы\n//---------\n\n//Высота меню Парус (пиксели)\nconst pxOuterMenuH = 53;\n//Высота заголовка панели (пиксели)\nconst pxPanelHeaderH = 64;\n//Ширина кнопки добавления раздела (пиксели)\nconst pxSectionAddButtonW = 40;\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n width: \"100%\",\n minHeight: `calc(100vh - ${pxPanelHeaderH})`,\n maxHeight: `calc(100vh - ${pxPanelHeaderH})`\n },\n PANELS_MAIN_COLOR: {\n backgroundColor: \"#1976d2\"\n },\n ICON_WHITE: {\n color: \"white\"\n },\n TABS_BOTTOM_LINE: {\n borderBottom: 1,\n borderColor: \"divider\"\n },\n TABS_PADDING: {\n padding: \"5px\"\n },\n TABS_SIZES: (width, pxSectionAddButtonW) => ({\n maxHeight: 150,\n maxWidth: width - pxSectionAddButtonW\n }),\n SECTION_ACTIONS: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Редактор настройки регламентированного отчёта\nconst RrpConfEditor = () => {\n //Состояние вкладки\n const [tabValue, handleSectionChange] = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useTab)(\"\");\n\n //Состояние настройки\n const [rrpConf, handleReload] = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useConf)(tabValue, handleSectionChange);\n\n //Функции открытия разделов\n const [handleMarkOpen, handleMarkCnOpen, handleMarkCnInsert] = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useRecOpen)(handleReload);\n\n //Состояние форм диалога\n const [formOpen, formData, handleSectionAdd, handleSectionEdit, handleSectionDelete, handleMarkAdd, handleMarkEdit, handleMarkDelete, handleDialogClose] = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useFormDialog)();\n\n //Состояние ширины и высоты рабочей области окна\n const [width, height] = (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.useWindowResize)();\n\n //Состояние высоты вкладок с разделами\n const [pxTabsH, setPxTabsH] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);\n\n //При рендере данных\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n rrpConf.docLoaded ? setPxTabsH(document.getElementById(\"sectionTabs\").offsetHeight) : null;\n }, [rrpConf.docLoaded]);\n\n //Формируем меню показателей\n const markMenuItems = [{\n method: \"EDIT\",\n name: \"Исправить\",\n icon: \"edit\",\n func: handleMarkEdit\n }, {\n method: \"DELETE\",\n name: \"Удалить\",\n icon: \"delete\",\n func: handleMarkDelete\n }];\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.CONTAINER\n }, formOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_IUD_iud_form_dialog__WEBPACK_IMPORTED_MODULE_1__.IUDFormDialog, {\n initial: formData,\n onClose: handleDialogClose,\n onReload: handleReload\n }) : null, rrpConf.docLoaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n direction: \"row\",\n sx: STYLES.TABS_BOTTOM_LINE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n id: \"sectionTabs\",\n value: tabValue,\n onChange: (event, newValue) => handleSectionChange(newValue),\n variant: \"scrollable\",\n scrollButtons: false,\n visibleScrollbar: true,\n \"aria-label\": \"section tab\",\n sx: STYLES.TABS_SIZES(width, pxSectionAddButtonW)\n }, rrpConf.sections.map((s, i) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], _extends({\n key: s.rn\n }, (0,_hooks__WEBPACK_IMPORTED_MODULE_2__.a11yProps)(i), {\n sx: STYLES.TABS_PADDING,\n label: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n sx: STYLES.SECTION_ACTIONS\n }, s.name, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n component: \"span\",\n onClick: () => handleSectionEdit(s.rn, s.code, s.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"edit\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n disabled: s.delete_allow === 0,\n component: \"span\",\n onClick: () => handleSectionDelete(s.rn, s.code, s.name)\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"delete\"))),\n wrapped: true\n }));\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n sx: STYLES.PANELS_MAIN_COLOR\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleSectionAdd\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n sx: STYLES.ICON_WHITE\n }, \"add\")))), rrpConf.sections.map((s, i) => {\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_rrp_section__WEBPACK_IMPORTED_MODULE_3__.SectionTab, {\n key: s.rn,\n section: s,\n tabValue: tabValue,\n index: i,\n containerProps: {\n height,\n pxOuterMenuH,\n pxPanelHeaderH,\n pxTabsH\n },\n handleReload: handleReload,\n handleMarkOpen: handleMarkOpen,\n handleMarkAdd: handleMarkAdd,\n handleMarkCnOpen: handleMarkCnOpen,\n handleMarkCnInsert: handleMarkCnInsert,\n menuItems: markMenuItems\n });\n })) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/rrp_conf_editor/rrp_conf_editor.js?"); /***/ }),