From 2c1967d7884e55132bfe0f5bf9b917d86b46df26 Mon Sep 17 00:00:00 2001
From: Matiss Janis Aboltins <matiss@mja.lv>
Date: Tue, 6 Aug 2024 20:31:35 +0100
Subject: [PATCH]  :recycle: (reports) add 'showTooltip' prop to various graphs
 (#3200)

---
 .../src/components/reports/ChooseGraph.tsx    | 15 +++++++++++++-
 .../components/reports/graphs/AreaGraph.tsx   |  6 +++---
 .../components/reports/graphs/BarGraph.tsx    |  4 +++-
 .../reports/graphs/BarLineGraph.tsx           | 20 +++++++++++++------
 .../components/reports/graphs/LineGraph.tsx   |  4 +++-
 .../reports/graphs/StackedBarGraph.tsx        |  4 +++-
 .../reports/reports/GetCardData.tsx           |  6 ++++++
 upcoming-release-notes/3200.md                |  6 ++++++
 8 files changed, 52 insertions(+), 13 deletions(-)
 create mode 100644 upcoming-release-notes/3200.md

diff --git a/packages/desktop-client/src/components/reports/ChooseGraph.tsx b/packages/desktop-client/src/components/reports/ChooseGraph.tsx
index bf5dec7b0..c74da4659 100644
--- a/packages/desktop-client/src/components/reports/ChooseGraph.tsx
+++ b/packages/desktop-client/src/components/reports/ChooseGraph.tsx
@@ -29,6 +29,7 @@ type ChooseGraphProps = {
   style?: CSSProperties;
   showHiddenCategories?: boolean;
   showOffBudget?: boolean;
+  showTooltip?: boolean;
   intervalsCount: number;
 };
 
@@ -46,6 +47,7 @@ export function ChooseGraph({
   style,
   showHiddenCategories = false,
   showOffBudget = false,
+  showTooltip = true,
   intervalsCount,
 }: ChooseGraphProps) {
   const graphStyle = compact
@@ -102,6 +104,7 @@ export function ChooseGraph({
         data={data}
         balanceTypeOp={balanceTypeOp}
         viewLabels={viewLabels}
+        showTooltip={showTooltip}
       />
     );
   }
@@ -117,11 +120,19 @@ export function ChooseGraph({
         viewLabels={viewLabels}
         showHiddenCategories={showHiddenCategories}
         showOffBudget={showOffBudget}
+        showTooltip={showTooltip}
       />
     );
   }
   if (graphType === 'BarLineGraph') {
-    return <BarLineGraph style={graphStyle} compact={compact} data={data} />;
+    return (
+      <BarLineGraph
+        style={graphStyle}
+        compact={compact}
+        data={data}
+        showTooltip={showTooltip}
+      />
+    );
   }
   if (graphType === 'DonutGraph') {
     return (
@@ -149,6 +160,7 @@ export function ChooseGraph({
         balanceTypeOp={balanceTypeOp}
         showHiddenCategories={showHiddenCategories}
         showOffBudget={showOffBudget}
+        showTooltip={showTooltip}
         interval={interval}
       />
     );
@@ -165,6 +177,7 @@ export function ChooseGraph({
         groupBy={groupBy}
         showHiddenCategories={showHiddenCategories}
         showOffBudget={showOffBudget}
+        showTooltip={showTooltip}
         interval={interval}
       />
     );
diff --git a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx
index 60c315d2a..d450f5261 100644
--- a/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/AreaGraph.tsx
@@ -22,7 +22,6 @@ import {
 } from 'loot-core/src/types/models/reports';
 
 import { usePrivacyMode } from '../../../hooks/usePrivacyMode';
-import { useResponsive } from '../../../ResponsiveProvider';
 import { theme } from '../../../style';
 import { type CSSProperties } from '../../../style';
 import { AlignedText } from '../../common/AlignedText';
@@ -152,6 +151,7 @@ type AreaGraphProps = {
   balanceTypeOp: balanceTypeOpType;
   compact?: boolean;
   viewLabels: boolean;
+  showTooltip?: boolean;
 };
 
 export function AreaGraph({
@@ -160,9 +160,9 @@ export function AreaGraph({
   balanceTypeOp,
   compact,
   viewLabels,
+  showTooltip = true,
 }: AreaGraphProps) {
   const privacyMode = usePrivacyMode();
-  const { isNarrowWidth } = useResponsive();
   const dataMax = Math.max(...data.intervalData.map(i => i[balanceTypeOp]));
   const dataMin = Math.min(...data.intervalData.map(i => i[balanceTypeOp]));
 
@@ -249,7 +249,7 @@ export function AreaGraph({
                     tickSize={0}
                   />
                 )}
-                {(!isNarrowWidth || !compact) && (
+                {showTooltip && (
                   <Tooltip
                     content={<CustomTooltip balanceTypeOp={balanceTypeOp} />}
                     isAnimationActive={false}
diff --git a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
index 37ca3cef8..ef9545ded 100644
--- a/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/BarGraph.tsx
@@ -159,6 +159,7 @@ type BarGraphProps = {
   viewLabels: boolean;
   showHiddenCategories?: boolean;
   showOffBudget?: boolean;
+  showTooltip?: boolean;
 };
 
 export function BarGraph({
@@ -171,6 +172,7 @@ export function BarGraph({
   viewLabels,
   showHiddenCategories,
   showOffBudget,
+  showTooltip = true,
 }: BarGraphProps) {
   const navigate = useNavigate();
   const categories = useCategories();
@@ -230,7 +232,7 @@ export function BarGraph({
                   bottom: 0,
                 }}
               >
-                {(!isNarrowWidth || !compact) && (
+                {showTooltip && (
                   <Tooltip
                     cursor={{ fill: 'transparent' }}
                     content={
diff --git a/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx b/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx
index c7e5ec785..0aeb4d85a 100644
--- a/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/BarLineGraph.tsx
@@ -75,9 +75,15 @@ type BarLineGraphProps = {
   style?: CSSProperties;
   data;
   compact?: boolean;
+  showTooltip?: boolean;
 };
 
-export function BarLineGraph({ style, data, compact }: BarLineGraphProps) {
+export function BarLineGraph({
+  style,
+  data,
+  compact,
+  showTooltip = true,
+}: BarLineGraphProps) {
   const tickFormatter = tick => {
     return `${amountToCurrencyNoDecimal(Math.round(tick))}`; // Formats the tick values as strings with commas
   };
@@ -100,11 +106,13 @@ export function BarLineGraph({ style, data, compact }: BarLineGraphProps) {
                 data={data.data}
                 margin={{ top: 0, right: 0, left: 0, bottom: 0 }}
               >
-                <Tooltip
-                  content={<CustomTooltip />}
-                  formatter={numberFormatterTooltip}
-                  isAnimationActive={false}
-                />
+                {showTooltip && (
+                  <Tooltip
+                    content={<CustomTooltip />}
+                    formatter={numberFormatterTooltip}
+                    isAnimationActive={false}
+                  />
+                )}
                 {!compact && (
                   <>
                     <CartesianGrid strokeDasharray="3 3" />
diff --git a/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx b/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx
index 14c53ad28..162290a3e 100644
--- a/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/LineGraph.tsx
@@ -121,6 +121,7 @@ type LineGraphProps = {
   balanceTypeOp: balanceTypeOpType;
   showHiddenCategories?: boolean;
   showOffBudget?: boolean;
+  showTooltip?: boolean;
   interval?: string;
 };
 
@@ -133,6 +134,7 @@ export function LineGraph({
   balanceTypeOp,
   showHiddenCategories,
   showOffBudget,
+  showTooltip = true,
   interval,
 }: LineGraphProps) {
   const navigate = useNavigate();
@@ -186,7 +188,7 @@ export function LineGraph({
                 margin={{ top: 10, right: 10, left: leftMargin, bottom: 10 }}
                 style={{ cursor: pointer }}
               >
-                {(!isNarrowWidth || !compact) && (
+                {showTooltip && (
                   <Tooltip
                     content={
                       <CustomTooltip compact={compact} tooltip={tooltip} />
diff --git a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx
index 309fa8618..3b9bae5bf 100644
--- a/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx
+++ b/packages/desktop-client/src/components/reports/graphs/StackedBarGraph.tsx
@@ -150,6 +150,7 @@ type StackedBarGraphProps = {
   balanceTypeOp: balanceTypeOpType;
   showHiddenCategories?: boolean;
   showOffBudget?: boolean;
+  showTooltip?: boolean;
   interval?: string;
 };
 
@@ -163,6 +164,7 @@ export function StackedBarGraph({
   balanceTypeOp,
   showHiddenCategories,
   showOffBudget,
+  showTooltip = true,
   interval,
 }: StackedBarGraphProps) {
   const navigate = useNavigate();
@@ -199,7 +201,7 @@ export function StackedBarGraph({
                 style={{ cursor: pointer }}
                 stackOffset="sign" //stacked by sign
               >
-                {(!isNarrowWidth || !compact) && (
+                {showTooltip && (
                   <Tooltip
                     content={
                       <CustomTooltip compact={compact} tooltip={tooltip} />
diff --git a/packages/desktop-client/src/components/reports/reports/GetCardData.tsx b/packages/desktop-client/src/components/reports/reports/GetCardData.tsx
index 56331559a..a18cb5a5b 100644
--- a/packages/desktop-client/src/components/reports/reports/GetCardData.tsx
+++ b/packages/desktop-client/src/components/reports/reports/GetCardData.tsx
@@ -9,6 +9,7 @@ import { type PayeeEntity } from 'loot-core/types/models/payee';
 import { type CustomReportEntity } from 'loot-core/types/models/reports';
 import { type LocalPrefs } from 'loot-core/types/prefs';
 
+import { useResponsive } from '../../../ResponsiveProvider';
 import { styles } from '../../../style/styles';
 import { theme } from '../../../style/theme';
 import { Text } from '../../common/Text';
@@ -66,6 +67,7 @@ export function GetCardData({
   categories,
   earliestTransaction,
   firstDayOfWeekIdx,
+  showTooltip,
 }: {
   report: CustomReportEntity;
   payees: PayeeEntity[];
@@ -73,7 +75,10 @@ export function GetCardData({
   categories: { list: CategoryEntity[]; grouped: CategoryGroupEntity[] };
   earliestTransaction: string;
   firstDayOfWeekIdx?: LocalPrefs['firstDayOfWeekIdx'];
+  showTooltip?: boolean;
 }) {
+  const { isNarrowWidth } = useResponsive();
+
   let startDate = report.startDate;
   let endDate = report.endDate;
 
@@ -170,6 +175,7 @@ export function GetCardData({
         compact={true}
         style={{ height: 'auto', flex: 1 }}
         intervalsCount={intervals.length}
+        showTooltip={!isNarrowWidth && showTooltip}
       />
     </ErrorBoundary>
   ) : (
diff --git a/upcoming-release-notes/3200.md b/upcoming-release-notes/3200.md
new file mode 100644
index 000000000..ea72dae5c
--- /dev/null
+++ b/upcoming-release-notes/3200.md
@@ -0,0 +1,6 @@
+---
+category: Maintenance
+authors: [MatissJanis]
+---
+
+Reports: add `showTooltip` prop for controlling tooltip visibility.
-- 
GitLab