Commit 78fa4454 authored by Koichi Yasuoka's avatar Koichi Yasuoka
Browse files

initial release

parent 91355281
Loading
Loading
Loading
Loading
+407 −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 Kanshi2=new Object();
Kanshi2.url="/gitlab/api/v4/projects/Kanbun%2Fud-ja-kanbun/repository/";
Kanshi2.init=function(){
  var t=document.getElementById("top").cloneNode(true);
  t.style.position="static";
  t.style.visibility="hidden";
  document.body.appendChild(t);
  Kanshi2.svg=new Array();
  Kanshi2.pre=new Array();
  Kanshi2.timer=setTimeout("clearTimeout(Kanshi2.timer);Kanshi2.checkview()",200);
  Kanshi2.volchange();
}
Kanshi2.checkview=function(){
  var t,r,b,i,x;
  Kanshi2.timer=setTimeout("clearTimeout(Kanshi2.timer);Kanshi2.checkview()",200);
  if(Kanshi2.curr==null)
    return;
  if(Kanshi2.svg[Kanshi2.curr]==null||Kanshi2.pre[Kanshi2.curr]==null){
    Kanshi2.buildup(Kanshi2.curr);
    Kanshi2.lastTop=null;
    return;
  }
  if(Kanshi2.svg[Kanshi2.curr].style.position=="absolute"){
    Kanshi2.svg[Kanshi2.curr].style.position="static";
    Kanshi2.svg[Kanshi2.curr].style.visibility="visible";
  }
  conllusvg.rewrite("pre"+Kanshi2.curr);
  r=Kanshi2.svg[Kanshi2.curr].getBoundingClientRect();
  t=r.top;
  b=r.bottom;
  r=document.getElementById("top").getBoundingClientRect().bottom;
  x=Kanshi2.curr;
  if(t-r>20){
    while(t-r>0){
      i=Kanshi2.svg[Kanshi2.curr-1];
      if(i==null)
	break;
      if(i.style.position=="absolute")
	break;
      Kanshi2.curr--;
      if(Kanshi2.curr==0)
	break;
      t=i.getBoundingClientRect().top;
    }
  }
  else if(b<r){
    while(b<r){
      i=Kanshi2.svg[Kanshi2.curr+1];
      if(i==null)
	break;
      if(i.style.position=="absolute")
        break;
      Kanshi2.curr++;
      if(Kanshi2.curr==Kanshi2.currmax)
	break;
      b=i.getBoundingClientRect().bottom;
    }
  }
  if(Kanshi2.curr!=x){
    if(Kanshi2.retrytimes>0){
      Kanshi2.retrytimes--;
      Kanshi2.curr=parseInt(document.getElementById("count").value,10);
      t=Kanshi2.svg[Kanshi2.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=Kanshi2.curr;
  }
  else if(Kanshi2.retrytimes>0)
    Kanshi2.retrytimes--;
  Kanshi2.lastTop=Kanshi2.svg[Kanshi2.curr].getBoundingClientRect().top;
  for(i=Kanshi2.curr+1;i<=Kanshi2.currmax;i++){
    if(Kanshi2.svg[i]==null||Kanshi2.pre[i]==null){
      Kanshi2.buildup(i);
      break;
    }
    if(Kanshi2.svg[i].style.position=="absolute"){
      Kanshi2.svg[i].style.position="static";
      Kanshi2.svg[i].style.visibility="visible";
    }
    conllusvg.rewrite("pre"+i);
    r=Kanshi2.svg[i].getBoundingClientRect();
    if(r.top-window.innerHeight-1000>0)
      break;
  }
  for(i=Kanshi2.curr-1;i>=0;i--){
    if(Kanshi2.svg[i]==null||Kanshi2.pre[i]==null){
      Kanshi2.buildup(i);
      break;
    }
    if(Kanshi2.svg[i].style.position=="absolute"){
      if(Kanshi2.pre[i].textContent>""){
	Kanshi2.svg[i].style.position="static";
	Kanshi2.svg[i].style.visibility="visible";
      }
      else
	break;
    }
    conllusvg.rewrite("pre"+i);
    r=Kanshi2.svg[Kanshi2.curr].getBoundingClientRect().top;
    if(Math.abs(r-Kanshi2.lastTop)>5){
      if(document.scrollingElement==null)
        document.documentElement.scrollTop+=r-Kanshi2.lastTop;
      else
        document.scrollingElement.scrollTop+=r-Kanshi2.lastTop;
      Kanshi2.lastTop=r;
    }
    r=Kanshi2.svg[i].getBoundingClientRect();
    if(parseInt(r.bottom,10)<-300)
      break;
  }
}
Kanshi2.buildup=function(x){
  var t,i;
  if(Kanshi2.svg[x]==null){
    t=document.createElementNS("http://www.w3.org/2000/svg","svg");
    for(i=parseInt(x,10)+1;i<=Kanshi2.currmax;i++){
      if(Kanshi2.svg[i]!=null)
	break;
    }
    t.style.position="absolute";
    t.style.visibility="hidden";
    if(i>Kanshi2.currmax)
      document.body.appendChild(t);
    else
      document.body.insertBefore(t,Kanshi2.svg[i]);
    Kanshi2.svg[x]=t;
    t.addEventListener("mousedown",Kanshi2.onmousedown);
    t.addEventListener("touchstart",Kanshi2.onmousedown);
  }
  if(Kanshi2.pre[x]==null){
    t=document.createElement("pre");
    t.style.display="none";
    t.setAttribute("id","pre"+x);
    document.body.appendChild(t);
    Kanshi2.pre[x]=t;
    if(conllusvg.main["pre"+x]==null)
      conllusvg.view(Kanshi2.svg[x],"pre"+x);
    i=Kanshi2.volpath+"/"+("000"+x).slice(-3)+".txt";
    conllusvg.loadRemote("pre"+x,Kanshi2.url+"files/"+encodeURIComponent(i)+"/raw?ref=master");
  }
}
Kanshi2.volchange=function(){
  var s,x;
  Kanshi2.clearSVG();
  for(s in Kanshi2.pre){
    if(Kanshi2.pre[s]!=null){
      document.body.removeChild(Kanshi2.pre[s]);
    }
    Kanshi2.pre[s]=null;
  }
  s=document.getElementById("vol");
  Kanshi2.volpath=s.options[s.selectedIndex].value;
  if(Kanshi2.tail==null)
    Kanshi2.tail=new Array();
  if(Kanshi2.tail[Kanshi2.volpath]==null)
    Kanshi2.gettree();
  else
    Kanshi2.writeSVG();
}
Kanshi2.gettree=function(){
  var p;
  if(Kanshi2.request==null){
    Kanshi2.request=new XMLHttpRequest();
    Kanshi2.request.onload=Kanshi2.ongettree;
  }
  if(Kanshi2.tail[Kanshi2.volpath]==null)
    p=1;
  else
    p=Math.floor(parseInt(Kanshi2.tail[Kanshi2.volpath],10)/100)+2;
  Kanshi2.request.open("GET",Kanshi2.url+"tree?per_page=100&path="+Kanshi2.volpath+"&page="+p);
  Kanshi2.request.send();
}
Kanshi2.ongettree=function(e){
  var i,s;
  if(Kanshi2.request.status==200){
    s=Kanshi2.request.responseText;
    i=s.lastIndexOf('.txt"');
    if(i<0)
      Kanshi2.writeSVG();
    else{
      Kanshi2.tail[Kanshi2.volpath]=s.substring(i-3,i);
      Kanshi2.gettree();
    }
  }
}
Kanshi2.goto=function(){
  Kanshi2.retrytimes=3;
  Kanshi2.writeSVG();
}
Kanshi2.writeSVG=function(){
  var c=document.getElementById("count");
  Kanshi2.clearSVG();
  Kanshi2.currmax=parseInt(Kanshi2.tail[Kanshi2.volpath],10);
  Kanshi2.curr=parseInt(c.value,10);
  if(Kanshi2.curr<0)
    Kanshi2.curr=0;
  if(Kanshi2.curr>Kanshi2.currmax)
    Kanshi2.curr=Kanshi2.currmax;
  c.value=Kanshi2.curr;
  Kanshi2.lastTop=null;
}
Kanshi2.clearSVG=function(){
  var x;
  Kanshi2.curr=Kanshi2.lastTop=null;
  if(Kanshi2.svg!=null){
    for(x in Kanshi2.svg){
      if(Kanshi2.svg[x]!=null){
	Kanshi2.svg[x].style.position="absolute";
	Kanshi2.svg[x].style.visibility="hidden";
      }
    }
  }
  if(document.scrollingElement==null)
    document.documentElement.scrollTop=0;
  else
    document.scrollingElement.scrollTop=0;
}
Kanshi2.onmousedown=function(e){
  var x,y;
  if(Kanshi2.lastX==null){
    Kanshi2.lastX=e.clientX;
    Kanshi2.lastY=e.clientY;
    return;
  }
  x=e.clientX-Kanshi2.lastX;
  y=e.clientY-Kanshi2.lastY;
  if(x*x+y*y>9){
    Kanshi2.lastX=e.clientX;
    Kanshi2.lastY=e.clientY;
    return;
  }
  Kanshi2.lastX=null;
  x=e.currentTarget;
  for(y in Kanshi2.svg){
    if(Kanshi2.svg[y]==x){
      x=Kanshi2.volpath+"/"+("000"+y).slice(-3)+".txt";
      window.open("editor-kanbun.html#"+Kanshi2.url+"files/"+encodeURIComponent(x)+"/raw?ref=master");
      break;
    }
  }
}
Kanshi2.reload=function(){
  var i,r;
  for(i=Kanshi2.curr;i<=Kanshi2.currmax;i++){
    if(Kanshi2.svg[i]==null||Kanshi2.pre[i]==null)
      return;
    r=Kanshi2.svg[i].getBoundingClientRect();
    if(r.top>window.innerHeight||r.bottom<0)
      return;
    r=Kanshi2.volpath+"/"+("000"+i).slice(-3)+".txt";
    conllusvg.loadRemote("pre"+i,Kanshi2.url+"files/"+encodeURIComponent(r)+"/raw?ref=master");
  }
}
Kanshi2.gitlab=function(){
  var r=Kanshi2.volpath+"/"+("000"+Kanshi2.curr).slice(-3)+".txt";
  window.open("/gitlab/Kanbun/ud-kanbun/blob/master/"+r);
}
</script>
<body onload="Kanshi2.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="Kanshi2.volchange()">
<option value="shinshaku/046/001" selected>送吉田義卿 象山佐久間啓</option>
<option value="shinshaku/046/002">辛酉二月出寺蓄髪時作 蒿齋 伴林光平	</option>
<option value="shinshaku/046/003">劍舞歌</option>
<option value="shinshaku/046/004">失題 江月久坂通武</option>
<option value="shinshaku/046/005">題厓山樓 耕雲齋武田正生</option>
<option value="shinshaku/046/006">蟹 竹外藤井啓</option>
<option value="shinshaku/046/007">芳野 竹外藤井啓</option>
<option value="shinshaku/046/008">花朝下澱江 竹外藤井啓</option>
<option value="shinshaku/046/009">孤鶴 竹外藤井啓</option>
<option value="shinshaku/046/010">風雨望寧樂 竹外藤井啓</option>
<option value="shinshaku/046/011">柳 竹外藤井啓</option>
<option value="shinshaku/046/012">壇浦夜泊 韡村木下業廣</option>
<option value="shinshaku/046/013">山房夜雨 韡村木下業廣</option>
<option value="shinshaku/046/014">山行示同志 佩川草場韡</option>
<option value="shinshaku/046/015">過禁門 拙堂齋藤正謙</option>
<option value="shinshaku/046/016">擬古 鐵兜河野羆</option>
<option value="shinshaku/046/017">芳野 鐵兜河野羆</option>
<option value="shinshaku/046/018">囚中作 東行高杉春風</option>
<option value="shinshaku/046/019">述 靜觀廬森蔚</option>
<option value="shinshaku/046/020">問盗 燕石日柳政章</option>
<option value="shinshaku/046/021">雨中觀海棠有感 枕月雲井龍雄</option>
<option value="shinshaku/046/022">釋大俊發憤時事慨然有濟度之志將歸省其親於尾州賦之以贈焉 枕月雲井龍雄</option>
<option value="shinshaku/046/023">逸題 梅窓前原一誠</option>
<option value="shinshaku/046/024">寄友人 弘毅齋奥平謙輔</option>
<option value="shinshaku/046/025">詠伯夷叔齊 方谷山田球</option>
<option value="shinshaku/046/026">偶成 南洲西郷隆盛</option>
<option value="shinshaku/046/027">沖永良部島謫居中作 南洲西郷隆盛</option>
<option value="shinshaku/046/028">偶成 松菊木戸孝允</option>
<option value="shinshaku/046/029">偶成 松菊木戸孝允</option>
<option value="shinshaku/046/030">春日山懷古 盤溪大槻淸崇</option>
<option value="shinshaku/046/031">蠶婦 碧窗釋大俊</option>
<option value="shinshaku/046/032">偶詠 花南丹羽賢</option>
<option value="shinshaku/046/033">牡丹蝴蝶圖 紅蘭梁川晩婉</option>
<option value="shinshaku/046/034">晩望 佛山村上剛</option>
<option value="shinshaku/046/035">過壇浦 佛山村上剛</option>
<option value="shinshaku/046/036">有人勸仕贈鯉魚 佛山村上剛</option>
<option value="shinshaku/046/037">無題 佛山村上剛</option>
<option value="shinshaku/046/038">掃花 聱牙土井有恪</option>
<option value="shinshaku/046/039">河内途上 溪琴菊池保定</option>
<option value="shinshaku/046/040">望川中島 溪琴菊池保定</option>
<option value="shinshaku/046/041">白峯謁祟德帝山陵 朗廬阪谷素</option>
<option value="shinshaku/046/042">那耶哥羅観瀑詩 柳北成島弘</option>
<option value="shinshaku/046/043">塞昆 柳北成島弘</option>
<option value="shinshaku/046/044">丙子歲晩感懷 柳北成島弘</option>
<option value="shinshaku/046/045">櫻花 船山草場廉</option>
<option value="shinshaku/046/046">岐阜竹枝 春濤森魯直</option>
<option value="shinshaku/046/047">踰函關 春濤森魯直</option>
<option value="shinshaku/046/048">侍宴恭賦 東野元田永孚</option>
<option value="shinshaku/046/049">芳山楠帶刀歌 東野元田永孚</option>
<option value="shinshaku/046/050">殘月杜鵑 三溪菊池純</option>
<option value="shinshaku/046/051">新涼讀書 三溪菊池純</option>
<option value="shinshaku/046/052">題児島高德書櫻樹圖 三溪菊池純</option>
<option value="shinshaku/046/053">蘭圖 釋五嶽</option>
<option value="shinshaku/046/054">題桃源圖 釋五嶽</option>
<option value="shinshaku/046/055">西紅海舟中 櫻洲中井弘</option>
<option value="shinshaku/046/056">西都雑詩 櫻洲中井弘</option>
<option value="shinshaku/046/057">燕山雜句 三洲長〓(文字が出ません「苂」とは違うし)</option>
<option value="shinshaku/046/058">過不孝嶺 鯢山山崎吉謙</option>
<option value="shinshaku/046/059">偶作 甕江川田剛</option>
<option value="shinshaku/046/060">書感 甕江川田剛</option>
<option value="shinshaku/046/061">芳山懷古 松塘鱸元邦</option>
<option value="shinshaku/046/062">落花 松塘鱸元邦</option>
<option value="shinshaku/046/063">失題 海舟勝安芳</option>
<option value="shinshaku/046/064">正氣歌 廣瀨武夫</option>
<option value="shinshaku/046/065">偶吟 蒼海副島種臣</option>
<option value="shinshaku/046/066">贈奥州佐藤平次郎 蒼海副島種臣</option>
<option value="shinshaku/046/067">送鳥居素川之山東 種竹本田秀</option>
<option value="shinshaku/046/068">川中島 種竹本田秀</option>
<option value="shinshaku/046/069">白虎隊 豐山佐原盛純</option>
<option value="shinshaku/046/070">日出 春畝伊藤博文</option>
<option value="shinshaku/046/071">朱舜水先生墓 湖山小野長愿</option>
<option value="shinshaku/046/072">西伯利車中作 成齊重野安繹</option>
<option value="shinshaku/046/073">印度感懷 釋默雷</option>
<option value="shinshaku/046/074">王昭君 栗香宮島誠一郎</option>
<option value="shinshaku/046/075">暁發白河城 栗香宮島誠一郎</option>
<option value="shinshaku/046/076">湖上次韻 槐南森公泰</option>
<option value="shinshaku/046/077">牛蠱行 筠軒大須賀履</option>
<option value="shinshaku/046/078">題畫一 筠軒大須賀履</option>
<option value="shinshaku/046/079">題畫二 筠軒大須賀履</option>
<option value="shinshaku/046/080">詠富岳 石樵乃木希典</option>
<option value="shinshaku/046/081">金州城下作 石樵乃木希典</option>
<option value="shinshaku/046/082">凱旋有感 石樵乃木希典</option>
<option value="shinshaku/046/083">城山 琴石西喜大</option>
<option value="shinshaku/046/084">詠史 省軒龜谷行</option>
<option value="shinshaku/046/085">曝書 省軒龜谷行</option>
<option value="shinshaku/046/086">磯濱登望洋樓 中洲三島毅</option>
<option value="shinshaku/046/087">失題 火海古莊惟正</option>
<option value="shinshaku/046/088">題近江八景圖 佚名氏</option>
<option value="shinshaku/046/089">春興 漱石夏目金之助</option>
<option value="shinshaku/046/090">武侯墓 井井竹添光鴻</option>
<option value="shinshaku/046/091">送人歸長崎 井井竹添光鴻</option>
<option value="shinshaku/046/092">雙殉行 井井竹添光鴻</option>
<option value="shinshaku/046/093">自訟 梅窓杉浦重剛</option>
<option value="shinshaku/046/094">山居雨後 鳳洲土屋弘</option>
<option value="shinshaku/046/095">萬里長城 碧堂田邊華</option>
<option value="shinshaku/046/096">漫成一 東陵石田羊一郎</option>
<option value="shinshaku/046/097">漫成二 東陵石田羊一郎</option>
<option value="shinshaku/046/098">漫成三 東陵石田羊一郎</option>
<option value="shinshaku/046/099">猛虎行 東陵石田羊一郎</option>
<option value="shinshaku/046/100">過江北古戰場 湖南内藤虎次郎</option>
<option value="shinshaku/046/101">那須野 天随久保得二</option>
<option value="shinshaku/046/102">方廣寺古鐘 天随久保得二</option>
<option value="shinshaku/046/103">黨人歎 朴堂安井朝康</option>
<option value="shinshaku/046/104">松島 裳川岩溪晉</option>
<option value="shinshaku/046/105">芳野懷古一 靑厓國分高胤</option>
<option value="shinshaku/046/106">芳野懷古二 靑厓國分高胤</option>
<option value="shinshaku/046/107">唯射利 靑厓國分高胤</option>
<option value="shinshaku/046/108">古意 天行松平康國</option>
<option value="shinshaku/046/109">稲葉一轍 天行松平康國</option>
<option value="shinshaku/046/110">咏史 天行松平康國</option>
<option value="shinshaku/046/111">山中卽事 器堂市村瓚次郎</option>
<option value="shinshaku/046/112">石田三成 雪山川田瑞穂</option>
<option value="shinshaku/046/113">曝書 濟齊山田準</option>
<option value="shinshaku/046/114">病中雑吟一 紫陽平野彥次郎</option>
<option value="shinshaku/046/115">病中雑吟二 紫陽平野彥次郎</option>
<option value="shinshaku/046/116">京都東山 蘇峯德富正敬</option>
<option value="shinshaku/046/117">我孫子贈友 蘇峯德富正敬</option>
<option value="shinshaku/046/118">芳山懷古 天淵加藤虎之亮</option>
<option value="shinshaku/046/119">芳山懷古 竹雨土屋久泰</option>
<option value="shinshaku/046/120">題畫 竹雨土屋久泰</option>
<option value="shinshaku/046/121">山海関 竹雨土屋久泰</option>
<option value="shinshaku/046/122">山楼卽事 竹雨土屋久泰</option>
<option value="shinshaku/046/123">原爆行 竹雨土屋久泰</option>
<option value="shinshaku/046/124">埃及懷古 節山鹽谷溫</option>
<option value="shinshaku/046/125">癸巳歲晩書懷 豹軒鈴木虎雄</option>
<option value="shinshaku/046/126">屋島懷古 草丘磯部覺太</option>
</select>
<input type="text" id="count" size=3 value=0 style="text-align:right" onchange="Kanshi2.goto()" />
<input type="button" value="GitLab" onclick="Kanshi2.gitlab()" />
<input type="button" value="Reload" onclick="Kanshi2.reload()" />
<a href="NihonKanshi1.html"></a>
</div>
</body>