/* Парус 8 - Панели мониторинга - Редактор панелей Компоненты: Таблица (редактор настроек) */ //--------------------- //Подключение библиотек //--------------------- import React, { useEffect, useState } from "react"; //Классы React import PropTypes from "prop-types"; //Контроль свойств компонента import { P8PEditorBox } from "../../../../components/editors/p8p_editor_box"; //Контейнер редактора import { P8PEditorSubHeader } from "../../../../components/editors/p8p_editor_sub_header"; //Заголовок раздела редактора import { P8P_DATA_SOURCE_SHAPE } from "../../../../components/editors/p8p_data_source_common"; //Общие ресурсы источника данных import { P8PDataSource } from "../../../../components/editors/p8p_data_source"; //Источник данных import { P8PActions } from "../../../../components/editors/p8p_actions"; //Действия import { P8PConditions } from "../../../../components/editors/p8p_conditions"; //Условия import { P8P_CA_TABLE_VALUE_TYPES, P8P_CA_TABLE_ACTION_AREAS } from "./action"; //Общие ресурсы действий таблицы import { P8P_CC_TABLE_COND_FIELDS, P8P_CC_TABLE_RES_FIELDS } from "./conditions"; //Общие ресурсы условий таблицы import { P8P_CA_SHAPE, P8P_CAS_INITIAL } from "../../../../components/editors/p8p_component_action/common"; //Общие ресурсы действий import { P8P_CCS_INITIAL, P8P_CC_SHAPE } from "../../../../components/editors/p8p_component_condition/common"; //Общие ресурсы компонента "Редактор условия" //----------- //Тело модуля //----------- //Таблица (редактор настроек) const TableEditor = ({ id, dataSource = null, valueProviders = {}, conditions = P8P_CCS_INITIAL, actions = P8P_CAS_INITIAL, onSettingsChange = null } = {}) => { //Собственное состояние - текущие настройки const [settings, setSettings] = useState(null); //При сохранении изменений элемента const handleDataSourceChange = dataSource => setSettings(pv => ({ ...pv, dataSource: { ...dataSource } })); //При изменении действий const handleActionsChange = actions => setSettings(pv => ({ ...pv, actions })); //При изменении условий const handleConditionsChange = conditions => setSettings(pv => ({ ...pv, conditions })); //При сохранении настроек const handleSave = (closeEditor = false) => onSettingsChange && onSettingsChange({ id, settings, closeEditor }); //При изменении компонента useEffect(() => { settings?.id != id && setSettings({ id, dataSource, conditions, actions }); }, [settings, id, dataSource, conditions, actions]); //Формирование представления return ( ); }; //Контроль свойств компонента - Таблица (редактор настроек) TableEditor.propTypes = { id: PropTypes.string.isRequired, dataSource: P8P_DATA_SOURCE_SHAPE, valueProviders: PropTypes.object, conditions: PropTypes.arrayOf(P8P_CC_SHAPE), actions: PropTypes.arrayOf(P8P_CA_SHAPE), onSettingsChange: PropTypes.func }; //---------------- //Интерфейс модуля //---------------- export default TableEditor;