diff --git a/AngularApp/src/app/app.module.ts b/AngularApp/src/app/app.module.ts index 03932ba451693c3f0911bad4cc4f36f7553cbf02..f332ae98754c4fcedbbe1b730b64deb59cd7e788 100644 --- a/AngularApp/src/app/app.module.ts +++ b/AngularApp/src/app/app.module.ts @@ -7,7 +7,8 @@ import { AppRoutingModule } from './app.routing'; import { ComponentsModule } from './components/components.module'; import { AppComponent } from './app.component'; import { AdminLayoutComponent } from './layouts/admin-layout/admin-layout.component'; -// import { ExercisePageComponent } from './exercise-page/exercise-page.component'; +import { ExerciseStudentComponent } from './exercise-student/exercise-student.component'; +import { MaterialComponentsModule } from './material-components/material-components.module'; @NgModule({ imports: [ @@ -18,10 +19,12 @@ import { AdminLayoutComponent } from './layouts/admin-layout/admin-layout.compon ComponentsModule, RouterModule, AppRoutingModule, + MaterialComponentsModule ], declarations: [ AppComponent, AdminLayoutComponent, + ExerciseStudentComponent, ], providers: [], bootstrap: [AppComponent] diff --git a/AngularApp/src/app/components/sidebar/sidebar.component.ts b/AngularApp/src/app/components/sidebar/sidebar.component.ts index d5df9ccdda1a13929478e0d90a3e03dcfa9853b8..8a09e04ac01d3baa8ab353ebaa82252675e60f10 100644 --- a/AngularApp/src/app/components/sidebar/sidebar.component.ts +++ b/AngularApp/src/app/components/sidebar/sidebar.component.ts @@ -16,6 +16,7 @@ export const ROUTES: RouteInfo[] = [ // { path: '/icons', title: 'Icons', icon:'bubble_chart', class: '' }, // { path: '/maps', title: 'Maps', icon:'location_on', class: '' }, { path: '/notifications', title: 'Notifications', icon:'notifications', class: '' }, + { path: '/exercise-student', title: 'Exercise for Student', icon:'unarchive', class: '' }, { path: '/upgrade', title: 'Upgrade to PRO', icon:'unarchive', class: 'active-pro' }, ]; diff --git a/AngularApp/src/app/exercise-student/exercise-student.component.html b/AngularApp/src/app/exercise-student/exercise-student.component.html new file mode 100644 index 0000000000000000000000000000000000000000..c7eb79c49857f0002e54632f217efac8c2618f50 --- /dev/null +++ b/AngularApp/src/app/exercise-student/exercise-student.component.html @@ -0,0 +1,25 @@ +<div class="main-content"> + <div class="container-fluid"> + <div class="card"> + <div class="card-header card-header-danger"> + <h4 class="card-title ">TCP</h4> + <p class="card-category"> Technique de compilation</p> + </div> + <div class="card-body"> + <mat-form-field appearance="standard"> + <mat-label>Filter</mat-label> + <input matInput (keyup)="applyFilter($event)" placeholder="Search columns" #input> + </mat-form-field> + <table mat-table [dataSource]="dataSource" class="table"> + <ng-container [matColumnDef]="column" *ngFor="let column of displayedColumns"> + <th mat-header-cell *matHeaderCellDef>{{ column }}</th> + <td mat-cell *matCellDef="let emp">{{ emp[column] }}</td> + </ng-container> + + <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr> + <tr mat-row *matRowDef="let emprow; columns: displayedColumns"></tr> + </table> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/AngularApp/src/app/exercise-student/exercise-student.component.scss b/AngularApp/src/app/exercise-student/exercise-student.component.scss new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/AngularApp/src/app/exercise-student/exercise-student.component.spec.ts b/AngularApp/src/app/exercise-student/exercise-student.component.spec.ts new file mode 100644 index 0000000000000000000000000000000000000000..7346c2b10fdb9873c7f304d96f5399563d14b8b2 --- /dev/null +++ b/AngularApp/src/app/exercise-student/exercise-student.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExerciseStudentComponent } from './exercise-student.component'; + +describe('ExerciseStudentComponent', () => { + let component: ExerciseStudentComponent; + let fixture: ComponentFixture<ExerciseStudentComponent>; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ExerciseStudentComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ExerciseStudentComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/AngularApp/src/app/exercise-student/exercise-student.component.ts b/AngularApp/src/app/exercise-student/exercise-student.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5251f3d743deff73b26f2542bfdb4a6ea22cff9f --- /dev/null +++ b/AngularApp/src/app/exercise-student/exercise-student.component.ts @@ -0,0 +1,108 @@ +import { Component, OnInit } from '@angular/core'; +import { MatTableDataSource } from '@angular/material/table' +import { Employee, EmpFilter } from '../model/employees' + + +@Component({ + selector: 'app-exercise-student', + templateUrl: './exercise-student.component.html', + styleUrls: ['./exercise-student.component.scss'] +}) + +export class ExerciseStudentComponent implements OnInit { + + constructor() { } + displayedColumns: string[] = ['Id', 'FirstName', 'LastName', 'Email','Gender','JobTitle']; + genders: string[]=['All','Male','Female']; + jobtitles: string[]=['All','Support Analyst','Project Manager','Senior officer','Software Engineer']; + departments: string[]=['All','Support','Human Resources','Marketing','Engineering']; + empFilters: EmpFilter[]=[]; + defaultValue = "All"; + EmpData : Employee[] =[{ + "Id": 1, + "FirstName": "Johannah", + "LastName": "Kiffin", + "Email": "jkiffin0@google.pl", + "Gender": "F", + "JobTitle": "Administrative Assistant I" + }, { + "Id": 2, + "FirstName": "Eldin", + "LastName": "Astbery", + "Email": "eastbery1@geocities.jp", + "Gender": "M", + "JobTitle": "Senior Editor" + }, { + "Id": 3, + "FirstName": "Nahum", + "LastName": "Mounce", + "Email": "nmounce2@vk.com", + "Gender": "M", + "JobTitle": "Programmer II" + }, { + "Id": 4, + "FirstName": "Gallard", + "LastName": "Standell", + "Email": "gstandell3@europa.eu", + "Gender": "M", + "JobTitle": "Account Representative II" + }, { + "Id": 5, + "FirstName": "Koenraad", + "LastName": "Domleo", + "Email": "kdomleo4@cornell.edu", + "Gender": "M", + "JobTitle": "Quality Control Specialist" + }, { + "Id": 6, + "FirstName": "Uriah", + "LastName": "Turbat", + "Email": "uturbat5@aol.com", + "Gender": "M", + "JobTitle": "Accounting Assistant II" + }, { + "Id": 7, + "FirstName": "Waldemar", + "LastName": "Fowley", + "Email": "wfowley6@sun.com", + "Gender": "M", + "JobTitle": "Account Coordinator" + }, { + "Id": 8, + "FirstName": "Rodolfo", + "LastName": "Trenchard", + "Email": "rtrenchard7@yandex.ru", + "Gender": "M", + "JobTitle": "Data Coordiator" + }, { + "Id": 9, + "FirstName": "Konstance", + "LastName": "Dudek", + "Email": "kdudek8@techcrunch.com", + "Gender": "F", + "JobTitle": "Administrative Assistant I" + }, { + "Id": 10, + "FirstName": "Monti", + "LastName": "Perton", + "Email": "mperton9@youtube.com", + "Gender": "M", + "JobTitle": "Operator" + }]; + + dataSource = new MatTableDataSource(this.EmpData); + + applyFilter(event: Event) { + const filterValue = (event.target as HTMLInputElement).value; + this.dataSource.filter = filterValue.trim().toLowerCase(); + } + + ngOnInit(): void { + this.dataSource.filterPredicate = function (record,filter) { + return record.Gender.toLocaleLowerCase() == filter.toLocaleLowerCase(); + } + this.empFilters.push({name:'gender',options:this.genders,defaultValue:this.defaultValue}); + this.empFilters.push({name:'jobtitle',options:this.jobtitles,defaultValue:this.defaultValue}); + this.empFilters.push({name:'department',options:this.departments,defaultValue:this.defaultValue}); + } +} diff --git a/AngularApp/src/app/layouts/admin-layout/admin-layout.routing.ts b/AngularApp/src/app/layouts/admin-layout/admin-layout.routing.ts index a4f97e7f2b5d9f1d71dd78f8547848f8ef643791..f28dadb13f60eed736970b6644ee6b1fb79cc5ea 100644 --- a/AngularApp/src/app/layouts/admin-layout/admin-layout.routing.ts +++ b/AngularApp/src/app/layouts/admin-layout/admin-layout.routing.ts @@ -9,6 +9,7 @@ import { MapsComponent } from '../../maps/maps.component'; import { NotificationsComponent } from '../../notifications/notifications.component'; import { UpgradeComponent } from '../../upgrade/upgrade.component'; import { ExercisePageComponent } from '../../exercise-page/exercise-page.component'; +import { ExerciseStudentComponent } from 'app/exercise-student/exercise-student.component'; export const AdminLayoutRoutes: Routes = [ { path: 'dashboard', component: DashboardComponent }, @@ -19,5 +20,6 @@ export const AdminLayoutRoutes: Routes = [ { path: 'maps', component: MapsComponent }, { path: 'notifications', component: NotificationsComponent }, { path: 'exercise-page', component: ExercisePageComponent }, + { path: 'exercise-student', component: ExerciseStudentComponent }, { path: 'upgrade', component: UpgradeComponent }, ]; diff --git a/AngularApp/src/app/material-components/material-components.module.ts b/AngularApp/src/app/material-components/material-components.module.ts new file mode 100644 index 0000000000000000000000000000000000000000..647c67248b2934ab7336dcb7daea24cc43669a65 --- /dev/null +++ b/AngularApp/src/app/material-components/material-components.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import {MatTableModule} from '@angular/material/table'; +import {MatInputModule} from '@angular/material/input'; +import {MatSelectModule} from '@angular/material/select'; +import {MatCardModule} from '@angular/material/card'; + +@NgModule({ + declarations: [], + imports: [ + MatTableModule, + CommonModule, + MatInputModule, + MatSelectModule, + MatCardModule + ], + exports:[ + MatTableModule, + MatInputModule, + MatSelectModule, + MatCardModule + ] +}) +export class MaterialComponentsModule { } diff --git a/AngularApp/src/app/model/employees.ts b/AngularApp/src/app/model/employees.ts new file mode 100644 index 0000000000000000000000000000000000000000..21108866f5d5474d05735196565c00020fc655e0 --- /dev/null +++ b/AngularApp/src/app/model/employees.ts @@ -0,0 +1,14 @@ +export interface Employee { + Id : number, + FirstName:string, + LastName:string, + Email:string, + Gender:string, + JobTitle:string +} + +export interface EmpFilter { + name:string; + options:string[]; + defaultValue:string; +} \ No newline at end of file