この項では、アプリケーション・ビルダーでカレンダを作成する方法について説明します。アプリケーション・ビルダーには月次、週次、日次およびリスト表示のカレンダを生成するための組込みウィザードが含まれています。カレンダのベースとなる表を一度指定すると、特定の列に格納された情報へのドリルダウン・リンクを作成して、ドラッグ・アンド・ドロップ機能を有効化できます。
アプリケーション・ビルダーでは、次の2つのカレンダ・タイプがサポートされています。
カレンダ - カレンダは、FullCalendar jQueryライブラリをベースにしており、CSSを介してのみカスタマイズできます。
レガシー・カレンダ - レガシー・カレンダはテンプレートベースで、今後のリリースでは非推奨になります。
ヒント: 以前のリリースでは、レガシー・カレンダはカレンダ(テンプレート)、クラシック・カレンダ、簡易カレンダおよびSQLカレンダと呼ばれていました。 |
両方のカレンダ・オプションで、指定した表またはSQL問合せをベースとするカレンダを作成できます。作成プロセス中、日付列と表示列を選択するプロンプトが表示されます。適切なユーザー・インタフェースと様々な追加機能が提供されるため、すべてのレガシー・カレンダを最新カレンダに変換することをお薦めします。
Calendar
カレンダ・オプションでは、次のことがサポートされます。
複数ビューでのカレンダ・イベントのレンダリング(「月」、「週」、「日」または「リスト」)。
期間ベース・イベントおよび期間ベースでないイベントのレンダリング。
イベントを異なる日付にドラッグ・アンド・ドロップすることによって開始日および終了日を変更する機能。
イベントの長さをサイズ変更したり、終了日を変更することによって期間を変更する機能。
フォームを使用し、イベントまたは空のカレンダ・セルのいずれかをクリックすることによって、カレンダの新規イベントを編集または追加する機能。
Webサービス・コールまたはGoogleカレンダ・フィードを使用した外部ソースからのイベントのレンダリング。
単一または複数の行でイベント・タイトルをレンダリングする機能。
様々なCSSクラスを使用して、開発者は様々なイベント・タイプに様々なスタイルを選択できます。
PDFの印刷可能な書式でイベントをダウンロードする機能
イベントを共有する複数の形式(iCal、CSV、XML)のサポート。
各イベントの詳細を簡単に確認できるように、月次/週次/日次ビューにツールチップを追加する機能。
レガシー・カレンダ
レガシー・カレンダ・オプションでは、次のことがサポートされます。
1ページにつき1つのレガシー・カレンダの作成。
開始日のみのレンダリング。
テンプレートによって定義されるルック・アンド・フィール。
イベントのドラッグ・アンド・ドロップによる開始日の変更。
日次、週次、月次ビューを含むカレンダ。
日付列は、エントリが含まれるカレンダ上の日付を決定します。
表示列は、カレンダを表示する特定の行を定義します。
次に、サンプル・データベース・アプリケーションからのサンプル・カレンダを示します。
このカレンダには次のボタンが含まれています。
前へ - 前月にナビゲートします。
次へ - 翌月にナビゲートします。
月 - すべての順序の月次ビューを表示します。
リスト - すべての順序のリストを表示します。
ヒント: 基礎となるSQLを表示するには、ページ下部のSQLソース・リージョンを展開します。 |
この項では、アプリケーションのホームページから新規カレンダを追加する方法について説明します。
アプリケーションのホームページからカレンダを作成するには、次のステップを実行します。
ページの作成ウィザードを実行します。
「ワークスペース」ホームページにナビゲートします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「ページの作成」をクリックします。
ページの作成ウィザードが表示されます。
「ページの作成」で、次のステップを実行します。
ユーザー・インタフェース: ページのユーザー・インタフェースを選択します。
ページ・タイプの選択: 「カレンダ」を選択します。
「次へ」をクリックします。
「カレンダ」を選択して、「次へ」をクリックします。
「ページおよびリージョン属性」で、次のステップを実行します。
ページ番号: 新しいページ番号を指定した場合、ウィザードによって新しいページが作成されます。既存のページ番号を指定した場合、ウィザードによってそのページにコンポーネントが追加されます。
ページ名: 作成するページのタイトルを入力します。
ページ・モード: ページ・モードを選択します。
リージョン名: カレンダを含めるリージョンの名前を入力します。
ブレッドクラム: ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。
「次へ」をクリックします。
「ナビゲーション・メニュー」で、このページに含めるナビゲーションのタイプを指定し、「次へ」をクリックします。表示されるナビゲート・オプションは、カレント・アプリケーション・テーマによって異なります。
「ソース」で、カレンダ・ソースが表かSQL問合せかを選択します。
カレンダ・ソースが表の場合:
ソース・タイプ - 「表」を選択します。
表/ビューの所有者 - カレンダを作成している表の所有者を選択します。
表/ビューの名前 - カレンダの基になる表またはビューを選択します。
列の選択 - カレンダに含める1つ以上の列を選択します。
「次へ」をクリックします。
カレンダ・ソースがSQL問合せの場合:
ソース・タイプ - 「SQL問合せ」を選択します。
リージョン・ソースの入力 - カレンダに使用するSQL SELECT文を入力します。SQL SELECT文には2列以上を含める必要があり、そのうち1つはDATE列にする必要があります。
例は、フィールドレベル・ヘルプを参照してください。
「次へ」をクリックします。
「設定」で、次の項目を指定します。
表示列 - このカレンダのイベントに表示されるテキストを保持する列を選択します。
開始日列 - このカレンダに表示されるイベントの開始日を保持する列を選択します。
終了日列 - このカレンダに表示されるイベントの終了日を保持する列を選択します。この属性を指定すると、カレンダには期間ベース・イベントが表示されます。
時間の表示 - 日付の時間部分を表示するかどうかを選択します。
作成ページの追加 - 新しいフォーム・ページを作成するかどうかを特定します。このフォームは、カレンダへのイベントの追加に使用されます。
編集ページの追加 - 新しいフォーム・ページを作成するかどうかを特定します。このフォームは、カレンダへのイベントの編集に使用されます。
ドラッグ・アンド・ドロップ・コードの生成 - カレンダにドラッグ・アンド・ドロップのコードを含めるかどうかを指定します。このコードによって、エンド・ユーザーが1つの日付から別の日付にイベントをドラッグ・アンド・ドロップしたときの、イベント・レコードの更新に対するサポートが追加されます。
「次へ」をクリックします。
「作成/編集ページ」を含めることを選択した場合は、属性を設定し、画面に表示されるステップに従います。
「作成」をクリックします。
ヒント: ページ・デザイナで、新しいリージョン・タイプ「カレンダ」を直接追加する場合、カレンダのSQL問合せを指定して、「PL/SQLコードのドラッグ・アンド・ドロップ」などの追加属性を手動で定義する必要があります。また、手動でページの作成および編集を定義したり、既存のフォーム・ページにリンクする必要もあります。 |
以前のリリースでは、レガシー・カレンダはカレンダ(テンプレート)、クラシック・カレンダ、簡易カレンダおよびSQLカレンダと呼ばれていました。レガシー・カレンダはテンプレートベースで、今後のリリースでは非推奨になります。
ヒント: ページの作成ウィザードを実行してレガシー・カレンダを作成するときに、ドラッグ・アンド・ドロップ機能を有効化するために、オンデマンド・ページ・プロセスを手動で作成する必要があります。「既存のカレンダでのデータのドラッグ・アンド・ドロップの有効化」を参照してください。 |
ページの作成ウィザードを実行してレガシー・カレンダを作成するには、次のステップを実行します。
ページの作成ウィザードを実行します。
「ワークスペース」ホームページにナビゲートします。
「アプリケーション・ビルダー」アイコンをクリックします。
アプリケーションを選択します。
「ページの作成」をクリックします。
ページの作成ウィザードが表示されます。
「ページの作成」で、次のステップを実行します。
ユーザー・インタフェース: ページのユーザー・インタフェースを選択します。
ページ・タイプの選択: 「カレンダ」を選択します。
「次へ」をクリックします。
「カレンダ(テンプレート)」を選択して、「次へ」をクリックします。
「ページ属性」で、次のステップを実行します。
ページ番号: 新しいページ番号を指定した場合、ウィザードによって新しいページが作成されます。既存のページ番号を指定した場合、ウィザードによってそのページにコンポーネントが追加されます。
ページ名: 作成するページのタイトルを入力します。
ページ・モード: ページ・モードを選択します。
リージョン・テンプレート: 新しいカレンダ・リージョンのリージョン・テンプレートを選択します。テンプレートは、リージョンの外観を制御します。
リージョン名: カレンダを含めるリージョンの名前を入力します。
表示タイプ: カレンダの動作を決定します。オプションは次のとおりです。
標準: ページが、関連するリクエストとともに送信されます。
部分ページ・リフレッシュ: 「カレンダ」リージョンのみがリフレッシュされます。
ヒント: カレンダが作成されると、表示タイプは変更できません。表示タイプを変更するには、カレンダを削除してから、再作成する必要があります。 |
ブレッドクラム: ページでブレッドクラム・ナビゲーション・コントロールを使用するかどうか、およびどのブレッドクラム・ナビゲーション・コントロールを使用するかを選択します。
「次へ」をクリックします。
「ナビゲーションのプリファレンス」で、このページに含めるナビゲーションのタイプを指定し、「次へ」をクリックします。ナビゲーション・オプション(ナビゲーション・メニューまたはタブなど)はカレント・アプリケーションのテーマに応じて決まります。
「ソース」で、カレンダ・ソースが表かSQL問合せかを選択します。
カレンダ・ソースが表の場合:
ソース: 「表」を選択します。
所有者: カレンダの作成元の表を所有するデータベース・スキーマを選択します。
表/ビューの名前: カレンダで使用する表を指定します。
「次へ」をクリックします。
カレンダ・ソースがSQL問合せの場合:
ソース: 「SQL問合せ」を選択します。
SQL問合せ: カレンダで使用するSQL SELECT文を入力します。SQL SELECT文には2列以上を含める必要があり、そのうち1つはDATE列にする必要があります。
例は、フィールドレベル・ヘルプを参照してください。
「次へ」をクリックします。
「カレンダ属性」で、次のステップを実行します。
日付列: カレンダにエントリを配置する際に、日付として使用する列を指定します。
表示列: カレンダに表示する列を指定します。
日付書式: カレンダの日付の表示方法を指定します。オプションは次のとおりです。
日付のみ: 結果は月次およびリスト・カレンダで表示されます。
日付と時間: 結果は月次、週次、日次およびリスト・カレンダで表示されます。
カスタム日付範囲: カスタムの開始日および終了日を含めるかどうかを指定します。1か月を超える分を月次カレンダに表示できるようにする場合に、このオプションを使用します。
「次へ」をクリックします。
次に、カレンダ・エントリの「リンクの詳細」を定義します。「リンク・ターゲット」により、ユーザーがカレンダ・エントリを選択したときのリダイレクト先が決まります。
「リンクの詳細」で、次のステップを実行します。
リンク・ターゲット: カレンダ・エントリがリンク・ターゲットを持つかどうかを指定します。カレンダ・エントリを選択すると、ユーザーはリンク・ターゲットにリダイレクトされます。選択された「リンク・ターゲット」により、表示される追加属性が決まります。
詳細は、フィールドレベル・ヘルプを参照してください。
「次へ」をクリックします。
「作成」をクリックします。
ヒント: SQL問合せに基づいたカレンダの作成時に、ドラッグ・アンド・ドロップ機能を有効化するために、オンデマンド・ページ・プロセスを手動で作成する必要があります。「既存のカレンダでのデータのドラッグ・アンド・ドロップの有効化」を参照してください。 |
作成したカレンダは、プロパティ・エディタで属性を編集することで表示を変更できます。各カレンダには、2セットの編集可能な属性(リージョン属性とカレンダ属性)があります。リージョン属性は、カレンダのコンテナとして機能するページの領域を定義します。カレンダ属性は、テンプレート、日付列および一般的なカレンダ書式設定を指定します。
カレンダ属性を編集するには、次のステップを実行します。
ページ・デザイナで適切なページにナビゲートします。「ページ・デザイナでのページの表示」を参照してください。
ページ・デザイナが表示されます
「レンダリング」ツリーで、カレンダ・タイトルを選択します。
プロパティ・エディタにリージョン属性が表示されます。
「レンダリング」ツリーのカレンダ・タイトルの下で、「属性」ノードを選択します。
プロパティ・エディタにカレンダ属性が表示されます。
プロパティ・エディタですべての属性を表示します。「プロパティ・エディタ・メニュー」から「すべて表示」を選択します。
リージョン属性を編集します。
ヒント: 属性の詳細は、プロパティ・エディタで属性を選択し、中央ペインで「ヘルプ」タブをクリックして、参照してください。 |
「保存」をクリックします。
デスクトップ・アプリケーションのカレンダのリンクの作成およびリンクの編集を定義する場合、2つの異なるページを定義することをお薦めします。新規カレンダ・エントリの作成に使用するページでは、ページ・アクセス保護を「制限なし」として定義する必要があります。ただし、既存のカレンダ・エントリの編集に使用するページでは、ページ・アクセス保護を「引数にチェックサムが必要」に設定する必要があります。
追加および編集機能を含めるように既存のカレンダを編集するには、次のステップを実行します。
ページ・デザイナで適切なページにナビゲートします。「ページ・デザイナでのページの表示」を参照してください。
ページ・デザイナが表示されます
「レンダリング」ツリーのカレンダ・タイトルの下で、「属性」ノードを選択します。
プロパティ・エディタにカレンダ属性が表示されます。
プロパティ・エディタですべての属性を表示します。「プロパティ・エディタ・メニュー」から「すべて表示」を選択します。
ヒント: 属性の詳細は、プロパティ・エディタで属性を選択し、中央ペインで「ヘルプ」タブをクリックして、参照してください。 |
「リンクの作成」または「リンクの表示/編集」で、次のステップを実行します。
リンクを次の場所で開く - ページまたはURLでカレント・ページを置き換えるか、ダイアログを開くかを指定します。
ターゲットの作成 - 「リンクが定義されていません」をクリックします。
リンク・ビルダー - イベント・ターゲット・ダイアログで、次のステップを実行します。
タイプ: ターゲット・アプリケーションのタイプ(「このアプリケーションのページ」または「別のアプリケーションのページ」)を選択します。
アプリケーション: 「別のアプリケーションのページ」を選択した場合、アプリケーションを選択します。
ページ: ターゲット・ページ番号を指定します。
アイテムを設定します。
名前 - 「リンクの作成」で、開始日列を入力します。期間ベース・イベントの場合は、終了日列も入力します。「リンクの表示/編集」で、主キー列を入力します。
ヒント: 選択した日付列にはRRRRMMDDHH24MISS という書式マスクが必要です(カレンダはこの書式で日付を渡すため)。
日付アイテムの書式マスクを変更しない場合は、前述の書式マスクを持つ非表示のアイテムをフォーム・ページに作成する必要があります(この非表示のアイテムは、日付値を受け入れる日付アイテムとして選択してください)。 |
値 - 「リンクの作成」で、置換文字列&APEX$NEW_START_DATE.
および&APEX$NEW_END_DATE.
を入力します。「リンクの表示/編集」で、&ROWID.
または&ID.
などの適切な置換文字列を入力します。
ヒント: レガシー・カレンダの場合、置換文字列#DATE_VALUE# および#PRIMARY_KEY_VALUE# を使用します。 |
「OK」をクリックします。
「エントリ」を展開します。「主キー列」で、カレンダ・データの編集時に渡す値を選択します。この値は、前述のステップで指定した#PRIMARY_KEY_VALUE#
に置換されます。
「保存」をクリックします。
この項では、コンポーネント・ビューでカレンダを管理する方法について説明します。
ヒント: SQL問合せに基づいたカレンダの作成時に、ドラッグ・アンド・ドロップ機能を有効化するために、オンデマンド・ページ・プロセスを手動で作成する必要があります。「既存のカレンダでのデータのドラッグ・アンド・ドロップの有効化」を参照してください。 |
コンポーネント・ビューでカレンダを作成するには、次のステップを実行します。
「カレンダ」リージョンを作成するには、次のステップを実行します。
ページに移動します。「コンポーネント・ビューでのページの表示」を参照してください。
新しいカレンダ・リージョンを作成します。「リージョン」で、「作成」アイコンをクリックします。
「カレンダ」を選択して、「次へ」をクリックします。
「実装」で、「カレンダ」を選択し、「次へ」をクリックします。
「表示属性」で、次のステップを実行します。
タイトル: リージョンのタイトルを入力します。選択するリージョン・テンプレートにリージョン・タイトルが表示される際に、このタイトルが表示されます。
リージョン・テンプレート: リージョンの外観を制御するテンプレートを選択します。
親リージョン: 新しいリージョンが属する親リージョンを定義します。
表示ポイント: このリージョンの表示ポイントを指定します。詳細は、フィールドレベル・ヘルプを参照してください。
順序: このコンポーネントの順序を指定します。これによって評価の順序が決まります。
「次へ」をクリックします。
「ソース」で、カレンダ・ソースが表かSQL問合せかを選択します。
カレンダ・ソースが表の場合:
ソース・タイプ - 「表」を選択します。
表/ビューの所有者 - カレンダを作成している表の所有者を選択します。
表/ビューの名前 - カレンダの基になる表またはビューを選択します。
列の選択 - カレンダに含める1つ以上の列を選択します。
「次へ」をクリックします。
カレンダ・ソースがSQL問合せの場合:
ソース・タイプ - 「SQL問合せ」を選択します。
リージョン・ソースの入力 - カレンダに使用するSQL SELECT文を入力します。SQL SELECT文には2列以上を含める必要があり、そのうち1つはDATE列にする必要があります。
例は、フィールドレベル・ヘルプを参照してください。
「次へ」をクリックします。
「設定」で、デフォルト値を受け入れ、「次へ」をクリックします。
属性の詳細は、フィールドレベル・ヘルプを参照してください。「フィールドレベル・ヘルプの表示」を参照してください。
「条件付き表示」で、次のステップを実行します。
条件タイプ: このコンポーネントがレンダリングされるために満たす必要があるリストから、条件タイプを選択します。
認可スキーム: オプションで認可スキームを選択します。このコンポーネントをレンダリングまたは処理するためには、この認可スキームがTRUEと評価される必要があります。
「リージョンの作成」をクリックします。
「作成」をクリックします。
作成したカレンダは、属性を編集することで表示を変更できます。各カレンダには、2セットの編集可能な属性(リージョン属性とカレンダ属性)があります。リージョン属性は、カレンダのコンテナとして機能するページの領域を定義します。カレンダ属性は、テンプレート、日付列および一般的なカレンダ書式設定を指定します。
ヒント: カレンダの表示を無効にするには、カレンダ・ページで、「毎月」、「毎週」または「毎日」ボタンを削除する必要があります。 |
カレンダ属性にアクセスするには、次のステップを実行します。
適切なページにナビゲートします。「コンポーネント・ビューでのページの表示」を参照してください。
リージョン定義ページにアクセスします。「リージョン」で、リージョン名を選択します。
リージョン定義が表示されます。これらの属性を使用して、リージョン・タイトルを含め、カレンダを保持するコンテナを変更します。
「カレンダ属性」をクリックします。
カレンダ属性ページが表示されます。
対象となる属性を編集します。
属性の詳細は、フィールドレベル・ヘルプを参照してください。「フィールドレベル・ヘルプの表示」を参照してください。
「変更の適用」をクリックします。
デスクトップ・アプリケーションのカレンダのリンクの作成およびリンクの編集を定義する場合、2つの異なるページを定義することをお薦めします。新規カレンダ・エントリの作成に使用するページでは、ページ・アクセス保護を「制限なし」として定義する必要があります。ただし、既存のカレンダ・エントリの編集に使用するページでは、ページ・アクセス保護を「引数にチェックサムが必要」に設定する必要があります。
追加および編集機能を含めるように既存のカレンダを編集するには、次のステップを実行します。
該当するカレンダ属性ページにナビゲートします。「カレンダ属性へのアクセス」を参照してください。
「リンクの作成」または「リンクの表示/編集」まで下にスクロールします。URLを入力します。
たとえば、ページ3にナビゲートする期間ベース・イベントの「リンクの作成」は次のとおりです。
f?p=&APP_ID.:3:&SESSION.::&DEBUG.:RP,3:P3_START_DATE,P3_END_DATE:#APEX$NEW_START_DATE#,#APEX$NEW_END_DATE#:
たとえば、主キー列のROWIDを使用し、ページ4にナビゲートする「リンクの表示/編集」は次のとおりです。
f?p=&APP_ID.:4:&SESSION.::&DEBUG.:RP,4:P4_ROWID:&ROWID.:
ヒント: 選択した日付列にはRRRRMMDDHH24MISS という書式マスクが必要です(カレンダはこの書式で日付を渡すため)。
日付アイテムの書式マスクを変更しない場合は、前述の書式マスクを持つ非表示のアイテムをフォーム・ページに作成する必要があります(この非表示のアイテムは、日付値を受け入れる日付アイテムとして選択してください)。 |
「カレンダ表示」まで上にスクロールします。
「主キー列」で、カレンダ・データの編集時に渡す値を選択します。この値は、前述のステップで指定した#PRIMARY_KEY_VALUE#
に置換されます。
「変更の適用」をクリックします。
カレンダは特定の書式で日付を渡すため、選択した日付列がRRRRMMDDHH24MISS
という書式マスクを持っている必要があります。日付アイテムの書式マスクを変更しない場合は、前述の書式マスクを持つ非表示のアイテムをフォーム・ページに作成する必要があります(この非表示のアイテムは、日付値を受け入れる日付アイテムとして選択してください)。日付列のデフォルト値を次のように変更する必要があります。
return to_char(to_date(<hidden item created>,'RRRRMMDDHH24MISS'),<Date item format mask>);
次に例を示します。
return to_char(to_date(:P130_HIREDATE_TMP,'RRRRMMDDHH24MISS'),:APP_DATE_TIME_FORMAT);
デフォルトのソース・タイプは値を戻すPL/SQLファンクション
である必要があります。
デスクトップ・カレンダを作成する際にドラッグ・アンド・ドロップ機能を有効化する場合、生成プロセスによってこの機能を実装するPL/SQLコードが自動的に定義されます。
レガシー・カレンダの場合、ドラッグ・アンド・ドロップ機能を有効化するには、オンデマンド・プロセスが必要です。このプロセスは、ページの作成ウィザードを使用すると自動的に作成されます。一方、ページの作成ウィザードを実行して新しいページでレガシー・カレンダを作成する場合、「ドラッグ・アンド・ドロップの有効化」オプションは表示されません。この機能を有効化するには、オンデマンド・プロセスを作成し、カレンダ・ページを作成してから、ページを編集してドラッグ・アンド・ドロップを有効化する必要があります。ベスト・プラクティスとして、カレンダの作成前にこのプロセスを作成しておくことをお薦めします。
レガシー・カレンダ・データのドラッグ・アンド・ドロップのサポートを有効化するには、次のステップを実行します。
カレンダの属性を編集します。
「ドラッグ・アンド・ドロップ」を「はい」に設定します。
置換変数APEX$NEW_START_DATE
、APEX$NEW_END_DATE
およびAPEX$PK_VALUE
を使用して、適切なPL/SQLコードを入力します。
たとえば、期間ベース・カレンダの場合は次のものを使用します。
begin update projects set start_date = to_date(:APEX$NEW_START_DATE, 'YYYYMMDDHH24MISS'), end_date = to_date(:APEX$NEW_END_DATE, 'YYYYMMDDHH24MISS') where id = :APEX$PK_VALUE; end;