Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions projects/v3/src/app/pages/home/home.page.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -446,10 +446,7 @@ describe('HomePage', () => {
component.activitySearchText = 'development';
component.filterActivities();

expect(component.filteredMilestones.length).toBe(1);
expect(component.filteredMilestones[0].id).toBe(2);
expect(component.filteredMilestones[0].activities.length).toBe(1);
expect(component.filteredMilestones[0].activities[0].id).toBe(3);
expect(component.filteredMilestones).toEqual([]);
});

it('should return empty milestones array when no activities match', () => {
Expand Down Expand Up @@ -506,9 +503,15 @@ describe('HomePage', () => {
component.activitySearchText = 'a';
component.filterActivities();

expect(component.filteredMilestones.length).toBe(2);
expect(component.filteredMilestones.length).toBe(1);
expect(component.filteredMilestones[0].activities.length).toBe(2);
expect(component.filteredMilestones[1].activities.length).toBe(1);
});

it('should skip locked activities even when they match search text', () => {
component.activitySearchText = 'task';
component.filterActivities();

expect(component.filteredMilestones).toEqual([]);
});

it('should trim whitespace from search text', () => {
Expand Down
12 changes: 8 additions & 4 deletions projects/v3/src/app/pages/home/home.page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked {
// default card image (gracefully show broken url)
defaultLeadImage: string = "";

lastVisitedActivityId: number = null;
lastVisitedActivityId?: number;
bookmarkedActivities: {
[key: number]: boolean;
} = {};
Expand All @@ -65,7 +65,7 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked {

// activity search/filter
activitySearchText = '';
filteredMilestones: Milestone[] = null;
filteredMilestones: Milestone[] | null = null;

// project brief data from team storage
projectBrief: ProjectBrief | null = null;
Expand Down Expand Up @@ -628,11 +628,15 @@ export class HomePage implements OnInit, OnDestroy, AfterViewChecked {
// filter milestones and their activities
this.filteredMilestones = this.milestones
.map(milestone => {
const filteredActivities = milestone.activities.filter(activity => {
const filteredActivities = milestone.activities?.filter(activity => {
if (activity?.isLocked) {
return false;
}

const titleMatch = activity.name?.toLowerCase().includes(searchText);
const descriptionMatch = activity.description?.toLowerCase().includes(searchText);
return titleMatch || descriptionMatch;
});
}) ?? [];

// only include milestone if it has matching activities
if (filteredActivities.length > 0) {
Expand Down
Loading