From 8edf26c9be55fea38623455c69bf9bafaee578f2 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Fri, 15 Aug 2025 13:40:26 +0000 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E6=83=85=E5=A0=B1?= =?UTF-8?q?=E3=81=AE=E6=8A=95=E7=A8=BF=E6=A9=9F=E8=83=BD=E3=81=8Crelative?= =?UTF-8?q?=E3=81=AB=E3=81=AA=E3=81=A3=E3=81=A6=E3=81=84=E3=82=8B=E3=81=9B?= =?UTF-8?q?=E3=81=84=E3=81=A7=E3=81=8A=E3=81=8B=E3=81=97=E3=81=AA=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E6=83=85=E5=A0=B1=E3=81=8C=E6=8F=90=E4=BE=9B=E3=81=95?= =?UTF-8?q?=E3=82=8C=E3=81=A6=E3=81=84=E3=81=9F=E3=83=90=E3=82=B0=E3=82=92?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{TrainDataView.js => TrainDataView.tsx} | 83 +++++++++++------- components/発車時刻表/EachData.tsx | 76 ++++++++++------- .../LED_inside_Component/TrainPosition.tsx | 85 +++++++++++-------- .../TrainPositionDataDelete.tsx | 32 ++++--- .../LED_inside_Component/TrainPositionDataPush.tsx | 47 +++++----- 5 files changed, 194 insertions(+), 129 deletions(-) rename components/ActionSheetComponents/EachTrainInfo/{TrainDataView.js => TrainDataView.tsx} (77%) diff --git a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx similarity index 77% rename from components/ActionSheetComponents/EachTrainInfo/TrainDataView.js rename to components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx index 9dd81fa..6c0ac8f 100644 --- a/components/ActionSheetComponents/EachTrainInfo/TrainDataView.js +++ b/components/ActionSheetComponents/EachTrainInfo/TrainDataView.tsx @@ -7,7 +7,7 @@ import { getStationList2 } from "../../../lib/getStationList"; import { useCurrentTrain } from "../../../stateBox/useCurrentTrain"; import { SheetManager } from "react-native-actions-sheet"; import { trainPosition } from "../../../lib/trainPositionTextArray"; -import { TrainPositionDataPush } from "../../発車時刻表/LED_inside_Component/TrainPositionDataPush"; +import { StationPosPushDialog } from "../../発車時刻表/LED_inside_Component/TrainPositionDataPush"; import { getStationID } from "../../../lib/eachTrainInfoCoreLib/getStationData"; import { useStationList } from "../../../stateBox/useStationList"; @@ -29,6 +29,15 @@ export const TrainDataView = ({ const [platformNumber, setPlatformNumber] = useState(); const [lineNumber, setLineNumber] = useState(); const [platformDescription, setPlatformDescription] = useState(); + type data = { + type: string; + lineNumber: string; + platformNumber: string; + position: string; + stationName: string; + description: string; + }; + const [database, setDatabase] = useState(null); useEffect(() => { //currentTrainData.Pos = "鴨川~端岡"; //test if (!currentTrainData) return; @@ -46,6 +55,7 @@ export const TrainDataView = ({ position, description, } = data; + setDatabase(data); if (type == "Station") { setLineNumber(lineNumber); setPlatformNumber(platformNumber); @@ -61,18 +71,51 @@ export const TrainDataView = ({ getStationList2().then(setMapsStationData); }, []); const onLine = !!currentPosition?.toString().length; + + // 投稿システム関係 + // Dialog表示関係 const [dialog, setDialog] = useState(false); - const [posInput, setPosInput] = useState(""); - const [descInput, setDescInput] = useState(""); - const [stationNumberInput, setStationNumberInput] = useState(""); - const [lineInput, setLineInput] = useState(""); + const [deleteDialog, setDeleteDialog] = useState(false); + //固定値 + const [PosNum, setPosNum] = useState(); + const [Pos, setPos] = useState(""); + const [Line, setLine] = useState(""); + const [StationNum, setStationNum] = useState(""); + + //編集情報 + const [lineInput, setLineInput] = useState(""); + const [posInput, setPosInput] = useState(""); + const [descInput, setDescInput] = useState(""); + + const openEditWindow = () => { + + const { isBetween, Pos } = trainPosition(currentTrainData); + if (isBetween === true) return; + //固定値 + setPosNum(currentTrainData?.PosNum); + setPos(currentTrainData?.Pos); + setLine(currentTrainData?.Line); + setStationNum(getStationID(currentTrainData?.Pos, stationList)); + + //入力欄 + setPosInput(database?.platformNumber?.toString() || ""); + setDescInput(database?.description || ""); + setLineInput(database?.lineNumber?.toString() || ""); + setDialog(true); + }; + return ( <> - { - const { isBetween, Pos } = trainPosition(currentTrainData); - if (isBetween === true) { - if ( - platformNumber == undefined && - platformDescription == undefined - ) - return; - setStationNumberInput( - getStationID(currentTrainData?.Pos, stationList) - ); - setPosInput(platformNumber?.toString() || ""); - setLineInput(lineNumber?.toString() || ""); - } else { - setStationNumberInput( - getStationID(currentTrainData?.Pos, stationList) - ); - setDescInput(platformDescription || ""); - setPosInput(platformNumber?.toString() || ""); - setLineInput(lineNumber?.toString() || ""); - setDialog(true); - } - }} + onLongPress={openEditWindow} onPress={() => { if (!onLine) return; const test = []; diff --git a/components/発車時刻表/EachData.tsx b/components/発車時刻表/EachData.tsx index fb0b37f..f06c6d1 100644 --- a/components/発車時刻表/EachData.tsx +++ b/components/発車時刻表/EachData.tsx @@ -12,8 +12,8 @@ import { StatusAndDelay } from "./LED_inside_Component/StatusAndDelay"; import { TrainName } from "./LED_inside_Component/TrainName"; import { customTrainDataDetector } from "../custom-train-data"; import { TrainPosition } from "./LED_inside_Component/TrainPosition"; -import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush"; -import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete"; +import { StationPosPushDialog } from "./LED_inside_Component/TrainPositionDataPush"; +import { StationPosDeleteDialog } from "./LED_inside_Component/TrainPositionDataDelete"; import { useStationList } from "../../stateBox/useStationList"; import useInterval from "@/lib/useInterval"; import dayjs from "dayjs"; @@ -114,16 +114,22 @@ export const EachData: FC = (props) => { station.Station_JP )}`; - const [platformNumber, setPlatformNumber] = useState(); - const [platformDescription, setPlatformDescription] = useState(); + // 投稿システム関係 + // Dialog表示関係 const [dialog, setDialog] = useState(false); const [deleteDialog, setDeleteDialog] = useState(false); - const [posInput, setPosInput] = useState(""); - const [lineInput, setLineInput] = useState(""); - const [descInput, setDescInput] = useState(""); - const [stationInput, setStationInput] = useState(""); - const [stationNumberInput, setStationNumberInput] = useState(""); + //固定値 + const [PosNum, setPosNum] = useState(); + const [Pos, setPos] = useState(""); + const [Line, setLine] = useState(""); + const [StationNum, setStationNum] = useState(""); + + //編集情報 + const [lineInput, setLineInput] = useState(""); + const [posInput, setPosInput] = useState(""); + const [descInput, setDescInput] = useState(""); + const [isShow, setIsShow] = useState(true); const [isDepartureNow, setIsDepartureNow] = useState(false); @@ -147,24 +153,30 @@ export const EachData: FC = (props) => { }, 800); return ( <> - - = (props) => { )} {trainDescriptionSwitch && ( )} diff --git a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx index a371f7c..1b92ba6 100644 --- a/components/発車時刻表/LED_inside_Component/TrainPosition.tsx +++ b/components/発車時刻表/LED_inside_Component/TrainPosition.tsx @@ -14,38 +14,46 @@ const descriptionStyle: TextStyle = { }; type Props = { + // LED表示関係 numberOfLines?: number; trainIDSwitch: boolean; currentTrainData: trainDataType; - setStationInput: (station: string) => void; - setStationNumberInput: (station: string) => void; - setDescInput: (desc: string) => void; - setPosInput: (pos: string) => void; + //ポップアップ表示関係 setDialog: (dialog: boolean) => void; setDeleteDialog: (dialog: boolean) => void; - platformDescription: string; - platformNumber: string; - setPlatformDescription: (desc: string) => void; - setPlatformNumber: (num: string) => void; - lineInput: string; + + //固定値設定 + setPos: React.Dispatch> + setPosNum: React.Dispatch>; + setLine: React.Dispatch>; + setStationNum: React.Dispatch>; + + //編集機能関係 setLineInput: (line: string) => void; + setPosInput: (pos: string) => void; + setDescInput: (desc: string) => void; }; export const TrainPosition: FC = ({ + // LED表示関係 numberOfLines = 0, trainIDSwitch, currentTrainData, - setStationInput, - setStationNumberInput, - setDescInput, - setPosInput, + //ポップアップ表示関係 setDialog, setDeleteDialog, - setPlatformDescription, - setPlatformNumber, - platformDescription, - platformNumber, + + //固定値設定 + setPos, + setPosNum, + setLine, + setStationNum, + + //編集機能関係 setLineInput, + setPosInput, + setDescInput, + }) => { const { stationList } = useStationList(); type data = { @@ -94,6 +102,31 @@ export const TrainPosition: FC = ({ setMasterText(""); }; }, [currentTrainData?.PosNum, currentTrainData?.Line, currentTrainData?.Pos]); + //editWindow向けにfixした情報を送信 + const openEditWindow = () => { + const { isBetween, Pos } = trainPosition(currentTrainData); + + //固定値 + setPosNum(currentTrainData?.PosNum); + setPos(currentTrainData?.Pos); + setLine(currentTrainData?.Line); + setStationNum(getStationID(currentTrainData?.Pos, stationList)); + + //入力欄 + if (isBetween === true) { + if ( + database?.platformNumber == undefined && + database?.description == undefined + ) + return; + setDeleteDialog(true); + } else { + setPosInput(database?.platformNumber?.toString() || ""); + setDescInput(database?.description || ""); + setLineInput(database?.lineNumber?.toString() || ""); + setDialog(true); + } + }; return ( = ({ flexDirection: "row", overflow: "hidden", }} - onLongPress={() => { - const { isBetween, Pos } = trainPosition(currentTrainData); - setStationNumberInput(getStationID(currentTrainData?.Pos, stationList)); - setPosInput(database?.platformNumber?.toString() || ""); - if (isBetween === true) { - if (database?.platformNumber == undefined && database?.description == undefined) - return; - setStationInput(`${Pos.from}→${Pos.to}間`); - setDeleteDialog(true); - } else { - setStationInput(currentTrainData?.Pos); - setDescInput(database?.description || ""); - setLineInput(database?.lineNumber?.toString() || ""); - setPlatformNumber(database?.platformNumber?.toString() || ""); - setDialog(true); - } - }} + onLongPress={openEditWindow} > void; - currentTrainData: trainDataType; - stationInput: string; - stationNumberInput: string; + PosNum: number; + Line: string; + Pos: string; + StationNum: string; }; -export const TrainPositionDataDelete: FC = ({ + +export const StationPosDeleteDialog: FC = ({ dialog, setDialog, - currentTrainData, - stationInput, - stationNumberInput, + PosNum, + Line, + Pos, + StationNum }) => { const sendPlatformData = () => { fetch(`https://n8n.haruk.in/webhook/JR-shikoku-PosID-v3`, { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - PosId: currentTrainData?.PosNum, - lineName: currentTrainData?.Line, + PosId: PosNum, + lineName: Line, + StationName: Pos, //自動:駅名、漢字 }), }) .then(() => { @@ -36,10 +40,10 @@ export const TrainPositionDataDelete: FC = ({ return ( setDialog(false)}> 以下のデータを誤情報として削除要求を出しますか? - 路線: {currentTrainData?.Line} - 地点ID: {currentTrainData?.PosNum} - 駅名: {stationInput} - 駅ナンバー: {stationNumberInput} + 路線: {Line} + 地点ID: {PosNum} + 駅名: {Pos} + 駅ナンバー: {StationNum} ); diff --git a/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx b/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx index 7145ef1..9eb8b36 100644 --- a/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx +++ b/components/発車時刻表/LED_inside_Component/TrainPositionDataPush.tsx @@ -7,21 +7,30 @@ import { useStationList } from "@/stateBox/useStationList"; type Props = { dialog: boolean; setDialog: (dialog: boolean) => void; - currentTrainData: trainDataType; - stationNumberInput: string; - posInput: string; - descInput: string; - lineInput: string; - setPosInput: (pos: string) => void; - setDescInput: (desc: string) => void; - setLineInput: (line: string) => void; + PosNum:number; + Pos:string; + Line:string; + StationNum: string; + + lineInput: string; + setLineInput: (line: string) => void; + posInput: string; + setPosInput: (pos: string) => void; + descInput: string; + setDescInput: (desc: string) => void; }; -export const TrainPositionDataPush: FC = ({ +export const StationPosPushDialog: FC = ({ + // Dialog表示関係 dialog, setDialog, - currentTrainData, - stationNumberInput, + //固定情報 + PosNum,//地点ID + Pos,//駅名 + Line,//路線名 + StationNum,//駅ナンバリング + + //入力欄 lineInput, setLineInput, posInput, @@ -35,10 +44,10 @@ export const TrainPositionDataPush: FC = ({ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ - PosId: currentTrainData?.PosNum, //自動:位置情報ID - StationId: getStationID(currentTrainData?.Pos, stationList), //自動:駅ID - StationName: currentTrainData?.Pos, //自動:駅名、漢字 - lineName: currentTrainData?.Line, //自動:位置情報路線ID(koutoku/yosan) + PosId: PosNum, //自動:位置情報ID + StationId: getStationID(Pos, stationList), //自動:駅ID + StationName: Pos, //自動:駅名、漢字 + lineName: Line, //自動:位置情報路線ID(koutoku/yosan) Description: descInput, //手動入力、参考情報 platformNumber: parseInt(posInput), //手動入力、乗り場表記 lineNumber: parseInt(lineInput), //手動入力、番線表記 @@ -57,10 +66,10 @@ export const TrainPositionDataPush: FC = ({ return ( setDialog(false)}> 駅番線情報投稿機能 - 路線: {currentTrainData?.Line} - 地点ID: {currentTrainData?.PosNum} - 駅名: {currentTrainData?.Pos} - 駅ナンバー: {stationNumberInput} + 路線: {Line} + 地点ID: {PosNum} + 駅名: {Pos} + 駅ナンバー: {StationNum} Date: Tue, 19 Aug 2025 09:20:55 +0000 Subject: [PATCH 2/6] =?UTF-8?q?isWanman=E3=82=92=E5=9F=BA=E6=9C=AC?= =?UTF-8?q?=E7=9A=84=E3=81=AB=E7=84=A1=E5=8A=B9=E5=8C=96(=E7=A8=AE?= =?UTF-8?q?=E5=88=A5=E5=88=A4=E5=AE=9A=E3=82=92=E6=9C=89=E5=8A=B9=E5=8C=96?= =?UTF-8?q?)=E3=80=81=E4=BA=88=E5=9C=9F=E7=B7=9A=E3=81=AE=E7=9B=B4?= =?UTF-8?q?=E9=80=9A=E3=83=A9=E3=82=A4=E3=83=B3=E3=82=AB=E3=83=A9=E3=83=BC?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85=E3=80=81=E7=89=B9=E5=AE=9A=E6=9C=9F?= =?UTF-8?q?=E9=96=93=E6=9C=89=E5=8A=B9=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3?= =?UTF-8?q?=E3=82=92=E3=82=B3=E3=83=9F=E3=83=A5=E3=83=8B=E3=83=86=E3=82=A3?= =?UTF-8?q?=E3=82=A2=E3=82=A4=E3=82=B3=E3=83=B3=E3=81=BF=E3=81=9F=E3=81=8F?= =?UTF-8?q?=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/webViewInjectjavascript.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index 19ffd8e..102d648 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -676,6 +676,7 @@ export const injectJavascriptData: InjectJavascriptData = ( let ToData = ""; let TrainNumber = 列番データ; let isEdit = false; + let isSeason = false; try{ const diagram = trainDiagramData2[列番データ] || trainTimeInfo[列番データ]; @@ -885,47 +886,59 @@ export const injectJavascriptData: InjectJavascriptData = ( switch(data.type){ case "Normal": trainTypeColor = "black"; + isWanman = false; return "普通"; case "OneMan": trainTypeColor = "black"; + isWanman = true; return "普通"; case "Rapid": trainTypeColor = "rgba(0, 140, 255, 1)"; + isWanman = false; return "快速"; case "OneManRapid": trainTypeColor = "rgba(0, 140, 255, 1)"; + isWanman = true; return "快速"; case "LTDEXP": trainTypeColor = "red"; + isWanman = false; return "特急"; case "NightLTDEXP": trainTypeColor = "#d300b0ff"; + isWanman = false; return "寝台特急"; case "SPCL": case "SPCL_Normal": trainTypeColor = "#008d07ff"; + isWanman = false; return "臨時"; case "SPCL_Rapid": trainTypeColor = "rgba(0, 81, 255, 1)"; + isWanman = false; return "臨時快速"; case "SPCL_EXP": trainTypeColor = "#a52e2eff"; + isWanman = false; return "臨時特急"; case "Freight": trainTypeColor = "#00869ecc"; + isWanman = false; return "貨物"; case "Forwarding": trainTypeColor = "#727272cc"; + isWanman = false; return "回送"; case "FreightForwarding": trainTypeColor = "#727272cc"; + isWanman = false; return "単機回送"; default: return ""; } })(); - isWanman = data.isWanman; isEdit = data.isEdit; + isSeason = data.isSeason; if(data.trainName != ""){ trainName = data.trainName; if(data.trainNumDistance != null){ @@ -979,13 +992,16 @@ export const injectJavascriptData: InjectJavascriptData = ( case "鳴門線直通": yosan2Color = "#881F61"; break; + case "予土線": + yosan2Color = "#008a5a"; + break; default: break; } const gradient = getColors.length > 1 ? "linear-gradient(130deg, " + getColors[0] + " 0%, "+ getColors[0]+"50%, "+ getColors[1]+"50%, " + getColors[1] + " 100%)" : getColors[0]; - 行き先情報.insertAdjacentHTML('beforebegin', "
"+( isEdit ? "
" : "")+"

" + TrainNumber + (JRF ? "":"レ") + "

" + (isWanman ? "ワンマン " : "") + "

" + viaData + "

" + trainName + "

" + (ToData ? ToData + "行" : ToData) + "

" + trainType + "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "
"+( isEdit ? "
" : isSeason ? "
" : "")+"

" + TrainNumber + (JRF ? "":"レ") + "

" + (isWanman ? "ワンマン " : "") + "

" + viaData + "

" + trainName + "

" + (ToData ? ToData + "行" : ToData) + "

" + trainType + "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); `: ` 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

" + TrainNumber + (JRF ? "":"レ") + "

"); From ba5da62736a9f1e2a3098ce57941a3c90000f61b Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Aug 2025 09:57:38 +0000 Subject: [PATCH 3/6] =?UTF-8?q?TrainNumberOverride=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/webViewInjectjavascript.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index 102d648..c629bb1 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -677,7 +677,7 @@ export const injectJavascriptData: InjectJavascriptData = ( let TrainNumber = 列番データ; let isEdit = false; let isSeason = false; - + let TrainNumberOverride; try{ const diagram = trainDiagramData2[列番データ] || trainTimeInfo[列番データ]; if(diagram){ @@ -881,7 +881,7 @@ export const injectJavascriptData: InjectJavascriptData = ( getThrew(列番データ); if(trainDataList.find(e => e.id === 列番データ) !== undefined){ const data = trainDataList.find(e => e.id === 列番データ); - //{id,isWanman,trainName,viaData,ToData,TrainNumber,JRF,type,infoUrl,trainNumDistance,info,infogram,isEdit} + //{id,trainName,viaData,ToData,TrainNumber,TrainNumberOverride,type,infoUrl,trainNumDistance,info,infogram,isEdit} trainType = (()=>{ switch(data.type){ case "Normal": @@ -951,10 +951,12 @@ export const injectJavascriptData: InjectJavascriptData = ( if(data.ToData != ""){ ToData = data.ToData; } + if(data.TrainNumberOverride){ + TrainNumberOverride = data.TrainNumberOverride; + } } //列番付与 const returnText1 = (isWanman ? "ワンマン " : "") + trainName + viaData; - const returnText2 = (ToData ? ToData+"行 " : ToData)+ TrainNumber; 行き先情報.innerText = ""; ${uiSetting === "tokyo" ? ` let stationIDs = []; @@ -1001,10 +1003,10 @@ export const injectJavascriptData: InjectJavascriptData = ( const gradient = getColors.length > 1 ? "linear-gradient(130deg, " + getColors[0] + " 0%, "+ getColors[0]+"50%, "+ getColors[1]+"50%, " + getColors[1] + " 100%)" : getColors[0]; - 行き先情報.insertAdjacentHTML('beforebegin', "
"+( isEdit ? "
" : isSeason ? "
" : "")+"

" + TrainNumber + (JRF ? "":"レ") + "

" + (isWanman ? "ワンマン " : "") + "

" + viaData + "

" + trainName + "

" + (ToData ? ToData + "行" : ToData) + "

" + trainType + "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "
"+( isEdit ? "
" : isSeason ? "
" : "")+"

" + (TrainNumberOverride ? TrainNumberOverride : TrainNumber) + "

" + (isWanman ? "ワンマン " : "") + "

" + viaData + "

" + trainName + "

" + (ToData ? ToData + "行" : ToData) + "

" + trainType + "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); `: ` 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

" + TrainNumber + (JRF ? "":"レ") + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

" + (TrainNumberOverride ? TrainNumberOverride : TrainNumber) + "

"); 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); `} } From d15d7c74fba39c853067509a084fee09f5432ee8 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Aug 2025 14:32:30 +0000 Subject: [PATCH 4/6] =?UTF-8?q?allTrainDiagramView=E3=82=92=E5=88=97?= =?UTF-8?q?=E8=BB=8A=E5=90=8D=E6=A4=9C=E7=B4=A2=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/AllTrainDiagramView.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/components/AllTrainDiagramView.js b/components/AllTrainDiagramView.js index e2d2987..86d99a2 100644 --- a/components/AllTrainDiagramView.js +++ b/components/AllTrainDiagramView.js @@ -164,7 +164,9 @@ export default function AllTrainDiagramView() { return false; } } - return d.includes(input); + const { img, trainName, type, trainNumDistance, infogram } = + customTrainDataDetector(d, allCustomTrainData); + return d.includes(input) || trainName.includes(input); })} renderItem={({ item }) => } ListEmptyComponent={ @@ -277,7 +279,7 @@ export default function AllTrainDiagramView() { }} > setKeyBoardVisible(true)} onEndEditing={() => {}} onChange={(ret) => setInput(ret.nativeEvent.text)} From f16fe6c9948044debaf640aa25426fdaa2f27199 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Aug 2025 15:32:39 +0000 Subject: [PATCH 5/6] =?UTF-8?q?=E5=88=97=E7=95=AA=E3=82=92=E4=B8=A6?= =?UTF-8?q?=E3=81=B3=E6=9B=BF=E3=81=88=E3=80=81=E5=88=97=E8=BB=8A=E3=83=AA?= =?UTF-8?q?=E3=83=B3=E3=82=AF=E8=A1=A8=E7=A4=BA=E6=A9=9F=E8=83=BD=E7=AD=89?= =?UTF-8?q?=E3=82=92=E5=AE=9F=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EachTrainInfo/TrainDataView.tsx | 15 ++++- .../EachTrainInfoCore/HeaderText.tsx | 62 +++++++++++++------ stateBox/useAllTrainDiagram.js | 9 ++- 3 files changed, 64 insertions(+), 22 deletions(-) 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); From 14c5800aa2e65aa0ee0c64b8ccfa8f21f8124331 Mon Sep 17 00:00:00 2001 From: harukin-expo-dev-env Date: Tue, 19 Aug 2025 19:19:09 +0000 Subject: [PATCH 6/6] 6.1.5 --- components/Settings/SettingTopPage.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Settings/SettingTopPage.js b/components/Settings/SettingTopPage.js index af6925f..7ff47f0 100644 --- a/components/Settings/SettingTopPage.js +++ b/components/Settings/SettingTopPage.js @@ -17,7 +17,7 @@ import { SwitchArea } from "../atom/SwitchArea"; import { useNotification } from "../../stateBox/useNotifications"; import { SheetHeaderItem } from "@/components/atom/SheetHeaderItem"; -const versionCode = "6.1.4"; // Update this version code as needed +const versionCode = "6.1.5"; // Update this version code as needed export const SettingTopPage = ({ testNFC,