特定条件でレコード削除をキャンセル!

フォローする

(著者:サイボウズ 北川 恭平

はじめに

今回は、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月版で確認したものになります。

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

ログインしてコメントを残してください。
Powered by Zendesk