forked from CITKParus/P8-Panels
74 lines
2.5 KiB
JavaScript
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 };
|