feat: add show raw discipline if checked
This commit is contained in:
		| @@ -31,7 +31,9 @@ interface Dictionary { | |||||||
| }) | }) | ||||||
|  |  | ||||||
| export class TableComponent implements OnChanges { | export class TableComponent implements OnChanges { | ||||||
|  |   private isDisciplineWithWeeks: boolean = false; | ||||||
|   protected tableDataSource: MatTableDataSource<TableData> = new MatTableDataSource<TableData>([]); |   protected tableDataSource: MatTableDataSource<TableData> = new MatTableDataSource<TableData>([]); | ||||||
|  |   private backupDisciplines: string[] = []; | ||||||
|   protected daysOfWeek: string[] = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; |   protected daysOfWeek: string[] = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота']; | ||||||
|   protected displayedColumns: string[] = ['pairNumber']; |   protected displayedColumns: string[] = ['pairNumber']; | ||||||
|   protected dataSource: ScheduleResponse[] = []; |   protected dataSource: ScheduleResponse[] = []; | ||||||
| @@ -41,6 +43,11 @@ export class TableComponent implements OnChanges { | |||||||
|   @Input() startWeek!: Date; |   @Input() startWeek!: Date; | ||||||
|   @Input() isLoad: boolean = false; |   @Input() isLoad: boolean = false; | ||||||
|  |  | ||||||
|  |   @Input() set disciplineWithWeeks(value: boolean) { | ||||||
|  |     this.isDisciplineWithWeeks = value; | ||||||
|  |     this.convertData(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @Input() set data(schedule: ScheduleResponse[]) { |   @Input() set data(schedule: ScheduleResponse[]) { | ||||||
|     this.dataSource = schedule; |     this.dataSource = schedule; | ||||||
|     this.convertData(); |     this.convertData(); | ||||||
| @@ -68,17 +75,35 @@ export class TableComponent implements OnChanges { | |||||||
|       }; |       }; | ||||||
|  |  | ||||||
|       for (let k: number = 1; k < 7; k++) { |       for (let k: number = 1; k < 7; k++) { | ||||||
|         convertedData.data[k.toString()] = this.dataSource.filter(x => |         let filteredData = this.dataSource.filter(x => | ||||||
|           x.pairNumber === i && |           x.pairNumber === i && | ||||||
|           x.dayOfWeek === k && |           x.dayOfWeek === k && | ||||||
|           x.isEven === (this.currentWeek % 2 === 0) && |           x.isEven === (this.currentWeek % 2 === 0) | ||||||
|           ( |         ); | ||||||
|             x.isExcludedWeeks === undefined || |  | ||||||
|             x.weeks === undefined || |         if (!this.isDisciplineWithWeeks) | ||||||
|  |           filteredData = filteredData.filter(x => | ||||||
|  |             x.isExcludedWeeks == undefined || | ||||||
|  |             x.weeks == undefined || | ||||||
|             (x.isExcludedWeeks && (!x.weeks.includes(this.currentWeek))) || |             (x.isExcludedWeeks && (!x.weeks.includes(this.currentWeek))) || | ||||||
|             (!x.isExcludedWeeks && (x.weeks.includes(this.currentWeek))) |             (!x.isExcludedWeeks && (x.weeks.includes(this.currentWeek))) | ||||||
|           ) |           ); | ||||||
|         ); |  | ||||||
|  |         filteredData.forEach(x => { | ||||||
|  |           if (this.isDisciplineWithWeeks) { | ||||||
|  |             if (x.isExcludedWeeks != undefined && x.weeks != undefined) { | ||||||
|  |               if (this.backupDisciplines[x.disciplineId]) | ||||||
|  |                 x.discipline = this.backupDisciplines[x.disciplineId]; | ||||||
|  |               else | ||||||
|  |                 this.backupDisciplines[x.disciplineId] = x.discipline; | ||||||
|  |  | ||||||
|  |               x.discipline = `${(x.isExcludedWeeks ? 'кр.' : 'н.')} ${x.weeks.join(', ')} ${x.discipline}`; | ||||||
|  |             } | ||||||
|  |           } else if (this.backupDisciplines[x.disciplineId]) | ||||||
|  |             x.discipline = this.backupDisciplines[x.disciplineId]; | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         convertedData.data[k.toString()] = filteredData; | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       tableData.push(convertedData); |       tableData.push(convertedData); | ||||||
|   | |||||||
| @@ -1,6 +1,18 @@ | |||||||
| <mat-sidenav-container class="schedule"> | <mat-sidenav-container class="schedule"> | ||||||
|   <app-tabs (eventResult)="result($event)"/> |   <mat-sidenav-content> | ||||||
|   <app-table-header [startWeek]="startWeek" [currentWeek]="currentWeek" (weekEvent)="handleWeekEvent($event)" |     <app-tabs (eventResult)="result($event)"/> | ||||||
|                     #tableHeader/> |   </mat-sidenav-content> | ||||||
|   <app-table [currentWeek]="currentWeek" [startWeek]="startWeek" [data]="data" [isLoad]="isLoadTable"/> |  | ||||||
|  |   <mat-sidenav-content> | ||||||
|  |     <app-table-header [startWeek]="startWeek" [currentWeek]="currentWeek" (weekEvent)="handleWeekEvent($event)" | ||||||
|  |                       #tableHeader/> | ||||||
|  |   </mat-sidenav-content> | ||||||
|  |  | ||||||
|  |   <mat-sidenav-content> | ||||||
|  |     <app-table [currentWeek]="currentWeek" [startWeek]="startWeek" [data]="data" [isLoad]="isLoadTable" [disciplineWithWeeks]="disciplineWithWeeks"/> | ||||||
|  |   </mat-sidenav-content> | ||||||
|  |  | ||||||
|  |   <mat-sidenav-content> | ||||||
|  |     <mat-checkbox (change)="changeDisciplineWeeksView($event.checked)" [checked]="disciplineWithWeeks">Показать недели в дисциплине</mat-checkbox> | ||||||
|  |   </mat-sidenav-content> | ||||||
| </mat-sidenav-container> | </mat-sidenav-container> | ||||||
|   | |||||||
| @@ -38,11 +38,12 @@ import {MatCheckbox} from "@angular/material/checkbox"; | |||||||
| }) | }) | ||||||
|  |  | ||||||
| export class ScheduleComponent { | export class ScheduleComponent { | ||||||
|   protected startWeek!: Date; |   protected startWeek: Date; | ||||||
|   protected data: ScheduleResponse[] = []; |   protected data: ScheduleResponse[] = []; | ||||||
|   protected startTerm: Date; |   protected startTerm: Date; | ||||||
|   protected isLoadTable: boolean = false; |   protected isLoadTable: boolean = false; | ||||||
|   protected pairPeriods: PeriodTimes = {}; |   protected pairPeriods: PeriodTimes = {}; | ||||||
|  |   protected disciplineWithWeeks: boolean = false; | ||||||
|  |  | ||||||
|   @ViewChild('tableHeader') childComponent!: TableHeaderComponent; |   @ViewChild('tableHeader') childComponent!: TableHeaderComponent; | ||||||
|  |  | ||||||
| @@ -50,6 +51,11 @@ export class ScheduleComponent { | |||||||
|     this.startTerm = new Date(1, 1, 1); |     this.startTerm = new Date(1, 1, 1); | ||||||
|     this.startWeek = new Date(1, 1, 1); |     this.startWeek = new Date(1, 1, 1); | ||||||
|  |  | ||||||
|  |     let disciplineWithWeeksStorage = localStorage.getItem('disciplineWithWeeks'); | ||||||
|  |  | ||||||
|  |     if (disciplineWithWeeksStorage) | ||||||
|  |       this.disciplineWithWeeks = disciplineWithWeeksStorage.toLowerCase() === 'true'; | ||||||
|  |  | ||||||
|     api.pairPeriod().subscribe(date => { |     api.pairPeriod().subscribe(date => { | ||||||
|       this.pairPeriods = date; |       this.pairPeriods = date; | ||||||
|     }); |     }); | ||||||
| @@ -122,4 +128,9 @@ export class ScheduleComponent { | |||||||
|  |  | ||||||
|     return result; |     return result; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   protected changeDisciplineWeeksView(checked: boolean) { | ||||||
|  |     localStorage.setItem('disciplineWithWeeks', checked.toString()); | ||||||
|  |     this.disciplineWithWeeks = checked; | ||||||
|  |   } | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user