Commit 91355281 authored by Koichi Yasuoka's avatar Koichi Yasuoka
Browse files

initial release

parent 83688a50
Loading
Loading
Loading
Loading
+409 −0
Original line number Diff line number Diff line
<!DOCTYPE html><head><meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Universal Dependencies on 新釈漢文体系 日本漢詩 上</title>
<script src="conllusvgview.js"></script>
<script src="conllusvgload.js"></script>
<script>
var Kanshi1=new Object();
Kanshi1.url="/gitlab/api/v4/projects/Kanbun%2Fud-ja-kanbun/repository/";
Kanshi1.init=function(){
  var t=document.getElementById("top").cloneNode(true);
  t.style.position="static";
  t.style.visibility="hidden";
  document.body.appendChild(t);
  Kanshi1.svg=new Array();
  Kanshi1.pre=new Array();
  Kanshi1.timer=setTimeout("clearTimeout(Kanshi1.timer);Kanshi1.checkview()",200);
  Kanshi1.volchange();
}
Kanshi1.checkview=function(){
  var t,r,b,i,x;
  Kanshi1.timer=setTimeout("clearTimeout(Kanshi1.timer);Kanshi1.checkview()",200);
  if(Kanshi1.curr==null)
    return;
  if(Kanshi1.svg[Kanshi1.curr]==null||Kanshi1.pre[Kanshi1.curr]==null){
    Kanshi1.buildup(Kanshi1.curr);
    Kanshi1.lastTop=null;
    return;
  }
  if(Kanshi1.svg[Kanshi1.curr].style.position=="absolute"){
    Kanshi1.svg[Kanshi1.curr].style.position="static";
    Kanshi1.svg[Kanshi1.curr].style.visibility="visible";
  }
  conllusvg.rewrite("pre"+Kanshi1.curr);
  r=Kanshi1.svg[Kanshi1.curr].getBoundingClientRect();
  t=r.top;
  b=r.bottom;
  r=document.getElementById("top").getBoundingClientRect().bottom;
  x=Kanshi1.curr;
  if(t-r>20){
    while(t-r>0){
      i=Kanshi1.svg[Kanshi1.curr-1];
      if(i==null)
	break;
      if(i.style.position=="absolute")
	break;
      Kanshi1.curr--;
      if(Kanshi1.curr==0)
	break;
      t=i.getBoundingClientRect().top;
    }
  }
  else if(b<r){
    while(b<r){
      i=Kanshi1.svg[Kanshi1.curr+1];
      if(i==null)
	break;
      if(i.style.position=="absolute")
        break;
      Kanshi1.curr++;
      if(Kanshi1.curr==Kanshi1.currmax)
	break;
      b=i.getBoundingClientRect().bottom;
    }
  }
  if(Kanshi1.curr!=x){
    if(Kanshi1.retrytimes>0){
      Kanshi1.retrytimes--;
      Kanshi1.curr=parseInt(document.getElementById("count").value,10);
      t=Kanshi1.svg[Kanshi1.curr].getBoundingClientRect().top;
      if(Math.abs(t-r)>5){
        if(document.scrollingElement==null)
          document.documentElement.scrollTop+=t-r;
        else
          document.scrollingElement.scrollTop+=t-r;
      }
    }
    else
      document.getElementById("count").value=Kanshi1.curr;
  }
  else if(Kanshi1.retrytimes>0)
    Kanshi1.retrytimes--;
  Kanshi1.lastTop=Kanshi1.svg[Kanshi1.curr].getBoundingClientRect().top;
  for(i=Kanshi1.curr+1;i<=Kanshi1.currmax;i++){
    if(Kanshi1.svg[i]==null||Kanshi1.pre[i]==null){
      Kanshi1.buildup(i);
      break;
    }
    if(Kanshi1.svg[i].style.position=="absolute"){
      Kanshi1.svg[i].style.position="static";
      Kanshi1.svg[i].style.visibility="visible";
    }
    conllusvg.rewrite("pre"+i);
    r=Kanshi1.svg[i].getBoundingClientRect();
    if(r.top-window.innerHeight-1000>0)
      break;
  }
  for(i=Kanshi1.curr-1;i>=0;i--){
    if(Kanshi1.svg[i]==null||Kanshi1.pre[i]==null){
      Kanshi1.buildup(i);
      break;
    }
    if(Kanshi1.svg[i].style.position=="absolute"){
      if(Kanshi1.pre[i].textContent>""){
	Kanshi1.svg[i].style.position="static";
	Kanshi1.svg[i].style.visibility="visible";
      }
      else
	break;
    }
    conllusvg.rewrite("pre"+i);
    r=Kanshi1.svg[Kanshi1.curr].getBoundingClientRect().top;
    if(Math.abs(r-Kanshi1.lastTop)>5){
      if(document.scrollingElement==null)
        document.documentElement.scrollTop+=r-Kanshi1.lastTop;
      else
        document.scrollingElement.scrollTop+=r-Kanshi1.lastTop;
      Kanshi1.lastTop=r;
    }
    r=Kanshi1.svg[i].getBoundingClientRect();
    if(parseInt(r.bottom,10)<-300)
      break;
  }
}
Kanshi1.buildup=function(x){
  var t,i;
  if(Kanshi1.svg[x]==null){
    t=document.createElementNS("http://www.w3.org/2000/svg","svg");
    for(i=parseInt(x,10)+1;i<=Kanshi1.currmax;i++){
      if(Kanshi1.svg[i]!=null)
	break;
    }
    t.style.position="absolute";
    t.style.visibility="hidden";
    if(i>Kanshi1.currmax)
      document.body.appendChild(t);
    else
      document.body.insertBefore(t,Kanshi1.svg[i]);
    Kanshi1.svg[x]=t;
    t.addEventListener("mousedown",Kanshi1.onmousedown);
    t.addEventListener("touchstart",Kanshi1.onmousedown);
  }
  if(Kanshi1.pre[x]==null){
    t=document.createElement("pre");
    t.style.display="none";
    t.setAttribute("id","pre"+x);
    document.body.appendChild(t);
    Kanshi1.pre[x]=t;
    if(conllusvg.main["pre"+x]==null)
      conllusvg.view(Kanshi1.svg[x],"pre"+x);
    i=Kanshi1.volpath+"/"+("000"+x).slice(-3)+".txt";
    conllusvg.loadRemote("pre"+x,Kanshi1.url+"files/"+encodeURIComponent(i)+"/raw?ref=master");
  }
}
Kanshi1.volchange=function(){
  var s,x;
  Kanshi1.clearSVG();
  for(s in Kanshi1.pre){
    if(Kanshi1.pre[s]!=null){
      document.body.removeChild(Kanshi1.pre[s]);
    }
    Kanshi1.pre[s]=null;
  }
  s=document.getElementById("vol");
  Kanshi1.volpath=s.options[s.selectedIndex].value;
  if(Kanshi1.tail==null)
    Kanshi1.tail=new Array();
  if(Kanshi1.tail[Kanshi1.volpath]==null)
    Kanshi1.gettree();
  else
    Kanshi1.writeSVG();
}
Kanshi1.gettree=function(){
  var p;
  if(Kanshi1.request==null){
    Kanshi1.request=new XMLHttpRequest();
    Kanshi1.request.onload=Kanshi1.ongettree;
  }
  if(Kanshi1.tail[Kanshi1.volpath]==null)
    p=1;
  else
    p=Math.floor(parseInt(Kanshi1.tail[Kanshi1.volpath],10)/100)+2;
  Kanshi1.request.open("GET",Kanshi1.url+"tree?per_page=100&path="+Kanshi1.volpath+"&page="+p);
  Kanshi1.request.send();
}
Kanshi1.ongettree=function(e){
  var i,s;
  if(Kanshi1.request.status==200){
    s=Kanshi1.request.responseText;
    i=s.lastIndexOf('.txt"');
    if(i<0)
      Kanshi1.writeSVG();
    else{
      Kanshi1.tail[Kanshi1.volpath]=s.substring(i-3,i);
      Kanshi1.gettree();
    }
  }
}
Kanshi1.goto=function(){
  Kanshi1.retrytimes=3;
  Kanshi1.writeSVG();
}
Kanshi1.writeSVG=function(){
  var c=document.getElementById("count");
  Kanshi1.clearSVG();
  Kanshi1.currmax=parseInt(Kanshi1.tail[Kanshi1.volpath],10);
  Kanshi1.curr=parseInt(c.value,10);
  if(Kanshi1.curr<0)
    Kanshi1.curr=0;
  if(Kanshi1.curr>Kanshi1.currmax)
    Kanshi1.curr=Kanshi1.currmax;
  c.value=Kanshi1.curr;
  Kanshi1.lastTop=null;
}
Kanshi1.clearSVG=function(){
  var x;
  Kanshi1.curr=Kanshi1.lastTop=null;
  if(Kanshi1.svg!=null){
    for(x in Kanshi1.svg){
      if(Kanshi1.svg[x]!=null){
	Kanshi1.svg[x].style.position="absolute";
	Kanshi1.svg[x].style.visibility="hidden";
      }
    }
  }
  if(document.scrollingElement==null)
    document.documentElement.scrollTop=0;
  else
    document.scrollingElement.scrollTop=0;
}
Kanshi1.onmousedown=function(e){
  var x,y;
  if(Kanshi1.lastX==null){
    Kanshi1.lastX=e.clientX;
    Kanshi1.lastY=e.clientY;
    return;
  }
  x=e.clientX-Kanshi1.lastX;
  y=e.clientY-Kanshi1.lastY;
  if(x*x+y*y>9){
    Kanshi1.lastX=e.clientX;
    Kanshi1.lastY=e.clientY;
    return;
  }
  Kanshi1.lastX=null;
  x=e.currentTarget;
  for(y in Kanshi1.svg){
    if(Kanshi1.svg[y]==x){
      x=Kanshi1.volpath+"/"+("000"+y).slice(-3)+".txt";
      window.open("editor-kanbun.html#"+Kanshi1.url+"files/"+encodeURIComponent(x)+"/raw?ref=master");
      break;
    }
  }
}
Kanshi1.reload=function(){
  var i,r;
  for(i=Kanshi1.curr;i<=Kanshi1.currmax;i++){
    if(Kanshi1.svg[i]==null||Kanshi1.pre[i]==null)
      return;
    r=Kanshi1.svg[i].getBoundingClientRect();
    if(r.top>window.innerHeight||r.bottom<0)
      return;
    r=Kanshi1.volpath+"/"+("000"+i).slice(-3)+".txt";
    conllusvg.loadRemote("pre"+i,Kanshi1.url+"files/"+encodeURIComponent(r)+"/raw?ref=master");
  }
}
Kanshi1.gitlab=function(){
  var r=Kanshi1.volpath+"/"+("000"+Kanshi1.curr).slice(-3)+".txt";
  window.open("/gitlab/Kanbun/ud-kanbun/blob/master/"+r);
}
</script>
<body onload="Kanshi1.init()">
<div id="top" style="position:fixed; top:0px; left:0px; padding:10px; width:100%; background:white">
<font size="+3"><b>唐詩三百首卷一</b></font>
<select id="vol" onchange="Kanshi1.volchange()">
<option value="shinshaku/045/001" selected>侍宴 大友皇子</option>
<option value="shinshaku/045/002">銜命使本國 阿倍仲麿</option>
<option value="shinshaku/045/003">秋日別友 巨勢識人</option>
<option value="shinshaku/045/004">後夜聞佛法僧鳥 釋空海</option>
<option value="shinshaku/045/005">九月十日 菅原道眞</option>
<option value="shinshaku/045/006">九日後朝同賦秋思應制 菅原道眞</option>
<option value="shinshaku/045/007">不出門 菅原道眞</option>
<option value="shinshaku/045/008">秋宿驛館 橘直幹</option>
<option value="shinshaku/045/009">山居 釋道元</option>
<option value="shinshaku/045/010">示虜 釋祖元</option>
<option value="shinshaku/045/011">題可休亭 圓旨</option>
<option value="shinshaku/045/012">題壁 釋寂室</option>
<option value="shinshaku/045/013">金陵懷古 釋中巖</option>
<option value="shinshaku/045/014">竹雀 釋義堂</option>
<option value="shinshaku/045/015">對花懷舊 釋義堂</option>
<option value="shinshaku/045/016">子陵釣臺 釋義堂</option>
<option value="shinshaku/045/017">和韻寄觀中書記 釋義堂</option>
<option value="shinshaku/045/018">海南行 細川賴之</option>
<option value="shinshaku/045/019">雨後登楼 釋絶海</option>
<option value="shinshaku/045/020">山家 釋絶海</option>
<option value="shinshaku/045/021">次明絶侍者雪中韻 釋絶海</option>
<option value="shinshaku/045/022">銭唐懐古次韻 釋絶海</option>
<option value="shinshaku/045/023">亂後出京到江州水口 覺惠一条兼良</option>
<option value="shinshaku/045/024">江天暮雪 釋龍澤</option>
<option value="shinshaku/045/025">偶作 機山武田信玄</option>
<option value="shinshaku/045/026">九月十三夜 不識庵上杉謙信</option>
<option value="shinshaku/045/027">避亂泛舟江州湖上 足利義昭</option>
<option value="shinshaku/045/028">山居 惺窩藤原肅</option>
<option value="shinshaku/045/029">偶成 貞山伊達政宗</option>
<option value="shinshaku/045/030">送熊澤子還備前 藤樹中江原</option>
<option value="shinshaku/045/031">艸山晩眺 釋元政</option>
<option value="shinshaku/045/032">有感 闇齋山崎嘉</option>
<option value="shinshaku/045/033">卽事 仁齋伊藤維楨</option>
<option value="shinshaku/045/034">自題肖像 白石新井君美</option>
<option value="shinshaku/045/035">寄題豐公舊宅 徂徠荻生雙松</option>
<option value="shinshaku/045/036">早發深川 金華平野玄中</option>
<option value="shinshaku/045/037">富士山 鳩巢室直清</option>
<option value="shinshaku/045/038">過藤樹書院 東涯伊藤長胤</option>
<option value="shinshaku/045/039">秋郊閑望 東涯伊藤長胤</option>
<option value="shinshaku/045/040">登白雲山 春臺太宰純</option>
<option value="shinshaku/045/041">稻叢懐古 春臺太宰純</option>
<option value="shinshaku/045/042">寧楽懐古 春臺太宰純</option>
<option value="shinshaku/045/043">八島懐古 彩巖桂山義樹</option>
<option value="shinshaku/045/044">月夜三叉江泛舟 蘭亭高野惟馨</option>
<option value="shinshaku/045/045">秋夕泛琵琶湖 蛻巌梁田邦美</option>
<option value="shinshaku/045/046">登鐵枴峰 蛻巌梁田邦美</option>
<option value="shinshaku/045/047">九日 蛻巌梁田邦美</option>
<option value="shinshaku/045/048">夜下墨水 南郭服部元喬</option>
<option value="shinshaku/045/049">詠史 玉山秋山儀</option>
<option value="shinshaku/045/050">鴻門高 玉山秋山儀</option>
<option value="shinshaku/045/051">讃海帰舟遭風悪浪猛慨然賦之 常山湯淺元禎</option>
<option value="shinshaku/045/052">過赤馬關 靈雨伊形質</option>
<option value="shinshaku/045/053">思鄕 草蘆龍公美</option>
<option value="shinshaku/045/054">嵯峨道中 草蘆龍公美</option>
<option value="shinshaku/045/055">夢親 平洲細井德民</option>
<option value="shinshaku/045/056">辭人贈錦衾 拙齋西山正</option>
<option value="shinshaku/045/057">大偃川上卽事 釋六如</option>
<option value="shinshaku/045/058">生唼行 日岳富田大鳳</option>
<option value="shinshaku/045/059">姫島 釋寶月</option>
<option value="shinshaku/045/060">月夜歩禁垣外 栗山柴野邦彦</option>
<option value="shinshaku/045/061">富士山 栗山柴野邦彦</option>
<option value="shinshaku/045/062">示塾生 二洲尾藤孝肇</option>
<option value="shinshaku/045/063">鹿嶋城下作 南冥龜井魯</option>
<option value="shinshaku/045/064">松島 春水賴惟完</option>
<option value="shinshaku/045/065">木母寺 如亭柏木昶</option>
<option value="shinshaku/045/066">東坡赤壁図 寛齊市河世寧</option>
<option value="shinshaku/045/067">秋江 錦城大田元貞</option>
<option value="shinshaku/045/068">江月 鵬齋龜田長興</option>
<option value="shinshaku/045/069">酒人某出扇索書 茶山菅晉帥</option>
<option value="shinshaku/045/070">蝶 茶山菅晉帥</option>
<option value="shinshaku/045/071">宿生田 茶山菅晉帥</option>
<option value="shinshaku/045/072">冬夜読書 茶山菅晉帥</option>
<option value="shinshaku/045/073">鍾馗 茶山菅晉帥</option>
<option value="shinshaku/045/074">偶作 釋良寛</option>
<option value="shinshaku/045/075">題不識庵撃機山図 山陽賴襄</option>
<option value="shinshaku/045/076">舟發大垣赴桑名 山陽賴襄</option>
<option value="shinshaku/045/077">阿嵎根 山陽賴襄</option>
<option value="shinshaku/045/078">述懐 山陽賴襄</option>
<option value="shinshaku/045/079">泊天草洋 山陽賴襄</option>
<option value="shinshaku/045/080">蒙古来 山陽賴襄</option>
<option value="shinshaku/045/081">下筑後河過菊池正觀公戰處感而有作 山陽賴襄</option>
<option value="shinshaku/045/082">遊芳野 杏坪賴惟柔</option>
<option value="shinshaku/045/083">虞美人草行 杏坪賴惟柔</option>
<option value="shinshaku/045/084">彥山 米華中島大賚</option>
<option value="shinshaku/045/085">遊山 竹田田能村孝憲</option>
<option value="shinshaku/045/086">詠蠹魚 松南摩島長弘</option>
<option value="shinshaku/045/087">題自畫墨竹 崋山渡邊定靜</option>
<option value="shinshaku/045/088">秋盡 柳灣館機</option>
<option value="shinshaku/045/089">秋日臥病有感 慊堂松崎復</option>
<option value="shinshaku/045/090">雲州雑詩 白谷仁科幹</option>
<option value="shinshaku/045/091">范蠡載西施圖 善庵朝川鼎</option>
<option value="shinshaku/045/092">泉岳寺 虎山坂井華</option>
<option value="shinshaku/045/093">題義貞祈海神圖 小竹篠崎弼</option>
<option value="shinshaku/045/094">暮上故城 蘭溪西島長孫</option>
<option value="shinshaku/045/095">題菊池容齋圖 東湖藤田彪</option>
<option value="shinshaku/045/096">和文天祥正氣歌 東湖藤田彪</option>
<option value="shinshaku/045/097">瓢兮歌 東湖藤田彪</option>
<option value="shinshaku/045/098">桂林荘雑詠示諸生 淡窓廣瀬建</option>
<option value="shinshaku/045/099">彥山 淡窓廣瀬建</option>
<option value="shinshaku/045/100">江村 淡窓廣瀬建</option>
<option value="shinshaku/045/101">筑前城下作 淡窓廣瀬建</option>
<option value="shinshaku/045/102">田氏女玉葆畫常盤抱孤圖 星巖梁川孟緯</option>
<option value="shinshaku/045/103">紀事 星巖梁川孟緯</option>
<option value="shinshaku/045/104">將東遊題壁 釋月性</option>
<option value="shinshaku/045/105">聞下田開港 釋月性</option>
<option value="shinshaku/045/106">畫竹 笛浦野田逸</option>
<option value="shinshaku/045/107">昌平橋納涼 笛浦野田逸</option>
<option value="shinshaku/045/108">太公望垂釣圖 一齋佐藤坦</option>
<option value="shinshaku/045/109">訣別 雲濱梅田定明</option>
<option value="shinshaku/045/110">春簾雨窗 鴨崖賴醇</option>
<option value="shinshaku/045/111">過函嶺 鴨崖賴醇</option>
<option value="shinshaku/045/112">磯原客舎 松陰吉田矩方</option>
<option value="shinshaku/045/113">獄中作 景嶽橋本綱紀</option>
<option value="shinshaku/045/114">偶興 民齋安積信</option>
<option value="shinshaku/045/115">墨水秋夕 民齋安積信</option>
<option value="shinshaku/045/116">示諸生 民齋安積信</option>
<option value="shinshaku/045/117">題兒島高德書桜樹圖 文里齋藤一德</option>
<option value="shinshaku/045/118">絶命詞 黑澤勝算</option>
<option value="shinshaku/045/119">竹 天山藤森大雅</option>
<option value="shinshaku/045/120">靜姫歌舞圖 天山藤森大雅</option>
<option value="shinshaku/045/121">三叉江 蠖堂山田政苗</option>
<option value="shinshaku/045/122">獄中作 葦原兒島艸臣</option>
<option value="shinshaku/045/123">夏初遊桜祠 旭莊廣瀬謙</option>
<option value="shinshaku/045/124">阿部野 旭莊廣瀬謙</option>
<option value="shinshaku/045/125">馬圖 旭莊廣瀬謙</option>
<option value="shinshaku/045/126">春雨到筆庵 旭莊廣瀬謙</option>
<option value="shinshaku/045/127">松前城下作 秋水長尾景翰</option>
<option value="shinshaku/045/128">舟至由良港 黄庵吉村重鄕</option>
</select>
<input type="text" id="count" size=3 value=0 style="text-align:right" onchange="Kanshi1.goto()" />
<input type="button" value="GitLab" onclick="Kanshi1.gitlab()" />
<input type="button" value="Reload" onclick="Kanshi1.reload()" />
<a href="NihonKanshi2.html"></a>
</div>
</body>