〇ループせずに下記の仕様を組み込むことは可能でしょうか。
ーーーーー
「コピー」フィールド(Type:CHECK BOX)にチェックが入ったら
同じ行の「コピー_2」フィールド(Type:CHECK BOX)にチェックを入れ
行をコピーし、次の行に追加する。
また、「コピー_2」フィールド(Type:CHECK BOX)にチェックが入ったら
同じ行の「コピー」フィールド(Type:CHECK BOX)にチェックを入れ
行をコピーし、次の行に追加する。
〇下記の論理でコードを作成してみましたが、ループしてしまいます。
ーーーーー
「コピー_2」フィールドにチェックを入れた際に
「コピー」フィールドにチェックが入っていれば、何もしない
「コピー」フィールドにチェックが入っていなければ、チェックを入れる
⇒「コピー」フィールドにチェックが入ることで前行をコピーした行が追加される
「コピー」フィールドにチェックを入れた際に
⇒「コピー」フィールドにチェックが入ることで前行をコピーした行が追加される
「コピー_2」フィールドにチェックが入っていれば、何もしない
「コピー_2」フィールドにチェックが入っていなければ、チェックを入れる。
〇コードを記載致します。
ーーーーー
コード①
(function () {
"use strict";
const table = '運行記録TBL';
const changeRowIndex = (event) => {
let record = event.record;
for (let i = 0; i < record[table].value.length; i++) {
if (event.changes.row === record[table].value[i]) return i;
}
return (record[table].value.length - 1);
}
const events = [
'app.record.create.change.コピー',
'app.record.edit.change.コピー',
];
kintone.events.on(events, function(event) {
const record = event.record;
let rowIndex = changeRowIndex(event);
let gyosu = Number(event.record[table].value.length-1);
if (record[table].value[gyosu].value.コピー_2.value !== ['✓']) {
record[table].value[gyosu].value.コピー_2.value = ['✓']
} else if (record[table].value[gyosu].value.コピー_2.value == ['✓']) {
;
};
if (event.changes.field.value.length !== 0) {
event.changes.row.value.コピー.value = ['✓'];
const originData = JSON.parse(JSON.stringify(event.changes.row.value)); //コピー元のデータを一度文字列に変換する
Object.keys(originData).forEach((code) => { //値がない場合はvalue情報を空文字で作成
if(!originData[code].value){
originData[code].value = "";
}
});
const addRowData = { "value": originData }; //コピーを挿入するテーブル行のデータを作成
//以下、コピー後に値を空にする
addRowData.value.コピー.value = [];
addRowData.value.品種.value = "";
addRowData.value.品名ルックアップ.value = "";
var newRow = event.record[table]['value'].push(addRowData); //指定された行のデータをeventオブジェクトの既存テーブル最下行に挿入
setTimeout(() => {
jQuery('.gaia-ui-decimal-input-input input').attr('type', 'number');
}, 0);
return event;
}
return event;
});
})();
コード②
(() => {
'use strict';
let table = '運行記録TBL';
kintone.events.on(
['app.record.create.change.コピー_2',
'app.record.edit.change.コピー_2'
], event => {
let record = event.record;
let gyosu = Number(event.record[table].value.length)-1
if (record[table].value[gyosu].value.コピー.value !== ['✓']) {
record[table].value[gyosu].value.コピー.value = ['✓']
} else if (record[table].value[gyosu].value.コピー.value == ['✓']) {
;
};
return event;
}
);
})();