リファクタリング

This commit is contained in:
harukin-OneMix4 2023-07-06 04:18:07 +09:00
parent 420a805f3c
commit 480bcbfcd3
2 changed files with 48 additions and 44 deletions

View File

@ -42,8 +42,7 @@ let diagramData = undefined;
* 9062D 四国まんなか千年ものがたり(臨時) * 9062D 四国まんなか千年ものがたり(臨時)
*/ */
export default function LED_vision(props) { export default function LED_vision(props) {
const { station, navigate, setTrainInfo, EachTrainInfoAsSR, trainDiagram } = const { station, setTrainInfo, EachTrainInfoAsSR, trainDiagram } = props;
props;
const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表 const [stationDiagram, setStationDiagram] = useState({}); //当該駅の全時刻表
const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 } const [currentTrain, setCurrentTrain] = useState([]); //現在在線中の全列車 { num: 列車番号, delay: 遅延時分(状態), Pos: 位置情報 }
const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading const [currentTrainLoading, setCurrentTrainLoading] = useState("loading"); // success, error, loading
@ -109,22 +108,26 @@ export default function LED_vision(props) {
useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得 useInterval(getCurrentTrain, 15000); //15秒毎に全在線列車取得
const getTime = (stationDiagram, station) => { const getTime = (stationDiagram, station) => {
const returnData = Object.keys(stationDiagram).map((d) => { const returnData = Object.keys(stationDiagram).map((trainNum) => {
let a = {}; let trainData = {};
stationDiagram[d].split("#").forEach((data) => { stationDiagram[trainNum].split("#").forEach((data) => {
if (data.match("着")) { if (data.match("着")) {
a.lastStation = data.split(",着,")[0]; trainData.lastStation = data.split(",着,")[0];
} }
if (data.split(",")[0] === station.Station_JP) { if (data.split(",")[0] === station.Station_JP) {
if (data.match(",発,")) { if (data.match(",発,")) {
a.time = data.split(",発,")[1]; trainData.time = data.split(",発,")[1];
} else { } else {
a.time = data.split(",着,")[1]; trainData.time = data.split(",着,")[1];
a.lastStation = "当駅止"; trainData.lastStation = "当駅止";
} }
} }
}); });
return { train: d, time: a.time, lastStation: a.lastStation }; return {
train: trainNum,
time: trainData.time,
lastStation: trainData.lastStation,
};
}); });
return returnData.sort((a, b) => { return returnData.sort((a, b) => {
switch (true) { switch (true) {
@ -342,10 +345,11 @@ const EachData = ({
onPress={() => openTrainInfo(d)} onPress={() => openTrainInfo(d)}
> >
<TrainName <TrainName
train={train} trainName={train.trainName}
trainNumDistance={train.trainNumDistance}
trainIDSwitch={trainIDSwitch} trainIDSwitch={trainIDSwitch}
d={d} trainID={d.train}
getTrainType={getTrainType(train.type)} type={train.type}
/> />
<LastStation lastStation={d.lastStation} /> <LastStation lastStation={d.lastStation} />
<DependTime time={d.time} /> <DependTime time={d.time} />
@ -358,14 +362,18 @@ const EachData = ({
); );
}; };
const TrainName = ({ train: s, trainIDSwitch, d, getTrainType }) => { const TrainName = ({
const { trainName, trainNumDistance } = s; trainName,
const { name, color } = getTrainType; trainNumDistance,
const { train } = d; trainIDSwitch,
trainID,
type,
}) => {
const { name, color } = getTrainType(type);
let TrainNumber = let TrainNumber =
trainNumDistance != undefined trainNumDistance != undefined
? `${ ? `${
parseInt(train.replace("M", "").replace("D", "")) - trainNumDistance parseInt(trainID.replace("M", "").replace("D", "")) - trainNumDistance
}` }`
: ""; : "";
return ( return (
@ -377,7 +385,7 @@ const TrainName = ({ train: s, trainIDSwitch, d, getTrainType }) => {
fontWeight: "bold", fontWeight: "bold",
}} }}
> >
{trainIDSwitch ? train : `${name} ${trainName}${TrainNumber}`} {trainIDSwitch ? trainID : `${name} ${trainName}${TrainNumber}`}
</Text> </Text>
</View> </View>
); );
@ -399,8 +407,7 @@ const LastStation = ({ lastStation }) => {
); );
}; };
const DependTime = ({ time }) => { const DependTime = ({ time }) => (
return (
<View style={{ flex: 3 }}> <View style={{ flex: 3 }}>
<Text <Text
style={{ style={{
@ -413,7 +420,6 @@ const DependTime = ({ time }) => {
</Text> </Text>
</View> </View>
); );
};
const checkDuplicateTrainData = (currentTrainArray) => { const checkDuplicateTrainData = (currentTrainArray) => {
const notNyujoData = currentTrainArray.filter((d) => d.delay !== "入線"); const notNyujoData = currentTrainArray.filter((d) => d.delay !== "入線");

18
menu.js
View File

@ -245,7 +245,6 @@ export default function Menu(props) {
station={ station={
originalStationList && allStationData[selectedCurrentStation][0] originalStationList && allStationData[selectedCurrentStation][0]
} }
navigate={navigate}
setTrainInfo={setTrainInfo} setTrainInfo={setTrainInfo}
EachTrainInfoAsSR={EachTrainInfoAsSR} EachTrainInfoAsSR={EachTrainInfoAsSR}
trainDiagram={trainDiagram} trainDiagram={trainDiagram}
@ -652,14 +651,7 @@ const FixedContentBottom = (props) => {
borderBottomRightRadius: 10, borderBottomRightRadius: 10,
}} }}
> >
{((data) => {[
data.map((d) => (
<ListItem onPress={() => Linking.openURL(d.url)}>
<Text>{d.name}</Text>
<View style={{ flex: 1 }} />
<Icon name="chevron-right" size={20} />
</ListItem>
)))([
{ {
url: "https://twitter.com/JRshikoku_eigyo", url: "https://twitter.com/JRshikoku_eigyo",
name: "JR四国営業部【公式】", name: "JR四国営業部【公式】",
@ -708,7 +700,13 @@ const FixedContentBottom = (props) => {
url: "https://twitter.com/Yoakemonogatari", url: "https://twitter.com/Yoakemonogatari",
name: "志国土佐 時代の夜明けのものがたり【公式】", name: "志国土佐 時代の夜明けのものがたり【公式】",
}, },
])} ].map((d) => (
<ListItem onPress={() => Linking.openURL(d.url)}>
<Text>{d.name}</Text>
<View style={{ flex: 1 }} />
<Icon name="chevron-right" size={20} />
</ListItem>
))}
</View> </View>
</View> </View>
<Text style={{ fontWeight: "bold", fontSize: 20 }}> <Text style={{ fontWeight: "bold", fontSize: 20 }}>