P8-Panels/app/components/p8p_header/p8p_header_dictionary.js

74 lines
2.5 KiB
JavaScript

/*
Парус 8 - Панели мониторинга - Заголовок
Компонент: Плавающая кнопка действия
*/
//---------------------
//Подключение библиотек
//---------------------
import React, { useContext } from "react"; //Классы React
import PropTypes from "prop-types"; //Контроль свойств компонента
import { ApplicationCtx } from "../../context/application"; //Контекст приложения
import { P8P_COMPONENT_SIZE } from "../../theme/constants"; //Общие константы стилей
import { P8PHeaderButtonBase } from "./components/p8p_header_button_base"; //Общие константы стилей
//---------
//Константы
//---------
//Структура элемента входного параметра
const P8P_HEADER_DICT_INPUT_PRMS = PropTypes.shape({
name: PropTypes.string.isRequired,
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired
});
//-----------
//Тело модуля
//-----------
//Выбор значения из словаря
const P8PHeaderDictionary = ({ value, placeholder, unitCode, showMethod = "main", inputParameters, width, onSelect, onClear }) => {
//Подключение к контексту приложения
const { pOnlineShowDictionary } = useContext(ApplicationCtx);
//При нажатии на кнопку
const handleButtonClick = () => {
pOnlineShowDictionary({
unitCode,
showMethod,
inputParameters,
callBack: res => res.success && onSelect && onSelect(res.outParameters)
});
};
//Формирование представления
return (
<P8PHeaderButtonBase
value={value || placeholder}
width={width}
size={P8P_COMPONENT_SIZE.SMALL}
onClick={handleButtonClick}
onClear={onClear}
/>
);
};
//Контроль свойств - Выбор значения из словаря
P8PHeaderDictionary.propTypes = {
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
placeholder: PropTypes.string.isRequired,
unitCode: PropTypes.string.isRequired,
showMethod: PropTypes.string,
inputParameters: PropTypes.arrayOf(P8P_HEADER_DICT_INPUT_PRMS),
width: PropTypes.string,
onSelect: PropTypes.func,
onClear: PropTypes.func
};
//----------------
//Интерфейс модуля
//----------------
export { P8PHeaderDictionary };