Skip to content
Snippets Groups Projects
Commit 39c938c3 authored by Koichi Yasuoka's avatar Koichi Yasuoka
Browse files

initial release

parent eb21ac8e
No related branches found
No related tags found
No related merge requests found
<!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 Sutra=new Object();
Sutra.url="/gitlab/api/v4/projects/Kanbun%2Fud-kanbun/repository/";
Sutra.init=function(){
var t=document.getElementById("top").cloneNode(true);
t.style.position="static";
t.style.visibility="hidden";
document.body.appendChild(t);
Sutra.svg=new Array();
Sutra.pre=new Array();
Sutra.timer=setTimeout("clearTimeout(Sutra.timer);Sutra.checkview()",200);
Sutra.volchange();
}
Sutra.checkview=function(){
var t,r,b,i,x;
Sutra.timer=setTimeout("clearTimeout(Sutra.timer);Sutra.checkview()",200);
if(Sutra.curr==null)
return;
if(Sutra.svg[Sutra.curr]==null||Sutra.pre[Sutra.curr]==null){
Sutra.buildup(Sutra.curr);
Sutra.lastTop=null;
return;
}
if(Sutra.svg[Sutra.curr].style.position=="absolute"){
Sutra.svg[Sutra.curr].style.position="static";
Sutra.svg[Sutra.curr].style.visibility="visible";
}
conllusvg.rewrite("pre"+Sutra.curr);
r=Sutra.svg[Sutra.curr].getBoundingClientRect();
t=r.top;
b=r.bottom;
r=document.getElementById("top").getBoundingClientRect().bottom;
x=Sutra.curr;
if(t-r>20){
while(t-r>0){
i=Sutra.svg[Sutra.curr-1];
if(i==null)
break;
if(i.style.position=="absolute")
break;
Sutra.curr--;
if(Sutra.curr==0)
break;
t=i.getBoundingClientRect().top;
}
}
else if(b<r){
while(b<r){
i=Sutra.svg[Sutra.curr+1];
if(i==null)
break;
if(i.style.position=="absolute")
break;
Sutra.curr++;
if(Sutra.curr==Sutra.currmax)
break;
b=i.getBoundingClientRect().bottom;
}
}
if(Sutra.curr!=x){
if(Sutra.retrytimes>0){
Sutra.retrytimes--;
Sutra.curr=parseInt(document.getElementById("count").value,10);
t=Sutra.svg[Sutra.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=Sutra.curr;
}
else if(Sutra.retrytimes>0)
Sutra.retrytimes--;
Sutra.lastTop=Sutra.svg[Sutra.curr].getBoundingClientRect().top;
for(i=Sutra.curr+1;i<=Sutra.currmax;i++){
if(Sutra.svg[i]==null||Sutra.pre[i]==null){
Sutra.buildup(i);
break;
}
if(Sutra.svg[i].style.position=="absolute"){
Sutra.svg[i].style.position="static";
Sutra.svg[i].style.visibility="visible";
}
conllusvg.rewrite("pre"+i);
r=Sutra.svg[i].getBoundingClientRect();
if(r.top-window.innerHeight-1000>0)
break;
}
for(i=Sutra.curr-1;i>=0;i--){
if(Sutra.svg[i]==null||Sutra.pre[i]==null){
Sutra.buildup(i);
break;
}
if(Sutra.svg[i].style.position=="absolute"){
if(Sutra.pre[i].textContent>""){
Sutra.svg[i].style.position="static";
Sutra.svg[i].style.visibility="visible";
}
else
break;
}
conllusvg.rewrite("pre"+i);
r=Sutra.svg[Sutra.curr].getBoundingClientRect().top;
if(Math.abs(r-Sutra.lastTop)>5){
if(document.scrollingElement==null)
document.documentElement.scrollTop+=r-Sutra.lastTop;
else
document.scrollingElement.scrollTop+=r-Sutra.lastTop;
Sutra.lastTop=r;
}
r=Sutra.svg[i].getBoundingClientRect();
if(parseInt(r.bottom,10)<-300)
break;
}
}
Sutra.buildup=function(x){
var t,i;
if(Sutra.svg[x]==null){
t=document.createElementNS("http://www.w3.org/2000/svg","svg");
for(i=parseInt(x,10)+1;i<=Sutra.currmax;i++){
if(Sutra.svg[i]!=null)
break;
}
t.style.position="absolute";
t.style.visibility="hidden";
if(i>Sutra.currmax)
document.body.appendChild(t);
else
document.body.insertBefore(t,Sutra.svg[i]);
Sutra.svg[x]=t;
t.addEventListener("mousedown",Sutra.onmousedown);
t.addEventListener("touchstart",Sutra.onmousedown);
}
if(Sutra.pre[x]==null){
t=document.createElement("pre");
t.style.display="none";
t.setAttribute("id","pre"+x);
document.body.appendChild(t);
Sutra.pre[x]=t;
if(conllusvg.main["pre"+x]==null)
conllusvg.view(Sutra.svg[x],"pre"+x);
i=Sutra.volpath+"/"+("000"+x).slice(-3)+".txt";
conllusvg.loadRemote("pre"+x,Sutra.url+"files/"+encodeURIComponent(i)+"/raw?ref=master");
}
}
Sutra.volchange=function(){
var s,x;
Sutra.clearSVG();
for(s in Sutra.pre){
if(Sutra.pre[s]!=null){
document.body.removeChild(Sutra.pre[s]);
}
Sutra.pre[s]=null;
}
s=document.getElementById("vol");
Sutra.volpath=s.options[s.selectedIndex].value;
if(Sutra.tail==null)
Sutra.tail=new Array();
if(Sutra.tail[Sutra.volpath]==null)
Sutra.gettree();
else
Sutra.writeSVG();
}
Sutra.gettree=function(){
var p;
if(Sutra.request==null){
Sutra.request=new XMLHttpRequest();
Sutra.request.onload=Sutra.ongettree;
}
if(Sutra.tail[Sutra.volpath]==null)
p=1;
else
p=Math.floor(parseInt(Sutra.tail[Sutra.volpath],10)/100)+2;
Sutra.request.open("GET",Sutra.url+"tree?per_page=100&path="+Sutra.volpath+"&page="+p);
Sutra.request.send();
}
Sutra.ongettree=function(e){
var i,s;
if(Sutra.request.status==200){
s=Sutra.request.responseText;
i=s.lastIndexOf('.txt"');
if(i<0)
Sutra.writeSVG();
else{
Sutra.tail[Sutra.volpath]=s.substring(i-3,i);
Sutra.gettree();
}
}
}
Sutra.goto=function(){
Sutra.retrytimes=3;
Sutra.writeSVG();
}
Sutra.writeSVG=function(){
var c=document.getElementById("count");
Sutra.clearSVG();
Sutra.currmax=parseInt(Sutra.tail[Sutra.volpath],10);
Sutra.curr=parseInt(c.value,10);
if(Sutra.curr<0)
Sutra.curr=0;
if(Sutra.curr>Sutra.currmax)
Sutra.curr=Sutra.currmax;
c.value=Sutra.curr;
Sutra.lastTop=null;
}
Sutra.clearSVG=function(){
var x;
Sutra.curr=Sutra.lastTop=null;
if(Sutra.svg!=null){
for(x in Sutra.svg){
if(Sutra.svg[x]!=null){
Sutra.svg[x].style.position="absolute";
Sutra.svg[x].style.visibility="hidden";
}
}
}
if(document.scrollingElement==null)
document.documentElement.scrollTop=0;
else
document.scrollingElement.scrollTop=0;
}
Sutra.onmousedown=function(e){
var x,y;
if(Sutra.lastX==null){
Sutra.lastX=e.clientX;
Sutra.lastY=e.clientY;
return;
}
x=e.clientX-Sutra.lastX;
y=e.clientY-Sutra.lastY;
if(x*x+y*y>9){
Sutra.lastX=e.clientX;
Sutra.lastY=e.clientY;
return;
}
Sutra.lastX=null;
x=e.currentTarget;
for(y in Sutra.svg){
if(Sutra.svg[y]==x){
x=Sutra.volpath+"/"+("000"+y).slice(-3)+".txt";
window.open("editor-kanbun.html#"+Sutra.url+"files/"+encodeURIComponent(x)+"/raw?ref=master");
break;
}
}
}
Sutra.reload=function(){
var i,r;
for(i=Sutra.curr;i<=Sutra.currmax;i++){
if(Sutra.svg[i]==null||Sutra.pre[i]==null)
return;
r=Sutra.svg[i].getBoundingClientRect();
if(r.top>window.innerHeight||r.bottom<0)
return;
r=Sutra.volpath+"/"+("000"+i).slice(-3)+".txt";
conllusvg.loadRemote("pre"+i,Sutra.url+"files/"+encodeURIComponent(r)+"/raw?ref=master");
}
}
Sutra.gitlab=function(){
var r=Sutra.volpath+"/"+("000"+Sutra.curr).slice(-3)+".txt";
window.open("/gitlab/Kanbun/ud-kanbun/blob/master/"+r);
}
</script>
<body onload="Sutra.init()">
<div id="top" style="position:fixed; top:0px; left:0px; padding:10px; width:100%; background:white">
<font size="+3"><b>楚辭</b></font>
<font size="+3"><b>Universal Dependencies on 漢譯佛典</b></font>
<select id="vol" onchange="Sutra.volchange()">
<option value="kanripo/kR6f0082/001" selected>佛說阿彌陀經</option>
</select>
<input type="text" id="count" size=3 value=0 style="text-align:right" onchange="Sutra.goto()" />
<input type="button" value="GitLab" onclick="Sutra.gitlab()" />
<input type="button" value="Reload" onclick="Sutra.reload()" />
</div>
</body>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment