Add customer search and navigation updates
This commit is contained in:
@@ -30,6 +30,7 @@ export default function AnamnesisPage() {
|
||||
const [activeQuarter, setActiveQuarter] = useState<QuarterKey | null>(null);
|
||||
const [message, setMessage] = useState<string | null>(null);
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [showValidation, setShowValidation] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
async function load() {
|
||||
@@ -70,10 +71,22 @@ export default function AnamnesisPage() {
|
||||
}));
|
||||
}
|
||||
|
||||
function quarterHasPathogen(quarterKey: QuarterKey) {
|
||||
const quarterState = quarterStates[quarterKey];
|
||||
return Boolean(quarterState?.pathogenBusinessKey || quarterState?.customPathogenName?.trim());
|
||||
}
|
||||
|
||||
async function handleSave() {
|
||||
if (!sampleId || !sample) {
|
||||
return;
|
||||
}
|
||||
setShowValidation(true);
|
||||
const missingQuarter = sample.quarters.find((quarter) => !quarterHasPathogen(quarter.quarterKey));
|
||||
if (missingQuarter) {
|
||||
setActiveQuarter(missingQuarter.quarterKey);
|
||||
setMessage("Bitte fuer jede Entnahmestelle einen Erreger auswaehlen oder eingeben.");
|
||||
return;
|
||||
}
|
||||
setSaving(true);
|
||||
setMessage(null);
|
||||
|
||||
@@ -134,7 +147,9 @@ export default function AnamnesisPage() {
|
||||
<button
|
||||
key={quarter.quarterKey}
|
||||
type="button"
|
||||
className={`tab-chip ${activeQuarter === quarter.quarterKey ? "is-active" : ""}`}
|
||||
className={`tab-chip ${activeQuarter === quarter.quarterKey ? "is-active" : ""} ${
|
||||
showValidation && !quarterHasPathogen(quarter.quarterKey) ? "is-invalid" : ""
|
||||
}`}
|
||||
onClick={() => setActiveQuarter(quarter.quarterKey)}
|
||||
>
|
||||
{quarter.label}
|
||||
@@ -153,7 +168,8 @@ export default function AnamnesisPage() {
|
||||
<div className="info-chip">Auffaelliges Viertel markiert</div>
|
||||
) : null}
|
||||
|
||||
<div className="pathogen-grid">
|
||||
<p className="required-label">Erreger</p>
|
||||
<div className={`pathogen-grid ${showValidation && !quarterHasPathogen(visibleQuarter.quarterKey) ? "is-invalid" : ""}`}>
|
||||
{catalogs.pathogens.map((pathogen) => (
|
||||
<button
|
||||
key={pathogen.businessKey}
|
||||
@@ -175,9 +191,10 @@ export default function AnamnesisPage() {
|
||||
))}
|
||||
</div>
|
||||
|
||||
<label className="field">
|
||||
<label className="field field--required">
|
||||
<span>Erreger manuell eingeben</span>
|
||||
<input
|
||||
className={showValidation && !quarterHasPathogen(visibleQuarter.quarterKey) ? "is-invalid" : ""}
|
||||
value={state.customPathogenName}
|
||||
onChange={(event) =>
|
||||
updateQuarter(visibleQuarter.quarterKey, {
|
||||
|
||||
Reference in New Issue
Block a user