(function () {
'use strict';
// カスタマイズ対象テーブル
const TABLE_CODE = 'テーブル';
// 要素スタイル変更用フィールド
const CHECK_CODE = '判定欄';
// ルックアップ自動取得用
const LOOKUP_CODE = 'ルックアップ';
const LOOKUP_TABLE_CODE = ['工具1', 'トルクチェッカー1', '作業者_開始_1'];
// ルックアップ一括取得用
const LOOKUP_TABLE_CODE_3 = '作業者_開始_1';
const HANDLE_CODE = 'ルックアップ変更イベント発火用';
const CALC_CODE = '計測値_開始';
let isPUT = false;
// レコード追加画面表示時
kintone.events.on('app.record.create.show', function (event) {
try {
// ルックアップ自動取得
fetchLookup(event);
// フィールド非表示
disabledField(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
};
});
// レコード編集画面表示時
kintone.events.on('app.record.edit.show', function (event) {
try {
// フィールド非表示
disabledField(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
};
});
// レコード追加画面フィールド変更イベント
kintone.events.on(`app.record.create.change.${HANDLE_CODE}`, function (event) {
try {
// ルックアップ一括取得
bulkGetLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード編集画面フィールド変更イベント
kintone.events.on(`app.record.edit.change.${HANDLE_CODE}`, function (event) {
try {
// ルックアップ一括取得
bulkGetLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード追加画面フィールド変更イベント
kintone.events.on(`app.record.create.change.${TABLE_CODE}`, function (event) {
try {
// ルックアップ一括取得
bulkGetLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード編集画面フィールド変更イベント
kintone.events.on(`app.record.edit.change.${TABLE_CODE}`, function (event) {
try {
// ルックアップ一括取得
bulkGetLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード詳細画面表示時
kintone.events.on('app.record.detail.show', function (event) {
try {
if (isPUT) {
location.reload();
};
// スタイル変更
changeStyle(event);
// フィールド非表示
disabledField(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード追加保存成功後
kintone.events.on('app.record.create.submit.success', async function (event) {
try {
// ルックアップ削除
await deleteLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// レコード編集保存成功後
kintone.events.on('app.record.edit.submit.success', async function (event) {
try {
// ルックアップ削除
await deleteLookup(event);
return event;
} catch (error) {
window.alert('error');
console.log(error);
return event;
}
});
// ルックアップ自動取得
function fetchLookup(event) {
if (decodeURI(location.href).includes('?action=')) {
event.record[LOOKUP_CODE].lookup = true;
const targetTable = event.record[TABLE_CODE].value;
targetTable.forEach(element => {
LOOKUP_TABLE_CODE.forEach(e => {
element.value[e].lookup = true;
});
});
};
}
// ルックアップ一括取得
function bulkGetLookup(event) {
const targetTable = event.record[TABLE_CODE].value;
const targetValue = targetTable[0].value[LOOKUP_TABLE_CODE_3].value;
const firstId = targetTable[0].id;
if (targetValue === '' || firstId !== event.changes.row.id) {
return;
};
for (let i = 1; i < targetTable.length; i++) {
targetTable[i].value[LOOKUP_TABLE_CODE_3].value = targetValue;
targetTable[i].value[LOOKUP_TABLE_CODE_3].lookup = true;
};
}
// スタイル変更
function changeStyle(event) {
// 要素取得
const checkFieldEl = kintone.app.record.getFieldElement(CHECK_CODE);
if (event.record[CHECK_CODE].value === 'OK') {
// 背景青、フォント白
checkFieldEl.style.background = 'blue';
checkFieldEl.style.color = 'white';
} else if (event.record[CHECK_CODE].value === 'NG有') {
// 背景赤、フォント白
checkFieldEl.style.background = 'red';
checkFieldEl.style.color = 'white';
};
}
// 保存後ルックアップ削除
async function deleteLookup(event) {
const body = {
app: kintone.app.getId(),
id: event.record.$id.value,
record: {
[TABLE_CODE]: {
value: []
}
}
};
const targetTable = event.record[TABLE_CODE].value;
let flag = false;
for (let i = 0; i < targetTable.length; i++) {
if (targetTable[i].value[CALC_CODE].value === '' || targetTable[i].value[CALC_CODE].value === null || targetTable[i].value[CALC_CODE].value === undefined) {
body.record[TABLE_CODE].value.push(
{
id: targetTable[i].id,
value: {
[LOOKUP_TABLE_CODE_3]: {
value: ''
}
}
}
);
flag = true;
} else {
body.record[TABLE_CODE].value.push(
{
id: targetTable[i].id,
value: {}
}
);
};
};
if (flag) {
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT', body);
isPUT = true;
};
}
// フィールド非表示
function disabledField(event) {
kintone.app.record.setFieldShown(HANDLE_CODE, false);
}
})();