diff --git a/app/panels/rrp_conf_editor/components/dialog_help.js b/app/panels/rrp_conf_editor/components/dialog_help.js index b6a8b43..f54c810 100644 --- a/app/panels/rrp_conf_editor/components/dialog_help.js +++ b/app/panels/rrp_conf_editor/components/dialog_help.js @@ -10,7 +10,7 @@ import React from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Typography, List, ListItem } from "@mui/material"; //Интерфейсные элементы -import { Form } from "./form"; //Типовая форма +import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог //--------- //Константы @@ -53,7 +53,7 @@ const DialogHelp = ({ onClose }) => { //Генерация содержимого return ( -
+ Карточки показателей содержат сокращенную информацию о типе состава показателя. Список сокращений: @@ -71,7 +71,7 @@ const DialogHelp = ({ onClose }) => { - +
); }; diff --git a/app/panels/rrp_conf_editor/components/dialog_mark_iu.js b/app/panels/rrp_conf_editor/components/dialog_mark_iu.js index 5c726f1..d59bf4f 100644 --- a/app/panels/rrp_conf_editor/components/dialog_mark_iu.js +++ b/app/panels/rrp_conf_editor/components/dialog_mark_iu.js @@ -10,7 +10,7 @@ import React from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { useDictionary } from "../hooks"; //Кастомные хуки -import { Form } from "./form"; //Типовая форма +import { P8PDialog } from "../../../components/p8p_dialog"; //Типовой диалог //----------- //Тело модуля @@ -67,15 +67,15 @@ const DialogMarkIU = ({ //Генерация содержимого return ( -
{ //Генерация содержимого return ( - { - //Состояние формы - const [state, setState] = useState({}); - - //При изменении элемента формы - const handleFieldChange = (name, value) => setState(pv => ({ ...pv, [name]: value })); - - //При нажатии на "ОК" формы - const handleOk = () => onOk && onOk(state); - - //При нажатии на "Отмена" формы - const handleCancel = () => onCancel && onCancel(); - - //При нажатии на "Закрыть" формы - const handleClose = () => (onClose ? onClose() : onCancel ? onCancel() : null); - - //При подключении к старнице - useEffect(() => { - setState(fields.reduce((res, f) => ({ ...res, [f.elementCode]: f.elementValue == undefined ? null : f.elementValue }), {})); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - //Формирование представления - return ( - - {title} - - {fields.map((f, i) => ( - - ))} - {children} - - - {onOk && } - {onCancel && } - {onClose && } - - - ); -}; - -//Контроль свойств - Форма -Form.propTypes = { - title: PropTypes.string.isRequired, - fields: PropTypes.arrayOf(PropTypes.shape(FORM_FILED)), - children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)]), - onOk: PropTypes.func, - onCancel: PropTypes.func, - onClose: PropTypes.func -}; - -//---------------- -//Интерфейс модуля -//---------------- - -export { Form }; diff --git a/app/panels/rrp_conf_editor/components/form_field.js b/app/panels/rrp_conf_editor/components/form_field.js deleted file mode 100644 index 587a1ad..0000000 --- a/app/panels/rrp_conf_editor/components/form_field.js +++ /dev/null @@ -1,149 +0,0 @@ -/* - Парус 8 - Панели мониторинга - РО - Редактор настройки регламентированного отчёта - Компонент панели: Поле ввода формы -*/ - -//--------------------- -//Подключение библиотек -//--------------------- - -import React, { useState, useEffect } from "react"; //Классы React -import PropTypes from "prop-types"; //Контроль свойств компонента -import { Box, Icon, Input, InputAdornment, FormControl, Select, InputLabel, MenuItem, IconButton, Autocomplete, TextField } from "@mui/material"; //Интерфейсные компоненты - -//--------- -//Константы -//--------- - -//Формат свойств поля формы -const FORM_FILED = { - elementCode: PropTypes.string.isRequired, - elementValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)]), - labelText: PropTypes.string.isRequired, - onChange: PropTypes.func, - dictionary: PropTypes.func, - list: PropTypes.array, - type: PropTypes.string, - freeSolo: PropTypes.bool, - disabled: PropTypes.bool, - formValues: PropTypes.object -}; - -//----------- -//Тело модуля -//----------- - -//Поле ввода формы -const FormField = ({ - elementCode, - elementValue, - labelText, - onChange, - dictionary, - list, - type, - freeSolo = false, - disabled = false, - formValues, - ...other -}) => { - //Значение элемента - const [value, setValue] = useState(elementValue); - - //При получении нового значения из вне - useEffect(() => { - setValue(elementValue); - }, [elementValue]); - - //Выбор значения из словаря - const handleDictionaryClick = () => dictionary && dictionary(formValues, res => (res ? res.map(i => handleChangeByName(i.name, i.value)) : null)); - - //Изменение значения элемента (по событию) - const handleChange = e => { - setValue(e.target.value); - if (onChange) onChange(e.target.name, e.target.value); - }; - - //Изменение значения элемента (по имени и значению) - const handleChangeByName = (name, value) => { - if (name === elementCode) setValue(value); - if (onChange) onChange(name, value); - }; - - //Генерация содержимого - return ( - - - {list ? ( - freeSolo ? ( - handleChangeByName(elementCode, newValue)} - onInputChange={(event, newInputValue) => handleChangeByName(elementCode, newInputValue)} - options={list} - renderInput={params => } - /> - ) : ( - <> - - {labelText} - - - - ) - ) : ( - <> - - {labelText} - - - - list - - - ) : null - } - {...(type ? { type } : {})} - onChange={handleChange} - disabled={disabled} - /> - - )} - - - ); -}; - -//Контроль свойств - Поле ввода формы -FormField.propTypes = FORM_FILED; - -//---------------- -//Интерфейс модуля -//---------------- - -export { FORM_FILED, FormField }; diff --git a/app/panels/rrp_conf_editor/components/marks.js b/app/panels/rrp_conf_editor/components/marks.js index b62520f..a8ea9f1 100644 --- a/app/panels/rrp_conf_editor/components/marks.js +++ b/app/panels/rrp_conf_editor/components/marks.js @@ -103,14 +103,14 @@ const Marks = ({ marks, order, marksLoading, marksInit, onRefresh, onMarkInsert, //При переходе к составу показателя const handleMarkCnOpen = (mark, constitution) => showMarkCn(mark, constitution, res => res.success && handleRefresh()); - //При закрытии формы добавления/исправления по "ОК" - const handleIUFormOk = values => { + //При закрытии диалога добавления/исправления по "ОК" + const handleIUDialogOk = values => { if (modMark === true) onMarkInsert && onMarkInsert(values, res => res && setModMark(null)); else onMarkUpdate && onMarkUpdate({ ...modMark, ...values }, res => res && setModMark(null)); }; - //При закрытии формы добавления/исправления по "Отмена" - const handleIUFormCancel = () => setModMark(null); + //При закрытии диалога добавления/исправления по "Отмена" + const handleIUDialogCancel = () => setModMark(null); //Формирование представления return ( @@ -118,7 +118,12 @@ const Marks = ({ marks, order, marksLoading, marksInit, onRefresh, onMarkInsert, {dialogOrder && } {dialogHelp && } {modMark && ( - + )} {marksInit && (marks ? ( diff --git a/app/panels/rrp_conf_editor/components/sections.js b/app/panels/rrp_conf_editor/components/sections.js index 4c63745..3d25186 100644 --- a/app/panels/rrp_conf_editor/components/sections.js +++ b/app/panels/rrp_conf_editor/components/sections.js @@ -118,15 +118,15 @@ const Sections = ({ conf, onSectionChange, onSectionCountChange }) => { //При удалении раздела настройки const handleSectionDelete = section => showMsgWarn("Удалить раздел?", () => deleteSection(section)); - //При закрытии формы добавления/исправления по "ОК" - const handleIUFormOk = async values => { + //При закрытии диалога добавления/исправления по "ОК" + const handleIUDialogOk = async values => { if (modSection === true) await insertSection({ conf, ...values }); else await updateSection({ rn: modSection.NRN, ...values }); setModSection(null); }; - //При закрытии формы добавления/исправления по "Отмена" - const handleIUFormCancel = () => setModSection(null); + //При закрытии диалога добавления/исправления по "Отмена" + const handleIUDialogCancel = () => setModSection(null); //При изменении состава разделов useEffect(() => { @@ -155,8 +155,8 @@ const Sections = ({ conf, onSectionChange, onSectionCountChange }) => { code={modSection?.SCODE} name={modSection?.SNAME} insert={modSection === true} - onOk={handleIUFormOk} - onCancel={handleIUFormCancel} + onOk={handleIUDialogOk} + onCancel={handleIUDialogCancel} /> )} {sections.length > 0 ? (