カレンダーを再描画する

どのような時にカレンダーが再描画されますか?

イベントを編集する

カレンダー上のイベントをクリックすると、「イベント詳細」の小さいウインドウが開きます。レコードを編集してからこのウインドウの下部にある緑色のチェックマークのボタンをクリックすると、このウインドウを閉じてカレンダーが再描画されます。「ウインドウを閉じる」コマンドまたはウインドウの枠にある赤い「閉じる」ボタンからウインドウを閉じると、単にウインドウが閉じるだけでカレンダーは再描画されません。

どのようにしてこの動作を実現しているかというと、ウインドウを開いたときにレコードの修正状況が記録されています(「イベント詳細」ウインドウを同時に複数開いた際にも、記録されています)。そして緑色のボタンをクリックしてウインドウを閉じると、修正状況をチェックし、イベントが修正されていればカレンダーが再描画されます。

イベントを編集するプロセスに何らかの動作を追加したい場合は、「Close Window & Refresh Calendar」スクリプトの「Commit Record」のコメントの後にある確定のステップの前または後に、動作を追加します。

「再描画」ボタン

カレンダーのヘッダにある、次の日/週/月へ移動する右向き矢印の隣に、「再描画」ボタンがあります。このボタンは、表示したい新規イベントがある場合に、サーバに対して手動で再描画をリクエストするために使用します。カレンダーは描画するイベントをキャッシュし、サーバに対して新規イベントを継続的にリクエストすることはありません。このカレンダーが従来のFileMakerのカレンダーよりもずっと高速で動作する理由のひとつが、この点です。

ただしこれは、自分が操作をしない限りは編集内容や新規イベントのレコードがカレンダーに表示されることはないということを意味します。通常は、このことは問題にはなりません。カレンダーはレコードの編集や表示の切り替えのたびにサーバから新規イベントをリクエストするからです。しかし画面を見ているだけであれば、「再描画」をクリックすればサーバから最新のデータを取得できます。

これはあまり“FileMakerらしく”ないように思えますが、きわめて複雑な画面は(そして従来のカレンダーのほとんどは)、自動で再描画をすることはありません。表示のために使用しているリレーションシップが“深すぎて”、サーバからの新規または編集されたレコードに関する通知に応答できないからです。

「Calendar」レイアウトを表示する際に再描画する

「Calendar」レイアウトには、このレイアウトを表示するたびにカレンダーを再描画するスクリプトトリガを割り当ててあります。

iCalのソースを再描画する

ソースのうちのひとつとしてiCalのURLを設定してある場合、カレンダーの再描画のたびごとにURLを再描画するのは好ましくないかもしれません(URLのコンテンツの取得は、カレンダーの動作の中で最も時間のかかるものです)。そこで、どの程度の頻度でURLを再描画するかを設定できるようにしてあります。

「Source No X」レイアウト上で、「Recommended」タブの「Refresh Every」の値として頻度がすでにソースに割り当てられています。(統合の際に)。レイアウトモードでこの値を編集して、URLの再描画の間隔を設定します。この値を適切に設定すると、通常のカレンダーのX時間ごとの再描画(表示の切り替えやイベントの編集など)のときのみ、URLも再描画されます。