MCPcopy Index your code
hub / github.com/callumalpass/tasknotes / normalizeStatsFilters

Function normalizeStatsFilters

src/views/StatsView.ts:96–129  ·  view source on GitHub ↗
(value: unknown)

Source from the content-addressed store, hash-verified

94}
95
96export function normalizeStatsFilters(value: unknown): StatsFilters {
97 if (!value || typeof value !== "object") {
98 return createDefaultStatsFilters();
99 }
100
101 const record = value as Record<string, unknown>;
102 const filters = createDefaultStatsFilters();
103
104 if (isStatsDateRange(record.dateRange)) {
105 filters.dateRange = record.dateRange;
106 }
107
108 if (isDateInputValue(record.customStartDate)) {
109 filters.customStartDate = record.customStartDate;
110 }
111
112 if (isDateInputValue(record.customEndDate)) {
113 filters.customEndDate = record.customEndDate;
114 }
115
116 if (Array.isArray(record.selectedProjects)) {
117 filters.selectedProjects = record.selectedProjects.filter(
118 (project): project is string => typeof project === "string"
119 );
120 }
121
122 const minTimeSpent =
123 typeof record.minTimeSpent === "number" ? record.minTimeSpent : Number(record.minTimeSpent);
124 if (Number.isFinite(minTimeSpent) && minTimeSpent > 0) {
125 filters.minTimeSpent = Math.floor(minTimeSpent);
126 }
127
128 return filters;
129}
130
131export function filterStatsVisibleTasks(tasks: TaskInfo[]): TaskInfo[] {
132 return tasks.filter((task) => !task.archived);

Calls 3

isStatsDateRangeFunction · 0.85
isDateInputValueFunction · 0.85

Tested by

no test coverage detected