diff --git a/dist/p8-panels.js b/dist/p8-panels.js index b71b329..a74a1e9 100644 --- a/dist/p8-panels.js +++ b/dist/p8-panels.js @@ -455,7 +455,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac \***********************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { -eval("var map = {\n\t\"./clnt_task_board\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/clnt_task_board\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/clnt_task_board.js\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/components/custom_input_field\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/custom_input_field.js\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/filter_dialog\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/filter_dialog.js\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog.js\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog.js\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/status_card\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card.js\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card_settings\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/status_card_settings.js\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/task_card\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_card.js\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_form\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form.js\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor.js\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_info\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_info.js\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_props\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/components/task_form_tab_props.js\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/filter\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/filter.js\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/hooks/dict_hooks\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/dict_hooks.js\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks.js\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/hooks\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/hooks.js\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks.js\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks.js\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/index\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/index.js\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/layouts\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/layouts.js\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/styles\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/styles.js\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/task_dialog\": \"./app/panels/clnt_task_board/task_dialog.js\",\n\t\"./clnt_task_board/task_dialog.js\": \"./app/panels/clnt_task_board/task_dialog.js\",\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_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.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\"./mech_rec_help\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/img/1_1.png\": \"./app/panels/mech_rec_help/img/1_1.png\",\n\t\"./mech_rec_help/img/1_2.png\": \"./app/panels/mech_rec_help/img/1_2.png\",\n\t\"./mech_rec_help/img/1_3.png\": \"./app/panels/mech_rec_help/img/1_3.png\",\n\t\"./mech_rec_help/img/1_4.png\": \"./app/panels/mech_rec_help/img/1_4.png\",\n\t\"./mech_rec_help/img/1_5.png\": \"./app/panels/mech_rec_help/img/1_5.png\",\n\t\"./mech_rec_help/img/21_1.png\": \"./app/panels/mech_rec_help/img/21_1.png\",\n\t\"./mech_rec_help/img/21_2.png\": \"./app/panels/mech_rec_help/img/21_2.png\",\n\t\"./mech_rec_help/img/21_3.png\": \"./app/panels/mech_rec_help/img/21_3.png\",\n\t\"./mech_rec_help/img/2_1.png\": \"./app/panels/mech_rec_help/img/2_1.png\",\n\t\"./mech_rec_help/img/2_2.png\": \"./app/panels/mech_rec_help/img/2_2.png\",\n\t\"./mech_rec_help/img/2_3.png\": \"./app/panels/mech_rec_help/img/2_3.png\",\n\t\"./mech_rec_help/img/2_4.png\": \"./app/panels/mech_rec_help/img/2_4.png\",\n\t\"./mech_rec_help/img/2_5.png\": \"./app/panels/mech_rec_help/img/2_5.png\",\n\t\"./mech_rec_help/img/31_1.png\": \"./app/panels/mech_rec_help/img/31_1.png\",\n\t\"./mech_rec_help/img/31_10.png\": \"./app/panels/mech_rec_help/img/31_10.png\",\n\t\"./mech_rec_help/img/31_2.png\": \"./app/panels/mech_rec_help/img/31_2.png\",\n\t\"./mech_rec_help/img/31_3.png\": \"./app/panels/mech_rec_help/img/31_3.png\",\n\t\"./mech_rec_help/img/31_4.png\": \"./app/panels/mech_rec_help/img/31_4.png\",\n\t\"./mech_rec_help/img/31_5.png\": \"./app/panels/mech_rec_help/img/31_5.png\",\n\t\"./mech_rec_help/img/31_6.png\": \"./app/panels/mech_rec_help/img/31_6.png\",\n\t\"./mech_rec_help/img/31_7.png\": \"./app/panels/mech_rec_help/img/31_7.png\",\n\t\"./mech_rec_help/img/31_8.png\": \"./app/panels/mech_rec_help/img/31_8.png\",\n\t\"./mech_rec_help/img/31_9.png\": \"./app/panels/mech_rec_help/img/31_9.png\",\n\t\"./mech_rec_help/img/32_1.png\": \"./app/panels/mech_rec_help/img/32_1.png\",\n\t\"./mech_rec_help/img/32_2.png\": \"./app/panels/mech_rec_help/img/32_2.png\",\n\t\"./mech_rec_help/img/32_3.png\": \"./app/panels/mech_rec_help/img/32_3.png\",\n\t\"./mech_rec_help/img/33_1.png\": \"./app/panels/mech_rec_help/img/33_1.png\",\n\t\"./mech_rec_help/img/33_2.png\": \"./app/panels/mech_rec_help/img/33_2.png\",\n\t\"./mech_rec_help/img/33_3.png\": \"./app/panels/mech_rec_help/img/33_3.png\",\n\t\"./mech_rec_help/img/33_4.png\": \"./app/panels/mech_rec_help/img/33_4.png\",\n\t\"./mech_rec_help/img/34_1.png\": \"./app/panels/mech_rec_help/img/34_1.png\",\n\t\"./mech_rec_help/img/34_2.png\": \"./app/panels/mech_rec_help/img/34_2.png\",\n\t\"./mech_rec_help/img/34_3.png\": \"./app/panels/mech_rec_help/img/34_3.png\",\n\t\"./mech_rec_help/img/34_4.png\": \"./app/panels/mech_rec_help/img/34_4.png\",\n\t\"./mech_rec_help/img/34_5.png\": \"./app/panels/mech_rec_help/img/34_5.png\",\n\t\"./mech_rec_help/img/34_6.png\": \"./app/panels/mech_rec_help/img/34_6.png\",\n\t\"./mech_rec_help/img/34_7.png\": \"./app/panels/mech_rec_help/img/34_7.png\",\n\t\"./mech_rec_help/img/34_8.png\": \"./app/panels/mech_rec_help/img/34_8.png\",\n\t\"./mech_rec_help/img/35_1.png\": \"./app/panels/mech_rec_help/img/35_1.png\",\n\t\"./mech_rec_help/img/3_1.png\": \"./app/panels/mech_rec_help/img/3_1.png\",\n\t\"./mech_rec_help/img/410_1.png\": \"./app/panels/mech_rec_help/img/410_1.png\",\n\t\"./mech_rec_help/img/410_2.png\": \"./app/panels/mech_rec_help/img/410_2.png\",\n\t\"./mech_rec_help/img/410_3.png\": \"./app/panels/mech_rec_help/img/410_3.png\",\n\t\"./mech_rec_help/img/410_4.png\": \"./app/panels/mech_rec_help/img/410_4.png\",\n\t\"./mech_rec_help/img/410_5.png\": \"./app/panels/mech_rec_help/img/410_5.png\",\n\t\"./mech_rec_help/img/410_6.png\": \"./app/panels/mech_rec_help/img/410_6.png\",\n\t\"./mech_rec_help/img/410_7.png\": \"./app/panels/mech_rec_help/img/410_7.png\",\n\t\"./mech_rec_help/img/411_1.png\": \"./app/panels/mech_rec_help/img/411_1.png\",\n\t\"./mech_rec_help/img/411_2.png\": \"./app/panels/mech_rec_help/img/411_2.png\",\n\t\"./mech_rec_help/img/411_3.png\": \"./app/panels/mech_rec_help/img/411_3.png\",\n\t\"./mech_rec_help/img/411_4.png\": \"./app/panels/mech_rec_help/img/411_4.png\",\n\t\"./mech_rec_help/img/412_1.png\": \"./app/panels/mech_rec_help/img/412_1.png\",\n\t\"./mech_rec_help/img/412_2.png\": \"./app/panels/mech_rec_help/img/412_2.png\",\n\t\"./mech_rec_help/img/412_3.png\": \"./app/panels/mech_rec_help/img/412_3.png\",\n\t\"./mech_rec_help/img/412_4.png\": \"./app/panels/mech_rec_help/img/412_4.png\",\n\t\"./mech_rec_help/img/413_1.png\": \"./app/panels/mech_rec_help/img/413_1.png\",\n\t\"./mech_rec_help/img/413_2.png\": \"./app/panels/mech_rec_help/img/413_2.png\",\n\t\"./mech_rec_help/img/413_3.png\": \"./app/panels/mech_rec_help/img/413_3.png\",\n\t\"./mech_rec_help/img/413_4.png\": \"./app/panels/mech_rec_help/img/413_4.png\",\n\t\"./mech_rec_help/img/413_5.png\": \"./app/panels/mech_rec_help/img/413_5.png\",\n\t\"./mech_rec_help/img/414_1.png\": \"./app/panels/mech_rec_help/img/414_1.png\",\n\t\"./mech_rec_help/img/414_2.png\": \"./app/panels/mech_rec_help/img/414_2.png\",\n\t\"./mech_rec_help/img/414_3.png\": \"./app/panels/mech_rec_help/img/414_3.png\",\n\t\"./mech_rec_help/img/41_1.png\": \"./app/panels/mech_rec_help/img/41_1.png\",\n\t\"./mech_rec_help/img/41_10.png\": \"./app/panels/mech_rec_help/img/41_10.png\",\n\t\"./mech_rec_help/img/41_11.png\": \"./app/panels/mech_rec_help/img/41_11.png\",\n\t\"./mech_rec_help/img/41_12.png\": \"./app/panels/mech_rec_help/img/41_12.png\",\n\t\"./mech_rec_help/img/41_2.png\": \"./app/panels/mech_rec_help/img/41_2.png\",\n\t\"./mech_rec_help/img/41_3.png\": \"./app/panels/mech_rec_help/img/41_3.png\",\n\t\"./mech_rec_help/img/41_4.png\": \"./app/panels/mech_rec_help/img/41_4.png\",\n\t\"./mech_rec_help/img/41_5.png\": \"./app/panels/mech_rec_help/img/41_5.png\",\n\t\"./mech_rec_help/img/41_6.png\": \"./app/panels/mech_rec_help/img/41_6.png\",\n\t\"./mech_rec_help/img/41_7.png\": \"./app/panels/mech_rec_help/img/41_7.png\",\n\t\"./mech_rec_help/img/41_8.png\": \"./app/panels/mech_rec_help/img/41_8.png\",\n\t\"./mech_rec_help/img/41_9.png\": \"./app/panels/mech_rec_help/img/41_9.png\",\n\t\"./mech_rec_help/img/42_1.png\": \"./app/panels/mech_rec_help/img/42_1.png\",\n\t\"./mech_rec_help/img/42_2.png\": \"./app/panels/mech_rec_help/img/42_2.png\",\n\t\"./mech_rec_help/img/42_3.png\": \"./app/panels/mech_rec_help/img/42_3.png\",\n\t\"./mech_rec_help/img/42_4.png\": \"./app/panels/mech_rec_help/img/42_4.png\",\n\t\"./mech_rec_help/img/43_1.png\": \"./app/panels/mech_rec_help/img/43_1.png\",\n\t\"./mech_rec_help/img/43_2.png\": \"./app/panels/mech_rec_help/img/43_2.png\",\n\t\"./mech_rec_help/img/43_3.png\": \"./app/panels/mech_rec_help/img/43_3.png\",\n\t\"./mech_rec_help/img/43_4.png\": \"./app/panels/mech_rec_help/img/43_4.png\",\n\t\"./mech_rec_help/img/43_5.png\": \"./app/panels/mech_rec_help/img/43_5.png\",\n\t\"./mech_rec_help/img/43_6.png\": \"./app/panels/mech_rec_help/img/43_6.png\",\n\t\"./mech_rec_help/img/43_7.png\": \"./app/panels/mech_rec_help/img/43_7.png\",\n\t\"./mech_rec_help/img/43_8.png\": \"./app/panels/mech_rec_help/img/43_8.png\",\n\t\"./mech_rec_help/img/44_1.png\": \"./app/panels/mech_rec_help/img/44_1.png\",\n\t\"./mech_rec_help/img/44_10.png\": \"./app/panels/mech_rec_help/img/44_10.png\",\n\t\"./mech_rec_help/img/44_2.png\": \"./app/panels/mech_rec_help/img/44_2.png\",\n\t\"./mech_rec_help/img/44_3.png\": \"./app/panels/mech_rec_help/img/44_3.png\",\n\t\"./mech_rec_help/img/44_4.png\": \"./app/panels/mech_rec_help/img/44_4.png\",\n\t\"./mech_rec_help/img/44_5.png\": \"./app/panels/mech_rec_help/img/44_5.png\",\n\t\"./mech_rec_help/img/44_6.png\": \"./app/panels/mech_rec_help/img/44_6.png\",\n\t\"./mech_rec_help/img/44_7.png\": \"./app/panels/mech_rec_help/img/44_7.png\",\n\t\"./mech_rec_help/img/44_8.png\": \"./app/panels/mech_rec_help/img/44_8.png\",\n\t\"./mech_rec_help/img/44_9.png\": \"./app/panels/mech_rec_help/img/44_9.png\",\n\t\"./mech_rec_help/img/45_1.png\": \"./app/panels/mech_rec_help/img/45_1.png\",\n\t\"./mech_rec_help/img/45_10.png\": \"./app/panels/mech_rec_help/img/45_10.png\",\n\t\"./mech_rec_help/img/45_2.png\": \"./app/panels/mech_rec_help/img/45_2.png\",\n\t\"./mech_rec_help/img/45_3.png\": \"./app/panels/mech_rec_help/img/45_3.png\",\n\t\"./mech_rec_help/img/45_4.png\": \"./app/panels/mech_rec_help/img/45_4.png\",\n\t\"./mech_rec_help/img/45_5.png\": \"./app/panels/mech_rec_help/img/45_5.png\",\n\t\"./mech_rec_help/img/45_6.png\": \"./app/panels/mech_rec_help/img/45_6.png\",\n\t\"./mech_rec_help/img/45_7.png\": \"./app/panels/mech_rec_help/img/45_7.png\",\n\t\"./mech_rec_help/img/45_8.png\": \"./app/panels/mech_rec_help/img/45_8.png\",\n\t\"./mech_rec_help/img/45_9.png\": \"./app/panels/mech_rec_help/img/45_9.png\",\n\t\"./mech_rec_help/img/46_1.png\": \"./app/panels/mech_rec_help/img/46_1.png\",\n\t\"./mech_rec_help/img/46_2.png\": \"./app/panels/mech_rec_help/img/46_2.png\",\n\t\"./mech_rec_help/img/46_3.png\": \"./app/panels/mech_rec_help/img/46_3.png\",\n\t\"./mech_rec_help/img/46_4.png\": \"./app/panels/mech_rec_help/img/46_4.png\",\n\t\"./mech_rec_help/img/46_5.png\": \"./app/panels/mech_rec_help/img/46_5.png\",\n\t\"./mech_rec_help/img/46_6.png\": \"./app/panels/mech_rec_help/img/46_6.png\",\n\t\"./mech_rec_help/img/47_1.png\": \"./app/panels/mech_rec_help/img/47_1.png\",\n\t\"./mech_rec_help/img/47_10.png\": \"./app/panels/mech_rec_help/img/47_10.png\",\n\t\"./mech_rec_help/img/47_11.png\": \"./app/panels/mech_rec_help/img/47_11.png\",\n\t\"./mech_rec_help/img/47_12.png\": \"./app/panels/mech_rec_help/img/47_12.png\",\n\t\"./mech_rec_help/img/47_2.png\": \"./app/panels/mech_rec_help/img/47_2.png\",\n\t\"./mech_rec_help/img/47_3.png\": \"./app/panels/mech_rec_help/img/47_3.png\",\n\t\"./mech_rec_help/img/47_4.png\": \"./app/panels/mech_rec_help/img/47_4.png\",\n\t\"./mech_rec_help/img/47_5.png\": \"./app/panels/mech_rec_help/img/47_5.png\",\n\t\"./mech_rec_help/img/47_6.png\": \"./app/panels/mech_rec_help/img/47_6.png\",\n\t\"./mech_rec_help/img/47_7.png\": \"./app/panels/mech_rec_help/img/47_7.png\",\n\t\"./mech_rec_help/img/47_8.png\": \"./app/panels/mech_rec_help/img/47_8.png\",\n\t\"./mech_rec_help/img/47_9.png\": \"./app/panels/mech_rec_help/img/47_9.png\",\n\t\"./mech_rec_help/img/48_1.png\": \"./app/panels/mech_rec_help/img/48_1.png\",\n\t\"./mech_rec_help/img/48_2.png\": \"./app/panels/mech_rec_help/img/48_2.png\",\n\t\"./mech_rec_help/img/48_3.png\": \"./app/panels/mech_rec_help/img/48_3.png\",\n\t\"./mech_rec_help/img/48_4.png\": \"./app/panels/mech_rec_help/img/48_4.png\",\n\t\"./mech_rec_help/img/49_1.png\": \"./app/panels/mech_rec_help/img/49_1.png\",\n\t\"./mech_rec_help/img/49_2.png\": \"./app/panels/mech_rec_help/img/49_2.png\",\n\t\"./mech_rec_help/img/49_3.png\": \"./app/panels/mech_rec_help/img/49_3.png\",\n\t\"./mech_rec_help/img/add1_1.png\": \"./app/panels/mech_rec_help/img/add1_1.png\",\n\t\"./mech_rec_help/img/add1_2.png\": \"./app/panels/mech_rec_help/img/add1_2.png\",\n\t\"./mech_rec_help/img/add1_3.png\": \"./app/panels/mech_rec_help/img/add1_3.png\",\n\t\"./mech_rec_help/img/add1_4.png\": \"./app/panels/mech_rec_help/img/add1_4.png\",\n\t\"./mech_rec_help/img/add1_5.png\": \"./app/panels/mech_rec_help/img/add1_5.png\",\n\t\"./mech_rec_help/img/add1_6.png\": \"./app/panels/mech_rec_help/img/add1_6.png\",\n\t\"./mech_rec_help/img/add1_7.png\": \"./app/panels/mech_rec_help/img/add1_7.png\",\n\t\"./mech_rec_help/img/add1_8.png\": \"./app/panels/mech_rec_help/img/add1_8.png\",\n\t\"./mech_rec_help/img/add1_9.png\": \"./app/panels/mech_rec_help/img/add1_9.png\",\n\t\"./mech_rec_help/index\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/index.js\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/mech_rec_help\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./mech_rec_help/mech_rec_help.js\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./panels_editor\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/component_editor\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_editor.js\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_view\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/component_view.js\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/components/chart/editor\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/editor.js\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/view\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/chart/view.js\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/components\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components.js\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components_hooks\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/components_hooks.js\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/form/common\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/common.js\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/editor\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/editor.js\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/view\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/form/view.js\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/indicator/editor\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/editor.js\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/view\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/indicator/view.js\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/table/editor\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/editor.js\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/view\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/components/table/view.js\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/index\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/index.js\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/layout_item\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/layout_item.js\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/panels_editor\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./panels_editor/panels_editor.css\": \"./app/panels/panels_editor/panels_editor.css\",\n\t\"./panels_editor/panels_editor.js\": \"./app/panels/panels_editor/panels_editor.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/21_1.png\": \"./app/panels/prj_help/img/21_1.png\",\n\t\"./prj_help/img/21_2.png\": \"./app/panels/prj_help/img/21_2.png\",\n\t\"./prj_help/img/21_3.png\": \"./app/panels/prj_help/img/21_3.png\",\n\t\"./prj_help/img/21_4.png\": \"./app/panels/prj_help/img/21_4.png\",\n\t\"./prj_help/img/21_5.png\": \"./app/panels/prj_help/img/21_5.png\",\n\t\"./prj_help/img/22_1.png\": \"./app/panels/prj_help/img/22_1.png\",\n\t\"./prj_help/img/22_2.png\": \"./app/panels/prj_help/img/22_2.png\",\n\t\"./prj_help/img/22_3.png\": \"./app/panels/prj_help/img/22_3.png\",\n\t\"./prj_help/img/23_1.png\": \"./app/panels/prj_help/img/23_1.png\",\n\t\"./prj_help/img/23_2.png\": \"./app/panels/prj_help/img/23_2.png\",\n\t\"./prj_help/img/24_1.png\": \"./app/panels/prj_help/img/24_1.png\",\n\t\"./prj_help/img/24_2.png\": \"./app/panels/prj_help/img/24_2.png\",\n\t\"./prj_help/img/24_3.png\": \"./app/panels/prj_help/img/24_3.png\",\n\t\"./prj_help/img/24_4.png\": \"./app/panels/prj_help/img/24_4.png\",\n\t\"./prj_help/img/24_5.png\": \"./app/panels/prj_help/img/24_5.png\",\n\t\"./prj_help/img/3_1.png\": \"./app/panels/prj_help/img/3_1.png\",\n\t\"./prj_help/img/3_2.png\": \"./app/panels/prj_help/img/3_2.png\",\n\t\"./prj_help/img/3_3.png\": \"./app/panels/prj_help/img/3_3.png\",\n\t\"./prj_help/img/3_4.png\": \"./app/panels/prj_help/img/3_4.png\",\n\t\"./prj_help/img/3_5.png\": \"./app/panels/prj_help/img/3_5.png\",\n\t\"./prj_help/img/3_6.png\": \"./app/panels/prj_help/img/3_6.png\",\n\t\"./prj_help/img/41_1.png\": \"./app/panels/prj_help/img/41_1.png\",\n\t\"./prj_help/img/41_2.png\": \"./app/panels/prj_help/img/41_2.png\",\n\t\"./prj_help/img/42_1.png\": \"./app/panels/prj_help/img/42_1.png\",\n\t\"./prj_help/img/42_2.png\": \"./app/panels/prj_help/img/42_2.png\",\n\t\"./prj_help/img/43_1.png\": \"./app/panels/prj_help/img/43_1.png\",\n\t\"./prj_help/img/43_2.png\": \"./app/panels/prj_help/img/43_2.png\",\n\t\"./prj_help/img/43_3.png\": \"./app/panels/prj_help/img/43_3.png\",\n\t\"./prj_help/img/43_4.png\": \"./app/panels/prj_help/img/43_4.png\",\n\t\"./prj_help/img/44_1.png\": \"./app/panels/prj_help/img/44_1.png\",\n\t\"./prj_help/img/44_2.png\": \"./app/panels/prj_help/img/44_2.png\",\n\t\"./prj_help/img/44_3.png\": \"./app/panels/prj_help/img/44_3.png\",\n\t\"./prj_help/img/44_4.png\": \"./app/panels/prj_help/img/44_4.png\",\n\t\"./prj_help/img/45_1.png\": \"./app/panels/prj_help/img/45_1.png\",\n\t\"./prj_help/img/46_1.png\": \"./app/panels/prj_help/img/46_1.png\",\n\t\"./prj_help/img/47_1.png\": \"./app/panels/prj_help/img/47_1.png\",\n\t\"./prj_help/img/71_1.png\": \"./app/panels/prj_help/img/71_1.png\",\n\t\"./prj_help/img/72_1.png\": \"./app/panels/prj_help/img/72_1.png\",\n\t\"./prj_help/img/72_2.png\": \"./app/panels/prj_help/img/72_2.png\",\n\t\"./prj_help/img/72_3.png\": \"./app/panels/prj_help/img/72_3.png\",\n\t\"./prj_help/img/74_1.png\": \"./app/panels/prj_help/img/74_1.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_info\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/filter\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter.js\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter_dialog\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/filter_dialog.js\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/index\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/index.js\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/layouts\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/layouts.js\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/prj_info\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/prj_info.js\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/projects\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects.js\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects_hooks\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_hooks.js\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_layouts\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/projects_layouts.js\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/stage_detail\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail.js\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail_hooks\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_hooks.js\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_layouts\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stage_detail_layouts.js\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stages\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages.js\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages_hooks\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_hooks.js\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_layouts\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_info/stages_layouts.js\": \"./app/panels/prj_info/stages_layouts.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\"./query_editor\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/common\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/common.js\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/components/argument/argument\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/argument/argument.js\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/attribute/attribute\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/attribute/attribute.js\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/entity/entity\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/entity/entity.js\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/inspector/inspector\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector/inspector.js\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector/query_area\": \"./app/panels/query_editor/components/inspector/query_area.js\",\n\t\"./query_editor/components/inspector/query_area.js\": \"./app/panels/query_editor/components/inspector/query_area.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/args_list\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/args_list.js\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/hooks\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/hooks.js\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args.js\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks.js\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond.js\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog.js\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks.js\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents.js\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks.js\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls.js\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/queries_manager/hooks\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/hooks.js\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/queries_list\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_list.js\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_manager\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/queries_manager.js\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog.js\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/query_diagram/query_diagram\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/query_diagram/query_diagram.css\": \"./app/panels/query_editor/components/query_diagram/query_diagram.css\",\n\t\"./query_editor/components/query_diagram/query_diagram.js\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/relation/relation\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/components/relation/relation.js\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/hooks\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/hooks.js\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/index\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/index.js\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/query_editor\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./query_editor/query_editor.js\": \"./app/panels/query_editor/query_editor.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/common\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/common.js\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/components/action_message\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/action_message.js\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/dialog_help\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_help.js\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_order\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_order.js\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/mark_card\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card.js\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar.js\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list.js\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/marks\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks.js\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar.js\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/section\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section.js\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section_tab\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/section_tab.js\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/sections\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/components/sections.js\": \"./app/panels/rrp_conf_editor/components/sections.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/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\"./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/cyclogram\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/cyclogram.js\": \"./app/panels/samples/cyclogram.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/indicator\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/indicator.js\": \"./app/panels/samples/indicator.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\"./clnt_task_board\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/clnt_task_board\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/clnt_task_board.js\": \"./app/panels/clnt_task_board/clnt_task_board.js\",\n\t\"./clnt_task_board/components/custom_input_field\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/custom_input_field.js\": \"./app/panels/clnt_task_board/components/custom_input_field.js\",\n\t\"./clnt_task_board/components/filter_dialog\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/filter_dialog.js\": \"./app/panels/clnt_task_board/components/filter_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/note_dialog.js\": \"./app/panels/clnt_task_board/components/note_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/settings_dialog.js\": \"./app/panels/clnt_task_board/components/settings_dialog.js\",\n\t\"./clnt_task_board/components/status_card\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card.js\": \"./app/panels/clnt_task_board/components/status_card.js\",\n\t\"./clnt_task_board/components/status_card_settings\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/status_card_settings.js\": \"./app/panels/clnt_task_board/components/status_card_settings.js\",\n\t\"./clnt_task_board/components/task_card\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_card.js\": \"./app/panels/clnt_task_board/components/task_card.js\",\n\t\"./clnt_task_board/components/task_form\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form.js\": \"./app/panels/clnt_task_board/components/task_form.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_executor.js\": \"./app/panels/clnt_task_board/components/task_form_tab_executor.js\",\n\t\"./clnt_task_board/components/task_form_tab_info\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_info.js\": \"./app/panels/clnt_task_board/components/task_form_tab_info.js\",\n\t\"./clnt_task_board/components/task_form_tab_props\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/components/task_form_tab_props.js\": \"./app/panels/clnt_task_board/components/task_form_tab_props.js\",\n\t\"./clnt_task_board/filter\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/filter.js\": \"./app/panels/clnt_task_board/filter.js\",\n\t\"./clnt_task_board/hooks/dict_hooks\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/dict_hooks.js\": \"./app/panels/clnt_task_board/hooks/dict_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/filter_hooks.js\": \"./app/panels/clnt_task_board/hooks/filter_hooks.js\",\n\t\"./clnt_task_board/hooks/hooks\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/hooks.js\": \"./app/panels/clnt_task_board/hooks/hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/task_dialog_hooks.js\": \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/hooks/tasks_hooks.js\": \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\",\n\t\"./clnt_task_board/index\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/index.js\": \"./app/panels/clnt_task_board/index.js\",\n\t\"./clnt_task_board/layouts\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/layouts.js\": \"./app/panels/clnt_task_board/layouts.js\",\n\t\"./clnt_task_board/styles\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/styles.js\": \"./app/panels/clnt_task_board/styles.js\",\n\t\"./clnt_task_board/task_dialog\": \"./app/panels/clnt_task_board/task_dialog.js\",\n\t\"./clnt_task_board/task_dialog.js\": \"./app/panels/clnt_task_board/task_dialog.js\",\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_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/hooks.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/hooks.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/index.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/index.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/mech_rec_cost_jobs_manage_mp.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\",\n\t\"./mech_rec_cost_jobs_manage_mp/worker_include_dialog.js\": \"./app/panels/mech_rec_cost_jobs_manage_mp/worker_include_dialog.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\"./mech_rec_help\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/img/1_1.png\": \"./app/panels/mech_rec_help/img/1_1.png\",\n\t\"./mech_rec_help/img/1_2.png\": \"./app/panels/mech_rec_help/img/1_2.png\",\n\t\"./mech_rec_help/img/1_3.png\": \"./app/panels/mech_rec_help/img/1_3.png\",\n\t\"./mech_rec_help/img/1_4.png\": \"./app/panels/mech_rec_help/img/1_4.png\",\n\t\"./mech_rec_help/img/1_5.png\": \"./app/panels/mech_rec_help/img/1_5.png\",\n\t\"./mech_rec_help/img/21_1.png\": \"./app/panels/mech_rec_help/img/21_1.png\",\n\t\"./mech_rec_help/img/21_2.png\": \"./app/panels/mech_rec_help/img/21_2.png\",\n\t\"./mech_rec_help/img/21_3.png\": \"./app/panels/mech_rec_help/img/21_3.png\",\n\t\"./mech_rec_help/img/2_1.png\": \"./app/panels/mech_rec_help/img/2_1.png\",\n\t\"./mech_rec_help/img/2_2.png\": \"./app/panels/mech_rec_help/img/2_2.png\",\n\t\"./mech_rec_help/img/2_3.png\": \"./app/panels/mech_rec_help/img/2_3.png\",\n\t\"./mech_rec_help/img/2_4.png\": \"./app/panels/mech_rec_help/img/2_4.png\",\n\t\"./mech_rec_help/img/2_5.png\": \"./app/panels/mech_rec_help/img/2_5.png\",\n\t\"./mech_rec_help/img/31_1.png\": \"./app/panels/mech_rec_help/img/31_1.png\",\n\t\"./mech_rec_help/img/31_10.png\": \"./app/panels/mech_rec_help/img/31_10.png\",\n\t\"./mech_rec_help/img/31_2.png\": \"./app/panels/mech_rec_help/img/31_2.png\",\n\t\"./mech_rec_help/img/31_3.png\": \"./app/panels/mech_rec_help/img/31_3.png\",\n\t\"./mech_rec_help/img/31_4.png\": \"./app/panels/mech_rec_help/img/31_4.png\",\n\t\"./mech_rec_help/img/31_5.png\": \"./app/panels/mech_rec_help/img/31_5.png\",\n\t\"./mech_rec_help/img/31_6.png\": \"./app/panels/mech_rec_help/img/31_6.png\",\n\t\"./mech_rec_help/img/31_7.png\": \"./app/panels/mech_rec_help/img/31_7.png\",\n\t\"./mech_rec_help/img/31_8.png\": \"./app/panels/mech_rec_help/img/31_8.png\",\n\t\"./mech_rec_help/img/31_9.png\": \"./app/panels/mech_rec_help/img/31_9.png\",\n\t\"./mech_rec_help/img/32_1.png\": \"./app/panels/mech_rec_help/img/32_1.png\",\n\t\"./mech_rec_help/img/32_2.png\": \"./app/panels/mech_rec_help/img/32_2.png\",\n\t\"./mech_rec_help/img/32_3.png\": \"./app/panels/mech_rec_help/img/32_3.png\",\n\t\"./mech_rec_help/img/33_1.png\": \"./app/panels/mech_rec_help/img/33_1.png\",\n\t\"./mech_rec_help/img/33_2.png\": \"./app/panels/mech_rec_help/img/33_2.png\",\n\t\"./mech_rec_help/img/33_3.png\": \"./app/panels/mech_rec_help/img/33_3.png\",\n\t\"./mech_rec_help/img/33_4.png\": \"./app/panels/mech_rec_help/img/33_4.png\",\n\t\"./mech_rec_help/img/34_1.png\": \"./app/panels/mech_rec_help/img/34_1.png\",\n\t\"./mech_rec_help/img/34_2.png\": \"./app/panels/mech_rec_help/img/34_2.png\",\n\t\"./mech_rec_help/img/34_3.png\": \"./app/panels/mech_rec_help/img/34_3.png\",\n\t\"./mech_rec_help/img/34_4.png\": \"./app/panels/mech_rec_help/img/34_4.png\",\n\t\"./mech_rec_help/img/34_5.png\": \"./app/panels/mech_rec_help/img/34_5.png\",\n\t\"./mech_rec_help/img/34_6.png\": \"./app/panels/mech_rec_help/img/34_6.png\",\n\t\"./mech_rec_help/img/34_7.png\": \"./app/panels/mech_rec_help/img/34_7.png\",\n\t\"./mech_rec_help/img/34_8.png\": \"./app/panels/mech_rec_help/img/34_8.png\",\n\t\"./mech_rec_help/img/35_1.png\": \"./app/panels/mech_rec_help/img/35_1.png\",\n\t\"./mech_rec_help/img/3_1.png\": \"./app/panels/mech_rec_help/img/3_1.png\",\n\t\"./mech_rec_help/img/410_1.png\": \"./app/panels/mech_rec_help/img/410_1.png\",\n\t\"./mech_rec_help/img/410_2.png\": \"./app/panels/mech_rec_help/img/410_2.png\",\n\t\"./mech_rec_help/img/410_3.png\": \"./app/panels/mech_rec_help/img/410_3.png\",\n\t\"./mech_rec_help/img/410_4.png\": \"./app/panels/mech_rec_help/img/410_4.png\",\n\t\"./mech_rec_help/img/410_5.png\": \"./app/panels/mech_rec_help/img/410_5.png\",\n\t\"./mech_rec_help/img/410_6.png\": \"./app/panels/mech_rec_help/img/410_6.png\",\n\t\"./mech_rec_help/img/410_7.png\": \"./app/panels/mech_rec_help/img/410_7.png\",\n\t\"./mech_rec_help/img/411_1.png\": \"./app/panels/mech_rec_help/img/411_1.png\",\n\t\"./mech_rec_help/img/411_2.png\": \"./app/panels/mech_rec_help/img/411_2.png\",\n\t\"./mech_rec_help/img/411_3.png\": \"./app/panels/mech_rec_help/img/411_3.png\",\n\t\"./mech_rec_help/img/411_4.png\": \"./app/panels/mech_rec_help/img/411_4.png\",\n\t\"./mech_rec_help/img/412_1.png\": \"./app/panels/mech_rec_help/img/412_1.png\",\n\t\"./mech_rec_help/img/412_2.png\": \"./app/panels/mech_rec_help/img/412_2.png\",\n\t\"./mech_rec_help/img/412_3.png\": \"./app/panels/mech_rec_help/img/412_3.png\",\n\t\"./mech_rec_help/img/412_4.png\": \"./app/panels/mech_rec_help/img/412_4.png\",\n\t\"./mech_rec_help/img/413_1.png\": \"./app/panels/mech_rec_help/img/413_1.png\",\n\t\"./mech_rec_help/img/413_2.png\": \"./app/panels/mech_rec_help/img/413_2.png\",\n\t\"./mech_rec_help/img/413_3.png\": \"./app/panels/mech_rec_help/img/413_3.png\",\n\t\"./mech_rec_help/img/413_4.png\": \"./app/panels/mech_rec_help/img/413_4.png\",\n\t\"./mech_rec_help/img/413_5.png\": \"./app/panels/mech_rec_help/img/413_5.png\",\n\t\"./mech_rec_help/img/414_1.png\": \"./app/panels/mech_rec_help/img/414_1.png\",\n\t\"./mech_rec_help/img/414_2.png\": \"./app/panels/mech_rec_help/img/414_2.png\",\n\t\"./mech_rec_help/img/414_3.png\": \"./app/panels/mech_rec_help/img/414_3.png\",\n\t\"./mech_rec_help/img/41_1.png\": \"./app/panels/mech_rec_help/img/41_1.png\",\n\t\"./mech_rec_help/img/41_10.png\": \"./app/panels/mech_rec_help/img/41_10.png\",\n\t\"./mech_rec_help/img/41_11.png\": \"./app/panels/mech_rec_help/img/41_11.png\",\n\t\"./mech_rec_help/img/41_12.png\": \"./app/panels/mech_rec_help/img/41_12.png\",\n\t\"./mech_rec_help/img/41_2.png\": \"./app/panels/mech_rec_help/img/41_2.png\",\n\t\"./mech_rec_help/img/41_3.png\": \"./app/panels/mech_rec_help/img/41_3.png\",\n\t\"./mech_rec_help/img/41_4.png\": \"./app/panels/mech_rec_help/img/41_4.png\",\n\t\"./mech_rec_help/img/41_5.png\": \"./app/panels/mech_rec_help/img/41_5.png\",\n\t\"./mech_rec_help/img/41_6.png\": \"./app/panels/mech_rec_help/img/41_6.png\",\n\t\"./mech_rec_help/img/41_7.png\": \"./app/panels/mech_rec_help/img/41_7.png\",\n\t\"./mech_rec_help/img/41_8.png\": \"./app/panels/mech_rec_help/img/41_8.png\",\n\t\"./mech_rec_help/img/41_9.png\": \"./app/panels/mech_rec_help/img/41_9.png\",\n\t\"./mech_rec_help/img/42_1.png\": \"./app/panels/mech_rec_help/img/42_1.png\",\n\t\"./mech_rec_help/img/42_2.png\": \"./app/panels/mech_rec_help/img/42_2.png\",\n\t\"./mech_rec_help/img/42_3.png\": \"./app/panels/mech_rec_help/img/42_3.png\",\n\t\"./mech_rec_help/img/42_4.png\": \"./app/panels/mech_rec_help/img/42_4.png\",\n\t\"./mech_rec_help/img/43_1.png\": \"./app/panels/mech_rec_help/img/43_1.png\",\n\t\"./mech_rec_help/img/43_2.png\": \"./app/panels/mech_rec_help/img/43_2.png\",\n\t\"./mech_rec_help/img/43_3.png\": \"./app/panels/mech_rec_help/img/43_3.png\",\n\t\"./mech_rec_help/img/43_4.png\": \"./app/panels/mech_rec_help/img/43_4.png\",\n\t\"./mech_rec_help/img/43_5.png\": \"./app/panels/mech_rec_help/img/43_5.png\",\n\t\"./mech_rec_help/img/43_6.png\": \"./app/panels/mech_rec_help/img/43_6.png\",\n\t\"./mech_rec_help/img/43_7.png\": \"./app/panels/mech_rec_help/img/43_7.png\",\n\t\"./mech_rec_help/img/43_8.png\": \"./app/panels/mech_rec_help/img/43_8.png\",\n\t\"./mech_rec_help/img/44_1.png\": \"./app/panels/mech_rec_help/img/44_1.png\",\n\t\"./mech_rec_help/img/44_10.png\": \"./app/panels/mech_rec_help/img/44_10.png\",\n\t\"./mech_rec_help/img/44_2.png\": \"./app/panels/mech_rec_help/img/44_2.png\",\n\t\"./mech_rec_help/img/44_3.png\": \"./app/panels/mech_rec_help/img/44_3.png\",\n\t\"./mech_rec_help/img/44_4.png\": \"./app/panels/mech_rec_help/img/44_4.png\",\n\t\"./mech_rec_help/img/44_5.png\": \"./app/panels/mech_rec_help/img/44_5.png\",\n\t\"./mech_rec_help/img/44_6.png\": \"./app/panels/mech_rec_help/img/44_6.png\",\n\t\"./mech_rec_help/img/44_7.png\": \"./app/panels/mech_rec_help/img/44_7.png\",\n\t\"./mech_rec_help/img/44_8.png\": \"./app/panels/mech_rec_help/img/44_8.png\",\n\t\"./mech_rec_help/img/44_9.png\": \"./app/panels/mech_rec_help/img/44_9.png\",\n\t\"./mech_rec_help/img/45_1.png\": \"./app/panels/mech_rec_help/img/45_1.png\",\n\t\"./mech_rec_help/img/45_10.png\": \"./app/panels/mech_rec_help/img/45_10.png\",\n\t\"./mech_rec_help/img/45_2.png\": \"./app/panels/mech_rec_help/img/45_2.png\",\n\t\"./mech_rec_help/img/45_3.png\": \"./app/panels/mech_rec_help/img/45_3.png\",\n\t\"./mech_rec_help/img/45_4.png\": \"./app/panels/mech_rec_help/img/45_4.png\",\n\t\"./mech_rec_help/img/45_5.png\": \"./app/panels/mech_rec_help/img/45_5.png\",\n\t\"./mech_rec_help/img/45_6.png\": \"./app/panels/mech_rec_help/img/45_6.png\",\n\t\"./mech_rec_help/img/45_7.png\": \"./app/panels/mech_rec_help/img/45_7.png\",\n\t\"./mech_rec_help/img/45_8.png\": \"./app/panels/mech_rec_help/img/45_8.png\",\n\t\"./mech_rec_help/img/45_9.png\": \"./app/panels/mech_rec_help/img/45_9.png\",\n\t\"./mech_rec_help/img/46_1.png\": \"./app/panels/mech_rec_help/img/46_1.png\",\n\t\"./mech_rec_help/img/46_2.png\": \"./app/panels/mech_rec_help/img/46_2.png\",\n\t\"./mech_rec_help/img/46_3.png\": \"./app/panels/mech_rec_help/img/46_3.png\",\n\t\"./mech_rec_help/img/46_4.png\": \"./app/panels/mech_rec_help/img/46_4.png\",\n\t\"./mech_rec_help/img/46_5.png\": \"./app/panels/mech_rec_help/img/46_5.png\",\n\t\"./mech_rec_help/img/46_6.png\": \"./app/panels/mech_rec_help/img/46_6.png\",\n\t\"./mech_rec_help/img/47_1.png\": \"./app/panels/mech_rec_help/img/47_1.png\",\n\t\"./mech_rec_help/img/47_10.png\": \"./app/panels/mech_rec_help/img/47_10.png\",\n\t\"./mech_rec_help/img/47_11.png\": \"./app/panels/mech_rec_help/img/47_11.png\",\n\t\"./mech_rec_help/img/47_12.png\": \"./app/panels/mech_rec_help/img/47_12.png\",\n\t\"./mech_rec_help/img/47_2.png\": \"./app/panels/mech_rec_help/img/47_2.png\",\n\t\"./mech_rec_help/img/47_3.png\": \"./app/panels/mech_rec_help/img/47_3.png\",\n\t\"./mech_rec_help/img/47_4.png\": \"./app/panels/mech_rec_help/img/47_4.png\",\n\t\"./mech_rec_help/img/47_5.png\": \"./app/panels/mech_rec_help/img/47_5.png\",\n\t\"./mech_rec_help/img/47_6.png\": \"./app/panels/mech_rec_help/img/47_6.png\",\n\t\"./mech_rec_help/img/47_7.png\": \"./app/panels/mech_rec_help/img/47_7.png\",\n\t\"./mech_rec_help/img/47_8.png\": \"./app/panels/mech_rec_help/img/47_8.png\",\n\t\"./mech_rec_help/img/47_9.png\": \"./app/panels/mech_rec_help/img/47_9.png\",\n\t\"./mech_rec_help/img/48_1.png\": \"./app/panels/mech_rec_help/img/48_1.png\",\n\t\"./mech_rec_help/img/48_2.png\": \"./app/panels/mech_rec_help/img/48_2.png\",\n\t\"./mech_rec_help/img/48_3.png\": \"./app/panels/mech_rec_help/img/48_3.png\",\n\t\"./mech_rec_help/img/48_4.png\": \"./app/panels/mech_rec_help/img/48_4.png\",\n\t\"./mech_rec_help/img/49_1.png\": \"./app/panels/mech_rec_help/img/49_1.png\",\n\t\"./mech_rec_help/img/49_2.png\": \"./app/panels/mech_rec_help/img/49_2.png\",\n\t\"./mech_rec_help/img/49_3.png\": \"./app/panels/mech_rec_help/img/49_3.png\",\n\t\"./mech_rec_help/img/add1_1.png\": \"./app/panels/mech_rec_help/img/add1_1.png\",\n\t\"./mech_rec_help/img/add1_2.png\": \"./app/panels/mech_rec_help/img/add1_2.png\",\n\t\"./mech_rec_help/img/add1_3.png\": \"./app/panels/mech_rec_help/img/add1_3.png\",\n\t\"./mech_rec_help/img/add1_4.png\": \"./app/panels/mech_rec_help/img/add1_4.png\",\n\t\"./mech_rec_help/img/add1_5.png\": \"./app/panels/mech_rec_help/img/add1_5.png\",\n\t\"./mech_rec_help/img/add1_6.png\": \"./app/panels/mech_rec_help/img/add1_6.png\",\n\t\"./mech_rec_help/img/add1_7.png\": \"./app/panels/mech_rec_help/img/add1_7.png\",\n\t\"./mech_rec_help/img/add1_8.png\": \"./app/panels/mech_rec_help/img/add1_8.png\",\n\t\"./mech_rec_help/img/add1_9.png\": \"./app/panels/mech_rec_help/img/add1_9.png\",\n\t\"./mech_rec_help/index\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/index.js\": \"./app/panels/mech_rec_help/index.js\",\n\t\"./mech_rec_help/mech_rec_help\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./mech_rec_help/mech_rec_help.js\": \"./app/panels/mech_rec_help/mech_rec_help.js\",\n\t\"./panels_editor\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/component_editor\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_editor.js\": \"./app/panels/panels_editor/component_editor.js\",\n\t\"./panels_editor/component_view\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/component_view.js\": \"./app/panels/panels_editor/component_view.js\",\n\t\"./panels_editor/components/chart/editor\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/editor.js\": \"./app/panels/panels_editor/components/chart/editor.js\",\n\t\"./panels_editor/components/chart/view\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/chart/view.js\": \"./app/panels/panels_editor/components/chart/view.js\",\n\t\"./panels_editor/components/components\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components.js\": \"./app/panels/panels_editor/components/components.js\",\n\t\"./panels_editor/components/components_hooks\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/components_hooks.js\": \"./app/panels/panels_editor/components/components_hooks.js\",\n\t\"./panels_editor/components/form/common\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/common.js\": \"./app/panels/panels_editor/components/form/common.js\",\n\t\"./panels_editor/components/form/editor\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/editor.js\": \"./app/panels/panels_editor/components/form/editor.js\",\n\t\"./panels_editor/components/form/view\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/form/view.js\": \"./app/panels/panels_editor/components/form/view.js\",\n\t\"./panels_editor/components/indicator/editor\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/editor.js\": \"./app/panels/panels_editor/components/indicator/editor.js\",\n\t\"./panels_editor/components/indicator/view\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/indicator/view.js\": \"./app/panels/panels_editor/components/indicator/view.js\",\n\t\"./panels_editor/components/table/editor\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/editor.js\": \"./app/panels/panels_editor/components/table/editor.js\",\n\t\"./panels_editor/components/table/view\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/components/table/view.js\": \"./app/panels/panels_editor/components/table/view.js\",\n\t\"./panels_editor/index\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/index.js\": \"./app/panels/panels_editor/index.js\",\n\t\"./panels_editor/layout_item\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/layout_item.js\": \"./app/panels/panels_editor/layout_item.js\",\n\t\"./panels_editor/panels_editor\": \"./app/panels/panels_editor/panels_editor.js\",\n\t\"./panels_editor/panels_editor.css\": \"./app/panels/panels_editor/panels_editor.css\",\n\t\"./panels_editor/panels_editor.js\": \"./app/panels/panels_editor/panels_editor.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/21_1.png\": \"./app/panels/prj_help/img/21_1.png\",\n\t\"./prj_help/img/21_2.png\": \"./app/panels/prj_help/img/21_2.png\",\n\t\"./prj_help/img/21_3.png\": \"./app/panels/prj_help/img/21_3.png\",\n\t\"./prj_help/img/21_4.png\": \"./app/panels/prj_help/img/21_4.png\",\n\t\"./prj_help/img/21_5.png\": \"./app/panels/prj_help/img/21_5.png\",\n\t\"./prj_help/img/22_1.png\": \"./app/panels/prj_help/img/22_1.png\",\n\t\"./prj_help/img/22_2.png\": \"./app/panels/prj_help/img/22_2.png\",\n\t\"./prj_help/img/22_3.png\": \"./app/panels/prj_help/img/22_3.png\",\n\t\"./prj_help/img/23_1.png\": \"./app/panels/prj_help/img/23_1.png\",\n\t\"./prj_help/img/23_2.png\": \"./app/panels/prj_help/img/23_2.png\",\n\t\"./prj_help/img/24_1.png\": \"./app/panels/prj_help/img/24_1.png\",\n\t\"./prj_help/img/24_2.png\": \"./app/panels/prj_help/img/24_2.png\",\n\t\"./prj_help/img/24_3.png\": \"./app/panels/prj_help/img/24_3.png\",\n\t\"./prj_help/img/24_4.png\": \"./app/panels/prj_help/img/24_4.png\",\n\t\"./prj_help/img/24_5.png\": \"./app/panels/prj_help/img/24_5.png\",\n\t\"./prj_help/img/3_1.png\": \"./app/panels/prj_help/img/3_1.png\",\n\t\"./prj_help/img/3_2.png\": \"./app/panels/prj_help/img/3_2.png\",\n\t\"./prj_help/img/3_3.png\": \"./app/panels/prj_help/img/3_3.png\",\n\t\"./prj_help/img/3_4.png\": \"./app/panels/prj_help/img/3_4.png\",\n\t\"./prj_help/img/3_5.png\": \"./app/panels/prj_help/img/3_5.png\",\n\t\"./prj_help/img/3_6.png\": \"./app/panels/prj_help/img/3_6.png\",\n\t\"./prj_help/img/41_1.png\": \"./app/panels/prj_help/img/41_1.png\",\n\t\"./prj_help/img/41_2.png\": \"./app/panels/prj_help/img/41_2.png\",\n\t\"./prj_help/img/42_1.png\": \"./app/panels/prj_help/img/42_1.png\",\n\t\"./prj_help/img/42_2.png\": \"./app/panels/prj_help/img/42_2.png\",\n\t\"./prj_help/img/43_1.png\": \"./app/panels/prj_help/img/43_1.png\",\n\t\"./prj_help/img/43_2.png\": \"./app/panels/prj_help/img/43_2.png\",\n\t\"./prj_help/img/43_3.png\": \"./app/panels/prj_help/img/43_3.png\",\n\t\"./prj_help/img/43_4.png\": \"./app/panels/prj_help/img/43_4.png\",\n\t\"./prj_help/img/44_1.png\": \"./app/panels/prj_help/img/44_1.png\",\n\t\"./prj_help/img/44_2.png\": \"./app/panels/prj_help/img/44_2.png\",\n\t\"./prj_help/img/44_3.png\": \"./app/panels/prj_help/img/44_3.png\",\n\t\"./prj_help/img/44_4.png\": \"./app/panels/prj_help/img/44_4.png\",\n\t\"./prj_help/img/45_1.png\": \"./app/panels/prj_help/img/45_1.png\",\n\t\"./prj_help/img/46_1.png\": \"./app/panels/prj_help/img/46_1.png\",\n\t\"./prj_help/img/47_1.png\": \"./app/panels/prj_help/img/47_1.png\",\n\t\"./prj_help/img/71_1.png\": \"./app/panels/prj_help/img/71_1.png\",\n\t\"./prj_help/img/72_1.png\": \"./app/panels/prj_help/img/72_1.png\",\n\t\"./prj_help/img/72_2.png\": \"./app/panels/prj_help/img/72_2.png\",\n\t\"./prj_help/img/72_3.png\": \"./app/panels/prj_help/img/72_3.png\",\n\t\"./prj_help/img/74_1.png\": \"./app/panels/prj_help/img/74_1.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_info\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/filter\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter.js\": \"./app/panels/prj_info/filter.js\",\n\t\"./prj_info/filter_dialog\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/filter_dialog.js\": \"./app/panels/prj_info/filter_dialog.js\",\n\t\"./prj_info/index\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/index.js\": \"./app/panels/prj_info/index.js\",\n\t\"./prj_info/layouts\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/layouts.js\": \"./app/panels/prj_info/layouts.js\",\n\t\"./prj_info/prj_info\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/prj_info.js\": \"./app/panels/prj_info/prj_info.js\",\n\t\"./prj_info/projects\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects.js\": \"./app/panels/prj_info/projects.js\",\n\t\"./prj_info/projects_hooks\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_hooks.js\": \"./app/panels/prj_info/projects_hooks.js\",\n\t\"./prj_info/projects_layouts\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/projects_layouts.js\": \"./app/panels/prj_info/projects_layouts.js\",\n\t\"./prj_info/stage_detail\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail.js\": \"./app/panels/prj_info/stage_detail.js\",\n\t\"./prj_info/stage_detail_hooks\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_hooks.js\": \"./app/panels/prj_info/stage_detail_hooks.js\",\n\t\"./prj_info/stage_detail_layouts\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stage_detail_layouts.js\": \"./app/panels/prj_info/stage_detail_layouts.js\",\n\t\"./prj_info/stages\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages.js\": \"./app/panels/prj_info/stages.js\",\n\t\"./prj_info/stages_hooks\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_hooks.js\": \"./app/panels/prj_info/stages_hooks.js\",\n\t\"./prj_info/stages_layouts\": \"./app/panels/prj_info/stages_layouts.js\",\n\t\"./prj_info/stages_layouts.js\": \"./app/panels/prj_info/stages_layouts.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\"./query_editor\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/common\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/common.js\": \"./app/panels/query_editor/common.js\",\n\t\"./query_editor/components/argument/argument\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/argument/argument.js\": \"./app/panels/query_editor/components/argument/argument.js\",\n\t\"./query_editor/components/attribute/attribute\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/attribute/attribute.js\": \"./app/panels/query_editor/components/attribute/attribute.js\",\n\t\"./query_editor/components/entity/entity\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/entity/entity.js\": \"./app/panels/query_editor/components/entity/entity.js\",\n\t\"./query_editor/components/inspector/inspector\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector/inspector.js\": \"./app/panels/query_editor/components/inspector/inspector.js\",\n\t\"./query_editor/components/inspector_query_area/hooks\": \"./app/panels/query_editor/components/inspector_query_area/hooks.js\",\n\t\"./query_editor/components/inspector_query_area/hooks.js\": \"./app/panels/query_editor/components/inspector_query_area/hooks.js\",\n\t\"./query_editor/components/inspector_query_area/inspector_query_area\": \"./app/panels/query_editor/components/inspector_query_area/inspector_query_area.js\",\n\t\"./query_editor/components/inspector_query_area/inspector_query_area.js\": \"./app/panels/query_editor/components/inspector_query_area/inspector_query_area.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/arg_iu_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/args_list\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/args_list.js\": \"./app/panels/query_editor/components/inspector_query_args/args_list.js\",\n\t\"./query_editor/components/inspector_query_args/hooks\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/hooks.js\": \"./app/panels/query_editor/components/inspector_query_args/hooks.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/inspector_query_args.js\": \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_args/query_args_dialog.js\": \"./app/panels/query_editor/components/inspector_query_args/query_args_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_component_select_button.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/cond_operation_buttons.js\": \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/hooks.js\": \"./app/panels/query_editor/components/inspector_query_cond/hooks.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/inspector_query_cond.js\": \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_cond/query_cond_dialog.js\": \"./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attr_setup_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/attr_setup_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/attrs_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/attrs_list.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_add_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_add_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/entity_attrs_dialog.js\": \"./app/panels/query_editor/components/inspector_query_ents/entity_attrs_dialog.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/ents_list.js\": \"./app/panels/query_editor/components/inspector_query_ents/ents_list.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/hooks.js\": \"./app/panels/query_editor/components/inspector_query_ents/hooks.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_ents/inspector_query_ents.js\": \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/hooks.js\": \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/inspector_query_rls/inspector_query_rls.js\": \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\",\n\t\"./query_editor/components/queries_manager/hooks\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/hooks.js\": \"./app/panels/query_editor/components/queries_manager/hooks.js\",\n\t\"./query_editor/components/queries_manager/queries_list\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_list.js\": \"./app/panels/query_editor/components/queries_manager/queries_list.js\",\n\t\"./query_editor/components/queries_manager/queries_manager\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/queries_manager.js\": \"./app/panels/query_editor/components/queries_manager/queries_manager.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/queries_manager/query_iu_dialog.js\": \"./app/panels/query_editor/components/queries_manager/query_iu_dialog.js\",\n\t\"./query_editor/components/query_diagram/query_diagram\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/query_diagram/query_diagram.css\": \"./app/panels/query_editor/components/query_diagram/query_diagram.css\",\n\t\"./query_editor/components/query_diagram/query_diagram.js\": \"./app/panels/query_editor/components/query_diagram/query_diagram.js\",\n\t\"./query_editor/components/relation/relation\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/components/relation/relation.js\": \"./app/panels/query_editor/components/relation/relation.js\",\n\t\"./query_editor/hooks\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/hooks.js\": \"./app/panels/query_editor/hooks.js\",\n\t\"./query_editor/index\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/index.js\": \"./app/panels/query_editor/index.js\",\n\t\"./query_editor/query_editor\": \"./app/panels/query_editor/query_editor.js\",\n\t\"./query_editor/query_editor.js\": \"./app/panels/query_editor/query_editor.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/common\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/common.js\": \"./app/panels/rrp_conf_editor/common.js\",\n\t\"./rrp_conf_editor/components/action_message\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/action_message.js\": \"./app/panels/rrp_conf_editor/components/action_message.js\",\n\t\"./rrp_conf_editor/components/dialog_help\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_help.js\": \"./app/panels/rrp_conf_editor/components/dialog_help.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_mark_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_mark_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_order\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_order.js\": \"./app/panels/rrp_conf_editor/components/dialog_order.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/dialog_section_iu.js\": \"./app/panels/rrp_conf_editor/components/dialog_section_iu.js\",\n\t\"./rrp_conf_editor/components/mark_card\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card.js\": \"./app/panels/rrp_conf_editor/components/mark_card.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_card_toolbar.js\": \"./app/panels/rrp_conf_editor/components/mark_card_toolbar.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/mark_cn_list.js\": \"./app/panels/rrp_conf_editor/components/mark_cn_list.js\",\n\t\"./rrp_conf_editor/components/marks\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks.js\": \"./app/panels/rrp_conf_editor/components/marks.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/marks_toolbar.js\": \"./app/panels/rrp_conf_editor/components/marks_toolbar.js\",\n\t\"./rrp_conf_editor/components/section\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section.js\": \"./app/panels/rrp_conf_editor/components/section.js\",\n\t\"./rrp_conf_editor/components/section_tab\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/section_tab.js\": \"./app/panels/rrp_conf_editor/components/section_tab.js\",\n\t\"./rrp_conf_editor/components/sections\": \"./app/panels/rrp_conf_editor/components/sections.js\",\n\t\"./rrp_conf_editor/components/sections.js\": \"./app/panels/rrp_conf_editor/components/sections.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/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\"./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/cyclogram\": \"./app/panels/samples/cyclogram.js\",\n\t\"./samples/cyclogram.js\": \"./app/panels/samples/cyclogram.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/indicator\": \"./app/panels/samples/indicator.js\",\n\t\"./samples/indicator.js\": \"./app/panels/samples/indicator.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_^\\.\\/.*$?"); /***/ }), @@ -466,7 +466,7 @@ eval("var map = {\n\t\"./clnt_task_board\": \"./app/panels/clnt_task_board/index /***/ ((__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 */ ClntTaskBoard: () => (/* binding */ ClntTaskBoard)\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 react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-beautiful-dnd */ \"./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.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 _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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _components_status_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/status_card.js */ \"./app/panels/clnt_task_board/components/status_card.js\");\n/* harmony import */ var _task_dialog_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_dialog.js */ \"./app/panels/clnt_task_board/task_dialog.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filter.js */ \"./app/panels/clnt_task_board/filter.js\");\n/* harmony import */ var _hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/hooks.js */ \"./app/panels/clnt_task_board/hooks/hooks.js\");\n/* harmony import */ var _hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/tasks_hooks.js */ \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\");\n/* harmony import */ var _hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/filter_hooks.js */ \"./app/panels/clnt_task_board/hooks/filter_hooks.js\");\n/* harmony import */ var _components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/note_dialog.js */ \"./app/panels/clnt_task_board/components/note_dialog.js\");\n/* harmony import */ var _components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/settings_dialog.js */ \"./app/panels/clnt_task_board/components/settings_dialog.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Панель мониторинга: Корневая панель доски задач\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Работа с drag&drop\n //Интерфейсные компоненты\n\n //Компонент формы события\n //Компонент фильтров\n //Вспомогательные хуки\n //Хук событий\n //Вспомогательные хуки фильтра\n //Диалог примечания\n //Диалог дополнительных настроек\n //Вспомогательные функции\n //Общие стили\n //Заголовок страницы\n\n//---------\n//Константы\n//---------\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n width: \"100%\",\n padding: 0\n },\n BOX_FILTER: {\n display: \"flex\",\n alignItems: \"center\"\n },\n ICON_BUTTON_SETTINGS: {\n marginLeft: \"auto\"\n },\n STACK_STATUSES: {\n maxWidth: \"99vw\",\n paddingBottom: \"5px\",\n overflowX: \"auto\",\n ..._styles__WEBPACK_IMPORTED_MODULE_10__.COMMON_STYLES.SCROLL\n },\n BOX_STATUSES: {\n position: \"fixed\",\n left: \"8px\",\n top: `calc(${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__.APP_BAR_HEIGHT} + ${FILTER_HEIGHT})`\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель доски задач\nconst ClntTaskBoard = () => {\n //Состояние фильтров\n const [filters, handleFiltersChange] = (0,_hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__.useFilters)();\n\n //Состояние текущего загруженного фильтра\n const [filterTypeLoaded, setFilterTypeLoaded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(filters.values.sType);\n\n //Состояние вспомогательных диалогов\n const [dialogsState, setDialogsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n filterDialogIsOpen: filters.isSetByUser,\n settingsDialogIsOpen: false,\n noteDialog: {\n isOpen: false,\n callback: null\n },\n taskDialogIsOpen: false\n });\n\n //Состояние сортировок\n const [orders, setOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Состояние дополнительных данных\n const [extraData, setExtraData, handleDocLinksLoad] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useExtraData)(filters.values.sType);\n\n //Состояние статусов событий\n const [statuses, statusesState, setStatuses, setStatusesState] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useStatuses)(filters.values.sType);\n\n //Состояние пользовательских настроек заливки событий\n const [colorRules, setColorRules] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useColorRules)();\n\n //Состояние событий\n const [tasks, setTasks, onDragEnd] = (0,_hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__.useTasks)(filters.values, orders);\n\n //Состояние доступных маршрутов события\n const [availableRoutes, setAvailableRoutes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n source: \"\",\n routes: []\n });\n\n //Состояние перетаскиваемого события\n const [dragItem, setDragItem] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n type: \"\",\n status: \"\"\n });\n\n //При открытии/закрытии диалога фильтра\n const handleFilterOpen = isOpen => {\n setDialogsState(pv => ({\n ...pv,\n filterDialogIsOpen: isOpen\n }));\n };\n\n //При открытии/закрытии диалога дополнительных настроек\n const handleSettingsOpen = () => setDialogsState(pv => ({\n ...pv,\n settingsDialogIsOpen: !pv.settingsDialogIsOpen\n }));\n\n //При открытии/закрытии диалога примечания\n const handleNoteOpen = (cb = null) => {\n setDialogsState(pv => ({\n ...pv,\n noteDialog: {\n isOpen: !dialogsState.noteDialog.isOpen,\n callback: cb ? v => cb(v) : null\n }\n }));\n };\n\n //При открытии/закрытии диалога события\n const handleTaskDialogOpen = () => setDialogsState(pv => ({\n ...pv,\n taskDialogIsOpen: !dialogsState.taskDialogIsOpen\n }));\n\n //При необходимости обновить дополнительные данные\n const handleExtraDataReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setExtraData(pv => ({\n ...pv,\n reload: true\n }));\n }, [setExtraData]);\n\n //При необходимости обновить информацию о событиях\n const handleTasksReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((bAccountsReload = true) => {\n setTasks(pv => ({\n ...pv,\n reload: true,\n accountsReload: bAccountsReload\n }));\n }, [setTasks]);\n\n //При необходимости обновить состояние статусов\n const handleStatusesStateReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setStatusesState(pv => ({\n ...pv,\n reload: true,\n sorted: false\n }));\n }, [setStatusesState]);\n\n //При изменении дополнительных настроек\n const handleSettingsChange = (newSettings, statusesState) => {\n setColorRules(pv => ({\n ...pv,\n selectedColorRule: newSettings.selectedColorRule\n }));\n setStatusesState({\n ...statusesState,\n sorted: false\n });\n };\n\n //При изменении цвета карточки статуса\n const handleSettingStatusColorChange = (changedStatus, newColor) => {\n //Считываем массив статусов\n let newStatuses = [...statuses];\n //Изменяем цвет нужного статуса\n newStatuses.find(status => status.ID === changedStatus.ID).color = newColor;\n //Обновляем состояние\n setStatuses([...newStatuses]);\n };\n\n //При изменении сортировки\n const handleOrderChanged = columnName => {\n //Копируем состояние сортировки\n let newOrders = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_9__.deepCopyObject)(orders);\n //Находим сортируемую колонку\n const orderedColumn = newOrders.find(o => o.name == columnName);\n //Определяем направление сортировки\n const newDirection = orderedColumn?.direction == \"ASC\" ? \"DESC\" : orderedColumn?.direction == \"DESC\" ? null : \"ASC\";\n //Если сортировка отключается - очищаем информацию о сортировке\n if (newDirection == null && orderedColumn) newOrders.splice(newOrders.indexOf(orderedColumn), 1);\n //Если сортировки не было - устанавливаем\n if (newDirection != null && !orderedColumn) newOrders.push({\n name: columnName,\n direction: newDirection\n });\n //Если сортировка была и не отключается - изменяем\n if (newDirection != null && orderedColumn) orderedColumn.direction = newDirection;\n //Устанавливаем новую сортировку\n setOrders(newOrders);\n };\n\n //При необходимости очистки доступных маршрутов события\n const handleAvailableRoutesStateClear = () => {\n setAvailableRoutes({\n source: \"\",\n routes: []\n });\n };\n\n //Обработка захвата перетаскиваемого объекта\n const handleDragItemChange = (filtersType, statusCode) => setDragItem({\n type: filtersType,\n status: statusCode\n });\n\n //Обработка очистки перетаскиваемого объекта\n const handleDragItemClear = () => {\n setDragItem({\n type: \"\",\n status: \"\"\n });\n };\n\n //Проверка доступности карточки события\n const isCardAvailable = code => {\n return availableRoutes.source === code || availableRoutes.routes.find(r => r.SDESTINATION === code) || !availableRoutes.source ? true : false;\n };\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменился тип\n if (filters.loaded && filters.values.sType) {\n //Если тип события изменился\n if (filterTypeLoaded !== filters.values.sType) {\n //Обновляем информацию о дополнительных данных\n handleExtraDataReload();\n //Обновляем информацию о статусах\n handleStatusesStateReload();\n //Обновляем текущий загруженный тип события\n setFilterTypeLoaded(filters.values.sType);\n }\n //Обновляем информацию о событиях\n handleTasksReload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters.loaded, filters.values]);\n\n //При изменении сортировки\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если есть все данные для загрузки событий\n if (filters.loaded && filters.values.sType) {\n //Обновляем информацию о событиях без обновления контрагентов\n handleTasksReload(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [orders]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CONTAINER\n }, dialogsState.settingsDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__.SettingsDialog, {\n initial: {\n colorRules: colorRules,\n statusesState: statusesState\n },\n onSettingsChange: handleSettingsChange,\n onClose: handleSettingsOpen\n }) : null, dialogsState.taskDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_dialog_js__WEBPACK_IMPORTED_MODULE_2__.TaskDialog, {\n taskType: dragItem.type,\n taskStatus: dragItem.status,\n onTasksReload: () => handleTasksReload(true),\n onClose: () => {\n handleTaskDialogOpen();\n handleDragItemClear();\n }\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_FILTER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_js__WEBPACK_IMPORTED_MODULE_3__.Filter, {\n isFilterDialogOpen: dialogsState.filterDialogIsOpen,\n filter: filters.values,\n docLinks: extraData.docLinks,\n selectedDocLink: filters.values.sDocLink ? extraData.docLinks.find(d => d.NRN === filters.values.sDocLink) : null,\n onFilterChange: handleFiltersChange,\n onDocLinksLoad: handleDocLinksLoad,\n onFilterOpen: () => handleFilterOpen(true),\n onFilterClose: () => handleFilterOpen(false),\n onTasksReload: handleTasksReload,\n orders: orders,\n onOrderChanged: handleOrderChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n title: \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\",\n onClick: handleSettingsOpen,\n sx: STYLES.ICON_BUTTON_SETTINGS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, \"settings\"))), dialogsState.noteDialog.isOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__.NoteDialog, {\n noteTypes: extraData.noteTypes,\n onCallback: note => dialogsState.noteDialog.callback(note),\n onClose: handleNoteOpen\n }) : null, filters.loaded && filters.values.sType && extraData.dataLoaded && tasks.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.DragDropContext, {\n onDragStart: path => {\n //Поиск кода текущего статуса задачи\n let sourceCode = statuses.find(status => status.ID == path.source.droppableId).SEVNSTAT_CODE;\n //Устанавливаем доступные маршруты события\n setAvailableRoutes({\n source: sourceCode,\n routes: [...extraData.evRoutes.filter(route => route.SSOURCE === sourceCode)]\n });\n },\n onDragEnd: path => {\n //Если есть статус назначения\n if (path.destination) {\n //Определяем мнемокод статуса назначения\n let destCode = statuses.find(status => status.ID == path.destination.droppableId).SEVNSTAT_CODE;\n //Переносим событие\n onDragEnd({\n path: path,\n eventPoints: extraData.evPoints,\n openNoteDialog: handleNoteOpen,\n destCode: destCode\n });\n }\n //Очищаем информацию о доступных маршрутах события\n handleAvailableRoutesStateClear();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_STATUSES\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n droppableId: \"Statuses\",\n type: \"droppableTask\"\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\",\n spacing: 2,\n sx: STYLES.STACK_STATUSES\n }, statusesState.sorted ? statuses.map((status, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n isDropDisabled: !isCardAvailable(status.SEVNSTAT_CODE),\n droppableId: status.ID.toString()\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_status_card_js__WEBPACK_IMPORTED_MODULE_1__.StatusCard, {\n tasks: tasks,\n status: status,\n statusTitle: status[statusesState.attr] || status.SEVNSTAT_NAME,\n colorRules: colorRules,\n extraData: extraData,\n filtersType: filters.values.sType,\n isCardAvailable: isCardAvailable,\n onTasksReload: handleTasksReload,\n onDragItemChange: handleDragItemChange,\n onTaskDialogOpen: handleTaskDialogOpen,\n onNoteDialogOpen: handleNoteOpen,\n onStatusColorChange: handleSettingStatusColorChange,\n placeholder: provided.placeholder\n }))))) : null), provided.placeholder)))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/clnt_task_board.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ClntTaskBoard: () => (/* binding */ ClntTaskBoard)\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 react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-beautiful-dnd */ \"./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.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 _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/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _components_status_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/status_card.js */ \"./app/panels/clnt_task_board/components/status_card.js\");\n/* harmony import */ var _task_dialog_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./task_dialog.js */ \"./app/panels/clnt_task_board/task_dialog.js\");\n/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./filter.js */ \"./app/panels/clnt_task_board/filter.js\");\n/* harmony import */ var _hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./hooks/hooks.js */ \"./app/panels/clnt_task_board/hooks/hooks.js\");\n/* harmony import */ var _hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hooks/tasks_hooks.js */ \"./app/panels/clnt_task_board/hooks/tasks_hooks.js\");\n/* harmony import */ var _hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./hooks/filter_hooks.js */ \"./app/panels/clnt_task_board/hooks/filter_hooks.js\");\n/* harmony import */ var _components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/note_dialog.js */ \"./app/panels/clnt_task_board/components/note_dialog.js\");\n/* harmony import */ var _components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/settings_dialog.js */ \"./app/panels/clnt_task_board/components/settings_dialog.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Панель мониторинга: Корневая панель доски задач\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Работа с drag&drop\n //Интерфейсные компоненты\n\n //Компонент формы события\n //Компонент фильтров\n //Вспомогательные хуки\n //Хук событий\n //Вспомогательные хуки фильтра\n //Диалог примечания\n //Диалог дополнительных настроек\n //Вспомогательные функции\n //Общие стили\n //Заголовок страницы\n\n//---------\n//Константы\n//---------\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n width: \"100%\",\n padding: 0\n },\n BOX_FILTER: {\n display: \"flex\",\n alignItems: \"center\"\n },\n ICON_BUTTON_SETTINGS: {\n marginLeft: \"auto\"\n },\n STACK_STATUSES: {\n maxWidth: \"99vw\",\n paddingBottom: \"5px\",\n overflowX: \"auto\",\n ..._styles__WEBPACK_IMPORTED_MODULE_10__.COMMON_STYLES.SCROLL\n },\n BOX_STATUSES: {\n position: \"fixed\",\n left: \"8px\",\n top: `calc(${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_11__.APP_BAR_HEIGHT} + ${FILTER_HEIGHT})`\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневая панель доски задач\nconst ClntTaskBoard = () => {\n //Состояние фильтров\n const [filters, handleFiltersChange] = (0,_hooks_filter_hooks_js__WEBPACK_IMPORTED_MODULE_6__.useFilters)();\n\n //Состояние текущего загруженного фильтра\n const [filterTypeLoaded, setFilterTypeLoaded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(filters.values.sType);\n\n //Состояние вспомогательных диалогов\n const [dialogsState, setDialogsState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n filterDialogIsOpen: filters.isSetByUser,\n settingsDialogIsOpen: false,\n noteDialog: {\n isOpen: false,\n callback: null\n },\n taskDialogIsOpen: false\n });\n\n //Состояние сортировок\n const [orders, setOrders] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);\n\n //Состояние дополнительных данных\n const [extraData, setExtraData, handleDocLinksLoad] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useExtraData)(filters.values.sType);\n\n //Состояние статусов событий\n const [statuses, statusesState, setStatuses, setStatusesState] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useStatuses)(filters.values.sType);\n\n //Состояние пользовательских настроек заливки событий\n const [colorRules, setColorRules] = (0,_hooks_hooks_js__WEBPACK_IMPORTED_MODULE_4__.useColorRules)();\n\n //Состояние событий\n const [tasks, setTasks, onDragEnd] = (0,_hooks_tasks_hooks_js__WEBPACK_IMPORTED_MODULE_5__.useTasks)(filters.values, orders);\n\n //Состояние доступных маршрутов события\n const [availableRoutes, setAvailableRoutes] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n source: \"\",\n routes: []\n });\n\n //При открытии/закрытии диалога фильтра\n const handleFilterOpen = isOpen => {\n setDialogsState(pv => ({\n ...pv,\n filterDialogIsOpen: isOpen\n }));\n };\n\n //При открытии/закрытии диалога дополнительных настроек\n const handleSettingsOpen = () => setDialogsState(pv => ({\n ...pv,\n settingsDialogIsOpen: !pv.settingsDialogIsOpen\n }));\n\n //При открытии/закрытии диалога примечания\n const handleNoteOpen = (cb = null) => {\n setDialogsState(pv => ({\n ...pv,\n noteDialog: {\n isOpen: !dialogsState.noteDialog.isOpen,\n callback: cb ? v => cb(v) : null\n }\n }));\n };\n\n //При открытии/закрытии диалога события\n const handleTaskDialogOpen = () => setDialogsState(pv => ({\n ...pv,\n taskDialogIsOpen: !dialogsState.taskDialogIsOpen\n }));\n\n //При необходимости обновить дополнительные данные\n const handleExtraDataReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setExtraData(pv => ({\n ...pv,\n reload: true\n }));\n }, [setExtraData]);\n\n //При необходимости обновить информацию о событиях\n const handleTasksReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((bAccountsReload = true) => {\n setTasks(pv => ({\n ...pv,\n reload: true,\n accountsReload: bAccountsReload\n }));\n }, [setTasks]);\n\n //При необходимости обновить состояние статусов\n const handleStatusesStateReload = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {\n setStatusesState(pv => ({\n ...pv,\n reload: true,\n sorted: false\n }));\n }, [setStatusesState]);\n\n //При изменении дополнительных настроек\n const handleSettingsChange = (newSettings, statusesState) => {\n setColorRules(pv => ({\n ...pv,\n selectedColorRule: newSettings.selectedColorRule\n }));\n setStatusesState({\n ...statusesState,\n sorted: false\n });\n };\n\n //При изменении цвета карточки статуса\n const handleSettingStatusColorChange = (changedStatus, newColor) => {\n //Считываем массив статусов\n let newStatuses = [...statuses];\n //Изменяем цвет нужного статуса\n newStatuses.find(status => status.ID === changedStatus.ID).color = newColor;\n //Обновляем состояние\n setStatuses([...newStatuses]);\n };\n\n //При изменении сортировки\n const handleOrderChanged = columnName => {\n //Копируем состояние сортировки\n let newOrders = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_9__.deepCopyObject)(orders);\n //Находим сортируемую колонку\n const orderedColumn = newOrders.find(o => o.name == columnName);\n //Определяем направление сортировки\n const newDirection = orderedColumn?.direction == \"ASC\" ? \"DESC\" : orderedColumn?.direction == \"DESC\" ? null : \"ASC\";\n //Если сортировка отключается - очищаем информацию о сортировке\n if (newDirection == null && orderedColumn) newOrders.splice(newOrders.indexOf(orderedColumn), 1);\n //Если сортировки не было - устанавливаем\n if (newDirection != null && !orderedColumn) newOrders.push({\n name: columnName,\n direction: newDirection\n });\n //Если сортировка была и не отключается - изменяем\n if (newDirection != null && orderedColumn) orderedColumn.direction = newDirection;\n //Устанавливаем новую сортировку\n setOrders(newOrders);\n };\n\n //При необходимости очистки доступных маршрутов события\n const handleAvailableRoutesStateClear = () => {\n setAvailableRoutes({\n source: \"\",\n routes: []\n });\n };\n\n //Проверка доступности карточки события\n const isCardAvailable = code => {\n return availableRoutes.source === code || availableRoutes.routes.find(r => r.SDESTINATION === code) || !availableRoutes.source ? true : false;\n };\n\n //При изменении фильтра\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если изменился тип\n if (filters.loaded && filters.values.sType) {\n //Если тип события изменился\n if (filterTypeLoaded !== filters.values.sType) {\n //Обновляем информацию о дополнительных данных\n handleExtraDataReload();\n //Обновляем информацию о статусах\n handleStatusesStateReload();\n //Обновляем текущий загруженный тип события\n setFilterTypeLoaded(filters.values.sType);\n }\n //Обновляем информацию о событиях\n handleTasksReload();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [filters.loaded, filters.values]);\n\n //При изменении сортировки\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если есть все данные для загрузки событий\n if (filters.loaded && filters.values.sType) {\n //Обновляем информацию о событиях без обновления контрагентов\n handleTasksReload(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [orders]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CONTAINER\n }, dialogsState.settingsDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_settings_dialog_js__WEBPACK_IMPORTED_MODULE_8__.SettingsDialog, {\n initial: {\n colorRules: colorRules,\n statusesState: statusesState\n },\n onSettingsChange: handleSettingsChange,\n onClose: handleSettingsOpen\n }) : null, dialogsState.taskDialogIsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_dialog_js__WEBPACK_IMPORTED_MODULE_2__.TaskDialog, {\n taskType: filters.values.sType,\n onTasksReload: () => handleTasksReload(true),\n onClose: handleTaskDialogOpen\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_FILTER\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\",\n pl: 1,\n pt: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n onClick: handleTaskDialogOpen,\n title: \"Добавить событие\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, \"add\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_filter_js__WEBPACK_IMPORTED_MODULE_3__.Filter, {\n isFilterDialogOpen: dialogsState.filterDialogIsOpen,\n filter: filters.values,\n docLinks: extraData.docLinks,\n selectedDocLink: filters.values.sDocLink ? extraData.docLinks.find(d => d.NRN === filters.values.sDocLink) : null,\n onFilterChange: handleFiltersChange,\n onDocLinksLoad: handleDocLinksLoad,\n onFilterOpen: () => handleFilterOpen(true),\n onFilterClose: () => handleFilterOpen(false),\n onTasksReload: handleTasksReload,\n orders: orders,\n onOrderChanged: handleOrderChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n title: \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\",\n onClick: handleSettingsOpen,\n sx: STYLES.ICON_BUTTON_SETTINGS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_15__[\"default\"], null, \"settings\"))), dialogsState.noteDialog.isOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_note_dialog_js__WEBPACK_IMPORTED_MODULE_7__.NoteDialog, {\n noteTypes: extraData.noteTypes,\n onCallback: note => dialogsState.noteDialog.callback(note),\n onClose: handleNoteOpen\n }) : null, filters.loaded && filters.values.sType && extraData.dataLoaded && tasks.loaded ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.DragDropContext, {\n onDragStart: path => {\n //Поиск кода текущего статуса задачи\n let sourceCode = statuses.find(status => status.ID == path.source.droppableId).SEVNSTAT_CODE;\n //Устанавливаем доступные маршруты события\n setAvailableRoutes({\n source: sourceCode,\n routes: [...extraData.evRoutes.filter(route => route.SSOURCE === sourceCode)]\n });\n },\n onDragEnd: path => {\n //Если есть статус назначения\n if (path.destination) {\n //Определяем мнемокод статуса назначения\n let destCode = statuses.find(status => status.ID == path.destination.droppableId).SEVNSTAT_CODE;\n //Переносим событие\n onDragEnd({\n path: path,\n eventPoints: extraData.evPoints,\n openNoteDialog: handleNoteOpen,\n destCode: destCode\n });\n }\n //Очищаем информацию о доступных маршрутах события\n handleAvailableRoutesStateClear();\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.BOX_STATUSES\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n droppableId: \"Statuses\",\n type: \"droppableTask\"\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n direction: \"row\",\n spacing: 2,\n sx: STYLES.STACK_STATUSES\n }, statusesState.sorted ? statuses.map((status, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: index\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_beautiful_dnd__WEBPACK_IMPORTED_MODULE_16__.Droppable, {\n isDropDisabled: !isCardAvailable(status.SEVNSTAT_CODE),\n droppableId: status.ID.toString()\n }, provided => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: provided.innerRef\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_status_card_js__WEBPACK_IMPORTED_MODULE_1__.StatusCard, {\n tasks: tasks,\n status: status,\n statusTitle: status[statusesState.attr] || status.SEVNSTAT_NAME,\n colorRules: colorRules,\n extraData: extraData,\n isCardAvailable: isCardAvailable,\n onTasksReload: handleTasksReload,\n onNoteDialogOpen: handleNoteOpen,\n onStatusColorChange: handleSettingStatusColorChange,\n placeholder: provided.placeholder\n }))))) : null), provided.placeholder)))) : null);\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/clnt_task_board.js?"); /***/ }), @@ -510,7 +510,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 */ SettingsDialog: () => (/* binding */ SettingsDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_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/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_input_field.js */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.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 STYLES = {\n SELECT: {\n width: \"100%\"\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог дополнительных настроек\nconst SettingsDialog = ({\n initial,\n onSettingsChange,\n onClose,\n ...other\n}) => {\n //Состояние дополнительных настроек\n const [colorRules, seColorRules] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.colorRules);\n\n //Состояние статусов\n const [statusesState, setStatusesState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.statusesState);\n\n //Изменение поля сортировки\n const handleSortAttrChange = (item, value) => setStatusesState(pv => ({\n ...pv,\n [item]: value\n }));\n\n //Изменение направления сортировки\n const handleSortDestChange = newDirection => setStatusesState(pv => ({\n ...pv,\n direction: newDirection\n }));\n\n //При изменении правила заливки событий\n const handleColorRuleChange = (item, value) => {\n //Определяем новое правило заливки\n let newColorRule = colorRules.rules[value];\n //Обновляем в основных настройках\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: newColorRule ? newColorRule : {}\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", other, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: onClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_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\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.SCROLL\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"clrRules\",\n elementValue: (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_3__.hasValue)(colorRules.selectedColorRule.id) && colorRules.length !== 0 ? colorRules.selectedColorRule.id : -1,\n labelText: \"\\u0417\\u0430\\u043B\\u0438\\u0432\\u043A\\u0430 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439\",\n items: colorRules.rules.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: cur.SDP_NAME\n }], []),\n emptyItem: {\n key: -1,\n id: -1,\n caption: \"-\"\n },\n onChange: handleColorRuleChange,\n sx: STYLES.SELECT\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n direction: \"row\",\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.STACK_DOCLINKS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"attr\",\n elementValue: statusesState.attr,\n labelText: \"\\u041F\\u043E\\u043B\\u0435 \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438\",\n items: _layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortAttrs.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: cur.descr\n }], []),\n onChange: handleSortAttrChange,\n sx: STYLES.SELECT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n title: statusesState.direction === \"asc\" ? \"По возрастанию\" : \"По убыванию\",\n onClick: () => handleSortDestChange(_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest[_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest.indexOf(statusesState.direction) * -1])\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, statusesState.direction === \"asc\" ? \"arrow_upward\" : \"arrow_downward\"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n onSettingsChange(colorRules, statusesState);\n onClose();\n }\n }, \"\\u041E\\u041A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: {}\n }));\n setStatusesState(pv => ({\n ...pv,\n attr: \"SEVNSTAT_NAME\",\n direction: \"asc\"\n }));\n }\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n variant: \"text\",\n onClick: onClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалог дополнительных настроек\nSettingsDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n onSettingsChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/settings_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ SettingsDialog: () => (/* binding */ SettingsDialog)\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_15__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_15__);\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/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Typography/Typography.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./custom_input_field.js */ \"./app/panels/clnt_task_board/components/custom_input_field.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../core/utils.js */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles */ \"./app/panels/clnt_task_board/styles.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 STYLES = {\n SELECT: {\n width: \"100%\"\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Диалог дополнительных настроек\nconst SettingsDialog = ({\n initial,\n onSettingsChange,\n onClose,\n ...other\n}) => {\n //Состояние дополнительных настроек\n const [colorRules, seColorRules] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.colorRules);\n\n //Состояние статусов\n const [statusesState, setStatusesState] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(initial.statusesState);\n\n //Изменение поля сортировки\n const handleSortAttrChange = (item, value) => setStatusesState(pv => ({\n ...pv,\n [item]: value\n }));\n\n //Изменение направления сортировки\n const handleSortDestChange = newDirection => setStatusesState(pv => ({\n ...pv,\n direction: newDirection\n }));\n\n //При изменении правила заливки событий\n const handleColorRuleChange = (item, value) => {\n //Определяем новое правило заливки\n let newColorRule = colorRules.rules[value];\n //Обновляем в основных настройках\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: newColorRule ? newColorRule : {}\n }));\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", other, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: onClose,\n fullWidth: true,\n maxWidth: \"sm\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null, \"\\u041D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0439\\u043A\\u0438\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n \"aria-label\": \"close\",\n onClick: onClose,\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_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\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.SCROLL\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"clrRules\",\n elementValue: (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_3__.hasValue)(colorRules.selectedColorRule.id) && colorRules.length !== 0 ? colorRules.selectedColorRule.id : -1,\n labelText: \"\\u0417\\u0430\\u043B\\u0438\\u0432\\u043A\\u0430 \\u0441\\u043E\\u0431\\u044B\\u0442\\u0438\\u0439*\",\n items: colorRules.rules.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: `${cur.SDP_NAME}` + (cur.STYPE == \"string\" ? `${cur.fromValue ? `, значение \"${cur.fromValue}\"` : \"\"}` : `${cur.fromValue ? `, с ${cur.fromValue}` : \"\"}` + `${cur.toValue ? `, по ${cur.toValue}` : \"\"}`) + `${cur.SCOLOR ? `, ${cur.SCOLOR}` : \"\"}`\n }], []),\n emptyItem: {\n key: -1,\n id: -1,\n caption: \"Нет\"\n },\n onChange: handleColorRuleChange,\n sx: STYLES.SELECT\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n component: \"section\",\n p: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n direction: \"row\",\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.STACK_DOCLINKS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_custom_input_field_js__WEBPACK_IMPORTED_MODULE_1__.CustomInputField, {\n elementCode: \"attr\",\n elementValue: statusesState.attr,\n labelText: \"\\u041F\\u043E\\u0440\\u044F\\u0434\\u043E\\u043A \\u0441\\u043E\\u0440\\u0442\\u0438\\u0440\\u043E\\u0432\\u043A\\u0438 \\u043A\\u043E\\u043B\\u043E\\u043D\\u043E\\u043A\",\n items: _layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortAttrs.reduce((prev, cur) => [...prev, {\n id: cur.id,\n caption: cur.descr\n }], []),\n onChange: handleSortAttrChange,\n sx: STYLES.SELECT\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n title: statusesState.direction === \"asc\" ? \"По возрастанию\" : \"По убыванию\",\n onClick: () => handleSortDestChange(_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest[_layouts_js__WEBPACK_IMPORTED_MODULE_2__.sortDest.indexOf(statusesState.direction) * -1])\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, statusesState.direction === \"asc\" ? \"arrow_upward\" : \"arrow_downward\")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n variant: \"caption\"\n }, \"*\\u041F\\u043E\\u0434\\u0434\\u0435\\u0440\\u0436\\u0438\\u0432\\u0430\\u044E\\u0442\\u0441\\u044F \\u043F\\u0440\\u0430\\u0432\\u0438\\u043B\\u0430 \\u0437\\u0430\\u043B\\u0438\\u0432\\u043A\\u0438, \\u0431\\u0430\\u0437\\u0438\\u0440\\u0443\\u044E\\u0449\\u0438\\u0435\\u0441\\u044F \\u043D\\u0430 \\u0434\\u043E\\u043F\\u043E\\u043B\\u043D\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u044B\\u0445 \\u0441\\u0432\\u043E\\u0439\\u0441\\u0442\\u0432\\u0430\\u0445 \\u0442\\u0438\\u043F\\u0430 \\\"\\u0421\\u0442\\u0440\\u043E\\u043A\\u0430\\\" \\u0438\\u043B\\u0438 \\\"\\u0427\\u0438\\u0441\\u043B\\u043E\\\", \\u0438\\u0437 \\u043F\\u0440\\u043E\\u0444\\u0438\\u043B\\u044F \\u043F\\u043E\\u043B\\u044C\\u0437\\u043E\\u0432\\u0430\\u0442\\u0435\\u043B\\u044F, \\u043D\\u0430\\u0441\\u0442\\u0440\\u043E\\u0435\\u043D\\u043D\\u043E\\u0433\\u043E \\u0434\\u043B\\u044F \\u0440\\u0430\\u0437\\u0434\\u0435\\u043B\\u0430 \\\"\\u0421\\u043E\\u0431\\u044B\\u0442\\u0438\\u044F\\\" \\u0432 WEB-\\u0438\\u043D\\u0442\\u0435\\u0440\\u0444\\u0435\\u0439\\u0441\\u0435 \\u0434\\u0430\\u043D\\u043D\\u043E\\u0433\\u043E \\u043F\\u0440\\u0438\\u043B\\u043E\\u0436\\u0435\\u043D\\u0438\\u044F.\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_4__.COMMON_STYLES.DIALOG_ACTIONS\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n onSettingsChange(colorRules, statusesState);\n onClose();\n }\n }, \"\\u041E\\u041A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"text\",\n onClick: () => {\n seColorRules(pv => ({\n ...pv,\n selectedColorRule: {}\n }));\n setStatusesState(pv => ({\n ...pv,\n attr: \"SEVNSTAT_NAME\",\n direction: \"asc\"\n }));\n }\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n variant: \"text\",\n onClick: onClose\n }, \"\\u041E\\u0442\\u043C\\u0435\\u043D\\u0430\"))));\n};\n\n//Контроль свойств компонента - Диалог дополнительных настроек\nSettingsDialog.propTypes = {\n initial: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().object).isRequired,\n onSettingsChange: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_15___default().func).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/settings_dialog.js?"); /***/ }), @@ -521,7 +521,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 */ StatusCard: () => (/* binding */ StatusCard)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.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 _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/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardContent/CardContent.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 _task_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_card.js */ \"./app/panels/clnt_task_board/components/task_card.js\");\n/* harmony import */ var _status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./status_card_settings.js */ \"./app/panels/clnt_task_board/components/status_card_settings.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Карточка статуса событий\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Компонент Карточка события\n //Компонент Диалог настройки карточки событий\n //Типовые стили\n //Цвета статусов\n //Заголовок страницы\n\n//---------\n//Константы\n//---------\n\n//Нижний отступ заголовка\nconst TITLE_PADDING_BOTTOM = \"16px\";\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n STATUS_BLOCK: statusColor => {\n return {\n width: \"350px\",\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 8px)`,\n backgroundColor: statusColor,\n padding: \"8px\"\n };\n },\n BLOCK_OPACITY: isAvailable => {\n return isAvailable ? {\n opacity: 1\n } : {\n opacity: 0.5\n };\n },\n CARD_HEADER_TITLE: {\n textAlign: \"left\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n display: \"-webkit-box\",\n hyphens: \"auto\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 1,\n maxWidth: \"calc(300px)\",\n width: \"-webkit-fill-available\",\n fontSize: \"1.2rem\",\n cursor: \"default\"\n },\n CARD_HEADER: {\n padding: 0\n },\n CARD_CONTENT: {\n padding: 0,\n paddingRight: \"5px\",\n paddingBottom: \"5px !important\",\n overflowY: \"auto\",\n maxHeight: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 85px)`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Карточка статуса события\nconst StatusCard = ({\n tasks,\n status,\n statusTitle,\n colorRules,\n extraData,\n filtersType,\n isCardAvailable,\n onTasksReload,\n onDragItemChange,\n onTaskDialogOpen,\n onNoteDialogOpen,\n onStatusColorChange,\n placeholder\n}) => {\n //Состояние диалога настройки\n const [statusCardSettingsOpen, setStatusCardSettingsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Открыть/закрыть диалог настройки\n const handleStatusCardSettingsOpen = () => setStatusCardSettingsOpen(!statusCardSettingsOpen);\n\n //При изменении цвета статуса\n const handleStatusColorChange = newColor => {\n onStatusColorChange(status, newColor);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, statusCardSettingsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__.StatusCardSettings, {\n statusColor: status.color,\n availableColors: _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS.includes(status.color) ? _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS : [status.color, ..._layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS],\n onClose: handleStatusCardSettingsOpen,\n onColorChange: handleStatusColorChange\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"statusId-card\",\n sx: {\n ...STYLES.STATUS_BLOCK(status.color),\n ...STYLES.BLOCK_OPACITY(isCardAvailable(status.SEVNSTAT_CODE))\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"aria-label\": \"settings\",\n onClick: handleStatusCardSettingsOpen\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"more_vert\")),\n title: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CARD_HEADER_TITLE,\n title: statusTitle,\n variant: \"h5\"\n }, statusTitle),\n subheader: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: () => {\n onDragItemChange(filtersType, status.SEVNSTAT_CODE);\n onTaskDialogOpen();\n }\n }, \"+ \\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"),\n sx: STYLES.CARD_HEADER\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n sx: STYLES.CARD_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n spacing: 1\n }, tasks.rows.filter(item => item.sStatus === status.SEVNSTAT_NAME).map((item, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_card_js__WEBPACK_IMPORTED_MODULE_1__.TaskCard, {\n task: item,\n index: index,\n onTasksReload: onTasksReload,\n key: item.id,\n colorRule: colorRules.selectedColorRule,\n pointSettings: extraData.evPoints.find(p => p.SEVPOINT === status.SEVNSTAT_CODE),\n onOpenNoteDialog: onNoteDialogOpen\n })), placeholder))));\n};\n\n//Контроль свойств - Карточка статуса события\nStatusCard.propTypes = {\n tasks: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n status: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n statusTitle: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n colorRules: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n extraData: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired,\n filtersType: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().string).isRequired,\n isCardAvailable: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onDragItemChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onTaskDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onNoteDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n onStatusColorChange: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().func).isRequired,\n placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_14___default().object).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/status_card.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ StatusCard: () => (/* binding */ StatusCard)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Card/Card.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/CardHeader/CardHeader.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 _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/CardContent/CardContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _task_card_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./task_card.js */ \"./app/panels/clnt_task_board/components/task_card.js\");\n/* harmony import */ var _status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./status_card_settings.js */ \"./app/panels/clnt_task_board/components/status_card_settings.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _layouts_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../layouts.js */ \"./app/panels/clnt_task_board/layouts.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент: Карточка статуса событий\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Компонент Карточка события\n //Компонент Диалог настройки карточки событий\n //Типовые стили\n //Цвета статусов\n //Заголовок страницы\n\n//---------\n//Константы\n//---------\n\n//Нижний отступ заголовка\nconst TITLE_PADDING_BOTTOM = \"16px\";\n\n//Высота фильтра\nconst FILTER_HEIGHT = \"56px\";\n\n//Стили\nconst STYLES = {\n STATUS_BLOCK: statusColor => {\n return {\n width: \"350px\",\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 8px)`,\n backgroundColor: statusColor,\n padding: \"8px\"\n };\n },\n BLOCK_OPACITY: isAvailable => {\n return isAvailable ? {\n opacity: 1\n } : {\n opacity: 0.5\n };\n },\n CARD_HEADER_TITLE: {\n textAlign: \"left\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n display: \"-webkit-box\",\n hyphens: \"auto\",\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 1,\n maxWidth: \"calc(300px)\",\n width: \"-webkit-fill-available\",\n fontSize: \"1.2rem\",\n cursor: \"default\"\n },\n CARD_HEADER: {\n padding: 0\n },\n CARD_CONTENT: {\n padding: 0,\n paddingRight: \"5px\",\n paddingBottom: \"5px !important\",\n overflowY: \"auto\",\n maxHeight: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_5__.APP_BAR_HEIGHT} - ${TITLE_PADDING_BOTTOM} - ${FILTER_HEIGHT} - 55px)`,\n ..._app_styles__WEBPACK_IMPORTED_MODULE_3__.APP_STYLES.SCROLL\n }\n};\n\n//---------------\n//Тело компонента\n//---------------\n\n//Карточка статуса события\nconst StatusCard = ({\n tasks,\n status,\n statusTitle,\n colorRules,\n extraData,\n isCardAvailable,\n onTasksReload,\n onNoteDialogOpen,\n onStatusColorChange,\n placeholder\n}) => {\n //Состояние диалога настройки\n const [statusCardSettingsOpen, setStatusCardSettingsOpen] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Открыть/закрыть диалог настройки\n const handleStatusCardSettingsOpen = () => setStatusCardSettingsOpen(!statusCardSettingsOpen);\n\n //При изменении цвета статуса\n const handleStatusColorChange = newColor => {\n onStatusColorChange(status, newColor);\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", null, statusCardSettingsOpen ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_status_card_settings_js__WEBPACK_IMPORTED_MODULE_2__.StatusCardSettings, {\n statusColor: status.color,\n availableColors: _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS.includes(status.color) ? _layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS : [status.color, ..._layouts_js__WEBPACK_IMPORTED_MODULE_4__.COLORS],\n onClose: handleStatusCardSettingsOpen,\n onColorChange: handleStatusColorChange\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n className: \"statusId-card\",\n sx: {\n ...STYLES.STATUS_BLOCK(status.color),\n ...STYLES.BLOCK_OPACITY(isCardAvailable(status.SEVNSTAT_CODE))\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n action: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n \"aria-label\": \"settings\",\n onClick: handleStatusCardSettingsOpen\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null, \"more_vert\")),\n title: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CARD_HEADER_TITLE,\n title: statusTitle,\n variant: \"h5\"\n }, statusTitle),\n sx: STYLES.CARD_HEADER\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n sx: STYLES.CARD_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n spacing: 1\n }, tasks.rows.filter(item => item.sStatus === status.SEVNSTAT_NAME).map((item, index) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_task_card_js__WEBPACK_IMPORTED_MODULE_1__.TaskCard, {\n task: item,\n index: index,\n onTasksReload: onTasksReload,\n key: item.id,\n colorRule: colorRules.selectedColorRule,\n pointSettings: extraData.evPoints.find(p => p.SEVPOINT === status.SEVNSTAT_CODE),\n onOpenNoteDialog: onNoteDialogOpen\n })), placeholder))));\n};\n\n//Контроль свойств - Карточка статуса события\nStatusCard.propTypes = {\n tasks: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n status: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n statusTitle: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string).isRequired,\n colorRules: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n extraData: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired,\n isCardAvailable: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired,\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired,\n onNoteDialogOpen: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired,\n onStatusColorChange: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().func).isRequired,\n placeholder: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().object).isRequired\n};\n\n//--------------------\n//Интерфейс компонента\n//--------------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/components/status_card.js?"); /***/ }), @@ -642,7 +642,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 */ useClientEvent: () => (/* binding */ useClientEvent),\n/* harmony export */ useDocsProps: () => (/* binding */ useDocsProps)\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/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки диалога события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук для события\nconst useClientEvent = (taskRn, taskType = \"\", taskStatus = \"\") => {\n //Собственное состояние\n const [task, setTask] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: true,\n nRn: taskRn,\n sCrn: \"\",\n sPrefix: \"\",\n sNumber: \"\",\n sType: taskType,\n sStatus: taskStatus,\n sDescription: \"\",\n sClntClients: \"\",\n sClntClnperson: \"\",\n dStartDate: \"\",\n sInitClnperson: \"\",\n sInitUser: \"\",\n sInitReason: \"\",\n sToCompany: \"\",\n sToDepartment: \"\",\n sToClnpost: \"\",\n sToClnpsdep: \"\",\n sToClnperson: \"\",\n sToFcstaffgrp: \"\",\n sToUser: \"\",\n sToUsergrp: \"\",\n sCurrentUser: \"\",\n isUpdate: false,\n insertDisabled: true,\n updateDisabled: true,\n docProps: {}\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 //При инициализации события\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если это инициализация\n if (task.init) {\n //Если указан рег. номер события\n if (taskRn) {\n //Считывание параметров события\n const readEvent = async () => {\n //Считываем информацию о событии по рег. номеру\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_GET\",\n args: {\n NCLNEVENTS: task.nRn\n },\n respArg: \"COUT\"\n });\n //Фильтруем доп. свойства\n let docProps = Object.keys(data.XEVENT).filter(key => key.includes(\"DP_\")).reduce((prev, key) => ({\n ...prev,\n [key]: data.XEVENT[key]\n }), {});\n //Устанавливаем информацию о событии\n setTask(pv => ({\n ...pv,\n sCrn: data.XEVENT.SCRN,\n sPrefix: data.XEVENT.SPREF,\n sNumber: data.XEVENT.SNUMB,\n sType: data.XEVENT.STYPE,\n sStatus: data.XEVENT.SSTATUS,\n sDescription: data.XEVENT.SDESCRIPTION,\n sClntClients: data.XEVENT.SCLIENT_CLIENT,\n sClntClnperson: data.XEVENT.SCLIENT_PERSON,\n dPlanDate: data.XEVENT.SPLAN_DATE,\n sInitClnperson: data.XEVENT.SINIT_PERSON,\n sInitUser: data.XEVENT.SINIT_AUTHID,\n sInitReason: data.XEVENT.SREASON,\n sToCompany: data.XEVENT.SSEND_CLIENT,\n sToDepartment: data.XEVENT.SSEND_DIVISION,\n sToClnpost: data.XEVENT.SSEND_POST,\n sToClnpsdep: data.XEVENT.SSEND_PERFORM,\n sToClnperson: data.XEVENT.SSEND_PERSON,\n sToFcstaffgrp: data.XEVENT.SSEND_STAFFGRP,\n sToUser: data.XEVENT.SSEND_USER_NAME,\n sToUsergrp: data.XEVENT.SSEND_USER_GROUP,\n sCurrentUser: data.XEVENT.SINIT_AUTHID,\n isUpdate: true,\n init: false,\n docProps: docProps\n }));\n };\n //Инициализация параметров события\n readEvent();\n } else {\n //Считывание изначальных параметров события\n const initEvent = async () => {\n //Инициализируем параметры события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INIT\",\n args: {\n SEVENT_TYPE: task.sType\n }\n });\n //Если есть данные\n if (data) {\n //Устанавливаем данные по событию\n setTask(pv => ({\n ...pv,\n sPrefix: data.SPREF,\n sNumber: data.SNUMB,\n sCurrentUser: data.SINIT_AUTHNAME,\n sInitClnperson: data.SINIT_PERSON,\n sInitUser: !data.SINIT_PERSON ? data.SINIT_AUTHNAME : \"\",\n init: false\n }));\n }\n };\n //Инициализация изначальных параметров события\n initEvent();\n }\n }\n if (!task.init) {\n setTask(pv => ({\n ...pv,\n sInitUser: !task.sInitClnperson ? task.sCurrentUser : \"\"\n }));\n }\n }, [executeStored, task.init, task.nRn, task.sType, task.sCurrentUser, task.sInitClnperson, taskRn]);\n\n //Проверка доступности действия\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setTask(pv => ({\n ...pv,\n insertDisabled: !task.sCrn || !task.sPrefix || !task.sNumber || !task.sType || !task.sStatus || !task.sDescription || !task.sInitClnperson && !task.sInitUser,\n updateDisabled: !task.sDescription\n }));\n }, [task.sCrn, task.sDescription, task.sInitClnperson, task.sInitUser, task.sNumber, task.sPrefix, task.sStatus, task.sType]);\n return [task, setTask];\n};\n\n//Хук для получения свойств раздела \"События\"\nconst useDocsProps = taskType => {\n //Собственное состояние\n const [docProps, setDocsProps] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n props: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка доп. свойств\n let getDocsProps = async () => {\n //Считываема доп. свойства по типу события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_PROPS_GET\",\n args: {\n SEVNTYPE_CODE: taskType\n },\n isArray: name => name === \"XPROPS\",\n respArg: \"COUT\"\n });\n //Устанавливаем доп. свойства\n setDocsProps({\n loaded: true,\n props: [...(data?.XPROPS || [])]\n });\n };\n //Если доп. свойства не загружены\n if (!docProps.loaded) {\n //Загружаем доп. свойства\n getDocsProps();\n }\n }, [docProps.loaded, executeStored, taskType]);\n return [docProps];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/task_dialog_hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useClientEvent: () => (/* binding */ useClientEvent),\n/* harmony export */ useDocsProps: () => (/* binding */ useDocsProps)\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/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Пользовательские хуки: Хуки диалога события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Хук для события\nconst useClientEvent = (taskRn, taskType = \"\") => {\n //Собственное состояние\n const [task, setTask] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n init: true,\n nRn: taskRn,\n sCrn: \"\",\n sPrefix: \"\",\n sNumber: \"\",\n sType: taskType,\n sStatus: \"\",\n sDescription: \"\",\n sClntClients: \"\",\n sClntClnperson: \"\",\n dStartDate: \"\",\n sInitClnperson: \"\",\n sInitUser: \"\",\n sInitReason: \"\",\n sToCompany: \"\",\n sToDepartment: \"\",\n sToClnpost: \"\",\n sToClnpsdep: \"\",\n sToClnperson: \"\",\n sToFcstaffgrp: \"\",\n sToUser: \"\",\n sToUsergrp: \"\",\n sCurrentUser: \"\",\n isUpdate: false,\n insertDisabled: true,\n updateDisabled: true,\n docProps: {}\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 //При инициализации события\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Если это инициализация\n if (task.init) {\n //Если указан рег. номер события\n if (taskRn) {\n //Считывание параметров события\n const readEvent = async () => {\n //Считываем информацию о событии по рег. номеру\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_GET\",\n args: {\n NCLNEVENTS: task.nRn\n },\n respArg: \"COUT\"\n });\n //Фильтруем доп. свойства\n let docProps = Object.keys(data.XEVENT).filter(key => key.includes(\"DP_\")).reduce((prev, key) => ({\n ...prev,\n [key]: data.XEVENT[key]\n }), {});\n //Устанавливаем информацию о событии\n setTask(pv => ({\n ...pv,\n sCrn: data.XEVENT.SCRN,\n sPrefix: data.XEVENT.SPREF,\n sNumber: data.XEVENT.SNUMB,\n sType: data.XEVENT.STYPE,\n sStatus: data.XEVENT.SSTATUS,\n sDescription: data.XEVENT.SDESCRIPTION,\n sClntClients: data.XEVENT.SCLIENT_CLIENT,\n sClntClnperson: data.XEVENT.SCLIENT_PERSON,\n dPlanDate: data.XEVENT.SPLAN_DATE,\n sInitClnperson: data.XEVENT.SINIT_PERSON,\n sInitUser: data.XEVENT.SINIT_AUTHID,\n sInitReason: data.XEVENT.SREASON,\n sToCompany: data.XEVENT.SSEND_CLIENT,\n sToDepartment: data.XEVENT.SSEND_DIVISION,\n sToClnpost: data.XEVENT.SSEND_POST,\n sToClnpsdep: data.XEVENT.SSEND_PERFORM,\n sToClnperson: data.XEVENT.SSEND_PERSON,\n sToFcstaffgrp: data.XEVENT.SSEND_STAFFGRP,\n sToUser: data.XEVENT.SSEND_USER_NAME,\n sToUsergrp: data.XEVENT.SSEND_USER_GROUP,\n sCurrentUser: data.XEVENT.SINIT_AUTHID,\n isUpdate: true,\n init: false,\n docProps: docProps\n }));\n };\n //Инициализация параметров события\n readEvent();\n } else {\n //Считывание изначальных параметров события\n const initEvent = async () => {\n //Инициализируем параметры события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INIT\",\n args: {\n SEVENT_TYPE: task.sType\n }\n });\n //Если есть данные\n if (data) {\n //Устанавливаем данные по событию\n setTask(pv => ({\n ...pv,\n sPrefix: data.SPREF,\n sNumber: data.SNUMB,\n sStatus: data.SSTATUS,\n sCurrentUser: data.SINIT_AUTHNAME,\n sInitClnperson: data.SINIT_PERSON,\n sInitUser: !data.SINIT_PERSON ? data.SINIT_AUTHNAME : \"\",\n init: false\n }));\n }\n };\n //Инициализация изначальных параметров события\n initEvent();\n }\n }\n if (!task.init) {\n setTask(pv => ({\n ...pv,\n sInitUser: !task.sInitClnperson ? task.sCurrentUser : \"\"\n }));\n }\n }, [executeStored, task.init, task.nRn, task.sType, task.sCurrentUser, task.sInitClnperson, taskRn]);\n\n //Проверка доступности действия\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n setTask(pv => ({\n ...pv,\n insertDisabled: !task.sCrn || !task.sPrefix || !task.sNumber || !task.sType || !task.sStatus || !task.sDescription || !task.sInitClnperson && !task.sInitUser,\n updateDisabled: !task.sDescription\n }));\n }, [task.sCrn, task.sDescription, task.sInitClnperson, task.sInitUser, task.sNumber, task.sPrefix, task.sStatus, task.sType]);\n return [task, setTask];\n};\n\n//Хук для получения свойств раздела \"События\"\nconst useDocsProps = taskType => {\n //Собственное состояние\n const [docProps, setDocsProps] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n loaded: false,\n props: []\n });\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка доп. свойств\n let getDocsProps = async () => {\n //Считываема доп. свойства по типу события\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_PROPS_GET\",\n args: {\n SEVNTYPE_CODE: taskType\n },\n isArray: name => name === \"XPROPS\",\n respArg: \"COUT\"\n });\n //Устанавливаем доп. свойства\n setDocsProps({\n loaded: true,\n props: [...(data?.XPROPS || [])]\n });\n };\n //Если доп. свойства не загружены\n if (!docProps.loaded) {\n //Загружаем доп. свойства\n getDocsProps();\n }\n }, [docProps.loaded, executeStored, taskType]);\n return [docProps];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/hooks/task_dialog_hooks.js?"); /***/ }), @@ -675,7 +675,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 */ COLORS: () => (/* binding */ COLORS),\n/* harmony export */ DP_DEFAULT_VALUE: () => (/* binding */ DP_DEFAULT_VALUE),\n/* harmony export */ DP_IN_VALUE: () => (/* binding */ DP_IN_VALUE),\n/* harmony export */ DP_RETURN_VALUE: () => (/* binding */ DP_RETURN_VALUE),\n/* harmony export */ DP_TYPE_PREFIX: () => (/* binding */ DP_TYPE_PREFIX),\n/* harmony export */ EVENT_STATES: () => (/* binding */ EVENT_STATES),\n/* harmony export */ TASK_COLORS: () => (/* binding */ TASK_COLORS),\n/* harmony export */ convertFilterValuesToArray: () => (/* binding */ convertFilterValuesToArray),\n/* harmony export */ formatSqlDate: () => (/* binding */ formatSqlDate),\n/* harmony export */ getLocalStorageValue: () => (/* binding */ getLocalStorageValue),\n/* harmony export */ getRandomColor: () => (/* binding */ getRandomColor),\n/* harmony export */ getTaskBgColorByRule: () => (/* binding */ getTaskBgColorByRule),\n/* harmony export */ getTaskExpiredColor: () => (/* binding */ getTaskExpiredColor),\n/* harmony export */ makeArray: () => (/* binding */ makeArray),\n/* harmony export */ makeCardActionsArray: () => (/* binding */ makeCardActionsArray),\n/* harmony export */ sortAttrs: () => (/* binding */ sortAttrs),\n/* harmony export */ sortDest: () => (/* binding */ sortDest),\n/* harmony export */ validationError: () => (/* binding */ validationError)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Перечисление \"Состояние события\"\nconst EVENT_STATES = Object.freeze({\n 0: \"Все\",\n 1: \"Не аннулированные\",\n 2: \"Аннулированные\"\n});\n\n//Допустимые значение поля сортировки\nconst sortAttrs = [{\n id: \"SEVNSTAT_CODE\",\n descr: \"Мнемокод\"\n}, {\n id: \"SEVNSTAT_NAME\",\n descr: \"Наименование\"\n}, {\n id: \"SEVPOINT_DESCR\",\n descr: \"Описание точки маршрута\"\n}];\n\n//Допустимые значения направления сортировки\nconst sortDest = [];\nsortDest[-1] = \"desc\";\nsortDest[1] = \"asc\";\n\n//Цвета статусов\nconst COLORS = [\"mediumSlateBlue\", \"lightSalmon\", \"fireBrick\", \"orange\", \"gold\", \"limeGreen\", \"yellowGreen\", \"mediumAquaMarine\", \"paleTurquoise\", \"steelBlue\", \"skyBlue\", \"tan\"];\n\n//Перечисление \"Цвет задачи\"\nconst TASK_COLORS = Object.freeze({\n EXPIRED: \"#ff0000\",\n EXPIRES_SOON: \"#ffdf00\",\n LINKED: \"#1e90ff\"\n});\n\n//Перечисление Доп. свойства \"Значение по умолчанию\"\nconst DP_DEFAULT_VALUE = Object.freeze({\n 0: \"SDEFAULT_STR\",\n 1: \"NDEFAULT_NUM\",\n 2: \"DDEFAULT_DATE\",\n 3: \"NDEFAULT_NUM\"\n});\n//Перечисление Доп. свойства \"Префикс формата данных\"\nconst DP_TYPE_PREFIX = Object.freeze({\n 0: \"S\",\n 1: \"N\",\n 2: \"D\",\n 3: \"N\"\n});\n//Перечисление Доп. свойства \"Входящее значение дополнительного словаря\"\nconst DP_IN_VALUE = Object.freeze({\n 0: \"pos_str_value\",\n 1: \"pos_num_value\",\n 2: \"pos_date_value\",\n 3: \"pos_num_value\"\n});\n//Перечисление Доп. свойства \"Исходящее значение дополнительного словаря\"\nconst DP_RETURN_VALUE = Object.freeze({\n 0: \"str_value\",\n 1: \"num_value\",\n 2: \"date_value\",\n 3: \"num_value\"\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Формирование массива из 0, 1 и более элементов\nconst makeArray = arr => {\n return arr ? arr.length ? arr : [arr] : [];\n};\n\n//Конвертация формата HEX в формат RGB\nconst convertHexToRGB = hex => {\n let r = parseInt(hex.slice(1, 3), 16);\n let g = parseInt(hex.slice(3, 5), 16);\n let b = parseInt(hex.slice(5, 7), 16);\n let a = 0.5;\n r = Math.round((a * (r / 255) + a * (255 / 255)) * 255);\n g = Math.round((a * (g / 255) + a * (255 / 255)) * 255);\n b = Math.round((a * (b / 255) + a * (255 / 255)) * 255);\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n};\n\n//Считывание заливки события по условию\nconst getTaskBgColorByRule = (task, colorRule) => {\n //Инициализируем значения\n let ruleCode = \"\";\n //Исходя из типа определяем наименование\n switch (colorRule.STYPE) {\n case \"number\":\n ruleCode = `N${colorRule.SFIELD}`;\n break;\n case \"date\":\n ruleCode = `D${colorRule.SFIELD}`;\n break;\n default:\n ruleCode = `S${colorRule.SFIELD}`;\n break;\n }\n //Определяем цвет заливки\n let bgColor = ruleCode && task.docProps[ruleCode] == colorRule.fromValue ? convertHexToRGB(colorRule.SCOLOR) : null;\n //Возвращаем цвет заливки\n return bgColor;\n};\n\n//Индикация истечения срока отработки события\nconst getTaskExpiredColor = task => {\n //Определяем текущую дату\n let sysDate = new Date();\n //Определяем дату истечения срока события\n let expireDate = task.dExpireDate ? new Date(task.dExpireDate) : null;\n //Если дата истечения срока определена\n if (expireDate) {\n //Определяем разницу между датами\n let daysDiff = ((expireDate.getTime() - sysDate.getTime()) / (1000 * 60 * 60 * 24)).toFixed(2);\n //Если разница меньше 0 - срок истечен\n if (daysDiff < 0) return TASK_COLORS.EXPIRED;\n //Если разница меньше 4 - скоро истечет\n if (daysDiff < 4) return TASK_COLORS.EXPIRES_SOON;\n }\n return null;\n};\n\n//Цвет из hsl формата в rgba формат\nconst convertHslToRgba = (h, s, l) => {\n s /= 100;\n l /= 100;\n const k = n => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = n => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return `rgba(${Math.floor(255 * f(0))},${Math.floor(255 * f(8))},${Math.floor(255 * f(4))},0.3)`;\n};\n\n//Формирование случайного цвета\nconst getRandomColor = index => {\n const hue = index * 137.508;\n return convertHslToRgba(hue, 50, 70);\n};\n\n//Формат дополнительного свойства типа число (длина, точность)\nconst formatRegExpNum = (width, precision) => new RegExp(\"^(\\\\d{1,\" + (width - precision) + \"}\" + (precision > 0 ? \"((\\\\.|,)\\\\d{1,\" + precision + \"})?\" : \"\") + \")?$\");\n\n//Формат дополнительного свойства типа строка (длина)\nconst formatRegExpStr = length => new RegExp(\"^.{0,\" + length + \"}$\");\n\n//Проверка валидности числа\nconst isValidNum = (width, precision, value) => {\n return formatRegExpNum(width, precision).test(value);\n};\n\n//Проверка валидности строки\nconst isValidStr = (length, value) => {\n return formatRegExpStr(length).test(value);\n};\n\n//Признак ошибки валидации\nconst validationError = (value = \"\", format, numWidth, numPrecision, strLength) => {\n //Исходим от формата\n switch (format) {\n //Проверка строки\n case 0:\n return isValidStr(strLength, value);\n //Проверка числа\n case 1:\n return isValidNum(numWidth, numPrecision, value);\n //Остальное не проверяем\n default:\n return true;\n }\n};\n\n//Конвертация времени в привычный формат\nconst formatSqlDate = timeStamp => {\n //Если есть разделитель\n if (timeStamp.indexOf(\".\") !== -1) {\n //Определяем секунды\n let seconds = 24 * 60 * 60 * timeStamp;\n //Определяем часы\n const hours = Math.trunc(seconds / (60 * 60));\n //Переопределяем секунды\n seconds = seconds % (60 * 60);\n //Определяем минуты\n const minutes = Math.trunc(seconds / 60);\n //Определяем остаток секунд\n seconds = Math.round(seconds % 60);\n //Форматируем\n const formattedTime = (\"0\" + hours).slice(-2) + \":\" + (\"0\" + minutes).slice(-2) + \":\" + (\"0\" + seconds).slice(-2);\n //Возвращаем результат\n return formattedTime;\n }\n return timeStamp;\n};\n\n//Считывание значений из локального хранилища\nconst getLocalStorageValue = (sName, defaultValue = null) => localStorage.getItem(sName) || defaultValue;\n\n//Форматирование фильтра в массив для отбора\nconst convertFilterValuesToArray = filterValues => {\n //Инициализируем значение \"с\" состояния (\"Все\", \"Не аннулированные\" - 0, \"Аннулированые\" - 1)\n let nClosedFrom = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[1]].includes(filterValues.sState) ? 0 : 1 : 0;\n //Инициализируем значение \"по\" состояния (\"Все\", \"Аннулированные\" - 1, \"Не аннулированные\" - 0)\n let nClosedTo = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[2]].includes(filterValues.sState) ? 1 : 0 : 0;\n //Формируем массив значений фильтра\n let filterValuesArray = [{\n name: \"NCLOSED\",\n from: nClosedFrom,\n to: nClosedTo\n }, {\n name: \"SEVTYPE_CODE\",\n from: filterValues.sType,\n to: null\n }, {\n name: \"NCRN\",\n from: filterValues.sCrnRnList,\n to: null\n }, {\n name: \"SSEND_PERSON\",\n from: filterValues.sSendPerson,\n to: null\n }, {\n name: \"SSEND_DIVISION\",\n from: filterValues.sSendDivision,\n to: null\n }, {\n name: \"SSEND_USRGRP\",\n from: filterValues.sSendUsrGrp,\n to: null\n }, {\n name: \"NLINKED_RN\",\n from: filterValues.sDocLink,\n to: null\n }];\n return filterValuesArray;\n};\n\n//Формирование массива действий карточки события\nconst makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChange, onReturn, onSend, onNotesOpen, onFileLinksOpen) => {\n //Формируем список действий карточки\n return [{\n method: \"EDIT\",\n name: \"Исправить\",\n icon: \"edit\",\n visible: false,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEdit\n }, {\n method: \"EDIT_CLIENT\",\n name: \"Исправить в разделе\",\n icon: \"edit_note\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEditClient\n }, {\n method: \"DELETE\",\n name: \"Удалить\",\n icon: \"delete\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: false,\n func: onDelete\n }, {\n method: \"TASK_STATE_CHANGE\",\n name: \"Перейти\",\n icon: \"turn_right\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onStateChange\n }, {\n method: \"TASK_RETURN\",\n name: \"Выполнить возврат\",\n icon: \"turn_left\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onReturn\n }, {\n method: \"TASK_SEND\",\n name: \"Направить\",\n icon: \"send\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: true,\n func: onSend\n }, {\n method: \"NOTES\",\n name: \"Примечания\",\n icon: \"event_note\",\n visible: true,\n delimiter: true,\n tasksReload: false,\n needAccountsReload: false,\n func: onNotesOpen\n }, {\n method: \"FILE_LINKS\",\n name: \"Присоединенные документы\",\n icon: \"attach_file\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onFileLinksOpen\n }];\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/layouts.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COLORS: () => (/* binding */ COLORS),\n/* harmony export */ DP_DEFAULT_VALUE: () => (/* binding */ DP_DEFAULT_VALUE),\n/* harmony export */ DP_IN_VALUE: () => (/* binding */ DP_IN_VALUE),\n/* harmony export */ DP_RETURN_VALUE: () => (/* binding */ DP_RETURN_VALUE),\n/* harmony export */ DP_TYPE_PREFIX: () => (/* binding */ DP_TYPE_PREFIX),\n/* harmony export */ EVENT_STATES: () => (/* binding */ EVENT_STATES),\n/* harmony export */ TASK_COLORS: () => (/* binding */ TASK_COLORS),\n/* harmony export */ convertFilterValuesToArray: () => (/* binding */ convertFilterValuesToArray),\n/* harmony export */ formatSqlDate: () => (/* binding */ formatSqlDate),\n/* harmony export */ getLocalStorageValue: () => (/* binding */ getLocalStorageValue),\n/* harmony export */ getRandomColor: () => (/* binding */ getRandomColor),\n/* harmony export */ getTaskBgColorByRule: () => (/* binding */ getTaskBgColorByRule),\n/* harmony export */ getTaskExpiredColor: () => (/* binding */ getTaskExpiredColor),\n/* harmony export */ makeArray: () => (/* binding */ makeArray),\n/* harmony export */ makeCardActionsArray: () => (/* binding */ makeCardActionsArray),\n/* harmony export */ sortAttrs: () => (/* binding */ sortAttrs),\n/* harmony export */ sortDest: () => (/* binding */ sortDest),\n/* harmony export */ validationError: () => (/* binding */ validationError)\n/* harmony export */ });\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Дополнительная разметка и вёрстка клиентских элементов\r\n*/\n\n//---------\n//Константы\n//---------\n\n//Перечисление \"Состояние события\"\nconst EVENT_STATES = Object.freeze({\n 0: \"Все\",\n 1: \"Не аннулированные\",\n 2: \"Аннулированные\"\n});\n\n//Допустимые значение поля сортировки\nconst sortAttrs = [{\n id: \"SEVNSTAT_CODE\",\n descr: \"Мнемокод статуса\"\n}, {\n id: \"SEVNSTAT_NAME\",\n descr: \"Наименование статуса\"\n}, {\n id: \"SEVPOINT_DESCR\",\n descr: \"Описание точки маршрута\"\n}];\n\n//Допустимые значения направления сортировки\nconst sortDest = [];\nsortDest[-1] = \"desc\";\nsortDest[1] = \"asc\";\n\n//Цвета статусов\nconst COLORS = [\"mediumSlateBlue\", \"lightSalmon\", \"fireBrick\", \"orange\", \"gold\", \"limeGreen\", \"yellowGreen\", \"mediumAquaMarine\", \"paleTurquoise\", \"steelBlue\", \"skyBlue\", \"tan\"];\n\n//Перечисление \"Цвет задачи\"\nconst TASK_COLORS = Object.freeze({\n EXPIRED: \"#ff0000\",\n EXPIRES_SOON: \"#ffdf00\",\n LINKED: \"#1e90ff\"\n});\n\n//Перечисление Доп. свойства \"Значение по умолчанию\"\nconst DP_DEFAULT_VALUE = Object.freeze({\n 0: \"SDEFAULT_STR\",\n 1: \"NDEFAULT_NUM\",\n 2: \"DDEFAULT_DATE\",\n 3: \"NDEFAULT_NUM\"\n});\n//Перечисление Доп. свойства \"Префикс формата данных\"\nconst DP_TYPE_PREFIX = Object.freeze({\n 0: \"S\",\n 1: \"N\",\n 2: \"D\",\n 3: \"N\"\n});\n//Перечисление Доп. свойства \"Входящее значение дополнительного словаря\"\nconst DP_IN_VALUE = Object.freeze({\n 0: \"pos_str_value\",\n 1: \"pos_num_value\",\n 2: \"pos_date_value\",\n 3: \"pos_num_value\"\n});\n//Перечисление Доп. свойства \"Исходящее значение дополнительного словаря\"\nconst DP_RETURN_VALUE = Object.freeze({\n 0: \"str_value\",\n 1: \"num_value\",\n 2: \"date_value\",\n 3: \"num_value\"\n});\n\n//-----------\n//Тело модуля\n//-----------\n\n//Формирование массива из 0, 1 и более элементов\nconst makeArray = arr => {\n return arr ? arr.length ? arr : [arr] : [];\n};\n\n//Конвертация формата HEX в формат RGB\nconst convertHexToRGB = hex => {\n let r = parseInt(hex.slice(1, 3), 16);\n let g = parseInt(hex.slice(3, 5), 16);\n let b = parseInt(hex.slice(5, 7), 16);\n let a = 0.5;\n r = Math.round((a * (r / 255) + a * (255 / 255)) * 255);\n g = Math.round((a * (g / 255) + a * (255 / 255)) * 255);\n b = Math.round((a * (b / 255) + a * (255 / 255)) * 255);\n return \"rgb(\" + r + \", \" + g + \", \" + b + \")\";\n};\n\n//Считывание заливки события по условию\nconst getTaskBgColorByRule = (task, colorRule) => {\n //Исходя из типа определяем наименование и возвращаем цвет заливки\n switch (colorRule.STYPE) {\n case \"number\":\n return (!colorRule.fromValue || Number(task.docProps[`N${colorRule.SFIELD}`]) >= Number(colorRule.fromValue)) && (!colorRule.toValue || Number(task.docProps[`N${colorRule.SFIELD}`]) <= Number(colorRule.toValue)) ? convertHexToRGB(colorRule.SCOLOR) : null;\n default:\n return task.docProps[`S${colorRule.SFIELD}`] == colorRule.fromValue ? convertHexToRGB(colorRule.SCOLOR) : null;\n }\n};\n\n//Индикация истечения срока отработки события\nconst getTaskExpiredColor = task => {\n //Определяем текущую дату\n let sysDate = new Date();\n //Определяем дату истечения срока события\n let expireDate = task.dExpireDate ? new Date(task.dExpireDate) : null;\n //Если дата истечения срока определена\n if (expireDate) {\n //Определяем разницу между датами\n let daysDiff = ((expireDate.getTime() - sysDate.getTime()) / (1000 * 60 * 60 * 24)).toFixed(2);\n //Если разница меньше 0 - срок истечен\n if (daysDiff < 0) return TASK_COLORS.EXPIRED;\n //Если разница меньше 4 - скоро истечет\n if (daysDiff < 4) return TASK_COLORS.EXPIRES_SOON;\n }\n return null;\n};\n\n//Цвет из hsl формата в rgba формат\nconst convertHslToRgba = (h, s, l) => {\n s /= 100;\n l /= 100;\n const k = n => (n + h / 30) % 12;\n const a = s * Math.min(l, 1 - l);\n const f = n => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));\n return `rgba(${Math.floor(255 * f(0))},${Math.floor(255 * f(8))},${Math.floor(255 * f(4))},0.3)`;\n};\n\n//Формирование случайного цвета\nconst getRandomColor = index => {\n const hue = index * 137.508;\n return convertHslToRgba(hue, 50, 70);\n};\n\n//Формат дополнительного свойства типа число (длина, точность)\nconst formatRegExpNum = (width, precision) => new RegExp(\"^(\\\\d{1,\" + (width - precision) + \"}\" + (precision > 0 ? \"((\\\\.|,)\\\\d{1,\" + precision + \"})?\" : \"\") + \")?$\");\n\n//Формат дополнительного свойства типа строка (длина)\nconst formatRegExpStr = length => new RegExp(\"^.{0,\" + length + \"}$\");\n\n//Проверка валидности числа\nconst isValidNum = (width, precision, value) => {\n return formatRegExpNum(width, precision).test(value);\n};\n\n//Проверка валидности строки\nconst isValidStr = (length, value) => {\n return formatRegExpStr(length).test(value);\n};\n\n//Признак ошибки валидации\nconst validationError = (value = \"\", format, numWidth, numPrecision, strLength) => {\n //Исходим от формата\n switch (format) {\n //Проверка строки\n case 0:\n return isValidStr(strLength, value);\n //Проверка числа\n case 1:\n return isValidNum(numWidth, numPrecision, value);\n //Остальное не проверяем\n default:\n return true;\n }\n};\n\n//Конвертация времени в привычный формат\nconst formatSqlDate = timeStamp => {\n //Если есть разделитель\n if (timeStamp.indexOf(\".\") !== -1) {\n //Определяем секунды\n let seconds = 24 * 60 * 60 * timeStamp;\n //Определяем часы\n const hours = Math.trunc(seconds / (60 * 60));\n //Переопределяем секунды\n seconds = seconds % (60 * 60);\n //Определяем минуты\n const minutes = Math.trunc(seconds / 60);\n //Определяем остаток секунд\n seconds = Math.round(seconds % 60);\n //Форматируем\n const formattedTime = (\"0\" + hours).slice(-2) + \":\" + (\"0\" + minutes).slice(-2) + \":\" + (\"0\" + seconds).slice(-2);\n //Возвращаем результат\n return formattedTime;\n }\n return timeStamp;\n};\n\n//Считывание значений из локального хранилища\nconst getLocalStorageValue = (sName, defaultValue = null) => localStorage.getItem(sName) || defaultValue;\n\n//Форматирование фильтра в массив для отбора\nconst convertFilterValuesToArray = filterValues => {\n //Инициализируем значение \"с\" состояния (\"Все\", \"Не аннулированные\" - 0, \"Аннулированые\" - 1)\n let nClosedFrom = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[1]].includes(filterValues.sState) ? 0 : 1 : 0;\n //Инициализируем значение \"по\" состояния (\"Все\", \"Аннулированные\" - 1, \"Не аннулированные\" - 0)\n let nClosedTo = filterValues.sState ? [EVENT_STATES[0], EVENT_STATES[2]].includes(filterValues.sState) ? 1 : 0 : 0;\n //Формируем массив значений фильтра\n let filterValuesArray = [{\n name: \"NCLOSED\",\n from: nClosedFrom,\n to: nClosedTo\n }, {\n name: \"SEVTYPE_CODE\",\n from: filterValues.sType,\n to: null\n }, {\n name: \"NCRN\",\n from: filterValues.sCrnRnList,\n to: null\n }, {\n name: \"SSEND_PERSON\",\n from: filterValues.sSendPerson,\n to: null\n }, {\n name: \"SSEND_DIVISION\",\n from: filterValues.sSendDivision,\n to: null\n }, {\n name: \"SSEND_USRGRP\",\n from: filterValues.sSendUsrGrp,\n to: null\n }, {\n name: \"NLINKED_RN\",\n from: filterValues.sDocLink,\n to: null\n }];\n return filterValuesArray;\n};\n\n//Формирование массива действий карточки события\nconst makeCardActionsArray = (onEdit, onEditClient, onDelete, onStateChange, onReturn, onSend, onNotesOpen, onFileLinksOpen) => {\n //Формируем список действий карточки\n return [{\n method: \"EDIT\",\n name: \"Исправить\",\n icon: \"edit\",\n visible: false,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEdit\n }, {\n method: \"EDIT_CLIENT\",\n name: \"Исправить в разделе\",\n icon: \"edit_note\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onEditClient\n }, {\n method: \"DELETE\",\n name: \"Удалить\",\n icon: \"delete\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: false,\n func: onDelete\n }, {\n method: \"TASK_STATE_CHANGE\",\n name: \"Перейти\",\n icon: \"turn_right\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onStateChange\n }, {\n method: \"TASK_RETURN\",\n name: \"Выполнить возврат\",\n icon: \"turn_left\",\n visible: true,\n delimiter: false,\n tasksReload: true,\n needAccountsReload: true,\n func: onReturn\n }, {\n method: \"TASK_SEND\",\n name: \"Направить\",\n icon: \"send\",\n visible: true,\n delimiter: true,\n tasksReload: true,\n needAccountsReload: true,\n func: onSend\n }, {\n method: \"NOTES\",\n name: \"Примечания\",\n icon: \"event_note\",\n visible: true,\n delimiter: true,\n tasksReload: false,\n needAccountsReload: false,\n func: onNotesOpen\n }, {\n method: \"FILE_LINKS\",\n name: \"Присоединенные документы\",\n icon: \"attach_file\",\n visible: true,\n delimiter: false,\n tasksReload: false,\n needAccountsReload: false,\n func: onFileLinksOpen\n }];\n};\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/layouts.js?"); /***/ }), @@ -697,7 +697,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 */ TaskDialog: () => (/* binding */ TaskDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _components_task_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Диалог формы события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Хук для события\n //Форма события\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n //Общие стили\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_CONTENT: {\n paddingBottom: \"0px\",\n maxHeight: \"740px\",\n minHeight: \"740px\",\n ..._styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог формы события\nconst TaskDialog = ({\n taskRn,\n taskType,\n taskStatus,\n editable,\n onTasksReload,\n onClose\n}) => {\n //Собственное состояние\n const [task, setTask] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useClientEvent)(taskRn, taskType, taskStatus);\n\n //Состояние заполненности всех обязательных свойств\n const [dpReady, setDPReady] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //При изменении заполненности всех обязательных свойств\n const handleDPReady = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(v => setDPReady(v), []);\n\n //При изменении информации о задаче\n const handleTaskChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newTaskValues => {\n setTask(pv => ({\n ...pv,\n ...newTaskValues\n }));\n }, [setTask]);\n\n //При добавлении события\n const handleInsertTask = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INSERT\",\n args: {\n SCRN: task.sCrn,\n SPREF: task.sPrefix,\n SNUMB: task.sNumber,\n STYPE: task.sType,\n SSTATUS: task.sStatus,\n SPLAN_DATE: task.dPlanDate,\n SINIT_PERSON: task.sInitClnperson,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n SREASON: task.sInitReason,\n CPROPS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps)\n // eslint-disable-next-line no-unused-vars\n .filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При исправлении события\n const handleUpdateEvent = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_UPDATE\",\n args: {\n NCLNEVENTS: task.nRn,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n CPROPS: {\n // eslint-disable-next-line no-unused-vars\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps).filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При считывании следующего номера события\n const handleEventNextNumbGet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_NEXTNUMB_GET\",\n args: {\n SPREFIX: task.sPrefix\n }\n });\n //Если данные есть\n if (data) {\n //Устанавливаем номер\n setTask(pv => ({\n ...pv,\n sNumber: data.SEVENT_NUMB\n }));\n }\n }, [executeStored, setTask, task.sPrefix]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n open: true,\n onClose: onClose ? onClose : null,\n fullWidth: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DIALOG_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_task_form__WEBPACK_IMPORTED_MODULE_2__.TaskForm, {\n task: task,\n taskType: taskType,\n onTaskChange: handleTaskChange,\n editable: !taskRn || editable ? true : false,\n onEventNextNumbGet: handleEventNextNumbGet,\n onDPReady: handleDPReady\n })), onClose ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_ACTIONS\n }, taskRn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleUpdateEvent(onClose).then(onTasksReload),\n disabled: task.updateDisabled || !editable || !dpReady\n }, \"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleInsertTask(onClose).then(onTasksReload),\n disabled: task.insertDisabled || !dpReady\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")) : null);\n};\n\n//Контроль свойств - Диалог формы события\nTaskDialog.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string).isRequired,\n taskStatus: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/task_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TaskDialog: () => (/* binding */ TaskDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Dialog/Dialog.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogContent/DialogContent.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/DialogActions/DialogActions.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hooks/task_dialog_hooks */ \"./app/panels/clnt_task_board/hooks/task_dialog_hooks.js\");\n/* harmony import */ var _components_task_form__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/task_form */ \"./app/panels/clnt_task_board/components/task_form.js\");\n/* harmony import */ var _context_backend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../context/backend */ \"./app/context/backend.js\");\n/* harmony import */ var _core_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../core/utils */ \"./app/core/utils.js\");\n/* harmony import */ var _styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles */ \"./app/panels/clnt_task_board/styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - УДП - Доски задач\r\n Компонент панели: Диалог формы события\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты\n //Хук для события\n //Форма события\n //Контекст взаимодействия с сервером\n //Вспомогательные функции\n //Общие стили\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n DIALOG_CONTENT: {\n paddingBottom: \"0px\",\n maxHeight: \"740px\",\n minHeight: \"740px\",\n ..._styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.SCROLL\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог формы события\nconst TaskDialog = ({\n taskRn,\n taskType,\n editable,\n onTasksReload,\n onClose\n}) => {\n //Собственное состояние\n const [task, setTask] = (0,_hooks_task_dialog_hooks__WEBPACK_IMPORTED_MODULE_1__.useClientEvent)(taskRn, taskType);\n\n //Состояние заполненности всех обязательных свойств\n const [dpReady, setDPReady] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored,\n SERV_DATA_TYPE_CLOB\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_3__[\"BackEndСtx\"]);\n\n //При изменении заполненности всех обязательных свойств\n const handleDPReady = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(v => setDPReady(v), []);\n\n //При изменении информации о задаче\n const handleTaskChange = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(newTaskValues => {\n setTask(pv => ({\n ...pv,\n ...newTaskValues\n }));\n }, [setTask]);\n\n //При добавлении события\n const handleInsertTask = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_INSERT\",\n args: {\n SCRN: task.sCrn,\n SPREF: task.sPrefix,\n SNUMB: task.sNumber,\n STYPE: task.sType,\n SSTATUS: task.sStatus,\n SPLAN_DATE: task.dPlanDate,\n SINIT_PERSON: task.sInitClnperson,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n SREASON: task.sInitReason,\n CPROPS: {\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps)\n // eslint-disable-next-line no-unused-vars\n .filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При исправлении события\n const handleUpdateEvent = async callBack => {\n await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_UPDATE\",\n args: {\n NCLNEVENTS: task.nRn,\n SCLIENT_CLIENT: task.sClntClients,\n SCLIENT_PERSON: task.sClntClnperson,\n SDESCRIPTION: task.sDescription,\n CPROPS: {\n // eslint-disable-next-line no-unused-vars\n VALUE: (0,_core_utils__WEBPACK_IMPORTED_MODULE_4__.object2Base64XML)([Object.fromEntries(Object.entries(task.docProps).filter(([_, v]) => v != ( false || \"\")))], {\n arrayNodeName: \"props\"\n }),\n SDATA_TYPE: SERV_DATA_TYPE_CLOB\n }\n }\n });\n callBack();\n };\n\n //При считывании следующего номера события\n const handleEventNextNumbGet = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n //Считываем данные\n const data = await executeStored({\n stored: \"PKG_P8PANELS_CLNTTSKBRD.CLNEVENTS_NEXTNUMB_GET\",\n args: {\n SPREFIX: task.sPrefix\n }\n });\n //Если данные есть\n if (data) {\n //Устанавливаем номер\n setTask(pv => ({\n ...pv,\n sNumber: data.SEVENT_NUMB\n }));\n }\n }, [executeStored, setTask, task.sPrefix]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n open: true,\n onClose: onClose ? onClose : null,\n fullWidth: true\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLES.DIALOG_CONTENT\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_task_form__WEBPACK_IMPORTED_MODULE_2__.TaskForm, {\n task: task,\n taskType: taskType,\n onTaskChange: handleTaskChange,\n editable: !taskRn || editable ? true : false,\n onEventNextNumbGet: handleEventNextNumbGet,\n onDPReady: handleDPReady\n })), onClose ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n sx: _styles__WEBPACK_IMPORTED_MODULE_5__.COMMON_STYLES.DIALOG_ACTIONS\n }, taskRn ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleUpdateEvent(onClose).then(onTasksReload),\n disabled: task.updateDisabled || !editable || !dpReady\n }, \"\\u0418\\u0441\\u043F\\u0440\\u0430\\u0432\\u0438\\u0442\\u044C\") : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: () => handleInsertTask(onClose).then(onTasksReload),\n disabled: task.insertDisabled || !dpReady\n }, \"\\u0414\\u043E\\u0431\\u0430\\u0432\\u0438\\u0442\\u044C\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: onClose\n }, \"\\u0417\\u0430\\u043A\\u0440\\u044B\\u0442\\u044C\")) : null);\n};\n\n//Контроль свойств - Диалог формы события\nTaskDialog.propTypes = {\n taskRn: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().number),\n taskType: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string).isRequired,\n editable: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().bool),\n onTasksReload: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired,\n onClose: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func).isRequired\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/clnt_task_board/task_dialog.js?"); /***/ }), @@ -3820,18 +3820,29 @@ 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 */ Inspector: () => (/* binding */ Inspector)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_box */ \"./app/components/editors/p8p_editor_box.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _relation_relation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../relation/relation */ \"./app/panels/query_editor/components/relation/relation.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../inspector_query_args/inspector_query_args */ \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\");\n/* harmony import */ var _inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../inspector_query_cond/inspector_query_cond */ \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\");\n/* harmony import */ var _inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../inspector_query_ents/inspector_query_ents */ \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\");\n/* harmony import */ var _inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../inspector_query_rls/inspector_query_rls */ \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\");\n/* harmony import */ var _query_area__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./query_area */ \"./app/panels/query_editor/components/inspector/query_area.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Инспектор свойств\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Контейнер параметров редактора\n //Подзаголовок группы параметров редактора\n //Описание сущности\n //Описание связи\n //Описание аргумента запроса\n //Управление аргументами запроса\n //Управление условиями отбора запроса\n //Управление сущностями запроса\n //Управление связями запроса\n //Область запроса\n\n//-----------\n//Тело модуля\n//-----------\n\n//Инспектор свойств\nconst Inspector = ({\n query,\n entity,\n relation,\n entities = [],\n args = [],\n cond = null,\n qry = \"\",\n qryMsg = \"\",\n onOptionsChanged = null\n}) => {\n //При изменении настроек запроса\n const handleOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__.P8PEditorBox, {\n title: \"Настройки запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Аргументы\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__.InspectorQueryArguments, {\n query: query,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Условия отбора\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__.InspectorQueryConditions, {\n query: query,\n cond: cond,\n entities: entities,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Сущности\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__.InspectorQueryEntities, {\n query: query,\n entity: entity,\n onOptionsChanged: handleOptionsChanged\n }), relation && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Связь\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__.InspectorQueryRelations, {\n query: query,\n relation: relation,\n onOptionsChanged: handleOptionsChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_query_area__WEBPACK_IMPORTED_MODULE_10__.QueryArea, {\n qry: qry,\n qryMsg: qryMsg\n }));\n};\n\n//Контроль свойств компонента - Инспектор свойств\nInspector.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number).isRequired,\n entity: _entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE,\n relation: _relation_relation__WEBPACK_IMPORTED_MODULE_4__.RELATION_SHAPE,\n entities: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_5__.ARGUMENT_SHAPE),\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector/inspector.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Inspector: () => (/* binding */ Inspector)\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_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_box */ \"./app/components/editors/p8p_editor_box.js\");\n/* harmony import */ var _components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../components/editors/p8p_editor_sub_header */ \"./app/components/editors/p8p_editor_sub_header.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _relation_relation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../relation/relation */ \"./app/panels/query_editor/components/relation/relation.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../inspector_query_args/inspector_query_args */ \"./app/panels/query_editor/components/inspector_query_args/inspector_query_args.js\");\n/* harmony import */ var _inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../inspector_query_cond/inspector_query_cond */ \"./app/panels/query_editor/components/inspector_query_cond/inspector_query_cond.js\");\n/* harmony import */ var _inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../inspector_query_ents/inspector_query_ents */ \"./app/panels/query_editor/components/inspector_query_ents/inspector_query_ents.js\");\n/* harmony import */ var _inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../inspector_query_rls/inspector_query_rls */ \"./app/panels/query_editor/components/inspector_query_rls/inspector_query_rls.js\");\n/* harmony import */ var _inspector_query_area_inspector_query_area__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../inspector_query_area/inspector_query_area */ \"./app/panels/query_editor/components/inspector_query_area/inspector_query_area.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 //Область SQL-выражения\n\n//-----------\n//Тело модуля\n//-----------\n\n//Инспектор свойств\nconst Inspector = ({\n query,\n entity,\n relation,\n entities = [],\n args = [],\n cond = null,\n substArgsVals = 0,\n qry = \"\",\n qryBnd = \"\",\n qryMsg = \"\",\n onOptionsChanged = null\n}) => {\n //При изменении настроек запроса\n const handleOptionsChanged = () => onOptionsChanged && onOptionsChanged();\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_box__WEBPACK_IMPORTED_MODULE_1__.P8PEditorBox, {\n title: \"Настройки запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Аргументы\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_args_inspector_query_args__WEBPACK_IMPORTED_MODULE_6__.InspectorQueryArguments, {\n query: query,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Условия отбора\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_cond_inspector_query_cond__WEBPACK_IMPORTED_MODULE_7__.InspectorQueryConditions, {\n query: query,\n cond: cond,\n entities: entities,\n args: args,\n onOptionsChanged: handleOptionsChanged\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Сущности\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_ents_inspector_query_ents__WEBPACK_IMPORTED_MODULE_8__.InspectorQueryEntities, {\n query: query,\n entity: entity,\n onOptionsChanged: handleOptionsChanged\n }), relation && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_sub_header__WEBPACK_IMPORTED_MODULE_2__.P8PEditorSubHeader, {\n title: \"Связь\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_rls_inspector_query_rls__WEBPACK_IMPORTED_MODULE_9__.InspectorQueryRelations, {\n query: query,\n relation: relation,\n onOptionsChanged: handleOptionsChanged\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_inspector_query_area_inspector_query_area__WEBPACK_IMPORTED_MODULE_10__.InspectorQueryArea, {\n query: query,\n substArgsVals: substArgsVals,\n qry: qry,\n qryBnd: qryBnd,\n qryMsg: qryMsg\n }));\n};\n\n//Контроль свойств компонента - Инспектор свойств\nInspector.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number).isRequired,\n entity: _entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE,\n relation: _relation_relation__WEBPACK_IMPORTED_MODULE_4__.RELATION_SHAPE,\n entities: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_11___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_5__.ARGUMENT_SHAPE),\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n substArgsVals: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().number),\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qryBnd: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().string),\n onOptionsChanged: (prop_types__WEBPACK_IMPORTED_MODULE_11___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector/inspector.js?"); /***/ }), -/***/ "./app/panels/query_editor/components/inspector/query_area.js": -/*!********************************************************************!*\ - !*** ./app/panels/query_editor/components/inspector/query_area.js ***! - \********************************************************************/ +/***/ "./app/panels/query_editor/components/inspector_query_area/hooks.js": +/*!**************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_area/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 */ QueryArea: () => (/* binding */ QueryArea)\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_3__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.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/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Snackbar/Snackbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Alert/Alert.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.styles */ \"./app.styles.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Область запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Компоненты MUI\n //Общие текстовые ресурсы приложения\n //Общие стили приложения\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SQL_FAB: {\n position: \"absolute\",\n bottom: 16,\n right: 16\n },\n SQL_TEXT_FIELD: {\n fontSize: \"0.9rem\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n },\n SNACKBAR_ALERT: {\n width: \"100%\"\n }\n};\n\n//Начальное состояние всплывающего сообщения\nconst SNACK_BAR_MESSAGE_INIT = {\n text: null,\n type: null\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Область запроса\nconst QueryArea = ({\n qry = \"\",\n qryMsg = \"\"\n}) => {\n //Собственное состояние - текст всплывающего сообщения\n const [snackBarMessage, setSnackBarMessage] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(SNACK_BAR_MESSAGE_INIT);\n\n //Собственное состояние - отображение области SQL запроса\n const [displaySQL, setDisplaySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - развёрнутость\n const [expanded, setExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //При нажатии на кнопку копирования текста запроса\n const handleCopyClick = async () => {\n try {\n await navigator.clipboard.writeText(qry);\n setSnackBarMessage({\n text: `Текст запроса скопирован в буфер обмена`\n });\n } catch (e) {\n setSnackBarMessage({\n text: `Ошибка копирования текста запроса в буфер обмена: ${e.message}`,\n type: \"error\"\n });\n }\n };\n\n //При нажатии на кнопку развёртывания\n const handleExpandClick = () => setExpanded(!expanded);\n\n //При нажатии на кнопку отображения SQL запроса\n const handleShowSQLClick = () => setDisplaySQL(true);\n\n //При нажатии на кнопку сокрытия SQL запроса\n const handleCloseSQLClick = () => setDisplaySQL(false);\n\n //При закрытии всплывающего сообщения\n const handleSnackBarClose = () => setSnackBarMessage(SNACK_BAR_MESSAGE_INIT);\n\n //Расчет размеров тектовых полей\n const [qryRows, qryMsgRows] = expanded ? [15, 6] : [5, 3];\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (qry || qryMsg) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n color: qryMsg ? \"warning\" : \"default\",\n sx: STYLES.SQL_FAB,\n title: \"Показать текст SQL запроса\",\n onClick: handleShowSQLClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"join_left\")), displaySQL && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n open: true,\n onClose: handleCloseSQLClick,\n anchor: \"bottom\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"row\",\n justifyContent: \"right\",\n spacing: 2\n }, qry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleCopyClick,\n title: \"Скопировать текст запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"content_copy\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleExpandClick,\n title: expanded ? \"Свернуть\" : \"Развернуть\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, expanded ? \"expand_more\" : \"expand_less\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleCloseSQLClick,\n title: _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.HIDE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null, \"close\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n direction: \"column\",\n spacing: 2\n }, qry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n label: \"Текст запроса\",\n multiline: true,\n fullWidth: true,\n value: qry,\n minRows: qryRows,\n maxRows: qryRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n }), qryMsg && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n label: \"Предупреждения\",\n color: \"warning\",\n multiline: true,\n fullWidth: true,\n value: qryMsg,\n minRows: qryMsgRows,\n maxRows: qryMsgRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n open: Boolean(snackBarMessage.text),\n autoHideDuration: 3000,\n onClose: handleSnackBarClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n severity: snackBarMessage.type || \"success\",\n sx: STYLES.SNACKBAR_ALERT,\n onClose: handleSnackBarClose\n }, snackBarMessage.text)));\n};\n\n//Контроль свойств компонента - Область запроса\nQueryArea.propTypes = {\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_12___default().string)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector/query_area.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useQuerySQLExpr: () => (/* binding */ useQuerySQLExpr)\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/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Пользовательские хуки для работы с областью SQL-выражения\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контекст взаимодействия с сервером\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с областью SQL-выражения\nconst useQuerySQLExpr = query => {\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Установка флага сокрытия/отображения значений аргументов в SQL-выражении запроса\n const toggleSubstArgsVals = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {\n await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY_OPT_SUBST_ARGS_VALS_TGL\",\n args: {\n NRN: query\n },\n loader: false\n });\n }, [query, executeStored]);\n\n //Возвращаем интерфейс хука\n return {\n toggleSubstArgsVals\n };\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_area/hooks.js?"); + +/***/ }), + +/***/ "./app/panels/query_editor/components/inspector_query_area/inspector_query_area.js": +/*!*****************************************************************************************!*\ + !*** ./app/panels/query_editor/components/inspector_query_area/inspector_query_area.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 */ InspectorQueryArea: () => (/* binding */ InspectorQueryArea)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Fab/Fab.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Icon/Icon.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Drawer/Drawer.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Box/Box.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/IconButton/IconButton.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Snackbar/Snackbar.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Alert/Alert.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _app_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.styles */ \"./app.styles.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/components/inspector_query_area/hooks.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Область SQL-выражения\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Компоненты MUI\n //Общие текстовые ресурсы приложения\n //Общие стили приложения\n //Пользовательские хуки для работы с SQL-выражением\n\n//---------\n//Константы\n//---------\n\n//Стили\nconst STYLES = {\n SQL_FAB: {\n position: \"absolute\",\n bottom: 16,\n right: 16\n },\n SQL_TEXT_FIELD: {\n fontSize: \"0.9rem\",\n ..._app_styles__WEBPACK_IMPORTED_MODULE_2__.APP_STYLES.SCROLL\n },\n SNACKBAR_ALERT: {\n width: \"100%\"\n }\n};\n\n//Начальное состояние всплывающего сообщения\nconst SNACK_BAR_MESSAGE_INIT = {\n text: null,\n type: null\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Область SQL-выражения\nconst InspectorQueryArea = ({\n query,\n substArgsVals = 0,\n qry = \"\",\n qryBnd = \"\",\n qryMsg = \"\"\n}) => {\n //Собственное состояние - отображение запроса с подстановками\n const [showQryBnd, setShowQryBnd] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(substArgsVals);\n\n //Собственное состояние - текст всплывающего сообщения\n const [snackBarMessage, setSnackBarMessage] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(SNACK_BAR_MESSAGE_INIT);\n\n //Собственное состояние - отображение области SQL запроса\n const [displaySQL, setDisplaySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - развёрнутость\n const [expanded, setExpanded] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Работа с SQL-выражением\n const {\n toggleSubstArgsVals\n } = (0,_hooks__WEBPACK_IMPORTED_MODULE_3__.useQuerySQLExpr)(query);\n\n //При нажатии на кнопку отображения/сокрытия значений аргументов в SQL-выражении запроса\n const handleToggleSubstArgsValsClick = async () => {\n await toggleSubstArgsVals();\n setShowQryBnd(showQryBnd === 1 ? 0 : 1);\n };\n\n //При нажатии на кнопку копирования текста запроса\n const handleCopyClick = async () => {\n try {\n await navigator.clipboard.writeText(qry);\n setSnackBarMessage({\n text: `Текст запроса скопирован в буфер обмена`\n });\n } catch (e) {\n setSnackBarMessage({\n text: `Ошибка копирования текста запроса в буфер обмена: ${e.message}`,\n type: \"error\"\n });\n }\n };\n\n //При нажатии на кнопку развёртывания\n const handleExpandClick = () => setExpanded(!expanded);\n\n //При нажатии на кнопку отображения SQL запроса\n const handleShowSQLClick = () => setDisplaySQL(true);\n\n //При нажатии на кнопку сокрытия SQL запроса\n const handleCloseSQLClick = () => setDisplaySQL(false);\n\n //При закрытии всплывающего сообщения\n const handleSnackBarClose = () => setSnackBarMessage(SNACK_BAR_MESSAGE_INIT);\n\n //Расчет размеров тектовых полей\n const [qryRows, qryMsgRows] = expanded ? [15, 6] : [5, 3];\n\n //Расчет параметров отображения запроса\n const [dispQry, qryViewTitle, qryViewIcon] = showQryBnd === 0 ? [qry, \"Отобразить значения аргументов\", \"code\"] : [qryBnd, \"Скрыть значения аргументов\", \"code_off\"];\n\n //При изменении состояние отображения подстановок в запросе\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setShowQryBnd(substArgsVals), [substArgsVals]);\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (qry || qryMsg) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n color: qryMsg ? \"warning\" : \"default\",\n sx: STYLES.SQL_FAB,\n title: \"Показать текст SQL запроса\",\n onClick: handleShowSQLClick\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"join_left\")), displaySQL && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n open: true,\n onClose: handleCloseSQLClick,\n anchor: \"bottom\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n p: 2\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"row\",\n justifyContent: \"right\",\n spacing: 2\n }, qry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleToggleSubstArgsValsClick,\n title: qryViewTitle\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, qryViewIcon)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleCopyClick,\n title: \"Скопировать текст запроса\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"content_copy\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleExpandClick,\n title: expanded ? \"Свернуть\" : \"Развернуть\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, expanded ? \"expand_more\" : \"expand_less\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: handleCloseSQLClick,\n title: _app_text__WEBPACK_IMPORTED_MODULE_1__.BUTTONS.HIDE\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null, \"close\"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n direction: \"column\",\n spacing: 2\n }, dispQry && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n label: \"Текст запроса\",\n multiline: true,\n fullWidth: true,\n value: dispQry,\n minRows: qryRows,\n maxRows: qryRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n }), qryMsg && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n label: \"Предупреждения\",\n color: \"warning\",\n multiline: true,\n fullWidth: true,\n value: qryMsg,\n minRows: qryMsgRows,\n maxRows: qryMsgRows,\n variant: \"standard\",\n focused: true,\n inputProps: {\n sx: STYLES.SQL_TEXT_FIELD,\n disabled: true\n }\n })))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n open: Boolean(snackBarMessage.text),\n autoHideDuration: 3000,\n onClose: handleSnackBarClose\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n severity: snackBarMessage.type || \"success\",\n sx: STYLES.SNACKBAR_ALERT,\n onClose: handleSnackBarClose\n }, snackBarMessage.text)));\n};\n\n//Контроль свойств компонента - Область SQL-выражения\nInspectorQueryArea.propTypes = {\n query: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number).isRequired,\n substArgsVals: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().number),\n qry: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n qryBnd: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string),\n qryMsg: (prop_types__WEBPACK_IMPORTED_MODULE_13___default().string)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_area/inspector_query_area.js?"); /***/ }), @@ -3842,7 +3853,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 */ ArgIUDialog: () => (/* binding */ ArgIUDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.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//Диалог добавления/исправления аргумента запроса\nconst ArgIUDialog = ({\n name = \"\",\n title = \"\",\n dataType = _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB,\n mandatory = 0,\n value = \"\",\n insert = true,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - текущее состояние аргумента\n const [current, setCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n value,\n dataType\n });\n\n //Нажатие на кнопку \"Ok\"\n const handleOk = values => onOk && onOk({\n ...values\n });\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении значений в поле ввода\n const handleInputChange = (name, value) => {\n //Если поменяли тип данных - надо пересмотреть поля для ввода\n if (name === \"dataType\") {\n //Сохраним в состоянии новый тип данных и сбросим \"отладочное значение\", ведь оно зависит от типа данных (от этого состояния зависит свойство inputs, передаваемое в P8PDialog ниже)\n setCurrent({\n dataType: value,\n value: \"\"\n });\n //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога\n return true;\n }\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${insert === true ? _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.INSERT : _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.UPDATE} аргумента`,\n inputs: [{\n name: \"name\",\n value: name,\n label: \"Имя\",\n disabled: insert != true\n }, {\n name: \"title\",\n value: title,\n label: \"Приглашение\"\n }, {\n name: \"dataType\",\n value: current.dataType,\n label: \"Тип данных\",\n list: [{\n name: \"Строка\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.STR\n }, {\n name: \"Число\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB\n }, {\n name: \"Дата\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE\n }]\n }, {\n name: \"mandatory\",\n value: mandatory,\n label: \"Обязательный\",\n list: [{\n name: \"Нет\",\n value: 0\n }, {\n name: \"Да\",\n value: 1\n }]\n }, {\n name: \"value\",\n value: current.value,\n label: \"Значение (для отладки)\",\n type: current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB ? \"number\" : current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE ? \"date\" : \"text\"\n }],\n onOk: handleOk,\n onCancel: handleCancel,\n onInputChange: handleInputChange\n });\n};\n\n//Контроль свойств - Диалог добавления/исправления аргумента запроса\nArgIUDialog.propTypes = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n title: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n mandatory: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n value: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n insert: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ArgIUDialog: () => (/* binding */ ArgIUDialog)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _app_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../app.text */ \"./app.text.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.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//Диалог добавления/исправления аргумента запроса\nconst ArgIUDialog = ({\n name = \"\",\n title = \"\",\n dataType = _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB,\n mandatory = 0,\n value = \"\",\n insert = true,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - текущие значения полей аргумента запроса\n const [current, setCurrent] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n name,\n title,\n dataType,\n mandatory,\n value\n });\n\n //Нажатие на кнопку \"Ok\"\n const handleOk = () => onOk && onOk(current);\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении значений в поле ввода\n const handleInputChange = (name, value) => {\n //Сохраним в состоянии новое значение, если сменили тип данных - сбросим \"отладочное значение\"\n setCurrent(pv => ({\n ...pv,\n [name]: value,\n ...(name === \"dataType\" ? {\n value: \"\"\n } : {})\n }));\n //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога\n return true;\n };\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `${insert === true ? _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.INSERT : _app_text__WEBPACK_IMPORTED_MODULE_2__.TITLES.UPDATE} аргумента`,\n inputs: [{\n name: \"name\",\n value: current.name,\n label: \"Имя\",\n disabled: insert != true\n }, {\n name: \"title\",\n value: current.title,\n label: \"Приглашение\"\n }, {\n name: \"dataType\",\n value: current.dataType,\n label: \"Тип данных\",\n list: [{\n name: \"Строка\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.STR\n }, {\n name: \"Число\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB\n }, {\n name: \"Дата\",\n value: _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE\n }]\n }, {\n name: \"mandatory\",\n value: current.mandatory,\n label: \"Обязательный\",\n list: [{\n name: \"Нет\",\n value: 0\n }, {\n name: \"Да\",\n value: 1\n }]\n }, {\n name: \"value\",\n value: current.value,\n label: \"Значение (для отладки)\",\n type: current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.NUMB ? \"number\" : current.dataType === _common__WEBPACK_IMPORTED_MODULE_3__.DATA_TYPE.DATE ? \"date\" : \"text\"\n }],\n onOk: handleOk,\n onCancel: handleCancel,\n onInputChange: handleInputChange\n });\n};\n\n//Контроль свойств - Диалог добавления/исправления аргумента запроса\nArgIUDialog.propTypes = {\n name: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n title: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n dataType: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n mandatory: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().number),\n value: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),\n insert: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js?"); /***/ }), @@ -3941,7 +3952,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 */ QueryCondDialog: () => (/* binding */ QueryCondDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cond_operation_buttons */ \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\");\n/* harmony import */ var _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cond_component_select_button */ \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Диалог настройки условий отбора запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Типовой диалог\n //Общие ресурсы и константы редактора запросов\n //Описание сущности\n //Описание аргумента запроса\n //Кнопки операций условия отбора\n //Кнопка выбора компонента условия\n\n//---------\n//Константы\n//---------\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_2__.DATA_TYPE_ICON,\n DEFAULT: \"category\"\n};\n\n//Стили\nconst STYLE = {\n BUTTONS_STACK: {\n width: \"550px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог настройки условий отбора запроса\nconst QueryCondDialog = ({\n cond,\n entities,\n args,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - условия отбора\n const [conditions, setConditions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(cond || \"\");\n\n //Ссылка на элемент ввода условия\n const coditionInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Перемещение курсора в конец поля ввода условия\n const moveCondCursorToEnd = () => {\n if (coditionInputRef.current) {\n const length = coditionInputRef.current.value.length;\n coditionInputRef.current.setSelectionRange(length, length);\n coditionInputRef.current.focus();\n }\n };\n\n //Нажатие на кнопку \"ОК\"\n const handleOk = () => onOk && onOk(conditions);\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении условия через компонент\n const handleChange = e => setConditions(e.target.value);\n\n //При выборе компонента условия\n const handleComponentSelected = value => {\n setConditions(pv => pv + value);\n moveCondCursorToEnd();\n };\n\n //При нажатии на кнопку операции\n const handleOperationButtonClick = value => {\n setConditions(pv => pv + value);\n moveCondCursorToEnd();\n };\n\n //При нажатии на кнопку очистки условий\n const handleClearClick = () => setConditions(\"\");\n\n //При подмонтировании компонента\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Перевод курсора в конец обёрнут в setTimeout по тому, что Input подмонтируется позднее диалога (он внутри children)\n setTimeout(moveCondCursorToEnd, 100);\n }, []);\n\n //Доступные атрибуты сущностей запроса\n const entsAttributes = entities && entities?.length > 0 ? entities.reduce((components, e) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.DIVIDER,\n title: e.title\n }, ...e.attrs.map(a => ({\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: a.id,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }))], []) : [];\n const entsAttributesExists = entsAttributes.find(a => a.type === _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM) ? true : false;\n\n //Доступные аргументы запроса\n const queryArguments = args && args?.length > 0 ? args.reduce((components, a) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: `:${a.name}`,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }], []) : [];\n const queryArgumentsExists = queryArguments.length > 0 ? true : false;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `Условия отбора запроса`,\n onOk: handleOk,\n onCancel: handleCancel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, entsAttributesExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Атрибут сущности\",\n components: entsAttributes,\n onSelect: handleComponentSelected\n }), queryArgumentsExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Аргумент запроса\",\n components: queryArguments,\n onSelect: handleComponentSelected\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleClearClick\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"=\",\n title: \"Равно\",\n value: \" = \"\n }, {\n caption: \"<>\",\n title: \"Не равно\",\n value: \" <> \"\n }, {\n caption: \">\",\n title: \"Больше\",\n value: \" > \"\n }, {\n caption: \">=\",\n title: \"Больше или равно\",\n value: \" >= \"\n }, {\n caption: \"<\",\n title: \"Меньше\",\n value: \" < \"\n }, {\n caption: \"<=\",\n title: \"Меньше или равно\",\n value: \" <= \"\n }, {\n caption: \"(\",\n title: \"Открывающая скобка\",\n value: \"(\"\n }, {\n caption: \")\",\n title: \"Закрывающая скобка\",\n value: \")\"\n }],\n onClick: handleOperationButtonClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"И\",\n title: \"Логическое умножение (конъюнкция)\",\n value: \" and \"\n }, {\n caption: \"ИЛИ\",\n title: \"Логическое сложение (дизъюнкция)\",\n value: \" or \"\n }, {\n caption: \"НЕ\",\n title: \"Отрицание (инверсия)\",\n value: \" not \"\n }, {\n caption: \"B\",\n title: \"Входит в диапазон\",\n value: \" in (0, 1, ...) \"\n }],\n onClick: handleOperationButtonClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n inputRef: coditionInputRef,\n focused: true,\n autoFocus: true,\n value: conditions,\n placeholder: \"Настройте условия отбора...\",\n multiline: true,\n minRows: 10,\n fullWidth: true,\n onChange: handleChange\n }));\n};\n\n//Контроль свойств - Диалог настройки условий отбора запроса\nQueryCondDialog.propTypes = {\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n entities: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_SHAPE),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueryCondDialog: () => (/* binding */ QueryCondDialog)\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_10__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Stack/Stack.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/Button/Button.js\");\n/* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @mui/material */ \"./node_modules/@mui/material/TextField/TextField.js\");\n/* harmony import */ var _components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../components/p8p_dialog */ \"./app/components/p8p_dialog.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../common */ \"./app/panels/query_editor/common.js\");\n/* harmony import */ var _entity_entity__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../entity/entity */ \"./app/panels/query_editor/components/entity/entity.js\");\n/* harmony import */ var _argument_argument__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../argument/argument */ \"./app/panels/query_editor/components/argument/argument.js\");\n/* harmony import */ var _cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./cond_operation_buttons */ \"./app/panels/query_editor/components/inspector_query_cond/cond_operation_buttons.js\");\n/* harmony import */ var _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./cond_component_select_button */ \"./app/panels/query_editor/components/inspector_query_cond/cond_component_select_button.js\");\n/*\r\n Парус 8 - Панели мониторинга - Редактор запросов\r\n Компонент: Диалог настройки условий отбора запроса\r\n*/\n\n//---------------------\n//Подключение библиотек\n//---------------------\n\n //Классы React\n //Контроль свойств компонента\n //Интерфейсные компоненты MUI\n //Типовой диалог\n //Общие ресурсы и константы редактора запросов\n //Описание сущности\n //Описание аргумента запроса\n //Кнопки операций условия отбора\n //Кнопка выбора компонента условия\n\n//---------\n//Константы\n//---------\n\n//Иконки\nconst ICONS = {\n ..._common__WEBPACK_IMPORTED_MODULE_2__.DATA_TYPE_ICON,\n DEFAULT: \"category\"\n};\n\n//Стили\nconst STYLE = {\n BUTTONS_STACK: {\n width: \"550px\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Диалог настройки условий отбора запроса\nconst QueryCondDialog = ({\n cond,\n entities,\n args,\n onOk,\n onCancel\n}) => {\n //Собственное состояние - условия отбора\n const [conditions, setConditions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(cond || \"\");\n\n //Ссылка на элемент ввода условия\n const coditionInputRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n\n //Перемещение курсора в конец поля ввода условия\n const moveCondCursorToEnd = () => {\n if (coditionInputRef.current) {\n const length = coditionInputRef.current.value.length;\n coditionInputRef.current.setSelectionRange(length, length);\n coditionInputRef.current.focus();\n }\n };\n\n //Добавление значения в редактор по месту курсора\n const addCondValueToCursor = value => {\n let newValue = conditions + value;\n if (coditionInputRef.current) {\n newValue = coditionInputRef.current.value;\n newValue = newValue.substring(0, coditionInputRef.current.selectionStart) + value + newValue.substring(coditionInputRef.current.selectionEnd);\n coditionInputRef.current.value = newValue;\n }\n moveCondCursorToEnd();\n setConditions(newValue);\n };\n\n //Нажатие на кнопку \"ОК\"\n const handleOk = () => onOk && onOk(conditions);\n\n //Нажатие на кнопку \"Отмена\"\n const handleCancel = () => onCancel && onCancel();\n\n //При изменении условия через компонент\n const handleChange = e => setConditions(e.target.value);\n\n //При выборе компонента условия\n const handleComponentSelected = value => addCondValueToCursor(value);\n\n //При нажатии на кнопку операции\n const handleOperationButtonClick = value => addCondValueToCursor(value);\n\n //При нажатии на кнопку очистки условий\n const handleClearClick = () => setConditions(\"\");\n\n //При подмонтировании компонента\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Перевод курсора в конец обёрнут в setTimeout по тому, что Input подмонтируется позднее диалога (он внутри children)\n setTimeout(moveCondCursorToEnd, 100);\n }, []);\n\n //Доступные атрибуты сущностей запроса\n const entsAttributes = entities && entities?.length > 0 ? entities.reduce((components, e) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.DIVIDER,\n title: e.title\n }, ...e.attrs.map(a => ({\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: a.id,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }))], []) : [];\n const entsAttributesExists = entsAttributes.find(a => a.type === _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM) ? true : false;\n\n //Доступные аргументы запроса\n const queryArguments = args && args?.length > 0 ? args.reduce((components, a) => [...components, {\n type: _cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.COMPONENT_TYPE.ITEM,\n title: a.title,\n name: a.name,\n value: `:${a.name}`,\n icon: ICONS[a.dataType] || ICONS.DEFAULT\n }], []) : [];\n const queryArgumentsExists = queryArguments.length > 0 ? true : false;\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_p8p_dialog__WEBPACK_IMPORTED_MODULE_1__.P8PDialog, {\n title: `Условия отбора запроса`,\n onOk: handleOk,\n onCancel: handleCancel\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, entsAttributesExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Атрибут сущности\",\n components: entsAttributes,\n onSelect: handleComponentSelected\n }), queryArgumentsExists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_component_select_button__WEBPACK_IMPORTED_MODULE_6__.CondComponentSelectButton, {\n caption: \"Аргумент запроса\",\n components: queryArguments,\n onSelect: handleComponentSelected\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: handleClearClick\n }, \"\\u041E\\u0447\\u0438\\u0441\\u0442\\u0438\\u0442\\u044C\")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n sx: STYLE.BUTTONS_STACK,\n direction: \"row\",\n spacing: 1,\n pb: 1\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"=\",\n title: \"Равно\",\n value: \" = \"\n }, {\n caption: \"<>\",\n title: \"Не равно\",\n value: \" <> \"\n }, {\n caption: \">\",\n title: \"Больше\",\n value: \" > \"\n }, {\n caption: \">=\",\n title: \"Больше или равно\",\n value: \" >= \"\n }, {\n caption: \"<\",\n title: \"Меньше\",\n value: \" < \"\n }, {\n caption: \"<=\",\n title: \"Меньше или равно\",\n value: \" <= \"\n }, {\n caption: \"(\",\n title: \"Открывающая скобка\",\n value: \"(\"\n }, {\n caption: \")\",\n title: \"Закрывающая скобка\",\n value: \")\"\n }],\n onClick: handleOperationButtonClick\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_cond_operation_buttons__WEBPACK_IMPORTED_MODULE_5__.CondOperationButtons, {\n buttons: [{\n caption: \"И\",\n title: \"Логическое умножение (конъюнкция)\",\n value: \" and \"\n }, {\n caption: \"ИЛИ\",\n title: \"Логическое сложение (дизъюнкция)\",\n value: \" or \"\n }, {\n caption: \"НЕ\",\n title: \"Отрицание (инверсия)\",\n value: \" not \"\n }, {\n caption: \"B\",\n title: \"Входит в диапазон\",\n value: \" in (0, 1, ...) \"\n }],\n onClick: handleOperationButtonClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n inputRef: coditionInputRef,\n focused: true,\n autoFocus: true,\n value: conditions,\n placeholder: \"Настройте условия отбора...\",\n multiline: true,\n minRows: 10,\n fullWidth: true,\n onChange: handleChange\n }));\n};\n\n//Контроль свойств - Диалог настройки условий отбора запроса\nQueryCondDialog.propTypes = {\n cond: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().string),\n onOk: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func),\n entities: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_entity_entity__WEBPACK_IMPORTED_MODULE_3__.ENTITY_SHAPE),\n args: prop_types__WEBPACK_IMPORTED_MODULE_10___default().arrayOf(_argument_argument__WEBPACK_IMPORTED_MODULE_4__.ARGUMENT_SHAPE),\n onCancel: (prop_types__WEBPACK_IMPORTED_MODULE_10___default().func)\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/components/inspector_query_cond/query_cond_dialog.js?"); /***/ }), @@ -4128,7 +4139,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 */ useQuery: () => (/* binding */ useQuery)\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 _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./app/panels/query_editor/common.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 NODE_WIDTH = 250;\n\n//Высота единицы состава группового элемента диаграммы\nconst GROUP_NODE_ITEM_HEIGHT = 50;\n\n//Стили\nconst STYLES = {\n ATTRIBUTE: isLast => ({\n borderBottom: isLast ? \"none\" : \"1px solid #dee2e6\"\n })\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Конвертация серверного описания сущностей запроса в элементы диаграммы\nconst serverEntity2QueryDiagramNodes = entity => {\n //Ссылка на атрибуты\n const attrs = entity.attrs || [];\n //Количество атрибутов\n const attrsCount = attrs.length;\n //Высота группового элемента диаграммы\n const entityNodeHeight = GROUP_NODE_ITEM_HEIGHT + attrsCount * GROUP_NODE_ITEM_HEIGHT;\n //Элемент диаграммы для сущности (групповой элемент)\n const entityNode = {\n id: entity.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ENTITY,\n data: {\n ...entity\n },\n position: {\n x: entity.x,\n y: entity.y\n },\n style: {\n width: NODE_WIDTH,\n height: entityNodeHeight\n },\n draggable: true\n };\n //Элементы диаграммы для атрибутов сущности (состав группового элемента)\n const attrsNodes = attrs.map((attr, index, attrs) => ({\n id: attr.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ATTRIBUTE,\n data: {\n ...attr\n },\n position: {\n x: 1,\n y: GROUP_NODE_ITEM_HEIGHT * (index + 1)\n },\n parentId: entity.id,\n extent: \"parent\",\n style: {\n width: NODE_WIDTH - 2,\n height: GROUP_NODE_ITEM_HEIGHT,\n ...STYLES.ATTRIBUTE(index === attrs.length - 1)\n },\n draggable: false,\n selectable: true\n }));\n //Возвращаем элемент для сущности (групповой) и элементы для атрибутов (состав группового)\n return [entityNode, ...attrsNodes];\n};\n\n//Конвертация серверного описания запроса в данные для редактора диаграмм\nconst serverQueryData2QueryDiagram = (entities, relations) => {\n //Инициализация результата\n const result = {\n entities: [],\n relations: [],\n nodes: [],\n edges: []\n };\n //Сущности (почти как есть на сервере, только массив XATTRS.XATTR перемещается в attrs)\n result.entities = entities.map(e => {\n const tmp = {\n ...e\n };\n tmp.attrs = tmp?.XATTRS?.XATTR?.map(a => ({\n ...a\n })) || [];\n delete tmp.XATTRS;\n return tmp;\n });\n //Связи сущностей\n result.relations = relations.map(r => ({\n ...r\n }));\n //Элементы для диаграммы\n result.entities.forEach(entity => {\n const nodes = serverEntity2QueryDiagramNodes(entity);\n result.nodes = [...result.nodes, ...nodes];\n });\n //Грани для диаграммы\n result.edges = relations.map(r => ({\n ...r,\n animated: r.mandatory === 1 ? false : true\n }));\n //Вернем итоговый результат\n return result;\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с метаданными запроса\nconst useQuery = query => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные диаграммы\n const [queryDiagram, setQueryDiagram] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные настроек\n const [queryOption, setQueryOption] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные SQL-запроса\n const [querySQL, setQuerySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY\",\n args: {\n NRN: query\n },\n respArg: \"COUT\",\n isArray: name => [\"XENT\", \"XATTR\", \"XRL\", \"XARG\"].includes(name),\n attributeValueProcessor: (name, val) => [\"value\"].includes(name) ? undefined : val,\n loader: true\n });\n setQueryDiagram(serverQueryData2QueryDiagram(data?.XENTS?.XENT || [], data?.XRLS?.XRL || []));\n setQueryOption({\n args: data?.XOPT?.XARGS?.XARG || [],\n cond: data?.XOPT?.XCOND || null\n });\n setQuerySQL({\n qry: data?.XQRY,\n qryMsg: data?.XQRY_MSG\n });\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh) if (query)\n //Если есть для чего получать данные\n loadData();\n //Нет идентификатора запроса - нет данных\n else {\n setQueryDiagram(null);\n setQueryOption(null);\n setQuerySQL(null);\n }\n }, [refresh, query, executeStored]);\n\n //При изменении входных свойств - поднимаем флаг обновления\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setRefresh(true), [query]);\n\n //Возвращаем интерфейс хука\n return [queryDiagram, queryOption, querySQL, doRefresh, isLoading, isInit];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/hooks.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useQuery: () => (/* binding */ useQuery)\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 _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./common */ \"./app/panels/query_editor/common.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 NODE_WIDTH = 250;\n\n//Высота единицы состава группового элемента диаграммы\nconst GROUP_NODE_ITEM_HEIGHT = 50;\n\n//Стили\nconst STYLES = {\n ATTRIBUTE: isLast => ({\n borderBottom: isLast ? \"none\" : \"1px solid #dee2e6\"\n })\n};\n\n//------------------------------------\n//Вспомогательные функции и компоненты\n//------------------------------------\n\n//Конвертация серверного описания сущностей запроса в элементы диаграммы\nconst serverEntity2QueryDiagramNodes = entity => {\n //Ссылка на атрибуты\n const attrs = entity.attrs || [];\n //Количество атрибутов\n const attrsCount = attrs.length;\n //Высота группового элемента диаграммы\n const entityNodeHeight = GROUP_NODE_ITEM_HEIGHT + attrsCount * GROUP_NODE_ITEM_HEIGHT;\n //Элемент диаграммы для сущности (групповой элемент)\n const entityNode = {\n id: entity.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ENTITY,\n data: {\n ...entity\n },\n position: {\n x: entity.x,\n y: entity.y\n },\n style: {\n width: NODE_WIDTH,\n height: entityNodeHeight\n },\n draggable: true\n };\n //Элементы диаграммы для атрибутов сущности (состав группового элемента)\n const attrsNodes = attrs.map((attr, index, attrs) => ({\n id: attr.id,\n type: _common__WEBPACK_IMPORTED_MODULE_2__.NODE_TYPE.ATTRIBUTE,\n data: {\n ...attr\n },\n position: {\n x: 1,\n y: GROUP_NODE_ITEM_HEIGHT * (index + 1)\n },\n parentId: entity.id,\n extent: \"parent\",\n style: {\n width: NODE_WIDTH - 2,\n height: GROUP_NODE_ITEM_HEIGHT,\n ...STYLES.ATTRIBUTE(index === attrs.length - 1)\n },\n draggable: false,\n selectable: true\n }));\n //Возвращаем элемент для сущности (групповой) и элементы для атрибутов (состав группового)\n return [entityNode, ...attrsNodes];\n};\n\n//Конвертация серверного описания запроса в данные для редактора диаграмм\nconst serverQueryData2QueryDiagram = (entities, relations) => {\n //Инициализация результата\n const result = {\n entities: [],\n relations: [],\n nodes: [],\n edges: []\n };\n //Сущности (почти как есть на сервере, только массив XATTRS.XATTR перемещается в attrs)\n result.entities = entities.map(e => {\n const tmp = {\n ...e\n };\n tmp.attrs = tmp?.XATTRS?.XATTR?.map(a => ({\n ...a\n })) || [];\n delete tmp.XATTRS;\n return tmp;\n });\n //Связи сущностей\n result.relations = relations.map(r => ({\n ...r\n }));\n //Элементы для диаграммы\n result.entities.forEach(entity => {\n const nodes = serverEntity2QueryDiagramNodes(entity);\n result.nodes = [...result.nodes, ...nodes];\n });\n //Грани для диаграммы\n result.edges = relations.map(r => ({\n ...r,\n animated: r.mandatory === 1 ? false : true\n }));\n //Вернем итоговый результат\n return result;\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Работа с метаданными запроса\nconst useQuery = query => {\n //Собственное состояние - флаг инициализированности\n const [isInit, setInit] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг загрузки\n const [isLoading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Собственное состояние - флаг необходимости обновления\n const [refresh, setRefresh] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Собственное состояние - данные диаграммы\n const [queryDiagram, setQueryDiagram] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные настроек\n const [queryOption, setQueryOption] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Собственное состояние - данные SQL-запроса\n const [querySQL, setQuerySQL] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Подключение к контексту взаимодействия с сервером\n const {\n executeStored\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_backend__WEBPACK_IMPORTED_MODULE_1__[\"BackEndСtx\"]);\n\n //Обновление данных\n const doRefresh = () => setRefresh(true);\n\n //При необходимости получить/обновить данные\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {\n //Загрузка данных с сервера\n const loadData = async () => {\n try {\n setLoading(true);\n const data = await executeStored({\n stored: \"PKG_P8PANELS_QE.QUERY\",\n args: {\n NRN: query\n },\n respArg: \"COUT\",\n isArray: name => [\"XENT\", \"XATTR\", \"XRL\", \"XARG\"].includes(name),\n attributeValueProcessor: (name, val) => [\"value\"].includes(name) ? undefined : val,\n loader: true\n });\n setQueryDiagram(serverQueryData2QueryDiagram(data?.XENTS?.XENT || [], data?.XRLS?.XRL || []));\n setQueryOption({\n args: data?.XOPT?.XARGS?.XARG || [],\n cond: data?.XOPT?.XCOND || null,\n substArgsVals: data?.XOPT?.XSUBST_ARGS_VALS || 0\n });\n setQuerySQL({\n qry: data?.XQRY,\n qryBnd: data?.XQRY_BND,\n qryMsg: data?.XQRY_MSG\n });\n setInit(true);\n } finally {\n setRefresh(false);\n setLoading(false);\n }\n };\n //Если надо обновить\n if (refresh) if (query)\n //Если есть для чего получать данные\n loadData();\n //Нет идентификатора запроса - нет данных\n else {\n setQueryDiagram(null);\n setQueryOption(null);\n setQuerySQL(null);\n }\n }, [refresh, query, executeStored]);\n\n //При изменении входных свойств - поднимаем флаг обновления\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => setRefresh(true), [query]);\n\n //Возвращаем интерфейс хука\n return [queryDiagram, queryOption, querySQL, doRefresh, isLoading, isInit];\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/hooks.js?"); /***/ }), @@ -4150,7 +4161,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 */ QueryEditor: () => (/* binding */ QueryEditor)\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/Box/Box.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 _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/editors/p8p_editor_toolbar */ \"./app/components/editors/p8p_editor_toolbar.js\");\n/* harmony import */ var _components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/query_diagram/query_diagram */ \"./app/panels/query_editor/components/query_diagram/query_diagram.js\");\n/* harmony import */ var _components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/inspector/inspector */ \"./app/panels/query_editor/components/inspector/inspector.js\");\n/* harmony import */ var _components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/queries_manager/queries_manager */ \"./app/panels/query_editor/components/queries_manager/queries_manager.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/hooks.js\");\n/* harmony import */ var _components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/inspector_query_rls/hooks */ \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\");\n/* harmony import */ var _components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/inspector_query_ents/hooks */ \"./app/panels/query_editor/components/inspector_query_ents/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 //Интерфейсные компоненты MUI\n //Контекст взаимодействия с приложением\n //Компоненты рабочего стола\n //Панель инструментов редактора\n //Диаграмма запроса\n //Инспектор свойств\n //Менеджер запросов\n //Хуки для работы с метаданными запроса на сервере\n //Хуки для работы со связями запроса на сервере\n //Хуки для работы с сущностями запроса на сервере\n\n//---------\n//Константы\n//---------\n\n//Заголовок панели по умолчанию\nconst APP_BAR_TITLE_DEFAULT = \"Редактор запросов\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\"\n },\n GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__.APP_BAR_HEIGHT})`\n },\n GRID_ITEM_INSPECTOR: {\n backgroundColor: \"#e9ecef\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневой компонент редактора запросов\nconst QueryEditor = () => {\n //Текущий запрос\n const [query, setQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Текущая сущность\n const [entity, setEntity] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Текущая связь\n const [relation, setRelation] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Отображения менеджера запросов\n const [openQueriesManager, setOpenQueriesManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);\n\n //Получение метаданных с описанием запроса\n const [queryDiagram, queryOption, querySQL, doRefresh] = (0,_hooks__WEBPACK_IMPORTED_MODULE_7__.useQuery)(query);\n\n //Работа с сущностями на сервере\n const {\n removeEnt,\n setEntPosition\n } = (0,_components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__.useQueryEntities)(query);\n\n //Работа со связями на сервере\n const {\n addRl,\n removeRl\n } = (0,_components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__.useQueryRelations)(query);\n\n //Подключение к контексту приложения\n const {\n setAppBarTitle\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Выбор сущности\n const selectEntity = ent => {\n setRelation(null);\n const queryEnt = queryDiagram.entities.find(e => e.id === ent);\n if (queryEnt) setEntity({\n ...queryEnt\n });\n };\n\n //Выбор связи\n const selectRelation = rl => {\n setEntity(null);\n const queryRl = queryDiagram.relations.find(r => r.id === rl);\n if (queryRl) setRelation({\n ...queryRl\n });\n };\n\n //Сброс выбора связи и сущности\n const cleanupEnRlSelection = () => {\n setRelation(null);\n setEntity(null);\n };\n\n //Обработка изменения положения сущности на диаграмме\n const handleEntityPositionChange = (ent, position) => setEntPosition(ent, position.x, position.y);\n\n //Обработка удаления сущности из запроса\n const handleEntityRemove = async ent => {\n await removeEnt(ent);\n if (entity && entity?.id === ent) cleanupEnRlSelection();\n doRefresh();\n };\n\n //Обработка выделения сущности\n const handleEntityClick = ent => selectEntity(ent);\n\n //Обработка выделения тарибута сущности\n const handleEntityAttrClick = ent => selectEntity(ent);\n\n //Обработка выделения связи\n const handleRelationClick = rl => selectRelation(rl);\n\n //Обработка добавления отношения cущностей\n const handleRelationAdd = async (source, target) => {\n cleanupEnRlSelection();\n await addRl(source, target);\n doRefresh();\n };\n\n //Обработка удаления отношения cущностей\n const handleRelationRemove = async rl => {\n await removeRl(rl);\n if (relation && relation?.id === rl) cleanupEnRlSelection();\n doRefresh();\n };\n\n //При нажатии на панели (пустом месте) диаграммы запроса\n const handlePaneClick = () => cleanupEnRlSelection();\n\n //Открытие менеджера запросов\n const handleOpenQueriesManager = () => setOpenQueriesManager(true);\n\n //Закрытие менеджера запросов\n const handleCancelQueriesManager = () => setOpenQueriesManager(false);\n\n //Закрытие запроса\n const handleQueryClose = () => {\n setAppBarTitle(APP_BAR_TITLE_DEFAULT);\n cleanupEnRlSelection();\n setQuery(null);\n };\n\n //При выборе запроса\n const handleQuerySelect = ({\n rn,\n name\n }) => {\n setAppBarTitle(`Запрос [${name}]`);\n setQuery(rn);\n setOpenQueriesManager(false);\n cleanupEnRlSelection();\n };\n\n //При изменении свойств запроса\n const handleQueryOptionsChanged = () => {\n cleanupEnRlSelection();\n doRefresh();\n };\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__.P8PEditorToolBar, {\n items: [{\n icon: \"file_open\",\n title: \"Менеджер запросов\",\n onClick: handleOpenQueriesManager\n }, {\n icon: \"close\",\n title: \"Закрыть запрос\",\n onClick: handleQueryClose,\n disabled: !query\n }]\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CONTAINER\n }, openQueriesManager && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__.QueriesManager, {\n current: query,\n onQuerySelect: handleQuerySelect,\n onCancel: handleCancelQueriesManager\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n container: true,\n sx: STYLES.GRID_CONTAINER,\n columns: 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 20\n }, queryDiagram && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__.QueryDiagram, {\n nodes: queryDiagram?.nodes,\n edges: queryDiagram?.edges,\n onEntityClick: handleEntityClick,\n onEntityAttrClick: handleEntityAttrClick,\n onEntityPositionChange: handleEntityPositionChange,\n onEntityRemove: handleEntityRemove,\n onRelactionClick: handleRelationClick,\n onRelationAdd: handleRelationAdd,\n onRelationRemove: handleRelationRemove,\n onPaneClick: handlePaneClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, query && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__.Inspector, _extends({}, queryOption, querySQL, {\n query: query,\n entity: entity,\n relation: relation,\n entities: queryDiagram?.entities,\n onOptionsChanged: handleQueryOptionsChanged\n })))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/query_editor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ QueryEditor: () => (/* binding */ QueryEditor)\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/Box/Box.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 _context_application__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../context/application */ \"./app/context/application.js\");\n/* harmony import */ var _components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/p8p_app_workspace */ \"./app/components/p8p_app_workspace.js\");\n/* harmony import */ var _components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/editors/p8p_editor_toolbar */ \"./app/components/editors/p8p_editor_toolbar.js\");\n/* harmony import */ var _components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/query_diagram/query_diagram */ \"./app/panels/query_editor/components/query_diagram/query_diagram.js\");\n/* harmony import */ var _components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/inspector/inspector */ \"./app/panels/query_editor/components/inspector/inspector.js\");\n/* harmony import */ var _components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/queries_manager/queries_manager */ \"./app/panels/query_editor/components/queries_manager/queries_manager.js\");\n/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./hooks */ \"./app/panels/query_editor/hooks.js\");\n/* harmony import */ var _components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/inspector_query_rls/hooks */ \"./app/panels/query_editor/components/inspector_query_rls/hooks.js\");\n/* harmony import */ var _components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/inspector_query_ents/hooks */ \"./app/panels/query_editor/components/inspector_query_ents/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 //Интерфейсные компоненты MUI\n //Контекст взаимодействия с приложением\n //Компоненты рабочего стола\n //Панель инструментов редактора\n //Диаграмма запроса\n //Инспектор свойств\n //Менеджер запросов\n //Хуки для работы с метаданными запроса на сервере\n //Хуки для работы со связями запроса на сервере\n //Хуки для работы с сущностями запроса на сервере\n\n//---------\n//Константы\n//---------\n\n//Заголовок панели по умолчанию\nconst APP_BAR_TITLE_DEFAULT = \"Редактор запросов\";\n\n//Стили\nconst STYLES = {\n CONTAINER: {\n display: \"flex\"\n },\n GRID_CONTAINER: {\n height: `calc(100vh - ${_components_p8p_app_workspace__WEBPACK_IMPORTED_MODULE_2__.APP_BAR_HEIGHT})`\n },\n GRID_ITEM_INSPECTOR: {\n backgroundColor: \"#e9ecef\"\n }\n};\n\n//-----------\n//Тело модуля\n//-----------\n\n//Корневой компонент редактора запросов\nconst QueryEditor = () => {\n //Текущий запрос\n const [query, setQuery] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(154598792);\n\n //Текущая сущность\n const [entity, setEntity] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Текущая связь\n const [relation, setRelation] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);\n\n //Отображения менеджера запросов\n const [openQueriesManager, setOpenQueriesManager] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n\n //Получение метаданных с описанием запроса\n const [queryDiagram, queryOption, querySQL, doRefresh] = (0,_hooks__WEBPACK_IMPORTED_MODULE_7__.useQuery)(query);\n\n //Работа с сущностями на сервере\n const {\n removeEnt,\n setEntPosition\n } = (0,_components_inspector_query_ents_hooks__WEBPACK_IMPORTED_MODULE_9__.useQueryEntities)(query);\n\n //Работа со связями на сервере\n const {\n addRl,\n removeRl\n } = (0,_components_inspector_query_rls_hooks__WEBPACK_IMPORTED_MODULE_8__.useQueryRelations)(query);\n\n //Подключение к контексту приложения\n const {\n setAppBarTitle\n } = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_context_application__WEBPACK_IMPORTED_MODULE_1__[\"ApplicationСtx\"]);\n\n //Выбор сущности\n const selectEntity = ent => {\n setRelation(null);\n const queryEnt = queryDiagram.entities.find(e => e.id === ent);\n if (queryEnt) setEntity({\n ...queryEnt\n });\n };\n\n //Выбор связи\n const selectRelation = rl => {\n setEntity(null);\n const queryRl = queryDiagram.relations.find(r => r.id === rl);\n if (queryRl) setRelation({\n ...queryRl\n });\n };\n\n //Сброс выбора связи и сущности\n const cleanupEnRlSelection = () => {\n setRelation(null);\n setEntity(null);\n };\n\n //Обработка изменения положения сущности на диаграмме\n const handleEntityPositionChange = (ent, position) => setEntPosition(ent, position.x, position.y);\n\n //Обработка удаления сущности из запроса\n const handleEntityRemove = async ent => {\n await removeEnt(ent);\n if (entity && entity?.id === ent) cleanupEnRlSelection();\n doRefresh();\n };\n\n //Обработка выделения сущности\n const handleEntityClick = ent => selectEntity(ent);\n\n //Обработка выделения тарибута сущности\n const handleEntityAttrClick = ent => selectEntity(ent);\n\n //Обработка выделения связи\n const handleRelationClick = rl => selectRelation(rl);\n\n //Обработка добавления отношения cущностей\n const handleRelationAdd = async (source, target) => {\n cleanupEnRlSelection();\n await addRl(source, target);\n doRefresh();\n };\n\n //Обработка удаления отношения cущностей\n const handleRelationRemove = async rl => {\n await removeRl(rl);\n if (relation && relation?.id === rl) cleanupEnRlSelection();\n doRefresh();\n };\n\n //При нажатии на панели (пустом месте) диаграммы запроса\n const handlePaneClick = () => cleanupEnRlSelection();\n\n //Открытие менеджера запросов\n const handleOpenQueriesManager = () => setOpenQueriesManager(true);\n\n //Закрытие менеджера запросов\n const handleCancelQueriesManager = () => setOpenQueriesManager(false);\n\n //Закрытие запроса\n const handleQueryClose = () => {\n setAppBarTitle(APP_BAR_TITLE_DEFAULT);\n cleanupEnRlSelection();\n setQuery(null);\n };\n\n //При выборе запроса\n const handleQuerySelect = ({\n rn,\n name\n }) => {\n setAppBarTitle(`Запрос [${name}]`);\n setQuery(rn);\n setOpenQueriesManager(false);\n cleanupEnRlSelection();\n };\n\n //При изменении свойств запроса\n const handleQueryOptionsChanged = () => {\n cleanupEnRlSelection();\n doRefresh();\n };\n\n //Панель инструмментов\n const toolBar = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_editors_p8p_editor_toolbar__WEBPACK_IMPORTED_MODULE_3__.P8PEditorToolBar, {\n items: [{\n icon: \"file_open\",\n title: \"Менеджер запросов\",\n onClick: handleOpenQueriesManager\n }, {\n icon: \"close\",\n title: \"Закрыть запрос\",\n onClick: handleQueryClose,\n disabled: !query\n }]\n });\n\n //Генерация содержимого\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n sx: STYLES.CONTAINER\n }, openQueriesManager && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_queries_manager_queries_manager__WEBPACK_IMPORTED_MODULE_6__.QueriesManager, {\n current: query,\n onQuerySelect: handleQuerySelect,\n onCancel: handleCancelQueriesManager\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n container: true,\n sx: STYLES.GRID_CONTAINER,\n columns: 25\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 20\n }, queryDiagram && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_query_diagram_query_diagram__WEBPACK_IMPORTED_MODULE_4__.QueryDiagram, {\n nodes: queryDiagram?.nodes,\n edges: queryDiagram?.edges,\n onEntityClick: handleEntityClick,\n onEntityAttrClick: handleEntityAttrClick,\n onEntityPositionChange: handleEntityPositionChange,\n onEntityRemove: handleEntityRemove,\n onRelactionClick: handleRelationClick,\n onRelationAdd: handleRelationAdd,\n onRelationRemove: handleRelationRemove,\n onPaneClick: handlePaneClick\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_mui_material__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n item: true,\n xs: 5,\n sx: STYLES.GRID_ITEM_INSPECTOR\n }, toolBar, query && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_inspector_inspector__WEBPACK_IMPORTED_MODULE_5__.Inspector, _extends({}, queryOption, querySQL, {\n query: query,\n entity: entity,\n relation: relation,\n entities: queryDiagram?.entities,\n onOptionsChanged: handleQueryOptionsChanged\n })))));\n};\n\n//----------------\n//Интерфейс модуля\n//----------------\n\n\n\n//# sourceURL=webpack://parus_8_panels_plugin/./app/panels/query_editor/query_editor.js?"); /***/ }),