diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 379a1f7..a6d0f3e 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -10,6 +10,8 @@ import { EmployeesComponent } from './components/employees/employees.component';
import { HomeComponent } from './components/home/home.component';
import { EmployeeAddComponent } from './components/employee-add/employee-add.component';
import { EmployeeEditComponent } from './components/employee-edit/employee-edit.component';
+import { EmployeesNavbarComponent } from './components/employees/employees-navbar/employees-navbar.component';
+import { EmployeesListComponent } from './components/employees/employees-list/employees-list.component';
@NgModule({
declarations: [
@@ -18,7 +20,9 @@ import { EmployeeEditComponent } from './components/employee-edit/employee-edit.
EmployeesComponent,
HomeComponent,
EmployeeAddComponent,
- EmployeeEditComponent
+ EmployeeEditComponent,
+ EmployeesNavbarComponent,
+ EmployeesListComponent
],
imports: [
BrowserModule,
diff --git a/src/app/components/employees/employees-list/employees-list.component.css b/src/app/components/employees/employees-list/employees-list.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/employees/employees-list/employees-list.component.html b/src/app/components/employees/employees-list/employees-list.component.html
new file mode 100644
index 0000000..759d1d2
--- /dev/null
+++ b/src/app/components/employees/employees-list/employees-list.component.html
@@ -0,0 +1,39 @@
+
+
+
+ Loading ...
+
+
+
+ {{result.errorMessage}}
+
+
+
+
+
+
+ | ID | Nom | Prenom | Role | Actions |
+
+
+
+
+ | {{p.id}} |
+ {{p.nom}} |
+ {{p.prenom}} |
+ {{p.role}} |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
diff --git a/src/app/components/employees/employees-list/employees-list.component.spec.ts b/src/app/components/employees/employees-list/employees-list.component.spec.ts
new file mode 100644
index 0000000..74b65cc
--- /dev/null
+++ b/src/app/components/employees/employees-list/employees-list.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EmployeesListComponent } from './employees-list.component';
+
+describe('EmployeesListComponent', () => {
+ let component: EmployeesListComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ EmployeesListComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EmployeesListComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/employees/employees-list/employees-list.component.ts b/src/app/components/employees/employees-list/employees-list.component.ts
new file mode 100644
index 0000000..1b9e097
--- /dev/null
+++ b/src/app/components/employees/employees-list/employees-list.component.ts
@@ -0,0 +1,32 @@
+import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
+import { AppDataState, DataStateEnum, EmployeeActionsTypes, ActEvent } from '../../../state/employee.state';
+import { Employee } from '../../../model/employee.model';
+import { Observable, of } from 'rxjs';
+
+@Component({
+ selector: 'app-employees-list',
+ templateUrl: './employees-list.component.html',
+ styleUrls: ['./employees-list.component.css']
+})
+export class EmployeesListComponent implements OnInit {
+ @Input() employeesInput$:Observable>|null=null;
+ @Output() evtEmit:EventEmitter=new EventEmitter();
+ readonly DataStateEnum=DataStateEnum;
+
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+ onDelete(val:Employee) {
+ this.evtEmit.emit({
+ type:EmployeeActionsTypes.DELETE_EMPLOYEE, payload:val
+ });
+ }
+
+ onEdit(val:Employee) {
+ this.evtEmit.emit({
+ type:EmployeeActionsTypes.EDIT_EMPLOYEE, payload:val
+ });
+ }
+}
diff --git a/src/app/components/employees/employees-navbar/employees-navbar.component.css b/src/app/components/employees/employees-navbar/employees-navbar.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/src/app/components/employees/employees-navbar/employees-navbar.component.html b/src/app/components/employees/employees-navbar/employees-navbar.component.html
new file mode 100644
index 0000000..5ab1ee7
--- /dev/null
+++ b/src/app/components/employees/employees-navbar/employees-navbar.component.html
@@ -0,0 +1,18 @@
+
diff --git a/src/app/components/employees/employees-navbar/employees-navbar.component.spec.ts b/src/app/components/employees/employees-navbar/employees-navbar.component.spec.ts
new file mode 100644
index 0000000..190ee45
--- /dev/null
+++ b/src/app/components/employees/employees-navbar/employees-navbar.component.spec.ts
@@ -0,0 +1,25 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { EmployeesNavbarComponent } from './employees-navbar.component';
+
+describe('EmployeesNavbarComponent', () => {
+ let component: EmployeesNavbarComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ declarations: [ EmployeesNavbarComponent ]
+ })
+ .compileComponents();
+ });
+
+ beforeEach(() => {
+ fixture = TestBed.createComponent(EmployeesNavbarComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/app/components/employees/employees-navbar/employees-navbar.component.ts b/src/app/components/employees/employees-navbar/employees-navbar.component.ts
new file mode 100644
index 0000000..8a299b4
--- /dev/null
+++ b/src/app/components/employees/employees-navbar/employees-navbar.component.ts
@@ -0,0 +1,28 @@
+import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
+import { EmployeeActionsTypes, ActEvent } from '../../../state/employee.state';
+
+@Component({
+ selector: 'app-employees-navbar',
+ templateUrl: './employees-navbar.component.html',
+ styleUrls: ['./employees-navbar.component.css']
+})
+export class EmployeesNavbarComponent implements OnInit {
+
+ @Output() evtEmit:EventEmitter=new EventEmitter();
+ constructor() { }
+
+ ngOnInit(): void {
+ }
+
+ onGetAllEmployees() {
+ this.evtEmit.emit({type:EmployeeActionsTypes.GET_ALL_EMPLOYEES});
+ }
+
+ onSearch(val:any) {
+ this.evtEmit.emit({type:EmployeeActionsTypes.SEARCH_EMPLOYEES, payload:val});
+ }
+
+ onNewEmployee() {
+ this.evtEmit.emit({type:EmployeeActionsTypes.NEW_EMPLOYEE});
+ }
+}
diff --git a/src/app/components/employees/employees.component.html b/src/app/components/employees/employees.component.html
index 6a1bee4..7cc757e 100644
--- a/src/app/components/employees/employees.component.html
+++ b/src/app/components/employees/employees.component.html
@@ -1,57 +1,2 @@
-
-
-
-
- Loading ...
-
-
-
- {{result.errorMessage}}
-
-
-
-
-
-
- | ID | Nom | Prenom | Role | Actions |
-
-
-
-
- | {{p.id}} |
- {{p.nom}} |
- {{p.prenom}} |
- {{p.role}} |
-
-
- |
-
-
- |
-
-
-
-
-
-
+
+
diff --git a/src/app/components/employees/employees.component.ts b/src/app/components/employees/employees.component.ts
index 15fb03a..9868e84 100644
--- a/src/app/components/employees/employees.component.ts
+++ b/src/app/components/employees/employees.component.ts
@@ -1,7 +1,7 @@
import { Component, OnInit } from '@angular/core';
import { EmployeesService } from '../../services/employees.service';
import { Employee } from '../../model/employee.model';
-import { AppDataState, DataStateEnum } from '../../state/employee.state';
+import { AppDataState, DataStateEnum, EmployeeActionsTypes, ActEvent } from '../../state/employee.state';
import { Observable, of } from 'rxjs';
import { catchError, map, startWith } from 'rxjs/operators';
import { Router } from '@angular/router';
@@ -12,46 +12,73 @@ import { Router } from '@angular/router';
styleUrls: ['./employees.component.css']
})
export class EmployeesComponent implements OnInit {
- employees$:Observable>|null=null;
- readonly DataStateEnum=DataStateEnum;
+ employees$:Observable>|null=null;
+ readonly DataStateEnum=DataStateEnum;
- constructor(private employeesService:EmployeesService, private router:Router) { }
+ constructor(private employeesService:EmployeesService, private router:Router) { }
- ngOnInit(): void {
- }
+ ngOnInit(): void { }
- onGetAllEmployees() {
- this.employees$=this.employeesService.getAllEmployees().pipe(
- map(data=>{
- return ({dataState:DataStateEnum.LOADED, data:data})
- }),
- startWith({dataState:DataStateEnum.LOADING}),
- catchError(err=>of({dataState: DataStateEnum.ERROR, errorMessage:err.message}))
- );
- }
+ onActionEvent($event: ActEvent) {
+ switch($event.type) {
+ case EmployeeActionsTypes.GET_ALL_EMPLOYEES: {
+ this.onGetAllEmployees();
+ break;
+ }
+ case EmployeeActionsTypes.SEARCH_EMPLOYEES: {
+ this.onSearch($event.payload);
+ break;
+ }
+ case EmployeeActionsTypes.NEW_EMPLOYEE: {
+ this.onNewEmployee();
+ break;
+ }
+ case EmployeeActionsTypes.EDIT_EMPLOYEE: {
+ this.onEdit($event.payload);
+ break;
+ }
+ case EmployeeActionsTypes.DELETE_EMPLOYEE: {
+ this.onDelete($event.payload);
+ break;
+ }
+ default: {
+ break;
+ }
+ }
+ }
- onSearch(val:any) {
- this.employees$=this.employeesService.searchEmployees(val.keyword).pipe(
- map(data=>{
- return ({dataState:DataStateEnum.LOADED, data:data})
- }),
- startWith({dataState:DataStateEnum.LOADING}),
- catchError(err=>of({dataState: DataStateEnum.ERROR, errorMessage:err.message}))
- );
- }
+ onGetAllEmployees() {
+ this.employees$=this.employeesService.getAllEmployees().pipe(
+ map(data=>{
+ return ({dataState:DataStateEnum.LOADED, data:data})
+ }),
+ startWith({dataState:DataStateEnum.LOADING}),
+ catchError(err=>of({dataState: DataStateEnum.ERROR, errorMessage:err.message}))
+ );
+ }
- onDelete(val:Employee) {
- this.employeesService.deleteEmployee(val).subscribe(
- data=>{
- this.onGetAllEmployees();
- });
- }
+ onSearch(val:any) {
+ this.employees$=this.employeesService.searchEmployees(val.keyword).pipe(
+ map(data=>{
+ return ({dataState:DataStateEnum.LOADED, data:data})
+ }),
+ startWith({dataState:DataStateEnum.LOADING}),
+ catchError(err=>of({dataState: DataStateEnum.ERROR, errorMessage:err.message}))
+ );
+ }
- onNewEmployee() {
- this.router.navigateByUrl("/newEmployee");
- }
+ onDelete(val:Employee) {
+ this.employeesService.deleteEmployee(val).subscribe(
+ data=>{
+ this.onGetAllEmployees();
+ });
+ }
- onEdit(val:Employee) {
- this.router.navigateByUrl("/editEmployee/"+val.id);
- }
+ onNewEmployee() {
+ this.router.navigateByUrl("/newEmployee");
+ }
+
+ onEdit(val:Employee) {
+ this.router.navigateByUrl("/editEmployee/"+val.id);
+ }
}
diff --git a/src/app/state/employee.state.ts b/src/app/state/employee.state.ts
index 9b94393..f328337 100644
--- a/src/app/state/employee.state.ts
+++ b/src/app/state/employee.state.ts
@@ -1,3 +1,16 @@
+export enum EmployeeActionsTypes {
+ GET_ALL_EMPLOYEES="[Employees] Get all employees",
+ SEARCH_EMPLOYEES="[Employees] Search employees",
+ NEW_EMPLOYEE="[Employees] New employee",
+ EDIT_EMPLOYEE="[Employees] Edit employee",
+ DELETE_EMPLOYEE="[Employees] Remove employee"
+}
+
+export interface ActEvent {
+ type:EmployeeActionsTypes,
+ payload?:any
+}
+
export enum DataStateEnum {
LOADING,
LOADED,