新規投稿
フォローする

文字の結合の実行タイミング

文字列の結合について

現在下記のコードを使って文字列の結合をしているのですが対象のコードを編集した時のみしか結合されません。

その他のコード、何かしらの編集があった場合は、必ず文字コード結合、実行されるようにすればどのようにすればいいでしょうか。

自分なりにイベント等の追加を試みたのですが、なかなか実装する事ができず相談させていただきました。

 

tiltle1にAAAとBBBを結合する

tiltle2にCCCとDDDを結合する

その他のコード(例えば、EEE、FFF、日付のレコード等)を編集した時も実行するようにしたいです。

AAA、BBBを編集した時はtitle1に再結合してくれますが

その他のコードを編集した時には変更、再実行してくれません。

アドバイスをいただけると助かります。

//////////////////////

(function() {
"use strict";

var fields = [
{ to: 'title1', from: [ 'AAA',BBB'], sep: ' ' },
{ to: 'title2', from: [ 'CCC',DDD'], sep: ' ' },
// { to: '文字列D1', from: [ '文字列A1','文字列B1','文字列C1','文字列C2' ], sep: '' }
];

// 追加、編集画面表示イベント
kintone.events.on(['app.record.create.show','app.record.edit.show','app.record.index.edit.show','app.record.edit.change.施設予約','app.record.edit.change.施設予約'], function (event) {
var record = event.record;
for (var i = 0; i < fields.length; i++) {
record[fields[i].to]['disabled'] = true;
}
return event;
});


// text change イベント
var changeType = {};
for (var i = 0; i < fields.length; i++) {
for (var j = 0; j < fields[i].from.length; j++) {
changeType['app.record.create.change.' + fields[i].from[j]] = i;
changeType['app.record.edit.change.' + fields[i].from[j]] = i;
changeType['app.record.index.create.change.' + fields[i].from[j]] = i;
changeType['app.record.index.edit.change.' + fields[i].from[j]] = i;
}
}
var changeEvents = Object.keys(changeType);
kintone.events.on(changeEvents, function(event) {
var record = event.record;
var pno = changeType[event.type];
var to = fields[pno].to;
var sep = fields[pno].sep;
record[to].value = concatText(fields[pno].from, sep);
return event;

function concatText(pArray, pSeparator) {
var str = '';
for (var i = 0; i < pArray.length; i++) {
if (record[pArray[i]].value) {
if (str) {
str += pSeparator;
}
str += record[pArray[i]].value;
}
}
return str;
}

});
})();

0

1件のコメント

Avatar
Ryu Yamashita

課題は

> 対象のコードを編集した時のみしか結合されません

ということかと思いますが、結合対象の組み合わせの加除に対して柔軟性をもたせたいということでしょうか。ということであれば、文字列結合プラグインの利用、もしくはそれを参考に拡張を行うのが良いかと思いますが、いかがでしょうか。

0
サインインしてコメントを残してください。