業務ハックLab -とある情シスの備忘録-

とある情シスの備忘録的なものです。

【スポンサーリンク】

学習アプリ作成会で作ったアプリについてPart1

皆さんこんにちは。
業務ハックLabのようです。

今回の記事は2022/12/3に開催したPower Platform学習アプリ作成会#11でお話しさせていただいた私なりに機能追加した部分の解説をしていきたいと思います。
長くなってしまうので今回はTopスクリーンとViewスクリーンで追加した箇所について解説します!

この記事は、Power Apps Advent Calendar 2022 12月16日担当分の記事です!

qiita.com


では早速行ってみましょう!

Topスクリーン

Topスクリーンには下記のような機能を追加しました。

  • 今月の学習状況
  • 今年の学習状況
  • Configスクリーンへ移動する時のパスワード入力画面

では今月の学習状況から解説!

今月の学習状況

まず今月の学習状況を表示する為には回答結果のデータソースから今月分かつ自分のデータのみでフィルタをかけたデータを取得する必要があります。

今月の学習実績データの取得

今回はアプリを開いた時にデータを取得するようにしました。
AppのOnStartプロパティへ下記のように設定をしています。

ユーザーと期間でフィルタをかけた結果をコレクションに格納しています。

今月の学習実績の表示

前段で取得したデータをコレクションに格納したので表示するのはいたって簡単です。
今回はデザイン的に丸みを持たせたかったためテキスト入力コントロールをビューモードにしてDefaultプロパティへ下記のように設定しています。

CountRowsで取得したデータの行を取得し0件とそれ以外でメッセージの表示を変えています。

今年の学習状況

次に今年の学習状況です。
今月の学習状況と同じく、表示する為には回答結果のデータソースから今年分かつ自分のデータのみでフィルタをかけたデータを取得する必要があります。

今年の学習実績データの取得

こちらもAppのOnStartプロパティへ設定します。

今月の学習状況と同じようにユーザーと期間でフィルタをかけた結果をコレクションに格納しています。

今年の学習実績の表示

こちらも今月の学習状況と同じでテキスト入力コントロールをビューモードにしてDefaultプロパティへ下記のように設定しています。

Configスクリーンへ移動する時のパスワード入力画面

Config画面へ遷移する為のギミックも追加してみました。
外面右上に丸いボタンが設置されているのですがそちらをクリックするとパスワードを入力する画面が表示され正しいパスワードを入力するとConfig画面へ移動します。
お遊びで作ったのでパスワードバレバレじゃん!っていう突っ込みは無しでお願いしますw

各種コントロールの設定

各種コントロールのプロパティについては以下のとおり

ボタンコントロールbtnPassword

ここでコンテキスト変数locTopにtrueを代入することでパスワード入力画面に使用しているコントロールが表示されるようにそれぞれのVisibleプロパティにコンテキスト変数を設定しています。

シェイプコントロールshpPassword

アイコンコントロールIcnCancel

ここではアイコンをクリックすることでコンテキスト変数locTop、locNoteにfalseが代入されパスワード入力画面に使用しているコントロールやパスワードが誤っている場合に表示されるテキストラベルコントロールを非表示にするよう設定しています。

テキスト入力コントロールtxtPassword

パスワードモードで入力する形にする為、Modeプロパティを変更しています。

テキストラベルコントロールlblNote

ボタンコントロールbtnConfigNavi

ここではテキスト入力コントロールに入力されている値が条件と一致したらConfig画面に遷移する、そうでない場合はコンテキスト変数locNoteをtrueにするという形にしています。
ちなみに実際に運用する時にはここに平文でパスワードを設定するのではなく、変数などを使用して見えないようにしましょうw
またReset関数でtxtPasswordをリセットしています。

テキストラベルコントロールlblPasswordNote

Viewスクリーン

次はViewスクリーンです。
こちらはカレンダーギャラリーで実施結果がある日にマークを付ける機能、現在までの正答数を表示する機能を追加しています。

実施結果がある日へのマーク表示

こちらもまずは実施結果を取得してくる必要があります。

実施結果の取得

まずカレンダーギャラリー内に捨てラベルとなりますがテキストラベルコントロールを配置しましょう。
そしてTextプロパティに下記のように設定します。
そうすると下図のようにその日付ごとの実施結果の行数が取得できます。


これで行数は実施結果の取得できましたね。
この値が0より多ければデータ有りというわけですね。

マークの表示

マークとなるシェイプコントロールを配置しましょう。
私は円を配置しました。(色とかの設定は割愛!!)
先程のデータラベルのTextプロパティに設定した数式では各日付ごとの実施結果行数を取得していましたね。
そしてマークを表示する条件は結果が0より大きい時です。
ですので先ほどTextプロパティに設定した数式の一部を変更してVisibleプロパティに下記のように設定します。
はい、ちゃんとデータがある日のみ、マークが表示されましたね!
さっき作ったラベルはもういらないので削除しましょうー

現在までの正答数表示

次は現在までの正答数の表示です。
ユーザー名の表示は割愛、表示数の部分だけ解説します。
まずテキストラベルコントロールを配置しTextプロパティへ下記のように設定します。
正解不正解の結果が格納されているTorF列でtrueのもの、かつログインユーザーでフィルタした結果に対してCountRows関数を設定し、正答数をカウントしています。

はい、今回はTopスクリーン、Viewスクリーンで追加した機能について解説しました!
実際に運用をするときのことを考えると「今月の学習状況」や「今年の学習状況」「現在までの正答数表示」に関してはデータを取得してくるときの制限の500件は割とすぐに超えてしまうと思うのでこの辺はもう少し考えなきゃですね。

それでは皆さん良い業務ハックライフを~


免責事項