diff --git a/components/StationDiagram/ExGridView.tsx b/components/StationDiagram/ExGridView.tsx
new file mode 100644
index 0000000..da3a54e
--- /dev/null
+++ b/components/StationDiagram/ExGridView.tsx
@@ -0,0 +1,60 @@
+import { FC } from "react";
+import { ListViewItem } from "@/components/StationDiagram/ListViewItem";
+import { View, Text, ScrollView, useWindowDimensions } from "react-native";
+import { ExGridViewItem } from "./ExGridViewItem";
+
+export const ExGridView: FC<{
+ data: {
+ trainNumber: string;
+ array: string;
+ name: string;
+ type: string;
+ time: string;
+ }[];
+}> = ({ data }) => {
+ const groupedData = {};
+ const groupKeys = [];
+
+ const { width } = useWindowDimensions();
+ data.forEach((item) => {
+ const hour = item.time.split(":")[0];
+ if (!groupedData[hour]) {
+ groupedData[hour] = [];
+ groupKeys.push(hour);
+ }
+ groupedData[hour].push(item);
+ });
+ return (
+
+ i * 2) : []
+ }
+ >
+ {groupKeys.map((hour) => [
+
+ {hour}時台
+ ,
+
+ {groupedData[hour].map((d, i) => (
+
+ ))}
+ ,
+ ])}
+
+
+ );
+};
diff --git a/components/StationDiagram/ExGridViewItem.tsx b/components/StationDiagram/ExGridViewItem.tsx
new file mode 100644
index 0000000..3bac836
--- /dev/null
+++ b/components/StationDiagram/ExGridViewItem.tsx
@@ -0,0 +1,220 @@
+import { migrateTrainName } from "@/lib/eachTrainInfoCoreLib/migrateTrainName";
+import { getStringConfig, typeID } from "@/lib/getStringConfig";
+import { getTrainType } from "@/lib/getTrainType";
+import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram";
+import { FC, useEffect, useMemo, useState } from "react";
+import {
+ View,
+ Text,
+ TouchableOpacity,
+ useWindowDimensions,
+} from "react-native";
+import { customTrainDataDetector } from "../custom-train-data";
+import dayjs from "dayjs";
+import { SheetManager } from "react-native-actions-sheet";
+import { useNavigation } from "@react-navigation/native";
+import { lineList } from "@/lib/getStationList";
+import { useStationList } from "@/stateBox/useStationList";
+
+export const ExGridViewItem: FC<{
+ d: {
+ trainNumber: string;
+ array: string;
+ name: string;
+ type: string;
+ time: string;
+ };
+ index: number;
+}> = ({ d, index }) => {
+ const { allCustomTrainData } = useAllTrainDiagram();
+ const { navigate, goBack } = useNavigation();
+ const [trainData, setTrainData] = useState<{
+ ToData: string;
+ TrainNumber: string;
+ id: string;
+ img: string;
+ info?: string;
+ infoUrl: string;
+ infogram: string;
+ isEdit: boolean;
+ isSeason: boolean;
+ trainName: string;
+ trainNumDistance?: number;
+ type: typeID;
+ viaData?: string;
+ uwasa?: string;
+ }>();
+ useEffect(() => {
+ if (allCustomTrainData) {
+ allCustomTrainData.forEach((x) => {
+ if (x.TrainNumber === d.trainNumber) {
+ setTrainData(x);
+ }
+ });
+ }
+ }, []);
+ const { width } = useWindowDimensions();
+ const { color, name, data } = getTrainType(trainData?.type, true);
+ const { originalStationList } = useStationList();
+ // 列車名、種別、フォントの取得
+ const [
+ typeString,
+ trainName,
+ fontAvailable,
+ isOneMan,
+ infogram,
+ isEdit,
+ uwasa,
+ vehicleFormation,
+ trainInfoUrl,
+ ] = useMemo(() => {
+ const {
+ type,
+ trainName,
+ trainNumDistance,
+ infogram,
+ isEdit,
+ uwasa,
+ vehicleFormation,
+ trainInfoUrl,
+ } = customTrainDataDetector(d.trainNumber, allCustomTrainData);
+ const [typeString, fontAvailable, isOneMan] = getStringConfig(
+ type,
+ d.trainNumber
+ );
+ const trainData = d.array.split("#").filter((d) => d !== "");
+ switch (true) {
+ case trainData[trainData.length - 1] === undefined:
+ return [
+ typeString,
+ "",
+ fontAvailable,
+ isOneMan,
+ infogram,
+ isEdit,
+ uwasa,
+ vehicleFormation,
+ trainInfoUrl,
+ ];
+ default:
+ // 行先がある場合は、行先を取得
+ return [
+ typeString,
+ migrateTrainName(
+ trainData[trainData.length - 1].split(",")[0] + "行"
+ ),
+ fontAvailable,
+ isOneMan,
+ infogram,
+ isEdit,
+ uwasa,
+ vehicleFormation,
+ trainInfoUrl,
+ ];
+ }
+ }, [d.array]);
+ const timeArray = d.time.split(":").map((s) => parseInt(s));
+ const formattedTime = dayjs()
+ .set("hour", timeArray[0])
+ .set("minute", timeArray[1])
+ .format("m");
+
+ const openStationACFromEachTrainInfo = async (stationName) => {
+ await SheetManager.hide("EachTrainInfo");
+ const findStationEachLine = (selectLine) => {
+ let NearStation = selectLine.filter((d) => d.Station_JP == stationName);
+ return NearStation;
+ };
+ let returnDataBase = lineList
+ .map((d) => findStationEachLine(originalStationList[d]))
+ .filter((d) => d.length > 0)
+ .reduce((pre, current) => {
+ pre.push(...current);
+ return pre;
+ }, []);
+ if (returnDataBase.length) {
+ const payload = {
+ currentStation: returnDataBase,
+ navigate,
+ //@ts-ignore
+ useShow: () => SheetManager.show("StationDetailView", { payload }),
+ onExit: () => SheetManager.hide("StationDetailView"),
+ }; //@ts-ignore
+ setTimeout(() => SheetManager.show("StationDetailView", { payload }), 50);
+ } else {
+ SheetManager.hide("StationDetailView");
+ }
+ };
+ const openTrainInfo = () => {
+ let TrainNumber = "";
+ if (trainData.trainNumDistance != undefined) {
+ const timeInfo =
+ parseInt(trainData.TrainNumber.replace("M", "").replace("D", "")) -
+ trainData.trainNumDistance;
+ TrainNumber = timeInfo + "号";
+ }
+ const payload = {
+ data: {
+ trainNum: trainData.TrainNumber,
+ limited: `${data}:${trainData.trainName}${TrainNumber}`,
+ },
+ navigate,
+ openStationACFromEachTrainInfo,
+ from: "AllTrainIDList",
+ };
+ SheetManager.show("EachTrainInfo", {
+ //@ts-ignore
+ payload,
+ onClose: (data) => {
+ //alert(data);
+ },
+ });
+ };
+ // if(typeString == "回送"){
+ // return<>>;
+ // }
+ return (
+
+ openTrainInfo()}
+ >
+
+ {formattedTime}
+
+ {d.type}
+
+
+
+
+ {trainName}
+
+
+
+
+ );
+};
diff --git a/components/StationDiagram/StationDiagramView.tsx b/components/StationDiagram/StationDiagramView.tsx
index 50a3946..bc7e253 100644
--- a/components/StationDiagram/StationDiagramView.tsx
+++ b/components/StationDiagram/StationDiagramView.tsx
@@ -5,6 +5,7 @@ import { BigButton } from "../atom/BigButton";
import { useAllTrainDiagram } from "@/stateBox/useAllTrainDiagram";
import { ListView } from "@/components/StationDiagram/ListView";
import dayjs from "dayjs";
+import { ExGridView } from "./ExGridView";
type props = {
route: {
@@ -65,6 +66,9 @@ export const StationDiagramView: FC = ({ route }) => {
type,
time,
};
+ // //条件によってフィルタリング
+ // if(type && type.includes("通")) return;
+ // if(type && type.includes("着")) return;
returnDataArray.push(arrayData);
});
}
@@ -100,7 +104,8 @@ export const StationDiagramView: FC = ({ route }) => {
>
{currentStation[0].Station_JP}駅 時刻表
-
+ {/* */}
+
{/*