Projekt

Obecné

Profil

« Předchozí | Další » 

Revize eeebda1e

Přidáno uživatelem Václav Jirák před téměř 6 roky(ů)

  • ID eeebda1ee6aa90afc941a899fd5f50af2e7de400
  • Rodič bdca9f6d

Re #7458 Basic features of add days off component implemented

Zobrazit rozdíly:

webapp/src/app/add-days-off-dialog/add-days-off-dialog.component.html
1
<h1 mat-dialog-title>Dialog</h1>
1
<h1 mat-dialog-title>Výběr volna</h1>
2 2

  
3 3
<div mat-dialog-content>
4
  Data: {{data.foo}}
4
  <div>
5
    <label id="days-off-type-radio-group-label" class="dialog-label">Typ volna</label>
6
    <mat-radio-group aria-labelledby="days-off-type-radio-group-label" class="days-off-type-radio-group" [(ngModel)]="selectedDaysOffType">
7
      <mat-radio-button class="days-off-type-radio-button" *ngFor="let type of daysOffTypes" [value]="type" >
8
        {{type}}
9
      </mat-radio-button>
10
    </mat-radio-group>
11
  </div>
12

  
13
  <div class="datetime-interval">
14
    <div class="from-datetime">
15
      <label for="from-datetime-input" class="dialog-label">Od:</label>
16
      <div class="datetime-picker">
17
        <mat-form-field>
18
          <input id="from-datetime-input" matInput [matDatepicker]="startDatePicker" [(ngModel)]="data.fromDate">
19
          <mat-datepicker-toggle matSuffix [for]="startDatePicker"></mat-datepicker-toggle>
20
          <mat-datepicker #startDatePicker></mat-datepicker>
21
        </mat-form-field>
22
        <ngb-timepicker [(ngModel)]="data.fromTime" [minuteStep]="MINUTE_STEP"></ngb-timepicker>
23
      </div>
24
    </div>
25

  
26
    <div class="to-datetime">
27
      <label for="to-datetime-input" class="dialog-label">Do:</label>
28
      <div class="datetime-picker">
29
        <mat-form-field>
30
          <input id="to-datetime-input" matInput [matDatepicker]="endDatePicker" [(ngModel)]="data.toDate">
31
          <mat-datepicker-toggle matSuffix [for]="endDatePicker"></mat-datepicker-toggle>
32
          <mat-datepicker #endDatePicker></mat-datepicker>
33
        </mat-form-field>
34
        <ngb-timepicker [(ngModel)]="data.toTime" [minuteStep]="MINUTE_STEP"></ngb-timepicker>
35
      </div>
36
    </div>
37
  </div>
5 38
</div>
6 39

  
7
<div mat-dialog-actions>
8
  <button mat-button (click)="onCloseClick()">Close</button>
40
<div mat-dialog-actions align="end">
41
  <button mat-raised-button color="primary" (click)="onConfirmClick()">Potvrdit</button>
42
  <button mat-raised-button color="basic" (click)="onCloseClick()">Zavřít</button>
9 43
</div>
webapp/src/app/add-days-off-dialog/add-days-off-dialog.component.sass
1
.dialog-label
2
  display: block
3
  font-weight: bold
4

  
5
.datetime-picker > *
6
  display: table-cell
7

  
8
.days-off-type-radio-group
9
  display: flex
10
  flex-direction: column
11
  margin: 15px 0
