forked from CITKParus/P8-Panels
		
	
		
			
				
	
	
		
			52 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
|     Парус 8 - Панели мониторинга - Редактор панелей
 | |
|     Редактор свойств компонента панели
 | |
| */
 | |
| 
 | |
| //---------------------
 | |
| //Подключение библиотек
 | |
| //---------------------
 | |
| 
 | |
| import React from "react"; //Классы React
 | |
| import PropTypes from "prop-types"; //Контроль свойств компонента
 | |
| import { Box, Typography } from "@mui/material"; //Интерфейсные элементы
 | |
| import { useComponentModule } from "./components/components_hooks"; //Хуки компонентов
 | |
| 
 | |
| //-----------
 | |
| //Тело модуля
 | |
| //-----------
 | |
| 
 | |
| //Редактор свойств компонента панели
 | |
| const ComponentEditor = ({ id, path, settings = {}, valueProviders = {}, onSettingsChange = null } = {}) => {
 | |
|     //Подгрузка модуля редактора компонента (lazy здесь постоянно обновлялся при смене props, поэтому на хуке, от props независимого)
 | |
|     const [ComponentEditor, init] = useComponentModule({ path, module: "editor" });
 | |
| 
 | |
|     //Расчёт флага наличия компонента
 | |
|     const haveComponent = path ? true : false;
 | |
| 
 | |
|     //Формирование представления
 | |
|     return (
 | |
|         <Box>
 | |
|             {haveComponent && init && (
 | |
|                 <ComponentEditor.default id={id} {...settings} valueProviders={valueProviders} onSettingsChange={onSettingsChange} />
 | |
|             )}
 | |
|             {!haveComponent && <Typography align={"center"}>Компонент не определён</Typography>}
 | |
|         </Box>
 | |
|     );
 | |
| };
 | |
| 
 | |
| //Контроль свойств компонента - редактор свойств компонента панели
 | |
| ComponentEditor.propTypes = {
 | |
|     id: PropTypes.string.isRequired,
 | |
|     path: PropTypes.string.isRequired,
 | |
|     settings: PropTypes.object,
 | |
|     valueProviders: PropTypes.object,
 | |
|     onSettingsChange: PropTypes.func
 | |
| };
 | |
| 
 | |
| //----------------
 | |
| //Интерфейс модуля
 | |
| //----------------
 | |
| 
 | |
| export { ComponentEditor };
 |