Skip to content

Commit 9505c1b

Browse files
committed
#3 search active projects in view projects
1 parent 9d861df commit 9505c1b

File tree

14 files changed

+1881
-1156
lines changed

14 files changed

+1881
-1156
lines changed

package-lock.json

Lines changed: 1715 additions & 1101 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
"zone.js": "~0.10.2"
2929
},
3030
"devDependencies": {
31-
"@angular-devkit/build-angular": "^0.900.5",
32-
"@angular/cli": "~9.0.4",
31+
"@angular-devkit/build-angular": "^0.901.0",
32+
"@angular/cli": "^9.1.0",
3333
"@angular/compiler-cli": "~9.0.3",
3434
"@angular/language-service": "~9.0.3",
3535
"@types/jasmine": "~3.5.0",

src/app/app.module.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import { GroupByDatePipe } from './modules/shared/pipes/group-by-date/group-by-d
2424
import { ActivitiesManagementComponent } from './modules/activities-management/pages/activities-management.component';
2525
import { ActivityListComponent } from './modules/activities-management/components/activity-list/activity-list.component';
2626
import { CreateActivityComponent } from './modules/activities-management/components/create-activity/create-activity.component';
27+
import { FilterProjectPipe } from './modules/shared/pipes/filter-project/filter-project.pipe';
28+
import { SearchProjectComponent } from './modules/shared/components/search-project/search-project.component';
2729

2830

2931
@NgModule({
@@ -47,7 +49,9 @@ import { CreateActivityComponent } from './modules/activities-management/compone
4749
GroupByDatePipe,
4850
ActivitiesManagementComponent,
4951
CreateActivityComponent,
50-
ActivityListComponent
52+
ActivityListComponent,
53+
FilterProjectPipe,
54+
SearchProjectComponent
5155
],
5256
imports: [
5357
CommonModule,

src/app/modules/project-management/components/create-project/create-project.component.html

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,23 @@ <h1 class="card-title">Project</h1>
55
<div class="form-group">
66
<label for="name">Name:</label>
77
<input class="form-control" id="name" type="text" formControlName="name" required>
8-
<p class="alert alert-danger" *ngIf="(name.dirty || name.touched) && name.invalid && name.errors.required">Name Project is required.</p>
8+
<p class="alert alert-danger" *ngIf="(name.dirty || name.touched) && name.invalid && name.errors.required">NameProject is required.</p>
99
</div>
1010

1111
<div class="form-group">
1212
<label for="details">Details:</label>
1313
<textarea class="form-control" rows="3" id="details" type="text" formControlName="details" required></textarea>
14-
<p class="alert alert-danger" *ngIf="(details.dirty || details.touched) && details.invalid && details.errors.required">Details Project is required.</p>
14+
<p class="alert alert-danger" *ngIf="(details.dirty || details.touched) && details.invalid && details.errors.required">Details Project is
15+
required.</p>
1516
</div>
1617

1718
<div class="form-group">
1819
<label for="status">Status:</label>
1920
<select class="form-control" formControlName="status">
2021
<option *ngFor="let status of projectStatus" [value]="status">{{status}}</option>
2122
</select>
22-
<p class="alert alert-danger" *ngIf="(status.dirty || status.touched) && status.invalid && status.errors.required">Status Project is required.</p>
23+
<p class="alert alert-danger" *ngIf="(status.dirty || status.touched) && status.invalid && status.errors.required">Status Project is required.
24+
</p>
2325
</div>
2426

2527
<div class="form-group form-check" [hidden]="!projectToEdit">
@@ -35,4 +37,4 @@ <h1 class="card-title">Project</h1>
3537
</div>
3638
</div>
3739
</form>
38-
</div>
40+
</div>

src/app/modules/project-management/components/project-list/project-list.component.html

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
<div class="card-body">
2+
<app-search-project (changeFilterProject)="filterProjects = $event"></app-search-project>
3+
<hr>
24
<div class="scroll">
35
<div class="accordion" id="accordionProject">
46
<div *ngIf="projects?.length > 0; else notShow">
5-
<div class="card" *ngFor="let project of projects; let rowIndex = index">
7+
<div class="card" *ngFor="let project of projects | filterProject:filterProjects; let rowIndex = index">
68
<div class="card-header">
79
<h2 class="mb-0">
810
<a type="button" data-toggle="collapse" [attr.data-target]="'#row'+rowIndex" [attr.aria-controls]="'row'+rowIndex">
911
{{project.name}}
1012
</a>
11-
<div class="btn-group float-right" role="group" >
13+
<div class="btn-group float-right" role="group">
1214
<i (click)="editProject.emit(project.id)" class="far fa-edit btn btn-link"></i>
1315
<i (click)="openModal(project)" data-toggle="modal" data-target="#deleteModal" class="far fa-trash-alt btn btn-link"></i>
1416
</div>
@@ -34,8 +36,5 @@ <h5>Completed project:</h5>
3436
</div>
3537
</div>
3638

37-
<app-modal *ngIf = "openDeleteModal" class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-hidden="true"
38-
[list] = "projectToDelete"
39-
(removeList) = "removeProject($event)"
40-
>
41-
</app-modal>
39+
<app-modal *ngIf="openDeleteModal" class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-hidden="true" [list]="projectToDelete" (removeList)="removeProject($event)">
40+
</app-modal>

src/app/modules/project-management/components/project-list/project-list.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ export class ProjectListComponent implements OnInit {
2121
projectToDelete: Project;
2222
openDeleteModal = false;
2323

24+
filterProjects: string = '';
25+
2426
constructor() { }
2527

2628
ngOnInit(): void {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<div class="form-group">
2+
<input (keyup)="changeFilterValue()" type="text" class="form-control" placeholder="&#xF002; Search active projects..." name="filterProject" [(ngModel)]="filterProject" style="font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif, FontAwesome">
3+
</div>

src/app/modules/shared/components/search-project/search-project.component.scss

Whitespace-only changes.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { SearchProjectComponent } from './search-project.component';
4+
5+
describe('SearchProjectComponent', () => {
6+
let component: SearchProjectComponent;
7+
let fixture: ComponentFixture<SearchProjectComponent>;
8+
9+
beforeEach(async(() => {
10+
TestBed.configureTestingModule({
11+
declarations: [SearchProjectComponent]
12+
})
13+
.compileComponents();
14+
}));
15+
16+
beforeEach(() => {
17+
fixture = TestBed.createComponent(SearchProjectComponent);
18+
component = fixture.componentInstance;
19+
fixture.detectChanges();
20+
});
21+
22+
it('should create', () => {
23+
expect(component).toBeTruthy();
24+
});
25+
26+
it('called method', () => {
27+
component.changeFilterProject.emit('angular');
28+
component.filterProject = 'angular';
29+
component.changeFilterValue();
30+
expect(component.filterProject).toEqual('angular');
31+
});
32+
});
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
2+
3+
@Component({
4+
selector: 'app-search-project',
5+
templateUrl: './search-project.component.html',
6+
styleUrls: ['./search-project.component.scss']
7+
})
8+
export class SearchProjectComponent implements OnInit {
9+
10+
filterProject: string;
11+
@Output() changeFilterProject = new EventEmitter();
12+
13+
constructor() { }
14+
15+
ngOnInit(): void {
16+
}
17+
18+
changeFilterValue() {
19+
this.changeFilterProject.emit(this.filterProject);
20+
}
21+
22+
}

0 commit comments

Comments
 (0)