webapp/src/app/add-days-off-dialog/add-days-off-dialog.component.ts
1 1
import { Component, Inject } from '@angular/core';
2
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
2
import { MAT_DIALOG_DATA, MatDialogRef, MatSnackBar } from '@angular/material';
3
import { FormControl } from '@angular/forms';
3 4

  
4 5
@Component({
5 6
  selector: 'app-add-days-off-dialog',
......
7 8
  styleUrls: ['./add-days-off-dialog.component.sass']
8 9
})
9 10
export class AddDaysOffDialogComponent {
11
  MINUTE_STEP = 15;
12

  
13
  selectedDaysOffType: string;
14
  daysOffTypes: string[] = ['Sick-days', 'Extra dovolená'];
10 15

  
11 16
  constructor(
12 17
    public dialogRef: MatDialogRef<AddDaysOffDialogComponent>,
13
    @Inject(MAT_DIALOG_DATA) public data: AddDaysOffDialogData
14
  ) {}
18
    @Inject(MAT_DIALOG_DATA) public data: AddDaysOffDialogData,
19
    private snackBar: MatSnackBar
20
  ) {
21
    if (this.data.toDate == null) {
22
      this.data.toDate = this.data.fromDate;
23
    }
24
    if (this.data.fromTime == null) {
25
      this.data.fromTime = {hour: 8, minute: 0};
26
    }
27
    if (data.toTime == null) {
28
      this.data.toTime = {hour: 16, minute: 0};
29
    }
30
  }
31

  
32
  onConfirmClick(): void {
33
    // TODO lokalizace
34

  
35
    if (this.selectedDaysOffType == null) {
36
      this.snackBar.open('Nevybrán typ volna', 'Zavřít', { duration: 5000 });
37
    } else if (this.data.fromDate > this.data.toDate) {
38
      this.snackBar.open('Datum "od" nemůže být větší než "do"', 'Zavřít', { duration: 5000 });
39
    } else {
40
      // TODO API CALL
41
      this.dialogRef.close();
42
    }
43
  }
15 44

  
16 45
  onCloseClick(): void {
17 46
    this.dialogRef.close();
......
20 49
}
21 50

  
22 51
export interface AddDaysOffDialogData {
23
  // TODO
24
  foo: 'bar';
52
  fromDate: FormControl;
53
  toDate: FormControl;
54
  fromTime: { hour: number, minute: number };
55
  toTime: { hour: number, minute: number };
25 56
}
webapp/src/app/add-days-off-dialog/add-days-off-dialog.module.ts
2 2
import { CommonModule } from '@angular/common';
3 3
import { AddDaysOffDialogComponent } from './add-days-off-dialog.component';
4 4
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
5
import { MatButtonModule, MatDialogModule } from '@angular/material';
5
import {
6
  MatButtonModule,
7
  MatDialogModule,
8
  MatDatepickerModule,
9
  MatNativeDateModule,
10
  MatInputModule, MatRadioModule, MatSnackBarModule
11
} from '@angular/material';
12
import {NgbModule} from '@ng-bootstrap/ng-bootstrap';
13
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
14
import {BrowserModule} from '@angular/platform-browser';
6 15

  
7 16
@NgModule({
8 17
  declarations: [AddDaysOffDialogComponent],
......
10 19
    CommonModule,
11 20
    BrowserAnimationsModule,
12 21
    MatButtonModule,
13
    MatDialogModule
22
    MatDialogModule,
23
    NgbModule,
24
    FormsModule,
25
    MatDatepickerModule,
26
    MatNativeDateModule,
27
    ReactiveFormsModule,
28
    BrowserModule,
29
    MatInputModule,
30
    MatRadioModule,
31
    MatSnackBarModule
14 32
  ],
15 33
  exports: [
16 34
    AddDaysOffDialogComponent
webapp/src/app/dashboard/employer-dashboard/employer-dashboard.component.ts
54 54
  onDateSelect( date: Date ) {
55 55
    this.dialog.open(AddDaysOffDialogComponent, {
56 56
      data: {
57
        // TODO
58
        foo: 'bar'
57
        fromDate: date
59 58
      }
60 59
    });
61 60
  }
......
67 66
    );
68 67
  }
69 68

  
70
  daysOffApproved(daysOff: DaysOff, approved: boolean ) {
69
  daysOffApproved(daysOff: DaysOff, approved: boolean) {
71 70
    console.log(daysOff.username + ', ' + approved);
72 71
    this.daysOffToApprove.splice(
73 72
      this.daysOffToApprove.indexOf(daysOff), 1
webapp/src/styles.sass
1
@import "~@angular/material/prebuilt-themes/indigo-pink.css"
1
@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'
2 2

  
3 3
*
4 4
  margin: 0

Také k dispozici: Unified diff