Документация: setAppBarTitle, setAppBarShow, findPanelByName описаны и добавлены в пример
This commit is contained in:
parent
7d6f1283bb
commit
cf8d6d44ae
105
README.md
105
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 }) => {
|
||||
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
||||
{title}
|
||||
</Typography>
|
||||
{/* Изменение текста заголовка */}
|
||||
{titleVisible && (
|
||||
<>
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
setAppBarTitle(titleCustom ? "" : "Пользовательский текст");
|
||||
setTitleCustom(!titleCustom);
|
||||
}}
|
||||
>
|
||||
{`${titleCustom ? "Восстановить" : "Изменить"} текст заголовка`}
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
</>
|
||||
)}
|
||||
{/* Сокрытие/отображение заголовка */}
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
setAppBarShow(!titleVisible);
|
||||
setTitleVisible(!titleVisible);
|
||||
}}
|
||||
>
|
||||
{`${titleVisible ? "Скрыть" : "Отобразить"} заголовок`}
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Поиск панели */}
|
||||
<Button variant="contained" onClick={() => console.log(findPanelByName("Samples"))}>
|
||||
Вывести в консоль сведения о данной панели
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Открыть новую закладку */}
|
||||
<Button variant="contained" onClick={() => pOnlineShowTab({ caption: "PARUS.COM", url: "https://www.parus.com" })}>
|
||||
Открыть закладку
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Открыть раздел */}
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
pOnlineShowUnit({
|
||||
unitCode: "Contracts"
|
||||
});
|
||||
}}
|
||||
>
|
||||
<Button variant="contained" onClick={() => pOnlineShowUnit({ unitCode: "Contracts" })}>
|
||||
Открыть раздел Договоры
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
@ -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 }) => {
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
pOnlineShowDocument({
|
||||
unitCode: "AGNLIST",
|
||||
document: agent,
|
||||
inRnParameter: "in_AGNABBR"
|
||||
});
|
||||
}}
|
||||
onClick={() => pOnlineShowDocument({ unitCode: "AGNLIST", document: agent, inRnParameter: "in_AGNABBR" })}
|
||||
>{`Показать контрагента "${agent}"`}</Button>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
@ -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 }) => {
|
||||
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
||||
{title}
|
||||
</Typography>
|
||||
{/* Изменение текста заголовка */}
|
||||
{titleVisible && (
|
||||
<>
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
setAppBarTitle(titleCustom ? "" : "Пользовательский текст");
|
||||
setTitleCustom(!titleCustom);
|
||||
}}
|
||||
>
|
||||
{`${titleCustom ? "Восстановить" : "Изменить"} текст заголовка`}
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
</>
|
||||
)}
|
||||
{/* Сокрытие/отображение заголовка */}
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
setAppBarShow(!titleVisible);
|
||||
setTitleVisible(!titleVisible);
|
||||
}}
|
||||
>
|
||||
{`${titleVisible ? "Скрыть" : "Отобразить"} заголовок`}
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Поиск панели */}
|
||||
<Button variant="contained" onClick={() => console.log(findPanelByName("Samples"))}>
|
||||
Вывести в консоль сведения о данной панели
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Открыть новую закладку */}
|
||||
<Button variant="contained" onClick={() => pOnlineShowTab({ caption: "PARUS.COM", url: "https://www.parus.com" })}>
|
||||
Открыть закладку
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
{/* Открыть раздел */}
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
pOnlineShowUnit({
|
||||
unitCode: "Contracts"
|
||||
});
|
||||
}}
|
||||
>
|
||||
<Button variant="contained" onClick={() => pOnlineShowUnit({ unitCode: "Contracts" })}>
|
||||
Открыть раздел Договоры
|
||||
</Button>
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
@ -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 }) => {
|
||||
<Divider sx={STYLES.DIVIDER} />
|
||||
<Button
|
||||
variant="contained"
|
||||
onClick={() => {
|
||||
pOnlineShowDocument({
|
||||
unitCode: "AGNLIST",
|
||||
document: agent,
|
||||
inRnParameter: "in_AGNABBR"
|
||||
});
|
||||
}}
|
||||
onClick={() => pOnlineShowDocument({ unitCode: "AGNLIST", document: agent, inRnParameter: "in_AGNABBR" })}
|
||||
>{`Показать контрагента "${agent}"`}</Button>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user