toggleComparison
This commit is contained in:
@@ -16,7 +16,7 @@ export interface DashboardSection {
|
|||||||
title?: string;
|
title?: string;
|
||||||
summary?: string;
|
summary?: string;
|
||||||
component: React.ComponentType<any>;
|
component: React.ComponentType<any>;
|
||||||
dataKey?: string;
|
dataKey: string;
|
||||||
settings?: Record<string, any>;
|
settings?: Record<string, any>;
|
||||||
isList?: boolean;
|
isList?: boolean;
|
||||||
style?: {
|
style?: {
|
||||||
@@ -49,4 +49,5 @@ export interface DashboardProps {
|
|||||||
toggleMode: () => void;
|
toggleMode: () => void;
|
||||||
togglePeriodType: () => void;
|
togglePeriodType: () => void;
|
||||||
setSelectedPeriodId: (id: string | null) => void;
|
setSelectedPeriodId: (id: string | null) => void;
|
||||||
|
toggleComparison: () => void;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,13 @@ export default function Dashboard(props: DashboardProps) {
|
|||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const toggleComparison = () => {
|
||||||
|
setState(prev => ({
|
||||||
|
...prev,
|
||||||
|
comparison: !prev.comparison,
|
||||||
|
}));
|
||||||
|
};
|
||||||
|
|
||||||
const setSelectedPeriodId = (selectedPeriodId: typeof state.selectedPeriodId) => {
|
const setSelectedPeriodId = (selectedPeriodId: typeof state.selectedPeriodId) => {
|
||||||
setState(prev => ({ ...prev, selectedPeriodId }));
|
setState(prev => ({ ...prev, selectedPeriodId }));
|
||||||
};
|
};
|
||||||
@@ -35,6 +42,7 @@ export default function Dashboard(props: DashboardProps) {
|
|||||||
setState={setState}
|
setState={setState}
|
||||||
toggleMode={toggleMode}
|
toggleMode={toggleMode}
|
||||||
togglePeriodType={togglePeriodType}
|
togglePeriodType={togglePeriodType}
|
||||||
|
toggleComparison={toggleComparison}
|
||||||
setSelectedPeriodId={setSelectedPeriodId}
|
setSelectedPeriodId={setSelectedPeriodId}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -22,11 +22,12 @@ export default function DashboardView({
|
|||||||
setState,
|
setState,
|
||||||
toggleMode,
|
toggleMode,
|
||||||
togglePeriodType,
|
togglePeriodType,
|
||||||
|
toggleComparison,
|
||||||
setSelectedPeriodId,
|
setSelectedPeriodId,
|
||||||
}: ViewProps) {
|
}: ViewProps) {
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const themeMode = theme.palette.mode;
|
const themeMode = theme.palette.mode;
|
||||||
const { mode, periodType, selectedPeriodId, comparison } = state;
|
const { mode, periodType, comparison, selectedPeriodId } = state;
|
||||||
|
|
||||||
// Resolve colors with fallbacks
|
// Resolve colors with fallbacks
|
||||||
const colors = React.useMemo(() => {
|
const colors = React.useMemo(() => {
|
||||||
@@ -117,7 +118,19 @@ export default function DashboardView({
|
|||||||
header={item.payeeName || item.name}
|
header={item.payeeName || item.name}
|
||||||
progressAmount={item.amount}
|
progressAmount={item.amount}
|
||||||
totalAmount={data.totalAmount}
|
totalAmount={data.totalAmount}
|
||||||
colorTheme={mode === "expense" ? "error" : "success"}
|
accentColor={colors.primary}
|
||||||
|
colorScheme={colors}
|
||||||
|
|
||||||
|
// State management
|
||||||
|
mode={mode}
|
||||||
|
|
||||||
|
periodType={periodType}
|
||||||
|
comparison={comparison}
|
||||||
|
selectedPeriodId={selectedPeriodId}
|
||||||
|
|
||||||
|
togglePeriodType={togglePeriodType}
|
||||||
|
toggleComparison={toggleComparison}
|
||||||
|
setSelectedPeriodId={setSelectedPeriodId}
|
||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
))}
|
))}
|
||||||
@@ -128,16 +141,21 @@ export default function DashboardView({
|
|||||||
{...section.settings}
|
{...section.settings}
|
||||||
header={section.title}
|
header={section.title}
|
||||||
summary={section.summary}
|
summary={section.summary}
|
||||||
data={section.dataKey ? data[section.dataKey] : data.chartData}
|
data={data[mode][section.dataKey]}
|
||||||
title={section.title}
|
title={section.title}
|
||||||
accentColor={colors.primary}
|
accentColor={colors.primary}
|
||||||
colorScheme={colors}
|
colorScheme={colors}
|
||||||
|
|
||||||
|
// State management
|
||||||
|
mode={mode}
|
||||||
|
|
||||||
periodType={periodType}
|
periodType={periodType}
|
||||||
onPeriodTypeChange={(p: any) => setState(prev => ({ ...prev, periodType: p }))}
|
|
||||||
comparison={comparison}
|
comparison={comparison}
|
||||||
setComparison={(c: any) => setState(prev => ({ ...prev, comparison: c }))}
|
|
||||||
selectedPeriodId={selectedPeriodId}
|
selectedPeriodId={selectedPeriodId}
|
||||||
onSelectPeriodId={setSelectedPeriodId}
|
|
||||||
|
togglePeriodType={togglePeriodType}
|
||||||
|
toggleComparison={toggleComparison}
|
||||||
|
setSelectedPeriodId={setSelectedPeriodId}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|||||||
Reference in New Issue
Block a user