[st] feat: HB 통계 검증 페이지 수정사항 반영

This commit is contained in:
2026-04-28 10:59:10 +09:00
parent 47b582c5cc
commit 78defdd050
4 changed files with 31 additions and 55 deletions
@@ -65,21 +65,15 @@ const Indicators: React.FC<IndicatorsProps> = ({ anlsSn, vrfcTrgtSn }) => {
return (
<div className="card card-border !m-0 grid min-h-[10rem] grid-cols-4 gap-2">
<IndicatorItem label="r 중위수" value={dtl?.rtCnterVl} />
<IndicatorItem label="R 중위수" value={dtl?.rtCnterVl} />
<IndicatorItem label="E 중위수" value={dtl?.lastTrsfScrCnterVl} />
<IndicatorItem label="하위 기준값" value={dtl?.lastTrsfScrLlmtVl} />
<IndicatorItem
label="(E_m)E 중위수"
value={dtl?.lastTrsfScrCnterVl}
/>
<IndicatorItem
label="(E_l)E 하한값"
value={dtl?.lastTrsfScrLlmtVl}
/>
<IndicatorItem
label="(E_u)E 상한값"
label="상위 기준값"
value={dtl?.lastTrsfScrUplmtVl}
/>
<IndicatorItem label="E_D_L" value={dtl?.llmtVl} />
<IndicatorItem label="E_D_U" value={dtl?.uplmtVl} />
<IndicatorItem label="이상치 하한값" value={dtl?.llmtVl} />
<IndicatorItem label="이상치 상한값" value={dtl?.uplmtVl} />
<IndicatorItem label="이상치 하한선" value={dtl?.otlrLlmtLine} />
<IndicatorItem label="이상치 상한선" value={dtl?.otlrUplmtLine} />
</div>
@@ -46,11 +46,6 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
selectedRowId,
appliedFilter,
}) => {
const [selectedSido, setSelectedSido] = useState<string>("");
const [selectedGugun, setSelectedGugun] = useState<string>("");
const [selectedStatus, setSelectedStatus] = useState<string>("");
const [showAllOnEmptyFilter, setShowAllOnEmptyFilter] =
useState<boolean>(true);
const [isDownloading, setIsDownloading] = useState<boolean>(false);
const [gridRowData, setGridRowData] = useState<
@@ -58,7 +53,7 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
>([]);
const { data: sidoData } = useStAnlsSidoCombo();
const { data: gugunData } = useStAnlsSigunguCombo(selectedSido);
const { data: gugunData } = useStAnlsSigunguCombo(appliedFilter.sido ?? "");
const sidoOptions = sidoData ?? EMPTY_ADST_LIST;
const gugunOptions = gugunData ?? EMPTY_ADST_LIST;
@@ -69,14 +64,7 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
const rowData = useMemo(() => {
let data = (resultData?.content ?? []) as StAnlsRsltResponse[];
if (
!appliedFilter.sido &&
!appliedFilter.gugun &&
!appliedFilter.status
) {
data = showAllOnEmptyFilter ? data : [];
} else {
{
const sidoCd = appliedFilter.sido;
if (sidoCd) {
data = data.filter((item) =>
@@ -116,32 +104,18 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
}));
return mappedData;
}, [resultData, appliedFilter, showAllOnEmptyFilter]);
}, [resultData, appliedFilter]);
const handleSidoChange = (val: string) => {
setSelectedSido(val);
setSelectedGugun("");
};
const handleSearch = () => {
onFilterChange({
sido: selectedSido,
gugun: selectedGugun,
status: selectedStatus,
});
setShowAllOnEmptyFilter(false);
onFilterChange({ ...appliedFilter, sido: val, gugun: "" });
};
const handleReset = () => {
setSelectedSido("");
setSelectedGugun("");
setSelectedStatus("");
onFilterChange({
sido: "",
gugun: "",
status: "",
});
setShowAllOnEmptyFilter(true);
};
const handleDownload = async () => {
@@ -182,7 +156,7 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
<div className="flex justify-between">
<div className="flex items-center gap-2">
<Select
value={selectedSido || ""}
value={appliedFilter.sido || ""}
onValueChange={handleSidoChange}
>
<SelectTrigger className="w-[12rem] bg-white">
@@ -197,9 +171,11 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
</SelectContent>
</Select>
<Select
value={selectedGugun}
onValueChange={setSelectedGugun}
disabled={!selectedSido}
value={appliedFilter.gugun || ""}
onValueChange={(val) =>
onFilterChange({ ...appliedFilter, gugun: val })
}
disabled={!appliedFilter.sido}
>
<SelectTrigger className="w-[12rem] bg-white">
<SelectValue placeholder="시군구 선택" />
@@ -213,8 +189,10 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
</SelectContent>
</Select>
<Select
value={selectedStatus}
onValueChange={setSelectedStatus}
value={appliedFilter.status || ""}
onValueChange={(val) =>
onFilterChange({ ...appliedFilter, status: val })
}
>
<SelectTrigger className="w-[10rem] bg-white">
<SelectValue placeholder="상태 선택" />
@@ -231,7 +209,7 @@ const RegionalGrid: React.FC<RegionalGridProps> = ({
<Button color="white" onClick={handleReset}>
초기화
</Button>
<Button onClick={handleSearch}>조회</Button>
{/* <Button onClick={handleSearch}>조회</Button> */}
<Button
color="green"
onClick={handleDownload}
@@ -104,10 +104,12 @@ const ScatterChart: React.FC<ScatterChartProps> = ({
anlsSn,
vrfcTrgtSn,
);
console.log("resultData: ", resultData);
const { data: chartData, isLoading: isLoadingChart } = useStAnlsChartData(
anlsSn,
vrfcTrgtSn,
);
console.log("chartData: ", chartData);
const isLoading = isLoadingGrid || isLoadingChart;
@@ -158,10 +160,12 @@ const ScatterChart: React.FC<ScatterChartProps> = ({
item,
};
if (item.otlrYnCd === "0") {
normalPoints.push(pt);
} else {
if (item.otlrYnCd === "2") {
return;
} else if (item.otlrYnCd === "1") {
outlierPoints.push(pt);
} else {
normalPoints.push(pt);
}
});
@@ -47,7 +47,7 @@ export const regionalGridColumnInfo: ColumnInfo = {
{
name: "chgRt",
fieldName: "chgRt",
header: { text: "R" },
header: { text: "전년대비 비율" },
width: 60,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
@@ -55,7 +55,7 @@ export const regionalGridColumnInfo: ColumnInfo = {
{
name: "trsfRt",
fieldName: "trsfRt",
header: { text: "S" },
header: { text: "S_i" },
width: 60,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",
@@ -63,7 +63,7 @@ export const regionalGridColumnInfo: ColumnInfo = {
{
name: "otlrTrsfRt",
fieldName: "otlrTrsfRt",
header: { text: "E" },
header: { text: "기준값" },
width: 60,
valueType: ValueType.NUMBER,
dataFormat: "#,##0.00",