Markdown Table Editorのソースコード

前に公開したMarkdown Table Editorのソースコードを解説する回

まだまだ実用的ではないけど今後実装したい内容はこちら

  • Markdown方式のテーブルをテキストにコピペしたらグリッドに反映される
  • Markdown Table Editor用のオサレなページを作る(機能ではないので優先度は低めかな)
  • あとは気になったこと少しづつ

早速ソースコードの解説と洒落込む

ソースコード

またまたこれはindex.htmlにコピペすればそれだけで動くので試してみてください。

解説

この3つは今回使用するライブラリになります。
jqueryとhandsontableとhandsontableのCSSです。
handsontableとはjavascriptでExcelライクな操作で値の変更とかできるマジで変態なライブラリです。
範囲指定コピー貼り付けとかフィルコピーとかもできます。
ライセンスはMITライセンスのようです。
↓こんな感じです。

正直このライブラリを駆使するといろんなことができるようになるので
今後も使って何か作ろうかなと思ってます。
SFDCでExcelライクにデータの修正ができるとか夢が広がリングですね。
(インライン編集があるとか言わない)

グリッドの列と行の追加と削除するボタンです。
クリックすると列と行の最終行列が追加または削除されます。
指定した列と行に追加とかできるようにして欲しいですよね。これ。
もっと直感的な感じでできるように今後工夫して組み込んでみます。
もう少しお待ちくだされ。

ここにグリッドが表示されています。
マークダウンの表示もここでされています。
ここでテキストエリアになっててすでにあるマークダウンのテーブルを貼り付けたらグリッド反映されればいいのに。
文字列から配列にするのは簡単なんですがテーブルの表記揺れがあるので面倒なだけです。
git hub基準の最小テーブルを基準にしようかなと思ってます。(ダッシュ3つでヘッダを区切るとかの基準)

このdataってやつにグリッドのデータがバインドされています。
なのでこのdataのArrayを変更した後にgrid.render()とかやるとgridに反映されます。

ここからマークダウンオブジェクトの宣言になるのですが
大したことしてないのではしょります。

グリッドオブジェクトの宣言に入ります。
最初は色々なエレメントの定義を宣言しちゃいます。
主に表示されているボタンとか。

ここは後ほど出てくるcellsというプロパティのfunctionで呼び出されるところで使用します。
ヘッダの表示を設定してます。
緑色にして目に優しくしてます。やさC。

ここではセルに何もない場合はグレーに数値がマイナスの場合は赤くするなど設定してます。

今回の一番大切な箇所になります。
Handsontableのインスタンスを生成します。
dataは先ほど説明した表示用データです。
afterRenderは更新されるたびに実行されるイベントです。
イベントは引くほど多いので確認してみてください。引きますよ。
イベント一覧はこちら
ちなみにbeforeもあります。
cellsとはセル一つ一つのオプションです。
文字列しか入らないとか文字を赤くするとか編集不可にするとか色々設定します。
今回はヘッダとマイナスイメージのセルにだけオプションつけてます。

最後にボタンのイベントを追加してます。
みたとおりなのですが、別にjqueryのクリックイベントの追加でも構いません。

あとがき

このグリッドは色々代用できそうです。
例えばCSVの修正をWeb上でできたり、HTMLテーブルを修正できたり。
私はとにかくブログを書きやすくするという目的でサービスなどを作っていこうかなと思ってます。
3日坊主ですし簡単にブログ書けないとすぐやめちゃうので。

スポンサードリンク