MCPcopy
hub / github.com/callumalpass/tasknotes / applyTaskFilters

Method applyTaskFilters

src/views/StatsView.ts:427–477  ·  view source on GitHub ↗

* Apply current filters to task list

(tasks: TaskInfo[])

Source from the content-addressed store, hash-verified

425 * Apply current filters to task list
426 */
427 private applyTaskFilters(tasks: TaskInfo[]): TaskInfo[] {
428 let filteredTasks = tasks;
429
430 // Apply date range filter
431 const dateRange = this.getFilterDateRange();
432 if (dateRange.start || dateRange.end) {
433 filteredTasks = filteredTasks.filter((task) => {
434 // Check if task has activity in the range based on time entries
435 if (task.timeEntries && task.timeEntries.length > 0) {
436 return task.timeEntries.some((entry) => {
437 if (!entry.startTime) return false;
438 const entryDate = new Date(entry.startTime);
439
440 if (dateRange.start && entryDate < dateRange.start) return false;
441 if (dateRange.end && entryDate > dateRange.end) return false;
442
443 return true;
444 });
445 }
446
447 // Also check completion date
448 if (task.completedDate) {
449 const completedDate = new Date(task.completedDate);
450 if (dateRange.start && completedDate < dateRange.start) return false;
451 if (dateRange.end && completedDate > dateRange.end) return false;
452 return true;
453 }
454
455 // Check creation date as fallback
456 if (task.dateCreated) {
457 const createdDate = new Date(task.dateCreated);
458 if (dateRange.start && createdDate < dateRange.start) return false;
459 if (dateRange.end && createdDate > dateRange.end) return false;
460 return true;
461 }
462
463 // If no date information and we have date filters, exclude
464 return !(dateRange.start || dateRange.end);
465 });
466 }
467
468 // Apply minimum time filter
469 if (this.currentFilters.minTimeSpent > 0) {
470 filteredTasks = filteredTasks.filter((task) => {
471 const totalTime = calculateTotalTimeSpent(task.timeEntries || []);
472 return totalTime >= this.currentFilters.minTimeSpent;
473 });
474 }
475
476 return filteredTasks;
477 }
478
479 private async updateOverviewStats() {
480 if (!this.overviewStatsEl) return;

Callers 1

getAllTasksMethod · 0.95

Calls 2

getFilterDateRangeMethod · 0.95
calculateTotalTimeSpentFunction · 0.90

Tested by

no test coverage detected