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

editor-kanbun gitlab version

parent c86b96f7
Loading
Loading
Loading
Loading
+81 −7
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>CoNLL-U SVG Editor for 漢文 by 安岡孝一, July 14, 2018.</title>
<title>CoNLL-U SVG Editor for 漢文 by 安岡孝一, July 15, 2018.</title>
<script src="conllusvgview.js"></script>
<script src="conllusvgedit.js"></script>
<script src="conllusvgload.js"></script>
<script>
conllusvg.kanbun=new Object();
conllusvg.kanbun.checkURL=function(textid){
conllusvg.kanbun.checkURL=function(textid,pushid){
  var h=location.href;
  var i=h.indexOf("#");
  if(i>0&&h.length-i>0)
    conllusvg.loadRemote(textid,h.slice(i+1));
  if(i>0&&h.length-i>0){
    h=h.slice(i+1);
    conllusvg.loadRemote(textid,h);
    if(h.indexOf("/api/v4/projects/")<0)
      return;
    if(h.indexOf("/repository/files/")<0)
      return;
    i=h.indexOf("/raw?ref=");
    if(i<0)
      return;
    conllusvg.kanbun.gitlabURL=h.substring(0,i)+"?branch="+h.slice(i+9);
    h=h.substring(0,i);
    conllusvg.kanbun.gitlabFile=h.slice(h.lastIndexOf("/")+1);
    if(pushid==null)
      return;
    i=document.getElementById(pushid);
    i.style.visibility="visible";
  }
}
conllusvg.kanbun.mecabUD=function(textid,t){
  var c=conllusvg.main[textid];
@@ -37,7 +53,6 @@ conllusvg.kanbun.consultCHISE=function(textid,z){
}
conllusvg.kanbun.saveLocal=function(textid){
  var c=conllusvg.main[textid];
  var tx=document.getElementById(textid);
  var k,s;
  conllusvg.clearSVG(textid);
  conllusvg.renum(textid);
@@ -57,6 +72,64 @@ conllusvg.kanbun.saveLocal=function(textid){
  conllusvg.view(c.svg,textid);
  conllusvg.saveLocal(textid);
}
conllusvg.kanbun.pushGitlab=function(textid){
  var c=conllusvg.main[textid];
  var tx=document.getElementById(textid);
  var i,k,s;
  conllusvg.clearSVG(textid);
  conllusvg.renum(textid);
  conllusvg.esrap(textid);
  conllusvg.parse(textid);
  conllusvg.makeNodes(textid);
  s="\n";
  for(k=c.nodes.length-1;k>=0;k--){
    if(c.nodes[k].id!=1)
      s=c.nodes[k].form+s;
    else{
      s="# text = "+c.nodes[k].form+s+c.nodes[k].id;
      conllusvg.insertTextline(textid,c.nodes[k].textlineid,1,s);
      s="\n";
    }
  }
  conllusvg.view(c.svg,textid);
  s=conllusvg.kanbun.gitlabURL+"&commit_message=API+editor-kanbun+"+conllusvg.kanbun.gitlabFile+"&content=";
  if(tx.value==null)
    s=s+encodeURIComponent(tx.textContent);
  else
    s=s+encodeURIComponent(tx.value);
  i=document.cookie.indexOf("conllusvg.kanbun.privateToken=");
  k="";
  if(i>=0){
    k=document.cookie.slice(i+30);
    i=k.indexOf(";");
    if(i>=0)
      k=k.substring(0,i);
  }
  if(k=="")
    k=prompt("Gitlab private token:","");
  if(k>"")
    conllusvg.kanbun.privateToken=k;
  else{
    alert("push Gitlab failed");
    return;
  }
  conllusvg.kanbun.request=new XMLHttpRequest();
  conllusvg.kanbun.request.addEventListener("load",conllusvg.kanbun.onLoad);
  conllusvg.kanbun.request.open("PUT",s);
  conllusvg.kanbun.request.setRequestHeader("Private-Token",k);
  conllusvg.kanbun.request.send();
}
conllusvg.kanbun.onLoad=function(e){
  if(conllusvg.kanbun.request.status==200){
    alert("push Gitlab succeeded");
    document.cookie="conllusvg.kanbun.privateToken="+conllusvg.kanbun.privateToken+";secure";
  }
  else{
    alert("push Gitlab failed: status "+conllusvg.kanbun.request.status);
    document.cookie="conllusvg.kanbun.privateToken=;max-age=0";
  }
  conllusvg.kanbun.request.removeEventListener("load",conllusvg.kanbun.onLoad);
}
conllusvg.kanbun.connectForm=function(textid,z){
  var c=conllusvg.main[textid];
  var ix=c.event.index;
@@ -121,13 +194,14 @@ conllusvg.kanbun.divideForm=function(textid,z){
</head>
<body>
<table noborder><tr><td nowrap>
<input type="text" value="漢文" onchange="conllusvg.kanbun.mecabUD('conllu',this)" />
<input type="button" value="load CoNLL-U" onclick="conllusvg.loadLocal('conllu')" />
<input type="button" value="save CoNLL-U" onclick="conllusvg.kanbun.saveLocal('conllu')" />
<input type="text" value="漢文" onchange="conllusvg.kanbun.mecabUD('conllu',this)" />
<input type="button" value="push Gitlab" id="gitlab" onclick="conllusvg.kanbun.pushGitlab('conllu')" style="visibility:hidden" />
</td></tr></table>
<textarea cols="120" rows="10" id="conllu" onchange="conllusvg.reparse('conllu')">
</textarea>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" onload="conllusvg.edit(this,'conllu','deprel','upos','xpos');conllusvg.kanbun.checkURL('conllu')">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" onload="conllusvg.edit(this,'conllu','deprel','upos','xpos');conllusvg.kanbun.checkURL('conllu','gitlab')">
</svg>
<select size=6 id="deprel" style="position:absolute; visibility:hidden">
<option>acl</option>