forked from CITKParus/P8-Panels
56 lines
1.6 KiB
JavaScript
56 lines
1.6 KiB
JavaScript
/*
|
||
Парус 8 - Панели мониторинга - Редактор запросов
|
||
Компоненты: Сущность запроса
|
||
*/
|
||
|
||
//---------------------
|
||
//Подключение библиотек
|
||
//---------------------
|
||
|
||
import React from "react"; //Классы React
|
||
import PropTypes from "prop-types"; //Контроль свойств компонента
|
||
import "./entity.css"; //Стили компомнента
|
||
import { ATTRIBUTE_SHAPE } from "../attribute/attribute"; //Описание атрибута сущности
|
||
|
||
//---------
|
||
//Константы
|
||
//---------
|
||
|
||
//Структура данных о сущности запроса
|
||
const ENTITY_SHAPE = PropTypes.shape({
|
||
id: PropTypes.string.isRequired,
|
||
name: PropTypes.string.isRequired,
|
||
title: PropTypes.string.isRequired,
|
||
x: PropTypes.number.isRequired,
|
||
y: PropTypes.number.isRequired,
|
||
attrs: PropTypes.arrayOf(ATTRIBUTE_SHAPE).isRequired
|
||
});
|
||
|
||
//-----------
|
||
//Тело модуля
|
||
//-----------
|
||
|
||
//Сущность запроса
|
||
const Entity = ({ data, selected = false }) => {
|
||
return (
|
||
<div className="entity__wrapper" data-selected={selected}>
|
||
<div className="entity__title">
|
||
<span>{data.title}</span>
|
||
<div className="entity__name">{data.name}</div>
|
||
</div>
|
||
</div>
|
||
);
|
||
};
|
||
|
||
//Контроль свойств компонента - Сущность запроса
|
||
Entity.propTypes = {
|
||
data: ENTITY_SHAPE.isRequired,
|
||
selected: PropTypes.bool
|
||
};
|
||
|
||
//----------------
|
||
//Интерфейс модуля
|
||
//----------------
|
||
|
||
export { Entity, ENTITY_SHAPE };
|