kickzone/SHChart · GitHub
まだ見栄えが良くないけれど一応XY軸を作成することができた。来週はマウスに対応した情報を表示する処理を作業する。作業中、日曜日なのに仕事の依頼が入ってきたので、時間が少なくしか取れなかった。
見返してみると月が1か月ずれている、、あ、そういえば、javascriptのDate.getMonth()って1か月ずれてるんだった!Date.prototype.getMonth() – JavaScript | MDN 1月は0、2月は1なのね。修正はまた来週。
一番面倒だったのは、XY軸の目盛の間隔の自動決定方法。Y軸に関するコードを参考に載せておきます。
/** Y軸目盛の目安本数 */ private YAXIS_BASE_NUM: number = 4; /** 目盛に使用する数値一覧を算出 */ private DecideScale(min: number, max: number): Array<number> { //数値の幅を目安本数で割って、大体の間隔を算出 var range: number = max - min; var intervalBase: number = range / this.YAXIS_BASE_NUM; //キリのいい数に揃える 22→20、158→200など var keta: number = Math.floor(Math.log(intervalBase) / Math.log(10) + 1); var interval: number = Math.round(intervalBase / Math.pow(10, keta - 1)) * Math.pow(10, keta - 1); //intervalで割り切れる数を返す var minBase = Math.ceil(min / interval); var maxBase = Math.floor(max / interval); var ret: Array<number> = []; for (var i: number = minBase; i <= maxBase; i++) { ret.push(i * interval); } return ret; }
繰り返しになるけどTypeScriptでは原理的に実行時エラーが発生しない。これはすごい。少し型を意識してプログラミングするだけで、デバッグの手間が1/10程度まで減った。いやーー楽だ。