Tips No.006 【時間をバーで表示】

時間をバーで表示

公開日:2014/12/17

来店や来院の予約管理などのスケジュール管理システムの作成を依頼された際に「時間軸でスケジュールを可視化したい」という要望をいただいた事があります。その都度、複数のカスタム関数を駆使した大掛かりな仕組みを実装してきたのですが、今後も同様の要望をいただく可能性があるのではと思い、これを機により簡素化を図ってみようと試みました。

今回は、その結果の備忘としての意味合いも込めて、「時間軸でスケジュールを可視化させる」というTipsを紹介したいと思います。
なお、このTipsでは、時間軸を12時間、バーの表示 ( 棒グラフ ) を15分刻みとして、時間が重複している部分は、その重複数 ( スケジュールの過密度 ) によって色を変えてみることを前提条件にします。

では、実際にTipsのファイル内容を見ていきましょう。

■N006_TimeBar // 時間軸とバーを表示する親テーブル
[Fn_ID] - 番号自動採番の数字フィールド // 主キー
[Gi_起点時間] - 時刻タイプのグローバルフィールド // 時間軸の最初の時間
[Ci_時間表示] - 時刻タイプの計算フィールド ( 繰り返し数12 ) // 時間軸の表示
[Ct_時間グラフ] - テキストタイプの計算フィールド ( 繰り返し数48 ) // バーの表示

■N006_TimeBar_Sub // 時間を入力する子テーブル
[Fn_ID] - 数字フィールド // 親テーブルとのリレーションで使用
[Fi_開始時間] - 時刻フィールド
[Fi_終了時間] - 時刻フィールド
[Ct_対象時間] - テキストタイプの計算フィールド

以下、上記の内容を3つのポイントに分けて、要となるフィールドが「何をしているのか」を解説します。

ポイント1 - 時間を入力するフィールドについて
フィールド[Fi_開始時間] とフィールド[Fi_終了時間] には、フィールドオプションの「計算値自動入力」で、入力値が必ず「15分間隔」の時刻になるように設定しています。例えば「9:14」と入力された場合には強制的に「9:00」に、「9:18」と入力された場合には強制的に「9:15」に変わります。そのようにする理由は、前述のとおり、バーの表示を15分刻みに設定している為、そして特定の時刻を文字列として比較しなければならない必要がある為なのですが、これについては「ポイント3」で説明します。
なお、フィールド[Gi_起点時間] では「60分間隔」の時刻になるように設定しています。

ポイント2 - フィールド[Ct_対象時間] について
このフィールドでは、フィールド[Fi_開始時間] とフィールド[Fi_終了時間] に入力された時間を元にして、その間にある「15分間隔」の時刻の全てを返す処理をしています。フィールド値の先頭と、時刻と時刻の間に「半角スペース」を入れていますが、これについても「ポイント3」で説明します。

ポイント3 - フィールド[Ct_時間グラフ] について
今回のメイン、時間のバーを形成している繰り返しフィールドです。
先ず、フィールド[Gi_起点時間] と計算式繰り返し位置番号から「自身」が取得すべき時刻を把握、その時刻の先頭に「半角スペース」を付けて、それを文字列にしています。次に、その文字列が関連レコードのフィールド[Ct_対象時間] の値を「List関数」でつなぎ合わせた文字列の中で、いくつ該当するのかを判断します。結果、該当があれば「■」を表示し、加えて該当数によって文字色を変更させます。
「ポイント1」で記した特定の時刻でなければならない理由は、この文字列比較の処理の為です。そして「ポイント2」の「半角スペース」ですが、実はこれも文字列の比較が関係しています。
仮に、時刻が「9:15」の箇所の場合に、「9:15」をそのまま文字列比較をしてしまうと、本来取得してはならない時刻「19:15」の「9:15」までヒットしてしまいます。そこで誤認識を避ける為に、時刻の前に「半角スペース」を付けて文字列比較を行っています。

このTipsでは、バーを形成する為にテキストの「■」を用いて、最大重複数としては「3」までしか文字色対応をしていませんが、フィールド[Ct_時間グラフ]をオブジェクトタイプの計算フィールドに変更して、別途グローバルのオブジェクトの繰り返しフィールドを作成し、そこで保持させた色画像を、重複数によって使い分けて表示させるのも面白いかと思います。是非、挑戦してみてください。

今回のTipsはお役に立ちましたか?
そう言えば「グラフ」で思い出したのですが、FileMakerPro11から集計グラフを作成する事ができるようになりましたが、もうちょっと使い勝手を良くしてくれるといいのになあ、と思う今日この頃…今更ながら、使う機会がありまして…。

- ダウンロード -