Skip to content
Pulleyblank.html 3.34 KiB
Newer Older
<!DOCTYPE html><head><meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>Universal Dependencies on Pulleyblank's "Outline of Classical Chinese Grammar"</title>
<script src="conllusvgview.js"></script>
Koichi Yasuoka's avatar
Koichi Yasuoka committed
<script src="conllusvgload.js"></script>
<script>
var PB=new Object();
PB.init=function(start,end){
  PB.req=new XMLHttpRequest();
  PB.req.onload=PB.load;
  PB.svg=new Array();
  PB.count=0;
  PB.top=PB.getScrollTop();
  PB.now=start;
  PB.end=end;
  PB.timer=setTimeout("clearTimeout(PB.timer);PB.checkScroll()",200);
  PB.open(start);
}
PB.getScrollTop=function(){
  return(document.documentElement.scrollTop||document.body.scrollTop);
}
PB.open=function(n){
  var s="/gitlab/api/v4/projects/Kanbun%2Fud%2Dkanbun/repository/files/Pulleyblank%2FPulleyblank";
  var t=("000"+n).slice(-3);
  var r="%2Etxt/raw?ref=master";
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  var ss="/gitlab/Kanbun/ud-kanbun/blob/master/Pulleyblank/Pulleyblank";
  var rr=".txt";
  PB.req.open("GET",s+t+r);
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  PB.api=s+t+r;
  PB.url=ss+t+rr;
  PB.anchor="#"+t;
  PB.req.setRequestHeader("Pragma","no-cache");
  PB.req.setRequestHeader("Cache-Control","no-cache");
  PB.req.setRequestHeader("If-Modified-Since","Sat, 01 Jan 2000 00:00:00 GMT");
  PB.req.send();
}
PB.load=function(e){
  var p;
  if(PB.req.status==200){
    p=document.createElement("b");
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    p.innerHTML="<a name='"+PB.anchor+"'>"+PB.anchor+"</a> <a href='editor-kanbun.html#"+PB.api+"' target='_blank'>Edit</a> <a href='JavaScript:PB.reload("+PB.count+")'>Reload</a> <a href='"+PB.url+"' target='_blank'>GitLab</a>";
    document.body.appendChild(p);
    p=document.createElement("pre");
    p.textContent=PB.req.responseText
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    p.setAttribute("id",PB.anchor);
    document.body.appendChild(p);
    p=document.createElementNS("http://www.w3.org/2000/svg","svg");
    document.body.appendChild(p);
    PB.svg[PB.count]=new Object();
    PB.svg[PB.count].svg=p;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    PB.svg[PB.count].textid=PB.anchor;
Koichi Yasuoka's avatar
Koichi Yasuoka committed
    PB.svg[PB.count].api=PB.api;
    if(PB.inview(PB.count)){
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      conllusvg.view(p,PB.anchor);
      PB.svg[PB.count].load=true;
      PB.lastWrite=PB.count;
    }
    else
      PB.svg[PB.count].load=false;
    PB.count++;
    p=document.createElement("hr");
    document.body.appendChild(p);
  }
Koichi Yasuoka's avatar
Koichi Yasuoka committed
  PB.now++;
  if(PB.now<=PB.end)
    PB.open(PB.now);
Koichi Yasuoka's avatar
Koichi Yasuoka committed
PB.reload=function(c){
  if(!PB.svg[c].load)
    conllusvg.view(PB.svg[c].svg,PB.svg[c].textid);
  PB.svg[c].load=true;
  conllusvg.loadRemote(PB.svg[c].textid,PB.svg[c].api);
}
PB.inview=function(c){
  var r=PB.svg[c].svg.getBoundingClientRect();
  return(r.bottom>0&&r.top-window.innerHeight<30);
}
PB.checkScroll=function(){
  if(Math.abs(PB.getScrollTop()-PB.top)>30)
    PB.write();
  PB.timer=setTimeout("clearTimeout(PB.timer);PB.checkScroll()",200);
}
PB.write=function(){
  var c;
  PB.top=PB.getScrollTop();
  if(PB.inview(PB.lastWrite))
    c=PB.lastWrite;
  else{
    for(c=PB.count-1;c>0;c--){
      if(PB.inview(c))
	break;
    }
  }
  for(c--;c>=0;c--){
    if(!PB.inview(c))
      break;
  }
  for(c++;c<PB.count;c++){
    if(PB.inview(c)){
      if(PB.svg[c].load)
	conllusvg.rewrite(PB.svg[c].textid);
Koichi Yasuoka's avatar
Koichi Yasuoka committed
      else
	conllusvg.view(PB.svg[c].svg,PB.svg[c].textid);
      PB.svg[c].load=true;
      PB.lastWrite=c;
    }
    else
      break;
  }
}
</script>
</head>
<body onload="PB.init(001,600)" onresize="PB.write()">
<h1>Universal Dependencies on Pulleyblank's "Outline of Classical Chinese Grammar"</h1>
</body>