Skip to content

Commit f29b400

Browse files
committed
Merge branch 'main' into develop
2 parents b7b1d1f + 1e13388 commit f29b400

6 files changed

Lines changed: 39 additions & 27 deletions

File tree

packages/components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "graph-italia-components",
33
"description": "A simple React component library.",
4-
"version": "0.3.27",
4+
"version": "0.3.28",
55
"keywords": [
66
"react",
77
"typescript",

packages/components/src/components/RenderGridDashboard.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,6 @@ export function RenderGridDashboard({
159159
const colSpan = toColSpan(settings.w, bp);
160160
const slotHeight =
161161
rowHeight * settings.h + margin * (settings.h - 1);
162-
163162
return (
164163
<div
165164
key={settings.i}

packages/components/src/components/chartwrapper/ChartWrapper.tsx

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
formatUpdatedAt,
1616
observeElementHeight,
1717
} from "./utils";
18+
import { isArray } from "echarts/types/src/export/api/util.js";
1819

1920
export type ChartWrapperProps = {
2021
id?: string;
@@ -84,7 +85,7 @@ export default function ChartWrapper(props: ChartWrapperProps) {
8485
const [activeTab, setActiveTab] = useState<number>(0);
8586

8687
const tableData = showDataTransposed && data.data ? transposeData(data.data) : data.data;
87-
const csvData = dataToCSV(tableData);
88+
const csvData = tableData && Array.isArray(tableData) && dataToCSV(tableData);
8889

8990
const formattedUpdatedAt = formatUpdatedAt(data.updatedAt);
9091
const infoClean = cleanupInfoText(text);
@@ -99,6 +100,10 @@ export default function ChartWrapper(props: ChartWrapperProps) {
99100
const [chartAreaRowHeight, setChartAreaRowHeight] = useState<number>(400);
100101
const wrapRef = useRef(null);
101102

103+
const chartType = data.chart || "bar";
104+
const hasData = !(chartType == "cmap" || chartType == "kpi" || chartType == "kpiGroup") && Array.isArray(data.data) && data.data.length > 0;
105+
const hasPic = !(chartType == "cmap" || chartType == "kpi" || chartType == "kpiGroup");
106+
102107
useEffect(() => {
103108
return observeElementHeight(
104109
() => wrapRef.current as unknown as HTMLElement | null,
@@ -176,7 +181,8 @@ export default function ChartWrapper(props: ChartWrapperProps) {
176181
)}
177182
</div>
178183

179-
<div
184+
185+
{hasData && <div
180186
id={`tab2-${id}-content`}
181187
role="tabpanel"
182188
aria-labelledby={`tab2-${id}`}
@@ -185,6 +191,7 @@ export default function ChartWrapper(props: ChartWrapperProps) {
185191
>
186192
<DataTable id={id} data={tableData as any[]} poweredByLabel="" />
187193
</div>
194+
}
188195

189196
<div
190197
id={`tab3-${id}-content`}
@@ -219,7 +226,7 @@ export default function ChartWrapper(props: ChartWrapperProps) {
219226
)}
220227

221228
<div className="cw-actions">
222-
{enableDownloadData && (
229+
{enableDownloadData && hasData && (
223230
<button
224231
type="button"
225232
className="cw-btn cw-btn--primary"
@@ -239,7 +246,7 @@ export default function ChartWrapper(props: ChartWrapperProps) {
239246
</button>
240247
)}
241248

242-
{enableDownloadImage && (
249+
{enableDownloadImage && hasPic && (
243250
<button
244251
type="button"
245252
className="cw-btn cw-btn--primary"

packages/components/src/components/kpi/KpiGroup.tsx

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default function KpiGroup({
1313
hFactor: number;
1414
rowHeight?: number;
1515
}) {
16-
const { id, config } = data;
16+
const { id, config, name, description } = data;
1717
const dataSource: KpiItemType[] = data.dataSource as KpiItemType[] || data.data as any[] || [];
1818
const { direction, background } = config;
1919
const isVertical = direction === "vertical";
@@ -33,30 +33,33 @@ export default function KpiGroup({
3333
// When accent background is set at group level, propagate to items
3434
const items: KpiItemType[] = background === "accent"
3535
? dataSource.map((item) => ({
36-
...item,
37-
background_color: item.background_color || "accent",
38-
}))
36+
...item,
37+
background_color: item.background_color || "accent",
38+
}))
3939
: dataSource;
4040

4141
const resolvedTheme = useResolvedTheme();
4242

4343
return (
44-
<div
45-
id={id}
46-
className={`${resolvedTheme} dv-kpi-group ${kpiGroupClass}`}
47-
style={baseStyle}
48-
role="list"
49-
aria-label="Gruppo di KPI"
50-
>
51-
{items.map((item: KpiItemType, index: number) => (
52-
<div
53-
className={`${resolvedTheme} dv-kpi-group-item`}
54-
key={`${index}-${item.title}`}
55-
role="listitem"
56-
>
57-
<Kpi data={item} poweredByLabel="" />
58-
</div>
59-
))}
44+
<div>
45+
{name && <h3 className="title">{name}</h3>}
46+
<div
47+
id={id}
48+
className={`${resolvedTheme} dv-kpi-group ${kpiGroupClass}`}
49+
style={baseStyle}
50+
role="list"
51+
aria-label="Gruppo di KPI"
52+
>
53+
{items.map((item: KpiItemType, index: number) => (
54+
<div
55+
className={`${resolvedTheme} dv-kpi-group-item`}
56+
key={`${index}-${item.title}`}
57+
role="listitem"
58+
>
59+
<Kpi data={item} poweredByLabel="" />
60+
</div>
61+
))}
62+
</div>
6063
</div>
6164
);
6265
}

packages/components/src/lib/downloadUtils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export function generateCSV(dataSource: any) {
4343
}
4444

4545
export function dataToCSV(data: any) {
46+
if (!data || !Array.isArray(data) || data.length === 0) {
47+
return "";
48+
}
4649
const rows = data.map((r: any) => {
4750
return r.join(",");
4851
});

packages/ui-example-app/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import SampleWrapperBar from "./SampleWrapperBar";
1414
import SampleWrapperGeomap from "./SampleWrapperGeomap";
1515
import SampleWrapperLine from "./SampleWrapperLine";
1616
import SampleWrapperPie from "./SampleWrapperPie";
17-
import SampleChartProvider from "./SampleChartProvider";
17+
// import SampleChartProvider from "./SampleChartProvider";
1818
// import SampleDashboardProvider from "./SampleDashboardProvider";
1919
import SampleDashboardGridProvider from "./SampleDashboardGridProvider";
2020

0 commit comments

Comments
 (0)