////////////////////////////// // 写真の表示とダウンロード // ////////////////////////////// let gbl_currentY_pos; let gbl_img; let gbl_currentImg = 0; let gbl_fullScreen = true; let mImg = []; let n_img; let gbl_boxWidth; function openPicBox(mId,nI) { // どの選手のものか const m_Ath = gbl_Ath.find(e => e.id == mId); if(m_Ath) { // まず前回のものをクリア let canvas = document.getElementById('box_canvas'); canvas.width = 0; canvas.height = 0; // ローディングを表示する let eBase = document.getElementById('box_pic_base'); eBase.style.height = '100%'; document.getElementById('div_loading').style.display="block"; document.getElementById('btn_closePic').style.display="block"; mImg = []; gbl_img = 0; gbl_currentImg = nI - 1; n_img = 0; if(m_Ath.photo_1 != '') { n_img++; gbl_img++; mImg[n_img-1] = new Image(); //mImg[n_img-1].onload = () => { loadDone(); } mImg[n_img-1].onload = function(){ loadDone(true); } mImg[n_img-1].onerror = function(){ loadDone(false); } mImg[n_img-1].src = 'photo/'+mId+'/'+m_Ath.photo_1+'.jpg'; } if(m_Ath.photo_2 != '') { n_img++; gbl_img++; mImg[n_img-1] = new Image(); mImg[n_img-1].onload = function(){ loadDone(true); } mImg[n_img-1].onerror = function(){ loadDone(false); } mImg[n_img-1].src = 'photo/'+mId+'/'+m_Ath.photo_2+'.jpg'; } if(m_Ath.photo_3 != '') { n_img++; gbl_img++; mImg[n_img-1] = new Image(); mImg[n_img-1].onload = function(){ loadDone(true); } mImg[n_img-1].onerror = function(){ loadDone(false); } mImg[n_img-1].src = 'photo/'+mId+'/'+m_Ath.photo_3+'.jpg'; } function loadDone(b) { n_img--; if(n_img==0) { // 全イメージをダウンロードした document.getElementById('div_loading').style.display="none"; if(b) { gbl_currentY_pos = window.scrollY; // 戻る為に取っておきます // 下地を消すことにより縦スクロールはなくなる。が、下にスワイプするとすぐリロードになる弊害あり。 document.getElementById('tbl_result_all').style.display="none"; document.getElementById('tbl_result_one').style.display="none"; // モニターは縦型か、横型か? let bMode = false; if(window.innerWidth/window.innerHeight < 1) { // 縦型だったので、左右移動モードで開始。ボタンを表示する(これはposition: absolute なので、親と連動していません) document.getElementById('box_pic_left').style.display="block"; document.getElementById('box_pic_right').style.display="block"; bMode = true; } // キャンバスに表示 showImgOnCanvas(bMode); } } } } } function showImgOnCanvas(bType) { let bRet = true; // キャンバスの表示サイズを変更する let nRate = 1; // was 0.9 // ブラウザ画面一杯に表示します gbl_boxWidth = window.innerWidth; //document.body.clientWidth; let boxHeight = window.innerHeight; //document.body.clientHeight; // まず、画面のアスペクト比を得ます let baseAspect = gbl_boxWidth/boxHeight; //console.log("size "+window.innerWidth+":"+window.innerHeight+" aspect:"+baseAspect);//980x1742 //----------------------------------// // 各画像の表示用のサイズをチェック // //----------------------------------// function getAspect(img) { img.myTop = 0; img.myLeft = 0; let aspect = img.width/img.height; if(bType) { if(baseAspect == aspect) { img.myWidth = gbl_boxWidth; img.myHeight = boxHeight; } else if(aspect > baseAspect) { // 横いっぱい img.myWidth = gbl_boxWidth*nRate; img.myHeight = gbl_boxWidth*nRate/aspect; img.myTop = (boxHeight - img.myHeight)/2; } else { // 縦いっぱい img.myWidth = boxHeight*nRate*aspect; img.myHeight = boxHeight*nRate; img.myLeft = (gbl_boxWidth - img.myWidth)/2; } } else { // 横スクロールの場合には、高さが固定です // 横スクロールバーの分、高さ(17px)を調整します img.myWidth = (boxHeight-17)*nRate*aspect; img.myHeight = (boxHeight-17)*nRate; } return img.myWidth; // 通常の場合のみ使用されます } // 各画像の表示情報を得る let w = 0; mImg.forEach( function(e) { w += getAspect(e); }); // キャンバスのサイズを画像に合わせる let canvas = document.getElementById('box_canvas'); const ctx = canvas.getContext('2d'); // 枚数により、隙間の分を大きくします let n = 0; if(mImg[0]){ n++; } if(mImg[1]){ n++; } if(mImg[2]){ n++; } let w2 = (n+1)*10; if(bType) { // 左右移動モード(一枚毎) canvas.width = gbl_boxWidth*n; canvas.height = boxHeight; canvas.style.width = gbl_boxWidth*n; canvas.style.height = boxHeight; //if(mImg[gbl_currentImg]) //{ // ctx.drawImage(mImg[gbl_currentImg], mImg[gbl_currentImg].myLeft, mImg[gbl_currentImg].myTop,mImg[gbl_currentImg].myWidth,mImg[gbl_currentImg].myHeight); //} if(mImg[0]) { ctx.drawImage(mImg[0], mImg[0].myLeft, mImg[0].myTop,mImg[0].myWidth,mImg[0].myHeight); } if(mImg[1]) { ctx.drawImage(mImg[1], mImg[1].myLeft+gbl_boxWidth, mImg[1].myTop,mImg[1].myWidth,mImg[1].myHeight); } if(mImg[2]) { ctx.drawImage(mImg[2], mImg[2].myLeft+gbl_boxWidth*2, mImg[2].myTop,mImg[2].myWidth,mImg[2].myHeight); } // 指定されたところにスクロールしておく scrollPicBox(gbl_currentImg); } else { // 見た目のキャンバスサイズ canvas.style.width = w+w2; canvas.style.height = boxHeight*nRate; // ここで、ios では canvas の大きさが大きすぎると(iOS で 16777216)エラーになります // iPhoneX は巾が989ですので、16777216/989=16963 より、巾が 16963 ピクセル以上になるとエラーです if(ua_ios && (((w+w2)*boxHeight*nRate) >= 16777216)) { // エラー終了します bRet = false; } else { canvas.width = w+w2; canvas.height = boxHeight*nRate; if(mImg[0]) { ctx.drawImage(mImg[0], 10, 0,mImg[0].myWidth,mImg[0].myHeight); } if(mImg[1]) { ctx.drawImage(mImg[1], mImg[0].myWidth+20, 0,mImg[1].myWidth,mImg[1].myHeight); } if(mImg[2]) { ctx.drawImage(mImg[2], mImg[0].myWidth+mImg[1].myWidth+30, 0,mImg[2].myWidth,mImg[2].myHeight); } // 指定されたところにスクロールしておく if(gbl_currentImg == 1) { document.getElementById('box_pic').scrollLeft = mImg[0].myWidth + 20; } else if(gbl_currentImg == 2) { if(mImg[1]) { document.getElementById('box_pic').scrollLeft = mImg[0].myWidth + mImg[1].myWidth + 30; } else { document.getElementById('box_pic').scrollLeft = mImg[0].myWidth + 20; } } else { document.getElementById('box_pic').scrollLeft = 0; } } } return bRet; } function closePicBox() { if(n_img==0) { if(document.fullscreenElement != null) { fullPicBox(false,false); } else { document.getElementById('box_pic_left').style.display="none"; document.getElementById('box_pic_right').style.display="none"; document.getElementById('btn_fullPic').style.display="block"; document.getElementById('btn_smallPic').style.display="none"; } if(gbl_nowShowing == 0) { document.getElementById('tbl_result_one').style.display="block"; } else { document.getElementById('tbl_result_all').style.display="block"; } document.getElementById('btn_closePic').style.display="none"; window.scrollTo(0,gbl_currentY_pos); document.getElementById('div_loading').style.display="none"; document.getElementById('box_pic_base').style.height = '0%'; } } function scrollPicBox(n) { // 指定されたところにスクロールしておく if(n == 1) { document.getElementById('box_pic').scrollLeft = gbl_boxWidth; } else if(n == 2) { document.getElementById('box_pic').scrollLeft = gbl_boxWidth*2; } else { document.getElementById('box_pic').scrollLeft = 0; } } function movePicBox(b) { // 現在位置を得る gbl_currentImg = parseInt(document.getElementById('box_pic').scrollLeft / gbl_boxWidth); if(b) { // 左へ if(gbl_currentImg != 0) { gbl_currentImg--; //showImgOnCanvas(true); } } else { // 右へ if(gbl_currentImg < (gbl_img - 1)) { gbl_currentImg++; //showImgOnCanvas(true); } } scrollPicBox(gbl_currentImg); } let gbl_enableFullScreen = false; function fullPicBox(b,p) { // ECMAScript 2015以前対応 p = typeof p !== 'undefined' ? p : true; if(b) { // 画面一杯に写真を表示するモード document.getElementById('btn_smallPic').style.display="block"; document.getElementById('btn_fullPic').style.display="none"; document.getElementById('box_pic_left').style.display="none"; document.getElementById('box_pic_right').style.display="none"; if(gbl_enableFullScreen && document.fullscreenEnabled) { // フルスクリーンにする場合 document.getElementById('btn_closePic').style.width="50px"; document.getElementById('btn_closePic').style.height="50px"; gbl_fullScreen = true; document.getElementById('box_pic_base').requestFullscreen(); } else { if(!showImgOnCanvas(false)) { // キャンバスが大きくなりすぎてエラーになった document.getElementById('btn_smallPic').style.display="none"; document.getElementById('btn_fullPic').style.display="block"; document.getElementById('box_pic_left').style.display="block"; document.getElementById('box_pic_right').style.display="block"; showImgOnCanvas(true); } } } else { document.getElementById('box_pic_left').style.display="block"; document.getElementById('box_pic_right').style.display="block"; if(gbl_enableFullScreen && document.fullscreenEnabled) { gbl_fullScreen = p; document.exitFullscreen(); } else { // 標準(縦一杯表示)モード if(p) { showImgOnCanvas(true); } document.getElementById('btn_fullPic').style.display="block"; document.getElementById('btn_smallPic').style.display="none"; } } } function start() { //console.log("w="+window.innerWidth+" h="+window.innerHeight); console.log("start"); //--------------------------// // 矢印ボタンの表示・非表示 // //--------------------------// gARROWPAGETOP.set(520); // ハンバーガーメニューの準備 toggleNav(); //document.getElementById("nojava").style.display="block"; // 検索のエンターキー document.getElementById("search_text").addEventListener("keyup", function(event) { event.preventDefault(); if (event.keyCode === 13) { document.getElementById("btn_search").click(); } }); document.getElementById("search_text_m").addEventListener("keyup", function(event) { event.preventDefault(); if (event.keyCode === 13) { document.getElementById("btn_search_m").click(); } }); document.getElementById("search_text_en").addEventListener("keyup", function(event) { event.preventDefault(); if (event.keyCode === 13) { document.getElementById("btn_search_en").click(); } }); document.getElementById("search_text_en_m").addEventListener("keyup", function(event) { event.preventDefault(); if (event.keyCode === 13) { document.getElementById("btn_search_en_m").click(); } }); // 写真画面でのスワイプ let eCanvasBox = document.getElementById('box_pic'); let eCanvas = document.getElementById('box_canvas'); eCanvas.addEventListener('wheel', function(event) { event.preventDefault(); if(event.deltaY > 0) { eCanvasBox.scrollLeft += 100; } else { eCanvasBox.scrollLeft -= 100; } }); let onMouse = false; let xMouse; eCanvas.addEventListener('mousedown', function(event) { onMouse = true; xMouse = event.offsetX; }); eCanvas.addEventListener('mouseup', function(event) { onMouse = false; }); eCanvas.addEventListener('mouseout', function(event) { onMouse = false; }); eCanvas.addEventListener('mousemove', function(event) { if(onMouse) { eCanvasBox.scrollLeft += (xMouse - event.offsetX); } }); /* function handleTouch(e){ e.preventDefault(); eCanvasBox.scrollLeft += (xMouse - e.targetTouches[0].clientX); } eCanvas.addEventListener("touchstart", function(e){ xMouse = e.targetTouches[0].clientX; }, false); //eCanvas.addEventListener("touchend", handleTouch, false); //eCanvas.addEventListener("touchcancel", handleTouch, false); eCanvas.addEventListener("touchmove", handleTouch, false); */ // 最後に言語設定 if(gbl_lang == 'en') { document.getElementById("langEn").checked = true; document.getElementById("langEn_m").checked = true; langSet('en'); } else { document.getElementById("langJa").checked = true; document.getElementById("langJa_m").checked = true; langSet('ja'); } // ブラウザが中国語とかになっているとボタンが表示されない! //var wDef = (navigator.browserLanguage || navigator.language || navigator.userLanguage).substr(0,2); //console.log(wDef); //======================================// // フルスクリーン関連のイベントハンドラ // //======================================// if(gbl_enableFullScreen && document.fullscreenEnabled) { document.addEventListener("fullscreenchange", function(event){ if(gbl_fullScreen) { if(document.fullscreenElement != null) { // 画面一杯に写真を表示するモード showImgOnCanvas(true); } else { showImgOnCanvas(false); } } if(document.fullscreenElement == null) { document.getElementById('btn_closePic').style.width="120px"; document.getElementById('btn_closePic').style.height="120px"; document.getElementById('btn_fullPic').style.display="block"; document.getElementById('btn_smallPic').style.display="none"; } }); } else { document.getElementById('btn_smallPic').style.width="120px"; document.getElementById('btn_smallPic').style.height="120px"; } console.log("measure"); // 名前順で表示 measure('mySort', function(){ mySort(1); }); console.log("END"); // コンテンツを表示します document.getElementById('contents_wait').style.display="none"; document.getElementById('main_contents').style.display="block"; } ////////////// // 表示切替 // ////////////// let gbl_nowShowing = 0; function showAthSort(el,b) { // ECMAScript 2015以前対応 b = typeof b !== 'undefined' ? b : false; gbl_nowShowing = el.selectedIndex; // 英語・日本語両方の設定を合わせる(ここでの設定では onchange は呼ばれないので安心) if(el == document.getElementById('mysort_en')) { document.getElementById('mysort').selectedIndex = gbl_nowShowing; } else if(el == document.getElementById('mysort')) { document.getElementById('mysort_en').selectedIndex = gbl_nowShowing; } else if(el == document.getElementById('mysort_m_en')) { document.getElementById('mysort_m').selectedIndex = gbl_nowShowing; } else if(el == document.getElementById('mysort_m')) { document.getElementById('mysort_m_en').selectedIndex = gbl_nowShowing; } if(gbl_nowShowing == 0) { //****************// // 全リザルト表示 // //****************// document.getElementById('tbl_result_all').style.display="none"; document.getElementById('tbl_result_one').style.display="block"; //document.getElementById('tbl_search').style.display="block"; document.getElementById('set_category').disabled = false; document.getElementById('set_category_en').disabled = false; document.getElementById('set_km').disabled = false; document.getElementById('set_category_m').disabled = false; document.getElementById('set_category_m_en').disabled = false; document.getElementById('set_km_m').disabled = false; document.getElementById('search_text').disabled = false; document.getElementById('btn_search').disabled = false; document.getElementById('search_text_en').disabled = false; document.getElementById('btn_search_en').disabled = false; document.getElementById('btn_reset').disabled = false; document.getElementById('search_text_m').disabled = false; document.getElementById('btn_search_m').disabled = false; document.getElementById('search_text_en_m').disabled = false; document.getElementById('btn_search_en_m').disabled = false; document.getElementById('btn_reset_m').disabled = false; if(b) { document.getElementById('tbl_search_mobile').style.display = "flex"; document.getElementById('div_reset_m').style.display = "block"; } showAthAll(true); } else { //********************// // 種目別リザルト表示 // //********************// document.getElementById('tbl_result_all').style.display="block"; document.getElementById('tbl_result_one').style.display="none"; //document.getElementById('tbl_search').style.display="none"; document.getElementById('set_category').disabled = true; document.getElementById('set_category_en').disabled = true; document.getElementById('set_km').disabled = true; document.getElementById('set_category_m').disabled = true; document.getElementById('set_category_m_en').disabled = true; document.getElementById('set_km_m').disabled = true; document.getElementById('set_category').selectedIndex = 0; document.getElementById('set_category_en').selectedIndex = 0; document.getElementById('set_km').selectedIndex = 0; document.getElementById('set_category_m').selectedIndex = 0; document.getElementById('set_category_m_en').selectedIndex = 0; document.getElementById('set_km_m').selectedIndex = 0; gbl_Category = 0; gbl_Km = 0; document.getElementById('search_text').disabled = true; document.getElementById('btn_search').disabled = true; document.getElementById('search_text_en').disabled = true; document.getElementById('btn_search_en').disabled = true; document.getElementById('btn_reset').disabled = true; document.getElementById('search_text').value = ''; document.getElementById('search_text_en').value = ''; document.getElementById('search_text_m').disabled = true; document.getElementById('btn_search_m').disabled = true; document.getElementById('search_text_en_m').disabled = true; document.getElementById('btn_search_en_m').disabled = true; document.getElementById('btn_reset_m').disabled = true; document.getElementById('search_text_m').value = ''; document.getElementById('search_text_en_m').value = ''; gbl_SearchText = ''; if(b) { document.getElementById('tbl_search_mobile').style.display = "none"; document.getElementById('div_reset_m').style.display = "none"; } for(let i=1;i<=gbl_numTbl;i++) { let tbl = document.getElementById('tbl_'+i); for(j=tbl.rows.length-1;j>=0;j--) { tbl.deleteRow(-1); } let mAth = []; let nCat = gbl_Cat[i-1].category_id; let nKm = gbl_Cat[i-1].km; gbl_Ath.forEach( function(e) { //console.log(e); //document.getElementById('srch_result_tbl').style.display = 'block'; if((gbl_nowShowing == 1) && (e.cat_1 == nCat) && (e.km_1 == nKm)) { mAth.push(e); } else if((gbl_nowShowing == 2) && (e.cat_2 == nCat) && (e.km_2 == nKm)) { mAth.push(e); } }); function compare(a,b) { if(gbl_nowShowing == 1) { // 種目1で比較 if(a.time_1 > b.time_1) { return 1; } else if(a.time_1 == b.time_1) { return 0; // equal } else { return -1; } } else if(gbl_nowShowing == 2) { // 種目2で比較 if(a.time_2 > b.time_2) { return 1; } else if(a.time_2 == b.time_2) { return 0; // equal } else { return -1; } } } mAth.sort(compare); mAth.forEach( function(e) { // 行を行末に追加(0指定で先頭追加) let tr = tbl.insertRow(-1); let td = tr.insertCell(-1); td.innerHTML = e.bib; td.classList.add('col_bib'); // 'td_40' // 旗 /* td = tr.insertCell(-1); td.innerHTML ='flag image'; td.classList.add('col_flag'); */ // 名前 td = tr.insertCell(-1); td.innerHTML = e.name.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.classList.add("selLang",'col_name'); // 'td_160' td.lang="ja"; td = tr.insertCell(-1); td.innerHTML = e.name_en.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.classList.add("selLang",'col_name'); // 'td_160' td.lang="en"; // リザルト td = tr.insertCell(-1); if(gbl_nowShowing == 1) { td.innerHTML = e.time_1; } else if(gbl_nowShowing == 2) { td.innerHTML = e.time_2; } td.classList.add('td_center','col_time2'); // 写真アイコン // ここでは、「公開」フラグが1でアイコン表示を判断しています // ファイルのあり無しではありません let td4_data = ''; if(e.photo_1 != '') { let f = 'photo/'+e.id+'/s'+e.photo_1+'.jpg'; td4_data += 'bib image'; } if(e.photo_2 != '') { let f = 'photo/'+e.id+'/s'+e.photo_2+'.jpg'; td4_data += 'bib image'; } if(e.photo_3 != '') { let f = 'photo/'+e.id+'/s'+e.photo_3+'.jpg'; td4_data += 'bib image'; } td = tr.insertCell(-1); td.innerHTML = td4_data; //td.classList.add('td_80'); td = tr.insertCell(-1); if(e.comment_ok == '1') { td.innerHTML = e.comment.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.classList.add('td_left','td_comment2'); // 'td_160' } }); // 行数取得 //var row_len = table.rows.length; } langSet(); // 再度言語設定 } if(b) { document.body.classList.toggle('nav-open'); } } ////////////// // 絞り込み // ////////////// function setCategory(el,b) { // ECMAScript 2015以前対応 b = typeof b !== 'undefined' ? b : false; let mType = el.selectedIndex; // 英語・日本語両方の設定を合わせる(ここでの設定では onchange は呼ばれないので安心) if(el == document.getElementById('set_category_en')) { document.getElementById('set_category').selectedIndex = mType; } else if(el == document.getElementById('set_category')) { document.getElementById('set_category_en').selectedIndex = mType; } else if(el == document.getElementById('set_category_m_en')) { document.getElementById('set_category_m').selectedIndex = mType; } else if(el == document.getElementById('set_category_m')) { document.getElementById('set_category_m_en').selectedIndex = mType; } gbl_Category = el.options[el.selectedIndex].value; if(b) { document.body.classList.toggle('nav-open'); } showAthAll(true); } function setKm(el,b) { // ECMAScript 2015以前対応 b = typeof b !== 'undefined' ? b : false; gbl_Km = el.options[el.selectedIndex].value; if(b) { document.body.classList.toggle('nav-open'); } showAthAll(true); } ////////////////// // コメント表示 // ////////////////// function showComment(e) { /* // 一単語の最大長を得る let bBreak = false; let words = e.innerHTML.split(' '); words.forEach( function(w) { if(w.length > 20) { // 長すぎの単語がありました // これは英単語のみですか? //if(w.match(/^[A-Za-z0-9]*$/)){ if(w.match(/^[ -~]*$/)){ bBreak = true; } } }); if(bBreak) { // スマホの場合のみにすべきか //document.getElementById('txt_notice').style.overflowWrap = 'anywhere'; document.getElementById('txt_notice').style.overflowWrap = 'break-word'; } else { document.getElementById('txt_notice').style.overflowWrap = 'normal'; } */ document.getElementById('txt_notice').innerHTML = e.innerHTML; //document.getElementById('box_notice').style.display="block"; document.getElementById('box_notice').style.height = '75%'; } function closeComment() { document.getElementById('box_notice').style.height = '0'; } ////////////////////////// // テーブルに1行入れる // ////////////////////////// function insertOneData(t,e) { // 行を行末に追加(0指定で先頭追加) let tr = t.insertRow(-1); // セルの挿入(0指定で先頭挿入) let td = tr.insertCell(-1); td.innerHTML = e.bib; //td.classList.add('td_40','td_right'); // 旗(国) // td = tr.insertCell(-1); // td.innerHTML ='flag image'; td = tr.insertCell(-1); td.innerHTML = e.name.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.classList.add('selLang'); td.lang = 'ja'; td = tr.insertCell(-1); //debug! //td.innerHTML = e.name_en.replace(/__SGLQUOTE__/g, ''').replace(//g,'>')+"("+e.name_kana+")"; td.innerHTML = e.name_en.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.classList.add('selLang'); td.lang = 'en'; // 種目 td = tr.insertCell(-1); td.innerHTML =''; td.classList.add('td_picto'); /* td = tr.insertCell(-1); td.innerHTML = e.cat_1n; td.classList.add('selLang'); td.lang = 'ja'; td = tr.insertCell(-1); td.innerHTML = e.cat_1e; td.classList.add('selLang'); td.lang = 'en'; */ // 距離 /* if(e.km_1 == 100) { tr.insertCell(-1).innerHTML = e.km_1+'m'; } else { tr.insertCell(-1).innerHTML = e.km_1+'Km'; } */ /* リザルト tr.insertCell(-1).innerHTML = e.time_1; */ // 写真アイコン // ここでは、「公開」フラグが1でアイコン表示を判断しています // ファイルのあり無しではありません let td2_data = ''; if(e.photo_1 != '') { let f = 'photo/'+e.id+'/s'+e.photo_1+'.jpg'; td2_data += 'bib image'; } if(e.photo_2 != '') { let f = 'photo/'+e.id+'/s'+e.photo_2+'.jpg'; td2_data += 'bib image'; } if(e.photo_3 != '') { let f = 'photo/'+e.id+'/s'+e.photo_3+'.jpg'; td2_data += 'bib image'; } tr.insertCell(-1).innerHTML = td2_data; td = tr.insertCell(-1); if(e.comment_ok == '1') { let mComment = e.comment.replace(/__SGLQUOTE__/g, ''').replace(//g,'>'); td.innerHTML = ''+mComment+''; //td.innerHTML = ''+mComment+''; td.classList.add('td_left','td_comment'); } } var gbl_mSort = [0,0,1,0]; function mySort(mSort) { // flip flop if(gbl_mSort[mSort] == 1) { gbl_mSort[mSort] = -1; } else { gbl_mSort[mSort] = 1; } function compare(a,b) { if(mSort == 0) { // Bibで比較 if(Number(a.bib) > Number(b.bib)) { return gbl_mSort[mSort]; } else if(Number(a.bib) == Number(b.bib)) { return 0; } else { return -1*gbl_mSort[mSort]; } } else if(mSort == 1) { // 名前で比較 if(a.name_kana > b.name_kana) { return gbl_mSort[mSort]; } else if(a.name_kana == b.name_kana) { return 0; } else { return -1*gbl_mSort[mSort]; } } else if(mSort == 2) { // 種目で比較 if(a.cat_1 > b.cat_1) { return gbl_mSort[mSort]; } else if(a.cat_1 == b.cat_1) { /* if(Number(a.km_1) > Number(b.km_1)) { return gbl_mSort[mSort]; } else if(a.km_1 == b.km_1) { return 0; } else { return -1*gbl_mSort[mSort]; } */ return 0; } else { return -1*gbl_mSort[mSort]; } } else if(mSort == 4) { // 距離で比較 let na = Number(a.km_1); let nb = Number(b.km_1); if(na == 100) na=0; if(nb == 100) nb=0; if(na > nb) { return gbl_mSort[mSort]; } else if(a.km_1 == b.km_1) { return 0; } else { return -1*gbl_mSort[mSort]; } } else { // リザルトで比較 if(a.time_1 > b.time_1) { return gbl_mSort[mSort]; } else if(a.time_1 == b.time_1) { return 0; } else { return -1*gbl_mSort[mSort]; } } } gbl_Ath.sort(compare); showAthAll(true); } let gbl_SearchText = ''; let gbl_Category = 0; let gbl_Km = 0; function showAthAll(bClear) { let tbody = document.getElementById('result_tbl_tbody'); if(bClear) { // まずクリア while( tbody.rows[ 0 ] ) tbody.deleteRow( 0 ); } // データ挿入 gbl_Ath.forEach( function(e) { if(((gbl_Category == 0) || (gbl_Category == e.cat_1)) && ((gbl_Km == 0) || (gbl_Km == e.km_1))) { if((gbl_SearchText == '') || (e.bib == gbl_SearchText) || (~e.name.indexOf(gbl_SearchText)) || (~e.name_kana.indexOf(gbl_SearchText)) || (~e.name_en.indexOf(gbl_SearchText))) { insertOneData(tbody,e); } } }); langSet(); // 再度言語設定 } function doSearch(m) { if(m == 1) { gbl_SearchText = document.getElementById('search_text').value; } else if(m == 2) { gbl_SearchText = document.getElementById('search_text_en').value; } else if(m == 3) { gbl_SearchText = document.getElementById('search_text_m').value; } else if(m == 4) { gbl_SearchText = document.getElementById('search_text_en_m').value; } else { gbl_SearchText = ''; } showAthAll(true); document.getElementById('tbl_result_all').style.display="none"; document.getElementById('tbl_result_one').style.display="block"; } function resetSearch(b) { // ECMAScript 2015以前対応 b = typeof b !== 'undefined' ? b : false; document.getElementById('search_text').value = ''; document.getElementById('search_text_en').value = ''; gbl_SearchText = ''; if(b) { document.getElementById('set_category_m').selectedIndex = 0; document.getElementById('set_category_m_en').selectedIndex = 0; document.getElementById('set_km_m').selectedIndex = 0; gbl_Category = 0; gbl_Km = 0; document.getElementById('search_text_m').value = ''; document.getElementById('search_text_en_m').value = ''; gbl_SearchText = ''; } showAthAll(true); } function smoothScroll() { //let Ease = { easeInOut: t => t<.5 ? 4*t*t*t : (t-1)*(2*t-2)*(2*t-2)+1 }; function easeInOut(t) { if(t < 0.5) { return 4*t*t*t; } else { return (t-1)*(2*t-2)*(2*t-2)+1; } } let duration = 500; let currentPosition = document.documentElement.scrollTop || document.body.scrollTop; //let targetPosition = window.pageYOffset + targetElement.getBoundingClientRect().top - 115; let targetPosition = 0; let startTime = performance.now(); let loop = function (nowTime) { let time = nowTime - startTime; let normalizedTime = time / duration; if (normalizedTime < 1) { window.scrollTo(0, currentPosition + ((targetPosition - currentPosition) * easeInOut(normalizedTime))); //window.scrollTo(0, currentPosition + ((targetPosition - currentPosition) * Ease.easeInOut(normalizedTime))); requestAnimationFrame(loop); } else { window.scrollTo(0, targetPosition); } } requestAnimationFrame(loop); } function toggleNav() { document.getElementById('js-hamburger').addEventListener('click', function() { document.body.classList.toggle('nav-open'); }); document.getElementById('js-black-bg').addEventListener('click', function() { document.body.classList.remove('nav-open'); }); } function login() { if(gbl_currentLang != 'ja') { location.href="mypage/index.php?lang="+gbl_currentLang; } else { location.href="mypage/index.php?lang=ja"; } } function jumpHP() { location.href="https://www.sapporo-sport.jp/ski/2021/"; } // パフォーマンス計測 function measure(name, func) { const start = performance.now(); func(); const end = performance.now(); const elapsed = (end - start); const elapsedStr = elapsed.toPrecision(3); console.log(name+':'+elapsedStr); }