feat: 统计面板与收支记录支持图表点击跳转与筛选双向联动
- 统计面板支出/收入分类饼图与支出/收入渠道饼图支持点击扇区跳转收支记录,并带上对应分类或渠道筛选 - 新增统计面板「查看收支记录」与收支记录「查看统计」按钮,实现两页双向跳转 - 收支记录跳转统计面板时按共享偏好还原类型、分类、渠道、标签、金额、备注、计入统计与时间范围 - 时间范围统一为具体起止区间,面板预设选择时换算为区间写入共享偏好 - 「计入统计」默认统一为「仅计入」,并修复「全部」与金额字段显式 null 的记忆 - 抽出公共跳转字段与共享筛选读写,收敛统计面板多处跳转的重复逻辑
This commit is contained in:
@@ -40,12 +40,14 @@ export function loadTransactionFilterPrefs(): Partial<TransactionFilterPrefs> {
|
||||
if (Array.isArray(raw.filterDateRange) && raw.filterDateRange.length === 2) {
|
||||
result.filterDateRange = raw.filterDateRange as [number, number]
|
||||
}
|
||||
if (raw.filterIncludeInStats === 'true' || raw.filterIncludeInStats === 'false') {
|
||||
// filterIncludeInStats 为三态:'true'-计入、'false'-不计入、null-全部;显式 null 也需保留
|
||||
if (raw.filterIncludeInStats === 'true' || raw.filterIncludeInStats === 'false' || raw.filterIncludeInStats === null) {
|
||||
result.filterIncludeInStats = raw.filterIncludeInStats
|
||||
}
|
||||
if (typeof raw.filterRemark === 'string') result.filterRemark = raw.filterRemark
|
||||
if (typeof raw.filterMinAmount === 'number') result.filterMinAmount = raw.filterMinAmount
|
||||
if (typeof raw.filterMaxAmount === 'number') result.filterMaxAmount = raw.filterMaxAmount
|
||||
// 金额支持显式 null(表示已清空),需与「键不存在」区分
|
||||
if (typeof raw.filterMinAmount === 'number' || raw.filterMinAmount === null) result.filterMinAmount = raw.filterMinAmount
|
||||
if (typeof raw.filterMaxAmount === 'number' || raw.filterMaxAmount === null) result.filterMaxAmount = raw.filterMaxAmount
|
||||
if (typeof raw.pageSize === 'number') result.pageSize = raw.pageSize
|
||||
if (typeof raw.sortValue === 'string') result.sortValue = raw.sortValue
|
||||
if (Array.isArray(raw.filterTag)) result.filterTag = raw.filterTag
|
||||
|
||||
Reference in New Issue
Block a user