@@ -37,6 +37,7 @@ const CELL_PARITY_LAYOUT = [
|
||||
];
|
||||
const MOBILE_QUERY = '(max-width: 760px)';
|
||||
const DEFAULT_SEMESTER_WEEKS = 22;
|
||||
const SCHEDULE_REFRESH_PROMPT = 'Нажмите «Показать», чтобы обновить расписание';
|
||||
|
||||
export async function initScheduleView() {
|
||||
const session = getSession();
|
||||
@@ -89,7 +90,7 @@ export async function initScheduleView() {
|
||||
targetSelect?.addEventListener('change', () => {
|
||||
clearInactiveEntityValues();
|
||||
updateEntityFieldVisibility();
|
||||
resetResults('Нажмите «Показать», чтобы обновить расписание');
|
||||
resetResults(SCHEDULE_REFRESH_PROMPT);
|
||||
});
|
||||
loadButton?.addEventListener('click', loadData);
|
||||
previousPeriodButton?.addEventListener('click', () => movePeriod(-1));
|
||||
@@ -100,16 +101,21 @@ export async function initScheduleView() {
|
||||
nextPeriodButton?.addEventListener('click', () => movePeriod(1));
|
||||
dateInput?.addEventListener('change', () => {
|
||||
updatePeriodLabel();
|
||||
resetResults('Нажмите «Показать», чтобы обновить расписание');
|
||||
resetResults(SCHEDULE_REFRESH_PROMPT);
|
||||
});
|
||||
semesterSelect?.addEventListener('change', () => {
|
||||
synchronizeDateWithSemester();
|
||||
updatePeriodLabel();
|
||||
resetResults('Нажмите «Показать», чтобы обновить расписание');
|
||||
resetResults(SCHEDULE_REFRESH_PROMPT);
|
||||
});
|
||||
resultPreviousButton?.addEventListener('click', () => moveResult(-1));
|
||||
resultNextButton?.addEventListener('click', () => moveResult(1));
|
||||
tables?.addEventListener('click', event => {
|
||||
const reloadButton = event.target.closest('[data-schedule-view-reload]');
|
||||
if (reloadButton) {
|
||||
loadData();
|
||||
return;
|
||||
}
|
||||
const button = event.target.closest('[data-schedule-override-edit]');
|
||||
if (!button) return;
|
||||
const lesson = state.lessons.find(item =>
|
||||
@@ -743,9 +749,20 @@ export async function initScheduleView() {
|
||||
`;
|
||||
}
|
||||
|
||||
function setTableState(message) {
|
||||
function setTableState(message, showReloadButton = false) {
|
||||
if (!tables) return;
|
||||
tables.innerHTML = `<div class="loading-row schedule-view-state">${escapeHtml(message)}</div>`;
|
||||
tables.innerHTML = `
|
||||
<div class="loading-row schedule-view-state${showReloadButton ? ' schedule-view-state-actionable' : ''}">
|
||||
<span>${escapeHtml(message)}</span>
|
||||
${showReloadButton ? `
|
||||
<button type="button"
|
||||
class="btn btn-md btn-primary schedule-view-state-reload"
|
||||
data-schedule-view-reload>
|
||||
Показать расписание
|
||||
</button>
|
||||
` : ''}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
function resetResults(message) {
|
||||
@@ -757,7 +774,7 @@ export async function initScheduleView() {
|
||||
renderResultNavigation();
|
||||
tableTitle.textContent = 'Расписание';
|
||||
tableCaption.textContent = message;
|
||||
setTableState(message);
|
||||
setTableState(message, message === SCHEDULE_REFRESH_PROMPT);
|
||||
countLabel.textContent = '0 занятий';
|
||||
dayTabs.hidden = true;
|
||||
dayTabs.innerHTML = '';
|
||||
|
||||
Reference in New Issue
Block a user