type InjectJavascriptData = (
a: string,
b: string,
c: string,
d: string
) => string;
export const injectJavascriptData: 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';
`;
// 上部ヘッダーの取り扱い、自動再読み込み、setStringsの実行
const bootData = `
let probremsData = [];
fetch("https://n8n.haruk.in/webhook/jrshikoku-position-problems").then((response) => response.json()).then((data) => {
probremsData = data.data;
});
const setReload = () =>{
try{
document.getElementById('refreshIcon').click();
fetch("https://n8n.haruk.in/webhook/jrshikoku-position-problems").then((response) => response.json()).then((data) => {
probremsData = data.data;
});
setStrings();
}catch(error){}
setTimeout(setReload, 10000);
}
setReload();
`;
// 左か右かを判定してアイコンを設置する
const trainIcon = `
const setStationIcon = (setIconElem,img,hasProblem) =>{
const position = setIconElem.getAttribute("style").includes("left");
setIconElem.insertAdjacentHTML('beforebegin', "");
setIconElem.remove();
}
const setTrainIcon = (列番データ,e,hasProblem) =>{
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(e.querySelector("img"),'https://storage.haruk.in/s8000nr.png',hasProblem);
break;
//8000 アンパン
case "10M":
case "22M":
case "9M":
case "21M":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//8600
case "8M":
case "12M":
case "20M":
case "24M":
case "7M":
case "11M":
case "19M":
case "23M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s8600.png',hasProblem);
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(e.querySelector("img"),'https://storage.haruk.in/s8000no.png',hasProblem);
break;
//8000 アンパン
case "1010M":
case "1022M":
case "1009M":
case "1021M":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//8600
case "1008M":
case "1012M":
case "1020M":
case "1024M":
case "1007M":
case "1011M":
case "1019M":
case "1023M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s8600_isz.png',hasProblem);
break;
//MEXP
//8000
case "1092M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s8000nr.png',hasProblem);
break;
//8600
case "1091M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s8600_isz.png',hasProblem);
break;
//三桁いしづち
//8000 アンパン
case "1041M":
case "1044M":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//8600
case "1043M":
case "1042M":
case "1046M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s8600_isz.png',hasProblem);
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(e.querySelector("img"),'https://storage.haruk.in/s2700.png',hasProblem);
break;
//2700アンパン
case "32D":
case "36D":
case "44D":
case "48D":
case "56D":
case "33D":
case "37D":
case "45D":
case "49D":
case "57D":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//うずしお
//2700
case "3004D":
case "3006D":
case "3010D":
case "3014D":
case "3016D":
case "3022D":
case "3028D":
case "3003D":
case "3007D":
case "3013D":
case "3019D":
case "3025D":
case "3031D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2700_uzu.png',hasProblem);
break;
//2700 二両編成
case "3008D":
case "3020D":
case "3026D":
case "3001D":
case "3005D":
case "3011D":
case "3017D":
case "3023D":
case "3029D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2700_uzu.png',hasProblem);
break;
//2600
case "3002D":
case "3012D":
case "3018D":
case "3024D":
case "3030D":
case "3009D":
case "3015D":
case "3021D":
case "3027D":
case "3033D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2600.png',hasProblem);
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(e.querySelector("img"),'https://storage.haruk.in/s5001.png',hasProblem);
break;
case "3102M":
case "3101M":
case "3103M":
case "3171M":
case "3173M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s5001k.png',hasProblem);
break;
//サンライズ瀬戸
case "5032M":
case "5031M":
case "8041M": //琴平延長高松迄
case "8031M": //琴平延長高松以降
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/w285.png',hasProblem);
break;
//宇和海
//2000 ノーマル
case "1052D":
case "1054D":
case "1056D":
case "1060D":
case "1062D":
case "1064D":
case "1068D":
case "1070D":
case "1072D":
case "1076D":
case "1078D":
case "1080D":
case "1082D":
case "1051D":
case "1055D":
case "1057D":
case "1061D":
case "1063D":
case "1065D":
case "1069D":
case "1071D":
case "1073D":
case "1075D":
case "1077D":
case "1079D":
case "1081D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2000_uwa.png',hasProblem);
break;
//2000 アンパン込み
case "1058D":
case "1066D":
case "1074D":
case "1053D":
case "1059D":
case "1067D":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//しまんと
case "2002D":
case "2004D":
case "2001D":
case "2003D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2700_smn.png',hasProblem);
break;
//あしずり 2000
case "2074D":
case "2076D":
case "2080D":
case "2082D":
case "2071D":
case "2073D":
case "2079D":
case "2081D":
setStationIcon(e.querySelector("img"),'https://n8n.haruk.in/webhook/anpanman-pictures.png?trainNum='+列番データ,hasProblem);
break;
//あしずり 2700
case "2072D":
case "2078D":
case "2084D":
case "2075D":
case "2077D":
case "2083D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s2700_asi.png',hasProblem);
break;
//剣山
case "4002D":
case "4004D":
case "4006D":
case "4001D":
case "4003D":
case "4005D":
case "4007D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185tu.png',hasProblem);
break;
//よしのがわトロッコ
case "8452D":
case "8451D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185to_ai.png',hasProblem);
break;
//岡山高松アントロ
case "8176D":
case "8179D":
//岡山琴平アントロ
case "8277D":
case "8278D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32to4.png',hasProblem);
break;
//千年ものがたり
case "8021D":
case "8022D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185mm1.png',hasProblem);
break;
//夜明けものがたり
case "8082D":
case "8083D":
case "8073D":
case "8074D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185ym1.png',hasProblem);
break;
//ラマルドボア
case "9253M":
case "9256M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/w213w.png',hasProblem);
break;
// 貨物
case "74":
case "75":
case "70":
case "71":
case "73":
case "76":
case "3070":
case "3071":
case "3072":
case "3073":
case "3076":
case "3077":
case "3078":
case "3079":
case "8070":
case "8071":
case "8072":
case "8077":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/ef210a.png',hasProblem);
break;
// // 普通列車系統、6000系運用
// //61運用
// case "1213M":
// case "1214M":
// case "143M":
// case "147M":
// //62運用
// case "114M":
// //961運用
// case "143M":
// case "147M":
// //962運用
// case "114M":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s6000p.png',hasProblem);
// break;
// // 土讃線普通列車系統(include ごな線)
// // ごな線
// case "5851D": //219D併結 [ToDo: 219Dとの分割対策]
// case "5854D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/tosa9640jgr.png',hasProblem);
// break;
// //JR車両乗り入れ運用
// case "5858D":
// case "5869D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png',hasProblem);
// break;
// //併結運用の併結される側 [ToDo: 分割対策]
// case "5845D":
// case "5851D":
// case "5818D":
// case "5820D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/tosa9640.png',hasProblem);
// break;
// // 土讃線単体列車のキハ32運用
// case "715D":
// case "718D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32ns.png',hasProblem);
// break;
// // サンライズに伴う気動車代走
// case "6219D":
// case "6222D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png',hasProblem);
// break;
// // それ以外の土讃線ごな線直通列車
// case "5811D":
// case "5813D":
// case "5815D":
// case "5817D":
// case "5843D":
// case "5853D":
// case "5855D":
// case "5859D":
// case "5861D":
// case "5865D":
// case "5881D":
// case "5885D":
// case "5889D":
// case "5812D":
// case "5814D":
// case "5816D":
// case "5852D":
// case "5856D":
// case "5860D":
// case "5862D":
// case "5872D":
// case "5874D":
// case "5876D":
// case "5880D":
// case "5882D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/tosa9640.png',hasProblem);
// break;
// // それ以外の土讃線普通列車(1000)
// case "4210D":
// case "4212D":
// case "4214D":
// case "4218D":
// case "4220D":
// case "4222D":
// case "4224D":
// case "4226D":
// case "4228D":
// case "4230D":
// case "4232D":
// case "4234D":
// case "4236D":
// case "4238D":
// case "4240D":
// case "4242D":
// case "4244D":
// case "4250D":
// case "4252D":
// case "4254D":
// case "4256D":
// case "4211D":
// case "4221D":
// case "4223D":
// case "4225D":
// case "4227D":
// case "4229D":
// case "4231D":
// case "4235D":
// case "4237D":
// case "4239D":
// case "4241D":
// case "4245D":
// case "4247D":
// case "4249D":
// case "4251D":
// case "4253D":
// case "4255D":
// case "4257D":
// case "4259D":
// case "4261D":
// case "4710D":
// case "4726D":
// case "4730D":
// case "4732D":
// case "4734D":
// case "4738D":
// case "4740D":
// case "4742D":
// case "4744D":
// case "4746D":
// case "4752D":
// case "4756D":
// case "4762D":
// case "4764D":
// case "4766D":
// case "4711D":
// case "4713D":
// case "4723D":
// case "4725D":
// case "4727D":
// case "4729D":
// case "4731D":
// case "4737D":
// case "4739D":
// case "4745D":
// case "4753D":
// case "4755D":
// case "4759D":
// case "4761D":
// case "4763D":
// case "216D":
// case "238D":
// case "246D":
// case "248D":
// case "213D":
// case "215D":
// case "217D":
// case "219D":
// case "233D":
// case "243D":
// case "710D":
// case "712D":
// case "714D":
// case "716D":
// case "720D":
// case "722D":
// case "724D":
// case "728D":
// case "736D":
// case "748D":
// case "750D":
// case "754D":
// case "758D":
// case "760D":
// case "768D":
// case "717D":
// case "719D":
// case "721D":
// case "733D":
// case "735D":
// case "737D":
// case "741D":
// case "743D":
// case "747D":
// case "749D":
// case "751D":
// case "755D":
// case "757D":
// case "761D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png',hasProblem);
// break;
// // 予讃線/土讃線普通列車運用(7000,7200)
// // 下り列車(伊予西条-松山は全て7000系)
// case "5519M":
// case "5525M":
// case "5215M":
// case "5103M":
// case "107M":
// case "1219M":
// case "5109M":
// case "6109M":
// case "5531M":
// case "1221M":
// case "5225M":
// case "5111M":
// case "1227M":
// case "115M":
// case "5229M":
// case "5117M":
// case "5119M":
// case "119M":
// case "5231M":
// case "4537M":
// case "5233M":
// case "123M":
// case "125M":
// case "5235M":
// case "5239M":
// case "5547M":
// case "129M":
// case "5241M":
// case "5133M":
// case "135M":
// case "1243M":
// case "137M":
// case "5139M":
// case "4559M":
// case "1245M":
// case "141M":
// case "1247M":
// case "5249M":
// case "145M":
// case "5253M":
// case "5149M":
// case "5255M":
// case "151M":
// case "5257M":
// case "153M":
// case "5259M":
// case "155M":
// case "1263M":
// case "157M":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png',hasProblem);
// break;
// // 下り7000系
// case "101M":
// case "4601M":
// case "4113M":
// case "121M":
// case "127M":
// case "131M":
// case "555M":
// case "4565M":
// case "159M":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png',hasProblem);
// break;
// // 上り列車 7200系
// case "5102M":
// case "104M":
// case "5210M":
// case "5108M":
// case "4108M":
// case "110M":
// case "112M":
// case "118M":
// case "5218M":
// case "5120M":
// case "5220M":
// case "5512M":
// case "1602M":
// case "1224M":
// case "5124M":
// case "5226M":
// case "5126M":
// case "5128M":
// case "1230M":
// case "4128M":
// case "130M":
// case "4522M":
// case "5232M":
// case "132M":
// case "5234M":
// case "136M":
// case "5236M":
// case "5140M":
// case "5238M":
// case "5240M":
// case "142M":
// case "4530M":
// case "144M":
// case "5242M":
// case "146M":
// case "5244M":
// case "4148M":
// case "1246M":
// case "150M":
// case "5538M":
// case "5152M":
// case "154M":
// case "156M":
// case "1252M":
// case "158M":
// case "4604M":
// case "548M":
// case "5254M":
// case "1606M":
// case "5160M":
// case "5256M":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png',hasProblem);
// break;
// // 上り7000系
// case "114M":
// case "122M":
// case "134M":
// case "4138M":
// case "138M":
// case "4542M":
// case "162M":
// case "4166M":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png',hasProblem);
// break;
// // 松山界隈気動車運用
// // 上り下りの概念アリ
// // キハ32 通常運用
// case "4625D":
// case "4916D":
// case "925D":
// case "4618D":
// case "4913D":
// case "4918D":
// case "4643D":
// case "4654D":
// case "4657D":
// case "4928D":
// case "4667D":
// case "653D":
// case "3621D":
// case "4818D":
// case "4821D":
// case "4824D":
// case "4813D":
// case "4664D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32s.png',hasProblem);
// break;
// // 河童うようよ号偶数
// case "4816D":
// case "4830D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32kpuy2.png',hasProblem);
// break;
// // 河童うようよ号奇数
// case "4827D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32kpuy1.png',hasProblem);
// break;
// // 新幹線偶数
// case "4810D":
// case "4822D":
// case "4826D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32tht.png',hasProblem);
// break;
// // 新幹線奇数
// case "4817D":
// case "4823D":
// case "4829D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s32thtk.png',hasProblem);
// break;
// // キハ54 通常運用
// case "4632D":
// case "4634D":
// case "4921D":
// case "4926D":
// case "4927D":
// case "912D":
// case "4917D":
// case "4641D":
// case "4652D":
// case "4651D":
// case "4666D":
// case "4820D":
// case "4825D":
// case "4828D":
// case "4811D":
// case "4640D":
// case "622D":
// case "4633D":
// case "4920D":
// case "4637D":
// case "4648D":
// case "620D":
// case "4627D":
// case "4624D":
// case "4915D":
// case "4924D":
// case "4649D":
// case "4812D":
// case "4815D":
// case "4659D":
// case "4658D":
// case "4665D":
// case "4914D":
// case "4626D":
// case "4631D":
// case "4636D":
// case "4919D":
// case "4922D":
// case "4923D":
// case "4663D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s54s.png',hasProblem);
// break;
// // 54しまんとろっこ
// case "4623D":
// case "8814D":
// case "8819D":
// case "4662D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s54to0ys.png',hasProblem);
// break;
// // キハ185 通常運用
// case "911D":
// case "628D":
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185cm.png',hasProblem);
// break;
// 伊予灘ものがたり 赤
case "8091D":
case "8093D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185iyor.png',hasProblem);
break;
// 伊予灘ものがたり 黄
case "8092D":
case "8094D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s185iyoy.png',hasProblem);
break;
// 高徳線、徳島線、牟岐線、鳴門線普通列車系統
// キハ40・47
case "4303D":
case "371D":
case "316D":
case "362D":
case "4376D":
case "951D":
case "953D":
case "955D":
case "973D":
case "975D":
case "977D":
case "979D":
case "981D":
case "950D":
case "968D":
case "970D":
case "972D":
case "974D":
case "976D":
case "980D":
case "982D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s40.png',hasProblem);
break;
// 1000形
case "4311D":
case "363D":
case "356D":
case "4374D":
case "433D":
case "4447D":
case "451D":
case "450D":
case "4458D":
case "474D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1000.png',hasProblem);
break;
// 1200形
case "4301D":
case "4327D":
case "4329D":
case "4343D":
case "353D":
case "355D":
case "367D":
case "310D":
case "4326D":
case "4334D":
case "4342D":
case "358D":
case "364D":
case "4453D":
case "4455D":
case "4457D":
case "463D":
case "475D":
case "477D":
case "485D":
case "4430D":
case "434D":
case "438D":
case "4460D":
case "4464D":
case "4466D":
case "478D":
case "484D":
case "957D":
case "4959D":
case "4963D":
case "4967D":
case "4971D":
case "952D":
case "4954D":
case "4958D":
case "4962D":
case "4966D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1200n.png',hasProblem);
break;
// 半定期臨時列車
case "9174M":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s5001.png',hasProblem);
break;
case "9395D":
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
default: //指定車両でなく、Regexでの指定に移動
// // 琴平直通系普通電車
// if(new RegExp(/^(1|4|5)2\\d\\dM$/).test(列番データ)){
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png',hasProblem);
// break;
// }
// else if(new RegExp(/^(1|4|5)(1|5|6)\\d\\dM$/).test(列番データ)){
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png',hasProblem);
// break;
// }
// else if(new RegExp(/^(1|5|6)\\d\\dM$/).test(列番データ)){
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png',hasProblem);
// break;
// }// 高徳線 普通列車系統
// else
if(new RegExp(/^(4|5)3\\d\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}
else if(new RegExp(/^3\\d\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}// 徳島線 普通列車系統
else if(new RegExp(/^(4|5)4\\d\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}
else if(new RegExp(/^4\\d\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}// 鳴門線普通列車系統
else if(new RegExp(/^(4|5)9(5|6|7|8)\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}
else if(new RegExp(/^9(5|6|7|8)\\dD$/).test(列番データ)){
setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s1500.png',hasProblem);
break;
}
// 牟岐線普通列車系統 一旦閉鎖
// else if(new RegExp(/^(4|5)5\\d\\dD$/).test(列番データ)){
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7200.png',hasProblem);
// break;
// }
// else if(new RegExp(/^5\\d\\dD$/).test(列番データ)){
// setStationIcon(e.querySelector("img"),'https://storage.haruk.in/s7000.png',hasProblem);
// break;
// }
break;
}
}
`;
const normal_train_name = `
const nameReplace = (列車名データ,列番データ,行き先情報,hasProblem) =>{
let isWanman = false;
let trainName = "";
let viaData = "";
let ToData = "";
let TrainNumber = 列番データ;
try{
const diagram = trainTimeInfo[列番データ];
if(diagram){
const diagramData = diagram.split("#");
ToData = diagramData[diagramData.length - 2].split(",")[0];
}
}catch(e){}
if(列車名データ.split(":")[1]){
const textBase = 列車名データ.split(":")[1].replace("\\r","");
trainName = textBase;
}
if(列車名データ.match("サンポート")){
const textBase = 列車名データ.split(":")[1].replace("\\r","");
trainName = textBase;
}
if(new RegExp(/^4[1-9]\\d\\d[DM]$/).test(列番データ) || new RegExp(/^5[1-7]\\d\\d[DM]$/).test(列番データ) || new RegExp(/^3[2-9]\\d\\d[DM]$/).test(TrainNumber) ){
flag=true;
isWanman = true;
}
if(new RegExp(/^49[0-4]\\dD$/).test(列番データ) || new RegExp(/^9[0-4]\\dD$/).test(列番データ)){
viaData = "(海経由)";
}
if(new RegExp(/^46\\d\\dD$/).test(列番データ) || new RegExp(/^6\\d\\dD$/).test(列番データ)){
viaData = "(内子経由)";
}
if(列番データ.indexOf("H") != -1){
trainName = "試運転";
}
else if(列番データ.indexOf("R") != -1){
trainName = "回送";
}
else if(列番データ.indexOf("S") != -1){
trainName = "臨時列車";
}
const getJRF = num =>{
switch(num){
case "71":
return "東京(タ)→高松(タ)";
case "73":
case "75":
return "大阪(タ)→高松(タ)";
case "3079":
return "高松(タ)→伊予三島";
case "3071":
case "3077":
return "高松(タ)→新居浜";
case "3073":
return "高松(タ)→松山貨物";
case "70":
return "高松(タ)→東京(タ)";
case "74":
case "76":
return "高松(タ)→大阪(タ)";
case "3078":
return "伊予三島→高松(タ)";
case "3070":
return "新居浜→高松(タ)";
case "3076":
return "新居浜→高松(タ)";
case "3072":
return "松山貨物→高松(タ)";
case "9070":
return "臨時貨物";
}
}
let JRF = true;
const JRFTemp = getJRF(列番データ);
if(JRFTemp){
trainName = JRFTemp;
JRF = false;
}
const getThrew = num =>{
switch(num){
//牟岐線直通列車情報
//徳島線発牟岐線行き
case "468D":
case "478D":
case "484D":
viaData = "牟岐線直通";
ToData = "牟岐";
break;
case "4430D":
case "4472D":
viaData = "牟岐線直通";
isWanman = true;
ToData = "牟岐";
break;
case "434D":
case "474D":
case "476D":
case "480D":
viaData = "牟岐線直通";
ToData = "阿南";
break;
case "4452D":
case "4466D":
case "4470D":
viaData = "牟岐線直通";
isWanman = true;
ToData = "阿南";
break;
case "4456D":
viaData = "牟岐線直通";
isWanman = true;
ToData = "阿波海南"
break;
//鳴門線発牟岐線行き
case "951D":
viaData = "牟岐線直通";
ToData = "桑野";
break;
//牟岐線発高徳線行き
case "358D":
viaData = "高徳線直通";
break;
case "4314D":
case "4326D":
case "4334D":
case "4342D":
case "4350D":
case "4368D":
viaData = "高徳線直通";
isWanman = true;
break;
//牟岐線発徳島線行き
case "451D":
case "475D":
viaData = "徳島線直通";
break;
case "4447D":
case "4455D":
case "5467D":
case "5471D":
case "5479D":
viaData = "徳島線直通";
isWanman = true;
break;
//牟岐線発鳴門線行き
case "952D":
viaData = "鳴門線直通";
break;
case "4954D":
case "4978D":
viaData = "鳴門線直通";
isWanman = true;
break;
//安芸行と併結列車を個別に表示、それ以外をdefaultで下りなら既定の行き先を、上りなら奈半利行を設定
case "5814D":
case "5816D":
viaData = "ごめん・なはり線[快速]";
ToData = "奈半利";
break;
case "5812D":
viaData = "ごめん・なはり線[快速]";
ToData = "安芸";
break;
case "5874D":
case "5882D":
viaData = "ごめん・なはり線[各停]";
ToData = "安芸";
break;
case "248D":
case "250D":
viaData = "ごめん・なはり線[快速]";
ToData = "(後免にて解結)\\n土佐山田/奈半利";
break;
case "9395D":
viaData = "[臨時]普通";
ToData = "三本松";
break;
case "9174M":
viaData = "[臨時]マリンライナー94号";
ToData = "岡山";
break;
case "9662D":
viaData = "[臨時]れんげ号";
ToData = "八幡浜";
break;
case "9665D":
viaData = "[臨時]れんげ号";
ToData = "宇和島";
break;
case "9664D":
viaData = "[臨時]わらぐろ号";
ToData = "八幡浜";
break;
case "9663D":
viaData = "[臨時]わらぐろ号";
ToData = "卯之町";
break;
default:
if(new RegExp(/^58[1-3][1,3,5,7,9][DM]$/).test(列番データ)){
viaData = "ごめん・なはり線[快速]";
break;
}
else if(new RegExp(/^58[4-9][1,3,5,7,9][DM]$/).test(列番データ)){
viaData = "ごめん・なはり線[各停]";
break;
}
else if(new RegExp(/^58[3-4][0,2,4,6,8][DM]$/).test(列番データ)){
viaData = "ごめん・なはり線[快速]";
ToData = "奈半利";
break;
}
else if(new RegExp(/^58[5-9][0,2,4,6,8][DM]$/).test(列番データ)){
viaData = "ごめん・なはり線[各停]";
ToData = "奈半利";
break;
}
}
}
getThrew(列番データ);
//列番付与
const returnText1 = (isWanman ? "ワンマン " : "") + trainName + viaData;
const returnText2 = (ToData ? ToData+"行 " : ToData)+ TrainNumber;
行き先情報.innerText = "";
行き先情報.insertAdjacentHTML('beforebegin', "
" + returnText1 + "
"); 行き先情報.insertAdjacentHTML('beforebegin', "" + (ToData ? ToData + "行 " : ToData) + "
" + TrainNumber + (JRF ? "":"レ") + "
" + (hasProblem ? "‼️停止中‼️" : "") + "
"); } `; const textInsert = ` //列番付与 const setStrings = () =>{ try { const elements = document.querySelectorAll('#disp > div > div > div[onclick]'); for (let element of elements) { if(element.getAttribute('offclick')){ continue; } element.setAttribute('offclick',element.getAttribute('onclick')) var 行き先情報 = element.getElementsByTagName("p")[0]; var 列番データ = element.getAttribute('offclick').split('"')[1]; var 列車名データ = element.getAttribute('offclick').split('"')[3]; const trainData = trainPositionDatas.find(e => e.TrainNum == 列番データ); const hasProblem = probremsData.find((e)=>{ return e.TrainNum == trainData.TrainNum && e.Pos == trainData.Pos; }); var flag=false; var TrainType = undefined; setTrainMenuDialog(element) ${iconSetting == "true" ? "setTrainIcon(列番データ,element,hasProblem);" : ""} nameReplace(列車名データ,列番データ,行き先情報,hasProblem); } 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("本家サーバーからのデータ取得に失敗しました。"); window.ReactNativeWebView.postMessage(JSON.stringify({type:"LoadError"})); } } catch (e) {} } const textInsert = new MutationObserver( (mutations) =>{ setStrings(); const currentLines = document.querySelector('#topHeader div').innerText; window.ReactNativeWebView.postMessage(JSON.stringify({type:"currentLines",currentLines})); }); // 監視を開始 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" ? ` // これの中身抽出ShowTrainTimeInfo("1228M","normal") // ShowTrainTimeInfo("142M","rapid:サンポート南風リレー") 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})); }; ` : `function setTrainMenuDialog(d){}`; 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]})); } } const data2 =[]; document.querySelectorAll('#disp > div > div > div > div > font > div').forEach(d=>{ if(!!d.onclick) data2.push(d); }) for(let d of data2 ){ if(!d.offclick){ d.offclick = d.onclick.toString(); } const stationID = d.childNodes[0].innerText; const PDFAddress = d.offclick.split("'")[1]; const Name = d.childNodes[2].innerText; //alert(PDFAddress); 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",id:stationID,name:Name,pdf:PDFAddress})); } } }); // 監視を開始 setStationMenuDialog.observe(document.querySelector('#disp'), { attributes: true, // 属性変化の監視 //attributeOldValue: true, // 変化前の属性値を matation.oldValue に格納する //characterData: true, // テキストノードの変化を監視 //characterDataOldValue: true, // 変化前のテキストを matation.oldValue に格納する childList: true, // 子ノードの変化を監視 //subtree: true // 子孫ノードも監視対象に含める }); ` : ``; return ( bootData + topMenu + trainIcon + normal_train_name + makeTrainView + makeTrainMenu + textInsert + makeStationMenu ); };