//////////////////////////////
// 写真の表示とダウンロード //
//////////////////////////////
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 ='
';
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 += '
';
}
if(e.photo_2 != '')
{
let f = 'photo/'+e.id+'/s'+e.photo_2+'.jpg';
td4_data += '
';
}
if(e.photo_3 != '')
{
let f = 'photo/'+e.id+'/s'+e.photo_3+'.jpg';
td4_data += '
';
}
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 ='
';
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 += '
';
}
if(e.photo_2 != '')
{
let f = 'photo/'+e.id+'/s'+e.photo_2+'.jpg';
td2_data += '
';
}
if(e.photo_3 != '')
{
let f = 'photo/'+e.id+'/s'+e.photo_3+'.jpg';
td2_data += '
';
}
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);
}