fixed dossier
This commit is contained in:
parent
7077f02104
commit
e044eed9fa
2 changed files with 63 additions and 3 deletions
|
|
@ -3,6 +3,39 @@
|
||||||
max-width: 900px;
|
max-width: 900px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contextSelector {
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 0.5rem;
|
||||||
|
margin-bottom: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextChip {
|
||||||
|
padding: 0.4rem 0.9rem;
|
||||||
|
background: var(--bg-card, #fff);
|
||||||
|
border: 1px solid var(--border-color, #ddd);
|
||||||
|
border-radius: 20px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: var(--text-primary, #333);
|
||||||
|
transition: all 0.15s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextChip:hover {
|
||||||
|
border-color: var(--primary-color, #F25843);
|
||||||
|
color: var(--primary-color, #F25843);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextChipActive {
|
||||||
|
background: var(--primary-color, #F25843);
|
||||||
|
color: #fff;
|
||||||
|
border-color: var(--primary-color, #F25843);
|
||||||
|
}
|
||||||
|
|
||||||
|
.contextChipActive:hover {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
.empty {
|
.empty {
|
||||||
padding: 3rem;
|
padding: 3rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
* Shows context detail: sessions timeline, tasks checklist, scores, insights.
|
* Shows context detail: sessions timeline, tasks checklist, scores, insights.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React, { useState, useCallback } from 'react';
|
import React, { useState, useCallback, useEffect } from 'react';
|
||||||
import { useCommcoach } from '../../../hooks/useCommcoach';
|
import { useCommcoach } from '../../../hooks/useCommcoach';
|
||||||
import ReactMarkdown from 'react-markdown';
|
import ReactMarkdown from 'react-markdown';
|
||||||
import styles from './CommcoachDossierView.module.css';
|
import styles from './CommcoachDossierView.module.css';
|
||||||
|
|
@ -14,22 +14,48 @@ export const CommcoachDossierView: React.FC = () => {
|
||||||
const [newTaskTitle, setNewTaskTitle] = useState('');
|
const [newTaskTitle, setNewTaskTitle] = useState('');
|
||||||
const [activeTab, setActiveTab] = useState<'sessions' | 'tasks' | 'scores'>('tasks');
|
const [activeTab, setActiveTab] = useState<'sessions' | 'tasks' | 'scores'>('tasks');
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!coach.selectedContextId && coach.contexts.length > 0) {
|
||||||
|
coach.selectContext(coach.contexts[0].id);
|
||||||
|
}
|
||||||
|
}, [coach.contexts, coach.selectedContextId, coach.selectContext]);
|
||||||
|
|
||||||
const handleAddTask = useCallback(async () => {
|
const handleAddTask = useCallback(async () => {
|
||||||
if (!newTaskTitle.trim()) return;
|
if (!newTaskTitle.trim()) return;
|
||||||
await coach.addTask(newTaskTitle);
|
await coach.addTask(newTaskTitle);
|
||||||
setNewTaskTitle('');
|
setNewTaskTitle('');
|
||||||
}, [newTaskTitle, coach]);
|
}, [newTaskTitle, coach]);
|
||||||
|
|
||||||
if (!coach.selectedContextId) {
|
if (coach.loadingContexts) {
|
||||||
|
return <div className={styles.empty}><p>Lade...</p></div>;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (coach.contexts.length === 0) {
|
||||||
return (
|
return (
|
||||||
<div className={styles.empty}>
|
<div className={styles.empty}>
|
||||||
<p>Waehle ein Coaching-Thema im Coaching-Tab, um das Dossier zu sehen.</p>
|
<p>Noch keine Coaching-Themen vorhanden. Erstelle zuerst eines im Coaching-Tab.</p>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={styles.dossier}>
|
<div className={styles.dossier}>
|
||||||
|
{/* Context Selector */}
|
||||||
|
<div className={styles.contextSelector}>
|
||||||
|
{coach.contexts.map(ctx => (
|
||||||
|
<button
|
||||||
|
key={ctx.id}
|
||||||
|
className={`${styles.contextChip} ${ctx.id === coach.selectedContextId ? styles.contextChipActive : ''}`}
|
||||||
|
onClick={() => coach.selectContext(ctx.id)}
|
||||||
|
>
|
||||||
|
{ctx.title}
|
||||||
|
</button>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{!coach.selectedContextId ? (
|
||||||
|
<div className={styles.empty}><p>Waehle ein Coaching-Thema.</p></div>
|
||||||
|
) : (<>
|
||||||
{/* Context Header */}
|
{/* Context Header */}
|
||||||
<div className={styles.header}>
|
<div className={styles.header}>
|
||||||
<div>
|
<div>
|
||||||
|
|
@ -176,6 +202,7 @@ export const CommcoachDossierView: React.FC = () => {
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
</>)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue