路線表示に駅名標を追加

This commit is contained in:
harukin-DeskMini
2022-11-05 19:11:14 +09:00
parent 673f7d94cf
commit 8d5ad6e50e
10 changed files with 211 additions and 103 deletions

107
Apps.js
View File

@@ -27,6 +27,7 @@ export default function Apps(props) {
//画面表示関連
const [iconSetting, setIconSetting] = useState(undefined);
const [mapSwitch, setMapSwitch] = useState(undefined);
const [stationMenu, setStationMenu] = useState(undefined);
//地図用
const [mapsStationData, setMapsStationData] = useState(undefined);
@@ -41,46 +42,14 @@ export default function Apps(props) {
const [stationBoardData, setStationBoardData] = useState(undefined);
const [originalStationList, setOriginalStationList] = useState();
const [selectedStation, setSelectedStation] = useState(undefined);
useEffect(() => {
getStationList().then(setOriginalStationList);
}, []);
useEffect(() => {
if (!originalStationList) return () => {};
const findStationEachLine = (selectLine) =>
selectLine.filter((d) => d.Station_JP == selectedStation);
const lineList = [
"予讃線",
"松宇線",
"伊予灘線",
"土讃線",
"窪川線",
"高徳線",
"徳島線",
"鳴門線",
];
let returnDataBase = lineList
.map((d) => findStationEachLine(originalStationList[d]))
.filter((d) => d.length > 0)
.reduce((pre, current) => {
pre.push(...current);
return pre;
}, []);
if (returnDataBase.length) {
let currentStation = currentStation == undefined ? [] : currentStation;
if (currentStation.toString() != returnDataBase.toString()) {
setStationBoardData(returnDataBase);
StationBoardAcSR.current?.setModalVisible();
}
} else {
setStationBoardData(undefined);
StationBoardAcSR.current?.hide();
}
}, [originalStationList, selectedStation]);
useEffect(() => getStationList().then(setOriginalStationList), []);
//地図表示テキスト
const injectJavascript = injectJavascriptData(mapSwitch, iconSetting);
const injectJavascript = injectJavascriptData(
mapSwitch,
iconSetting,
stationMenu
);
useEffect(() => {
//ニュース表示
@@ -123,6 +92,22 @@ export default function Apps(props) {
Updates.reloadAsync()
)
);
//駅メニュースイッチ
AsyncStorage.getItem("stationSwitch")
.then((d) => {
if (d) {
setStationMenu(d);
} else {
AsyncStorage.setItem("stationSwitch", "true").then(() =>
Updates.reloadAsync()
);
}
})
.catch((d) =>
AsyncStorage.setItem("stationSwitch", "true").then(() =>
Updates.reloadAsync()
)
);
}, []);
return (
@@ -146,7 +131,6 @@ export default function Apps(props) {
allowsBackForwardNavigationGestures={true}
setSupportMultipleWindows={true}
onNavigationStateChange={(event) => {
console.log(event);
if (event.url != urlcache) {
//URL二重判定回避
urlcache = event.url;
@@ -168,7 +152,50 @@ export default function Apps(props) {
}
}}
onMessage={(event) => {
console.log(event.nativeEvent.data);
if (event.nativeEvent.data.includes("PopUpMenu")) {
const selectedStationPDFAddress = event.nativeEvent.data
.split(",")[3]
.replace("'", "")
.replace("'", "");
if (!originalStationList) alert("originalStationListがありません");
const findStationEachLine = (selectLine) => {
let NearStation = selectLine.filter(
(d) => d.StationTimeTable == selectedStationPDFAddress
);
return NearStation;
};
const lineList = [
"予讃線",
"松宇線",
"伊予灘線",
"土讃線",
"窪川線",
"高徳線",
"徳島線",
"鳴門線",
"瀬戸大橋線",
];
let returnDataBase = lineList
.map((d) => findStationEachLine(originalStationList[d]))
.filter((d) => d.length > 0)
.reduce((pre, current) => {
pre.push(...current);
return pre;
}, []);
if (returnDataBase.length) {
let currentStation =
currentStation == undefined ? [] : currentStation;
setStationBoardData(returnDataBase);
StationBoardAcSR.current?.setModalVisible();
} else {
setStationBoardData(undefined);
StationBoardAcSR.current?.hide();
}
return;
}
navigate("trainbase", { info: event.nativeEvent.data });
}}
injectedJavaScript={injectJavascript}