はじめに
Outlook予定表やGoogleカレンダーなどのスケジュール管理アプリでは、タイムライン上に予定が一覧表示されていて、新たな予定を追加したいときにはタイムライン上で時間を選択して予定登録を行う事ができます。
Power Appsで何らかの予定管理を行うアプリを作成する場合、ユーザーが直感的に操作できるよう、スケジュール管理アプリと同じように予約ができるようにしたいと思うことがあります。
しかし、インターネット上で似たようなことを行っているアプリの情報が見当たらなかったため、自分でスケジュール管理アプリのように予定登録を行えるアプリを作成しました。
今回は、Power Appsで予定登録を行うために考えたアイデアを紹介します。
まだアプリの細部まで作り込んでいないのですが、完成度が上がってきたら改めて詳細な紹介ができればと思っています。
つくったもの
以下の画面のアプリを作りました。
画面の左側が予定を一覧表示するためのタイムラインで、タイムライン上で予定をクリックするとその予定の詳細が右側に表示されます。
アプリで表示する予定データは、以下のようにSharePoint Onlineリストで管理しています。
予定詳細欄の上側にある+アイコンをクリックすると、予定詳細欄が新規入力モードになり、予定の新規登録を行えるようになります。
新規登録する予定の開始時刻と終了時刻は、左側のタイムチャート上で設定します。
予定時刻を選択するときの操作は以下のような感じになります。
青いブロックのフチに表示されている○を動かすことで時刻を変更できます。
(既存の予定と時間が重複する場合はブロックの色が赤に変わります)
アプリの中身の説明
Galleryタイムライン
のTemplateSize
プロパティとTemplatePadding
プロパティの値を0に設定して、Button予定
のY
プロパティとHeight
プロパティの値を予約時刻に合わせて変化させることで、既存の予定を表現しています。
Container予定時刻選択
は初期状態では非表示にしていますが、予定の新規登録を行うときには以下のように表示させます。
Container予定時刻選択
の配下には、Slider予約開始
とSlider予約終了
とButton新規予約時間
の3つのコントロールがあります。
Slider予約開始
とSlider予約終了
はスライダーコントロールですが、これらがGalleryタイムライン
にかぶさるように配置して、スライダーのハンドルを操作することで予定時間を選択できるようにします。
Slider予約開始
とSlider予約終了
のプロパティ設定について、ハンドルを縦方向に操作するためLayout
プロパティの値をLayout.Vertical
に設定し、ハンドル部分以外がすべて透明になるようRailThickness
とBorderThickness
を0に、ShowValue
をfalseに設定します。
また、このアプリでは予約時間を30分単位で選択するため、Slider予約開始
とSlider予約終了
のMin
プロパティを0、Max
プロパティを48(24時間÷30分=48)に設定します。
Button新規予約時間
は、スライダーで選択した開始時間と終了時間に合わせて、Y
プロパティとHeight
プロパティの値を変化させます。
また、本アプリではGalleryタイムライン.AllItems
の予約時間を参照して、時間が重複しているか否かでColor
プロパティを変化させています。
改善したい点
次の点が課題として残っているため改善していきたいです。
- 日付を跨いだ予定を登録できない
- 複数の予定の時間帯が重複しているときにボタンが重なってしまう
(左右に位置をずらして重ならないようにしたい)
We Are Hiring!