From 6a0b7d6b7dc926d272d5f582a3956bbb069f86c6 Mon Sep 17 00:00:00 2001 From: Oleh <OlegWock@gmail.com> Date: Sun, 3 Sep 2023 18:28:13 +0200 Subject: [PATCH] Make reports more responsive (#1592) --- packages/desktop-client/src/components/forms.tsx | 1 + .../src/components/reports/CategorySelector.tsx | 1 + .../src/components/reports/CategorySpending.js | 9 ++++++++- .../src/components/reports/NetWorth.js | 8 +++++++- .../reports/graphs/CategorySpendingGraph.tsx | 14 ++++++++++---- .../components/reports/graphs/NetWorthGraph.tsx | 8 ++++++-- upcoming-release-notes/1592.md | 6 ++++++ 7 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 upcoming-release-notes/1592.md diff --git a/packages/desktop-client/src/components/forms.tsx b/packages/desktop-client/src/components/forms.tsx index 15685ad39..a34fdbd59 100644 --- a/packages/desktop-client/src/components/forms.tsx +++ b/packages/desktop-client/src/components/forms.tsx @@ -75,6 +75,7 @@ export const Checkbox = (props: CheckboxProps) => { { position: 'relative', margin: 0, + flexShrink: 0, marginRight: 6, width: 15, height: 15, diff --git a/packages/desktop-client/src/components/reports/CategorySelector.tsx b/packages/desktop-client/src/components/reports/CategorySelector.tsx index 01c5b9db1..9c388348a 100644 --- a/packages/desktop-client/src/components/reports/CategorySelector.tsx +++ b/packages/desktop-client/src/components/reports/CategorySelector.tsx @@ -48,6 +48,7 @@ export default function CategorySelector({ paddingLeft: 0, paddingRight: 10, height: 320, + flexGrow: 1, overflowY: 'scroll', }} > diff --git a/packages/desktop-client/src/components/reports/CategorySpending.js b/packages/desktop-client/src/components/reports/CategorySpending.js index 7b1ce7f29..0a01fa495 100644 --- a/packages/desktop-client/src/components/reports/CategorySpending.js +++ b/packages/desktop-client/src/components/reports/CategorySpending.js @@ -135,7 +135,13 @@ function CategoryAverage() { headerPrefixItems={headerPrefixItems} /> <View - style={{ display: 'flex', flexDirection: 'row', padding: 15, gap: 15 }} + style={{ + display: 'flex', + flexDirection: 'row', + padding: 15, + gap: 15, + flexGrow: 1, + }} > <View style={{ width: 200 }}> <CategorySelector @@ -157,6 +163,7 @@ function CategoryAverage() { }} > <CategorySpendingGraph + style={{ flexGrow: 1 }} start={start} end={end} graphData={perCategorySpending} diff --git a/packages/desktop-client/src/components/reports/NetWorth.js b/packages/desktop-client/src/components/reports/NetWorth.js index 8988cff78..49be07245 100644 --- a/packages/desktop-client/src/components/reports/NetWorth.js +++ b/packages/desktop-client/src/components/reports/NetWorth.js @@ -105,6 +105,7 @@ export default function NetWorth() { padding: 30, paddingTop: 0, overflow: 'auto', + flexGrow: 1, }} > <View @@ -127,7 +128,12 @@ export default function NetWorth() { </PrivacyFilter> </View> - <NetWorthGraph start={start} end={end} graphData={data.graphData} /> + <NetWorthGraph + style={{ flexGrow: 1 }} + start={start} + end={end} + graphData={data.graphData} + /> <View style={{ marginTop: 30 }}> <Paragraph> diff --git a/packages/desktop-client/src/components/reports/graphs/CategorySpendingGraph.tsx b/packages/desktop-client/src/components/reports/graphs/CategorySpendingGraph.tsx index a5dfdb8db..438c2db2a 100644 --- a/packages/desktop-client/src/components/reports/graphs/CategorySpendingGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/CategorySpendingGraph.tsx @@ -1,3 +1,5 @@ +import type { CSSProperties } from 'react'; + import * as d from 'date-fns'; import { VictoryAxis, VictoryBar, VictoryChart, VictoryStack } from 'victory'; @@ -13,8 +15,10 @@ type CategorySpendingGraphProps = { end: string; graphData: CategorySpendingGraphData; compact?: boolean; + style?: CSSProperties; }; function CategorySpendingGraph({ + style, start, end, graphData, @@ -25,17 +29,19 @@ function CategorySpendingGraph({ } return ( - <Container style={compact && { height: 'auto', flex: 1 }}> + <Container style={[style, compact && { height: 'auto', flex: 1 }]}> {(width, height, portalHost) => ( <VictoryChart scale={{ x: 'time', y: 'linear' }} theme={theme} - domainPadding={compact ? { x: 10, y: 5 } : { x: 50, y: 10 }} width={width} height={height} > <Area start={start} end={end} /> - <VictoryStack colorScale="qualitative"> + <VictoryStack + colorScale="qualitative" + domainPadding={{ x: compact ? 5 : 15 }} + > {graphData.categories.map(category => ( <VictoryBar key={category.id} @@ -65,7 +71,7 @@ function CategorySpendingGraph({ dependentAxis crossAxis={false} invertAxis - tickCount={compact ? 2 : undefined} + tickCount={compact ? 2 : height / 70} /> </VictoryChart> )} diff --git a/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx b/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx index 5990ffa84..f19da27d8 100644 --- a/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx +++ b/packages/desktop-client/src/components/reports/graphs/NetWorthGraph.tsx @@ -92,12 +92,16 @@ function NetWorthGraph({ style, graphData, compact }: NetWorthGraphProps) { // eslint-disable-next-line rulesdir/typography tickFormat={x => d.format(x, "MMM ''yy")} tickValues={graphData.data.map(item => item.x)} - tickCount={Math.min(5, graphData.data.length)} + tickCount={Math.min(width / 220, graphData.data.length)} offsetY={50} /> )} {!compact && ( - <VictoryAxis dependentAxis crossAxis={!graphData.hasNegative} /> + <VictoryAxis + dependentAxis + tickCount={Math.round(height / 70)} + crossAxis={!graphData.hasNegative} + /> )} </Chart> ) diff --git a/upcoming-release-notes/1592.md b/upcoming-release-notes/1592.md new file mode 100644 index 000000000..823c5ef17 --- /dev/null +++ b/upcoming-release-notes/1592.md @@ -0,0 +1,6 @@ +--- +category: Enhancements +authors: [OlegWock] +--- + +Make reports more responsive. -- GitLab