(著者:サイボウズ 北川 恭平)
はじめに
今回は、2016年5月のアップデートで追加された、削除イベントのキャンセル機能の使いどころについて紹介したいと思います。
今までは削除イベントはキャンセルできなかったため、JavaScriptで削除の制御をすることができませんでしたが、この機能実装によって例えば「削除可の決済がおりていなければ削除できない」といったカスタマイズが可能になります。
おさらいしておきますと、削除イベントのキャンセル対応が入ったイベントは下記2つになります。
では、実際にサンプルコードを交えて試していきたいと思います。
アプリの準備
今回は削除キャンセルを試すために、アプリストアから「レンタル機器管理」アプリを追加し、下記のフィールドを追加しました。
フィールドタイプ | フィールド名 | フィールドコード | 項目と順番 |
チェックボックス | 削除承認 | delete_flag | 可 |
アプリを作成したら、レコードを1件登録しておきましょう。
サンプルコード
では早速、試していきたいと思います。
今回のアップデートでは、以下2つのイベントに対して削除イベントをキャンセルできるようになっています。
- app.record.detail.delete.submit
- app.record.index.delete.submit
削除キャンセルできるパターンは、上記イベントハンドラ内で以下の3つの処理の場合の時に可能です
1. return falseした場合
2. event.errorにメッセージを代入して、return eventする
3. thenableなオブジェクトを返す場合はresolve(false)するか、event.errorをセットして、resolve(event)する
今回は、2つめのevent.errorにメッセージを代入してreturn eventをしてみます。
動作確認
ではサンプルコードを、kintoneに適用して動きをみてみたいと思います。
「承認」フィールドにチェックを入れない状態で、レコード詳細画面から「削除」をしてみます。
画面にエラーメッセージが出て、削除がキャンセルされれば成功です。
逆に、「承認」フィールドにチェックを入れた状態で削除してみます。
レコードが削除されました。
さいごに
今回はPromiseを使ったパターンは紹介しませんでしたが、例えばレコードを削除する時に関連したレコードも一緒に消したいときなどに、エラーハンドリングがしやすくなるんじゃないかと思います。
実際に活用してみてください。
このTipsは、2016年5月版で確認したものになります。
記事に関するフィードバック
記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。