diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx index 6c0ac8f..7d605de 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx @@ -10,6 +10,8 @@ import { trainPosition } from "../../../lib/trainPositionTextArray"; import { StationPosPushDialog } from "../../発車時刻表/LED_inside_Component/TrainPositionDataPush"; import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; import { useStationList } from "../../../stateBox/useStationList"; +import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram"; +import { customTrainDataDetector } from "@/components/custom-train-data"; export const TrainDataView = ({ currentTrainData, @@ -24,6 +26,8 @@ export const TrainDataView = ({ const { width, height } = useWindowDimensions(); const { isLandscape } = useDeviceOrientationChange(); const { inject } = useCurrentTrain(); + + const { allCustomTrainData } = useAllTrainDiagram(); const [mapsStationData, setMapsStationData] = useState(undefined); const [platformNumber, setPlatformNumber] = useState(); @@ -72,6 +76,14 @@ export const TrainDataView = ({ }, []); const onLine = !!currentPosition?.toString().length; + const [trainNumber, setTrainNumber] = useState(currentTrainData?.num); + useEffect(() => { + const { + TrainNumberOverride, + } = customTrainDataDetector(currentTrainData?.num, allCustomTrainData); + if (!TrainNumberOverride) return; + setTrainNumber(TrainNumberOverride); + }, [currentTrainData?.num, allCustomTrainData]); // 投稿システム関係 // Dialog表示関係 const [dialog, setDialog] = useState(false); @@ -88,7 +100,6 @@ export const TrainDataView = ({ const [descInput, setDescInput] = useState(""); const openEditWindow = () => { - const { isBetween, Pos } = trainPosition(currentTrainData); if (isBetween === true) return; //固定値 @@ -193,7 +204,7 @@ export const TrainDataView = ({ }} > {nearTrainIDList.length == 0 ? ( - + ) : ( = ({ isEdit, uwasa, vehicleFormation, + trainInfoUrl, ] = useMemo(() => { - const { type, trainName, trainNumDistance, infogram, isEdit, uwasa, vehicleFormation } = - customTrainDataDetector(trainNum, allCustomTrainData); + const { + type, + trainName, + trainNumDistance, + infogram, + isEdit, + uwasa, + vehicleFormation, + trainInfoUrl, + } = customTrainDataDetector(trainNum, allCustomTrainData); const [typeString, fontAvailable, isOneMan] = getStringConfig( type, trainNum @@ -81,7 +91,8 @@ export const HeaderText: FC = ({ infogram, isEdit, uwasa, - vehicleFormation + vehicleFormation, + trainInfoUrl, ]; case trainData[trainData.length - 1] === undefined: return [ @@ -92,7 +103,8 @@ export const HeaderText: FC = ({ infogram, isEdit, uwasa, - vehicleFormation + vehicleFormation, + trainInfoUrl, ]; default: // 行先がある場合は、行先を取得 @@ -106,7 +118,8 @@ export const HeaderText: FC = ({ infogram, isEdit, uwasa, - vehicleFormation + vehicleFormation, + trainInfoUrl, ]; } }, [trainData]); @@ -122,11 +135,20 @@ export const HeaderText: FC = ({ { + if (!updatePermission) return; const uri = `https://jr-shikoku-data-post-system.pages.dev?trainNum=${trainNum}&token=${expoPushToken}`; navigate("generalWebView", { uri, useExitButton: false }); SheetManager.hide("EachTrainInfo"); }} - disabled={!updatePermission} + onPress={() => { + if (!trainInfoUrl) return; + const uri = trainInfoUrl.includes("pdf") + ? getPDFViewURL(trainInfoUrl) + : trainInfoUrl; + navigate("generalWebView", { uri, useExitButton: true }); + SheetManager.hide("EachTrainInfo"); + }} + disabled={!(!!updatePermission || !!trainInfoUrl)} > = ({ {isOneMan && } {trainName} - {isEdit && ( - - alert( - `[このアイコン、列車データはコミュニティによってリアルタイム追加されています。]\n使用車両情報:\n${vehicleFormation}\n投稿者メモ:\n${uwasa || "なし"}` - ) - } - /> - )} + {isEdit && ( + + alert( + `[このアイコン、列車データはコミュニティによってリアルタイム追加されています。]\n使用車両情報:\n${vehicleFormation}\n投稿者メモ:\n${ + uwasa || "なし" + }` + ) + } + /> + )} diff --git a/stateBox/useAllTrainDiagram.js b/stateBox/useAllTrainDiagram.js index 06e3a92..a569f3d 100644 --- a/stateBox/useAllTrainDiagram.js +++ b/stateBox/useAllTrainDiagram.js @@ -31,7 +31,14 @@ export const AllTrainDiagramProvider = ({ children }) => { const keys = Object.keys(d); data[keys] = d[keys]; }); - return data; + //dataのkeyで並び替え + const sortedData = Object.keys(data) + .sort((a, b) => a.replace(/[D,M]/, "") - b.replace(/[D,M]/, "")) + .reduce((acc, key) => { + acc[key] = data[key]; + return acc; + }, {}); + return sortedData; }) .then((res) => { setAllTrainDiagram(res);