/* Парус 8 - Панели мониторинга - Редакторы панелей Компонент: Источник данных */ //--------------------- //Подключение библиотек //--------------------- import React, { useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { Stack, IconButton, Icon, Typography, Chip, Button, Card, CardContent, CardActions, CardActionArea } from "@mui/material"; //Интерфейсные элементы import { BUTTONS, TEXTS } from "../../../app.text"; //Общие текстовые ресурсы import { STYLES as COMMON_STYLES } from "./p8p_editors_common"; //Общие ресурсы редаторов import { P8P_DATA_SOURCE_SHAPE, P8P_DATA_SOURCE_TYPE, P8P_DATA_SOURCE_TYPE_NAME, P8P_DATA_SOURCE_INITIAL } from "./p8p_data_source_common"; //Общие ресурсы компонента "Источник данных" import { P8PDataSourceConfigDialog } from "./p8p_data_source_config_dialog"; //Диалог настройки источника данных //----------- //Тело модуля //----------- //Источник данных const P8PDataSource = ({ dataSource = null, valueProviders = {}, onChange = null } = {}) => { //Собственное состояние - отображение диалога настройки const [configDlg, setConfigDlg] = useState(false); //Уведомление родителя о смене настроек источника данных const notifyChange = settings => onChange && onChange(settings); //При нажатии на настройку источника данных const handleSetup = () => setConfigDlg(true); //При нажатии на настройку источника данных const handleSetupOk = dataSource => { setConfigDlg(false); notifyChange(dataSource); }; //При нажатии на настройку источника данных const handleSetupCancel = () => setConfigDlg(false); //При удалении настроек источника данных const handleDelete = () => notifyChange({ ...P8P_DATA_SOURCE_INITIAL }); //Расчет флага "настроенности" const configured = dataSource?.type ? true : false; //Список аргументов const args = configured && dataSource.arguments.map((argument, i) => ( )); //Формирование представления return ( <> {configDlg && ( )} {configured && ( {dataSource.type === P8P_DATA_SOURCE_TYPE.USER_PROC ? dataSource.userProc : TEXTS.UNNAMED_SOURCE} {P8P_DATA_SOURCE_TYPE_NAME[dataSource.type] || TEXTS.UNKNOWN_SOURCE_TYPE} {args} delete )} {!configured && ( )} ); }; //Контроль свойств компонента - Источник данных P8PDataSource.propTypes = { dataSource: P8P_DATA_SOURCE_SHAPE, valueProviders: PropTypes.object, onChange: PropTypes.func }; //---------------- //Интерфейс модуля //---------------- export { P8PDataSource };