当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。

テクてく Lotus 技術者 Slack に参加しよう!

2012年3月26日月曜日

曜日の割り出し(XPages編)

なんと、気がついたら、ブログ開設から丸4年を過ぎました。ということで5年目突入です!
やっと5年目なのか、もう5年目なのかは分かりませんが、今後ともよろしくお願いします。


お祝いしてくれるという方は、是非このボタンをクリックしてやってください。
にほんブログ村 IT技術ブログへ


さて、今日はXPagesネタです。
ノーツで日付から曜日を割り出すというのはよくやっています(このブログでも紹介していますネ)が、XPages での方法を紹介します。

分かりやすくするために、あらかじめ
「Schedule」と言う名前でフォームを作成しておきます。
そこに「StartDate」という日付/時刻フィールドを用意しておきます。
SCheduleフォーム

次に、適当なXPageを作成します。
そうしたら、先ほど作成したフォームを「データソース」として定義します。

定義できたら、データソースをXPage上にドラッグ&ドロップします。
データソースをXPage上にドラッグ&ドロップ

すると、「startDate1」という名前で日時ピッカーが作成されますので、これのデフォルト値を設定します。
「startDate1」コントロールを選択して、プロパティビューを開きます。
「データ」タブを開き、デフォルト値の横にある◇をクリックして、「値の計算...」を選択します。
スクリプトエディタが開くので、
@Today()
と記述します。
ちなみにこれは、サーバサイドJavaScript上で使える@関数です。
従来の@関数と違うのは、()が付くかどうかです。
どのように書けばよいのか不安な場合は、
スクリプトエディタの左側部分にある[参照]タブを開き、そこから「@Functions」を選びましょう。
利用できる@関数とその構文が表示されます。
その関数をダブルクリックすれば、右側のエディタ欄に転記されるのでとても便利です。
startDate1のデフォルト値をセット

これで、startDate1 には今日の日付が表示されるようになります。

次に、曜日を表示させるための「計算結果フィールド」コントロールをドラッグ&ドロップします。
表示させるだけなので、場所はどこでも良いです。

そのコントロールを選択した状態で、プロパティビューを開きます。
「値」タブを開き、「使用するバインドデータ」をJavaScriptに変更します。
すると、エディタが表示されるので、そこに以下の式を入力します。
var wday = @Text( @Weekday( getComponent("startDate1").getValue() ) );

var from = @List( 1, 2, 3, 4, 5, 6, 7 );
var to   = @List( "日", "月", "火", "水", "木", "金", "土" );
" (" + @Replace( wday, from, to ) + ")"
getComponent("startDate1").getValue()
というのは、日時ピッカーの値を取得しています。
@Weekday()は、ノーツの@関数と同じで、指定した日付の曜日を1-7で返すものです。
@Replace()関数で、1-7の数値を"日"~"土"に変換しています。
その前の@Listは、指定した値でリストを作成するものです。
@Replaceは変換する文字列をリストで指定する必要があるため、このようにしています。
曜日の算出

これで、このXPageを開けば、今日の日付と曜日が表示されます。
曜日のプリビュー

しかし、このままでは、日時ピッカーで日付を変更しても反映されません。
それではつまらないですね。というか意味がありません。
ここでは、+αとして、日時ピッカーの値が変更されたら曜日も同時に変更するという事をやってみましょう。

と言っても、とても簡単です。
日時ピッカーコントロール(startDate1)を選択して、イベントビューを開きます。

イベントの一覧から、「選択して変更」のところにある「onChange」をクリックします。
その状態で、右側の方にある「サーバーオプション」の中から「部分更新」を選択します。
すると、[要素の選択...]ボタンが有効になるのでクリックします。
「更新する要素の選択」ダイアログが表示されるので、computedField1を選択します。
更新する要素を選択

この「computedField1」というのは、曜日を表示している計算結果フィールドコントロールの事です。
つまり、日時ピッカーの値が変更されたら(onChangeイベント)、 「computedField1」を更新しなさいという事です。

これでXPageを保存すれば、完了です。

簡単でしたね。結果は、是非ご自身の目で確かめてください。


このように徐々にではありますが、XPages 関連のネタも少しずつ増えてきましたので、色々とご紹介できるようになるかと思います。

くどいようではありますが、今後も当ブログ、そして筆者の会社(株式会社エフをよろしくお願いします。



Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: