cybozu developer network

カテゴリー内の他の記事

Chart.js を使って kintone にレーダーチャートを表示する

(著者:サイボウズ 後迫 孝

 

はじめに

kintoneのカスタマイズ開発を安定的に、効率的に開発するために 2014年10月に Cybozu CDNを公開しました。そこで、Cybozu CDN で提供している Chart.jsを利用して、kintoneアプリのレコード詳細を表示した時に、成績表をレーダーチャートで描画するカスタマイズ方法を紹介します。
Chart.js は、レーダーチャートの他に円グラフ、折れ線グラフ、棒グラフ、円グラフが描けるJavaScriptのライブラリです。

完成のイメージ(kintoneモバイルの場合)

040.png

デモ環境

こちらのデモ環境から実際に動作を確認できます。
https://dev-demo.cybozu.com/k/35/

デモ環境の利用は、事前に cybozu developer network のメンバー登録が必要です。画面右上の「サインイン」ボタンよりご登録ください。
デモ環境アカウントとパスワードは、サインイン後にこちらのページでご確認ください。

アプリを作ろう

次のフィールドとデータを用意します。

フィールド名 フィールドコード フィールドタイプ
名前 Name 文字列(一行) ボウズ太郎

Radar
※要素IDになります

-- スペース --
国語 Japanese 数値 80
数学 Mathematics 数値 90
英語 English 数値 100
社会 Social_studies 数値 60
理科 Science 数値 70

アプリの設定フォーム画面

020.png

Cybozu CDN から、Chart.jsのURLをコピーする

Cybozu CDN のページを開いて、Chart.js のURLをコピーします。

https://js.cybozu.com/chartjs/v3.9.1/Chart.min.js

アプリ管理でURLを設定する

カスタマイズするアプリの管理画面に移動し、「JavaScript/CSS でカスタマイズ」を開きます。そして、「PC用のJavaScriptファイル」にある「URL指定で追加」します。
※kintoneモバイルで表示する場合には、「スマートフォン用のJavaScriptファイル」にも同様に設定します。これで、CDNの設定は完了です。しかし、このままでは描画されないので、プログラムをアップロードしましょう。

プログラムをアップロードする

「JavaScript/CSS でカスタマイズ」画面で次のプラグラムを JavaScript形式のファイルにして、アップロードします。
Chart.jsの機能や仕様は、提供者のウェブページでご確認ください。

レコード登録してレーダーチャートを表示しよう

データを追加してチャートを表示します。

kintoneモバイル(スマートフォン)で確認する PCブラウザで確認する

040.png

030.png

このように、Cybozu CDNを利用することによって、効率的で安定したカスタマイズが実現できます。

このTipsは、2022年12月版kintoneで確認したものになります。

記事に関するフィードバック

記事のコメント欄は記事に対するフィードバックをする場となっております。
右の記事フィードバックのためのガイドを参照してコメントしてください。
記事のリンク切れなど、気になる点がある場合も、こちらのフォームからフィードバックいただけますと幸いです。

Avatar
井原 真吾

この記事を参考に、同じアプリ(データなども含む)を作り、JSもコピーしたものをそのまま上げたのですが、
チャートが表示されません。

Chromeのデベロッパーツールでいろいろ確認しているのですが、エラーなどは出ておらず、
肝心のcanvas要素が

<div class="spacer-cybozu" id="user-js-Radar"><canvas id="canvas" height="0" width="0" style="width: 0px; height: 0px;"></canvas></div>

のように、何らかによってheightもwidthも0にされてしまっているようなのですが、
どこ原因でそうなっているのかが突き止められていない状態です。

Avatar
井原 真吾

※0pxになっているところをデベロッパーツールで無理やり300などに指定しても描画されず。

Avatar
hydro

同じく

Avatar
Ryo ONODERA

chart.jsが
https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js
ではないためではないでしょうか。

Avatar
hydro

@Ryo ONODERA

ありがとうございます。
「JavaScript/CSS でカスタマイズ」で以下に変更したら、表示されました。

 https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js

手順にしたがって、「Cybozu CDN のページを開いて、Chart.js のURLをコピーします。」で最新を指定していました。
お騒がせしました。

Avatar
井原 真吾

@Ryo ONODERA

ありがとうございます。同様に表示されました。
僕の方も最新を指定していたのですが、それが問題だったんですね。

お手数おかけいたしました。ありがとうございます。

Avatar
Ryo ONODERA

https://github.com/nnnick/Chart.js/commit/e94bd460a795180c7bf5b45245c89f4c23c37ab6
以降のChart.js 1.xではwidth=0かつheight=0になる問題は解消されると思います。
リリース版はまだありませんが。

Avatar
cybozu Development team

https://js.cybozu.com/chartjs/v1.0.2/Chart.min.js で利用できるように一部変更しました。

Avatar
三田稔久

お世話になっております。

三田と申します。

kintoneのカスタマイズを行ったことがなく、今回初めてレーダーチャートの実装を試しておりますが、チャートが全く表示されません。

上記投稿と同じような現象でしたので、「JavaScript/CSS でカスタマイズ」をで以下に変更しても表示されていない状況です。

 https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js

なお、レーダーチャートが表示されないアプリは、本ページのフィールド(コードも合わせ)にて作成したアプリにて、サンプルJSのコピペ(UTF-8で、コードは変更なし)でJSファイルを作成しております。

また独自作成アプリで作成したものも同様でした。(こちらは35行目以降にあるフィールドコードを当該アプリのフィールドコードに書き換え)

どのようにすればレーダーチャートが表示されますでしょうか?

Avatar
三田稔久

お世話になっております。

上記の件、自己解決致しました。

ありがとうございました。

 

>グループフィールド(初期値:グループ内のフィールドを表示する)

こちらを実施しておらず、グループフィールドのデフォルト(閉じている状態)で行っておりました。

チェックを入れたところ、問題なく表示されました。

Avatar
西原 佑亮

お世話になっております。

こちらの記事を参考に同じアプリを作り、値を変更してレーダーチャートの表示を行ったのですが、グラフの最大値が入力した値の最大値が変わるたびに変化する仕様のようなので、グラフの最大値を100に固定したいのですがJavaScript文のどの個所を変更すればグラフの最大値の固定が可能でしょうか。ぜひ教えていただきたいです。

Avatar
cybozu Development team

西原 佑亮様

お世話になっております。
cybozu developer network 事務局です。

ご質問いただいた件ですが、
こちらのコメント欄は記事へのフィードバック用となります。

機能拡張のカスタマイズ方法等についてはぜひコミュニティをご活用ください。
https://developer.cybozu.io/hc/ja/community/topics

よろしくお願いいたします。

Avatar
西原 佑亮

お世話になっております。質問の件ですが昨日解決することができました。コミュニティのほうにはまたわからないことがあれば質問を残したいと思います。ありがとうございました。

Avatar
福森 豊和

お世話になっております。

チャートを複数表示することはできたのですが、凡例を表示することができません。

option の中に "title" や "legend" で "display: true" などとしてみましたが

上や下に設定しても表示できないようです。

ご教示頂けますようお願い致します。

Avatar
cybozu Development team

福森 豊和 様

お世話になっております。cybozu developer network 運営事務局でございます。

恐れ入りますが、記事のシナリオと直接的に関係のないご質問は、
ぜひコミュニティをご活用ください。

カスタマイズの実装方法など、有志による回答が得られる場となっております。

以上、よろしくお願い致します。

Avatar
牛田

「プログラムをアップロードする」の項に示されている「次のプログラム」とは何でしょうか?

当方Chromeにて本ページを参照しておりますが、特にリンクの記載なく、何のプログラムかわからずにおります。

お手数ですがご教示頂けますと幸いです。

Avatar
cybozu Development team

牛田 様

お世話になっております。cybozu developer network 運営事務局でございます。

該当ファイルのソースコードは、下の画像のように記事内に表示されています。


以下、ご確認いただけますでしょうか?
①ブラウザを変更してもソースコードはご覧いただけないでしょうか?
②ソースコード部分がご覧いただけないのは、この記事のみでしょうか?

上記2点当てはまるようでしたら、
牛田様がご使用のネットワークでGitHub(Gist)へのアクセスが禁止されている可能性があります。

Avatar
牛田

cybozu developer network 運営事務局 担当者様

ご連絡ありがとうございます。例えばダッシュボードのサンプルには文字列のリンクが張ってあったので、そのように表示されるのだと思っていました。GitHub自体へのアクセスはできるのですが、Gistは規制されているようです。なんとかやり方を考えてみます。

Avatar
Motomu Ito

失礼いたします。こちらの記事の内容に基づいて設定すれば、現在も利用可能でしょうか?

その通りに設定したつもりですがグラフが表示されません。

https://js.cybozu.com/chartjs/v1.0.2/Chart.min.jsと上のレーダーチャートサンプルプログラム、

https://js.cybozu.com/chartjs/v3.5.1/Chart.min.jsと同レーダーチャートサンプルプログラム

両方のパターンで試してみましたがだめでした。

 

Avatar
cybozu Development team

Motomu Ito 

お世話になっております。cybozu developer network 運営でございます。

改めて検証しましたが、PC版においては当方の環境では表示はされました。
ただし、
- PC版においても、グループの設定「グループ内のフィールドを表示する」をチェックしている必要がある
- モバイル版では表示されない
という状況が判明しましたので社内にフィードバックいたします。

ご連絡ありがとうございます、よろしくお願い致します。

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