ダッシュボードでの表示方法について(その2)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-28-2022 02:57 AM - edited 10-28-2022 02:58 AM
お世話になっております。
ダッシュボードでの表示方法について伺いたく、投稿しました。
やりたい内容としては、あるテーブルのフィールドAとフィールドB(ともに件数などの値が入っている想定)が
入っているときに、(フィールドAの合計)/(フィールドBの合計)(=以下Cと記載)を%で表示させ、
さらにそのC(%)と、基準値D(%)を比較して、C=<Dであれば「達成」、C>Dであれば「未達」のように
ダッシュボードに表示したいです。どのようにすれば良いでしょうか?
よろしくお願いいたします。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-31-2022 05:41 AM
Widget の Dynamic Content で 計算して 比較した結果を表示する方法はどうでしょうか。コードは下記のようになります。Configure dynamic blocks (servicenow.com)
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_result" object="true" >
var result = {};
var sumA;
var sumB;
var valueC;
var valueD;
var gr = new GlideAggregate('u_test_excel_20221031');
gr.addAggregate('SUM', 'u_field_a');
gr.addAggregate('SUM', 'u_field_b');
gr.setGroup(false);
gr.query();
if (gr.next()) {
sumA = parseFloat(gr.getAggregate('SUM', 'u_field_a'));
sumB = parseFloat(gr.getAggregate('SUM', 'u_field_b'));
valueC = sumA / sumB;
valueD = parseFloat(1);
if (valueC <= valueD) {
result = {"result":'達成 A '+sumA+', B '+sumB + ', valueC ' + valueC.toFixed(2),"valueC":(valueC*100).toFixed(2)};
} else {
result = {"result":'未達成 A '+sumA+', B '+sumB + ', valueC ' + valueC.toFixed(2),"valueC":(valueC*100).toFixed(2)};
}
}
result;
</g:evaluate>
<p style="text-align:center; font-size: xx-large;">${jvar_result.result}</p>
<p style="text-align:center; font-size: xx-large;">${jvar_result.valueC} %</p>
</j:jelly>
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-31-2022 07:04 PM
リプライありがとうございます。
こちらもContent BlocksのDynamic Contentで、いただいた情報を試してみます。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-01-2022 02:30 AM
本件、コメントありがとうございました。
いただいた情報で実現できそうでした。
追加でご存じでしたら教えていただきたいのですが、
本件のように達成/未達成の判定を複数の対象で実施し、
その結果を「3件/5件達成」のように表示させたいと
考えているのですが、実現方法わかりますでしょうか?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-01-2022 05:17 AM
判定を複数の対象で実施する場合は、下記のような処理になります。
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<g:evaluate var="jvar_result">
var tassei=0;//達成件数
var count=0;//全体件数
// 達成判定 1
var gr = new GlideAggregate(/*データテーブル*/);
if (/*判定*/) {
tassei++;
}
count++;
// 達成判定 2
gr = new GlideAggregate(/*データテーブル*/);
if (/*判定*/) {
tassei++;
}
count++;
// 達成判定 3
gr = new GlideAggregate(/*データテーブル*/);
if (/*判定*/) {
tassei++;
}
count++;
result = tassei + '件/' + count + '件達成';
result;
</g:evaluate>
<p style="text-align:center; font-size: xx-large;">${result}</p>
</j:jelly>