feat: add show raw discipline if checked
This commit is contained in:
parent
1fa1e864da
commit
6a3a6a8d47
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user