新規投稿
フォローする

レコードの再利用と編集との区別について

青山と申します。

タイトルの通り、レコードの編集または再利用について

レコード詳細画面を開いた時点で「あれ?どっちだったかな?ということがあります。

再利用を押した際にポップアップし、

「新しくレコードを追加して作成しますか?」

はい いいえ

のような事は可能でしょうか?

0

7件のコメント

Avatar
Ryu Yamashita
新規登録画面の表示イベント(app.record.create.show)のeventオブジェクトにreuseというプロパティがありますので、これを利用すると対応可能かと思います。
 
kintone.events.on(['app.record.create.show'], function(event) {
if (event.reuse) {
var result = confirm('新しくレコードを追加して作成しますか?');
if (!result) {
// cancelの時には、画面遷移等の処理
}
}
return event;
});
Ryu Yamashitaにより編集されました
1
Avatar
青山昌司

山下様

ご返信ありがとうございます。

ダイヤログのキャンセルを選択したときに、開いたレコードを閉じることはできますでしょうか?

 

 

0
Avatar
Ryu Yamashita

キャンセルボタン相当の動きを取ろうとすると、再利用元のレコードの詳細表示画面に遷移させられますので、これに合わせようとすると、現状では

 

(1) (詳細画面表示イベントで)Webストレージに再利用元のURLを保持しておき、これを利用して遷移させる

(2) URLの?record=xxxが再利用元のレコードIDなので、これを利用して再利用元のURLを生成して遷移させる

(3) キャンセルボタンのクリックボタンを発火させる

 

の3パターンくらい考えられそうですが、手軽ですが(2)、(3)はアップデート耐性が低いので、(1)がいいのかなぁと思います。

0
Avatar
青山昌司

山下様

ご返信ありがとうございます。

いろいろ方法があるのですね。

今回下記の様にしたいと考えていますが、

上記(1)を選択するときに書くサンプルコードがあればご教授頂きたいのですが

参考になるものはご存知でしょうか?

よろしくお願いいたします。

kintone.events.on(['app.record.create.show'], function(event) {
if (event.reuse) {
var result = confirm('注:編集画面ではありません。新しくレコードを追加して作成しますか?');
alert('OKが押されました。作業を続けてください。');
} else {
alert('キャンセルが押されました。再度編集を行ってください。');
}
}
return event;
});

0
Avatar
Ryu Yamashita

特にサンプルは持ち合わせていませんので、ちょっと書いてみると次のような感じではないでしょうか。WebStorageや画面遷移の方法はググればより色々情報が得られると思います。

 

kintone.events.on(['app.record.detail.show'], function(event) {
window.localStorage.setItem('reuse', location.href);
return event;
});

kintone.events.on(['app.record.create.show'], function(event) {
if (event.reuse) {
var result = confirm('注:編集画面ではありません。新しくレコードを追加して作成しますか?');
alert('OKが押されました。作業を続けてください。');
} else {
alert('キャンセルが押されました。再度編集を行ってください。');

var url = window.localStorage.getItem('reuse');

window.localStorage.removeItem('reuse');

location.href = url;
}
}
return event;
});

0
Avatar
青山昌司

山下様

ご返信ありがとうございます。

URLを仮に”https://test.cybozu.com/k/100/"としましたが

表示されません。何か原因はありますでしょうか?

よろしくお願いいたします

(function() {
"use strict";
kintone.events.on(['app.record.detail.show'], function(event) {
window.localStorage.setItem('reuse', location.href);
return event;
});
kintone.events.on(['app.record.create.show'], function(event) {
if (event.reuse) {
var result = confirm('注:編集画面ではありません。新しくレコードを追加して作成しますか?');
alert('OKが押されました。作業を続けてください。');
} else {
alert('キャンセルが押されました。再度編集を行ってください。');
var url = window.localStorage.getItem('reuse');
var url = window.localStorage.removeItem('reuse');
location.href = "https://test.cybozu.com/k/100/";
}
return event;
});
})();

青山昌司により編集されました
0
Avatar
Ryu Yamashita

ifはる部分がおかしいですね。失礼しました。

 

(function() {
"use strict";
kintone.events.on(['app.record.detail.show'], function(event) {
window.localStorage.setItem('reuse', location.href);
return event;
});

kintone.events.on(['app.record.create.show'], function(event) {
if (event.reuse) {
var result = confirm('注:編集画面ではありません。新しくレコードを追加して作成しますか?');
if(result){
alert('OKが押されました。作業を続けてください。');
}else {
alert('キャンセルが押されました。再度編集を行ってください。');
var url = window.localStorage.getItem('reuse');
var url = window.localStorage.removeItem('reuse');
location.href = "https://test.cybozu.com/k/100/";
}
}
return event;
});
})();

 

ちなみに、飛ばし先をアプリのトップ(決まったリンク)にするので良ければ、Webストレージの利用は不要ですね。

0
サインインしてコメントを残してください。