新規投稿
フォローする

ラジオボタン、チェックボックスを利用して数値カウントする

kintoneラジオボタン、チェックボックスを利用したカウント機能について質問です。

■現状

・kintoneラジオボタン、チェックボックスを利用して選択肢を選択した際、

グラフの「表」にて選択数の数値カウントが出来ない。

 

■行いたいこと

・kintoneラジオボタン、チェックボックスを利用して選択肢を選択した際、

グラフの「表」にて選択数の数値カウントを行いたい。

 

■案

kintoneラジオボタン、チェックボックスを利用して選択肢を選択した際、

選択した内容を別フィールドで数値としてカウントできれば、表で数値のカウントが可能。

 

■質問

案、が実現できるようなJavaScriptの記述を教えていただきたいです。

 

以上です。

アドバイスや似たようなTopicがございましたら教えていただけると助かります。

0

24件のコメント

Avatar
rex0220

Yuriko.M さん

ちょっとおもしろそうなので、試作してみました。
{ from: 'ラジオボタン', to: '数値1' }, の Form,to に、フィールドコードを指定してください。
チェックボックスは、複数選択できますので、とりあえず合計値にしています。
数値項目は、非表示にしましたが、表示したい場合は、処理を削除してください。


(function() {
"use strict";

var fields = [
{ from: 'ラジオボタン', to: '数値1' },
{ from: 'チェックボックス', to: '数値2' },
{ from: 'ドロップダウン', to: '数値3' },
];
kintone.events.on(["app.record.detail.show","app.record.edit.show","app.record.create.show"], function(event) {
fields.map(function(field) {
kintone.app.record.setFieldShown(field.to, false);
})
return event;
});
kintone.events.on(["app.record.edit.submit","app.record.create.submit","app.record.index.edit.submit"], function(event) {
var record = event.record;
fields.map(function(field) {
var value = record[field.from].value;
if (Array.isArray(value)) {
record[field.to].value = value.reduce(function(previous, current, index) {
return previous + (current ? Number(current) : 0);
}, 0);
}
else {
record[field.to].value = (value ? Number(value) : 0);
}
})
return event;
});
})();
0
Avatar
Yuriko.M

rex0220さま

回答と試作ありがとうございます。確認させていただきます。

 

0
Avatar
Shoji Shinoda

同じ質問で、ここにたどり着きました。

私は、チェックボックス内に、チェックされている数を知りたいので、次のようにしましたが、データの保存ができなくなりました。

FCheckがチェックボックスのフィール名、FPointがチェックされた数を登録する数値フィールドのフィールド名です。

Javascriptを理解しないまま、サンプル等のスクリプトを改造しています。
誤っている箇所をご教示頂ければ助かります。よろしくお願いいたします。

(function() {
"use strict";

var fields = [
{ from: 'FCheck', to: 'FPoint' },
];
kintone.events.on(["app.record.detail.show","app.record.edit.show","app.record.create.show"], function(event) {
fields.map(function(field) {
kintone.app.record.setFieldShown(field.to, false);
})
return event;
});
kintone.events.on(["app.record.edit.submit","app.record.create.submit","app.record.index.edit.submit"], function(event) {
var record = event.record;
fields.map(function(field) {
var value = record[field.from].value;
if (Array.isArray(value)) {
record[field.to].value = value.reduce(function(previous, current, index) {
return previous + (current ? Number(current) : 0);
}, 0);
}
else {
record[field.to].value = (value ? Number(value) : 0);
}
})
return event;
});
})();

 

0
Avatar
rex0220

Shoji Shinoda さん

チェックボックス内のカウントだけでしたら、下記のようにするとOKです。

こちらはチェック変更時に、カウントしています。

 

(function() {
"use strict";

var fields = [
{ from: 'FCheck', to: 'FPoint' },
{ from: 'FCheck2', to: 'FPoint2' },
];
kintone.events.on(["app.record.edit.show", "app.record.create.show"], function(event) {
var record = event.record;
fields.forEach(function(field) {
record[field.to].disabled = true;
})
return event;
});

var events = ["app.record.edit.show", "app.record.create.show"];
fields.forEach(function(field) {
events.push("app.record.edit.change." + field.from);
events.push("app.record.create.change." + field.from);
})

kintone.events.on(events, function(event) {
var record = event.record;
fields.forEach(function(field) {
record[field.to].value = record[field.from].value.length;
})
return event;
});
})();
1
Avatar
Shoji Shinoda

