forked from CITKParus/P8-Panels
WEBAPP: Флаг "isDataFound" для хуков высокоуровневых компонентов (Гант, Циклограмма, Индикатор, Таблица, График)
This commit is contained in:
parent
5483e5c39f
commit
4bf3bfb3fa
@ -1541,6 +1541,7 @@ const MyPanel = () => {
|
||||
**Результат:** объект для работы с компонентом `P8PDataGrid`. Возвращаемый объект имеет следующие свойства:\
|
||||
`dataGrid` - объект, хранит информацию о таблице, загруженной с помощью хранимой процедуры\
|
||||
`isDataLoaded` - логический, признак успешной загрузки и обработки данных из хранимой процедуры\
|
||||
`isDataFound` - логический, признак наличия значимых сведений (бизнес-даных) в данных, полученных из хранимой процедуры\
|
||||
`isLoading` - логический, признак выполнения загрузки данных из хранимой процедуры\
|
||||
`handleFilterChanged` - функция, изменение состояния фильтров таблицы. Сигнатура функции `f({filters})`, результат функции не интерпретируется\
|
||||
`handleOrderChanged` - функция, изменение состояния сортировок таблицы. Сигнатура функции `f({orders})`, результат функции не интерпретируется\
|
||||
@ -2005,6 +2006,7 @@ const MyPanel = () => {
|
||||
**Результат:** объект для работы с компонентом `P8PChart`. Возвращаемый объект имеет следующие свойства:\
|
||||
`chart` - объект, хранит информацию о графике, загруженном с помощью хранимой процедуры\
|
||||
`isDataLoaded` - логический, признак успешной загрузки и обработки данных из хранимой процедуры\
|
||||
`isDataFound` - логический, признак наличия значимых сведений (бизнес-даных) в данных, полученных из хранимой процедуры\
|
||||
`isLoading` - логический, признак выполнения загрузки данных из хранимой процедуры\
|
||||
`doReload` - функция, принудительное обновление данных графика, сигнатура функции `f()`, результат функции не интерпретируется
|
||||
|
||||
@ -2240,6 +2242,7 @@ const MyPanel = () => {
|
||||
**Результат:** объект для работы с компонентом `P8PGantt`. Возвращаемый объект имеет следующие свойства:\
|
||||
`gantt` - объект, хранит информацию о диаграмме Ганта, загруженной с помощью хранимой процедуры\
|
||||
`isDataLoaded` - логический, признак успешной загрузки и обработки данных из хранимой процедуры\
|
||||
`isDataFound` - логический, признак наличия значимых сведений (бизнес-даных) в данных, полученных из хранимой процедуры\
|
||||
`isLoading` - логический, признак выполнения загрузки данных из хранимой процедуры\
|
||||
`doReload` - функция, принудительное обновление данных диаграммы Ганта, сигнатура функции `f()`, результат функции не интерпретируется
|
||||
|
||||
@ -2731,6 +2734,7 @@ const MyPanel = () => {
|
||||
**Результат:** объект для работы с компонентом `P8PCyclogram`. Возвращаемый объект имеет следующие свойства:\
|
||||
`cyclogram` - объект, хранит информацию о циклограмме, загруженной с помощью хранимой процедуры\
|
||||
`isDataLoaded` - логический, признак успешной загрузки и обработки данных из хранимой процедуры\
|
||||
`isDataFound` - логический, признак наличия значимых сведений (бизнес-даных) в данных, полученных из хранимой процедуры\
|
||||
`isLoading` - логический, признак выполнения загрузки данных из хранимой процедуры\
|
||||
`doReload` - функция, принудительное обновление данных циклограммы, сигнатура функции `f()`, результат функции не интерпретируется
|
||||
|
||||
@ -3204,6 +3208,7 @@ const MyPanel = () => {
|
||||
**Результат:** объект для работы с компонентом `P8PIndicator`. Возвращаемый объект имеет следующие свойства:\
|
||||
`indicator` - объект, хранит информацию об индикаторе, загруженном с помощью хранимой процедуры\
|
||||
`isDataLoaded` - логический, признак успешной загрузки и обработки данных из хранимой процедуры\
|
||||
`isDataFound` - логический, признак наличия значимых сведений (бизнес-даных) в данных, полученных из хранимой процедуры\
|
||||
`isLoading` - логический, признак выполнения загрузки данных из хранимой процедуры\
|
||||
`doReload` - функция, принудительное обновление данных индикатора, сигнатура функции `f()`, результат функции не интерпретируется
|
||||
|
||||
|
||||
@ -43,6 +43,9 @@ const useP8PChart = ({
|
||||
//Собственное состояние - признак загрузки данных
|
||||
const [isDataLoaded, setIsDataLoaded] = useState(false);
|
||||
|
||||
//Собственное состояние - признак наличия бизнес-данных в загруженных
|
||||
const [isDataFound, setIsDataFound] = useState(false);
|
||||
|
||||
//Собственное состояние - флаг загрузки
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
@ -66,8 +69,13 @@ const useP8PChart = ({
|
||||
//Загрузка данных графика с сервера
|
||||
const loadData = useCallback(async () => {
|
||||
try {
|
||||
//Поднимаем флаг начала загрузки данных
|
||||
setLoading(true);
|
||||
//Получаем данные с сервера БД
|
||||
const data = await executeStored({ stored, respArg, args: { ...refStoredArgs.current }, ...refExecuteStoredArgs.current });
|
||||
//Устанавливаем флаг наличия бизнес-данных
|
||||
setIsDataFound(data[contentNodeName]?.datasets?.[0]?.data?.length > 0);
|
||||
//Устанавливаем бизнес-данные
|
||||
setChart(pv => ({ ...pv, ...data[contentNodeName] }));
|
||||
//Устанавливаем признак загрузки данных с учетом возможных ошибок
|
||||
setIsDataLoaded(!isRespErr(data));
|
||||
@ -126,7 +134,7 @@ const useP8PChart = ({
|
||||
}, [isAllowDataLoad, reload, loadData]);
|
||||
|
||||
//Возвращаем данные графика
|
||||
return { chart, isDataLoaded, isLoading, doReload };
|
||||
return { chart, isDataLoaded, isDataFound, isLoading, doReload };
|
||||
};
|
||||
|
||||
//----------------
|
||||
|
||||
@ -47,6 +47,9 @@ const useP8PCyclogram = ({
|
||||
//Собственное состояние - признак загрузки данных
|
||||
const [isDataLoaded, setIsDataLoaded] = useState(false);
|
||||
|
||||
//Собственное состояние - признак наличия бизнес-данных в загруженных
|
||||
const [isDataFound, setIsDataFound] = useState(false);
|
||||
|
||||
//Собственное состояние - флаг загрузки
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
@ -70,7 +73,9 @@ const useP8PCyclogram = ({
|
||||
//Загрузка данных циклограммы с сервера
|
||||
const loadData = useCallback(async () => {
|
||||
try {
|
||||
//Поднимаем флаг начала загрузки данных
|
||||
setLoading(true);
|
||||
//Получаем данные с сервера БД
|
||||
const data = await executeStored({
|
||||
stored,
|
||||
args: { ...refStoredArgs.current },
|
||||
@ -78,6 +83,9 @@ const useP8PCyclogram = ({
|
||||
respArg,
|
||||
...refExecuteStoredArgs.current
|
||||
});
|
||||
//Устанавливаем флаг наличия бизнес-данных
|
||||
setIsDataFound(data[contentNodeName]?.tasks?.length > 0);
|
||||
//Устанавливаем бизнес-данные
|
||||
setCyclogram(pv => ({ ...pv, ...data[contentNodeName] }));
|
||||
//Устанавливаем признак загрузки данных с учетом возможных ошибок
|
||||
setIsDataLoaded(!isRespErr(data));
|
||||
@ -135,7 +143,7 @@ const useP8PCyclogram = ({
|
||||
}, [isAllowDataLoad, reload, loadData]);
|
||||
|
||||
//Возвращаем данные циклограммы
|
||||
return { cyclogram, isDataLoaded, isLoading, doReload };
|
||||
return { cyclogram, isDataLoaded, isDataFound, isLoading, doReload };
|
||||
};
|
||||
|
||||
//----------------
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
import { useReducer, useCallback, useEffect, useContext, useRef, useMemo } from "react"; //Классы React
|
||||
import { BackEndCtx } from "../context/backend"; //Контекст взаимодействия с сервером
|
||||
import { object2Base64XML } from "../core/utils"; //Вспомогательные функции
|
||||
import config from "../../app.config"; //Настройки приложения
|
||||
import { DG_AT, INITIAL_STATE, dataGridReducer } from "./p8p_data_grid_reducer"; //Редьюсер состояния
|
||||
|
||||
//---------
|
||||
@ -17,7 +18,7 @@ import { DG_AT, INITIAL_STATE, dataGridReducer } from "./p8p_data_grid_reducer";
|
||||
//---------
|
||||
|
||||
//Константы - значения по умолчанию
|
||||
const DG_PAGE_SIZE_DEF = 10; //Размер страницы
|
||||
const DG_PAGE_SIZE_DEF = config.SYSTEM.PAGE_SIZE; //Размер страницы
|
||||
const DG_NODE_NAME_DEF = "XDATA_GRID"; //Наименование узла, содержащего информацию о таблице
|
||||
const FILTERS_NODE_NAME_DEF = "filters"; //Наименование узла отборов
|
||||
const ORDERS_NODE_NAME_DEF = "orders"; //Наименование узла сортировок
|
||||
@ -85,8 +86,9 @@ const useP8PDataGrid = ({
|
||||
//Загрузка данных таблицы с сервера
|
||||
const loadData = useCallback(async () => {
|
||||
try {
|
||||
//Начинаем загрузку
|
||||
//Поднимаем флаг начала загрузки данных
|
||||
setIsLoading(true);
|
||||
//Получаем данные с сервера БД
|
||||
const data = await executeStored({
|
||||
stored,
|
||||
args: {
|
||||
@ -103,7 +105,7 @@ const useP8PDataGrid = ({
|
||||
respArg,
|
||||
...refExecuteStoredArgs.current
|
||||
});
|
||||
//Устанавливаем полученные данные и признак загрузки данных с учетом возможных ошибок
|
||||
//Устанавливаем полученные бизнес-данные, признак загрузки данных с учетом возможных ошибок, признак наличия бизнес-данных
|
||||
setDataGrid(data[contentNodeName], pageSize, isRespErr(data));
|
||||
} catch (e) {
|
||||
//Если произошла ошибка - данные не загружены
|
||||
@ -189,6 +191,7 @@ const useP8PDataGrid = ({
|
||||
return {
|
||||
dataGrid: state.dataGrid,
|
||||
isDataLoaded: state.isDataLoaded,
|
||||
isDataFound: state.isDataFound,
|
||||
isLoading: state.isLoading,
|
||||
handleFilterChanged,
|
||||
handleOrderChanged,
|
||||
|
||||
@ -32,9 +32,10 @@ const INITIAL_STATE = ({ initFilters, initOrders }) => ({
|
||||
pagesCount: 0,
|
||||
fixedColumns: 0,
|
||||
fixedHeader: false,
|
||||
morePages: true
|
||||
morePages: false
|
||||
},
|
||||
isDataLoaded: false,
|
||||
isDataFound: false,
|
||||
isLoading: false,
|
||||
reload: true
|
||||
});
|
||||
@ -65,7 +66,10 @@ const handlers = {
|
||||
: [...(state.dataGrid.groups || [])],
|
||||
morePages: dataGridData.morePages && (dataGridData.rows || []).length >= pageSize
|
||||
},
|
||||
isDataLoaded: isError === true ? false : true
|
||||
isDataLoaded: isError === true ? false : true,
|
||||
isDataFound:
|
||||
(state.dataGrid.pageNumber == 1 && dataGridData?.rows?.length > 0) ||
|
||||
(state.dataGrid.pageNumber != 1 && state.dataGrid.rows.length > 0)
|
||||
};
|
||||
},
|
||||
//Установка фильтра таблицы
|
||||
|
||||
@ -48,6 +48,9 @@ const useP8PGantt = ({
|
||||
//Собственное состояние - признак загрузки данных
|
||||
const [isDataLoaded, setIsDataLoaded] = useState(false);
|
||||
|
||||
//Собственное состояние - признак наличия бизнес-данных в загруженных
|
||||
const [isDataFound, setIsDataFound] = useState(false);
|
||||
|
||||
//Собственное состояние - флаг загрузки
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
@ -71,7 +74,9 @@ const useP8PGantt = ({
|
||||
//Загрузка данных диаграммы ганта с сервера
|
||||
const loadData = useCallback(async () => {
|
||||
try {
|
||||
//Поднимаем флаг начала загрузки данных
|
||||
setLoading(true);
|
||||
//Получаем данные с сервера БД
|
||||
const data = await executeStored({
|
||||
stored,
|
||||
args: { ...refStoredArgs.current },
|
||||
@ -80,6 +85,9 @@ const useP8PGantt = ({
|
||||
respArg,
|
||||
...refExecuteStoredArgs.current
|
||||
});
|
||||
//Устанавливаем флаг наличия бизнес-данных
|
||||
setIsDataFound(data[contentNodeName]?.tasks?.length > 0);
|
||||
//Устанавливаем бизнес-данные
|
||||
setGantt(pv => ({ ...pv, ...data[contentNodeName] }));
|
||||
//Устанавливаем признак загрузки данных с учетом возможных ошибок
|
||||
setIsDataLoaded(!isRespErr(data));
|
||||
@ -138,7 +146,7 @@ const useP8PGantt = ({
|
||||
}, [isAllowDataLoad, reload, loadData]);
|
||||
|
||||
//Возвращаем данные диаграммы ганта
|
||||
return { gantt, isDataLoaded, isLoading, doReload };
|
||||
return { gantt, isDataLoaded, isDataFound, isLoading, doReload };
|
||||
};
|
||||
|
||||
//----------------
|
||||
|
||||
@ -50,6 +50,9 @@ const useP8PIndicator = ({
|
||||
//Собственное состояние - признак загрузки данных
|
||||
const [isDataLoaded, setIsDataLoaded] = useState(false);
|
||||
|
||||
//Собственное состояние - признак наличия бизнес-данных в загруженных
|
||||
const [isDataFound, setIsDataFound] = useState(false);
|
||||
|
||||
//Собственное состояние - флаг загрузки
|
||||
const [isLoading, setLoading] = useState(false);
|
||||
|
||||
@ -73,8 +76,13 @@ const useP8PIndicator = ({
|
||||
//Загрузка данных индикатора с сервера
|
||||
const loadData = useCallback(async () => {
|
||||
try {
|
||||
//Поднимаем флаг начала загрузки данных
|
||||
setLoading(true);
|
||||
//Получаем данные с сервера БД
|
||||
const data = await executeStored({ stored, respArg, args: { ...refStoredArgs.current }, ...refExecuteStoredArgs.current });
|
||||
//Устанавливаем флаг наличия бизнес-данных
|
||||
setIsDataFound(data[contentNodeName]?.caption && data[contentNodeName]?.value != undefined);
|
||||
//Устанавливаем бизнес-данные
|
||||
setIndicator(pv => ({ ...pv, ...data[contentNodeName] }));
|
||||
//Устанавливаем признак загрузки данных с учетом возможных ошибок
|
||||
setIsDataLoaded(!isRespErr(data));
|
||||
@ -133,7 +141,7 @@ const useP8PIndicator = ({
|
||||
}, [isAllowDataLoad, reload, loadData]);
|
||||
|
||||
//Возвращаем данные индикатора
|
||||
return { indicator, isDataLoaded, isLoading, doReload };
|
||||
return { indicator, isDataLoaded, isDataFound, isLoading, doReload };
|
||||
};
|
||||
|
||||
//----------------
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user