JavaScript・HTML・CSS初心者です。
関連レコード一覧で参照している値を、アプリの一覧画面に表示したうえで、アプリの一覧画面の絞り込み条件に利用できる様にしたいです。
こちらのURL参照し、参照元アプリの関連レコードを取得することはできています。
こちらのURLも参照しましたが、自分の思う部分をどう切り出すべきかわかっておりません。
目的
アプリAの各レコードに登録されている"担当者"を、アプリBから関連レコード一覧機能で参照しています。
アプリBの一覧画面では、参照した"担当者"を一覧画面にも表示したうえで、一覧表示の絞り込み条件にも使用したいです。(アプリBのフィールドに、関連レコードの値がそのままペーストされるようなイメージが一番望ましいです)
実装優先度的には、一覧表示の絞り込み条件に使用することが最優先です。絞り込みにさえ利用できれば、一覧画面に表示はできなくても構いません。
アプリAとアプリBのレコードは、同一キー値を持つ、1対nの関係です。
アプリA
キー[123] 担当者[XXX]
キー[456] 担当者[YYY]
アプリB
キー[123] 関連レコード[担当者[XXX]]
キー[123] 関連レコード[担当者[XXX]]
キー[123] 関連レコード[担当者[XXX]]
キー[456] 関連レコード[担当者[YYY]]
キー[456] 関連レコード[担当者[YYY]]
キー[456] 関連レコード[担当者[YYY]]
よろしくお願いいたします。
(function () {
"use strict";
kintone.events.on(['app.record.detail.show', 'app.record.edit.show'], function (event) {
// まず、アプリのフィールド設定を取得しておく
RelatedRecordsFieldManager.prototype.getFieldProperties().then(function () {
// 関連する一覧のレコードを取得する
(new RelatedRecordsFieldManager('担当者')).getRecords(event.record).then(function (records) {
//ここに処理の続きを書くと理解しています。
});
});
});
// コンストラクタ定義
var RelatedRecordsFieldManager = (function(fieldCode){
function RelatedRecordsFieldManager(fieldCode) {
this.fieldCode = fieldCode;
this.targetAppId = kintone.app.getRelatedRecordsTargetAppId(fieldCode);
this.property = this.fieldProperties[fieldCode].referenceTable;
}
RelatedRecordsFieldManager.prototype = {
selfAppId: kintone.app.getId(),
records: [],
limit: 500,
offset: 0,
getFieldProperties: function(){
return kintone.api(kintone.api.url('/k/v1/app/form/fields', true), 'GET', {
app: RelatedRecordsFieldManager.prototype.selfAppId,
}).then(function(response){
RelatedRecordsFieldManager.prototype.fieldProperties = response.properties;
});
},
query: function(record){
return (
this.property.condition.relatedField +
'="' +
record[this.property.condition.field].value +
(this.property.filterCond ? '" and ' : '"') +
this.property.filterCond
);
},
getRecords: function(record){
var _this = this;
return kintone.api(kintone.api.url('/k/v1/records', true), 'GET', {
app: this.targetAppId,
query:
this.query(record) +
' order by ' + this.property.sort +
' limit ' + this.limit +
' offset ' + this.offset
}).then(function(response){
_this.records = _this.records.concat(response.records);
_this.offset += response.records.length;
if(response.records.length === _this.limit){
return _this.getRecords(record);
}else{
return _this.records;
}
});
}
}
return RelatedRecordsFieldManager;
})();
})();