forked from CITKParus/P8-Panels
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | ||
|     Парус 8 - Панели мониторинга - Примеры для разработчиков
 | ||
|     Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
 | ||
| */
 | ||
| 
 | ||
| //---------------------
 | ||
| //Подключение библиотек
 | ||
| //---------------------
 | ||
| 
 | ||
| import React, { useState, useContext } from "react"; //Классы React
 | ||
| import PropTypes from "prop-types"; //Контроль свойств компонента
 | ||
| import { Typography, Button, Divider } from "@mui/material"; //Интерфейсные элементы
 | ||
| import { ApplicationСtx } from "../../context/application"; //Контекст приложения
 | ||
| 
 | ||
| //---------
 | ||
| //Константы
 | ||
| //---------
 | ||
| 
 | ||
| //Стили
 | ||
| const STYLES = {
 | ||
|     CONTAINER: { textAlign: "center", paddingTop: "20px" },
 | ||
|     TITLE: { paddingBottom: "15px" },
 | ||
|     DIVIDER: { margin: "15px" }
 | ||
| };
 | ||
| 
 | ||
| //-----------
 | ||
| //Тело модуля
 | ||
| //-----------
 | ||
| 
 | ||
| //Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
 | ||
| const P8Online = ({ title }) => {
 | ||
|     //Собственное состояние
 | ||
|     const [agent, setAgent] = useState("");
 | ||
| 
 | ||
|     //Подключение к контексту приложения
 | ||
|     const { pOnlineShowUnit, pOnlineShowTab, pOnlineShowDocument, pOnlineShowDictionary } = useContext(ApplicationСtx);
 | ||
| 
 | ||
|     //Генерация содержимого
 | ||
|     return (
 | ||
|         <div style={STYLES.CONTAINER}>
 | ||
|             <Typography sx={STYLES.TITLE} variant={"h6"}>
 | ||
|                 {title}
 | ||
|             </Typography>
 | ||
|             {/* Открыть новую закладку */}
 | ||
|             <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>
 | ||
|             <Divider sx={STYLES.DIVIDER} />
 | ||
|             {/* Открыть раздел в режиме словаря */}
 | ||
|             <Button
 | ||
|                 variant="contained"
 | ||
|                 onClick={() => {
 | ||
|                     pOnlineShowDictionary({
 | ||
|                         unitCode: "AGNLIST",
 | ||
|                         inputParameters: [
 | ||
|                             {
 | ||
|                                 name: "in_AGNABBR",
 | ||
|                                 value: agent
 | ||
|                             }
 | ||
|                         ],
 | ||
|                         callBack: res => (res.success === true ? setAgent(res.outParameters.out_AGNABBR) : null)
 | ||
|                     });
 | ||
|                 }}
 | ||
|             >
 | ||
|                 Выбрать контрагента
 | ||
|             </Button>
 | ||
|             {/* Позиционирование/отбор документа */}
 | ||
|             {agent ? (
 | ||
|                 <>
 | ||
|                     <Divider sx={STYLES.DIVIDER} />
 | ||
|                     <Button
 | ||
|                         variant="contained"
 | ||
|                         onClick={() => {
 | ||
|                             pOnlineShowDocument({
 | ||
|                                 unitCode: "AGNLIST",
 | ||
|                                 document: agent,
 | ||
|                                 inRnParameter: "in_AGNABBR"
 | ||
|                             });
 | ||
|                         }}
 | ||
|                     >{`Показать контрагента "${agent}"`}</Button>
 | ||
|                 </>
 | ||
|             ) : null}
 | ||
|         </div>
 | ||
|     );
 | ||
| };
 | ||
| 
 | ||
| //Контроль свойств - Пример: API для взаимодействия с "ПАРУС 8 Онлайн"
 | ||
| P8Online.propTypes = {
 | ||
|     title: PropTypes.string.isRequired
 | ||
| };
 | ||
| 
 | ||
| //----------------
 | ||
| //Интерфейс модуля
 | ||
| //----------------
 | ||
| 
 | ||
| export { P8Online };
 |