/*
    Парус 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 };