【Web開発】新館「花と植物の写真館」でNEW表示をはじめてみた(2)

私のWebサイト「なおさん亭::新館」にて、「花と植物の写真館」で新しくアップされた写真がわかるようにしてみました。昨日の記事の続きです。

【Web開発】新館「花と植物の写真館」でNEW表示をはじめてみた(1)

値パスのリストをどう作ればよいか?ということでしょうか。実は「花と植物の写真館」にはTreeViewコントロールが2つあって、ひとつは50音順で探すためのもの、もうひとつは科名から探すためのものです。50音順のTreeViewコントロールでは、こんな感じで各ノードに値が設定されています。

全部(-1)
ア行(-2)
  アオキ(123)
  ………

ですので、全部を表す値パスは「-1」、アオキを表す値パスは「-2/123」となっています(数値は仮ですから気にせずに)。NEWを表示させたい値パスのリストをどこかに作っておきます。

-1
-2/-123
………

ちなみに科名のTreeViewコントロールでは、こんな感じです(数値は仮です)。

全部(-1)
ア行の科(-2)
  アオイ科(456)
    タチアオイ(789)
    ………

タチアオイの値パスは、「-2/456/789」となります。これについてもNEWを表示させたい値パスのリストをどこかに作っておきます。

-1
-2
-2/456
-2/456/789
………

さて、リストをいつ作るか?ですが、これもアクセスのたびに作っていては時間がかかってしようがありませんし無駄ですから、タイミングをこう定めます。

  • データベースのテーブルが変更された。
  • 日付が変わった。

NEWを表示する都合上、毎日どこかで更新する必要があるわけです。データベースの方が変わったら、無条件に更新します。

ちなみにリストは単純なテキストファイルで、頭から読んでTreeViewコントロールにFindNodeして、見つかったTreeNodeのImageUrlを書き換えます。

………
TreeNode node = treeView.FindNode("-2/456/789");
if( node != null )
{
    node.ImageUrl = "~/new.gif";
}
………

リストの作成も単純で、1週間以内に追加されたレコードから名前、科名などの情報を取得して、それをもとに値パスを作成し、ファイルに書き込むだけです。

実際には、得られた科名から何行か判断したり、結構面倒なのですが…。

こんなことで、NEW表示が可能になりました。個々の写真のNEW表示については、その写真の追加日時を見ればいいだけなので、簡単です。

後半といいながら端折ってしまいましたが、たかだかNEW表示をするだけなのに、大変だなぁ、と思いました。でも一回作ってしまえば、あとは勝手にやってくれるので、これこそプログラミングでしょう。

コメント