Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 7def46a6

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

Re #7263 Employer dashboard component implemented

Zobrazit rozdíly:

frontend/src/app/dashboard/employer-dashboard/employer-dashboard.component.html
1
<div class="container-fluid h-100">
2
  <div class="row">
3
    <div class="col-lg-8 mid-panel">
4

  
5
      <div *ngIf="usersToApprove.length > 0" class="employer-dashboard-user-approval">
6
        <app-user-approval
7
          [usersToApprove]="usersToApprove"
8
          (userApprovedAction)="userApproved($event.user, $event.approved)"
9
        ></app-user-approval>
10
      </div>
11

  
12
      <div *ngIf="daysOffToApprove.length > 0" class="employer-dashboard-days-off-approval">
13
        <app-days-off-approval
14
          [daysOffToApprove]="daysOffToApprove"
15
          (daysOffApprovalAction)="daysOffApproved($event.daysOff, $event.approved)"
16
        ></app-days-off-approval>
17
      </div>
18

  
19
      <div *ngIf="oncomingDaysOff.length > 0" class="employer-dashboard-coming-days-off">
20
        <app-coming-days-off
21
          [oncomingDaysOff]="oncomingDaysOff"
22
          (daysOffRemovedAction)="daysOffRemoved($event.daysOff)"
23
        ></app-coming-days-off>
24
      </div>
25

  
26
      <div class="employer-dashboard-day-picker">
27
        <app-day-picker
28
          (selectedDate)="onDateSelect($event)"
29
        ></app-day-picker>
30
      </div>
31

  
32
    </div>
33

  
34
    <div class="col-lg-4 right-panel">
35

  
36
      <app-days-off-info
37
        [sickDaysRemaining]="5"
38
        [sickDaysUsed]="3"
39
        [extraVacationRemaining]="10"
40
      ></app-days-off-info>
41

  
42
    </div>
43
  </div>
44
</div>
frontend/src/app/dashboard/employer-dashboard/employer-dashboard.component.sass
1
.row
2
  padding: 0
3

  
4
.mid-panel
5
  padding: 10px 0 0 10px
6

  
7
.right-panel
8
  padding: 10px 10px 0 10px
9

  
10
.employer-dashboard-user-approval
11
  padding: 0 0 10px 0
12

  
13
.employer-dashboard-days-off-approval
14
  padding: 0 0 10px 0
15

  
16
.employer-dashboard-coming-days-off
17
  padding: 0 0 10px 0
frontend/src/app/dashboard/employer-dashboard/employer-dashboard.component.ts
1
import { Component, OnInit } from '@angular/core';
2
import {UserToApprove} from '../../user-approval/user-to-approve.model';
3
import {DaysOff} from '../../shared/days-off.model';
4
import {OffDayType } from '../../shared/off-day-type';
5

  
6
@Component({
7
  selector: 'app-employer-dashboard',
8
  templateUrl: './employer-dashboard.component.html',
9
  styleUrls: ['./employer-dashboard.component.sass']
10
})
11
export class EmployerDashboardComponent implements OnInit {
12

  
13
  usersToApprove: UserToApprove[] = [
14
    { date: new Date(), email: 'kek@kek.cz', name: 'Václav Jirák' },
15
    { date: new Date(), email: 'kuadas@kek.cz', name: 'Věnceslav Kárij' }
16
  ];
17

  
18
  daysOffToApprove: DaysOff[] = [
19
    { username: 'Václav Jirák', dateFrom: new Date(2019, 10, 13), dateTo: new Date(), type: OffDayType.Sickday },
20
    { username: 'Václav Jirák', dateFrom: new Date(2019, 10, 1), dateTo: new Date(), type: OffDayType.ExtraVacation },
21
  ];
22

  
23
  daysOff: DaysOff[] = [
24
    {
25
      username: '',
26
      dateFrom: new Date(2019, 5, 5),
27
      dateTo: new Date(2019, 5, 6),
28
      type: OffDayType.ExtraVacation
29
    },
30
    {
31
      username: '',
32
      dateFrom: new Date(2019, 5, 8),
33
      dateTo: new Date(2019, 5, 8),
34
      type: OffDayType.Sickday
35
    },
36
    {
37
      username: '',
38
      dateFrom: new Date(2019, 3, 8),
39
      dateTo: new Date(2019, 3, 9),
40
      type: OffDayType.Sickday
41
    },
42
  ];
43

  
44
  oncomingDaysOff: DaysOff[] = [];
45

  
46
  constructor() { }
47

  
48
  ngOnInit() {
49
    this.oncomingDaysOff = this.calculateComingDaysOff();
50
  }
51

  
52
  onDateSelect( date: Date ) {
53
    console.log('Date selected: ' + date.toDateString());
54
  }
55

  
56
  userApproved( user: UserToApprove, approved: boolean ) {
57
    console.log(user.name + ' - approved: ' + approved);
58
    this.usersToApprove.splice(
59
      this.usersToApprove.indexOf(user), 1
60
    );
61
  }
62

  
63
  daysOffApproved(daysOff: DaysOff, approved: boolean ) {
64
    console.log(daysOff.username + ', ' + approved);
65
    this.daysOffToApprove.splice(
66
      this.daysOffToApprove.indexOf(daysOff), 1
67
    );
68
  }
69

  
70
  daysOffRemoved(daysOff: DaysOff) {
71
    this.daysOff.splice(
72
      this.daysOff.indexOf(daysOff), 1
73
    );
74
    this.oncomingDaysOff.splice(
75
      this.oncomingDaysOff.indexOf(daysOff), 1
76
    );
77
  }
78

  
79
  private calculateComingDaysOff(): DaysOff[] {
80
    let oncomingDaysOff: DaysOff[] = [];
81

  
82
    const today = new Date();
83
    this.daysOff.forEach((dayOff) => {
84
      if (dayOff.dateTo >= today) {
85
        oncomingDaysOff.push(dayOff);
86
      }
87
    });
88

  
89
    return oncomingDaysOff;
90
  }
91
}
frontend/src/app/dashboard/employer-dashboard/employer-dashboard.module.ts
1
import { NgModule } from '@angular/core';
2
import { CommonModule } from '@angular/common';
3
import { EmployerDashboardComponent } from './employer-dashboard.component';
4
import { DayPickerModule } from '../../day-picker/day-picker.module';
5
import { DaysOffInfoModule } from '../../days-off-info/days-off-info.module';
6
import { UserApprovalModule } from '../../user-approval/user-approval.module';
7
import { DaysOffApprovalModule } from '../../days-off-approval/days-off-approval.module';
8
import { OncomingDaysOffModule } from '../../oncoming-days-off/oncoming-days-off.module';
9

  
10
@NgModule({
11
  declarations: [ EmployerDashboardComponent ],
12
  exports:      [ EmployerDashboardComponent ],
13
  imports: [
14
    CommonModule,
15
    DayPickerModule,
16
    DaysOffInfoModule,
17
    UserApprovalModule,
18
    DaysOffApprovalModule,
19
    DayPickerModule,
20
    OncomingDaysOffModule
21
  ]
22
})
23
export class EmployerDashboardModule { }

Také k dispozici: Unified diff