|10| 実習生割り振り・アニメーション

SampleDB_09.zip サンプルをダウンロード
Sample_SlideControl.zip サンプルをダウンロード

今回は実習生を受入先に割り振るレイアウトを作ります。

受入先を選択して実習生を割り振ることになります。文字で書くと簡単な気がしますが、視覚的に分かりやすいレイアウトを作るのは難しい気がします。アニメーションを取り入れて、分かりやすくすることにします。

インターフェース・アニメーション

 

受入先を選択すると、その住所と割り振られている他の実習生が表示され、割り振りたい実習生を選択してボタンを押すという仕組みです。


実習生のポータルは実習生が割り振られている時には背景がブルーになるようにしています。実習生は受入先が未定か決定かによって絞り込めるようにしてあり、受入先を調べる時には決定者に絞り込んだ上で実習生を選択すると割り振られた受入先が表示されるような仕組みです。

実習生を割り振るボタンの表示非表示ですが、受入先が選択され、かつ選択された実習生が未定の時だけ表示される仕組みです。これで不用意に受入先IDが上書きされることはなくなります。

スクリプト一時停止

実習生のポータルが「未定」にされていて、実習生を受入先へ割り振ると「未定」のポータルから対象外にすることになります。

実習生を割り振ったり、受入先から外したりするときに瞬時に画面から見えなくなると作業者が戸惑うかもしれません。目視しやすいようにスクリプト一時停止/続行を使って1秒のタイムラグを作っています。

ひとつのレイアウトの中で様々な状況の情報を表示させているので、インターフェースの仕組みは複雑です。現場での作業者に何度も試してもらいながら作業の流れを整理していくことが大切です。

ポータルの輪郭線を隠す

 

画面キャプチャ

受入先のポータルより背面に少し重ねてスライドコントロールを配置しても、その間に1本のラインが現れてしまいます。どうしても、このラインを見せないようにしてポータルのリストで選択された受入先とスライドパネルを一体化したいと考えました。

 

画面キャプチャ

サンプルでは、ポータルの右端の輪郭に重ねるように1ptのスライドパネルと同じ色の線を配置しています。しかし、スライドパネルの上端とポータルの上端が同じ高さなのでこのままでは線がポータルの中にあることになりポータルの右端の輪郭を隠してくれません。線をポータルの上端より上に伸ばして、上にはみ出している部分にポータルを囲む大きな枠の輪郭と同じ色の線をかぶせることで上に伸びた部分を隠しています。このままですと受入先を選択していない状態でもこの濃いグレーの線が見えてしまうので、受入先が選択されていない状態で線自体を隠すようにしています。ここではuiz02_セレクタ::uiz02_g_受入先IDが空の時に隠しています。

 

画面キャプチャ

これでスッキリと繋がりました。少し懲りすぎかもしれませんが、FileMakerはインターフェースを作りやすいので出来るだけ自然に振る舞えるように作り込みたいと思っています。

左から右へのスライドコントロール

 

スライドコントロールは色々とやってみましたが、右から左へのスライドしかできないようです。左から右へスライドさせる方法として表示したいパネルを1枚目にレイアウトし、2枚目のパネルには何もレイアウトせず背景を透明にしています。初期状態で透明な2枚目のパネルを表示させておき、1枚目のパネルに移動させれば、2枚目のパネルが閉じられる形になるので1枚目のパネルが左から右へスライドします。表示させたいパネルが複数になるとスクリプトが複雑になりますが、ユーザーインターフェースを考えると有効な方法だと思います。

Sample_SlideControl.zip サンプルをダウンロード

セレクタ・コネクタ

 

画面キャプチャ

このレイアウトでは異なるテーブルの情報が必要なために6個のリレーションを利用して必要な情報を表示しています。1個は現在のテーブルのポータルで残りはセレクタを利用したものです。

A.実習生のポータルは現在のレコードのポータルで検索によって、動的ポータルを実現しています。
B.受入先の実習生ポータルはslex_a02_実習生_受入先IDTOです。
C.受入先のポータルはslex_c03_受入先_実習IDTOでポータルフィルターによって、動的ポータルを実現しています。
Dの受入先名称と割り振られた実習生数はsl_c03_受入先TOのフィールドになっています。実習生数については計算で求めているのですが後で書きます。
E/Fの受入先住所は親になるテーブルが実習先か管理団体かで異なってきます。受入先には実習先か管理団体どちらかのIDが格納されているのでそのIDによってFのsl_c01_実習先TOかEのsl_c02_管理団体TOから表示しています。

以前はこのようなリレーションを組むのはかなり苦労していましたが、セレクタ・コネクタを利用するようになって楽になりました。

データベース本体でのリレーション

 

画面キャプチャ

今までは、データベースの本体である実習管理ファイルの中ではリレーションを組んでいませんでした。これは様々なデータが格納されている本体を運用中にできるだけ停止することなくメンテナンスするための仕組みです。ui_実習管理ファイルのテーブルではグローバルフィールドが殆どでデータの実態がなく、レイアウトと様々な情報を表示するためのリレーションがあるだけなのでいつでも短時間で差し替えが可能なのです。

しかし、計算フィールドを利用するには本体にそのようなフィールドを設定するしかありません。他のテーブルのレコード数を計算するにはリレーションを組む必要があります。
1件の受入先の人数を計算するだけであれば計算フィールドを利用せず、検索でレコード数を確定してui01_実習管理のグローバルフィールドに格納してもいいのですが、ポータルのリストに表示された全ての受入先に割り振られた実習生数を表示させるには一時的な手法は使えません。

データベース本体にリレーションを組んで計算するしかないのです。
データベース本体の実習管理ファイルでc03_受入先TOとc03_a02_実習生TOにリレーションを組み、c03_受入先テーブルで割り振られた実習生を計算するフィールドを設定しています。


集合住宅の写真

横浜の建築設計事務所に伺った折の写真。
事務所がある建物は有機的な局面を持ち、吹き抜けの空間は路地裏のような雰囲気の中庭でした。
iPhone 6S 4.20mm ISO25 1/1500 F2.2 P
jpg
2019/4 Yokohama City