From 67887ef2fba467e122ecaa28473dbcd3d1bab9a8 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Thu, 4 Sep 2025 23:56:35 +0530 Subject: [PATCH 01/10] =?UTF-8?q?=F0=9F=9A=A7=20WIP:=20Introduced=20custom?= =?UTF-8?q?Ticks=20prop=20in=20BarChart=20for=20flexible=20tick=20renderin?= =?UTF-8?q?g.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/propel/src/charts/bar-chart/root.tsx | 12 ++++++++++-- packages/types/src/charts/index.ts | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/propel/src/charts/bar-chart/root.tsx b/packages/propel/src/charts/bar-chart/root.tsx index 96efff32c78..cc39a5e69ad 100644 --- a/packages/propel/src/charts/bar-chart/root.tsx +++ b/packages/propel/src/charts/bar-chart/root.tsx @@ -35,6 +35,7 @@ export const BarChart = React.memo((props: T x: undefined, y: 10, }, + customTicks, showTooltip = true, customTooltipContent, } = props; @@ -65,6 +66,7 @@ export const BarChart = React.memo((props: T key={bar.key} dataKey={bar.key} stackId={bar.stackId} + fill={typeof bar.fill === "function" ? "#000000" : bar.fill} opacity={!!activeLegend && activeLegend !== bar.key ? 0.1 : 1} shape={(shapeProps: any) => { const shapeVariant = barShapeVariants[bar.shapeVariant ?? "bar"]; @@ -96,7 +98,10 @@ export const BarChart = React.memo((props: T } + tick={(props) => { + const TickComponent = customTicks?.x || CustomXAxisTick; + return ; + }} tickLine={false} axisLine={false} label={{ @@ -118,7 +123,10 @@ export const BarChart = React.memo((props: T dx: yAxis.dx ?? -16, className: AXIS_LABEL_CLASSNAME, }} - tick={(props) => } + tick={(props) => { + const TickComponent = customTicks?.y || CustomYAxisTick; + return ; + }} tickCount={tickCount.y} allowDecimals={!!yAxis.allowDecimals} /> diff --git a/packages/types/src/charts/index.ts b/packages/types/src/charts/index.ts index fb49c717291..2e1596b4b1d 100644 --- a/packages/types/src/charts/index.ts +++ b/packages/types/src/charts/index.ts @@ -70,6 +70,10 @@ export type TBarItem = { export type TBarChartProps = TChartProps & { bars: TBarItem[]; barSize?: number; + customTicks?: { + x?: React.ComponentType; + y?: React.ComponentType; + }; }; // ============================================================ From d0635733a6a30d48b666dd65787f0ba70300f0b6 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Sun, 7 Sep 2025 08:13:46 +0530 Subject: [PATCH 02/10] =?UTF-8?q?=E2=9C=A8=20feat:=20added=20customTicks?= =?UTF-8?q?=20to=20axis=20charts=20for=20flexible=20tick=20rendering?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../propel/src/charts/area-chart/root.tsx | 11 ++++-- packages/propel/src/charts/bar-chart/bar.tsx | 7 ++-- packages/propel/src/charts/bar-chart/root.tsx | 4 +-- .../propel/src/charts/line-chart/root.tsx | 11 ++++-- .../propel/src/charts/scatter-chart/root.tsx | 11 ++++-- packages/types/src/charts/index.ts | 36 ++++++++++--------- 6 files changed, 54 insertions(+), 26 deletions(-) diff --git a/packages/propel/src/charts/area-chart/root.tsx b/packages/propel/src/charts/area-chart/root.tsx index 11a1db2efa4..db602fedb12 100644 --- a/packages/propel/src/charts/area-chart/root.tsx +++ b/packages/propel/src/charts/area-chart/root.tsx @@ -23,6 +23,7 @@ export const AreaChart = React.memo((props: x: undefined, y: 10, }, + customTicks, showTooltip = true, comparisonLine, } = props; @@ -114,7 +115,10 @@ export const AreaChart = React.memo((props: } + tick={(props) => { + const TickComponent = customTicks?.x || CustomXAxisTick; + return ; + }} tickLine={false} axisLine={false} label={ @@ -140,7 +144,10 @@ export const AreaChart = React.memo((props: className: AXIS_LABEL_CLASSNAME, } } - tick={(props) => } + tick={(props) => { + const TickComponent = customTicks?.y || CustomYAxisTick; + return ; + }} tickCount={tickCount.y} allowDecimals={!!yAxis.allowDecimals} /> diff --git a/packages/propel/src/charts/bar-chart/bar.tsx b/packages/propel/src/charts/bar-chart/bar.tsx index 558e73ad603..e586ff2458e 100644 --- a/packages/propel/src/charts/bar-chart/bar.tsx +++ b/packages/propel/src/charts/bar-chart/bar.tsx @@ -10,6 +10,7 @@ const BAR_TOP_BORDER_RADIUS = 4; // Border radius for the top of bars const BAR_BOTTOM_BORDER_RADIUS = 4; // Border radius for the bottom of bars const DEFAULT_LOLLIPOP_LINE_WIDTH = 2; // Width of lollipop stick const DEFAULT_LOLLIPOP_CIRCLE_RADIUS = 8; // Radius of lollipop circle +const DEFAULT_BAR_FILL_COLOR = "#6B7280"; // Default color when fill is a function - using a neutral gray from design system // Types interface TShapeProps { @@ -108,7 +109,7 @@ const CustomBar = React.memo((props: TBarProps) => { {showText && ( @@ -139,7 +140,7 @@ const CustomBarLollipop = React.memo((props: TBarProps) => { cx={x + width / 2} cy={y} r={DEFAULT_LOLLIPOP_CIRCLE_RADIUS} - fill={typeof fill === "function" ? fill(payload) : fill} + fill={typeof fill === "function" ? DEFAULT_BAR_FILL_COLOR : fill} stroke="none" /> {showPercentage && ( @@ -176,6 +177,8 @@ const createShapeVariant = ); }; +export { DEFAULT_BAR_FILL_COLOR }; + export const barShapeVariants: Record< TBarChartShapeVariant, (props: TShapeProps, bar: TBarItem, stackKeys: string[]) => React.ReactNode diff --git a/packages/propel/src/charts/bar-chart/root.tsx b/packages/propel/src/charts/bar-chart/root.tsx index cc39a5e69ad..8d78ae5fd3e 100644 --- a/packages/propel/src/charts/bar-chart/root.tsx +++ b/packages/propel/src/charts/bar-chart/root.tsx @@ -19,7 +19,7 @@ import { TBarChartProps } from "@plane/types"; import { getLegendProps } from "../components/legend"; import { CustomXAxisTick, CustomYAxisTick } from "../components/tick"; import { CustomTooltip } from "../components/tooltip"; -import { barShapeVariants } from "./bar"; +import { barShapeVariants, DEFAULT_BAR_FILL_COLOR } from "./bar"; export const BarChart = React.memo((props: TBarChartProps) => { const { @@ -66,7 +66,7 @@ export const BarChart = React.memo((props: T key={bar.key} dataKey={bar.key} stackId={bar.stackId} - fill={typeof bar.fill === "function" ? "#000000" : bar.fill} + fill={typeof bar.fill === "function" ? DEFAULT_BAR_FILL_COLOR : bar.fill} opacity={!!activeLegend && activeLegend !== bar.key ? 0.1 : 1} shape={(shapeProps: any) => { const shapeVariant = barShapeVariants[bar.shapeVariant ?? "bar"]; diff --git a/packages/propel/src/charts/line-chart/root.tsx b/packages/propel/src/charts/line-chart/root.tsx index 28a02fc30ef..a79cb4fbe7f 100644 --- a/packages/propel/src/charts/line-chart/root.tsx +++ b/packages/propel/src/charts/line-chart/root.tsx @@ -32,6 +32,7 @@ export const LineChart = React.memo((props: x: undefined, y: 10, }, + customTicks, legend, showTooltip = true, } = props; @@ -100,7 +101,10 @@ export const LineChart = React.memo((props: } + tick={(props) => { + const TickComponent = customTicks?.x || CustomXAxisTick; + return ; + }} tickLine={false} axisLine={false} label={ @@ -126,7 +130,10 @@ export const LineChart = React.memo((props: className: AXIS_LABEL_CLASSNAME, } } - tick={(props) => } + tick={(props) => { + const TickComponent = customTicks?.y || CustomYAxisTick; + return ; + }} tickCount={tickCount.y} allowDecimals={!!yAxis.allowDecimals} /> diff --git a/packages/propel/src/charts/scatter-chart/root.tsx b/packages/propel/src/charts/scatter-chart/root.tsx index 25d7b84b476..4ed4eecc11c 100644 --- a/packages/propel/src/charts/scatter-chart/root.tsx +++ b/packages/propel/src/charts/scatter-chart/root.tsx @@ -28,6 +28,7 @@ export const ScatterChart = React.memo((prop xAxis, yAxis, className, + customTicks, tickCount = { x: undefined, y: 10, @@ -85,7 +86,10 @@ export const ScatterChart = React.memo((prop } + tick={(props) => { + const TickComponent = customTicks?.x || CustomXAxisTick; + return ; + }} tickLine={false} axisLine={false} label={ @@ -111,7 +115,10 @@ export const ScatterChart = React.memo((prop className: AXIS_LABEL_CLASSNAME, } } - tick={(props) => } + tick={(props) => { + const TickComponent = customTicks?.y || CustomYAxisTick; + return ; + }} tickCount={tickCount.y} allowDecimals={!!yAxis.allowDecimals} /> diff --git a/packages/types/src/charts/index.ts b/packages/types/src/charts/index.ts index 2e1596b4b1d..df92ae6c9b2 100644 --- a/packages/types/src/charts/index.ts +++ b/packages/types/src/charts/index.ts @@ -21,8 +21,17 @@ export type TChartData = { [key in K]: string | number; } & Record; -export type TChartProps = { +export type TBaseChartProps = { data: TChartData[]; + className?: string; + legend?: TChartLegend; + margin?: TChartMargin; + showTooltip?: boolean; + customTooltipContent?: (props: { active?: boolean; label: string; payload: any }) => React.ReactNode; +}; + +// Props specific to charts with X and Y axes +export type TAxisChartProps = TBaseChartProps & { xAxis: { key: keyof TChartData; label?: string; @@ -38,15 +47,14 @@ export type TChartProps = { offset?: number; dx?: number; }; - className?: string; - legend?: TChartLegend; - margin?: TChartMargin; tickCount?: { x?: number; y?: number; }; - showTooltip?: boolean; - customTooltipContent?: (props: { active?: boolean; label: string; payload: any }) => React.ReactNode; + customTicks?: { + x?: React.ComponentType; + y?: React.ComponentType; + }; }; // ============================================================ @@ -67,13 +75,9 @@ export type TBarItem = { shapeVariant?: TBarChartShapeVariant; }; -export type TBarChartProps = TChartProps & { +export type TBarChartProps = TAxisChartProps & { bars: TBarItem[]; barSize?: number; - customTicks?: { - x?: React.ComponentType; - y?: React.ComponentType; - }; }; // ============================================================ @@ -91,7 +95,7 @@ export type TLineItem = { style?: Record; }; -export type TLineChartProps = TChartProps & { +export type TLineChartProps = TAxisChartProps & { lines: TLineItem[]; }; @@ -106,7 +110,7 @@ export type TScatterPointItem = { stroke: string; }; -export type TScatterChartProps = TChartProps & { +export type TScatterChartProps = TAxisChartProps & { scatterPoints: TScatterPointItem[]; }; @@ -127,7 +131,7 @@ export type TAreaItem = { style?: Record; }; -export type TAreaChartProps = TChartProps & { +export type TAreaChartProps = TAxisChartProps & { areas: TAreaItem[]; comparisonLine?: { dashedLine: boolean; @@ -145,7 +149,7 @@ export type TCellItem = { }; export type TPieChartProps = Pick< - TChartProps, + TBaseChartProps, "className" | "data" | "showTooltip" | "legend" | "margin" > & { dataKey: T; @@ -227,7 +231,7 @@ export type TRadarItem = { }; export type TRadarChartProps = Pick< - TChartProps, + TBaseChartProps, "className" | "showTooltip" | "margin" | "data" | "legend" > & { dataKey: T; From df339c1979b88a2c1dbea66fee5250ab89187245 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Sun, 7 Sep 2025 08:43:54 +0530 Subject: [PATCH 03/10] =?UTF-8?q?=F0=9F=94=A7=20fix:=20update=20default=20?= =?UTF-8?q?bar=20fill=20color=20to=20black=20and=20ensure=20consistent=20c?= =?UTF-8?q?olor=20usage=20in=20BarChart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/propel/src/charts/bar-chart/bar.tsx | 2 +- packages/propel/src/charts/bar-chart/root.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/propel/src/charts/bar-chart/bar.tsx b/packages/propel/src/charts/bar-chart/bar.tsx index e586ff2458e..fc4977317f4 100644 --- a/packages/propel/src/charts/bar-chart/bar.tsx +++ b/packages/propel/src/charts/bar-chart/bar.tsx @@ -10,7 +10,7 @@ const BAR_TOP_BORDER_RADIUS = 4; // Border radius for the top of bars const BAR_BOTTOM_BORDER_RADIUS = 4; // Border radius for the bottom of bars const DEFAULT_LOLLIPOP_LINE_WIDTH = 2; // Width of lollipop stick const DEFAULT_LOLLIPOP_CIRCLE_RADIUS = 8; // Radius of lollipop circle -const DEFAULT_BAR_FILL_COLOR = "#6B7280"; // Default color when fill is a function - using a neutral gray from design system +const DEFAULT_BAR_FILL_COLOR = "#000000"; // Default color when fill is a function - black // Types interface TShapeProps { diff --git a/packages/propel/src/charts/bar-chart/root.tsx b/packages/propel/src/charts/bar-chart/root.tsx index 8d78ae5fd3e..edb1bcb5515 100644 --- a/packages/propel/src/charts/bar-chart/root.tsx +++ b/packages/propel/src/charts/bar-chart/root.tsx @@ -53,7 +53,7 @@ export const BarChart = React.memo((props: T keys.push(bar.key); labels[bar.key] = bar.label; // For tooltip, we need a string color. If fill is a function, use a default color - colors[bar.key] = typeof bar.fill === "function" ? "#000000" : bar.fill; + colors[bar.key] = typeof bar.fill === "function" ? DEFAULT_BAR_FILL_COLOR : bar.fill; } return { stackKeys: keys, stackLabels: labels, stackDotColors: colors }; From ab52003e2456c00b87af3a426dfd5361b2a357f1 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Sun, 7 Sep 2025 08:46:59 +0530 Subject: [PATCH 04/10] =?UTF-8?q?=E2=9C=A8=20feat:=20add=20customTooltipCo?= =?UTF-8?q?ntent=20prop=20to=20LineChart=20for=20enhanced=20tooltip=20flex?= =?UTF-8?q?ibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../propel/src/charts/line-chart/root.tsx | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/packages/propel/src/charts/line-chart/root.tsx b/packages/propel/src/charts/line-chart/root.tsx index a79cb4fbe7f..e5997869214 100644 --- a/packages/propel/src/charts/line-chart/root.tsx +++ b/packages/propel/src/charts/line-chart/root.tsx @@ -35,6 +35,7 @@ export const LineChart = React.memo((props: customTicks, legend, showTooltip = true, + customTooltipContent, } = props; // states const [activeLine, setActiveLine] = useState(null); @@ -155,17 +156,20 @@ export const LineChart = React.memo((props: wrapperStyle={{ pointerEvents: "auto", }} - content={({ active, label, payload }) => ( - - )} + content={({ active, label, payload }) => { + if (customTooltipContent) return customTooltipContent({ active, label, payload }); + return ( + + ); + }} /> )} {renderLines} From 4b409294ab29cf27eec2b16af25632262bda8f5d Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Mon, 8 Sep 2025 23:13:46 +0530 Subject: [PATCH 05/10] =?UTF-8?q?=F0=9F=94=A7=20fix:=20update=20bar=20fill?= =?UTF-8?q?=20color=20handling=20to=20support=20dynamic=20colors=20based?= =?UTF-8?q?=20on=20data=20and=20removed=20DEFAULT=5FBAR=5FFILL=5FCOLOR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/propel/src/charts/bar-chart/bar.tsx | 7 ++----- packages/propel/src/charts/bar-chart/root.tsx | 6 +++--- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/propel/src/charts/bar-chart/bar.tsx b/packages/propel/src/charts/bar-chart/bar.tsx index fc4977317f4..558e73ad603 100644 --- a/packages/propel/src/charts/bar-chart/bar.tsx +++ b/packages/propel/src/charts/bar-chart/bar.tsx @@ -10,7 +10,6 @@ const BAR_TOP_BORDER_RADIUS = 4; // Border radius for the top of bars const BAR_BOTTOM_BORDER_RADIUS = 4; // Border radius for the bottom of bars const DEFAULT_LOLLIPOP_LINE_WIDTH = 2; // Width of lollipop stick const DEFAULT_LOLLIPOP_CIRCLE_RADIUS = 8; // Radius of lollipop circle -const DEFAULT_BAR_FILL_COLOR = "#000000"; // Default color when fill is a function - black // Types interface TShapeProps { @@ -109,7 +108,7 @@ const CustomBar = React.memo((props: TBarProps) => { {showText && ( @@ -140,7 +139,7 @@ const CustomBarLollipop = React.memo((props: TBarProps) => { cx={x + width / 2} cy={y} r={DEFAULT_LOLLIPOP_CIRCLE_RADIUS} - fill={typeof fill === "function" ? DEFAULT_BAR_FILL_COLOR : fill} + fill={typeof fill === "function" ? fill(payload) : fill} stroke="none" /> {showPercentage && ( @@ -177,8 +176,6 @@ const createShapeVariant = ); }; -export { DEFAULT_BAR_FILL_COLOR }; - export const barShapeVariants: Record< TBarChartShapeVariant, (props: TShapeProps, bar: TBarItem, stackKeys: string[]) => React.ReactNode diff --git a/packages/propel/src/charts/bar-chart/root.tsx b/packages/propel/src/charts/bar-chart/root.tsx index edb1bcb5515..c1703c34bc9 100644 --- a/packages/propel/src/charts/bar-chart/root.tsx +++ b/packages/propel/src/charts/bar-chart/root.tsx @@ -19,7 +19,7 @@ import { TBarChartProps } from "@plane/types"; import { getLegendProps } from "../components/legend"; import { CustomXAxisTick, CustomYAxisTick } from "../components/tick"; import { CustomTooltip } from "../components/tooltip"; -import { barShapeVariants, DEFAULT_BAR_FILL_COLOR } from "./bar"; +import { barShapeVariants } from "./bar"; export const BarChart = React.memo((props: TBarChartProps) => { const { @@ -53,7 +53,7 @@ export const BarChart = React.memo((props: T keys.push(bar.key); labels[bar.key] = bar.label; // For tooltip, we need a string color. If fill is a function, use a default color - colors[bar.key] = typeof bar.fill === "function" ? DEFAULT_BAR_FILL_COLOR : bar.fill; + colors[bar.key] = typeof bar.fill === "function" ? bar.fill(bar) : bar.fill; } return { stackKeys: keys, stackLabels: labels, stackDotColors: colors }; @@ -66,7 +66,7 @@ export const BarChart = React.memo((props: T key={bar.key} dataKey={bar.key} stackId={bar.stackId} - fill={typeof bar.fill === "function" ? DEFAULT_BAR_FILL_COLOR : bar.fill} + fill={typeof bar.fill === "function" ? bar.fill(bar) : bar.fill} opacity={!!activeLegend && activeLegend !== bar.key ? 0.1 : 1} shape={(shapeProps: any) => { const shapeVariant = barShapeVariants[bar.shapeVariant ?? "bar"]; From 753daa622d1cc29e0d61475d40c9afedaf5bcbac Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Mon, 8 Sep 2025 23:35:36 +0530 Subject: [PATCH 06/10] =?UTF-8?q?=F0=9F=94=A7=20fix:=20correct=20bar=20fil?= =?UTF-8?q?l=20color=20handling=20in=20BarChart=20to=20ensure=20proper=20c?= =?UTF-8?q?olor=20assignment=20for=20tooltips?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/propel/src/charts/bar-chart/root.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/propel/src/charts/bar-chart/root.tsx b/packages/propel/src/charts/bar-chart/root.tsx index c1703c34bc9..0d34b27836e 100644 --- a/packages/propel/src/charts/bar-chart/root.tsx +++ b/packages/propel/src/charts/bar-chart/root.tsx @@ -53,7 +53,7 @@ export const BarChart = React.memo((props: T keys.push(bar.key); labels[bar.key] = bar.label; // For tooltip, we need a string color. If fill is a function, use a default color - colors[bar.key] = typeof bar.fill === "function" ? bar.fill(bar) : bar.fill; + colors[bar.key] = typeof bar.fill === "function" ? bar.fill({}) : bar.fill; } return { stackKeys: keys, stackLabels: labels, stackDotColors: colors }; @@ -66,7 +66,7 @@ export const BarChart = React.memo((props: T key={bar.key} dataKey={bar.key} stackId={bar.stackId} - fill={typeof bar.fill === "function" ? bar.fill(bar) : bar.fill} + fill={typeof bar.fill === "function" ? bar.fill({}) : bar.fill} opacity={!!activeLegend && activeLegend !== bar.key ? 0.1 : 1} shape={(shapeProps: any) => { const shapeVariant = barShapeVariants[bar.shapeVariant ?? "bar"]; From c74053969d1212d52b1cfbb9496a35fc81bcf53b Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Tue, 9 Sep 2025 00:23:44 +0530 Subject: [PATCH 07/10] =?UTF-8?q?=F0=9F=94=A7=20fix:=20update=20customTick?= =?UTF-8?q?s=20prop=20types=20in=20TAxisChartProps=20to=20use=20unknown=20?= =?UTF-8?q?type=20for=20better=20type=20safety?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/types/src/charts/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/types/src/charts/index.ts b/packages/types/src/charts/index.ts index df92ae6c9b2..8ee4739b267 100644 --- a/packages/types/src/charts/index.ts +++ b/packages/types/src/charts/index.ts @@ -52,8 +52,8 @@ export type TAxisChartProps = TBaseChartProp y?: number; }; customTicks?: { - x?: React.ComponentType; - y?: React.ComponentType; + x?: React.ComponentType; + y?: React.ComponentType; }; }; From 8775b9a70538adf579c0ce13b822f273c816924f Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Tue, 9 Sep 2025 17:38:29 +0530 Subject: [PATCH 08/10] =?UTF-8?q?=F0=9F=93=9D=20chore:=20updated=20transla?= =?UTF-8?q?tions=20and=20cleaned=20up=20insight=20card?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/analytics/insight-card.tsx | 23 +++---------------- .../components/analytics/total-insights.tsx | 1 - .../i18n/src/locales/cs/translations.json | 6 ++--- .../i18n/src/locales/de/translations.json | 6 ++--- .../i18n/src/locales/en/translations.json | 6 ++--- .../i18n/src/locales/es/translations.json | 6 ++--- .../i18n/src/locales/fr/translations.json | 6 ++--- .../i18n/src/locales/id/translations.json | 6 ++--- .../i18n/src/locales/it/translations.json | 6 ++--- .../i18n/src/locales/ja/translations.json | 6 ++--- .../i18n/src/locales/ko/translations.json | 6 ++--- .../i18n/src/locales/pl/translations.json | 6 ++--- .../i18n/src/locales/pt-BR/translations.json | 6 ++--- .../i18n/src/locales/ro/translations.json | 6 ++--- .../i18n/src/locales/ru/translations.json | 6 ++--- .../i18n/src/locales/sk/translations.json | 6 ++--- .../i18n/src/locales/tr-TR/translations.json | 6 ++--- .../i18n/src/locales/ua/translations.json | 6 ++--- .../i18n/src/locales/vi-VN/translations.json | 6 ++--- .../i18n/src/locales/zh-CN/translations.json | 6 ++--- .../i18n/src/locales/zh-TW/translations.json | 6 ++--- 21 files changed, 60 insertions(+), 78 deletions(-) diff --git a/apps/web/core/components/analytics/insight-card.tsx b/apps/web/core/components/analytics/insight-card.tsx index 739de6645c6..f4bf1515ac6 100644 --- a/apps/web/core/components/analytics/insight-card.tsx +++ b/apps/web/core/components/analytics/insight-card.tsx @@ -1,28 +1,17 @@ // plane package imports -import React, { useMemo } from "react"; +import React from "react"; import { IAnalyticsResponseFields } from "@plane/types"; import { Loader } from "@plane/ui"; -// components -import TrendPiece from "./trend-piece"; export type InsightCardProps = { data?: IAnalyticsResponseFields; label: string; isLoading?: boolean; - versus?: string | null; }; const InsightCard = (props: InsightCardProps) => { - const { data, label, isLoading, versus } = props; - const { count, filter_count } = data || {}; - const percentage = useMemo(() => { - if (count != null && filter_count != null) { - const result = ((count - filter_count) / count) * 100; - const isFiniteAndNotNaNOrZero = Number.isFinite(result) && !Number.isNaN(result) && result !== 0; - return isFiniteAndNotNaNOrZero ? result : null; - } - return null; - }, [count, filter_count]); + const { data, label, isLoading } = props; + const { count } = data || {}; return (
@@ -30,12 +19,6 @@ const InsightCard = (props: InsightCardProps) => { {!isLoading ? (
{count}
- {/* {percentage && ( -
- - {versus &&
vs {versus}
} -
- )} */}
) : ( diff --git a/apps/web/core/components/analytics/total-insights.tsx b/apps/web/core/components/analytics/total-insights.tsx index 258ac11e1eb..0ac1f4f8736 100644 --- a/apps/web/core/components/analytics/total-insights.tsx +++ b/apps/web/core/components/analytics/total-insights.tsx @@ -92,7 +92,6 @@ const TotalInsights: React.FC<{ isLoading={isLoading} data={totalInsightsData?.[item.key]} label={getInsightLabel(analyticsType, item, isEpic, t)} - versus={selectedDurationLabel} /> ))}
diff --git a/packages/i18n/src/locales/cs/translations.json b/packages/i18n/src/locales/cs/translations.json index 9881f5e6db4..e6c66aab4a0 100644 --- a/packages/i18n/src/locales/cs/translations.json +++ b/packages/i18n/src/locales/cs/translations.json @@ -882,7 +882,8 @@ "in_progress": "Probíhá", "planned": "Plánováno", "paused": "Pozastaveno", - "no_of": "Počet {entity}" + "no_of": "Počet {entity}", + "resolved": "Vyřešeno" }, "chart": { "x_axis": "Osa X", @@ -2490,7 +2491,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane se nespustil. To může být způsobeno tím, že se jeden nebo více služeb Plane nepodařilo spustit.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Vyberte View Logs z setup.sh a Docker logů, abyste si byli jisti." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2530,4 +2530,4 @@ "close_button": "Zavřít navigační panel", "outline_floating_button": "Otevřít osnovu" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/de/translations.json b/packages/i18n/src/locales/de/translations.json index bcce9268f7b..6b8af44b32a 100644 --- a/packages/i18n/src/locales/de/translations.json +++ b/packages/i18n/src/locales/de/translations.json @@ -882,7 +882,8 @@ "in_progress": "In Bearbeitung", "planned": "Geplant", "paused": "Pausiert", - "no_of": "Anzahl {entity}" + "no_of": "Anzahl {entity}", + "resolved": "Gelöst" }, "chart": { "x_axis": "X-Achse", @@ -2489,7 +2490,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane ist nicht gestartet. Dies könnte daran liegen, dass einer oder mehrere Plane-Services nicht starten konnten.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Wählen Sie View Logs aus setup.sh und Docker-Logs, um sicherzugehen." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2529,4 +2529,4 @@ "close_button": "Navigationsbereich schließen", "outline_floating_button": "Gliederung öffnen" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index 026fc90c1be..9b5e4911401 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -725,7 +725,8 @@ "apply": "Apply", "applying": "Applying", "overview": "Overview", - "no_of": "No. of {entity}" + "no_of": "No. of {entity}", + "resolved": "Resolved" }, "chart": { "x_axis": "X-axis", @@ -2366,7 +2367,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane didn't start up. This could be because one or more Plane services failed to start.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Choose View Logs from setup.sh and Docker logs to be sure." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2406,4 +2406,4 @@ "close_button": "Close navigation pane", "outline_floating_button": "Open outline" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/es/translations.json b/packages/i18n/src/locales/es/translations.json index 823d427b473..62edb488c88 100644 --- a/packages/i18n/src/locales/es/translations.json +++ b/packages/i18n/src/locales/es/translations.json @@ -885,7 +885,8 @@ "in_progress": "En progreso", "planned": "Planificado", "paused": "Pausado", - "no_of": "N.º de {entity}" + "no_of": "N.º de {entity}", + "resolved": "Resuelto" }, "chart": { "x_axis": "Eje X", @@ -2492,7 +2493,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane no se inició. Esto podría deberse a que uno o más servicios de Plane fallaron al iniciar.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Selecciona View Logs desde setup.sh y los logs de Docker para estar seguro." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2532,4 +2532,4 @@ "close_button": "Cerrar panel de navegación", "outline_floating_button": "Abrir esquema" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/fr/translations.json b/packages/i18n/src/locales/fr/translations.json index 5a24044cbe8..f6b5a8f75c0 100644 --- a/packages/i18n/src/locales/fr/translations.json +++ b/packages/i18n/src/locales/fr/translations.json @@ -883,7 +883,8 @@ "in_progress": "En cours", "planned": "Planifié", "paused": "En pause", - "no_of": "Nº de {entity}" + "no_of": "Nº de {entity}", + "resolved": "Résolu" }, "chart": { "x_axis": "Axe X", @@ -2490,7 +2491,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane n'a pas démarré. Cela pourrait être dû au fait qu'un ou plusieurs services Plane ont échoué à démarrer.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Choisissez View Logs depuis setup.sh et les logs Docker pour en être sûr." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2530,4 +2530,4 @@ "close_button": "Fermer le panneau de navigation", "outline_floating_button": "Ouvrir le plan" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/id/translations.json b/packages/i18n/src/locales/id/translations.json index caa973bd08b..3eff5fc2999 100644 --- a/packages/i18n/src/locales/id/translations.json +++ b/packages/i18n/src/locales/id/translations.json @@ -882,7 +882,8 @@ "in_progress": "Sedang berlangsung", "planned": "Direncanakan", "paused": "Dijedaikan", - "no_of": "Jumlah {entity}" + "no_of": "Jumlah {entity}", + "resolved": "Terselesaikan" }, "chart": { "x_axis": "Sumbu-X", @@ -2485,7 +2486,6 @@ "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Pilih View Logs dari setup.sh dan log Docker untuk memastikan." }, "no_of": "Jumlah {entity}", - "page_navigation_pane": { "tabs": { "outline": { @@ -2525,4 +2525,4 @@ "close_button": "Tutup panel navigasi", "outline_floating_button": "Buka garis besar" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/it/translations.json b/packages/i18n/src/locales/it/translations.json index 11b5f93c936..6a06c736651 100644 --- a/packages/i18n/src/locales/it/translations.json +++ b/packages/i18n/src/locales/it/translations.json @@ -881,7 +881,8 @@ "in_progress": "In corso", "planned": "Pianificato", "paused": "In pausa", - "no_of": "N. di {entity}" + "no_of": "N. di {entity}", + "resolved": "Risolto" }, "chart": { "x_axis": "Asse X", @@ -2489,7 +2490,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane non si è avviato. Questo potrebbe essere dovuto al fatto che uno o più servizi Plane non sono riusciti ad avviarsi.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Scegli View Logs da setup.sh e dai log Docker per essere sicuro." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2529,4 +2529,4 @@ "close_button": "Chiudi pannello di navigazione", "outline_floating_button": "Apri schema" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/ja/translations.json b/packages/i18n/src/locales/ja/translations.json index b7a43808aab..cc0e2d9ce42 100644 --- a/packages/i18n/src/locales/ja/translations.json +++ b/packages/i18n/src/locales/ja/translations.json @@ -883,7 +883,8 @@ "in_progress": "進行中", "planned": "計画済み", "paused": "一時停止", - "no_of": "{entity} の数" + "no_of": "{entity} の数", + "resolved": "解決済み" }, "chart": { "x_axis": "エックス アクシス", @@ -2490,7 +2491,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Planeが起動しませんでした。これは1つまたは複数のPlaneサービスの起動に失敗したことが原因である可能性があります。", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "setup.shとDockerログからView Logsを選択して確認してください。" }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2530,4 +2530,4 @@ "close_button": "ナビゲーションパネルを閉じる", "outline_floating_button": "アウトラインを開く" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/ko/translations.json b/packages/i18n/src/locales/ko/translations.json index bc23bc6e104..d31e43e7ada 100644 --- a/packages/i18n/src/locales/ko/translations.json +++ b/packages/i18n/src/locales/ko/translations.json @@ -884,7 +884,8 @@ "in_progress": "진행 중", "planned": "계획된", "paused": "일시 중지됨", - "no_of": "{entity} 수" + "no_of": "{entity} 수", + "resolved": "해결됨" }, "chart": { "x_axis": "X축", @@ -2492,7 +2493,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane이 시작되지 않았습니다. 이는 하나 이상의 Plane 서비스가 시작에 실패했기 때문일 수 있습니다.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "확실히 하려면 setup.sh와 Docker 로그에서 View Logs를 선택하세요." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2532,4 +2532,4 @@ "close_button": "네비게이션 패널 닫기", "outline_floating_button": "개요 열기" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/pl/translations.json b/packages/i18n/src/locales/pl/translations.json index 56dbf089b23..0a01de3a39e 100644 --- a/packages/i18n/src/locales/pl/translations.json +++ b/packages/i18n/src/locales/pl/translations.json @@ -884,7 +884,8 @@ "in_progress": "W trakcie", "planned": "Zaplanowane", "paused": "Wstrzymane", - "no_of": "Liczba {entity}" + "no_of": "Liczba {entity}", + "resolved": "Rozwiązane" }, "chart": { "x_axis": "Oś X", @@ -2491,7 +2492,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane nie uruchomił się. Może to być spowodowane tym, że jedna lub więcej usług Plane nie mogła się uruchomić.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Wybierz View Logs z setup.sh i logów Docker, aby mieć pewność." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2531,4 +2531,4 @@ "close_button": "Zamknij panel nawigacji", "outline_floating_button": "Otwórz konspekt" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/pt-BR/translations.json b/packages/i18n/src/locales/pt-BR/translations.json index 831b3515e15..dc1a3a290ee 100644 --- a/packages/i18n/src/locales/pt-BR/translations.json +++ b/packages/i18n/src/locales/pt-BR/translations.json @@ -884,7 +884,8 @@ "in_progress": "Em andamento", "planned": "Planejado", "paused": "Pausado", - "no_of": "Nº de {entity}" + "no_of": "Nº de {entity}", + "resolved": "Resolvido" }, "chart": { "x_axis": "Eixo X", @@ -2486,7 +2487,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "O Plane não inicializou. Isso pode ser porque um ou mais serviços do Plane falharam ao iniciar.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Escolha View Logs do setup.sh e logs do Docker para ter certeza." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2526,4 +2526,4 @@ "close_button": "Fechar painel de navegação", "outline_floating_button": "Abrir estrutura" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/ro/translations.json b/packages/i18n/src/locales/ro/translations.json index 82cf21bfc6c..d27fea864f1 100644 --- a/packages/i18n/src/locales/ro/translations.json +++ b/packages/i18n/src/locales/ro/translations.json @@ -882,7 +882,8 @@ "in_progress": "În desfășurare", "planned": "Planificat", "paused": "Pauzat", - "no_of": "Nr. de {entity}" + "no_of": "Nr. de {entity}", + "resolved": "Rezolvat" }, "chart": { "x_axis": "axa-X", @@ -2484,7 +2485,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane nu a pornit. Aceasta ar putea fi din cauza că unul sau mai multe servicii Plane au eșuat să pornească.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Alegeți View Logs din setup.sh și logurile Docker pentru a fi siguri." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2524,4 +2524,4 @@ "close_button": "Închide panoul de navigare", "outline_floating_button": "Deschide conturul" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/ru/translations.json b/packages/i18n/src/locales/ru/translations.json index 7d11338b726..ef32bc65e9e 100644 --- a/packages/i18n/src/locales/ru/translations.json +++ b/packages/i18n/src/locales/ru/translations.json @@ -884,7 +884,8 @@ "in_progress": "В процессе", "planned": "Запланировано", "paused": "На паузе", - "no_of": "Количество {entity}" + "no_of": "Количество {entity}", + "resolved": "Решено" }, "chart": { "x_axis": "Ось X", @@ -2493,7 +2494,6 @@ "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Выберите View Logs из setup.sh и логов Docker, чтобы убедиться." }, "no_of": "Количество {entity}", - "page_navigation_pane": { "tabs": { "outline": { @@ -2533,4 +2533,4 @@ "close_button": "Закрыть панель навигации", "outline_floating_button": "Открыть структуру" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/sk/translations.json b/packages/i18n/src/locales/sk/translations.json index f04165391ec..97e763299d6 100644 --- a/packages/i18n/src/locales/sk/translations.json +++ b/packages/i18n/src/locales/sk/translations.json @@ -884,7 +884,8 @@ "in_progress": "Prebieha", "planned": "Plánované", "paused": "Pozastavené", - "no_of": "Počet {entity}" + "no_of": "Počet {entity}", + "resolved": "Vyriešené" }, "chart": { "x_axis": "Os X", @@ -2491,7 +2492,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane sa nespustil. Toto môže byť spôsobené tým, že sa jedna alebo viac služieb Plane nepodarilo spustiť.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Vyberte View Logs z setup.sh a Docker logov, aby ste si boli istí." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2531,4 +2531,4 @@ "close_button": "Zavrieť navigačný panel", "outline_floating_button": "Otvoriť osnovu" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/tr-TR/translations.json b/packages/i18n/src/locales/tr-TR/translations.json index 8da90adc82f..32f06446223 100644 --- a/packages/i18n/src/locales/tr-TR/translations.json +++ b/packages/i18n/src/locales/tr-TR/translations.json @@ -886,7 +886,8 @@ "in_progress": "Devam ediyor", "planned": "Planlandı", "paused": "Durduruldu", - "no_of": "{entity} sayısı" + "no_of": "{entity} sayısı", + "resolved": "Çözüldü" }, "chart": { "x_axis": "X ekseni", @@ -2471,7 +2472,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane başlatılamadı. Bu, bir veya daha fazla Plane servisinin başlatılamaması nedeniyle olabilir.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Emin olmak için setup.sh ve Docker loglarından View Logs'u seçin." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2511,4 +2511,4 @@ "close_button": "Navigasyon panelini kapat", "outline_floating_button": "Ana hatları aç" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/ua/translations.json b/packages/i18n/src/locales/ua/translations.json index bd2158d96f4..87f56c9771a 100644 --- a/packages/i18n/src/locales/ua/translations.json +++ b/packages/i18n/src/locales/ua/translations.json @@ -884,7 +884,8 @@ "in_progress": "В процесі", "planned": "Заплановано", "paused": "Призупинено", - "no_of": "Кількість {entity}" + "no_of": "Кількість {entity}", + "resolved": "Вирішено" }, "chart": { "x_axis": "Вісь X", @@ -2491,7 +2492,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane не запустився. Це може бути через те, що один або декілька сервісів Plane не змогли запуститися.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Виберіть View Logs з setup.sh та логів Docker, щоб переконатися." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2531,4 +2531,4 @@ "close_button": "Закрити панель навігації", "outline_floating_button": "Відкрити структуру" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/vi-VN/translations.json b/packages/i18n/src/locales/vi-VN/translations.json index b8610c2e048..2e086d7fd97 100644 --- a/packages/i18n/src/locales/vi-VN/translations.json +++ b/packages/i18n/src/locales/vi-VN/translations.json @@ -883,7 +883,8 @@ "in_progress": "Đang tiến hành", "planned": "Đã lên kế hoạch", "paused": "Tạm dừng", - "no_of": "Số lượng {entity}" + "no_of": "Số lượng {entity}", + "resolved": "Đã giải quyết" }, "chart": { "x_axis": "Trục X", @@ -2489,7 +2490,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane không khởi động được. Điều này có thể do một hoặc nhiều dịch vụ Plane không khởi động được.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Chọn View Logs từ setup.sh và log Docker để chắc chắn." }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2529,4 +2529,4 @@ "close_button": "Đóng bảng điều hướng", "outline_floating_button": "Mở phác thảo" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/zh-CN/translations.json b/packages/i18n/src/locales/zh-CN/translations.json index 55ace9a6662..a9dddd49ca3 100644 --- a/packages/i18n/src/locales/zh-CN/translations.json +++ b/packages/i18n/src/locales/zh-CN/translations.json @@ -883,7 +883,8 @@ "in_progress": "进行中", "planned": "已计划", "paused": "暂停", - "no_of": "{entity} 的数量" + "no_of": "{entity} 的数量", + "resolved": "已解决" }, "chart": { "x_axis": "X轴", @@ -2471,7 +2472,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane 未能启动。这可能是因为一个或多个 Plane 服务启动失败。", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "请选择“查看日志”来查看 setup.sh 和 Docker 日志,以确认问题。" }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2511,4 +2511,4 @@ "close_button": "关闭导航面板", "outline_floating_button": "打开大纲" } -} +} \ No newline at end of file diff --git a/packages/i18n/src/locales/zh-TW/translations.json b/packages/i18n/src/locales/zh-TW/translations.json index 6c6a85f2028..d9320b77a78 100644 --- a/packages/i18n/src/locales/zh-TW/translations.json +++ b/packages/i18n/src/locales/zh-TW/translations.json @@ -884,7 +884,8 @@ "planned": "已計劃", "paused": "暫停", "at_risk": "有風險", - "no_of": "{entity} 的數量" + "no_of": "{entity} 的數量", + "resolved": "已解決" }, "chart": { "x_axis": "X 軸", @@ -2492,7 +2493,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane 未能啟動。這可能是因為一個或多個 Plane 服務啟動失敗。", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "從 setup.sh 和 Docker 日誌中選擇 View Logs 來確認。" }, - "page_navigation_pane": { "tabs": { "outline": { @@ -2532,4 +2532,4 @@ "close_button": "關閉導航面板", "outline_floating_button": "打開大綱" } -} +} \ No newline at end of file From fc4636eb11090d5af7c3b0adfb08dc05ce7fe9a2 Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:20:55 +0530 Subject: [PATCH 09/10] =?UTF-8?q?=F0=9F=9A=A8=20fix:=20lint?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/core/components/analytics/insight-card.tsx | 4 ++-- packages/i18n/src/locales/cs/translations.json | 2 +- packages/i18n/src/locales/de/translations.json | 2 +- packages/i18n/src/locales/en/translations.json | 2 +- packages/i18n/src/locales/es/translations.json | 2 +- packages/i18n/src/locales/fr/translations.json | 2 +- packages/i18n/src/locales/id/translations.json | 2 +- packages/i18n/src/locales/it/translations.json | 2 +- packages/i18n/src/locales/ja/translations.json | 2 +- packages/i18n/src/locales/ko/translations.json | 2 +- packages/i18n/src/locales/pl/translations.json | 2 +- packages/i18n/src/locales/pt-BR/translations.json | 2 +- packages/i18n/src/locales/ro/translations.json | 2 +- packages/i18n/src/locales/ru/translations.json | 2 +- packages/i18n/src/locales/sk/translations.json | 2 +- packages/i18n/src/locales/tr-TR/translations.json | 2 +- packages/i18n/src/locales/ua/translations.json | 2 +- packages/i18n/src/locales/vi-VN/translations.json | 2 +- packages/i18n/src/locales/zh-CN/translations.json | 2 +- packages/i18n/src/locales/zh-TW/translations.json | 2 +- 20 files changed, 21 insertions(+), 21 deletions(-) diff --git a/apps/web/core/components/analytics/insight-card.tsx b/apps/web/core/components/analytics/insight-card.tsx index f4bf1515ac6..abfbdf8b950 100644 --- a/apps/web/core/components/analytics/insight-card.tsx +++ b/apps/web/core/components/analytics/insight-card.tsx @@ -10,8 +10,8 @@ export type InsightCardProps = { }; const InsightCard = (props: InsightCardProps) => { - const { data, label, isLoading } = props; - const { count } = data || {}; + const { data, label, isLoading = false } = props; + const count = data?.count ?? 0; return (
diff --git a/packages/i18n/src/locales/cs/translations.json b/packages/i18n/src/locales/cs/translations.json index e6c66aab4a0..aa25abc5df1 100644 --- a/packages/i18n/src/locales/cs/translations.json +++ b/packages/i18n/src/locales/cs/translations.json @@ -2530,4 +2530,4 @@ "close_button": "Zavřít navigační panel", "outline_floating_button": "Otevřít osnovu" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/de/translations.json b/packages/i18n/src/locales/de/translations.json index 6b8af44b32a..fc404e6369d 100644 --- a/packages/i18n/src/locales/de/translations.json +++ b/packages/i18n/src/locales/de/translations.json @@ -2529,4 +2529,4 @@ "close_button": "Navigationsbereich schließen", "outline_floating_button": "Gliederung öffnen" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/en/translations.json b/packages/i18n/src/locales/en/translations.json index 9b5e4911401..39087d43a0a 100644 --- a/packages/i18n/src/locales/en/translations.json +++ b/packages/i18n/src/locales/en/translations.json @@ -2406,4 +2406,4 @@ "close_button": "Close navigation pane", "outline_floating_button": "Open outline" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/es/translations.json b/packages/i18n/src/locales/es/translations.json index 62edb488c88..1621a1c8e99 100644 --- a/packages/i18n/src/locales/es/translations.json +++ b/packages/i18n/src/locales/es/translations.json @@ -2532,4 +2532,4 @@ "close_button": "Cerrar panel de navegación", "outline_floating_button": "Abrir esquema" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/fr/translations.json b/packages/i18n/src/locales/fr/translations.json index f6b5a8f75c0..cf6fdd87a37 100644 --- a/packages/i18n/src/locales/fr/translations.json +++ b/packages/i18n/src/locales/fr/translations.json @@ -2530,4 +2530,4 @@ "close_button": "Fermer le panneau de navigation", "outline_floating_button": "Ouvrir le plan" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/id/translations.json b/packages/i18n/src/locales/id/translations.json index 3eff5fc2999..9fd407bdeb9 100644 --- a/packages/i18n/src/locales/id/translations.json +++ b/packages/i18n/src/locales/id/translations.json @@ -2525,4 +2525,4 @@ "close_button": "Tutup panel navigasi", "outline_floating_button": "Buka garis besar" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/it/translations.json b/packages/i18n/src/locales/it/translations.json index 6a06c736651..a29e0295d37 100644 --- a/packages/i18n/src/locales/it/translations.json +++ b/packages/i18n/src/locales/it/translations.json @@ -2529,4 +2529,4 @@ "close_button": "Chiudi pannello di navigazione", "outline_floating_button": "Apri schema" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/ja/translations.json b/packages/i18n/src/locales/ja/translations.json index cc0e2d9ce42..bff522b3728 100644 --- a/packages/i18n/src/locales/ja/translations.json +++ b/packages/i18n/src/locales/ja/translations.json @@ -2530,4 +2530,4 @@ "close_button": "ナビゲーションパネルを閉じる", "outline_floating_button": "アウトラインを開く" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/ko/translations.json b/packages/i18n/src/locales/ko/translations.json index d31e43e7ada..9a86dab6121 100644 --- a/packages/i18n/src/locales/ko/translations.json +++ b/packages/i18n/src/locales/ko/translations.json @@ -2532,4 +2532,4 @@ "close_button": "네비게이션 패널 닫기", "outline_floating_button": "개요 열기" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/pl/translations.json b/packages/i18n/src/locales/pl/translations.json index 0a01de3a39e..a9f5190f6f0 100644 --- a/packages/i18n/src/locales/pl/translations.json +++ b/packages/i18n/src/locales/pl/translations.json @@ -2531,4 +2531,4 @@ "close_button": "Zamknij panel nawigacji", "outline_floating_button": "Otwórz konspekt" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/pt-BR/translations.json b/packages/i18n/src/locales/pt-BR/translations.json index dc1a3a290ee..f52a220fc4c 100644 --- a/packages/i18n/src/locales/pt-BR/translations.json +++ b/packages/i18n/src/locales/pt-BR/translations.json @@ -2526,4 +2526,4 @@ "close_button": "Fechar painel de navegação", "outline_floating_button": "Abrir estrutura" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/ro/translations.json b/packages/i18n/src/locales/ro/translations.json index d27fea864f1..46c42f683a8 100644 --- a/packages/i18n/src/locales/ro/translations.json +++ b/packages/i18n/src/locales/ro/translations.json @@ -2524,4 +2524,4 @@ "close_button": "Închide panoul de navigare", "outline_floating_button": "Deschide conturul" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/ru/translations.json b/packages/i18n/src/locales/ru/translations.json index ef32bc65e9e..86b3730c794 100644 --- a/packages/i18n/src/locales/ru/translations.json +++ b/packages/i18n/src/locales/ru/translations.json @@ -2533,4 +2533,4 @@ "close_button": "Закрыть панель навигации", "outline_floating_button": "Открыть структуру" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/sk/translations.json b/packages/i18n/src/locales/sk/translations.json index 97e763299d6..08da7e2dd39 100644 --- a/packages/i18n/src/locales/sk/translations.json +++ b/packages/i18n/src/locales/sk/translations.json @@ -2531,4 +2531,4 @@ "close_button": "Zavrieť navigačný panel", "outline_floating_button": "Otvoriť osnovu" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/tr-TR/translations.json b/packages/i18n/src/locales/tr-TR/translations.json index 32f06446223..8088ff21359 100644 --- a/packages/i18n/src/locales/tr-TR/translations.json +++ b/packages/i18n/src/locales/tr-TR/translations.json @@ -2511,4 +2511,4 @@ "close_button": "Navigasyon panelini kapat", "outline_floating_button": "Ana hatları aç" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/ua/translations.json b/packages/i18n/src/locales/ua/translations.json index 87f56c9771a..6f9cccd4e19 100644 --- a/packages/i18n/src/locales/ua/translations.json +++ b/packages/i18n/src/locales/ua/translations.json @@ -2531,4 +2531,4 @@ "close_button": "Закрити панель навігації", "outline_floating_button": "Відкрити структуру" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/vi-VN/translations.json b/packages/i18n/src/locales/vi-VN/translations.json index 2e086d7fd97..12139dd6c0f 100644 --- a/packages/i18n/src/locales/vi-VN/translations.json +++ b/packages/i18n/src/locales/vi-VN/translations.json @@ -2529,4 +2529,4 @@ "close_button": "Đóng bảng điều hướng", "outline_floating_button": "Mở phác thảo" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/zh-CN/translations.json b/packages/i18n/src/locales/zh-CN/translations.json index a9dddd49ca3..03b35d9f691 100644 --- a/packages/i18n/src/locales/zh-CN/translations.json +++ b/packages/i18n/src/locales/zh-CN/translations.json @@ -2511,4 +2511,4 @@ "close_button": "关闭导航面板", "outline_floating_button": "打开大纲" } -} \ No newline at end of file +} diff --git a/packages/i18n/src/locales/zh-TW/translations.json b/packages/i18n/src/locales/zh-TW/translations.json index d9320b77a78..0b7273b326a 100644 --- a/packages/i18n/src/locales/zh-TW/translations.json +++ b/packages/i18n/src/locales/zh-TW/translations.json @@ -2532,4 +2532,4 @@ "close_button": "關閉導航面板", "outline_floating_button": "打開大綱" } -} \ No newline at end of file +} From b225b98cbdddb1a66d10dcc0c253072e1ef12cfd Mon Sep 17 00:00:00 2001 From: Jayash Tripathy <76092296+JayashTripathy@users.noreply.github.com> Date: Tue, 9 Sep 2025 19:22:27 +0530 Subject: [PATCH 10/10] =?UTF-8?q?=F0=9F=94=A7=20fix:=20remove=20unused=20t?= =?UTF-8?q?ranslation=20key=20"no=5Fof"=20from=20Russian=20translations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/i18n/src/locales/ru/translations.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/i18n/src/locales/ru/translations.json b/packages/i18n/src/locales/ru/translations.json index 86b3730c794..c6c84ed8ee2 100644 --- a/packages/i18n/src/locales/ru/translations.json +++ b/packages/i18n/src/locales/ru/translations.json @@ -2493,7 +2493,6 @@ "plane_didnt_start_up_this_could_be_because_one_or_more_plane_services_failed_to_start": "Plane не запустился. Это может быть из-за того, что один или несколько сервисов Plane не смогли запуститься.", "choose_view_logs_from_setup_sh_and_docker_logs_to_be_sure": "Выберите View Logs из setup.sh и логов Docker, чтобы убедиться." }, - "no_of": "Количество {entity}", "page_navigation_pane": { "tabs": { "outline": { @@ -2533,4 +2532,4 @@ "close_button": "Закрыть панель навигации", "outline_floating_button": "Открыть структуру" } -} +} \ No newline at end of file