From 1c02fc9684e50c64e618c3bca7eec843a2145a72 Mon Sep 17 00:00:00 2001 From: Mikhail Chechnev Date: Wed, 27 Sep 2023 21:08:41 +0300 Subject: [PATCH] =?UTF-8?q?WEB=20APP:=20=D0=92=20=D0=BA=D0=BE=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D1=82=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20(MessagingContext)=20=D0=B4=D0=BE=D0=B1?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=BE=D0=B7=D0=BC?= =?UTF-8?q?=D0=BE=D0=B6=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2=D1=8B=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=20=D0=B2=D1=81=D1=82=D1=80=D0=B0=D0=B8=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D0=BC=D1=8B=D1=85=20(Inline)=20=D1=83=D0=B2=D0=B5?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/p8p_app_message.js | 4 ++-- app/context/messaging.js | 34 +++++++++++++++++++++++-------- app/context/messaging_reducer.js | 10 ++++----- app/panels/prj_jobs/prj_jobs.js | 10 ++++++++- 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/app/components/p8p_app_message.js b/app/components/p8p_app_message.js index 1f46114..df0d88f 100644 --- a/app/components/p8p_app_message.js +++ b/app/components/p8p_app_message.js @@ -156,14 +156,14 @@ const P8PAppInlineMessage = ({ variant, text, okBtn, onOk, okBtnCaption }) => { //Генерация содержимого return ( - + {text} {okBtn && okBtnCaption ? ( - + diff --git a/app/context/messaging.js b/app/context/messaging.js index fce41a8..b1522f0 100644 --- a/app/context/messaging.js +++ b/app/context/messaging.js @@ -10,8 +10,8 @@ import React, { useReducer, createContext, useCallback } from "react"; //ReactJS import PropTypes from "prop-types"; //Контроль свойств компонента import { P8PAppProgress } from "../components/p8p_app_progress"; //Индикатор процесса -import { P8PAppMessage } from "../components/p8p_app_message"; //Диалог сообщения -import { MSG_AT, MSG_DLGT, INITIAL_STATE, messagingReducer } from "./messaging_reducer"; //Редьюсер состояния +import { P8PAppMessage, P8PAppInlineMessage, P8PAppInlineError, P8PAppInlineWarn, P8PAppInlineInfo } from "../components/p8p_app_message"; //Диалог сообщения +import { MSG_AT, MSG_TYPE, INITIAL_STATE, messagingReducer } from "./messaging_reducer"; //Редьюсер состояния //--------- //Константы @@ -61,13 +61,13 @@ export const MessagingContext = ({ titles, texts, buttons, children }) => { ); //Отображение сообщения - ошибка - const showMsgErr = useCallback((text, msgOnOk = null) => showMsg(MSG_DLGT.ERR, text, msgOnOk), [showMsg]); + const showMsgErr = useCallback((text, msgOnOk = null) => showMsg(MSG_TYPE.ERR, text, msgOnOk), [showMsg]); //Отображение сообщения - информация - const showMsgInfo = useCallback((text, msgOnOk = null) => showMsg(MSG_DLGT.INFO, text, msgOnOk), [showMsg]); + const showMsgInfo = useCallback((text, msgOnOk = null) => showMsg(MSG_TYPE.INFO, text, msgOnOk), [showMsg]); //Отображение сообщения - предупреждение - const showMsgWarn = useCallback((text, msgOnOk = null, msgOnCancel = null) => showMsg(MSG_DLGT.WARN, text, msgOnOk, msgOnCancel), [showMsg]); + const showMsgWarn = useCallback((text, msgOnOk = null, msgOnCancel = null) => showMsg(MSG_TYPE.WARN, text, msgOnOk, msgOnCancel), [showMsg]); //Сокрытие сообщения const hideMsg = useCallback( @@ -89,11 +89,23 @@ export const MessagingContext = ({ titles, texts, buttons, children }) => { hideMsg(true); }; + //Встраиваемое сообщение + const InlineMsg = useCallback(props => P8PAppInlineMessage({ okBtn: true, okBtnCaption: buttons.OK, ...props }), [buttons.OK]); + + //Встраиваемое сообщение об ошибке + const InlineMsgErr = useCallback(props => P8PAppInlineError({ okBtn: true, okBtnCaption: buttons.OK, ...props }), [buttons.OK]); + + //Встраиваемое сообщение с информацией + const InlineMsgInfo = useCallback(props => P8PAppInlineInfo({ okBtn: true, okBtnCaption: buttons.OK, ...props }), [buttons.OK]); + + //Встраиваемое сообщение с предупреждением + const InlineMsgWarn = useCallback(props => P8PAppInlineWarn({ okBtn: true, okBtnCaption: buttons.OK, ...props }), [buttons.OK]); + //Вернём компонент провайдера return ( { showMsgInfo, showMsgWarn, hideMsg, + InlineMsg, + InlineMsgErr, + InlineMsgInfo, + InlineMsgWarn, msgState: state }} > @@ -111,11 +127,11 @@ export const MessagingContext = ({ titles, texts, buttons, children }) => { variant={state.msgType} text={state.msgText} title - titleText={state.msgType == MSG_DLGT.ERR ? titles.ERR : state.msgType == MSG_DLGT.WARN ? titles.WARN : titles.INFO} + titleText={state.msgType == MSG_TYPE.ERR ? titles.ERR : state.msgType == MSG_TYPE.WARN ? titles.WARN : titles.INFO} okBtn={true} onOk={handleMessageOkClick} - okBtnCaption={[MSG_DLGT.ERR, MSG_DLGT.INFO].includes(state.msgType) ? buttons.CLOSE : buttons.OK} - cancelBtn={state.msgType == MSG_DLGT.WARN} + okBtnCaption={[MSG_TYPE.ERR, MSG_TYPE.INFO].includes(state.msgType) ? buttons.CLOSE : buttons.OK} + cancelBtn={state.msgType == MSG_TYPE.WARN} onCancel={handleMessageCancelClick} cancelBtnCaption={buttons.CANCEL} /> diff --git a/app/context/messaging_reducer.js b/app/context/messaging_reducer.js index a98febf..b6bd068 100644 --- a/app/context/messaging_reducer.js +++ b/app/context/messaging_reducer.js @@ -21,8 +21,8 @@ const MSG_AT = { HIDE_MSG: "HIDE_MSG" //Сокрытие сообщения }; -//Типы диалогов сообщений -const MSG_DLGT = { +//Типы сообщений +const MSG_TYPE = { INFO: P8P_APP_MESSAGE_VARIANT.INFO, //Тип диалога - информация WARN: P8P_APP_MESSAGE_VARIANT.WARN, //Тип диалога - предупреждение ERR: P8P_APP_MESSAGE_VARIANT.ERR //Тип диалога - ошибка @@ -33,7 +33,7 @@ const INITIAL_STATE = { loading: false, loadingMessage: "", msg: false, - msgType: MSG_DLGT.ERR, + msgType: MSG_TYPE.ERR, msgText: null, msgOnOk: null, msgOnCancel: null @@ -57,7 +57,7 @@ const handlers = { [MSG_AT.SHOW_MSG]: (state, { payload }) => ({ ...state, msg: true, - msgType: payload.type || MSG_DLGT.APP_ERR, + msgType: payload.type || MSG_TYPE.APP_ERR, msgText: payload.text, msgOnOk: payload.msgOnOk, msgOnCancel: payload.msgOnCancel @@ -73,7 +73,7 @@ const handlers = { //---------------- //Константы -export { MSG_AT, MSG_DLGT, INITIAL_STATE }; +export { MSG_AT, MSG_TYPE, INITIAL_STATE }; //Редьюсер состояния export const messagingReducer = (state, action) => { diff --git a/app/panels/prj_jobs/prj_jobs.js b/app/panels/prj_jobs/prj_jobs.js index 2ef43aa..49d703e 100644 --- a/app/panels/prj_jobs/prj_jobs.js +++ b/app/panels/prj_jobs/prj_jobs.js @@ -31,7 +31,7 @@ const PrjJobs = () => { const { executeStored } = useContext(BackEndСtx); //Подключение к контексту сообщений - const { showMsgErr, showMsgWarn, showMsgInfo } = useContext(MessagingСtx); + const { MSG_TYPE, showMsgErr, showMsgWarn, showMsgInfo, InlineMsg, InlineMsgErr, InlineMsgInfo, InlineMsgWarn } = useContext(MessagingСtx); //Подключение к контексту приложения const { pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary, pOnlineUserProcedure, pOnlineUserReport } = useContext(ApplicationСtx); @@ -67,6 +67,14 @@ const PrjJobs = () => { //Генерация содержимого return (
+ console.log("INLINE MESSAGE ON OK")} + /> + console.log("INLINE INFO ON OK")} /> + console.log("INLINE WARN ON OK")} /> + console.log("INLINE ERR ON OK")} />

Это панель работ!


Параметры: {isNavigationState() ? JSON.stringify(getNavigationState()) : "НЕ ПЕРЕДАНЫ"}