feat: permanent calendar below analytics, editable day modal, per-subject bar chart

This commit is contained in:
Experiments DB Dev
2026-04-23 15:24:00 +00:00
parent fe23085e0f
commit 755caca09e
2 changed files with 182 additions and 134 deletions
+18 -9
View File
@@ -269,7 +269,7 @@ export default function ExperimentDetail() {
<div className="flex items-center gap-3 mb-3 flex-wrap">
{/* Mode toggle */}
<div className="flex rounded border border-gray-200 overflow-hidden text-xs">
{[['list', 'List'], ['group', 'Group'], ['calendar', 'Calendar']].map(([mode, label]) => (
{[['list', 'List'], ['group', 'Group']].map(([mode, label]) => (
<button key={mode} type="button" onClick={() => updateDisplayMode(mode)}
className={`px-3 py-1 border-l border-gray-200 first:border-l-0 transition-colors
${displayMode === mode ? 'bg-gray-700 text-white' : 'bg-white text-gray-500 hover:bg-gray-50'}`}>
@@ -357,14 +357,6 @@ export default function ExperimentDetail() {
);
})}
{displayMode === 'calendar' && (
<ExperimentCalendar
experimentId={id}
template={dailyTemplate}
allStatuses={experimentStatuses}
animals={animals}
/>
)}
</>
)}
@@ -375,6 +367,23 @@ export default function ExperimentDetail() {
dailyTemplate={dailyTemplate}
/>
{animals.length > 0 && (
<ExperimentCalendar
experimentId={id}
template={dailyTemplate}
allStatuses={experimentStatuses}
animals={animals}
onStatusChange={(updated) => {
setExperimentStatuses((prev) =>
prev.map((s) => (s.id === updated.id ? updated : s))
);
}}
onStatusCreate={(created) => {
setExperimentStatuses((prev) => [...prev, created]);
}}
/>
)}
<AuditLogSection tableName="animals" limit={5} />
{/* Template editor modal */}