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[onclick]');
for (let element of elements) {
if(!element.getAttribute('offclick')){
element.setAttribute('offclick',element.getAttribute('onclick'))
}
var 行き先情報 = element.getElementsByTagName("p")[0];
var 列番データ = element.getAttribute('offclick').split('"')[1];
var flag=false;
var TrainType = undefined;
setTrainMenuDialog(element)
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
? `
// これの中身抽出ShowTrainTimeInfo("1228M","normal")
function setTrainMenuDialog(d){
try{
const offclick = d.getAttribute('offclick');
if(!offclick) return;
const s = offclick.replace('ShowTrainTimeInfo(','').replaceAll('"','').replace(')','').split(',') ;
const returnData = {type:"ShowTrainTimeInfo",trainNum:s[0],limited:s[1]};
d.onclick = ()=>window.ReactNativeWebView.postMessage(JSON.stringify(returnData));
}catch(e){
}
}
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('(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 +
makeTrainMenu +
textInsert +
makeStationMenu
);
};