diff --git a/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js b/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js new file mode 100644 index 0000000..99f5754 --- /dev/null +++ b/components/Settings/FavoliteSettings/FavoiliteSettingsItem.js @@ -0,0 +1,125 @@ +import React, { useEffect, useState } from "react"; +import Icon from "react-native-vector-icons/Entypo"; +import { View, Text, TouchableOpacity, LayoutAnimation } from "react-native"; +import lineColorList from "../../../assets/originData/lineColorList"; +import { AS } from "../../../storageControl"; + +export const FavoriteSettingsItem = ({ + currentStation, + setFavoriteStation, + index, + array, +}) => { + const lineIDs = []; + const EachIDs = []; + console.log(currentStation); + currentStation.forEach((d) => { + if (!d.StationNumber) return; + const textArray = d.StationNumber.split(""); + lineIDs.push(textArray.filter((s) => "A" < s && s < "Z").join("")); + EachIDs.push(textArray.filter((s) => "0" <= s && s <= "9").join("")); + }); + const [head, setHead] = useState(false); + const [tail, setTail] = useState(false); + useEffect(() => { + if (index == 0) { + setHead(true); + } else if (index == array.length - 1) { + setTail(true); + } else { + setHead(false); + setTail(false); + } + }, [array]); + + return ( + + + {lineIDs.map((lineID, index) => ( + + + + {lineIDs[index]} + {"\n"} + {EachIDs[index]} + + + + ))} + + + + {currentStation[0].Station_JP} + + { + console.log("up"); + LayoutAnimation.configureNext( + LayoutAnimation.Presets.easeInEaseOut + ); + const removedStation = [...array].filter((d, i) => { + if (i == index) return false; + return true; + }); + removedStation.splice(index - 1, 0, currentStation); + setFavoriteStation(removedStation); + + AS.setItem("favoriteStation", JSON.stringify(removedStation)); + }} + > + {head ? null : } + + { + console.log("down"); + LayoutAnimation.configureNext( + LayoutAnimation.Presets.easeInEaseOut + ); + const removedStation = [...array].filter((d, i) => { + if (i == index) return false; + return true; + }); + removedStation.splice(index + 1, 0, currentStation); + setFavoriteStation(removedStation); + AS.setItem("favoriteStation", JSON.stringify(removedStation)); + }} + > + {tail ? null : } + + + + ); +}; diff --git a/components/Settings/FavoriteSettings.js b/components/Settings/FavoriteSettings.js new file mode 100644 index 0000000..11bd97f --- /dev/null +++ b/components/Settings/FavoriteSettings.js @@ -0,0 +1,81 @@ +import React from "react"; +import { View, Text, TouchableOpacity, ScrollView } from "react-native"; +import { useFavoriteStation } from "../../stateBox/useFavoriteStation"; +import { CheckBox } from "react-native-elements"; +import { FavoriteSettingsItem } from "./FavoliteSettings/FavoiliteSettingsItem"; + +export const FavoriteSettings = ({ navigate }) => { + const { favoriteStation, setFavoriteStation } = useFavoriteStation(); + return ( + + + + navigate("settingTopPage")} + style={{ + flexDirection: "column", + flex: 1, + }} + > + + + < 設定 + + + + + + + お気に入り設定 + + + + + {favoriteStation.map((currentStation, index, array) => ( + + ))} + + + ); +}; + +const SimpleSwitch = ({ bool, setBool, str }) => ( + + setBool(bool == "true" ? "false" : "true")} + containerStyle={{ + flex: 1, + backgroundColor: "#00000000", + borderColor: "white", + alignContent: "center", + }} + textStyle={{ fontSize: 20, fontWeight: "normal" }} + title={str} + /> + +); diff --git a/components/Settings/SettingTopPage.js b/components/Settings/SettingTopPage.js index ec16df8..5db3529 100644 --- a/components/Settings/SettingTopPage.js +++ b/components/Settings/SettingTopPage.js @@ -115,7 +115,10 @@ export const SettingTopPage = ({ - {}}> + navigate("FavoriteSettings")} + > - お気に入り登録の管理(工事中) + お気に入り登録の並び替え {(props) => } + + {(props) => } + ); } diff --git a/components/駅名表/Sign.js b/components/駅名表/Sign.js index 1a139d2..852f9ec 100644 --- a/components/駅名表/Sign.js +++ b/components/駅名表/Sign.js @@ -1,4 +1,4 @@ -import React, { useRef, useState, useEffect } from "react"; +import React, { useRef, useState, useEffect, useLayoutEffect } from "react"; import { View, Text, TouchableOpacity } from "react-native"; import { widthPercentageToDP as wp } from "react-native-responsive-screen"; import LottieView from "lottie-react-native"; @@ -16,7 +16,7 @@ export default function Sign(props) { const [preStation, setPreStation] = useState(); const [nexStation, setNexStation] = useState(); const [testButtonStatus, setTestButtonStatus] = useState(false); - useEffect(() => { + useLayoutEffect(() => { const isFavorite = favoriteStation.filter((d) => { const compare = JSON.stringify(d); const current = JSON.stringify(currentStation);