diff --git a/assets/configuration/layout_default.jpg b/assets/configuration/layout_default.jpg new file mode 100644 index 0000000..58d99d9 Binary files /dev/null and b/assets/configuration/layout_default.jpg differ diff --git a/assets/configuration/layout_tokyo.jpg b/assets/configuration/layout_tokyo.jpg new file mode 100644 index 0000000..a0c06bb Binary files /dev/null and b/assets/configuration/layout_tokyo.jpg differ diff --git a/components/Settings/LayoutSettings.js b/components/Settings/LayoutSettings.js index 4020857..07e1780 100644 --- a/components/Settings/LayoutSettings.js +++ b/components/Settings/LayoutSettings.js @@ -18,6 +18,8 @@ export const LayoutSettings = ({ setUsePDFView, trainMenu, setTrainMenu, + uiSetting, + setUiSetting, trainPosition, setTrainPosition, headerSize, @@ -38,6 +40,17 @@ export const LayoutSettings = ({ falseText={"本家\n(文字アイコン)"} trueText={"オリジナル\n(車種アイコン)"} /> + { AS.getItem("iconSwitch").then(setIconSetting); AS.getItem("mapSwitch").then(setMapSwitch); @@ -48,6 +49,7 @@ export default function Setting(props) { AS.getItem("trainPositionSwitch").then(setTrainPosition); AS.getItem("headerSize").then(setHeaderSize); AS.getItem("startPage").then(setStartPage); + AS.getItem("uiSetting").then(setUiSetting); }, []); const testNFC = async () => { //const result = await ExpoFelicaReader.scan(); @@ -63,6 +65,7 @@ export default function Setting(props) { AS.setItem("trainPositionSwitch", trainPosition.toString()), AS.setItem("headerSize", headerSize), AS.setItem("startPage", startPage.toString()), + AS.setItem("uiSetting", uiSetting), ]).then(() => Updates.reloadAsync()); }; return ( @@ -114,6 +117,8 @@ export default function Setting(props) { setTrainMenu={setTrainMenu} trainPosition={trainPosition} setTrainPosition={setTrainPosition} + uiSetting={uiSetting} + setUiSetting={setUiSetting} testNFC={testNFC} updateAndReload={updateAndReload} headerSize={headerSize} diff --git a/components/atom/SwitchArea.js b/components/atom/SwitchArea.js index 245a708..74e39d0 100644 --- a/components/atom/SwitchArea.js +++ b/components/atom/SwitchArea.js @@ -8,6 +8,8 @@ export const SwitchArea = ({ trueImage, falseText, trueText, + falseValue = false, + trueValue = true, children, }) => { return ( @@ -37,7 +39,7 @@ export const SwitchArea = ({ bool={bool} setBool={setBool} color="red" - value={false} + value={falseValue} image={falseImage} subText={falseText} /> @@ -45,7 +47,7 @@ export const SwitchArea = ({ bool={bool} setBool={setBool} color="red" - value={true} + value={trueValue} image={trueImage} subText={trueText} /> diff --git a/lib/webViewInjectjavascript.ts b/lib/webViewInjectjavascript.ts index a2e8260..3645b7f 100644 --- a/lib/webViewInjectjavascript.ts +++ b/lib/webViewInjectjavascript.ts @@ -2,13 +2,15 @@ type InjectJavascriptData = ( a: string, b: string, c: string, - d: string + d: string, + e: string ) => string; export const injectJavascriptData: InjectJavascriptData = ( mapSwitch, iconSetting, stationMenu, - trainMenu + trainMenu, + uiSetting ) => { // 一番上のメニュー非表示 地図スイッチによって切り替え const topMenu = @@ -1247,11 +1249,17 @@ export const injectJavascriptData: InjectJavascriptData = ( const returnText1 = (isWanman ? "ワンマン " : "") + trainName + viaData; const returnText2 = (ToData ? ToData+"行 " : ToData)+ TrainNumber; 行き先情報.innerText = ""; - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + TrainNumber + (JRF ? "":"レ") + "

"); - 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); - } + ${uiSetting === "tokyo" ? ` + 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + TrainNumber + (JRF ? "":"レ") + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); + `: ` + 行き先情報.insertAdjacentHTML('beforebegin', "

" + returnText1 + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + (ToData ? ToData + "行 " : ToData) + "

" + TrainNumber + (JRF ? "":"レ") + "

"); + 行き先情報.insertAdjacentHTML('beforebegin', "

" + (hasProblem ? "‼️停止中‼️" : "") + "

"); + `} + } `; const textInsert = @@ -1293,58 +1301,62 @@ const setNewTrainItem = (element)=>{ const setStrings = () =>{ try { const elements = document.querySelectorAll('#disp > div > div > div[onclick]'); - const elementBaseBase = document.querySelectorAll('[id^="stationBlock"]'); - elementBaseBase.forEach(e=>{ //それぞれの駅ブロック横一列 - e.style.display = 'flex'; - e.style.height = "unset"; - e.style.flexDirection = 'row'; - //e.style.alignItems = "left"; - e.style.justifyContent = 'center'; - const x = e.querySelectorAll(':scope > div');//配下のdiv要素を選択 - //x[0] 登りブロック x[2] 下りブロック x[1] 駅ブロック - const aaa = (x2,pos) => { - x2.style.display = 'flex'; - x2.style.flexDirection = 'row'; - if(pos == "right"){ - x2.style.alignItems = 'flex-start'; - x2.style.justifyContent = 'flex-start'; - }else if(pos == "left"){ - x2.style.alignItems = 'flex-end'; - x2.style.justifyContent = 'flex-end'; + const setNewTrainItemUI = ()=>{ + const elementBaseBase = document.querySelectorAll('[id^="stationBlock"]'); + elementBaseBase.forEach(e=>{ //それぞれの駅ブロック横一列 + e.style.display = 'flex'; + e.style.height = "unset"; + e.style.flexDirection = 'row'; + //e.style.alignItems = "left"; + e.style.justifyContent = 'center'; + const x = e.querySelectorAll(':scope > div');//配下のdiv要素を選択 + //x[0] 登りブロック x[2] 下りブロック x[1] 駅ブロック + const aaa = (x2,pos) => { + x2.style.display = 'flex'; + x2.style.flexDirection = 'row'; + if(pos == "right"){ + x2.style.alignItems = 'flex-start'; + x2.style.justifyContent = 'flex-start'; + }else if(pos == "left"){ + x2.style.alignItems = 'flex-end'; + x2.style.justifyContent = 'flex-end'; + } + x2.style.flexWrap = 'wrap'; + x2.style.width = '100%'; + x2.style.height = "100%"; + } - x2.style.flexWrap = 'wrap'; - x2.style.width = '100%'; - x2.style.height = "100%"; - - } - const aaa2 = (x2) => { - x2.style.display = 'flex'; - x2.style.flexDirection = 'row'; - x2.style.alignItems = 'center'; - x2.style.justifyContent = 'center'; - x2.style.flexWrap = 'wrap'; - x2.style.width = '100%'; - x2.style.height = "unset"; - const x3 = x2.querySelectorAll(":scope > div"); - x3.forEach(i=>{ - i.style.position = "unset"; - i.style.display = "flex"; - i.style.flexDirection = "column"; - i.style.flex = "1"; - i.style.backgroundColor = "#00000000"; - i.querySelectorAll(":scope > *").forEach(j=>{ - j.style.width = "100%"; - j.style.textAlign = "center"; - j.style.margin = "5px"; - j.style.padding = "5px"; + const aaa2 = (x2) => { + x2.style.display = 'flex'; + x2.style.flexDirection = 'row'; + x2.style.alignItems = 'center'; + x2.style.justifyContent = 'center'; + x2.style.flexWrap = 'wrap'; + x2.style.width = '100%'; + x2.style.height = "unset"; + const x3 = x2.querySelectorAll(":scope > div"); + x3.forEach(i=>{ + i.style.position = "unset"; + i.style.display = "flex"; + i.style.flexDirection = "column"; + i.style.flex = "1"; + i.style.backgroundColor = "#00000000"; + i.querySelectorAll(":scope > *").forEach(j=>{ + j.style.width = "100%"; + j.style.textAlign = "center"; + j.style.margin = "5px"; + j.style.padding = "5px"; + }); }); - }); - } - aaa(x[0],"left"); - aaa2(x[1]); - aaa(x[2],"right"); - - }); + } + aaa(x[0],"left"); + aaa2(x[1]); + aaa(x[2],"right"); + + }); + } + + ${uiSetting === "tokyo" ? `setNewTrainItemUI();`: ``} for (let element of elements) { if(element.getAttribute('offclick')){ continue; } element.setAttribute('offclick',element.getAttribute('onclick')) @@ -1375,7 +1387,7 @@ const setStrings = () =>{ } ` : ""} nameReplace(列車名データ,列番データ,行き先情報,hasProblem); - setNewTrainItem(element); + ${uiSetting === "tokyo" ? `setNewTrainItem(element);`: ``} } try{ for(let d of document.getElementById('disp').childNodes){ diff --git a/stateBox/useTrainMenu.js b/stateBox/useTrainMenu.js index fca06d7..c4d8467 100644 --- a/stateBox/useTrainMenu.js +++ b/stateBox/useTrainMenu.js @@ -16,6 +16,8 @@ const initialState = { setMapSwitch: () => {}, stationMenu: undefined, setStationMenu: () => {}, + uiSetting: undefined, + setUiSetting: () => {}, LoadError: false, setLoadError: () => {}, trainInfo: { @@ -58,12 +60,16 @@ export const TrainMenuProvider = ({ children }) => { //駅情報画面用 const [trainMenu, setTrainMenu] = useState("true"); + //GUIデザインベース + const [uiSetting, setUiSetting] = useState("tokyo"); + //地図表示テキスト const injectJavascript = injectJavascriptData( mapSwitch, iconSetting, stationMenu, - trainMenu + trainMenu, + uiSetting ); useEffect(() => { @@ -75,6 +81,8 @@ export const TrainMenuProvider = ({ children }) => { ASCore({ k: "stationSwitch", s: setStationMenu, d: "true", u: true }); //列車メニュースイッチ ASCore({ k: "trainSwitch", s: setTrainMenu, d: "true", u: true }); + //GUIデザインベーススイッチ + ASCore({ k: "uiSetting", s: setUiSetting, d: "tokyo", u: true }); }, []); return ( @@ -90,6 +98,8 @@ export const TrainMenuProvider = ({ children }) => { setMapSwitch, stationMenu, setStationMenu, + uiSetting, + setUiSetting, LoadError, setLoadError, trainInfo,