feat(dashboard): «Активность» в нижний ряд + удалён остаток «Теории»
- Блок «Активность» (heatmap + календарь) вынесен из 3-й колонки в отдельный нижний ряд .bottom-grid рядом с «Мои сдачи» и «Испытания». - Удалён остаток разметки «Теория — в процессе» и разметка рейтинга (lb-section) с дашборда; конфиг виджетов обновлён (Активность вместо Теории/Рейтинга). - Селектор скрытия для учителя и адаптив обновлены под .bottom-grid. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+36
-53
@@ -148,6 +148,15 @@
|
|||||||
margin-bottom: 22px;
|
margin-bottom: 22px;
|
||||||
}
|
}
|
||||||
.full-row { margin-bottom: 22px; }
|
.full-row { margin-bottom: 22px; }
|
||||||
|
/* Bottom row: Activity · My submissions · Challenges side by side */
|
||||||
|
.bottom-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
gap: 22px;
|
||||||
|
margin-bottom: 22px;
|
||||||
|
align-items: start;
|
||||||
|
}
|
||||||
|
.bottom-grid > * { margin-bottom: 0; }
|
||||||
|
|
||||||
.qa-btn {
|
.qa-btn {
|
||||||
display: flex; align-items: center; gap: 8px;
|
display: flex; align-items: center; gap: 8px;
|
||||||
@@ -1602,8 +1611,29 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="fcw-body"></div>
|
<div id="fcw-body"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- Day popup (floating) -->
|
||||||
|
<div class="hm-day-popup" id="hm-day-popup" style="display:none"></div>
|
||||||
|
<!-- Subject progress bars -->
|
||||||
|
<div id="w-subj-progress" style="display:none;margin-top:18px">
|
||||||
|
<div class="w-head"><div class="w-title">По предметам</div></div>
|
||||||
|
<div id="subj-progress-bars"></div>
|
||||||
|
</div>
|
||||||
|
<!-- Last results -->
|
||||||
|
<div id="w-last-results" style="display:none;margin-top:18px">
|
||||||
|
<div class="w-head">
|
||||||
|
<div class="w-title">Результаты</div>
|
||||||
|
<button class="w-more" onclick="toggleFullHistory()">Все</button>
|
||||||
|
</div>
|
||||||
|
<div id="last-results-list"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- ZONE 4: Bottom row — Activity · My submissions · Challenges -->
|
||||||
|
<div class="bottom-grid">
|
||||||
|
|
||||||
<!-- Combined Activity Widget (heatmap + streak calendar) -->
|
<!-- Combined Activity Widget (heatmap + streak calendar) -->
|
||||||
<div id="w-activity" style="display:none">
|
<div class="widget" id="w-activity" style="display:none">
|
||||||
<div class="w-head">
|
<div class="w-head">
|
||||||
<div class="w-title">Активность</div>
|
<div class="w-title">Активность</div>
|
||||||
<div class="act-tabs">
|
<div class="act-tabs">
|
||||||
@@ -1627,60 +1657,22 @@
|
|||||||
<div id="streak-cal-body"></div>
|
<div id="streak-cal-body"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Day popup (floating) -->
|
|
||||||
<div class="hm-day-popup" id="hm-day-popup" style="display:none"></div>
|
|
||||||
<!-- Subject progress bars -->
|
|
||||||
<div id="w-subj-progress" style="display:none;margin-top:18px">
|
|
||||||
<div class="w-head"><div class="w-title">По предметам</div></div>
|
|
||||||
<div id="subj-progress-bars"></div>
|
|
||||||
</div>
|
|
||||||
<!-- Last results -->
|
|
||||||
<div id="w-last-results" style="display:none;margin-top:18px">
|
|
||||||
<div class="w-head">
|
|
||||||
<div class="w-title">Результаты</div>
|
|
||||||
<button class="w-more" onclick="toggleFullHistory()">Все</button>
|
|
||||||
</div>
|
|
||||||
<div id="last-results-list"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- My submissions compact widget (student only) -->
|
<!-- My submissions compact widget (student only) -->
|
||||||
<div class="full-row" id="w-my-subs" style="display:none">
|
<div class="widget" id="w-my-subs" style="display:none">
|
||||||
<div class="widget">
|
|
||||||
<div class="w-head">
|
<div class="w-head">
|
||||||
<div class="w-title">Мои сдачи</div>
|
<div class="w-title">Мои сдачи</div>
|
||||||
<a class="ae-btn-submit" href="/homework" style="text-decoration:none">Загрузить работу</a>
|
<a class="ae-btn-submit" href="/homework" style="text-decoration:none">Загрузить работу</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="my-subs-list" id="my-subs-list"></div>
|
<div class="my-subs-list" id="my-subs-list"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Leaderboard (students only) -->
|
|
||||||
<div class="full-row" id="lb-section" style="display:none">
|
|
||||||
<div class="lb-widget">
|
|
||||||
<div class="lb-head">
|
|
||||||
<div class="lb-title" id="lb-title">Рейтинг</div>
|
|
||||||
<div style="display:flex;gap:8px;align-items:center">
|
|
||||||
<select class="lb-class-sel" id="lb-class-sel" onchange="loadLeaderboard()">
|
|
||||||
<option value="">Все</option>
|
|
||||||
</select>
|
|
||||||
<div class="lb-tabs">
|
|
||||||
<button class="lb-tab active" onclick="setLbPeriod('week',this)">Неделя</button>
|
|
||||||
<button class="lb-tab" onclick="setLbPeriod('all',this)">Всё время</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="lb-list" id="lb-list"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Challenges (students only) -->
|
<!-- Challenges (students only) -->
|
||||||
<div class="full-row" id="ch-section" style="display:none">
|
<div class="widget ch-widget" id="ch-section" style="display:none">
|
||||||
<div class="widget ch-widget">
|
|
||||||
<div class="w-head"><div class="w-title" id="ch-title">Испытания недели</div></div>
|
<div class="w-head"><div class="w-title" id="ch-title">Испытания недели</div></div>
|
||||||
<div class="ch-list" id="ch-list"></div>
|
<div class="ch-list" id="ch-list"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Statistics Charts (students only) -->
|
<!-- Statistics Charts (students only) -->
|
||||||
@@ -1710,14 +1702,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Full width: Theory -->
|
|
||||||
<div class="full-row">
|
|
||||||
<div class="widget" id="w-theory-progress" style="display:none">
|
|
||||||
<div class="w-head"><div class="w-title">Теория — в процессе</div></div>
|
|
||||||
<div id="theory-progress-grid" class="theory-courses-grid"></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Full width: Full history (hidden) -->
|
<!-- Full width: Full history (hidden) -->
|
||||||
<div class="full-row">
|
<div class="full-row">
|
||||||
<div class="widget" id="w-full-history" style="display:none">
|
<div class="widget" id="w-full-history" style="display:none">
|
||||||
@@ -1779,7 +1763,7 @@
|
|||||||
document.getElementById('dh-greeting').innerHTML = `${gr}, <span>${esc(user?.name?.split(' ')[0] || 'Администратор')}</span>`;
|
document.getElementById('dh-greeting').innerHTML = `${gr}, <span>${esc(user?.name?.split(' ')[0] || 'Администратор')}</span>`;
|
||||||
document.getElementById('dh-sub').textContent = user?.role === 'admin' ? 'Панель администратора' : 'Панель учителя';
|
document.getElementById('dh-sub').textContent = user?.role === 'admin' ? 'Панель администратора' : 'Панель учителя';
|
||||||
// teacher/admin: hide student-only widgets, show admin compact layout
|
// teacher/admin: hide student-only widgets, show admin compact layout
|
||||||
document.querySelectorAll('.action-zone,.main-grid,#w-theory-progress,.full-row').forEach(el => { if (el) el.style.display = 'none'; });
|
document.querySelectorAll('.action-zone,.main-grid,.bottom-grid,.full-row').forEach(el => { if (el) el.style.display = 'none'; });
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
// admin: full command center (redesign) instead of compact layout
|
// admin: full command center (redesign) instead of compact layout
|
||||||
const dh = document.querySelector('.dash-header'); if (dh) dh.style.display = 'none';
|
const dh = document.querySelector('.dash-header'); if (dh) dh.style.display = 'none';
|
||||||
@@ -4002,11 +3986,10 @@
|
|||||||
|
|
||||||
/* ── Dashboard widget visibility ──────────────────────────────────── */
|
/* ── Dashboard widget visibility ──────────────────────────────────── */
|
||||||
const _DASH_WIDGETS = [
|
const _DASH_WIDGETS = [
|
||||||
{ id: 'lb-section', label: 'Рейтинг' },
|
|
||||||
{ id: 'ch-section', label: 'Испытания недели' },
|
{ id: 'ch-section', label: 'Испытания недели' },
|
||||||
{ id: 'stats-section', label: 'Статистика' },
|
{ id: 'stats-section', label: 'Статистика' },
|
||||||
{ id: 'w-my-subs', label: 'Мои сдачи' },
|
{ id: 'w-my-subs', label: 'Мои сдачи' },
|
||||||
{ id: 'w-theory-progress',label: 'Теория' },
|
{ id: 'w-activity', label: 'Активность' },
|
||||||
];
|
];
|
||||||
|
|
||||||
async function applyDashboardPrefs() {
|
async function applyDashboardPrefs() {
|
||||||
|
|||||||
Reference in New Issue
Block a user