ЦИТК-979 - Поддержка возможности указания отладочного значения аргумента запроса
This commit is contained in:
parent
dae416cd83
commit
be22cde138
@ -7,7 +7,7 @@
|
||||
//Подключение библиотек
|
||||
//---------------------
|
||||
|
||||
import React from "react"; //Классы React
|
||||
import React, { useState } from "react"; //Классы React
|
||||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||||
import { P8PDialog } from "../../../../components/p8p_dialog"; //Типовой диалог
|
||||
import { TITLES } from "../../../../../app.text"; //Общие текстовые ресурсы приложения
|
||||
@ -18,13 +18,27 @@ import { DATA_TYPE } from "../../common"; //Общие константы ред
|
||||
//-----------
|
||||
|
||||
//Диалог добавления/исправления аргумента запроса
|
||||
const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandatory = 0, insert = true, onOk, onCancel }) => {
|
||||
const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandatory = 0, value = "", insert = true, onOk, onCancel }) => {
|
||||
//Собственное состояние - текущее состояние аргумента
|
||||
const [current, setCurrent] = useState({ value, dataType });
|
||||
|
||||
//Нажатие на кнопку "Ok"
|
||||
const handleOk = values => onOk && onOk({ ...values });
|
||||
|
||||
//Нажатие на кнопку "Отмена"
|
||||
const handleCancel = () => onCancel && onCancel();
|
||||
|
||||
//При изменении значений в поле ввода
|
||||
const handleInputChange = (name, value) => {
|
||||
//Если поменяли тип данных - надо пересмотреть поля для ввода
|
||||
if (name === "dataType") {
|
||||
//Сохраним в состоянии новый тип данных и сбросим "отладочное значение", ведь оно зависит от типа данных (от этого состояния зависит свойство inputs, передаваемое в P8PDialog ниже)
|
||||
setCurrent({ dataType: value, value: "" });
|
||||
//Мы сами пересчитали форму, туда придут новые настройки элементов ввода через свойство inputs, не надо делать пересчет состояния внутри диалога
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
//Генерация содержимого
|
||||
return (
|
||||
<P8PDialog
|
||||
@ -34,7 +48,7 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato
|
||||
{ name: "title", value: title, label: "Приглашение" },
|
||||
{
|
||||
name: "dataType",
|
||||
value: dataType,
|
||||
value: current.dataType,
|
||||
label: "Тип данных",
|
||||
list: [
|
||||
{ name: "Строка", value: DATA_TYPE.STR },
|
||||
@ -50,10 +64,17 @@ const ArgIUDialog = ({ name = "", title = "", dataType = DATA_TYPE.NUMB, mandato
|
||||
{ name: "Нет", value: 0 },
|
||||
{ name: "Да", value: 1 }
|
||||
]
|
||||
},
|
||||
{
|
||||
name: "value",
|
||||
value: current.value,
|
||||
label: "Значение (для отладки)",
|
||||
type: current.dataType === DATA_TYPE.NUMB ? "number" : current.dataType === DATA_TYPE.DATE ? "date" : "text"
|
||||
}
|
||||
]}
|
||||
onOk={handleOk}
|
||||
onCancel={handleCancel}
|
||||
onInputChange={handleInputChange}
|
||||
/>
|
||||
);
|
||||
};
|
||||
@ -64,6 +85,7 @@ ArgIUDialog.propTypes = {
|
||||
title: PropTypes.string,
|
||||
dataType: PropTypes.number,
|
||||
mandatory: PropTypes.number,
|
||||
value: PropTypes.string,
|
||||
insert: PropTypes.bool,
|
||||
onOk: PropTypes.func,
|
||||
onCancel: PropTypes.func
|
||||
|
||||
@ -25,10 +25,10 @@ const useQueryArgs = query => {
|
||||
|
||||
//Добавление аргумента запроса
|
||||
const addArg = useCallback(
|
||||
async (name, title, dataType, mandatory) => {
|
||||
async (name, title, dataType, mandatory, value) => {
|
||||
await executeStored({
|
||||
stored: "PKG_P8PANELS_QE.QUERY_OPT_ARG_ADD",
|
||||
args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory },
|
||||
args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory, SVALUE: value },
|
||||
loader: false
|
||||
});
|
||||
},
|
||||
@ -37,10 +37,10 @@ const useQueryArgs = query => {
|
||||
|
||||
//Исправление аргумента запроса
|
||||
const editArg = useCallback(
|
||||
async (name, title, dataType, mandatory) => {
|
||||
async (name, title, dataType, mandatory, value) => {
|
||||
await executeStored({
|
||||
stored: "PKG_P8PANELS_QE.QUERY_OPT_ARG_EDIT",
|
||||
args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory },
|
||||
args: { NRN: query, SNAME: name, STITLE: title, NDATA_TYPE: dataType, NMANDATORY: mandatory, SVALUE: value },
|
||||
loader: false
|
||||
});
|
||||
},
|
||||
|
||||
@ -35,14 +35,14 @@ const InspectorQueryArguments = ({ query, args = [], onOptionsChanged = null })
|
||||
|
||||
//При добавлении аргумента
|
||||
const handleArgAdd = async (arg, cb) => {
|
||||
await addArg(arg.name, arg.title, arg.dataType, arg.mandatory);
|
||||
await addArg(arg.name, arg.title, arg.dataType, arg.mandatory, arg.value);
|
||||
cb && cb();
|
||||
notifyOptionsChanged();
|
||||
};
|
||||
|
||||
//При изменении аргумента
|
||||
const handleArgEdit = async (arg, cb) => {
|
||||
await editArg(arg.name, arg.title, arg.dataType, arg.mandatory);
|
||||
await editArg(arg.name, arg.title, arg.dataType, arg.mandatory, arg.value);
|
||||
cb && cb();
|
||||
notifyOptionsChanged();
|
||||
};
|
||||
|
||||
@ -135,6 +135,7 @@ const useQuery = query => {
|
||||
args: { NRN: query },
|
||||
respArg: "COUT",
|
||||
isArray: name => ["XENT", "XATTR", "XRL", "XARG"].includes(name),
|
||||
attributeValueProcessor: (name, val) => (["value"].includes(name) ? undefined : val),
|
||||
loader: true
|
||||
});
|
||||
setQueryDiagram(serverQueryData2QueryDiagram(data?.XENTS?.XENT || [], data?.XRLS?.XRL || []));
|
||||
|
||||
@ -118,7 +118,8 @@ create or replace package PKG_P8PANELS_QE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
);
|
||||
|
||||
/* Изменение аргумента запроса */
|
||||
@ -128,7 +129,8 @@ create or replace package PKG_P8PANELS_QE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
);
|
||||
|
||||
/* Удаление аргумента запроса */
|
||||
@ -503,7 +505,8 @@ create or replace package body PKG_P8PANELS_QE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
)
|
||||
is
|
||||
RQ P8PNL_QE_QUERY%rowtype; -- Запись запроса
|
||||
@ -520,7 +523,8 @@ create or replace package body PKG_P8PANELS_QE as
|
||||
SNAME => SNAME,
|
||||
STITLE => STITLE,
|
||||
NDATA_TYPE => NDATA_TYPE,
|
||||
NMANDATORY => NMANDATORY);
|
||||
NMANDATORY => NMANDATORY,
|
||||
SVALUE => SVALUE);
|
||||
/* Сохраняем обновленную настройку */
|
||||
PKG_P8PANELS_QE_BASE.QUERY_OPT_SET(NRN => RQ.RN, ROPT => ROPT);
|
||||
end QUERY_OPT_ARG_ADD;
|
||||
@ -532,7 +536,8 @@ create or replace package body PKG_P8PANELS_QE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
)
|
||||
is
|
||||
RQ P8PNL_QE_QUERY%rowtype; -- Запись запроса
|
||||
@ -559,7 +564,8 @@ create or replace package body PKG_P8PANELS_QE as
|
||||
SNAME => SNAME,
|
||||
STITLE => STITLE,
|
||||
NDATA_TYPE => NDATA_TYPE,
|
||||
NMANDATORY => NMANDATORY);
|
||||
NMANDATORY => NMANDATORY,
|
||||
SVALUE => SVALUE);
|
||||
/* Сохраняем обновленную настройку */
|
||||
PKG_P8PANELS_QE_BASE.QUERY_OPT_SET(NRN => RQ.RN, ROPT => ROPT);
|
||||
end QUERY_OPT_ARG_EDIT;
|
||||
|
||||
@ -6,7 +6,8 @@ create or replace package PKG_P8PANELS_QE_BASE as
|
||||
SNAME PKG_STD.TSTRING, -- Имя
|
||||
STITLE PKG_STD.TSTRING, -- Заголовок
|
||||
NDATA_TYPE PKG_STD.TNUMBER, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY PKG_STD.TNUMBER -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY PKG_STD.TNUMBER, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE PKG_STD.TLSTRING -- Значение для отладки (строковое представление для всех типов данных)
|
||||
);
|
||||
|
||||
/* Типы данных - Коллекция аргументов */
|
||||
@ -90,7 +91,8 @@ create or replace package PKG_P8PANELS_QE_BASE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
);
|
||||
|
||||
/* Изменение аргумента в коллекции */
|
||||
@ -101,7 +103,8 @@ create or replace package PKG_P8PANELS_QE_BASE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
);
|
||||
|
||||
/* Удаление аргумента из коллекции */
|
||||
@ -366,6 +369,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
SATTR_USE constant PKG_STD.TSTRING := 'use'; -- Применение в запросе
|
||||
SATTR_SHOW constant PKG_STD.TSTRING := 'show'; -- Отображение в запросе
|
||||
SATTR_PARENT_ENTITY constant PKG_STD.TSTRING := 'parentEntity'; -- Идентификатор родительской сущности
|
||||
SATTR_VALUE constant PKG_STD.TSTRING := 'value'; -- Значение
|
||||
|
||||
/* Константы - зарезервированные имена рагументов */
|
||||
SARG_NAME_PAGE constant PKG_STD.TSTRING := 'NPAGE'; -- Номер страницы
|
||||
@ -432,7 +436,8 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
) return TARG -- Описание аргумента
|
||||
is
|
||||
RARG TARG; -- Буфер для результата
|
||||
@ -475,6 +480,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
RARG.STITLE := STITLE;
|
||||
RARG.NDATA_TYPE := NDATA_TYPE;
|
||||
RARG.NMANDATORY := NMANDATORY;
|
||||
RARG.SVALUE := SVALUE;
|
||||
/* Вернем полученное */
|
||||
return RARG;
|
||||
end TARG_MAKE;
|
||||
@ -493,6 +499,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
PKG_XFAST.ATTR(SNAME => SATTR_TITLE, SVALUE => RARG.STITLE);
|
||||
PKG_XFAST.ATTR(SNAME => SATTR_DATA_TYPE, NVALUE => RARG.NDATA_TYPE);
|
||||
PKG_XFAST.ATTR(SNAME => SATTR_MANDATORY, NVALUE => RARG.NMANDATORY);
|
||||
PKG_XFAST.ATTR(SNAME => SATTR_VALUE, SVALUE => RARG.SVALUE);
|
||||
/* Закрываем описание аргумента */
|
||||
PKG_XFAST.UP();
|
||||
end TARG_TO_XML;
|
||||
@ -521,6 +528,7 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
RRES.STITLE := PKG_XPATH.ATTRIBUTE(RNODE => XNODE, SNAME => SATTR_TITLE);
|
||||
RRES.NDATA_TYPE := PKG_XPATH.ATTRIBUTE_NUM(RNODE => XNODE, SNAME => SATTR_DATA_TYPE);
|
||||
RRES.NMANDATORY := PKG_XPATH.ATTRIBUTE_NUM(RNODE => XNODE, SNAME => SATTR_MANDATORY);
|
||||
RRES.SVALUE := PKG_XPATH.ATTRIBUTE(RNODE => XNODE, SNAME => SATTR_VALUE);
|
||||
/* Освободим документ */
|
||||
PKG_XPATH.FREE(RDOCUMENT => XDOC);
|
||||
exception
|
||||
@ -570,7 +578,8 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
)
|
||||
is
|
||||
RARG TARG; -- Добавляемый аргумент
|
||||
@ -584,7 +593,11 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
P_EXCEPTION(0, 'Аргумент с именем "%s" уже существует.', SNAME);
|
||||
end if;
|
||||
/* Формируем аргумент */
|
||||
RARG := TARG_MAKE(SNAME => SNAME, STITLE => STITLE, NDATA_TYPE => NDATA_TYPE, NMANDATORY => NMANDATORY);
|
||||
RARG := TARG_MAKE(SNAME => SNAME,
|
||||
STITLE => STITLE,
|
||||
NDATA_TYPE => NDATA_TYPE,
|
||||
NMANDATORY => NMANDATORY,
|
||||
SVALUE => SVALUE);
|
||||
/* Добавляем его в коллекцию */
|
||||
RARGS.EXTEND();
|
||||
RARGS(RARGS.LAST) := RARG;
|
||||
@ -598,7 +611,8 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
SNAME in varchar2, -- Имя
|
||||
STITLE in varchar2, -- Заголовок
|
||||
NDATA_TYPE in number, -- Тип данных (см. константы PKG_STD.DATA_TYPE_*)
|
||||
NMANDATORY in number -- Флаг обязательности (1 - да, 0 - нет)
|
||||
NMANDATORY in number, -- Флаг обязательности (1 - да, 0 - нет)
|
||||
SVALUE in varchar2 -- Значение для отладки (строковое представление для всех типов данных)
|
||||
)
|
||||
is
|
||||
RARG TARG; -- Добавляемый аргумент
|
||||
@ -613,7 +627,11 @@ create or replace package body PKG_P8PANELS_QE_BASE as
|
||||
P_EXCEPTION(0, 'Не указан индекс изменяемого аргумента.');
|
||||
end if;
|
||||
/* Формируем аргумент */
|
||||
RARG := TARG_MAKE(SNAME => SNAME, STITLE => STITLE, NDATA_TYPE => NDATA_TYPE, NMANDATORY => NMANDATORY);
|
||||
RARG := TARG_MAKE(SNAME => SNAME,
|
||||
STITLE => STITLE,
|
||||
NDATA_TYPE => NDATA_TYPE,
|
||||
NMANDATORY => NMANDATORY,
|
||||
SVALUE => SVALUE);
|
||||
/* Обновляем аргумент в коллекции */
|
||||
begin
|
||||
RARGS(NINDEX) := RARG;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user