noch einmal
This commit is contained in:
parent
3c0d400505
commit
5f3a5605fe
9
src/app/Pruefungsergebnis.ts
Normal file
9
src/app/Pruefungsergebnis.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
export class Pruefungsergebnis{
|
||||||
|
apprenticeid?: number;
|
||||||
|
examid?: number;
|
||||||
|
firstname?: string;
|
||||||
|
lastname?: string;
|
||||||
|
date_of_exam?: Date;
|
||||||
|
acquired?: number;
|
||||||
|
}
|
||||||
|
|
6
src/app/Userlogin.ts
Normal file
6
src/app/Userlogin.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export class Userlogin {
|
||||||
|
id?: number;
|
||||||
|
login?: string;
|
||||||
|
name?: string;
|
||||||
|
email?: string;
|
||||||
|
}
|
@ -40,6 +40,11 @@ import { DashComponent } from './dash/dash.component';
|
|||||||
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
||||||
import { LoginComponent } from './login/login.component'
|
import { LoginComponent } from './login/login.component'
|
||||||
import {MatCardModule} from '@angular/material/card';
|
import {MatCardModule} from '@angular/material/card';
|
||||||
|
import { PrergebnisComponent } from './prergebnis/prergebnis.component';
|
||||||
|
import { MatOption } from '@angular/material/core';
|
||||||
|
import { MatSelectModule } from '@angular/material/select';
|
||||||
|
import { PruefungsergebnisComponent } from './pruefungsergebnis/pruefungsergebnis.component';
|
||||||
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
@ -61,7 +66,9 @@ import {MatCardModule} from '@angular/material/card';
|
|||||||
MatTableModule,
|
MatTableModule,
|
||||||
DragDropModule,
|
DragDropModule,
|
||||||
NgbModule,
|
NgbModule,
|
||||||
MatCardModule
|
MatCardModule,
|
||||||
|
MatSelectModule,
|
||||||
|
MatDatepickerModule
|
||||||
],
|
],
|
||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
@ -83,7 +90,9 @@ import {MatCardModule} from '@angular/material/card';
|
|||||||
Lehrling2berufComponent,
|
Lehrling2berufComponent,
|
||||||
AusbildungComponent,
|
AusbildungComponent,
|
||||||
DashComponent,
|
DashComponent,
|
||||||
LoginComponent
|
LoginComponent,
|
||||||
|
PrergebnisComponent,
|
||||||
|
PruefungsergebnisComponent
|
||||||
],
|
],
|
||||||
providers: [],
|
providers: [],
|
||||||
bootstrap: [
|
bootstrap: [
|
||||||
|
@ -13,6 +13,7 @@ import { EditLehrlingeComponent } from "./edit-lehrlinge/edit-lehrlinge.componen
|
|||||||
import { Lehrling2berufComponent } from "./lehrling2beruf/lehrling2beruf.component";
|
import { Lehrling2berufComponent } from "./lehrling2beruf/lehrling2beruf.component";
|
||||||
import { DashComponent } from "./dash/dash.component";
|
import { DashComponent } from "./dash/dash.component";
|
||||||
import { LoginComponent } from "./login/login.component";
|
import { LoginComponent } from "./login/login.component";
|
||||||
|
import { PrergebnisComponent } from "./prergebnis/prergebnis.component";
|
||||||
|
|
||||||
export const APP_ROUTES: Routes = [
|
export const APP_ROUTES: Routes = [
|
||||||
{
|
{
|
||||||
@ -53,6 +54,10 @@ export const APP_ROUTES: Routes = [
|
|||||||
path: 'pruefung',
|
path: 'pruefung',
|
||||||
component: PruefungComponent
|
component: PruefungComponent
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'pruefungergebnis',
|
||||||
|
component: PrergebnisComponent
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'modul',
|
path: 'modul',
|
||||||
component: ModulComponent
|
component: ModulComponent
|
||||||
|
@ -1,24 +1,31 @@
|
|||||||
<mat-card class="login-card col-3 float-left">
|
<mat-card class="login-card col-4 float-left">
|
||||||
<mat-card-title class="kopf p-3">
|
<mat-card-title class="kopf p-3">
|
||||||
Anmelden
|
Anmelden
|
||||||
</mat-card-title>
|
</mat-card-title>
|
||||||
<mat-card-content >
|
<mat-card-content >
|
||||||
<form class="my-form">
|
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()" class="my-form col-12">
|
||||||
<div class="row ">
|
<div class="row ">
|
||||||
<mat-form-field class="full-width">
|
<mat-form-field class="full-width">
|
||||||
<mat-label>E-Mail</mat-label>
|
<mat-label>Login</mat-label>
|
||||||
<input matInput placeholder="E-Mail eingeben" name="email">
|
<input class="col-12" matInput formControlName="login"
|
||||||
|
placeholder="Benutzername oder E-Mail eingeben"
|
||||||
|
autocomlete="off" name="login">
|
||||||
|
<div class="error" *ngIf="loginForm.controls['login'].hasError('required') && loginForm.controls['login'].touched">Bitte eine gültige E-Mail Adresse eingeben!</div>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<mat-form-field class="full-width">
|
<mat-form-field class="full-width">
|
||||||
<mat-label>Passwort</mat-label>
|
<mat-label>Passwort</mat-label>
|
||||||
<input type="password" matInput placeholder="Passwort eingeben" name="password">
|
<input type="password" matInput formControlName="password" placeholder="Passwort eingeben" name="password">
|
||||||
|
<div class="error" *ngIf="loginForm.controls['password'].hasError('required') && loginForm.controls['password'].touched">Bitte ein Passwort eingeben!</div>
|
||||||
</mat-form-field>
|
</mat-form-field>
|
||||||
</div>
|
</div>
|
||||||
|
<mat-card-actions>
|
||||||
|
<div class="error" *ngIf="invalidLogin">
|
||||||
|
<div *ngIf="invalidLogin">Ungültige E-Mail oder falsches Passwort eingegeben! Bitte noch einmal.</div>
|
||||||
|
</div>
|
||||||
|
<button class="btn btn-success btn-default ml-3 mb-2" mat-raised-button [disabled]="loginForm.invalid" color="primary">Anmelden</button>
|
||||||
|
</mat-card-actions>
|
||||||
</form>
|
</form>
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
<mat-card-actions>
|
|
||||||
<button mat-raised-button (click)="login()" color="primary">Anmelden</button>
|
|
||||||
</mat-card-actions>
|
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
||||||
import { MatCardModule } from '@angular/material/card';
|
import { MatCardModule } from '@angular/material/card';
|
||||||
|
import { Router } from '@angular/router';
|
||||||
|
import { LoginService } from '../services/login.service';
|
||||||
|
import { Userlogin } from '../Userlogin';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-login',
|
selector: 'app-login',
|
||||||
@ -8,12 +12,47 @@ import { MatCardModule } from '@angular/material/card';
|
|||||||
})
|
})
|
||||||
export class LoginComponent implements OnInit {
|
export class LoginComponent implements OnInit {
|
||||||
|
|
||||||
constructor() { }
|
loginForm: any;
|
||||||
|
invalidLogin: boolean = false;
|
||||||
|
message: any;
|
||||||
|
|
||||||
|
constructor(private formBuilder: FormBuilder, private router: Router, private loginService: LoginService) { }
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
|
this.loginForm = this.formBuilder.group({
|
||||||
|
login: ['', Validators.compose([Validators.required])],
|
||||||
|
password: ['', Validators.required]
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
login() {
|
onSubmit() {
|
||||||
|
|
||||||
|
console.log(this.loginForm.value);
|
||||||
|
|
||||||
|
|
||||||
|
if(this.loginForm.invalid)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const logindata = {
|
||||||
|
login: this.loginForm.controls.login.value,
|
||||||
|
password: this.loginForm.controls.password.value
|
||||||
|
};
|
||||||
|
|
||||||
|
this.loginService.login(logindata).subscribe((data: any) => {
|
||||||
|
console.log(data);
|
||||||
|
this.message = data.message;
|
||||||
|
|
||||||
|
if(data.token) {
|
||||||
|
window.localStorage.setItem('token', data.token);
|
||||||
|
this.router.navigate(['dash']);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.invalidLogin = true;
|
||||||
|
alert(data.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
17
src/app/prergebnis/prergebnis.component.css
Normal file
17
src/app/prergebnis/prergebnis.component.css
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
.demo-table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-is-clicked {
|
||||||
|
color: red;
|
||||||
|
background-color: #fdf9e9;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-row.hovered {
|
||||||
|
background: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-row.highlighted {
|
||||||
|
background: #fdf9e9;
|
||||||
|
}
|
114
src/app/prergebnis/prergebnis.component.html
Normal file
114
src/app/prergebnis/prergebnis.component.html
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<div class="container col-12 float-left">
|
||||||
|
<div class="row">
|
||||||
|
<div class="auswahl col-6">
|
||||||
|
<mat-form-field>
|
||||||
|
<mat-label>Ergebnis zuordnen</mat-label>
|
||||||
|
<mat-select [(ngModel)]="displayType" (ngModelChange)="onChange(displayType)">
|
||||||
|
<mat-option *ngFor="let type of selectType" [value]="type.value">
|
||||||
|
{{type.text}}
|
||||||
|
</mat-option>
|
||||||
|
</mat-select>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="prueffilter col-6">
|
||||||
|
<mat-form-field class="pl-4" appearance="standard">
|
||||||
|
<mat-label>Filter</mat-label>
|
||||||
|
<input matInput (keyup)="applypruefFilter($event)" placeholder="Suchbegriff" #input>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
<div class="personfilter col-6">
|
||||||
|
<mat-form-field class="pl-4" appearance="standard">
|
||||||
|
<mat-label>Filter</mat-label>
|
||||||
|
<input matInput (keyup)="applypersonFilter($event)" placeholder="Suchbegriff" #input>
|
||||||
|
</mat-form-field>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row col-12">
|
||||||
|
<div class="person col-6">
|
||||||
|
<table mat-table [dataSource]="dataSource" matSort (matSortChange)="announceSortChange($event)" class="mat-elevation-z8">
|
||||||
|
<!-- Checkbox Column -->
|
||||||
|
<!-- <ng-container matColumnDef="select">
|
||||||
|
<mat-header-cell class="kopf col-1" *matHeaderCellDef></mat-header-cell>
|
||||||
|
<mat-cell class="align-bottom" *matCellDef="let pruerow">
|
||||||
|
<mat-checkbox class="pt-3" (click)="$event.stopPropagation()" (change)="selectHandler(pruerow)"
|
||||||
|
[checked]="selection.isSelected(pruerow)">
|
||||||
|
</mat-checkbox>
|
||||||
|
</mat-cell>
|
||||||
|
</ng-container>
|
||||||
|
-->
|
||||||
|
<ng-container matColumnDef="examid">
|
||||||
|
<th class="kopf col-1" mat-header-cell *matHeaderCellDef> ID </th>
|
||||||
|
<td mat-cell *matCellDef="let prue"> {{prue.examid}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="examshort">
|
||||||
|
<th class="kopf col-2" mat-sort-header mat-header-cell *matHeaderCellDef> Prüfung </th>
|
||||||
|
<td mat-cell *matCellDef="let prue"> {{prue.examshort}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="examname">
|
||||||
|
<th class="kopf col-3" mat-sort-header mat-header-cell *matHeaderCellDef> Name </th>
|
||||||
|
<td mat-cell *matCellDef="let prue"> {{prue.examname}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="examdescription">
|
||||||
|
<th class="kopf col-5" mat-sort-header mat-header-cell *matHeaderCellDef> Beschreibung </th>
|
||||||
|
<td mat-cell *matCellDef="let prue"> {{prue.examdescription}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
|
||||||
|
<tr mat-row
|
||||||
|
*matRowDef="let pruerow; columns: displayedColumns;"
|
||||||
|
(click)="selectHandler(pruerow)" (change)="selectHandler(pruerow)"
|
||||||
|
[ngClass]="{hovered: pruerow.hovered, highlighted: selection.isSelected(pruerow)}"
|
||||||
|
(mouseover)="pruerow.hovered = true" (mouseout)="pruerow.hovered = false"></tr>
|
||||||
|
</table>
|
||||||
|
<mat-paginator class="mat-elevation-z8 mt-3" #paginator [pageSizeOptions]="[5, 10, 20, 30]" showFirstLastButtons></mat-paginator>
|
||||||
|
</div>
|
||||||
|
<div class="pruef col-6">
|
||||||
|
<table mat-table [dataSource]="ergdataSource" matSort (matSortChange)="ergannounceSortChange($event)" class="mat-elevation-z8">
|
||||||
|
<!-- Checkbox Column -->
|
||||||
|
<!-- <ng-container matColumnDef="select">
|
||||||
|
<mat-header-cell class="kopf col-1" *matHeaderCellDef></mat-header-cell>
|
||||||
|
<mat-cell class="align-bottom" *matCellDef="let pruerow">
|
||||||
|
<mat-checkbox class="pt-3" (click)="$event.stopPropagation()" (change)="selectHandler(pruerow)"
|
||||||
|
[checked]="selection.isSelected(pruerow)">
|
||||||
|
</mat-checkbox>
|
||||||
|
</mat-cell>
|
||||||
|
</ng-container>
|
||||||
|
-->
|
||||||
|
<ng-container matColumnDef="firstname">
|
||||||
|
<th class="kopf col-4" mat-sort-header mat-header-cell *matHeaderCellDef> Vorname </th>
|
||||||
|
<td mat-cell *matCellDef="let pers"> {{pers.firstname}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="lastname">
|
||||||
|
<th class="kopf col-4" mat-sort-header mat-header-cell *matHeaderCellDef> Nachname </th>
|
||||||
|
<td mat-cell *matCellDef="let pers"> {{pers.lastname}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="date_of_exam">
|
||||||
|
<th class="kopf col-2" mat-sort-header mat-header-cell *matHeaderCellDef> Datum </th>
|
||||||
|
<td mat-cell *matCellDef="let pers"> {{pers.date_of_exam}} </td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="acquired">
|
||||||
|
<th class="kopf text-right col-2" mat-sort-header mat-header-cell *matHeaderCellDef> Bestanden </th>
|
||||||
|
<td mat-cell class="text-center" *matCellDef="let pers">{{pers.acquired}}
|
||||||
|
<!-- <div *ngIf="1">
|
||||||
|
<img src="../../assets/icons/ok.png">
|
||||||
|
</div> -->
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
<tr mat-header-row *matHeaderRowDef="ergdisplayedColumns"></tr>
|
||||||
|
<tr mat-row
|
||||||
|
*matRowDef="let persrow; columns: ergdisplayedColumns;"
|
||||||
|
(click)="selectHandler(persrow)" (change)="selectHandler(persrow)"
|
||||||
|
[ngClass]="{hovered: persrow.hovered, highlighted: selection.isSelected(persrow)}"
|
||||||
|
(mouseover)="persrow.hovered = true" (mouseout)="persrow.hovered = false"></tr>
|
||||||
|
</table>
|
||||||
|
<mat-paginator class="mat-elevation-z8 mt-3" #ergpaginator [pageSizeOptions]="[5, 10, 20, 50]" showFirstLastButtons></mat-paginator>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h3>
|
||||||
|
Ausgewählt:
|
||||||
|
</h3>
|
||||||
|
{{selection.selected | json}}
|
||||||
|
</div>
|
||||||
|
</div>
|
23
src/app/prergebnis/prergebnis.component.spec.ts
Normal file
23
src/app/prergebnis/prergebnis.component.spec.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PrergebnisComponent } from './prergebnis.component';
|
||||||
|
|
||||||
|
describe('PrergebnisComponent', () => {
|
||||||
|
let component: PrergebnisComponent;
|
||||||
|
let fixture: ComponentFixture<PrergebnisComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ PrergebnisComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(PrergebnisComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
152
src/app/prergebnis/prergebnis.component.ts
Normal file
152
src/app/prergebnis/prergebnis.component.ts
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
import { LiveAnnouncer } from '@angular/cdk/a11y';
|
||||||
|
import { SelectionModel } from '@angular/cdk/collections';
|
||||||
|
import { Component, OnInit, ViewChild } from '@angular/core';
|
||||||
|
import { MatPaginator } from '@angular/material/paginator';
|
||||||
|
import { MatSort, Sort } from '@angular/material/sort';
|
||||||
|
import { MatTableDataSource } from '@angular/material/table';
|
||||||
|
import { Pruefung } from '../Pruefung';
|
||||||
|
import { PruefungService } from '../services/pruefung.service';
|
||||||
|
import {MatSelectModule} from '@angular/material/select';
|
||||||
|
import { PruefungsergebnisService } from '../services/pruefungsergebnis.service';
|
||||||
|
import { Pruefungsergebnis } from '../Pruefungsergebnis';
|
||||||
|
|
||||||
|
export enum SelectType {
|
||||||
|
single,
|
||||||
|
multiple
|
||||||
|
}
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-prergebnis',
|
||||||
|
templateUrl: './prergebnis.component.html',
|
||||||
|
styleUrls: ['./prergebnis.component.css']
|
||||||
|
})
|
||||||
|
|
||||||
|
export class PrergebnisComponent implements OnInit {
|
||||||
|
|
||||||
|
constructor(private Pruefung: PruefungService,
|
||||||
|
private pruefungsergebnis: PruefungsergebnisService,
|
||||||
|
private _liveAnnouncer: LiveAnnouncer,
|
||||||
|
private _ergliveAnnouncer: LiveAnnouncer) { }
|
||||||
|
|
||||||
|
|
||||||
|
public dataSource: any;
|
||||||
|
public ergdataSource: any;
|
||||||
|
public pruefungen: any;
|
||||||
|
public pruefergebnisse: any;
|
||||||
|
public angewaehlt: any;
|
||||||
|
public ergangewaehlt: any;
|
||||||
|
public abgewählt: any;
|
||||||
|
|
||||||
|
displayedColumns: any = [ "examid", "examshort", "examname", "examdescription"];
|
||||||
|
ergdisplayedColumns: any = [ "firstname", "lastname", "date_of_exam", "acquired"];
|
||||||
|
selection = new SelectionModel<Pruefung>(true, []);
|
||||||
|
ergselection = new SelectionModel<Pruefungsergebnis>(true, []);
|
||||||
|
displayType = SelectType.single;
|
||||||
|
|
||||||
|
//clickedRows = new Set<Pruefung>();
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
|
||||||
|
this.Pruefung.getPruefungen().subscribe(
|
||||||
|
(
|
||||||
|
data: any) => {
|
||||||
|
// console.log(data);
|
||||||
|
this.pruefungen = data.exam;
|
||||||
|
this.dataSource = new MatTableDataSource(this.pruefungen);
|
||||||
|
this.dataSource.paginator = this.paginator;
|
||||||
|
this.dataSource.sort = this.sort;
|
||||||
|
})
|
||||||
|
this.pruefungsergebnis.getPruefergebnisse().subscribe(
|
||||||
|
(
|
||||||
|
data: any) => {
|
||||||
|
// console.log(data);
|
||||||
|
this.pruefergebnisse = data;
|
||||||
|
this.ergdataSource = new MatTableDataSource(this.pruefergebnisse);
|
||||||
|
this.ergdataSource.ergpaginator = this.ergpaginator;
|
||||||
|
this.ergdataSource.sort = this.sort;
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
selectHandler(row: Pruefung) {
|
||||||
|
if (this.displayType == SelectType.single) {
|
||||||
|
if (!this.selection.isSelected(row)) {
|
||||||
|
this.selection.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.selection.toggle(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
ergselectHandler(row: Pruefungsergebnis) {
|
||||||
|
if (this.displayType == SelectType.single) {
|
||||||
|
if (!this.ergselection.isSelected(row)) {
|
||||||
|
this.ergselection.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.ergselection.toggle(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
onChange(typeValue: number) {
|
||||||
|
this.displayType = typeValue;
|
||||||
|
this.selection.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
selectType = [
|
||||||
|
{ text: "Einfachauswahl", value: SelectType.single },
|
||||||
|
{ text: "Mehrfachauswahl", value: SelectType.multiple }
|
||||||
|
];
|
||||||
|
|
||||||
|
@ViewChild('paginator') paginator: MatPaginator;
|
||||||
|
@ViewChild('ergpaginator') ergpaginator: MatPaginator;
|
||||||
|
@ViewChild(MatSort) sort: MatSort;
|
||||||
|
@ViewChild(MatSort) ergsort: MatSort;
|
||||||
|
|
||||||
|
ngAfterViewInit() {
|
||||||
|
if(this.ergdataSource != undefined) {
|
||||||
|
this.ergdataSource.ergpaginator = this.ergpaginator;
|
||||||
|
this.ergdataSource.ergsort = this.ergsort;
|
||||||
|
console.log(this.ergdataSource);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
console.log("Erg Datasource ist undefined in AfterViewInit");
|
||||||
|
|
||||||
|
if(this.dataSource != undefined) {
|
||||||
|
this.dataSource.paginator = this.paginator;
|
||||||
|
this.dataSource.sort = this.sort;
|
||||||
|
console.log(this.dataSource);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
console.log("DataSource undefined in AfterViewInit");
|
||||||
|
}
|
||||||
|
onclick(pruerow: any) {
|
||||||
|
this.angewaehlt = pruerow;
|
||||||
|
console.log(this.angewaehlt);
|
||||||
|
}
|
||||||
|
|
||||||
|
applypruefFilter(event: Event) {
|
||||||
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
this.dataSource.filter = filterValue.trim().toLowerCase();
|
||||||
|
console.log("Filter: " + this.dataSource.filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
applypersonFilter(event: Event) {
|
||||||
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
this.ergdataSource.filter = filterValue.trim().toLowerCase();
|
||||||
|
console.log("Filter: " + this.ergdataSource.filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Announce the change in sort state for assistive technology. */
|
||||||
|
announceSortChange(sortState: Sort) {
|
||||||
|
if (sortState.direction) {
|
||||||
|
this._liveAnnouncer.announce(`Sorted ${sortState.direction}ending`);
|
||||||
|
} else {
|
||||||
|
this._liveAnnouncer.announce('Sorting cleared');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ergannounceSortChange(ergsortState: Sort) {
|
||||||
|
if (ergsortState.direction) {
|
||||||
|
this._ergliveAnnouncer.announce(`Sorted ${ergsortState.direction}ending`);
|
||||||
|
} else {
|
||||||
|
this._ergliveAnnouncer.announce('Sorting cleared');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
<p>pruefungsergebnis works!</p>
|
@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PruefungsergebnisComponent } from './pruefungsergebnis.component';
|
||||||
|
|
||||||
|
describe('PruefungsergebnisComponent', () => {
|
||||||
|
let component: PruefungsergebnisComponent;
|
||||||
|
let fixture: ComponentFixture<PruefungsergebnisComponent>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
declarations: [ PruefungsergebnisComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(PruefungsergebnisComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
15
src/app/pruefungsergebnis/pruefungsergebnis.component.ts
Normal file
15
src/app/pruefungsergebnis/pruefungsergebnis.component.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-pruefungsergebnis',
|
||||||
|
templateUrl: './pruefungsergebnis.component.html',
|
||||||
|
styleUrls: ['./pruefungsergebnis.component.css']
|
||||||
|
})
|
||||||
|
export class PruefungsergebnisComponent implements OnInit {
|
||||||
|
|
||||||
|
constructor() { }
|
||||||
|
|
||||||
|
ngOnInit(): void {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
16
src/app/services/login.service.spec.ts
Normal file
16
src/app/services/login.service.spec.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { LoginService } from './login.service';
|
||||||
|
|
||||||
|
describe('LoginService', () => {
|
||||||
|
let service: LoginService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(LoginService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
20
src/app/services/login.service.ts
Normal file
20
src/app/services/login.service.ts
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
import { HttpSentEvent } from '@angular/common/http';
|
||||||
|
import { Userlogin } from '../Userlogin';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class LoginService {
|
||||||
|
|
||||||
|
constructor(private http: HttpClient) { }
|
||||||
|
baseUrl = "http://localhost/bildungdb/api";
|
||||||
|
|
||||||
|
login(logindata): any {
|
||||||
|
const strloginapi = this.baseUrl + '/login.php';
|
||||||
|
console.log(strloginapi);
|
||||||
|
return this.http.get<Userlogin>(this.baseUrl + '/login.php', logindata);
|
||||||
|
}
|
||||||
|
}
|
16
src/app/services/pruefungsergebnis.service.spec.ts
Normal file
16
src/app/services/pruefungsergebnis.service.spec.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
import { TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { PruefungsergebnisService } from './pruefungsergebnis.service';
|
||||||
|
|
||||||
|
describe('PruefungsergebnisService', () => {
|
||||||
|
let service: PruefungsergebnisService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({});
|
||||||
|
service = TestBed.inject(PruefungsergebnisService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
18
src/app/services/pruefungsergebnis.service.ts
Normal file
18
src/app/services/pruefungsergebnis.service.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { Pruefungsergebnis } from '../Pruefungsergebnis';
|
||||||
|
|
||||||
|
@Injectable({
|
||||||
|
providedIn: 'root'
|
||||||
|
})
|
||||||
|
export class PruefungsergebnisService {
|
||||||
|
|
||||||
|
public $url = "http://localhost/bildungdb/api/pruefungsergebnis.php";
|
||||||
|
|
||||||
|
constructor(private http: HttpClient) { }
|
||||||
|
|
||||||
|
getPruefergebnisse() {
|
||||||
|
return this.http.get<Pruefungsergebnis[]>(this.$url);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -42,6 +42,13 @@
|
|||||||
<p>Prüfung</p>
|
<p>Prüfung</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li routerLinkActive="active">
|
||||||
|
<a routerLink="pruefungergebnis">
|
||||||
|
<p>Prüfungsergebnis</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li routerLinkActive="active">
|
<li routerLinkActive="active">
|
||||||
<a routerLink="l2b">
|
<a routerLink="l2b">
|
||||||
<p>Lehrling zu Beruf</p>
|
<p>Lehrling zu Beruf</p>
|
||||||
|
BIN
src/assets/icons/fehler.png
Normal file
BIN
src/assets/icons/fehler.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.8 KiB |
BIN
src/assets/icons/ok.png
Normal file
BIN
src/assets/icons/ok.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.6 KiB |
Loading…
Reference in New Issue
Block a user