jrshikoku/lib/webViewInjectjavascript.js
2023-03-27 07:01:00 +09:00

758 lines
19 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

export const injectJavascriptData = (mapSwitch, iconSetting, stationMenu) => {
const topMenu =
mapSwitch != "true"
? `
document.getElementById('header').querySelector('a').style.display = 'none';
document.getElementById('header').style.height = '50px';
document.getElementById('main').style.paddingTop = '54px';
document.getElementById('headerStr').style.display = 'none';
`
: `
document.getElementsByClassName('accordionClass')[0].style.display = 'none';
document.getElementById('header').style.display = 'none';
document.getElementById('main').style.paddingTop = '0px';
document.getElementById('headerStr').style.display = 'none';
`;
const bootData =
topMenu +
`
const setReload = () =>{
try{
document.getElementById('refreshIcon').click();
setStrings();
}catch{
}
setTimeout(setReload, 10000);
}
setReload();
`;
const trainIconMaker = `
const setStationIcon = (行き先アイコン,img) =>{
let newItem = document.createElement("div");
if(行き先アイコン.getAttribute("style").includes("left")){
行き先アイコン.insertAdjacentHTML('beforebegin', "<img src="+img+" style='float:left;height:20px;'>");
}
else{
行き先アイコン.insertAdjacentHTML('beforebegin', "<img src="+img+" style='float:right;height:20px;'>");
}
行き先アイコン.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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000nr.png');
break;
//8000 アンパン
case "10M":
case "22M":
case "9M":
case "21M":
setStationIcon(element.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000nr.png');
break;
//8000 アンパン
case "1010M":
case "1022M":
case "1009M":
case "1021M":
setStationIcon(element.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
break;
//MEXP
//8000
case "1092M":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8000nr.png');
break;
//8600
case "1091M":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s8600_isz.png');
break;
//三桁いしづち
//8000 アンパン
case "1041M":
case "1044M":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s8000ap.png');
break;
//8600
case "1043M":
case "1042M":
case "1046M":
setStationIcon(element.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2600.png');
break;
//キハ185
case "3009D":
case "3032D":
setStationIcon(element.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001.png');
break;
case "3102M":
case "3101M":
case "3103M":
case "3171M":
case "3173M":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s5001k.png');
break;
//サンライズ瀬戸
case "5032M":
case "5031M":
case "8041M": //琴平延長高松迄
case "8031M": //琴平延長高松以降
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/w285.png');
break;
//宇和海
//2000 ノーマル
case "1052D":
case "1056D":
case "1058D":
case "1064D":
case "1070D":
case "1074D":
case "1076D":
case "1080D":
case "1082D":
case "1051D":
case "1059D":
case "1065D":
case "1071D":
case "1075D":
case "1077D":
case "1053D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s2000_uwa.png');
break;
//2000 アンパン込み
case "1054D":
case "1060D":
case "1062D":
case "1066D":
case "1068D":
case "1072D":
case "1078D":
case "1055D":
case "1057D":
case "1061D":
case "1063D":
case "1067D":
case "1069D":
case "1073D":
case "1079D":
case "1081D":
setStationIcon(element.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'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.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185tu.png');
break;
//むろと
case "5051D":
case "5052D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185_mrt.png');
break;
//よしのがわトロッコ
case "8452D":
case "8451D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s185to_ai.png');
break;
//岡山高松アントロ
case "8176D":
case "8179D":
//岡山琴平アントロ
case "8277D":
case "8278D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/f/s32to4.png');
break;
//伊予灘ものがたり
case "8091D":
case "8093D":
case "8092D":
case "8094D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185iyoy.png');
break;
//千年ものがたり
case "8011D":
case "8012D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185mm1.png');
break;
//夜明けものがたり
case "8053D":
case "8054D":
case "8062D":
case "8063D":
setStationIcon(element.getElementsByTagName("img")[0],'http://www.trainfrontview.net/b/s185ym1.png');
break;
default:
break;
}
`
: ``;
const JRF_icon =
iconSetting == "true"
? `
JRF || setStationIcon(element.getElementsByTagName("img")[0],'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;
switch(列番データ){
case "71":
行き先情報.innerText = "東京(タ)→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "73":
case "75":
行き先情報.innerText = "大阪(タ)→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "3079":
行き先情報.innerText = "高松(タ)→伊予三島"+"\\n"+行き先情報.innerText;
break;
case "3071":
case "3077":
行き先情報.innerText = "高松(タ)→新居浜"+"\\n"+行き先情報.innerText;
break;
case "3073":
行き先情報.innerText = "高松(タ)→松山貨物"+"\\n"+行き先情報.innerText;
break;
case "70":
行き先情報.innerText = "高松(タ)→東京(タ)"+"\\n"+行き先情報.innerText;
break;
case "74":
case "76":
行き先情報.innerText = "高松(タ)→大阪(タ)"+"\\n"+行き先情報.innerText;
break;
case "3078":
行き先情報.innerText = "伊予三島→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "3070":
行き先情報.innerText = "新居浜→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "3076":
行き先情報.innerText = "新居浜→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "3072":
行き先情報.innerText = "松山貨物→高松(タ)"+"\\n"+行き先情報.innerText;
break;
case "9070":
行き先情報.innerText = "臨時貨物"+"\\n"+行き先情報.innerText;
break;
default:
JRF = true;
}
` + JRF_icon;
const TKT_name = `
//安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定
switch(列番データ){
case "5814D":
case "5816D":
行き先情報.innerText = "ごめん・なはり線直通\\n快速 奈半利行";
break;
case "5812D":
行き先情報.innerText = "ごめん・なはり線直通\\n快速 安芸行";
break;
case "5874D":
case "5882D":
行き先情報.innerText = "ごめん・なはり線直通\\n各停 安芸行";
break;
case "742D":
case "746D":
行き先情報.innerText = "土佐山田/奈半利行\\n(後免にて解結)\\nごめん・なはり線快速";
break;
default:
if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){
行き先情報.innerText = "ごめん・なはり線直通\\n快速 "+行き先情報.innerText;
}
else if(new RegExp(/^58[4-9][1,3,5,7,9][DM]$/).test(列番データ)){
行き先情報.innerText = "ごめん・なはり線直通\\n各停 "+行き先情報.innerText;
}
else if(new RegExp(/^58[3-4][0,2,4,6,8][DM]$/).test(列番データ)){
行き先情報.innerText = "ごめん・なはり線直通\\n快速 奈半利行";
}
else if(new RegExp(/^58[5-9][0,2,4,6,8][DM]$/).test(列番データ)){
行き先情報.innerText = "ごめん・なはり線直通\\n各停 奈半利行";
}
break;
}
`;
const textInsert =
`
const setStrings = () =>{
try {
var elements = document.querySelectorAll('[onclick]');
for (let element of elements) {
if(element.getAttribute('onclick').indexOf('ShowTrainTimeInfo') == -1) continue;
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) {}
//setTimeout(setStrings,500);
}
const target = document.getElementById('disp'); // body要素を監視
const observer = new MutationObserver( (mutations) => {
// observer.disconnect(); // 監視を終了
setStrings();
});
// 監視を開始
observer.observe(target, {
attributes: true, // 属性変化の監視
//attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する
//characterData: true, // テキストノードの変化を監視
//characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する
childList: true, // 子ノードの変化を監視
//subtree: true // 子孫ノードも監視対象に含める
});
`;
const makeTrainView = `
const modal_content = document.getElementById('modal_content'); // body要素を監視
const modal_observer = new MutationObserver( (mutations) => {
// observer.disconnect(); // 監視を終了
for(let d of modal_content.getElementsByTagName("button") ){
const data = d.onclick.toString().split("\\"")[1];
d.onclick = () => window.ReactNativeWebView.postMessage(data)
}
});
// 監視を開始
modal_observer.observe(modal_content, {
//attributes: true, // 属性変化の監視
//attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する
//characterData: true, // テキストノードの変化を監視
//characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する
childList: true, // 子ノードの変化を監視
//subtree: true // 子孫ノードも監視対象に含める
});
`;
const makeStationMenu =
stationMenu == "true"
? `
const setStationMenuDialog = () =>{
document.querySelector('#pMENU_2').style.display='none';
document.querySelector('#pMENU_3').style.display='none';
document.querySelector('#pMENU_2').style.display='none';
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 = () =>{
window.ReactNativeWebView.postMessage(d.offclick);
}
}
}
const observer3 = new MutationObserver( (mutations) => {
// observer3.disconnect(); // 監視を終了
setStationMenuDialog();
});
// 監視を開始
observer3.observe(target, {
attributes: true, // 属性変化の監視
//attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する
//characterData: true, // テキストノードの変化を監視
//characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する
childList: true, // 子ノードの変化を監視
//subtree: true // 子孫ノードも監視対象に含める
});
`
: ``;
return (
bootData + makeTrainView + trainIconMaker + textInsert + makeStationMenu
);
};