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