ありがとうございます。

しかし、残念ながら、計算結果が FPoint にセットされません。
フィールド「FPoint」は数値フィールドです。計算フィールドではありませんが、問題ありませんか。

0
Avatar
rex0220

たぶん、フィールドコードが「FPoint」、「FCheck」になっていないと思われます。

フィールド名ではなく、フィールドコードを指定してください。

0
Avatar
Shoji Shinoda

ありがとうございます。

チェックボックスのフィールドコードは、FCheck 。フィールド名は、「振返チェック」

数値をセットする数値フィールドは、FPoint 。フィールド名は、「振り返りPoint」
となっています。
他にチェックするべき箇所はどこでしょう。

0
Avatar
rex0220

こちらで作成したアプリでは動いていますので、あとはデバッグするしかないですね。

kintone カスタマイズ関連リンク集 デバッグ にあるリンクを参考に、デバッグしてみてください。

 

1
Avatar
Shoji Shinoda

consoleを開いたエラーのテキストは次の様になっていました。
さっぱりわかりません。

2ERRです。

ひとつめ。

show#record=778&l.view=2174&l.q&l.sort_0=f2137&l.order_0=DESC:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at download.do:20
at download.do:332

ふたつめ
show.js:1154 Uncaught TypeError: Cannot set property 'disabled' of undefined
at download.do:11
at Array.forEach (<anonymous>)
at download.do:10
at show.js:241
at Array.forEach (<anonymous>)
at Array.forEach.d (show.js:1098)
at Uca (show.js:241)
at it (show.js:241)
at hC (show.js:391)
at G2 (show.js:976)

0
Avatar
Shoji Shinoda

同じアプリで、もうひとつScriptがありますが、それが影響しますか?

0
Avatar
rex0220

そうですね、そちらでエラーになっていると思われます。

その Script を外して試してみてください。

0
Avatar
Shoji Shinoda

そちらのスクリプトだけの時にはエラーは発生していません。

ふたつのものが、干渉してしまう可能性もあるのですね。
一度、そちらのスクリプトを削除して試してみます。

0
Avatar
Shoji Shinoda

スクリプト削除して、今回の物だけにしましたが、解決しませんでした。

難しいです。

0
Avatar
rex0220

念のため、確認です。JavaScript テキストの文字コードは「utf-8」になっていますか?

0
Avatar
Shoji Shinoda

JSEdit for kintone というプラグインを使用して書いています。

文字コードは「utf-8」 どうなっているかわかりません。

0
Avatar
Shoji Shinoda

ダウンロードして、sakura エディタで確認したところ、sjisになっていました。

utf-8に変更して、アップロードしてみます。

0
Avatar
rex0220

JSEdit for kintone なら文字コードは、問題ないですね。

 

1
Avatar
Shoji Shinoda

utf-8に変更して、アップロードしましたが、変化ありませんでした。

0
Avatar
rex0220

プラグインなども設定していますか? JavaScript を全部外して、エラーが出ますか?

0
Avatar
Shoji Shinoda

プラグインは、他に次の物を使用してます。

文字結合プラグイン 使用しています。

新条件書式プラグイン インストールしましたが未使用です。

 

基本的に、データ作成、編集、保存で、何もエラーは発生しません。

ただ、チェックボックスのチェックのカウントが数値フィールドにセットされないだけです。

0
Avatar
rex0220

show#record=778&l.view=2174&l.q&l.sort_0=f2137&l.order_0=DESC:1 Uncaught SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
at download.do:20
at download.do:332

たぶん、これがプラグイン未設定によるエラーです。

設定情報を読み込もうとして、無いのでエラーになっています。

新条件書式プラグインを設定するか、外して試してください。

1
Avatar
Shoji Shinoda

新条件書式プラグインに、設定を登録して試してみました。
しかし、まだ、改善できませんでした。

0
Avatar
rex0220

問題を切り分けるために、下記項目だけのアプリを作って、JavaScript が動作するか試してみてください。

 

 

 

3
Avatar
Shoji Shinoda

ありがとうございます。

今回のサンプル画面で、FCheck2の意味がわかりました。

作成中のアプリには、Fcheckはひとつだけであったので、ここの記述を削除したところ、

計算結果がセットできました。

長時間ご指導いただき、本当にありがとうございました。

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