Hinzufügen der Ampelsystem Logik
parent
10e2996039
commit
6f905970cd
|
|
@ -2,7 +2,7 @@ import ContentPasteIcon from "@mui/icons-material/ContentPaste";
|
||||||
import { Box, Button, Paper, Typography } from "@mui/material";
|
import { Box, Button, Paper, Typography } from "@mui/material";
|
||||||
import { useSuspenseQuery } from "@tanstack/react-query";
|
import { useSuspenseQuery } from "@tanstack/react-query";
|
||||||
import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
import { createFileRoute, useNavigate } from "@tanstack/react-router";
|
||||||
import { useCallback, useState } from "react";
|
import { useCallback, useState, useMemo } from "react";
|
||||||
import KennzahlenTable from "../components/KennzahlenTable";
|
import KennzahlenTable from "../components/KennzahlenTable";
|
||||||
import PDFViewer from "../components/pdfViewer";
|
import PDFViewer from "../components/pdfViewer";
|
||||||
import { kpiQueryOptions, settingsQueryOptions } from "../util/query";
|
import { kpiQueryOptions, settingsQueryOptions } from "../util/query";
|
||||||
|
|
@ -19,7 +19,6 @@ export const Route = createFileRoute("/extractedResult/$pitchBook")({
|
||||||
function ExtractedResultsPage() {
|
function ExtractedResultsPage() {
|
||||||
const { pitchBook } = Route.useParams();
|
const { pitchBook } = Route.useParams();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const status: "green" | "yellow" | "red" = "red";
|
|
||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const [focusHighlight, setFocusHighlight] = useState({
|
const [focusHighlight, setFocusHighlight] = useState({
|
||||||
page: 5,
|
page: 5,
|
||||||
|
|
@ -31,15 +30,38 @@ function ExtractedResultsPage() {
|
||||||
setFocusHighlight({ page, text: entity });
|
setFocusHighlight({ page, text: entity });
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const { data: kpi } = useSuspenseQuery(kpiQueryOptions(pitchBook));
|
||||||
|
const { data: settings } = useSuspenseQuery(settingsQueryOptions());
|
||||||
|
|
||||||
|
const status = useMemo(() => {
|
||||||
|
let hasRedBorders = false;
|
||||||
|
let hasYellowBorders = false;
|
||||||
|
|
||||||
|
settings
|
||||||
|
.filter((setting) => setting.active)
|
||||||
|
.forEach((setting) => {
|
||||||
|
const values = kpi[setting.name.toUpperCase()] || [];
|
||||||
|
const hasNoValue = setting.mandatory && (values.length === 0 || values[0]?.entity === "");
|
||||||
|
const hasMultipleValues = values.length > 1;
|
||||||
|
|
||||||
|
if (hasNoValue) {
|
||||||
|
hasRedBorders = true;
|
||||||
|
} else if (hasMultipleValues) {
|
||||||
|
hasYellowBorders = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (hasRedBorders) return "red";
|
||||||
|
if (hasYellowBorders) return "yellow";
|
||||||
|
return "green";
|
||||||
|
}, [kpi, settings]);
|
||||||
|
|
||||||
const statusColor = {
|
const statusColor = {
|
||||||
red: "#f43131",
|
red: "#f43131",
|
||||||
yellow: "#f6ed48",
|
yellow: "#f6ed48",
|
||||||
green: "#3fd942",
|
green: "#3fd942",
|
||||||
}[status];
|
}[status];
|
||||||
|
|
||||||
const { data: kpi } = useSuspenseQuery(kpiQueryOptions(pitchBook));
|
|
||||||
const { data: settings } = useSuspenseQuery(settingsQueryOptions());
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Box p={4}>
|
<Box p={4}>
|
||||||
<Box display="flex" alignItems="center" gap={3}>
|
<Box display="flex" alignItems="center" gap={3}>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue