複数条件に対応した表示(この番号ならこの名前…)をさせたい からディスカッションを続行:
以前上記でご回答いただきまして助かりました。
自身の勉強のため解説を追記して再度返信と思ったらクローズとなっていたので新規で…
理解しきれていない部分もあり、おおざっぱなのですが解説内容あっておりますでしょうか
理解とためのトピックで大変申し訳ありませんがよろしくお願いいたします。
( @y_minamitani9534 さま いつもありがとうございます。)
(() => { //定数/変数名 = (引数) => { 処理 }; アロー関数、functionの代わり
//はじめようJavaScript第10回にある(メモ)
"use strict";
let revisionCheck = (event) => {
return kintone.api(kintone.api.url('/k/v1/record', true), 'GET', { //returnないと終わっちゃう 保存を待つ
//kintone REST API リクエストを送信する レコードを取得 出来たら…
app: kintone.app.getId(), //アプリIDを取得
id: kintone.app.record.getId(), //レコードIDを取得
}).then((response) => { //取得出来たら…
return event.record.$revision.value === response.record.$revision.value; //さっきのやつを更新する?(リビジョン番号は更新履歴1なら新規、2以上が更新)
});
};
let changeState = (editing) => {
let result;
switch (kintone.getLoginUser().id) { //ログインユーザーID取得
case '2': //2なら… 3なら…
result = '佐藤さんが編集中!';
break; //2がもしいたら終了するbreak
case '3':
result = '鈴木さんが編集中!';
break;
case '4':
result = '高橋さんが編集中!';
break;
case '5':
result = '小林さんが編集中!';
break;
case '6':
result = '田中さんが編集中!';
break;
default: //なんでもなかったら
result = '編集OK!';
break;
}
return kintone.api(kintone.api.url('/k/v1/record', true), 'PUT', { //PUTでレコード内容を更新
app: kintone.app.getId(), //アプリIDを取得
id: kintone.app.record.getId(), //レコードIDを取得
record: {
編集中: {
value: editing ? kintone.getLoginUser().id : 0 //IDが0なら誰フィールド編集OK
},
誰:{
value: editing ? result : '編集OK!'
},
}
});
};
kintone.events.on(['app.record.detail.show',], (event) => { //レコード詳細画面を表示したとき、ページ送り、保存、キャンセル
revisionCheck(event).then(function (revisionMatch) { //リビジョン番号がいい感じならリロード?
if (!revisionMatch) location.reload();
});
return event;
});
kintone.events.on(['app.record.edit.show',], (event) => { //レコード編集画面を表示したとき
revisionCheck(event).then(function (revisionMatch) { //リビジョン番号がいい感じならリロード?
if (!revisionMatch) {
location.reload(); return;
}
if (Number(event.record.編集中.value)) { //編集中の番号と今のログインユーザーがイコールか
if (event.record.編集中.value !== kintone.getLoginUser().id) {
alert('ほかのユーザーが編集中ですよ!'); history.back(); return; //違ったらアラートを出す
} document.getElementsByClassName('gaia-ui-actionmenu-cancel')[0].addEventListener('click', function () { //編集画面キャンセルをする 一致しなければしない クリックしたときに発動
changeState(false).then(function () {
location.reload();
})
}); window.addEventListener('beforeunload', function (e) { //ページがアンロードされる直前に発動
changeState(false);
}); window.addEventListener('unload', function (e) { //ページがアンロードされるときに発動
changeState(false);
});
} else {
changeState(true).then(function () {
location.reload(); //リロードする
});
}
});
return event;
});
kintone.events.on(['app.record.edit.submit.success',], (event) =>{ // レコード編集画面で【保存】をクリックし、サーバーの保存が成功したとき
changeState(false);
return event;
});
kintone.events.on(['app.record.detail.show',], (event) => { //レコード詳細画面を表示したとき、ページ送り、保存、キャンセル
revisionCheck(event).then((revisionMatch) => { //その時リビジョン番号が一致したらリロード?
if (!revisionMatch) location.reload();
});
return event;
});
kintone.events.on(['app.record.edit.submit.success',], (event) => { // レコード編集画面で【保存】をクリックし、サーバーの保存が成功したとき
changeState(false);
return event;
});
})();