refactor: 시도, 시군구 순서 Custom 정렬
This commit is contained in:
@@ -57,10 +57,47 @@ export const ComboSearchBar = ({
|
|||||||
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`;
|
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`;
|
||||||
const res = await fetch(url).then(res => res.json());
|
const res = await fetch(url).then(res => res.json());
|
||||||
|
|
||||||
const list = res.features.map((f: any) => ({
|
const list = res.features
|
||||||
text: f.properties.mctpv_korn_nm,
|
.map((f: any) => ({
|
||||||
val: f.properties.mctpv_cd,
|
text: f.properties.mctpv_korn_nm,
|
||||||
}));
|
val: f.properties.mctpv_cd,
|
||||||
|
})).sort((a, b) => {
|
||||||
|
// 커스텀 순서 정의
|
||||||
|
const customOrder = [
|
||||||
|
"서울특별시",
|
||||||
|
"부산광역시",
|
||||||
|
"대구광역시",
|
||||||
|
"인천광역시",
|
||||||
|
"광주광역시",
|
||||||
|
"대전광역시",
|
||||||
|
"울산광역시",
|
||||||
|
"세종특별자치시",
|
||||||
|
"경기도",
|
||||||
|
"강원특별자치도", // 경기도 다음에 배치
|
||||||
|
"충청북도",
|
||||||
|
"충청남도",
|
||||||
|
"전북특별자치도", // 충청남도 다음에 배치
|
||||||
|
"전라남도",
|
||||||
|
"경상북도",
|
||||||
|
"경상남도",
|
||||||
|
"제주특별자치도"
|
||||||
|
];
|
||||||
|
|
||||||
|
const indexA = customOrder.indexOf(a.text);
|
||||||
|
const indexB = customOrder.indexOf(b.text);
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 있으면 해당 순서로
|
||||||
|
if (indexA !== -1 && indexB !== -1) {
|
||||||
|
return indexA - indexB;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 하나만 커스텀 순서에 있으면 그것을 앞으로
|
||||||
|
if (indexA !== -1) return -1;
|
||||||
|
if (indexB !== -1) return 1;
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 없으면 기본 알파벳 순서
|
||||||
|
return a.text.localeCompare(b.text, 'ko');
|
||||||
|
});
|
||||||
setSidoData([{ text: "선택", val: "0" }, ...list]);
|
setSidoData([{ text: "선택", val: "0" }, ...list]);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -68,10 +105,12 @@ export const ComboSearchBar = ({
|
|||||||
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_sgg&outputFormat=application/json&propertyName=sgg_cd,sgg_korn_nm`;
|
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_sgg&outputFormat=application/json&propertyName=sgg_cd,sgg_korn_nm`;
|
||||||
const res = await fetch(url).then(res => res.json());
|
const res = await fetch(url).then(res => res.json());
|
||||||
|
|
||||||
const list = res.features.map((f: any) => ({
|
const list = res.features
|
||||||
text: f.properties.sgg_korn_nm,
|
.map((f: any) => ({
|
||||||
val: f.properties.sgg_cd,
|
text: f.properties.sgg_korn_nm,
|
||||||
}));
|
val: f.properties.sgg_cd,
|
||||||
|
}))
|
||||||
|
.sort((a, b) => a.text.localeCompare(b.text, 'ko'));
|
||||||
setSigunData(list);
|
setSigunData(list);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -43,11 +43,49 @@ export const ProcSearchBar = ({ gisMaps, facilityTypes }: SearchBarProps) => {
|
|||||||
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`;
|
const url = `/geoserver/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo:tb_ms_ctpv&outputFormat=application/json&propertyName=mctpv_korn_nm,mctpv_cd`;
|
||||||
const res = await fetch(url).then(res => res.json());
|
const res = await fetch(url).then(res => res.json());
|
||||||
|
|
||||||
const list = res.features.map((f: any) => ({
|
const list = res.features
|
||||||
text: f.properties.mctpv_korn_nm,
|
.map((f: any) => ({
|
||||||
val: f.properties.mctpv_cd,
|
text: f.properties.mctpv_korn_nm,
|
||||||
}));
|
val: f.properties.mctpv_cd,
|
||||||
setSidoData([{ text: "선택", val: "0" }, ...list]);
|
}))
|
||||||
|
.sort((a, b) => {
|
||||||
|
// 커스텀 순서 정의
|
||||||
|
const customOrder = [
|
||||||
|
"서울특별시",
|
||||||
|
"부산광역시",
|
||||||
|
"대구광역시",
|
||||||
|
"인천광역시",
|
||||||
|
"광주광역시",
|
||||||
|
"대전광역시",
|
||||||
|
"울산광역시",
|
||||||
|
"세종특별자치시",
|
||||||
|
"경기도",
|
||||||
|
"강원특별자치도", // 경기도 다음에 배치
|
||||||
|
"충청북도",
|
||||||
|
"충청남도",
|
||||||
|
"전북특별자치도", // 충청남도 다음에 배치
|
||||||
|
"전라남도",
|
||||||
|
"경상북도",
|
||||||
|
"경상남도",
|
||||||
|
"제주특별자치도"
|
||||||
|
];
|
||||||
|
|
||||||
|
const indexA = customOrder.indexOf(a.text);
|
||||||
|
const indexB = customOrder.indexOf(b.text);
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 있으면 해당 순서로
|
||||||
|
if (indexA !== -1 && indexB !== -1) {
|
||||||
|
return indexA - indexB;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 하나만 커스텀 순서에 있으면 그것을 앞으로
|
||||||
|
if (indexA !== -1) return -1;
|
||||||
|
if (indexB !== -1) return 1;
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 없으면 기본 알파벳 순서
|
||||||
|
return a.text.localeCompare(b.text, 'ko');
|
||||||
|
});
|
||||||
|
setSidoData([{ text: "시도", val: "0" }, ...list]);
|
||||||
};
|
};
|
||||||
|
|
||||||
const fetchSigungu = async () => {
|
const fetchSigungu = async () => {
|
||||||
|
|||||||
@@ -58,10 +58,48 @@ export const SearchBar = ({
|
|||||||
const json = await res.json();
|
const json = await res.json();
|
||||||
const sidoList = json
|
const sidoList = json
|
||||||
.filter((item: any) => item.lwpoCd?.length === 2)
|
.filter((item: any) => item.lwpoCd?.length === 2)
|
||||||
.map((item: any) => ({ val: item.lwpoCd, text: item.lwpoCdNm }));
|
.map((item: any) => ({ val: item.lwpoCd, text: item.lwpoCdNm }))
|
||||||
|
.sort((a, b) => {
|
||||||
|
// 커스텀 순서 정의
|
||||||
|
const customOrder = [
|
||||||
|
"서울특별시",
|
||||||
|
"부산광역시",
|
||||||
|
"대구광역시",
|
||||||
|
"인천광역시",
|
||||||
|
"광주광역시",
|
||||||
|
"대전광역시",
|
||||||
|
"울산광역시",
|
||||||
|
"세종특별자치시",
|
||||||
|
"경기도",
|
||||||
|
"강원특별자치도", // 경기도 다음에 배치
|
||||||
|
"충청북도",
|
||||||
|
"충청남도",
|
||||||
|
"전북특별자치도", // 충청남도 다음에 배치
|
||||||
|
"전라남도",
|
||||||
|
"경상북도",
|
||||||
|
"경상남도",
|
||||||
|
"제주특별자치도"
|
||||||
|
];
|
||||||
|
|
||||||
|
const indexA = customOrder.indexOf(a.text);
|
||||||
|
const indexB = customOrder.indexOf(b.text);
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 있으면 해당 순서로
|
||||||
|
if (indexA !== -1 && indexB !== -1) {
|
||||||
|
return indexA - indexB;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 하나만 커스텀 순서에 있으면 그것을 앞으로
|
||||||
|
if (indexA !== -1) return -1;
|
||||||
|
if (indexB !== -1) return 1;
|
||||||
|
|
||||||
|
// 둘 다 커스텀 순서에 없으면 기본 알파벳 순서
|
||||||
|
return a.text.localeCompare(b.text, 'ko');
|
||||||
|
});
|
||||||
const sigunList = json
|
const sigunList = json
|
||||||
.filter((item: any) => item.lwpoCd?.length > 2)
|
.filter((item: any) => item.lwpoCd?.length > 2)
|
||||||
.map((item: any) => ({ val: item.lwpoCd, text: item.lwpoCdNm }));
|
.map((item: any) => ({ val: item.lwpoCd, text: item.lwpoCdNm }))
|
||||||
|
.sort((a, b) => a.text.localeCompare(b.text, 'ko'));
|
||||||
setSidoData([{ text: "시도", val: "0" }, ...sidoList]);
|
setSidoData([{ text: "시도", val: "0" }, ...sidoList]);
|
||||||
setSigunData(sigunList);
|
setSigunData(sigunList);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user