TracReportsのテーブルorグラフの非同期描画対応

ReportIncludePluginに機能追加。重いSQLがあると、マクロを貼付けているWikiページを開くとしばらく固まってしまうので、SQL発行->テーブルorグラフ描画を非同期でやってみた。

忘れそうなので実装メモを書いておく。

  • マクロが返す内容は、Ajaxによる非同期通信を行うjavaScriptとする
  • このjavaScriptでは、マクロに定義されたオプションを引数データとしてサーバにリクエストする
  • サーバ側は、IRequestHandler#process_requestで処理する。後はこれまでの処理と同じで、渡されたオプションを元に、TracReportsのSQLを取得してデータを読み込み、tableタグに変換する。必要であれば、グラフ用のHTMLも生成する。生成したHTMLをクライアント側に返す。
  • クライアント側では、Ajaxリクエストの結果のHTMLをそのまま表示する。

Ajaxの所は、jQuery.ajax()でさくっと作成。非常にらくちんです。