11import { TabContext , TabList , TabPanel } from "@mui/lab" ;
22import {
3+ Box ,
34 Button ,
45 Drawer ,
56 IconButton ,
@@ -13,6 +14,7 @@ import React from "react";
1314import { DataSource } from "@/configurator" ;
1415import { DataSetMetadata } from "@/configurator/components/dataset-metadata" ;
1516import { DRAWER_WIDTH } from "@/configurator/components/drawer" ;
17+ import { DimensionMetadataFragment } from "@/graphql/query-hooks" ;
1618import SvgIcClose from "@/icons/components/IcClose" ;
1719import useEvent from "@/utils/use-event" ;
1820
@@ -96,6 +98,9 @@ const useStyles = makeStyles<Theme, { drawerTop?: number }>((theme) => {
9698 } ,
9799 } ,
98100 tabPanel : {
101+ display : "flex" ,
102+ flexDirection : "column" ,
103+ gap : theme . spacing ( 4 ) ,
99104 padding : 0 ,
100105 } ,
101106 } ;
@@ -104,11 +109,13 @@ const useStyles = makeStyles<Theme, { drawerTop?: number }>((theme) => {
104109export const MetadataPanel = ( {
105110 datasetIri,
106111 dataSource,
112+ dimensions,
107113 container,
108114 top,
109115} : {
110116 datasetIri : string ;
111117 dataSource : DataSource ;
118+ dimensions : DimensionMetadataFragment [ ] ;
112119 container ?: HTMLDivElement | null ;
113120 top ?: number ;
114121} ) => {
@@ -117,51 +124,24 @@ export const MetadataPanel = ({
117124 < PanelInner
118125 datasetIri = { datasetIri }
119126 dataSource = { dataSource }
127+ dimensions = { dimensions }
120128 container = { container }
121129 top = { top }
122130 />
123131 </ ContextProvider >
124132 ) ;
125133} ;
126134
127- const ToggleButton = ( { onClick } : { onClick : ( ) => void } ) => {
128- return (
129- < Button component = "a" variant = "text" size = "small" onClick = { onClick } >
130- < Typography variant = "body2" > Metadata</ Typography >
131- </ Button >
132- ) ;
133- } ;
134-
135- const Header = ( { onClose } : { onClose : ( ) => void } ) => {
136- const classes = useStyles ( { } ) ;
137-
138- return (
139- < div className = { classes . header } >
140- < Typography variant = "body2" fontWeight = "bold" >
141- Metadata
142- </ Typography >
143-
144- < IconButton size = "small" onClick = { onClose } >
145- < SvgIcClose />
146- </ IconButton >
147- </ div >
148- ) ;
149- } ;
150-
151- const Content = ( ) => {
152- const classes = useStyles ( { } ) ;
153-
154- return < div className = { classes . content } > </ div > ;
155- } ;
156-
157135const PanelInner = ( {
158136 datasetIri,
159137 dataSource,
138+ dimensions,
160139 container,
161140 top = 0 ,
162141} : {
163142 datasetIri : string ;
164143 dataSource : DataSource ;
144+ dimensions : DimensionMetadataFragment [ ] ;
165145 container : HTMLDivElement | null | undefined ;
166146 top ?: number ;
167147} ) => {
@@ -210,16 +190,79 @@ const PanelInner = ({
210190 />
211191 </ TabList >
212192
213- < TabPanel className = { classes . tabPanel } value = "general" >
214- < DataSetMetadata dataSetIri = { datasetIri } dataSource = { dataSource } />
215- </ TabPanel >
216- < TabPanel className = { classes . tabPanel } value = "data" >
217- Data
218- </ TabPanel >
193+ < TabPanelGeneral datasetIri = { datasetIri } dataSource = { dataSource } />
194+ < TabPanelData dimensions = { dimensions } />
219195 </ TabContext >
220196
221197 < Content />
222198 </ Drawer >
223199 </ >
224200 ) ;
225201} ;
202+
203+ const ToggleButton = ( { onClick } : { onClick : ( ) => void } ) => {
204+ return (
205+ < Button component = "a" variant = "text" size = "small" onClick = { onClick } >
206+ < Typography variant = "body2" > Metadata</ Typography >
207+ </ Button >
208+ ) ;
209+ } ;
210+
211+ const Header = ( { onClose } : { onClose : ( ) => void } ) => {
212+ const classes = useStyles ( { } ) ;
213+
214+ return (
215+ < div className = { classes . header } >
216+ < Typography variant = "body2" fontWeight = "bold" >
217+ Metadata
218+ </ Typography >
219+
220+ < IconButton size = "small" onClick = { onClose } >
221+ < SvgIcClose />
222+ </ IconButton >
223+ </ div >
224+ ) ;
225+ } ;
226+
227+ const Content = ( ) => {
228+ const classes = useStyles ( { } ) ;
229+
230+ return < div className = { classes . content } > </ div > ;
231+ } ;
232+
233+ const TabPanelGeneral = ( {
234+ datasetIri,
235+ dataSource,
236+ } : {
237+ datasetIri : string ;
238+ dataSource : DataSource ;
239+ } ) => {
240+ const classes = useStyles ( { } ) ;
241+
242+ return (
243+ < TabPanel className = { classes . tabPanel } value = "general" >
244+ < DataSetMetadata dataSetIri = { datasetIri } dataSource = { dataSource } />
245+ </ TabPanel >
246+ ) ;
247+ } ;
248+
249+ const TabPanelData = ( {
250+ dimensions,
251+ } : {
252+ dimensions : DimensionMetadataFragment [ ] ;
253+ } ) => {
254+ const classes = useStyles ( { } ) ;
255+
256+ return (
257+ < TabPanel className = { classes . tabPanel } value = "data" >
258+ { dimensions . map ( ( d ) => (
259+ < Box key = { d . iri } >
260+ < Typography variant = "body2" fontWeight = "bold" >
261+ { d . label }
262+ </ Typography >
263+ < Typography variant = "body2" > { d . description } </ Typography >
264+ </ Box >
265+ ) ) }
266+ </ TabPanel >
267+ ) ;
268+ } ;
0 commit comments