sn: 시도 전체일 때, 시군구 목록 비우기

This commit is contained in:
2026-09-04 11:00:38 +09:00
parent 7fd95ba6f9
commit 10d3fc096a
11 changed files with 15 additions and 12 deletions
@@ -57,7 +57,7 @@ export default function AgedPipePopupPage() {
const sggOptions = useMemo(
() =>
filters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
),
@@ -126,7 +126,7 @@ export default function FldngHstryPopupPage() {
const sggOptions = useMemo(
() =>
filters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
),
@@ -101,7 +101,7 @@ export default function FloodDngrMapPopupPage() {
availableSggCodes.has(String(item.val).trim().slice(0, 5)),
);
return filters.ctpvCd === "0"
? scopedOptions
? []
: scopedOptions.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
);
@@ -388,7 +388,7 @@ export default function PipeAnalysisPopupPage() {
const sggOptions = useMemo(
() =>
draftFilters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) =>
String(item.val).startsWith(draftFilters.ctpvCd.slice(0, 2)),
),
@@ -85,7 +85,7 @@ export default function SbmrgDngrMapPopupPage() {
availableSggCodes.has(String(item.val).trim().slice(0, 5)),
);
return filters.ctpvCd === "0"
? scopedOptions
? []
: scopedOptions.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
);
@@ -197,7 +197,7 @@ export default function SinkholePopupPage() {
const sggOptions = useMemo(
() =>
filters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
),
@@ -366,7 +366,7 @@ export default function WaterRiskPopupPage(_props: WindowPopupContentProps) {
areaOptions
.filter(
(option) =>
draftResultFilters.ctpvCd === "ALL" ||
draftResultFilters.ctpvCd !== "ALL" &&
option.ctpvCd === draftResultFilters.ctpvCd,
)
.forEach((option) => {
@@ -382,7 +382,7 @@ export default function WaterRiskPopupPage(_props: WindowPopupContentProps) {
() =>
areaOptions.filter(
(option) =>
(draftResultFilters.ctpvCd === "ALL" ||
(draftResultFilters.ctpvCd !== "ALL" &&
option.ctpvCd === draftResultFilters.ctpvCd) &&
(draftResultFilters.sggCd === "ALL" ||
option.sggCd === draftResultFilters.sggCd),
@@ -361,7 +361,7 @@ const Page = () => {
/** 선택한 시도 코드와 앞 두 자리가 같은 시군구만 후보로 제공한다. */
const availableSggOptions = useMemo(() => {
if (ctpvCd === "0") return sggRegionOptions;
if (ctpvCd === "0") return [];
const ctpvPrefix = ctpvCd.slice(0, 2);
return sggRegionOptions.filter((option) =>
String(option.val).startsWith(ctpvPrefix),
@@ -41,7 +41,7 @@ export default function AgedPipeListModal({
const { ctpv, sgg } = useStore();
const lastClickRef = useRef<{ index: number; clickedAt: number } | null>(null);
const sggOptions = filters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) => String(item.val).startsWith(filters.ctpvCd.slice(0, 2)));
const handleRowClick = (index?: number) => {
@@ -240,7 +240,7 @@ export default function FldngPredcPrstPopupContent() {
const sggOptions = useMemo(
() =>
filters.ctpvCd === "0"
? sgg
? []
: sgg.filter((item) =>
String(item.val).startsWith(filters.ctpvCd.slice(0, 2)),
),
@@ -40,12 +40,15 @@ export const buildObsltPplRepresentativeSggOptions = (
sggOptions: RegionOption[],
ctpvCd: string,
) => {
// 시도가 전체(0)이면 시군구를 선택할 수 없도록 목록을 비운다.
if (ctpvCd === "0") return [];
const representativeMap = new Map<string, RegionOption>();
sggOptions
.filter((option) => {
const optionCode = String(option.val ?? "").trim();
return ctpvCd === "0" || optionCode.startsWith(ctpvCd.slice(0, 2));
return optionCode.startsWith(ctpvCd.slice(0, 2));
})
.forEach((option) => {
const representativeName = normalizeObsltPplSigunName(option.text);