ЦИТК-979 - Редактор запросов - исправлена ошибка сброса состояния диалога редактирования аргумента запроса при возникновении серверной ошибки

This commit is contained in:
Mikhail Chechnev 2025-10-14 14:13:03 +03:00
parent 1530bfa3bf
commit 3df01a36c6

View File

@ -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
<P8PDialog
title={`${insert === true ? TITLES.INSERT : TITLES.UPDATE} аргумента`}
inputs={[
{ name: "name", value: name, label: "Имя", disabled: insert != true },
{ name: "title", value: title, label: "Приглашение" },
{ name: "name", value: current.name, label: "Имя", disabled: insert != true },
{ name: "title", value: current.title, label: "Приглашение" },
{
name: "dataType",
value: current.dataType,
@ -58,7 +55,7 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato
},
{
name: "mandatory",
value: mandatory,
value: current.mandatory,
label: "Обязательный",
list: [
{ name: "Нет", value: 0 },