ニンジャカルの仕組み

ニンジャカルの統合の裏にあるセオリー

ニンジャカルはグローバル変数を用いてその結果を保持するため、フィールドの定義やレコードに気を配る必要はありません。ニンジャカルのスクリプトは、どのコンテキストからでもアクセスできます。使いたいコンテキストから「NinjaCalDisp」フィールドにアクセスすればニンジャカルは動作する仕組みです。

カレンダーウィジェット

カレンダーウィジェットを動かしているロジック(グリッドなんとか、とかいうもの)は、「NinjaCal_basic」フィールド(3ヶ月表示のウィジェットの場合には「NinjaCal_tripple」フィールド)にあります。これは繰り返しの計算フィールドです。それぞれのカレンダーウィジェットは、この「NinjaCal_basic」の42個の繰り返し(セル)から構成されています。

フォーカスされる日/月

「NinjaCal_basic」フィールドは、グローバルの「$$__NinjaCalBaseDate」に保持されている日付の値を見て、フォーカスする月を自動で判断します。「$$__NinjaCalBaseDate」が空、もしくは無効な値の場合、「NinjaCal_basic」フィールドはデフォルトで現在の日付(今日)にフォーカスします。

カレンダーのハイライト

カレンダーウィジェットは、「$$__NinjaCalSelectedList」に保持されている日付をハイライトします。日付を選択すると、選択した日付または日付のリストが「$$__NinjaCalSelectedList」に保持されます。

ヒント:「$$__NinjaCalSelectedList」から値を抽出する計算フィールドを自分で作ることができます。

「NinjaCal ( action ; params )」スクリプト

このスクリプトが、選択や選択解除の動作をすべて制御しています。このスクリプトが、グローバル変数の「$$__NinjaCalBaseDate」と「$$__NinjaCalSelectedList」をセットします。

重要:このスクリプトをご自分のソリューションにコピーしてから、カレンダーウィジェットをペーストしてください。

NinjaCalを制御するその他のスクリプトの使用

基本的な構文は、「NinjaCal ( action ; params )」スクリプトをコールし、有効なアクションとそのアクションのためのパラメータを渡すということです。パラメータは改行(FileMakerの計算式中では「¶」)で区切られるため、複数の値のパラメータはダブルクォーテーションで囲まれたリストとして渡す必要があります。例を以下に示します。

ニンジャカルでは、以下のスクリプトアクションを使用できます。

{ }はオプションのパラメータです。

selectDate パラメータ:日付のリスト, {再フォーカス}

このアクションは、「$$__NinjaCalSelectedList」に入っている、選択された日付を返します。再フォーカスの属性が設定されている場合、ウィジェットが選択された日付にスナップします。¶で区切られた日付のリストを渡して、すべての日付を選択することもできます。詳しくは「日付をハイライトする」を参照してください。

例:スクリプト実行 [ “NinjaCal ( action ; params )”; Parameter: "selectDate¶" & Get(CurrentDate) ]

例(再フォーカス):スクリプト実行 [ “NinjaCal ( action ; params )”; Parameter: "selectDate¶" & Get(CurrentDate) & "¶-f" ]

selectRange パラメータ:日付の範囲; {再フォーカス}

「selectDate」と同様ですが、範囲がこのアクションのコンテンツとなります。渡す範囲は、¶で区切られダブルクォーテーションで囲まれた日付のペアでも、あるいは開始日と終了日を「...」でつないだ文字列でもよいことに注意してください。¶で区切られた日付を渡す場合、必ず、早いほうの日付が先、遅いほうの日付が後という順番にします。

例:スクリプト実行[ “NinjaCal ( action ; params )”; Parameter:"selectRange" & "¶" & Quote ( List ( RelationshipToEvents::EventDate ) ) & "¶" & "-f" ]

例:スクリプト実行 [ “NinjaCal ( action ; params )”; Parameter: "selectRange¶" & Table::FromDateField & "..." & Table::ToDateField & "¶-f" ]

stepMonth パラメータ:移動する月数、通常は「1」または「-1」

ウィジェットのフォーカスを、前の月や次の月へ移動します。

例:スクリプト実行[ “NinjaCal ( action ; params )”; Parameter: "stepMonth¶1" ]

goToDate パラメータ:単一の日付

ウィジェットのフォーカスを、パラメータとして渡した日付へ移動します。ただし、その日付は選択されません。

例:スクリプト実行[ “NinjaCal ( action ; params )”; Parameter: "goToDate¶" & "2/10/2009" ]

clearDates パラメータ:なし

選択されている日付をクリアし、カレンダーのフォーカスを現在の月にスナップします。

例:スクリプト実行[ “NinjaCal ( action ; params )”; Parameter: "clearDates" ]