import React, { useState, useEffect, useContext } from "react"; import { useApolloClient } from "@apollo/client"; import { msgToColor } from "../../utils/indi"; import Property from "./property"; import gql from "graphql-tag"; import { Box, Button, Tabs, Tab, Text, Layer, ResponsiveContext, } from "grommet"; import { Close, Trash } from "grommet-icons"; const MSGS_FRAGMENT = gql` fragment DeviceMsgs on Device { messages } `; const Device = ({ device, messages, onMessagesClosed }) => { const client = useApolloClient(); const [groups, setGroups] = useState([]); const [selectedTabs, setSelectedTabs] = useState({}); const [currentTab, setCurrentTab] = useState(0); const size = useContext(ResponsiveContext); useEffect(() => { const groups = new Set(); device.properties.forEach((v) => { groups.add(v.vector.group); }); setGroups(Array.from(groups)); setCurrentTab(selectedTabs[device.id] || 0); }, [device, selectedTabs]); return ( { setCurrentTab(nextTab); const newValue = { ...selectedTabs }; newValue[device.id] = nextTab; setSelectedTabs(newValue); }} > {groups.map((g) => ( {device.properties && device.properties .filter((p) => p.vector.group === g) .map((p) => )} ))} {messages ? (