リファクタリング

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

18
menu.js
View File

@ -245,7 +245,6 @@ export default function Menu(props) {
station={
originalStationList && allStationData[selectedCurrentStation][0]
}
navigate={navigate}
setTrainInfo={setTrainInfo}
EachTrainInfoAsSR={EachTrainInfoAsSR}
trainDiagram={trainDiagram}
@ -652,14 +651,7 @@ const FixedContentBottom = (props) => {
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",
name: "JR四国営業部【公式】",
@ -708,7 +700,13 @@ const FixedContentBottom = (props) => {
url: "https://twitter.com/Yoakemonogatari",
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>
<Text style={{ fontWeight: "bold", fontSize: 20 }}>