forked from CITKParus/P8-Panels
121 lines
4.4 KiB
JavaScript
121 lines
4.4 KiB
JavaScript
/*
|
||
Парус 8 - Панели мониторинга
|
||
Контекст: Параметры - вспомогательные хуки
|
||
*/
|
||
|
||
//---------------------
|
||
//Подключение библиотек
|
||
//---------------------
|
||
|
||
import { useCallback, useContext } from "react"; //Классы React
|
||
import { BackEndCtx } from "./backend"; //Контекст взаимодействия с сервером
|
||
import { object2Base64XML, formatErrorMessage } from "../core/utils"; //Вспомогательные функции
|
||
|
||
//-----------
|
||
//Тело модуля
|
||
//-----------
|
||
|
||
//Хук для SettingsContext
|
||
const useSettingsContext = showMsgErr => {
|
||
//Подключение к контексту взаимодействия с сервером
|
||
const { executeStored, SERV_DATA_TYPE_CLOB } = useContext(BackEndCtx);
|
||
|
||
//Добавление параметров панели
|
||
const putPanelSettings = useCallback(
|
||
async ({ kind, panelSettings, loader = true }) => {
|
||
//Добавляем параметры
|
||
try {
|
||
await executeStored({
|
||
stored: "PKG_P8PANELS_SETTINGS.PUT",
|
||
args: {
|
||
NKIND: kind,
|
||
CPANELS: {
|
||
VALUE: object2Base64XML({
|
||
XPANELS: panelSettings
|
||
}),
|
||
SDATA_TYPE: SERV_DATA_TYPE_CLOB
|
||
}
|
||
},
|
||
loader
|
||
});
|
||
} catch (e) {
|
||
//Разбираем текст ошибки
|
||
let errMsg = formatErrorMessage(e.message);
|
||
//Отображаем ошибку
|
||
showMsgErr(errMsg.text, null, errMsg.fullErrorText);
|
||
throw e;
|
||
}
|
||
},
|
||
[SERV_DATA_TYPE_CLOB, executeStored, showMsgErr]
|
||
);
|
||
|
||
//Считывание параметров
|
||
const getPanelSettings = useCallback(
|
||
async ({ kind, code = null, panel = null, full = false, loader = true }) => {
|
||
//Считываем параметры
|
||
try {
|
||
const res = await executeStored({
|
||
stored: "PKG_P8PANELS_SETTINGS.GET",
|
||
args: {
|
||
NKIND: kind,
|
||
SCODE: code,
|
||
SPANEL: panel,
|
||
NFULL: full ? 1 : 0
|
||
},
|
||
loader,
|
||
respArg: "COUT"
|
||
});
|
||
return res || {};
|
||
} catch (e) {
|
||
//Разбираем текст ошибки
|
||
let errMsg = formatErrorMessage(e.message);
|
||
//Отображаем ошибку
|
||
showMsgErr(errMsg.text, null, errMsg.fullErrorText);
|
||
throw e;
|
||
}
|
||
},
|
||
[executeStored, showMsgErr]
|
||
);
|
||
|
||
//Инициализация параметров панелей
|
||
const initPanelSettings = useCallback(
|
||
async ({ kind, panelSettings, full = false, loader = true }) => {
|
||
//Инициализируем параметры
|
||
try {
|
||
const res = await executeStored({
|
||
stored: "PKG_P8PANELS_SETTINGS.INIT",
|
||
args: {
|
||
NKIND: kind,
|
||
CPANELS: {
|
||
VALUE: object2Base64XML({
|
||
XPANELS: panelSettings
|
||
}),
|
||
SDATA_TYPE: SERV_DATA_TYPE_CLOB
|
||
},
|
||
NFULL: full ? 1 : 0
|
||
},
|
||
loader,
|
||
respArg: "COUT"
|
||
});
|
||
return res;
|
||
} catch (e) {
|
||
//Разбираем текст ошибки
|
||
let errMsg = formatErrorMessage(e.message);
|
||
//Отображаем ошибку
|
||
showMsgErr(errMsg.text, null, errMsg.fullErrorText);
|
||
throw e;
|
||
}
|
||
},
|
||
[SERV_DATA_TYPE_CLOB, executeStored, showMsgErr]
|
||
);
|
||
|
||
//Возвращаем результат
|
||
return { putPanelSettings, getPanelSettings, initPanelSettings };
|
||
};
|
||
|
||
//----------------
|
||
//Интерфейс модуля
|
||
//----------------
|
||
|
||
export { useSettingsContext };
|