/* Парус 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 };