168 lines
5.6 KiB
JavaScript
168 lines
5.6 KiB
JavaScript
import 予讃線 from "../assets/四国旅客鉄道予讃線.json";
|
||
import 土讃線 from "../assets/四国旅客鉄道土讃線.json";
|
||
import 高徳線 from "../assets/四国旅客鉄道高徳線.json";
|
||
import 内子線 from "../assets/四国旅客鉄道内子線.json";
|
||
import 徳島線 from "../assets/四国旅客鉄道徳島線.json";
|
||
import 鳴門線 from "../assets/四国旅客鉄道鳴門線.json";
|
||
|
||
let status = undefined;
|
||
|
||
export const getStationList = async (props) => {
|
||
if (status) return status;
|
||
//駅リストイニシャライズ
|
||
const HeaderConfig = {
|
||
headers: {
|
||
referer: "https://train.jr-shikoku.co.jp/sp.html",
|
||
},
|
||
};
|
||
return await Promise.all([
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=yosan",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=uwajima",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=uwajima2",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=dosan",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=dosan2",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=koutoku",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=tokushima",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=naruto",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=between",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
fetch(
|
||
"https://train.jr-shikoku.co.jp/g?arg1=line&arg2=train_lang",
|
||
HeaderConfig
|
||
).then((response) => response.json()),
|
||
]).then((values) => {
|
||
let stationList = {};
|
||
[
|
||
stationList.予讃線,
|
||
stationList.松宇線,
|
||
stationList.伊予灘線,
|
||
stationList.土讃線,
|
||
stationList.窪川線,
|
||
stationList.高徳線,
|
||
stationList.徳島線,
|
||
stationList.鳴門線,
|
||
stationList.駅間リスト,
|
||
stationList.日英対応表,
|
||
] = values;
|
||
const concatBetweenStations = (eachRouteData) => {
|
||
let additional = [];
|
||
eachRouteData.forEach((routeData, routeIndex) => {
|
||
try {
|
||
const currentStationID = parseInt(
|
||
routeData.StationNumber.replace(/[A-Z]/g, "")
|
||
);
|
||
const nextStationID = parseInt(
|
||
eachRouteData[routeIndex + 1].StationNumber.replace(/[A-Z]/g, "")
|
||
);
|
||
if (nextStationID - currentStationID != 1) {
|
||
stationList.駅間リスト.forEach((betweenList) => {
|
||
if (
|
||
betweenList.BetweenStation ==
|
||
routeData.Station_JP +
|
||
"~" +
|
||
eachRouteData[routeIndex + 1].Station_JP
|
||
) {
|
||
additional = additional.concat(betweenList.Datas);
|
||
}
|
||
});
|
||
}
|
||
} catch (e) {}
|
||
});
|
||
return eachRouteData
|
||
.concat(additional)
|
||
.sort((a, b) => (a.StationNumber > b.StationNumber ? 1 : -1));
|
||
};
|
||
const addStationPosition = (setDataBase, geoJson, EnJpList) => {
|
||
return setDataBase.map((data) => {
|
||
let stationName;
|
||
if (data.hasOwnProperty("Station_JP")) stationName = data.Station_JP;
|
||
else if (data.hasOwnProperty("StationName")) {
|
||
stationName = data.StationName;
|
||
data.Station_JP = data.StationName;
|
||
data.Station_EN = EnJpList.find(
|
||
(d) => d.Station_JP == data.Station_JP
|
||
).Station_EN;
|
||
}
|
||
geoJson.features
|
||
.filter((d) => d.geometry.type == "Point")
|
||
.forEach((element) => {
|
||
if (element.properties.name == stationName) {
|
||
data.lat = element.geometry.coordinates[1];
|
||
data.lng = element.geometry.coordinates[0];
|
||
}
|
||
});
|
||
return data;
|
||
});
|
||
};
|
||
console.log(stationList.予讃線);
|
||
stationList.予讃線 = addStationPosition(
|
||
concatBetweenStations(stationList.予讃線),
|
||
予讃線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.松宇線 = addStationPosition(
|
||
concatBetweenStations(stationList.松宇線),
|
||
予讃線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.伊予灘線 = addStationPosition(
|
||
concatBetweenStations(stationList.伊予灘線),
|
||
予讃線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.土讃線 = addStationPosition(
|
||
concatBetweenStations(stationList.土讃線),
|
||
土讃線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.窪川線 = addStationPosition(
|
||
concatBetweenStations(stationList.窪川線),
|
||
土讃線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.高徳線 = addStationPosition(
|
||
concatBetweenStations(stationList.高徳線),
|
||
高徳線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.徳島線 = addStationPosition(
|
||
concatBetweenStations(stationList.徳島線),
|
||
徳島線,
|
||
stationList.日英対応表
|
||
);
|
||
stationList.鳴門線 = addStationPosition(
|
||
concatBetweenStations(stationList.鳴門線),
|
||
鳴門線,
|
||
stationList.日英対応表
|
||
);
|
||
status = stationList;
|
||
return stationList;
|
||
});
|
||
};
|