From cf8d6d44aeea9221bd161b4668d73e422a28cc99 Mon Sep 17 00:00:00 2001 From: Mim Date: Wed, 8 Apr 2026 12:30:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20setAppBarTitle,=20setAppBarSh?= =?UTF-8?q?ow,=20findPanelByName=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D0=B2=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 105 +++++++++++++++++++++++++-------- app/panels/samples/p8online.js | 70 ++++++++++++++-------- 2 files changed, 124 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index aa166e2..1f2ba3d 100644 --- a/README.md +++ b/README.md @@ -708,9 +708,9 @@ const MyPanel = () => { } ``` -### API для взаимодействия с WEB-приложением "ПАРУС 8 Онлайн" +### API для взаимодействия с WEB-приложением "ПАРУС 8 Онлайн" и ядром фреймворка -Для взаимодействия панелей с пользовательским интерфейсом "ПАРУС 8 Онлайн" в составе расширения предусмотрен специальный API. Его подключение к компоненте панели осуществляется через контекст `ApplicationCtx` ("app/context/application.js"). +Для взаимодействия панелей с пользовательским интерфейсом "ПАРУС 8 Онлайн" в составе расширения предусмотрен специальный API. Его подключение к компоненте панели осуществляется через контекст `ApplicationCtx` ("app/context/application.js"). Данный контекст так же позволяет управлять некоторыми базовыми функциями приложения фреймворка и получать сведения о зарегистрированных панелях. В состав API входят: @@ -720,6 +720,9 @@ const MyPanel = () => { - `pOnlineShowDictionary` - функция, отображение раздела "ПАРУС 8 Онлайн" в режиме словаря - `pOnlineUserProcedure` - функция, исполнение "Пользовательской процедуры" - `pOnlineUserReport` - функция, печать "Пользовательского отчёта" +- `setAppBarTitle` - функция, установка текста заголовка панели +- `setAppBarShow` - функция, установка флага отображения системного заголовка панели +- `findPanelByName` - функция, поиск зарегистрированной в файле конфигурации фреймвора (`p8panels.config`) панели по уникальному имени #### `String pOnlineShowTab(Object)` @@ -848,6 +851,36 @@ const MyPanel = () => { **Результат:** функция не возвращает значимого результата +#### `undefined setAppBarTitle(appBarTitle)` + +Изменяет текст заголовка панели. + +**Входные параметры:** + +`appBarTitle` - необязательный, строка, текст заголовка панели (если не указан - используется заголовок панели `Panels\Panel\caption` из файла конфигурации `p8panels.config`) + +**Результат:** функция не возвращает значимого результата + +#### `undefined setAppBarShow(appBarShow)` + +Скрывает/отображает заголовок панели. + +**Входные параметры:** + +`appBarShow` - обязательный, логический, флаг отображения заголовка панели (`false` - скрыть заголовок, `true` - отобразить заголовок) + +**Результат:** функция не возвращает значимого результата + +#### `object findPanelByName(name)` + +Возвращает сведения (XML элемент `Panels\Panel` в JSON-интерпретации) о панели из файла конфигурации фреймворка (`p8panels.config`) по её уникальному наименованию (`Panels\Panel\name`). + +**Входные параметры:** + +`name` - обязательный, строка, уникальное имя панели (указывается в атрибуте `name` XML-элемента `Panels\Panel` файла конфигурации фреймворка `p8panels.config`) + +**Результат:** функция возвращает объект, содержащий JSON-интерпретацию XML-элемента `Panel` файла конфигурации `p8panels.config`, соответствующего переданному имени панели (`undefined` - если сведения о панели не были найдены) + Примеры (см. "app/panels/samples/p8online.js"): ``` @@ -862,13 +895,20 @@ const STYLES = { DIVIDER: { margin: "15px" } }; -//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" +//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка const P8Online = ({ title }) => { - //Собственное состояние + //Собственное состояние - флаг отображения пользовательского текста заголовка + const [titleCustom, setTitleCustom] = useState(false); + + //Собственное состояние - отображение заголовка + const [titleVisible, setTitleVisible] = useState(true); + + //Собственное состояние - выбранный контрагент const [agent, setAgent] = useState(""); //Подключение к контексту приложения - const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary } = useContext(ApplicationCtx); + const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary, setAppBarTitle, setAppBarShow, findPanelByName } = + useContext(ApplicationCtx); //Генерация содержимого return ( @@ -876,20 +916,44 @@ const P8Online = ({ title }) => { {title} + {/* Изменение текста заголовка */} + {titleVisible && ( + <> + + + + )} + {/* Сокрытие/отображение заголовка */} + + + {/* Поиск панели */} + + {/* Открыть новую закладку */} {/* Открыть раздел */} - @@ -899,12 +963,7 @@ const P8Online = ({ title }) => { onClick={() => { pOnlineShowDictionary({ unitCode: "AGNLIST", - inputParameters: [ - { - name: "in_AGNABBR", - value: agent - } - ], + inputParameters: [{ name: "in_AGNABBR", value: agent }], callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null) }); }} @@ -917,13 +976,7 @@ const P8Online = ({ title }) => { ) : null} diff --git a/app/panels/samples/p8online.js b/app/panels/samples/p8online.js index 8b839c5..bbbf8c2 100644 --- a/app/panels/samples/p8online.js +++ b/app/panels/samples/p8online.js @@ -1,6 +1,6 @@ /* Парус 8 - Панели мониторинга - Примеры для разработчиков - Пример: API для взаимодействия с "ПАРУС 8 Онлайн" + Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка */ //--------------------- @@ -27,13 +27,20 @@ const STYLES = { //Тело модуля //----------- -//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" +//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка const P8Online = ({ title }) => { - //Собственное состояние + //Собственное состояние - флаг отображения пользовательского текста заголовка + const [titleCustom, setTitleCustom] = useState(false); + + //Собственное состояние - флаг отображения заголовка + const [titleVisible, setTitleVisible] = useState(true); + + //Собственное состояние - выбранный контрагент const [agent, setAgent] = useState(""); //Подключение к контексту приложения - const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary } = useContext(ApplicationCtx); + const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary, setAppBarTitle, setAppBarShow, findPanelByName } = + useContext(ApplicationCtx); //Генерация содержимого return ( @@ -41,20 +48,44 @@ const P8Online = ({ title }) => { {title} + {/* Изменение текста заголовка */} + {titleVisible && ( + <> + + + + )} + {/* Сокрытие/отображение заголовка */} + + + {/* Поиск панели */} + + {/* Открыть новую закладку */} {/* Открыть раздел */} - @@ -64,12 +95,7 @@ const P8Online = ({ title }) => { onClick={() => { pOnlineShowDictionary({ unitCode: "AGNLIST", - inputParameters: [ - { - name: "in_AGNABBR", - value: agent - } - ], + inputParameters: [{ name: "in_AGNABBR", value: agent }], callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null) }); }} @@ -82,13 +108,7 @@ const P8Online = ({ title }) => { ) : null}