更新順リストの表示数を制限して高速化するマクロ

TiddlyWikiではtiddlerを更新するときに、サイドバーにあるリストなども自動的に更新します。tiddlerが増えてくるとこの処理が結構重くなってくるので、標準の更新順(Timeline)リストを置き換え、表示するのを最近7日間の更新に限定することで、少しだけ表示を高速化してみました。そのほかにもスクロール量を減らして画面をすっきりさせる効果もあるかと思います。

更新順リストはtimelineマクロとして表現されています。今回作成したrecent_timelineマクロは、TiddlyWiki 1.2.32のtimelineマクロの一部を書き換えたもので、TiddlyWiki 1.2.32、Firefox 1.0.7で動作確認しました。以下ではその導入方法を記述します。

インストール方法

マクロを記述する

適当な名前のtiddlerを作成し、以下のコードを記述して、タグに"systemConfig"を追加して下さい。一度保存して、ブラウザで再読込を行うと、コードが呼び出され、マクロが登録されます。

config.macros.recent_timeline = { defaultDays:7 };

config.macros.recent_timeline.handler = function(place,macroName,params)
{
  var daysMax = params[0] ? params[0] : this.defaultDays;
  var tiddlers = store.reverseLookup( "tags","excludeLists",false,"modified" );
  var lastDay = "";
  var daysNum = 0;
  
  for ( t = tiddlers.length - 1; t >= 0; t-- ) {
    var tiddler = tiddlers[t];
    var theDay = tiddler.modified.convertToYYYYMMDDHHMM().substr(0,8);
    
    if ( daysNum < daysMax ) {
      if ( theDay != lastDay )
        {
          var theDateList = document.createElement("ul");
          place.appendChild(theDateList);
          createTiddlyElement(theDateList,
                              "li",
                              null,
                              "listTitle",
                              tiddler.modified.formatString(config.macros.timeline.dateFormat));
          lastDay = theDay;
          daysNum++;
        }
      var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
      theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
    }
  }
}
サイドバーのタブを書き換える

"TabTimeline"というタイトルのtiddlerを作成して、以下の内容を記述して下さい。この「7」というのは、「最近7日間の更新」ということで、ここを変えることで表示する日数を変えることができます。省略すると7日間になります。

<<recent_timeline 7>>

以上で動作するはずです。