diff --git a/lib/getStationList.ts b/lib/getStationList.ts
index 02608df..45d3e17 100644
--- a/lib/getStationList.ts
+++ b/lib/getStationList.ts
@@ -211,15 +211,11 @@ export const getStationList = async () => {
鳴門線,
stationList["日英対応表"]
);
- const tokushimaCurrent = addStationPosition(
+ stationList["徳島線(徳島-阿波池田間)[B]"] = addStationPosition(
concatBetweenStations(stationList["徳島線(徳島-阿波池田間)[B]"]),
徳島線,
stationList["日英対応表"]
);
- stationList["徳島線(徳島-阿波池田間)[B]"] = [
- tokushimaCurrent[tokushimaCurrent.length - 1],
- ...tokushimaCurrent,
- ];
stationList["徳島線(徳島-阿波池田間)[B]"].pop();
stationList["瀬戸大橋線(児島-宇多津間)[M]"] = [
{
diff --git a/lib/getTrainType.ts b/lib/getTrainType.ts
index 5dda2d3..151630c 100644
--- a/lib/getTrainType.ts
+++ b/lib/getTrainType.ts
@@ -5,7 +5,7 @@ type nameString =
| "SPCL"
| "Normal"
| string;
-type colorString = "aqua" | "red" | "#297bff" | "white";
+type colorString = "aqua" | "red" | "#297bff" | "white" | "pink";
type trainTypeString =
| "快速"
| "特急"
@@ -28,7 +28,7 @@ export const getTrainType: getTrainType = (nameString) => {
case "LTDEXP":
return { color: "red", name: "特急", data: "express" };
case "NightLTDEXP":
- return { color: "red", name: "寝台特急", data: "express" };
+ return { color: "pink", name: "寝台特急", data: "express" };
case "SPCL":
case "SPCL_Rapid":
case "SPCL_EXP":
diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts
index cc4076b..c0484d7 100644
--- a/lib/webViewInjectjavascript.ts
+++ b/lib/webViewInjectjavascript.ts
@@ -1055,6 +1055,8 @@ export const injectJavascriptData: InjectJavascriptData = (
const nameReplace = (列車名データ,列番データ,行き先情報,hasProblem) =>{
let isWanman = false;
let trainName = "";
+ let trainType = "";
+ let trainTypeColor = "black";
let viaData = "";
let ToData = "";
let TrainNumber = 列番データ;
@@ -1262,7 +1264,43 @@ export const injectJavascriptData: InjectJavascriptData = (
getThrew(列番データ);
if(trainDataList.find(e => e.id === 列番データ) !== undefined){
const data = trainDataList.find(e => e.id === 列番データ);
- //{id,isWanman,trainName,viaData,ToData}
+ //{id,isWanman,trainName,viaData,ToData,TrainNumber,JRF,type,infoUrl,trainNumDistance,info,infogram}
+ trainType = (()=>{
+ switch(data.type){
+ case "Normal":
+ trainTypeColor = "black";
+ return "普通";
+ case "OneMan":
+ trainTypeColor = "black";
+ return "普通";
+ case "Freight":
+ trainTypeColor = "black";
+ return "貨物";
+ case "SPCL_Normal":
+ trainTypeColor = "#297bff";
+ return "臨時";
+ case "SPCL_Rapid":
+ trainTypeColor = "#297bff";
+ return "臨時快速";
+ case "SPCL_LTDEXP":
+ trainTypeColor = "#297bff";
+ return "臨時特急";
+ case "LTDEXP":
+ trainTypeColor = "red";
+ return "特急";
+ case "NightLTDEXP":
+ trainTypeColor = "rgb(211, 0, 176)";
+ return "寝台特急";
+ case "OneManRapid":
+ trainTypeColor = "rgba(0, 140, 255, 1)";
+ return "快速";
+ case "Rapid":
+ trainTypeColor = "rgba(0, 140, 255, 1)";
+ return "快速";
+ default:
+ return "";
+ }
+ })();
isWanman = data.isWanman;
if(data.trainName != ""){
trainName = data.trainName;
@@ -1293,16 +1331,25 @@ export const injectJavascriptData: InjectJavascriptData = (
});
let getColors = [];
if(stationLines.length === 0){
- getColors = ["#000"];
+ getColors = ["rgba(97, 96, 96, 0.81)"];
}else{
getColors = stationLines.map(e => GetLineBarColor(e));
}
+ let yosan2Color = undefined;
+ if(viaData == "(内子経由)"){
+ yosan2Color ="#F5AC13";
+ }
+ else if(viaData == "(海経由)"){
+ yosan2Color = "#9AA7D7";
+ }
+
const gradient = getColors.length > 1 ? "linear-gradient(130deg, " + getColors[0] + " 0%, "+ getColors[0]+"50%, "+ getColors[1]+"50%, " + getColors[1] + " 100%)" : getColors[0];
行き先情報.insertAdjacentHTML('beforebegin', "" + TrainNumber + (JRF ? "":"レ") + "
");
行き先情報.insertAdjacentHTML('beforebegin', "" + (isWanman ? "ワンマン " : "") + "
");
- 行き先情報.insertAdjacentHTML('beforebegin', "" + viaData + "
");
+ 行き先情報.insertAdjacentHTML('beforebegin', "" + viaData + "
");
行き先情報.insertAdjacentHTML('beforebegin', "" + trainName + "
");
行き先情報.insertAdjacentHTML('beforebegin', "" + (ToData ? ToData + "行" : ToData) + "
");
+ 行き先情報.insertAdjacentHTML('beforebegin', "");
行き先情報.insertAdjacentHTML('beforebegin', "" + (hasProblem ? "‼️停止中‼️" : "") + "
");
`: `
行き先情報.insertAdjacentHTML('beforebegin', "" + returnText1 + "
");
@@ -1440,7 +1487,7 @@ const setStrings = () =>{
var 行き先情報 = element.getElementsByTagName("p")[0];
var 列番データ = element.getAttribute('offclick').split('"')[1];
var 列車名データ = element.getAttribute('offclick').split('"')[3];
- const trainData = trainPositionDatas.find(e => e.TrainNum == 列番データ);
+ const trainData = trainPositionDatas.filter(e=>!(e.Pos && e.Pos.includes("予告窓"))).find(e => e.TrainNum == 列番データ);
const hasProblem = probremsData.find((e)=>{
return e.TrainNum == trainData.TrainNum && e.Pos == trainData.Pos;
});
diff --git a/menu.js b/menu.js
index ac2491e..3f492ba 100644
--- a/menu.js
+++ b/menu.js
@@ -1,10 +1,12 @@
-import React, { useRef, useState, useEffect } from "react";
+import React, { useRef, useState, useEffect, useLayoutEffect } from "react";
import {
Platform,
View,
ScrollView,
useWindowDimensions,
LayoutAnimation,
+ Text,
+ TouchableOpacity,
} from "react-native";
import Constants from "expo-constants";
import {
@@ -17,7 +19,7 @@ import LED_vision from "./components/発車時刻表/LED_vidion";
import { TitleBar } from "./components/Menu/TitleBar";
import { FixedContentBottom } from "./components/Menu/FixedContentBottom";
-import { lineList } from "./lib/getStationList";
+import { lineList, stationIDPair } from "./lib/getStationList";
import { useFavoriteStation } from "./stateBox/useFavoriteStation";
import { useNavigation } from "@react-navigation/native";
import { useStationList } from "./stateBox/useStationList";
@@ -30,6 +32,9 @@ import { CarouselBox } from "./components/Menu/Carousel/CarouselBox";
import { CarouselTypeChanger } from "./components/Menu/Carousel/CarouselTypeChanger";
import { useUserPosition } from "./stateBox/useUserPosition";
import { AS } from "./storageControl";
+import { lineList_LineWebID } from "./lib/getStationList";
+import { Ionicons } from "@expo/vector-icons";
+import { SearchUnitBox } from "./components/Menu/RailScope/SearchUnitBox";
configureReanimatedLogger({
level: ReanimatedLogLevel.error, // Set the log level to error
strict: true, // Reanimated runs in strict mode by default
@@ -167,24 +172,52 @@ export default function Menu(props) {
const [listIndex, setListIndex] = useState(0);
const [listUpStation, setListUpStation] = useState([]);
- useEffect(() => {
- if (stationListMode == "position") {
- setListUpStation(nearPositionStation.filter((d) => d != undefined));
+ const [isSearchMode, setisSearchMode] = useState(false);
+ useLayoutEffect(() => {
+ if (!!isSearchMode) {
+ const returnData = [];
+ Object.keys(lineList_LineWebID).forEach((d, indexBase) => {
+ originalStationList[d].forEach((D, index) => {
+ if (
+ isSearchMode &&
+ isSearchMode != stationIDPair[lineList_LineWebID[d]]
+ )
+ return;
+ const latlng = [D.lat, D.lng];
+ if (latlng.length == 0) return null;
+ if (D.StationNumber == undefined) {
+ return null;
+ }
+ returnData.push([D]);
+ });
+ });
+ if (JSON.stringify(returnData) == JSON.stringify(listUpStation)) return;
+ setListUpStation(returnData);
+ } else if (stationListMode == "position") {
+ const returnData = nearPositionStation.filter((d) => d != undefined);
+ if (JSON.stringify(returnData) == JSON.stringify(listUpStation)) return;
+ setListUpStation(returnData);
} else {
- setListUpStation(favoriteStation.filter((d) => d != undefined));
+ const returnData = favoriteStation.filter((d) => d != undefined);
+ if (JSON.stringify(returnData) == JSON.stringify(listUpStation)) return;
+ setListUpStation(returnData);
}
- }, [nearPositionStation, favoriteStation, stationListMode]);
+ }, [nearPositionStation, favoriteStation, stationListMode, isSearchMode]);
useEffect(() => {
if (listUpStation.length == 0) {
setListIndex(0);
return;
}
+ if (listUpStation.length == 1) {
+ setListIndex(0);
+ return;
+ }
if (listUpStation[listIndex] == undefined) {
const count = listIndex - 1;
setMapMode(false);
setListIndex(count);
}
- }, [listIndex, nearPositionStation, listUpStation]);
+ }, [listIndex, listUpStation, isSearchMode]);
useEffect(() => {
if (originalStationList == undefined) return;
if (listUpStation.length == 0) return;
@@ -196,9 +229,18 @@ export default function Menu(props) {
latitudeDelta: 0.05,
longitudeDelta: 0.05,
};
- if (mapMode) return;
- mapsRef.current.animateToRegion(mapRegion, 1000);
- }, [listIndex, nearPositionStation, listUpStation, mapsRef]);
+ if (mapMode) {
+ mapsRef?.current.fitToCoordinates(
+ listUpStation.map((d) => ({
+ latitude: parseFloat(d[0].lat),
+ longitude: parseFloat(d[0].lng),
+ })),
+ { edgePadding: { top: 80, bottom: 120, left: 50, right: 50 } } // Add margin values here
+ );
+ } else {
+ mapsRef.current.animateToRegion(mapRegion, 1000);
+ }
+ }, [listIndex, listUpStation]);
return (
-
+ {!mapMode ? (
+
+ ) : (
+ <>>
+ //
+ // JRShikoku RailScope
+ //
+ )}
{
- console.log(e.nativeEvent.velocity);
if (e.nativeEvent.contentOffset.y < mapHeight - 80) {
if (scrollStartPosition > e.nativeEvent.contentOffset.y) {
goToMap();
@@ -303,16 +364,19 @@ export default function Menu(props) {
locationStatus,
position,
mapsRef,
+ scrollRef,
stationListMode,
setStationListMode,
setSelectedCurrentStation: setListIndex,
mapMode,
setMapMode,
+ isSearchMode,
+ setisSearchMode,
}}
/>
)}
- {listUpStation.length != 0 && originalStationList.length != 0 && (
+ {originalStationList.length != 0 && (
<>
{listUpStation[listIndex] && (
@@ -349,6 +414,8 @@ export default function Menu(props) {
setSelectedCurrentStation: setListIndex,
mapMode,
setMapMode,
+ isSearchMode,
+ setisSearchMode,
}}
/>
)}
diff --git a/stateBox/useCurrentTrain.js b/stateBox/useCurrentTrain.js
index 2d5d8e2..15f6b44 100644
--- a/stateBox/useCurrentTrain.js
+++ b/stateBox/useCurrentTrain.js
@@ -15,7 +15,7 @@ const initialState = {
currentTrainLoading: "loading",
setCurrentTrainLoading: () => {},
getCurrentTrain: () => {},
- inject: () => {},
+ inject: (i) => {},
};
const CurrentTrainContext = createContext(initialState);
diff --git a/stateBox/useStationList.tsx b/stateBox/useStationList.tsx
index 4a0d10a..7073735 100644
--- a/stateBox/useStationList.tsx
+++ b/stateBox/useStationList.tsx
@@ -92,7 +92,6 @@ export const StationListProvider: FC = ({ children }) => {
return;
}
if (x.StationNumber == StationNumber) {
- console.log(originalStationList[d]);
if (!x.MyStation) findNearStations = true;
else bootStationList.push({ line: lineName, station: x });
}