ニンジャカルの仕組み
ニンジャカルの統合の裏にあるセオリー
ニンジャカルはグローバル変数を用いてその結果を保持するため、フィールドの定義やレコードに気を配る必要はありません。ニンジャカルのスクリプトは、どのコンテキストからでもアクセスできます。使いたいコンテキストから「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" ]