Как отобразить ежемесячный отчет о посещаемости в Angular 6

Я хочу отображать ежемесячную дату посещаемости в угловых 6, что-то вроде этого:

Я хочу отменить ежемесячную дату посещаемости мудро в угловых 6

Как отображать посещаемость сотрудников по дате.

Файлы Participance.ts и Participance.html приведены ниже.

Attendance.ts

export class AttendanceSheetComponent implements OnInit {
  attendances: Attendance[];
  dates: string[];
  constructor(
    private attendanceservice: AttendanceService,
    private spinner: NgxSpinnerService
  ) {
    this.getAttendance();
  }
  getAttendance() {
    this.attendanceservice.get().subscribe(
      (res: Attendance[]) => {

        this.attendances = res;
        this.getDates(res);
        this.spinner.hide();
      },

    );
  }
  getDates(data) {
    this.dates = data.map(item => item.date)
      .filter((value, index, self) => self.indexOf(value) === index)
  }
}

Attendance.html

<thead>
  <tr>
    <th>#</th>
    <th>Name</th>
    <th *ngFor="let dates of dates" class="verticalTableHeader">
      <p>{{dates}}</p>
    </th>
  </tr>
</thead>
<tbody>
  <tr *ngFor="let attendance of attendances; let i = index">
    <td>
      {{ i + 1 }}
    </td>
    <td>
      {{attendance.firstname}} {{attendance.lastname}}
    </td>
    <td>
      {{attendance.title}}
    </td>
    <td>
      {{attendance.attendance}}
    </td>
  </tr>
</tbody>

1 ответ

Используйте функцию в вашем ngFor и pas в значении даты, которое вы помещаете в верхнюю часть заголовка, это будет в основном возвращать посещаемость для даты, также вы должны сделать дату и посещаемость в виде вложенных циклов, т.е. для каждого значения даты вам нужны значения посещаемости.

.html

<tr *ngFor="let attendance of getAttendanceForDate('dates'); let i = index">

.ts

public getAttendanceForDate(date:any){
return this.attendance.filter(x => x.date === date);
}

для CSS часть вещей просто положить

<th *ngFor="let dates of dates"><span class="bar">|</span></th>

используйте пунктирную линию непосредственно перед <tbody> а потом опять поставить другой

<td><span class="bar">|</span></td> 

в рамках цикла отображения посещаемости.

Другие вопросы по тегам