LED表示機能第二弾リファクタリング
This commit is contained in:
parent
7321f6d514
commit
052c121179
@ -64,7 +64,7 @@ export default function LED_vision(props) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
//全列車リストを生成する副作用
|
//全列車リストを生成する副作用[無条件初回実行]
|
||||||
fetch(
|
fetch(
|
||||||
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=traintimeinfo&arg3=dia",
|
"https://train.jr-shikoku.co.jp/g?arg1=station&arg2=traintimeinfo&arg3=dia",
|
||||||
HeaderConfig
|
HeaderConfig
|
||||||
@ -81,7 +81,7 @@ export default function LED_vision(props) {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
//駅の情報を作成する副作用
|
// 現在の駅に停車するダイヤを作成する副作用[列車ダイヤと現在駅情報]
|
||||||
if (!trainDiagram) {
|
if (!trainDiagram) {
|
||||||
setStationDiagram({});
|
setStationDiagram({});
|
||||||
return;
|
return;
|
||||||
@ -110,12 +110,11 @@ export default function LED_vision(props) {
|
|||||||
console.log(e);
|
console.log(e);
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(getCurrentTrain, []);
|
useEffect(getCurrentTrain, []); //初回だけ現在の全在線列車取得
|
||||||
|
|
||||||
useInterval(getCurrentTrain, 15000);
|
useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
|
||||||
|
|
||||||
const getTime = (stationDiagram, station) => {
|
const getTime = (stationDiagram, station) => {
|
||||||
console.log(stationDiagram);
|
|
||||||
const returnData = Object.keys(stationDiagram).map((d) => {
|
const returnData = Object.keys(stationDiagram).map((d) => {
|
||||||
let a = {};
|
let a = {};
|
||||||
stationDiagram[d].split("#").forEach((data) => {
|
stationDiagram[d].split("#").forEach((data) => {
|
||||||
@ -149,7 +148,9 @@ export default function LED_vision(props) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const [trainTimeAndNumber, setTrainTimeAndNumber] = useState(null);
|
const [trainTimeAndNumber, setTrainTimeAndNumber] = useState(null);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
//現在の駅に停車する列車から時刻を切り出してLEDベースにフォーマット
|
||||||
if (objectIsEmpty(stationDiagram)) return () => {};
|
if (objectIsEmpty(stationDiagram)) return () => {};
|
||||||
console.log(stationDiagram);
|
console.log(stationDiagram);
|
||||||
const getTimeData = getTime(stationDiagram, props.station);
|
const getTimeData = getTime(stationDiagram, props.station);
|
||||||
@ -184,6 +185,16 @@ export default function LED_vision(props) {
|
|||||||
return { color: "white", name: "普通列車" };
|
return { color: "white", name: "普通列車" };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const [selectedTrain, setSelectedTrain] = useState([]);
|
||||||
|
useEffect(() => {
|
||||||
|
if (!trainTimeAndNumber) return () => {};
|
||||||
|
if (!currentTrain) return () => {};
|
||||||
|
const data = trainTimeAndNumber
|
||||||
|
.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
|
||||||
|
.filter(timeFiltering)
|
||||||
|
.filter((d) => !!finalSwitch || d.lastStation != "当駅止");
|
||||||
|
setSelectedTrain(data);
|
||||||
|
}, [trainTimeAndNumber, currentTrain]);
|
||||||
return (
|
return (
|
||||||
<View
|
<View
|
||||||
style={{
|
style={{
|
||||||
@ -195,49 +206,17 @@ export default function LED_vision(props) {
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Header />
|
<Header />
|
||||||
{trainTimeAndNumber
|
{selectedTrain.map((d, index) => (
|
||||||
? currentTrain &&
|
<EachData
|
||||||
trainTimeAndNumber
|
d={d}
|
||||||
.filter((d) => currentTrain.map((m) => m.num).includes(d.train))
|
|
||||||
.filter(timeFiltering)
|
|
||||||
.filter((d) => !!finalSwitch || d.lastStation != "当駅止")
|
|
||||||
.map((d, index) => {
|
|
||||||
const train = customTrainDataDetector(d.train);
|
|
||||||
return (
|
|
||||||
<>
|
|
||||||
<View
|
|
||||||
style={{
|
|
||||||
alignContent: "center",
|
|
||||||
alignItems: "center",
|
|
||||||
width: "94%",
|
|
||||||
marginVertical: 5,
|
|
||||||
marginHorizontal: "3%",
|
|
||||||
backgroundColor: "#000",
|
|
||||||
flexDirection: "row",
|
|
||||||
}}
|
|
||||||
key={d.train}
|
|
||||||
>
|
|
||||||
<TrainName
|
|
||||||
train={train}
|
|
||||||
trainIDSwitch={trainIDSwitch}
|
trainIDSwitch={trainIDSwitch}
|
||||||
d={d}
|
trainDescriptionSwitch={trainDescriptionSwitch}
|
||||||
getTrainType={getTrainType(train.type)}
|
|
||||||
/>
|
|
||||||
<LastStation d={d} />
|
|
||||||
<DependTime d={d} />
|
|
||||||
<StatusAndDelay
|
|
||||||
currentTrain={currentTrain}
|
|
||||||
d={d}
|
|
||||||
props={props}
|
props={props}
|
||||||
|
currentTrain={currentTrain}
|
||||||
|
getTrainType={getTrainType}
|
||||||
|
customTrainDataDetector={customTrainDataDetector}
|
||||||
/>
|
/>
|
||||||
</View>
|
))}
|
||||||
{trainDescriptionSwitch && !!train.info && (
|
|
||||||
<Description train={train} key={d.train + "Description"} />
|
|
||||||
)}
|
|
||||||
</>
|
|
||||||
);
|
|
||||||
})
|
|
||||||
: null}
|
|
||||||
<Footer
|
<Footer
|
||||||
trainIDSwitch={trainIDSwitch}
|
trainIDSwitch={trainIDSwitch}
|
||||||
setTrainIDSwitch={setTrainIDSwitch}
|
setTrainIDSwitch={setTrainIDSwitch}
|
||||||
@ -325,6 +304,44 @@ const Footer = ({
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const EachData = ({
|
||||||
|
d,
|
||||||
|
trainIDSwitch,
|
||||||
|
trainDescriptionSwitch,
|
||||||
|
props,
|
||||||
|
currentTrain,
|
||||||
|
getTrainType,
|
||||||
|
customTrainDataDetector,
|
||||||
|
}) => {
|
||||||
|
const train = customTrainDataDetector(d.train);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<View
|
||||||
|
style={{
|
||||||
|
alignContent: "center",
|
||||||
|
alignItems: "center",
|
||||||
|
width: "94%",
|
||||||
|
marginVertical: 5,
|
||||||
|
marginHorizontal: "3%",
|
||||||
|
backgroundColor: "#000",
|
||||||
|
flexDirection: "row",
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<TrainName
|
||||||
|
train={train}
|
||||||
|
trainIDSwitch={trainIDSwitch}
|
||||||
|
d={d}
|
||||||
|
getTrainType={getTrainType(train.type)}
|
||||||
|
/>
|
||||||
|
<LastStation d={d} />
|
||||||
|
<DependTime d={d} />
|
||||||
|
<StatusAndDelay currentTrain={currentTrain} d={d} props={props} />
|
||||||
|
</View>
|
||||||
|
{trainDescriptionSwitch && !!train.info && <Description train={train} />}
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const TrainName = ({ train, trainIDSwitch, d, getTrainType }) => {
|
const TrainName = ({ train, trainIDSwitch, d, getTrainType }) => {
|
||||||
const { trainName, trainNumDistance } = train;
|
const { trainName, trainNumDistance } = train;
|
||||||
let TrainNumber = "";
|
let TrainNumber = "";
|
||||||
@ -395,7 +412,6 @@ const StatusAndDelay = ({ currentTrain, d, props }) => {
|
|||||||
setStatus("発車前");
|
setStatus("発車前");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case isNaN(delay):
|
case isNaN(delay):
|
||||||
setStatus(delay);
|
setStatus(delay);
|
||||||
break;
|
break;
|
||||||
|
@ -39,6 +39,7 @@ export default function Sign(props) {
|
|||||||
}, [currentStation]);
|
}, [currentStation]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
if (!currentStation[nexPrePosition]) return () => {};
|
||||||
LayoutAnimation.easeInEaseOut();
|
LayoutAnimation.easeInEaseOut();
|
||||||
getPreNextStation(currentStation[nexPrePosition]);
|
getPreNextStation(currentStation[nexPrePosition]);
|
||||||
}, [nexPrePosition]);
|
}, [nexPrePosition]);
|
||||||
|
Loading…
Reference in New Issue
Block a user