Документация: 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 входят:
|
В состав API входят:
|
||||||
|
|
||||||
@ -720,6 +720,9 @@ const MyPanel = () => {
|
|||||||
- `pOnlineShowDictionary` - функция, отображение раздела "ПАРУС 8 Онлайн" в режиме словаря
|
- `pOnlineShowDictionary` - функция, отображение раздела "ПАРУС 8 Онлайн" в режиме словаря
|
||||||
- `pOnlineUserProcedure` - функция, исполнение "Пользовательской процедуры"
|
- `pOnlineUserProcedure` - функция, исполнение "Пользовательской процедуры"
|
||||||
- `pOnlineUserReport` - функция, печать "Пользовательского отчёта"
|
- `pOnlineUserReport` - функция, печать "Пользовательского отчёта"
|
||||||
|
- `setAppBarTitle` - функция, установка текста заголовка панели
|
||||||
|
- `setAppBarShow` - функция, установка флага отображения системного заголовка панели
|
||||||
|
- `findPanelByName` - функция, поиск зарегистрированной в файле конфигурации фреймвора (`p8panels.config`) панели по уникальному имени
|
||||||
|
|
||||||
#### `String pOnlineShowTab(Object)`
|
#### `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"):
|
Примеры (см. "app/panels/samples/p8online.js"):
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -862,13 +895,20 @@ const STYLES = {
|
|||||||
DIVIDER: { margin: "15px" }
|
DIVIDER: { margin: "15px" }
|
||||||
};
|
};
|
||||||
|
|
||||||
//Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
|
//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка
|
||||||
const P8Online = ({ title }) => {
|
const P8Online = ({ title }) => {
|
||||||
//Собственное состояние
|
//Собственное состояние - флаг отображения пользовательского текста заголовка
|
||||||
|
const [titleCustom, setTitleCustom] = useState(false);
|
||||||
|
|
||||||
|
//Собственное состояние - отображение заголовка
|
||||||
|
const [titleVisible, setTitleVisible] = useState(true);
|
||||||
|
|
||||||
|
//Собственное состояние - выбранный контрагент
|
||||||
const [agent, setAgent] = useState("");
|
const [agent, setAgent] = useState("");
|
||||||
|
|
||||||
//Подключение к контексту приложения
|
//Подключение к контексту приложения
|
||||||
const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary } = useContext(ApplicationCtx);
|
const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary, setAppBarTitle, setAppBarShow, findPanelByName } =
|
||||||
|
useContext(ApplicationCtx);
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
@ -876,20 +916,44 @@ const P8Online = ({ title }) => {
|
|||||||
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
||||||
{title}
|
{title}
|
||||||
</Typography>
|
</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 variant="contained" onClick={() => pOnlineShowTab({ caption: "PARUS.COM", url: "https://www.parus.com" })}>
|
||||||
Открыть закладку
|
Открыть закладку
|
||||||
</Button>
|
</Button>
|
||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
{/* Открыть раздел */}
|
{/* Открыть раздел */}
|
||||||
<Button
|
<Button variant="contained" onClick={() => pOnlineShowUnit({ unitCode: "Contracts" })}>
|
||||||
variant="contained"
|
|
||||||
onClick={() => {
|
|
||||||
pOnlineShowUnit({
|
|
||||||
unitCode: "Contracts"
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Открыть раздел Договоры
|
Открыть раздел Договоры
|
||||||
</Button>
|
</Button>
|
||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
@ -899,12 +963,7 @@ const P8Online = ({ title }) => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
pOnlineShowDictionary({
|
pOnlineShowDictionary({
|
||||||
unitCode: "AGNLIST",
|
unitCode: "AGNLIST",
|
||||||
inputParameters: [
|
inputParameters: [{ name: "in_AGNABBR", value: agent }],
|
||||||
{
|
|
||||||
name: "in_AGNABBR",
|
|
||||||
value: agent
|
|
||||||
}
|
|
||||||
],
|
|
||||||
callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null)
|
callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null)
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@ -917,13 +976,7 @@ const P8Online = ({ title }) => {
|
|||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => {
|
onClick={() => pOnlineShowDocument({ unitCode: "AGNLIST", document: agent, inRnParameter: "in_AGNABBR" })}
|
||||||
pOnlineShowDocument({
|
|
||||||
unitCode: "AGNLIST",
|
|
||||||
document: agent,
|
|
||||||
inRnParameter: "in_AGNABBR"
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>{`Показать контрагента "${agent}"`}</Button>
|
>{`Показать контрагента "${agent}"`}</Button>
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Парус 8 - Панели мониторинга - Примеры для разработчиков
|
Парус 8 - Панели мониторинга - Примеры для разработчиков
|
||||||
Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
|
Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//---------------------
|
//---------------------
|
||||||
@ -27,13 +27,20 @@ const STYLES = {
|
|||||||
//Тело модуля
|
//Тело модуля
|
||||||
//-----------
|
//-----------
|
||||||
|
|
||||||
//Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
|
//Пример: API для взаимодействия с "ПАРУС 8 Онлайн" и ядром фреймворка
|
||||||
const P8Online = ({ title }) => {
|
const P8Online = ({ title }) => {
|
||||||
//Собственное состояние
|
//Собственное состояние - флаг отображения пользовательского текста заголовка
|
||||||
|
const [titleCustom, setTitleCustom] = useState(false);
|
||||||
|
|
||||||
|
//Собственное состояние - флаг отображения заголовка
|
||||||
|
const [titleVisible, setTitleVisible] = useState(true);
|
||||||
|
|
||||||
|
//Собственное состояние - выбранный контрагент
|
||||||
const [agent, setAgent] = useState("");
|
const [agent, setAgent] = useState("");
|
||||||
|
|
||||||
//Подключение к контексту приложения
|
//Подключение к контексту приложения
|
||||||
const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary } = useContext(ApplicationCtx);
|
const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary, setAppBarTitle, setAppBarShow, findPanelByName } =
|
||||||
|
useContext(ApplicationCtx);
|
||||||
|
|
||||||
//Генерация содержимого
|
//Генерация содержимого
|
||||||
return (
|
return (
|
||||||
@ -41,20 +48,44 @@ const P8Online = ({ title }) => {
|
|||||||
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
<Typography sx={STYLES.TITLE} variant={"h6"}>
|
||||||
{title}
|
{title}
|
||||||
</Typography>
|
</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 variant="contained" onClick={() => pOnlineShowTab({ caption: "PARUS.COM", url: "https://www.parus.com" })}>
|
||||||
Открыть закладку
|
Открыть закладку
|
||||||
</Button>
|
</Button>
|
||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
{/* Открыть раздел */}
|
{/* Открыть раздел */}
|
||||||
<Button
|
<Button variant="contained" onClick={() => pOnlineShowUnit({ unitCode: "Contracts" })}>
|
||||||
variant="contained"
|
|
||||||
onClick={() => {
|
|
||||||
pOnlineShowUnit({
|
|
||||||
unitCode: "Contracts"
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Открыть раздел Договоры
|
Открыть раздел Договоры
|
||||||
</Button>
|
</Button>
|
||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
@ -64,12 +95,7 @@ const P8Online = ({ title }) => {
|
|||||||
onClick={() => {
|
onClick={() => {
|
||||||
pOnlineShowDictionary({
|
pOnlineShowDictionary({
|
||||||
unitCode: "AGNLIST",
|
unitCode: "AGNLIST",
|
||||||
inputParameters: [
|
inputParameters: [{ name: "in_AGNABBR", value: agent }],
|
||||||
{
|
|
||||||
name: "in_AGNABBR",
|
|
||||||
value: agent
|
|
||||||
}
|
|
||||||
],
|
|
||||||
callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null)
|
callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null)
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@ -82,13 +108,7 @@ const P8Online = ({ title }) => {
|
|||||||
<Divider sx={STYLES.DIVIDER} />
|
<Divider sx={STYLES.DIVIDER} />
|
||||||
<Button
|
<Button
|
||||||
variant="contained"
|
variant="contained"
|
||||||
onClick={() => {
|
onClick={() => pOnlineShowDocument({ unitCode: "AGNLIST", document: agent, inRnParameter: "in_AGNABBR" })}
|
||||||
pOnlineShowDocument({
|
|
||||||
unitCode: "AGNLIST",
|
|
||||||
document: agent,
|
|
||||||
inRnParameter: "in_AGNABBR"
|
|
||||||
});
|
|
||||||
}}
|
|
||||||
>{`Показать контрагента "${agent}"`}</Button>
|
>{`Показать контрагента "${agent}"`}</Button>
|
||||||
</>
|
</>
|
||||||
) : null}
|
) : null}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user