まだ、ユーザーフレンドリーに欠ける点があるが、一応、CRUD(新規データ保存、データ取得、データ更新、データ削除)が出来るアプリとなった。「Save」「Update」「Delete」ボタンをタップした後、最新のデータがリアルタイムで表示されるようになった。しかし、タイミングが合わない場合は、「NOT FOUND」と表示されることがたまにある。
例えば、データ保存の場合、「保存」=> 「Tag(ID)リストの取得」=> 「データの取得」と3回データベースとの間にやりとり(セッションと言った方がいいのかな)があるが、データベース側で保存の処理が終了しないのに、データ取得をしようとしたりするのが原因ではないかと思う。確かなことは分からない。
ネットワークでは、多分こんなことはよく起こることだと思うので、このような場合のエラー処理を検討したい。そう言えば、今まで、まともにエラー処理は考えたことがない。(response codeが200の場合-成功-を除いて。これはチュートリアルに記述してあったので、そのまま使っているだけ)
実行画面(これは、たまたま上手く行った時のキャプチャー):
スクリーンのデザイン:
「Delete」ボタンと「Reset」ボタンを追加した。
プログラム(ブロック):
「Delete」ボタンに関係のある部分のみ
1. ボタンのオリジナルカラーである薄緑色を返してくれる procedure "originalGreenColor" を定義。procedureには2種類ある。「return」があるprocedureは、procedure の結果を返してくれる。「do」はprocedureを実行するだけ。
procedure "updateData" はボタンを初期の状態に戻すもの。
2. データを削除
Web4 componentのターゲットとするURLにIDをセットする。
HTTP DELETEリクエストにより同IDも持つデータを削除。
その後、再度削除後のTagリスト(callGetTag)、そして削除後のデータ(getData)を取得しListViewに表示することになる。
Clockを使って、800ミリ秒の余裕を設け、タイミングを調節している。
まだまだ課題はありそう。