Skip to content

Commit f64808c

Browse files
authored
Merge pull request #1780 from kleros/refactor/charts
refactor(web): charts-improvements
2 parents 039d745 + a194f04 commit f64808c

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

web/src/pages/Home/CourtOverview/BarChart.tsx

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import React, { useCallback } from "react";
1+
import React, { useCallback, useMemo } from "react";
22
import styled, { useTheme } from "styled-components";
3+
34
import {
45
Chart as ChartJS,
56
BarElement,
@@ -44,6 +45,16 @@ const BarChart: React.FC<IBarChartProps> = ({ chartData }) => {
4445

4546
const formatPNKValue = useCallback((value: number) => formatter.format(value), []);
4647

48+
const sortedData = useMemo(() => {
49+
const sortedIndices = chartData.data.map((value, index) => ({ value, index })).sort((a, b) => b.value - a.value);
50+
51+
return {
52+
labels: sortedIndices.map((item) => chartData.labels[item.index]),
53+
data: sortedIndices.map((item) => chartData.data[item.index]),
54+
total: chartData.total,
55+
};
56+
}, [chartData]);
57+
4758
const tickSize = 5; // suggested, if that many labels can't fit, chart will use even labels
4859

4960
const options: ChartOptions<"bar"> = {
@@ -95,13 +106,14 @@ const BarChart: React.FC<IBarChartProps> = ({ chartData }) => {
95106
<BarContainer>
96107
<Bar
97108
data={{
98-
labels: chartData.labels,
109+
labels: sortedData.labels,
99110
datasets: [
100111
{
101-
data: chartData.data,
112+
data: sortedData.data,
102113
backgroundColor: theme.secondaryPurple,
103114
hoverBackgroundColor: theme.primaryBlue,
104115
maxBarThickness: 60,
116+
borderRadius: 3,
105117
},
106118
],
107119
}}

web/src/pages/Home/CourtOverview/Chart.tsx

+17-11
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import { responsiveSize } from "styles/responsiveSize";
1212

1313
import { StyledSkeleton } from "components/StyledSkeleton";
1414

15-
import StakedPNKByCourtsChart, { StakedPNKByCourtsChartData } from "./StakedPNKByCourtsChart";
1615
import CasesByCourtsChart, { CasesByCourtsChartData } from "./CasesByCourtsChart";
16+
import StakedPNKByCourtsChart, { StakedPNKByCourtsChartData } from "./StakedPNKByCourtsChart";
1717
import TimeSeriesChart from "./TimeSeriesChart";
1818

1919
const Container = styled.div`
@@ -74,22 +74,28 @@ const Chart: React.FC = () => {
7474

7575
const processedCourtsData = courtsChartData?.reduce(
7676
(accData: CasesByCourtsChartData, current) => {
77-
return {
78-
labels: [...accData.labels, current.name ?? ""],
79-
cases: [...accData.cases, current.numberDisputes],
80-
totalCases: accData.totalCases + parseInt(current.numberDisputes, 10),
81-
};
77+
if (BigInt(current.numberDisputes) > 0) {
78+
return {
79+
labels: [...accData.labels, current.name ?? ""],
80+
cases: [...accData.cases, current.numberDisputes],
81+
totalCases: accData.totalCases + parseInt(current.numberDisputes, 10),
82+
};
83+
}
84+
return accData;
8285
},
8386
{ labels: [], cases: [], totalCases: 0 }
8487
);
8588

8689
const processedStakedPNKData = courtsChartData?.reduce(
8790
(accData: StakedPNKByCourtsChartData, current) => {
88-
return {
89-
labels: [...accData.labels, current.name ?? ""],
90-
stakes: [...accData.stakes, parseFloat(formatUnits(current.stake, 18))],
91-
totalStake: accData.totalStake + parseFloat(formatUnits(current.stake, 18)),
92-
};
91+
if (BigInt(current.stake) > 0) {
92+
return {
93+
labels: [...accData.labels, current.name ?? ""],
94+
stakes: [...accData.stakes, parseFloat(formatUnits(current.stake, 18))],
95+
totalStake: accData.totalStake + parseFloat(formatUnits(current.stake, 18)),
96+
};
97+
}
98+
return accData;
9399
},
94100
{ labels: [], stakes: [], totalStake: 0 }
95101
);

web/src/pages/Home/CourtOverview/TimeSeriesChart.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ const TimeSeriesChart: React.FC<ITimeSeriesChart> = ({ data }) => {
4848
grid: { display: false },
4949
ticks: {
5050
color: theme.secondaryText,
51+
autoSkipPadding: 10,
52+
maxRotation: 0,
5153
},
5254
},
5355
y: {

0 commit comments

Comments
 (0)