@@ -2,7 +2,7 @@ import { Trans } from "@lingui/macro";
22import { Box , Theme , Typography } from "@mui/material" ;
33import { makeStyles } from "@mui/styles" ;
44import * as React from "react" ;
5- import { useEffect , useMemo } from "react" ;
5+ import { useEffect , useMemo , useRef } from "react" ;
66
77import { ChartDataFilters } from "@/charts/shared/chart-data-filters" ;
88import { isUsingImputation } from "@/charts/shared/imputation" ;
@@ -19,6 +19,7 @@ import {
1919import GenericChart from "@/components/common-chart" ;
2020import Flex from "@/components/flex" ;
2121import { HintBlue , HintRed , HintYellow } from "@/components/hint" ;
22+ import { MetadataPanel } from "@/components/metadata-panel" ;
2223import {
2324 ChartConfig ,
2425 ConfiguratorStatePublishing ,
@@ -27,12 +28,16 @@ import {
2728 PublishedConfiguratorStateProvider ,
2829} from "@/configurator" ;
2930import { DataSetTable } from "@/configurator/components/datatable" ;
31+ import { flag } from "@/configurator/components/flag" ;
3032import { parseDate } from "@/configurator/components/ui-helpers" ;
3133import {
3234 DEFAULT_DATA_SOURCE ,
3335 useIsTrustedDataSource ,
3436} from "@/domain/datasource" ;
35- import { useDataCubeMetadataQuery } from "@/graphql/query-hooks" ;
37+ import {
38+ DimensionMetadataFragment ,
39+ useDataCubeMetadataWithComponentValuesQuery ,
40+ } from "@/graphql/query-hooks" ;
3641import { DataCubePublicationStatus } from "@/graphql/resolver-types" ;
3742import { useLocale } from "@/locales/use-locale" ;
3843import useEvent from "@/utils/use-event" ;
@@ -65,6 +70,7 @@ export const ChartPublished = ({
6570
6671const useStyles = makeStyles ( ( theme : Theme ) => ( {
6772 root : {
73+ position : "relative" ,
6874 display : "flex" ,
6975 flexGrow : 1 ,
7076 flexDirection : "column" ,
@@ -91,7 +97,9 @@ export const ChartPublishedInner = ({
9197 const locale = useLocale ( ) ;
9298 const isTrustedDataSource = useIsTrustedDataSource ( dataSource ) ;
9399
94- const [ { data : metaData } ] = useDataCubeMetadataQuery ( {
100+ const rootRef = useRef < HTMLDivElement > ( null ) ;
101+
102+ const [ { data : metaData } ] = useDataCubeMetadataWithComponentValuesQuery ( {
95103 variables : {
96104 iri : dataSet ,
97105 sourceType : dataSource . type ,
@@ -116,8 +124,15 @@ export const ChartPublishedInner = ({
116124 } = useChartTablePreview ( ) ;
117125 const handleToggleTableView = useEvent ( ( ) => setIsTablePreview ( ( c ) => ! c ) ) ;
118126
127+ const allDimensions : DimensionMetadataFragment [ ] = useMemo ( ( ) => {
128+ return [
129+ ...( metaData ?. dataCubeByIri ?. dimensions ?? [ ] ) ,
130+ ...( metaData ?. dataCubeByIri ?. measures ?? [ ] ) ,
131+ ] ;
132+ } , [ metaData ?. dataCubeByIri ?. dimensions , metaData ?. dataCubeByIri ?. measures ] ) ;
133+
119134 return (
120- < Box className = { classes . root } >
135+ < Box className = { classes . root } ref = { rootRef } >
121136 < ChartErrorBoundary resetKeys = { [ chartConfig ] } >
122137 { metaData ?. dataCubeByIri ?. publicationStatus ===
123138 DataCubePublicationStatus . Draft && (
@@ -161,11 +176,21 @@ export const ChartPublishedInner = ({
161176 </ HintBlue >
162177 </ Box >
163178 ) }
164- { meta . title [ locale ] !== "" && (
179+ < Flex sx = { { justifyContent : "space-between" , alignItems : "center" } } >
165180 < Typography component = "div" variant = "h2" mb = { 2 } >
166181 { meta . title [ locale ] }
167182 </ Typography >
168- ) }
183+
184+ { flag ( "metadata" ) && (
185+ < MetadataPanel
186+ datasetIri = { dataSet }
187+ dataSource = { dataSource }
188+ dimensions = { allDimensions }
189+ container = { rootRef . current }
190+ />
191+ ) }
192+ </ Flex >
193+
169194 { meta . description [ locale ] && (
170195 < Typography component = "div" variant = "body1" mb = { 2 } >
171196 { meta . description [ locale ] }
0 commit comments