列車の表示条件の厳密化、および出発促進表示を追加
This commit is contained in:
parent
fbcded3d23
commit
8c17a5b3da
@ -16,6 +16,8 @@ import { TrainPosition } from "./LED_inside_Component/TrainPosition";
|
|||||||
import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush";
|
import { TrainPositionDataPush } from "./LED_inside_Component/TrainPositionDataPush";
|
||||||
import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete";
|
import { TrainPositionDataDelete } from "./LED_inside_Component/TrainPositionDataDelete";
|
||||||
import { useStationList } from "../../stateBox/useStationList";
|
import { useStationList } from "../../stateBox/useStationList";
|
||||||
|
import useInterval from "@/lib/useInterval";
|
||||||
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
d: {
|
d: {
|
||||||
@ -117,6 +119,22 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
const [descInput, setDescInput] = useState("");
|
const [descInput, setDescInput] = useState("");
|
||||||
const [stationInput, setStationInput] = useState("");
|
const [stationInput, setStationInput] = useState("");
|
||||||
const [stationNumberInput, setStationNumberInput] = useState("");
|
const [stationNumberInput, setStationNumberInput] = useState("");
|
||||||
|
|
||||||
|
const [isShow, setIsShow] = useState(true);
|
||||||
|
const [isDepartureNow, setIsDepartureNow] = useState(false);
|
||||||
|
useEffect(()=>{
|
||||||
|
const currentTime = dayjs();
|
||||||
|
const trainTime = currentTime.set("hour", parseInt(d.time.split(":")[0])).set("minute", parseInt(d.time.split(":")[1]));
|
||||||
|
const diff = trainTime.diff(currentTime, "minute");
|
||||||
|
if (diff < 2) setIsDepartureNow(true);
|
||||||
|
else setIsDepartureNow(false);
|
||||||
|
})
|
||||||
|
useInterval(()=>{
|
||||||
|
if (isDepartureNow) {
|
||||||
|
setIsShow(!isShow);
|
||||||
|
|
||||||
|
}
|
||||||
|
}, 800);
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TrainPositionDataDelete
|
<TrainPositionDataDelete
|
||||||
@ -147,6 +165,7 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
marginHorizontal: "3%",
|
marginHorizontal: "3%",
|
||||||
backgroundColor: "#000",
|
backgroundColor: "#000",
|
||||||
flexDirection: "row",
|
flexDirection: "row",
|
||||||
|
opacity: isShow ? 1 : 0.5,
|
||||||
}}
|
}}
|
||||||
onPress={() => openTrainInfo(d)}
|
onPress={() => openTrainInfo(d)}
|
||||||
key={ d.train + "-eachData" }
|
key={ d.train + "-eachData" }
|
||||||
@ -162,6 +181,9 @@ export const EachData: FC<Props> = (props) => {
|
|||||||
<DependTime time={d.time} />
|
<DependTime time={d.time} />
|
||||||
<StatusAndDelay trainDelayStatus={trainDelayStatus} />
|
<StatusAndDelay trainDelayStatus={trainDelayStatus} />
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
{!!isDepartureNow && (
|
||||||
|
<Description info={d.lastStation == "当駅止" ? "この列車は当駅止です。間もなく到着します。":"この列車は間もなく発車します。"} key={d.train + "-description"} />
|
||||||
|
)}
|
||||||
{trainDescriptionSwitch && (
|
{trainDescriptionSwitch && (
|
||||||
<TrainPosition
|
<TrainPosition
|
||||||
trainIDSwitch={trainIDSwitch}
|
trainIDSwitch={trainIDSwitch}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { View,useWindowDimensions } from "react-native";
|
import { View, useWindowDimensions } from "react-native";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import { useInterval } from "../../lib/useInterval";
|
import { useInterval } from "../../lib/useInterval";
|
||||||
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
import { objectIsEmpty } from "../../lib/objectIsEmpty";
|
||||||
@ -98,7 +98,7 @@ export default function LED_vision(props) {
|
|||||||
if (!trainTimeAndNumber) return () => {};
|
if (!trainTimeAndNumber) return () => {};
|
||||||
if (!currentTrain) return () => {};
|
if (!currentTrain) return () => {};
|
||||||
const data = trainTimeAndNumber
|
const data = trainTimeAndNumber
|
||||||
.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
|
//.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
|
||||||
.filter(timeFiltering)
|
.filter(timeFiltering)
|
||||||
.filter((d) => !!finalSwitch || d.lastStation != "当駅止");
|
.filter((d) => !!finalSwitch || d.lastStation != "当駅止");
|
||||||
setSelectedTrain(data);
|
setSelectedTrain(data);
|
||||||
@ -145,22 +145,40 @@ export default function LED_vision(props) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const timeFiltering = (d) => {
|
const timeFiltering = (d) => {
|
||||||
const Pos = trainPosition(currentTrain.filter((t) => t.num == d.train)[0])
|
|
||||||
const nextPos = Pos.isBetween ? Pos.Pos.to : Pos.Pos.Pos;
|
const baseTime = 2;
|
||||||
const PrePos = Pos.isBetween ? Pos.Pos.from : "";
|
|
||||||
if(station[0].Station_JP == nextPos){
|
if (currentTrain.filter((t) => t.num == d.train).length == 0) {
|
||||||
return true;
|
const date = dayjs();
|
||||||
}
|
const trainTime = date
|
||||||
else if(station[0].Station_JP == PrePos){
|
.hour(parseInt(d.time.split(":")[0]))
|
||||||
|
.minute(parseInt(d.time.split(":")[1]));
|
||||||
|
|
||||||
|
if (date.isAfter(trainTime)) {
|
||||||
|
return false;
|
||||||
|
} else if (trainTime.diff(date) < baseTime * 60 * 60 * 1000) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
|
} else {
|
||||||
|
const Pos = trainPosition(
|
||||||
|
currentTrain.filter((t) => t.num == d.train)[0]
|
||||||
|
);
|
||||||
|
const nextPos = Pos.isBetween ? Pos.Pos.to : Pos.Pos.Pos;
|
||||||
|
const PrePos = Pos.isBetween ? Pos.Pos.from : "";
|
||||||
|
if (station[0].Station_JP == nextPos) {
|
||||||
|
if(d.lastStation != "当駅止") return true;
|
||||||
|
} else if (station[0].Station_JP == PrePos) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const date = dayjs();
|
||||||
|
let [h, m] = d.time.split(":");
|
||||||
|
let delay = isNaN(currentTrain.filter((t) => t.num == d.train)[0].delay)
|
||||||
|
? 0
|
||||||
|
: currentTrain.filter((t) => t.num == d.train)[0].delay;
|
||||||
|
const db = date.hour(parseInt(h)).minute(parseInt(m) + parseInt(delay));
|
||||||
|
return !date.isAfter(db);
|
||||||
}
|
}
|
||||||
const date = dayjs();
|
|
||||||
let [h,m] = d.time.split(":");
|
|
||||||
let delay = isNaN(currentTrain.filter((t) => t.num == d.train)[0].delay)
|
|
||||||
? 0
|
|
||||||
: currentTrain.filter((t) => t.num == d.train)[0].delay;
|
|
||||||
const db = date.hour(parseInt(h)).minute(parseInt(m) + parseInt(delay));
|
|
||||||
return !(date.isAfter(db));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const [areaString, setAreaString] = useState("");
|
const [areaString, setAreaString] = useState("");
|
||||||
|
Loading…
Reference in New Issue
Block a user