叡王戦/電王戦 棋譜ビューア
by mizarjp
HTML
<script src="https://cdn.rawgit.com/zenorocha/clipboard.js/v1.5.8/dist/clipboard.min.js"></script>
<script src="https://cdn.rawgit.com/na2hiro/Kifu-for-JS/master/out/kifuforjs.js"></script>
<link rel="stylesheet" href="https://cdn.rawgit.com/na2hiro/Kifu-for-JS/master/css/kifuforjs.css">
<script src="https://mzr.jp/shogi/eioulist.js"></script>
<p><select id="kifsel"></select><br /><button type="button" id="reload">Reload</button> <span><input type="checkbox" id="autotail" checked="checked">AutoTail</span> <button type="button" id="copybtn">Copy to Clipboard (KIF)</button> <button id="official">Open Official</button></p>
<div id="kifuplay"></div>
<pre id="export"></pre>
<footer><p><a href="http://www.eiou.jp/">www.eiou.jp</a> | <a href="http://denou.jp/">denou.jp</a> | <a href="https://github.com/na2hiro/Kifu-for-JS">Kifu for JS</a></p></footer>
CSS
.kifuforjs div.mochi div.mochimain span.mochigoma div { display: inline-block; }
JavaScript
(function(){
var Kifu = require("Kifu");
Kifu.settings = {ImageDirectoryPath: "https://cdn.rawgit.com/na2hiro/Kifu-for-JS/master/images"};
var reqprefix = 'https://s3-ap-northeast-1.amazonaws.com/prod-kifu-cache-strage-tokyo/caches/', reqsuffix = '.json';
var reqid = (function(refs, date){
var today = (date.getFullYear() * 10000 + date.getMonth() * 100 + date.getDate() + 100);
return (
refs.filter(function(e){ return +e.replace(/-.*/,'') == today }).shift() ||
refs.filter(function(e){ return +e.replace(/-.*/,'') < today }).pop() ||
refs[0]
);
})(kiflist.map(function(e){ return e.ref; }), new Date());
var kplay = 'kifuplay', kpj = '#' + kplay;
var trackurl;
function countLength(str){
var r = 0, i, c;
str = "" + str;
for(i = 0; i < str.length; i++){
c = str.charCodeAt(i);
r += ((c >= 0x0 && c < 0x81) || (c == 0xf8f0) || (c >= 0xff61 && c < 0xffa0) || (c >= 0xf8f1 && c < 0xf8f4)) ? 1 : 2;
}
return r;
}
function alignLeft(str, len){
str = "" + str;
while(countLength(str) < len){
str += " ";
}
return str;
}
function alignRight(str, len){
str = "" + str;
while(countLength(str) < len){
str = " " + str;
}
return str;
}
function zeroPad(str, len){
str = "" + str;
while(countLength(str) < len){
str = "0" + str;
}
return str;
}
function localetime(epoch){
var date = new Date(epoch);
return [
date.getFullYear(), "/",
zeroPad(date.getMonth()+1, 2), "/",
zeroPad(date.getDate(), 2), " ",
zeroPad(date.getHours(), 2), ":",
zeroPad(date.getMinutes(), 2), ":",
zeroPad(date.getSeconds(), 2), ".",
zeroPad(date.getMilliseconds(), 3)
].join("");
}
function time1(str){
return str.replace(/([0-9]+)-([0-9]+)-([0-9]+)T/, function(z, Y, M, D){ return Y+"/"+M+"/"+D+" "; })
}
function time2(sec){
var m, s;
m = sec / 60 | 0;
s = sec % 60 | 0;
return alignRight(m, 2) + ":" + zeroPad(s, 2);
}
function time3(sec){
var h, m, s;
s = sec % 60 | 0;
m = sec / 60 | 0;
h = m / 60...