diff --git a/app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js b/app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js index 85fdf20..d004e00 100644 --- a/app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js +++ b/app/panels/query_editor/components/inspector_query_args/arg_iu_dialog.js @@ -19,24 +19,21 @@ import { DATA_TYPE } from "../../common"; //Общие константы ред //Диалог добавления/исправления аргумента запроса const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandatory = 0, value = "", insert = true, onOk, onCancel }) => { - //Собственное состояние - текущее состояние аргумента - const [current, setCurrent] = useState({ value, dataType }); + //Собственное состояние - текущие значения полей аргумента запроса + const [current, setCurrent] = useState({ name, title, dataType, mandatory, value }); //Нажатие на кнопку "Ok" - const handleOk = values => onOk && onOk({ ...values }); + const handleOk = () => onOk && onOk(current); //Нажатие на кнопку "Отмена" const handleCancel = () => onCancel && onCancel(); //При изменении значений в поле ввода const handleInputChange = (name, value) => { - //Если поменяли тип данных - надо пересмотреть поля для ввода - if (name === "dataType") { - //Сохраним в состоянии новый тип данных и сбросим "отладочное значение", ведь оно зависит от типа данных (от этого состояния зависит свойство inputs, передаваемое в P8PDialog ниже) - setCurrent({ dataType: value, value: "" }); - //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога - return true; - } + //Сохраним в состоянии новое значение, если сменили тип данных - сбросим "отладочное значение" + setCurrent(pv => ({ ...pv, [name]: value, ...(name === "dataType" ? { value: "" } : {}) })); + //Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога + return true; }; //Генерация содержимого @@ -44,8 +41,8 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato