Remove school day hours from schedule templates
The day progress bar no longer uses day start/end times (it uses block durations instead), so the field is no longer needed. Removed from: Admin UI, schedule store, schedule model/schemas/router, session broadcast payload, dashboard snapshot, and startup migrations. DB columns are left in place (harmless, no migration required). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -11,8 +11,6 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
const blockStartedAt = ref(null) // Date.now() ms when current counting period started
|
||||
const blockElapsedOffset = ref(0) // seconds already elapsed before blockStartedAt
|
||||
const blockElapsedCache = ref({}) // blockId → total elapsed seconds (survives block switches)
|
||||
const dayStartTime = ref(null) // "HH:MM:SS" string or null
|
||||
const dayEndTime = ref(null) // "HH:MM:SS" string or null
|
||||
const morningRoutine = ref([]) // list of text strings shown during greeting state
|
||||
const breakActivities = ref([]) // list of text strings shown during break time
|
||||
// Break timer state (per-block break time at end of block)
|
||||
@@ -45,8 +43,6 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
completedBlockIds.value = snapshot.completed_block_ids || []
|
||||
isPaused.value = snapshot.is_paused || false
|
||||
if (snapshot.child) child.value = snapshot.child
|
||||
dayStartTime.value = snapshot.day_start_time || null
|
||||
dayEndTime.value = snapshot.day_end_time || null
|
||||
morningRoutine.value = snapshot.morning_routine || []
|
||||
breakActivities.value = snapshot.break_activities || []
|
||||
// Restore elapsed time from server-computed value and seed the per-block cache
|
||||
@@ -86,8 +82,6 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
blockStartedAt.value = null
|
||||
blockElapsedOffset.value = 0
|
||||
blockElapsedCache.value = {}
|
||||
dayStartTime.value = null
|
||||
dayEndTime.value = null
|
||||
isBreakMode.value = false
|
||||
breakStartedAt.value = null
|
||||
breakElapsedOffset.value = 0
|
||||
@@ -322,8 +316,6 @@ export const useScheduleStore = defineStore('schedule', () => {
|
||||
blockStartedAt,
|
||||
blockElapsedOffset,
|
||||
blockElapsedCache,
|
||||
dayStartTime,
|
||||
dayEndTime,
|
||||
morningRoutine,
|
||||
breakActivities,
|
||||
isBreakMode,
|
||||
|
||||
@@ -229,24 +229,6 @@
|
||||
|
||||
<!-- Block editor -->
|
||||
<div v-if="editingTemplate === template.id" class="block-editor">
|
||||
<!-- Day hours -->
|
||||
<div class="day-hours-row">
|
||||
<span class="day-hours-label">School day hours</span>
|
||||
<input
|
||||
type="time"
|
||||
:value="template.day_start_time ? template.day_start_time.slice(0,5) : ''"
|
||||
@change="e => saveDayHours(template, 'start', e.target.value)"
|
||||
placeholder="Start"
|
||||
/>
|
||||
<span class="day-hours-sep">to</span>
|
||||
<input
|
||||
type="time"
|
||||
:value="template.day_end_time ? template.day_end_time.slice(0,5) : ''"
|
||||
@change="e => saveDayHours(template, 'end', e.target.value)"
|
||||
placeholder="End"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="block-list">
|
||||
<template v-for="block in sortedBlocks(template.blocks)" :key="block.id">
|
||||
<!-- Edit mode -->
|
||||
@@ -661,13 +643,6 @@ async function deleteBlock(templateId, blockId) {
|
||||
await loadTemplates()
|
||||
}
|
||||
|
||||
async function saveDayHours(template, which, value) {
|
||||
const payload = which === 'start'
|
||||
? { day_start_time: value || null }
|
||||
: { day_end_time: value || null }
|
||||
await api.patch(`/api/schedules/${template.id}`, payload)
|
||||
await loadTemplates()
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
await childrenStore.fetchChildren()
|
||||
@@ -762,25 +737,6 @@ h2 { font-size: 1.1rem; color: #94a3b8; text-transform: uppercase; letter-spacin
|
||||
|
||||
.block-editor { margin-top: 1.25rem; border-top: 1px solid #334155; padding-top: 1.25rem; }
|
||||
|
||||
.day-hours-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.6rem;
|
||||
margin-bottom: 1rem;
|
||||
background: #0f172a;
|
||||
padding: 0.6rem 0.85rem;
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
.day-hours-label { font-size: 0.8rem; color: #64748b; flex: 1; }
|
||||
.day-hours-sep { font-size: 0.8rem; color: #475569; }
|
||||
.day-hours-row input[type="time"] {
|
||||
padding: 0.35rem 0.5rem;
|
||||
background: #1e293b;
|
||||
border: 1px solid #334155;
|
||||
border-radius: 0.4rem;
|
||||
color: #f1f5f9;
|
||||
font-size: 0.85rem;
|
||||
}
|
||||
.block-list { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1rem; }
|
||||
.block-row { display: flex; align-items: center; gap: 0.75rem; padding: 0.5rem; background: #0f172a; border-radius: 0.5rem; }
|
||||
.block-time { font-size: 0.8rem; color: #64748b; font-variant-numeric: tabular-nums; }
|
||||
|
||||
Reference in New Issue
Block a user