背景・実現したいこと
一覧画面に更新ボタンを設置し、関連レコード集計値(数値フィールド)を一覧画面で更新したいです。
① こちらの記事を拝見し、関連レコード集計値を数値フィールドに表示しました。
②こちらの記事を拝見し、更新ボタンを設置しました。
upbateボタンをクリックしても集計値の変更はされません。(各レコードの編集画面を開き、保存すると更新されます。)
修正点をご教授いただけますと幸いです。
エラー情報 (開発者ツールのコンソール)
コンソールには表示されません。
利用したソースコード
①
ちなみに、レコード編集画面で該当の文字列フィールドの値から関連レコードが正しく表示されますが、集計は保存実行後でないとされません。
‘app.record.create.show’, ‘app.record.edit.show’,のイベント表記は働かないのでしょうか?
(function() {
"use strict";
kintone.events.on([
'app.record.create.show',
'app.record.edit.show',
'app.record.create.submit',
'app.record.edit.submit'
], function(event){
return new kintone.Promise(function(resolve){
RelatedRecordsFieldManager.prototype.getFieldProperties().then(function(){
(new RelatedRecordsFieldManager('関連レコード')).getRecords(event.record).then(function(records){
event.record.売上.value = records.reduce(function(sum, record){
return sum + Number(record.会計売上.value);
}, 0);
resolve(event);
});
});
});
});
}());
②(参考記事から変更しておりません。)
(function() {
"use strict";
var getRecords = function(app, tmpRecords){
var limit = 500;
var tmpRecords = tmpRecords || [];
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: app,
query: 'limit ' + limit +' offset ' + tmpRecords.length
}).then(function(response){
tmpRecords = tmpRecords.concat(response.records);
return response.records.length === limit ? getRecords(app, tmpRecords) : tmpRecords;
});
}
var putRecords = function(app, records){
var limit = 100;
return kintone.Promise.all(
records.reduce(function(recordsBlocks, record){
if(recordsBlocks[recordsBlocks.length - 1].length === limit){
recordsBlocks.push([record]);
}else{
recordsBlocks[recordsBlocks.length - 1].push(record);
}
return recordsBlocks;
}, [[]]).map(function(recordsBlock){
return kintone.api(kintone.api.url('/k/v1/records', true), 'PUT', {
app: app,
records: recordsBlock
});
})
);
}
kintone.events.on('app.record.index.show', function(event){
if(document.getElementById('updateButton') !== null) return;
var button = document.createElement('button');
button.innerHTML = 'update';
button.id = 'updateButton';
kintone.app.getHeaderMenuSpaceElement().appendChild(button);
button.addEventListener('click', function(){
getRecords(kintone.app.getId()).then(function(records){
putRecords(kintone.app.getId(), records.map(function(record){
return {
id: record.$id.value,
record: {}
};
})).then(function(){
alert('updated');
location.reload();
});
});
});
return event;
});
})();