feat: add show raw discipline if checked

This commit is contained in:
Polianin Nikita 2024-08-28 01:22:45 +03:00
parent 1fa1e864da
commit 6a3a6a8d47
3 changed files with 60 additions and 12 deletions

View File

@ -31,7 +31,9 @@ interface Dictionary {
})
export class TableComponent implements OnChanges {
private isDisciplineWithWeeks: boolean = false;
protected tableDataSource: MatTableDataSource<TableData> = new MatTableDataSource<TableData>([]);
private backupDisciplines: string[] = [];
protected daysOfWeek: string[] = ['Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'];
protected displayedColumns: string[] = ['pairNumber'];
protected dataSource: ScheduleResponse[] = [];
@ -41,6 +43,11 @@ export class TableComponent implements OnChanges {
@Input() startWeek!: Date;
@Input() isLoad: boolean = false;
@Input() set disciplineWithWeeks(value: boolean) {
this.isDisciplineWithWeeks = value;
this.convertData();
}
@Input() set data(schedule: ScheduleResponse[]) {
this.dataSource = schedule;
this.convertData();
@ -68,17 +75,35 @@ export class TableComponent implements OnChanges {
};
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.dayOfWeek === k &&
x.isEven === (this.currentWeek % 2 === 0) &&
(
x.isExcludedWeeks === undefined ||
x.weeks === undefined ||
x.isEven === (this.currentWeek % 2 === 0)
);
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)))
)
);
);
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);

View File

@ -1,6 +1,18 @@
<mat-sidenav-container class="schedule">
<app-tabs (eventResult)="result($event)"/>
<app-table-header [startWeek]="startWeek" [currentWeek]="currentWeek" (weekEvent)="handleWeekEvent($event)"
#tableHeader/>
<app-table [currentWeek]="currentWeek" [startWeek]="startWeek" [data]="data" [isLoad]="isLoadTable"/>
<mat-sidenav-content>
<app-tabs (eventResult)="result($event)"/>
</mat-sidenav-content>
<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>

View File

@ -38,11 +38,12 @@ import {MatCheckbox} from "@angular/material/checkbox";
})
export class ScheduleComponent {
protected startWeek!: Date;
protected startWeek: Date;
protected data: ScheduleResponse[] = [];
protected startTerm: Date;
protected isLoadTable: boolean = false;
protected pairPeriods: PeriodTimes = {};
protected disciplineWithWeeks: boolean = false;
@ViewChild('tableHeader') childComponent!: TableHeaderComponent;
@ -50,6 +51,11 @@ export class ScheduleComponent {
this.startTerm = 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 => {
this.pairPeriods = date;
});
@ -122,4 +128,9 @@ export class ScheduleComponent {
return result;
}
protected changeDisciplineWeeksView(checked: boolean) {
localStorage.setItem('disciplineWithWeeks', checked.toString());
this.disciplineWithWeeks = checked;
}
}