import { getJRF } from "../components/custom-train-data"; export const injectJavascriptData = ( mapSwitch, iconSetting, stationMenu, trainMenu ) => { // 一番上のメニュー非表示 地図スイッチによって切り替え const topMenu = mapSwitch != "true" ? ` document.querySelector('#header a').style.display = 'none'; document.querySelector('#header').style.height = '50px'; document.querySelector('#main').style.paddingTop = '54px'; document.querySelector('#headerStr').style.display = 'none'; ` : ` document.querySelector('.accordionClass').style.display = 'none'; document.querySelector('#header').style.display = 'none'; document.querySelector('#main').style.paddingTop = '0px'; document.querySelector('#headerStr').style.display = 'none'; `; // 何これ const bootData = ` const setReload = () =>{ try{ document.getElementById('refreshIcon').click(); setStrings(); }catch{ } setTimeout(setReload, 10000); } setReload(); `; // 左か右かを判定してアイコンを設置する const trainIconMaker = ` const setStationIcon = (setIconElem,img) =>{ if(setIconElem.getAttribute("style").includes("left")){ setIconElem.insertAdjacentHTML('beforebegin', ""); } else{ setIconElem.insertAdjacentHTML('beforebegin', ""); } setIconElem.remove(); } `; const trainIcon = iconSetting == "true" ? ` switch(列番データ){ //しおかぜメイン //8000 ノーマル case "2M": case "4M": case "6M": case "14M": case "16M": case "18M": case "26M": case "28M": case "30M": case "1M": case "3M": case "5M": case "13M": case "15M": case "17M": case "25M": case "27M": case "29M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s8000nr.png'); break; //8000 アンパン case "10M": case "22M": case "9M": case "21M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s8000ap.png'); break; //8600 case "8M": case "12M": case "20M": case "24M": case "7M": case "11M": case "19M": case "23M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s8600.png'); break; //いしづちメイン //8000 ノーマル case "1004M": case "1006M": case "1014M": case "1016M": case "1018M": case "1026M": case "1028M": case "1030M": case "1001M": case "1003M": case "1005M": case "1013M": case "1015M": case "1017M": case "1025M": case "1027M": case "1029M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s8000nr.png'); break; //8000 アンパン case "1010M": case "1022M": case "1009M": case "1021M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s8000ap.png'); break; //8600 case "1008M": case "1012M": case "1020M": case "1024M": case "1007M": case "1011M": case "1019M": case "1023M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s8600_isz.png'); break; //MEXP //8000 case "1092M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s8000nr.png'); break; //8600 case "1091M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s8600_isz.png'); break; //三桁いしづち //8000 アンパン case "1041M": case "1044M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s8000ap.png'); break; //8600 case "1043M": case "1042M": case "1046M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s8600_isz.png'); break; //南風 2700ノーマル case "34D": case "38D": case "40D": case "42D": case "46D": case "50D": case "52D": case "54D": case "58D": case "31D": case "35D": case "39D": case "41D": case "43D": case "47D": case "51D": case "53D": case "55D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2700.png'); break; //2700アンパン case "32D": case "36D": case "44D": case "48D": case "56D": case "33D": case "37D": case "45D": case "49D": case "57D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s2700apr.png'); break; //うずしお //2700 case "5006D": case "5022D": case "5013D": case "5029D": case "3002D": case "3004D": case "3010D": case "3012D": case "3016D": case "3018D": case "3024D": case "3028D": case "3030D": case "3003D": case "3005D": case "3007D": case "3015D": case "3019D": case "3021D": case "3025D": case "3027D": case "3031D": case "3033D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2700_uzu.png'); break; //2600 case "3008D": case "3014D": case "3020D": case "3026D": case "3001D": case "3011D": case "3017D": case "3023D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2600.png'); break; //キハ185 case "3009D": case "3032D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185tu_uzu.png'); break; //マリンライナー case "3104M": case "3106M": case "3108M": case "3110M": case "3112M": case "3114M": case "3116M": case "3118M": case "3120M": case "3122M": case "3124M": case "3126M": case "3128M": case "3130M": case "3132M": case "3134M": case "3136M": case "3138M": case "3140M": case "3142M": case "3144M": case "3146M": case "3148M": case "3150M": case "3152M": case "3154M": case "3156M": case "3158M": case "3160M": case "3162M": case "3164M": case "3166M": case "3168M": case "3170M": case "3105M": case "3107M": case "3109M": case "3111M": case "3113M": case "3115M": case "3117M": case "3119M": case "3121M": case "3123M": case "3125M": case "3127M": case "3129M": case "3131M": case "3133M": case "3135M": case "3137M": case "3139M": case "3141M": case "3143M": case "3145M": case "3147M": case "3149M": case "3151M": case "3153M": case "3155M": case "3157M": case "3159M": case "3161M": case "3163M": case "3165M": case "3167M": case "3169M": case "3175M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s5001.png'); break; case "3102M": case "3101M": case "3103M": case "3171M": case "3173M": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s5001k.png'); break; //サンライズ瀬戸 case "5032M": case "5031M": case "8041M": //琴平延長高松迄 case "8031M": //琴平延長高松以降 setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/w285.png'); break; //宇和海 //2000 ノーマル case "1052D": case "1056D": case "1058D": case "1062D": case "1064D": case "1068D": case "1070D": case "1074D": case "1076D": case "1078D": case "1080D": case "1082D": case "1051D": case "1053D": case "1057D": case "1059D": case "1063D": case "1065D": case "1069D": case "1071D": case "1073D": case "1075D": case "1077D": case "1079D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2000_uwa.png'); break; //2000 アンパン込み case "1054D": case "1060D": case "1066D": case "1072D": case "1055D": case "1061D": case "1067D": case "1081D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s2002a.png'); break; //しまんと case "2002D": case "2004D": case "2006D": case "2008D": case "2001D": case "2003D": case "2005D": case "2007D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2700_smn.png'); break; //あしずり 2000 case "2074D": case "2076D": case "2080D": case "2084D": case "2086D": case "2071D": case "2075D": case "2077D": case "2081D": case "2083D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2000_asi.png'); break; //あしずり 2700 case "2078D": case "2082D": case "2088D": case "2073D": case "2079D": case "2085D": case "2072D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s2700_asi.png'); break; //剣山 case "4002D": case "4004D": case "4006D": case "4008D": case "4010D": case "4001D": case "4003D": case "4005D": case "4007D": case "4009D": case "4011D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185tu.png'); break; //むろと case "5051D": case "5052D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185_mrt.png'); break; //よしのがわトロッコ case "8452D": case "8451D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s185to_ai.png'); break; //岡山高松アントロ case "8176D": case "8179D": //岡山琴平アントロ case "8277D": case "8278D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/s32to4.png'); break; //伊予灘ものがたり case "8091D": case "8093D": case "8092D": case "8094D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185iyoy.png'); break; //千年ものがたり case "8011D": case "8012D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185mm1.png'); break; //夜明けものがたり case "8053D": case "8054D": case "8062D": case "8063D": setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/b/s185ym1.png'); break; default: break; } ` : ``; const JRF_icon = iconSetting == "true" ? `JRF || setStationIcon(element.querySelector("img"),'http://www.trainfrontview.net/f/ef210a.png');` : ``; const normal_train_name = ` if(new RegExp(/^4[1-9]\\d\\d[DM]$/).test(列番データ) || new RegExp(/^5[1-7]\\d\\d[DM]$/).test(列番データ)){ 行き先情報.innerText = "ワンマン\\n"+行き先情報.innerText; flag=true; } if(new RegExp(/^49[0-4]\\dD$/).test(列番データ) || new RegExp(/^9[0-4]\\dD$/).test(列番データ)){ 行き先情報.innerText = "(海経由)"+(flag ? "" : "\\n")+行き先情報.innerText; } if(new RegExp(/^46\\d\\dD$/).test(列番データ) || new RegExp(/^6\\d\\dD$/).test(列番データ)){ 行き先情報.innerText = "(内子経由)"+(flag ? "" : "\\n")+行き先情報.innerText; } if(列番データ.indexOf("H") != -1){ 行き先情報.innerText = 行き先情報.innerText+"試運転\\n"; } else if(列番データ.indexOf("R") != -1){ 行き先情報.innerText = 行き先情報.innerText+"回送\\n"; } else if(列番データ.indexOf("S") != -1){ 行き先情報.innerText = 行き先情報.innerText+"臨時列車\\n"; } `; const JRF_name = ` let JRF = false; const getJRF = num =>{ switch(num){ case "71": return "東京(タ)→高松(タ)"+"\\n"; case "73": case "75": return "大阪(タ)→高松(タ)"+"\\n"; case "3079": return "高松(タ)→伊予三島"+"\\n"; case "3071": case "3077": return "高松(タ)→新居浜"+"\\n"; case "3073": return "高松(タ)→松山貨物"+"\\n"; case "70": return "高松(タ)→東京(タ)"+"\\n"; case "74": case "76": return "高松(タ)→大阪(タ)"+"\\n"; case "3078": return "伊予三島→高松(タ)"+"\\n"; case "3070": return "新居浜→高松(タ)"+"\\n"; case "3076": return "新居浜→高松(タ)"+"\\n"; case "3072": return "松山貨物→高松(タ)"+"\\n"; case "9070": return "臨時貨物"+"\\n"; default: JRF = true; return null; } } const data = getJRF(列番データ); 行き先情報.innerText = data != null ? data+行き先情報.innerText : 行き先情報.innerText; ` + JRF_icon; const TKT_name = ` //安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定 const getTKT = num =>{ switch(num){ case "5814D": case "5816D": return "ごめん・なはり線直通\\n快速 奈半利行"; case "5812D": return "ごめん・なはり線直通\\n快速 安芸行"; case "5874D": case "5882D": return "ごめん・なはり線直通\\n各停 安芸行"; case "742D": case "746D": return "土佐山田/奈半利行\\n(後免にて解結)\\nごめん・なはり線快速"; default: if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){ return "ごめん・なはり線直通\\n快速 "+行き先情報.innerText; } else if(new RegExp(/^58[4-9][1,3,5,7,9][DM]$/).test(列番データ)){ return "ごめん・なはり線直通\\n各停 "+行き先情報.innerText; } else if(new RegExp(/^58[3-4][0,2,4,6,8][DM]$/).test(列番データ)){ return "ごめん・なはり線直通\\n快速 奈半利行"; } else if(new RegExp(/^58[5-9][0,2,4,6,8][DM]$/).test(列番データ)){ return "ごめん・なはり線直通\\n各停 奈半利行"; } }} 行き先情報.innerText = getTKT(列番データ) || 行き先情報.innerText; `; const textInsert = ` //列番付与 const setStrings = () =>{ try { const elements =[]; document.querySelectorAll('#disp div div div').forEach(d=>{ if(d.onclick)elements.push(d) }); for (let element of elements) { var 行き先情報 = element.getElementsByTagName("p")[0]; var 列番データ = element.getAttribute('onclick').split('"')[1]; var flag=false; var TrainType = undefined; if(行き先情報.innerText.includes(列番データ))continue; //回避 ` + trainIcon + normal_train_name + JRF_name + TKT_name + ` //列番付与 行き先情報.innerText = 行き先情報.innerText+列番データ+(JRF ? "":"レ"); } try{ for(let d of document.getElementById('disp').childNodes){ switch(d.id){ case 'pMENU_2': case 'pMENU_2_En': case 'pMENU_3': case 'pMENU_3_En': case 'pMENU_k': case 'pMENU_k_En': continue; default: break; } d.style.width = '100vw'; for(let f of d.childNodes){ try{ if(f.style.alignItems || f.style.textAlign){ f.style.width = '38vw'; } else{ if(f.id == 'upTrainCrossBar'){ f.style.width = '38vw'; } else if(f.id == 'dwTrainCrossBar'){ f.style.left = '62vw'; f.style.width = '38vw'; } else { f.style.width = '0vw'; } } if(f.style.textAlign == 'center'){ f.style.width = '24vw'; f.style.display = 'flex'; f.childNodes.forEach(i =>{ i.style.width = 'unset'; i.style.left = 'unset'; i.style.top = 'unset'; i.style.position = 'unset'; i.style.flex = '1'; i.style.margin = '5px' if(i.style.backgroundColor != 'rgb(247, 247, 247)'){ i.childNodes.forEach(m=> m.style.width = '20vw') } }) } }catch(e){} } } document.querySelector('#pMENU_2').style.borderStyle='solid'; document.querySelector('#pMENU_2').style.borderColor='#00d3e8'; document.querySelector('#pMENU_2').style.borderWidth='2px'; document.querySelector('#pMENU_2').style.borderRadius='10%'; document.querySelector('#pMENU_3').style.borderStyle='solid'; document.querySelector('#pMENU_3').style.borderColor='#00d3e8'; document.querySelector('#pMENU_3').style.borderWidth='2px'; document.querySelector('#pMENU_3').style.borderRadius='10%'; document.querySelectorAll('#pMENU_2 div').forEach((d)=>d.style.padding = '10px'); document.querySelectorAll('#pMENU_3 div').forEach((d)=>d.style.padding = '10px'); document.querySelectorAll('#topHeader div').forEach((d)=>d.style.width = '100vw'); document.querySelectorAll('#disp div')[0].style.width = '100vw'; document.getElementById('disp').style.width = '100vw'; document.getElementById('disp').style.overflowX = 'hidden'; }catch(e){ alert("にゃーん"); } } catch (e) {} } const textInsert = new MutationObserver( (mutations) => setStrings()); // 監視を開始 textInsert.observe(document.getElementById('disp'), { attributes: true, // 属性変化の監視 //attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する //characterData: true, // テキストノードの変化を監視 //characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する childList: true, // 子ノードの変化を監視 //subtree: true // 子孫ノードも監視対象に含める }); `; const makeTrainView = ` const makeTrainView = new MutationObserver( (mutations) => { for(let d of modal_content.getElementsByTagName("button") ){ const data = d.onclick.toString().split("\\"")[1]; d.onclick = () => window.ReactNativeWebView.postMessage(data) } }); // 監視を開始 makeTrainView.observe(document.getElementById('modal_content'), { //attributes: true, // 属性変化の監視 //attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する //characterData: true, // テキストノードの変化を監視 //characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する childList: true, // 子ノードの変化を監視 //subtree: true // 子孫ノードも監視対象に含める }); `; const makeTrainMenu = //trainMenu == "true" true ? ` function ShowTrainTimeInfo(trainNum,limited){ window.ReactNativeWebView.postMessage(JSON.stringify({type:"ShowTrainTimeInfo",trainNum,limited})); }; ` : ``; const makeStationMenu = stationMenu == "true" ? ` //駅メニューダイアログの配置 const setStationMenuDialog = new MutationObserver( (mutations) => { const data =[]; document.querySelectorAll('#disp div div').forEach(d=>d.id.indexOf("st")!= -1 && data.push(d)); for(let d of data ){ if(!d.offclick){ d.offclick = d.onclick.toString(); } d.onclick = () =>{ //const s = d.offclick.replace('function onclick(event)','').replace('ShowTrainTimeInfo(','').replace(')','').split('(')[1].split(',') // これの中身抽出ShowTrainTimeInfo("1228M","normal") const s = d.offclick.replace('(event)','').replaceAll("'", "").split('(')[1].split(')')[0].split(','); // これの中身抽出 PopUpMenu(event,'2','端岡','http://www.jr-shikoku.co.jp/01_trainbus/jikoku/pdf/hashioka.pdf','https://www.google.co.jp/maps/place/34.305027,133.967643','','1') window.ReactNativeWebView.postMessage(JSON.stringify({type:"PopUpMenu",event:s[0],id:s[1],name:s[2],pdf:s[3],map:s[4],url:s[5],chk:s[6]})); } } }); // 監視を開始 setStationMenuDialog.observe(document.querySelector('#disp'), { attributes: true, // 属性変化の監視 //attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する //characterData: true, // テキストノードの変化を監視 //characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する childList: true, // 子ノードの変化を監視 //subtree: true // 子孫ノードも監視対象に含める }); ` : ``; return ( bootData + topMenu + makeTrainView + trainIconMaker + textInsert + makeTrainMenu + makeStationMenu ); };