(著者:サイボウズ 後迫 孝)
はじめに
kintoneのカスタマイズ開発を安定的に、効率的に開発するために 2014年10月に Cybozu CDNを公開しました。そこで、Cybozu CDN で提供している Chart.jsを利用して、kintoneアプリのレコード詳細を表示した時に、成績表をレーダーチャートで描画するカスタマイズ方法を紹介します。
※Chart.js は、レーダーチャートの他に円グラフ、折れ線グラフ、棒グラフ、円グラフが描けるJavaScriptのライブラリです。
完成のイメージ(kintoneモバイルの場合)
デモ環境
こちらのデモ環境から実際に動作を確認できます。
https://dev-demo.cybozu.com/k/35/
デモ環境アカウントとパスワードは、サインイン後にこちらのページでご確認ください。
アプリを作ろう
次のフィールドとデータを用意します。
フィールド名 | フィールドコード | フィールドタイプ | 値 |
---|---|---|---|
名前 | Name | 文字列(一行) | ボウズ太郎 |
Radar |
-- | スペース | -- |
国語 | Japanese | 数値 | 80 |
数学 | Mathematics | 数値 | 90 |
英語 | English | 数値 | 100 |
社会 | Social_studies | 数値 | 60 |
理科 | Science | 数値 | 70 |
アプリの設定フォーム画面
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ブラウザで確認する |
---|---|
|
|
このように、Cybozu CDNを利用することによって、効率的で安定したカスタマイズが実現できます。
このTipsは、2022年12月版kintoneで確認したものになります。
この記事を参考に、同じアプリ(データなども含む)を作り、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にされてしまっているようなのですが、
どこ原因でそうなっているのかが突き止められていない状態です。
※0pxになっているところをデベロッパーツールで無理やり300などに指定しても描画されず。
同じく
chart.jsが
https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js
ではないためではないでしょうか。
@Ryo ONODERA
ありがとうございます。
「JavaScript/CSS でカスタマイズ」で以下に変更したら、表示されました。
https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js
手順にしたがって、「Cybozu CDN のページを開いて、Chart.js のURLをコピーします。」で最新を指定していました。
お騒がせしました。
@Ryo ONODERA
ありがとうございます。同様に表示されました。
僕の方も最新を指定していたのですが、それが問題だったんですね。
お手数おかけいたしました。ありがとうございます。
https://github.com/nnnick/Chart.js/commit/e94bd460a795180c7bf5b45245c89f4c23c37ab6
以降のChart.js 1.xではwidth=0かつheight=0になる問題は解消されると思います。
リリース版はまだありませんが。
https://js.cybozu.com/chartjs/v1.0.2/Chart.min.js で利用できるように一部変更しました。
お世話になっております。
三田と申します。
kintoneのカスタマイズを行ったことがなく、今回初めてレーダーチャートの実装を試しておりますが、チャートが全く表示されません。
上記投稿と同じような現象でしたので、「JavaScript/CSS でカスタマイズ」をで以下に変更しても表示されていない状況です。
https://js.cybozu.com/chartjs/v1.0.1-beta.4/Chart.min.js
なお、レーダーチャートが表示されないアプリは、本ページのフィールド(コードも合わせ)にて作成したアプリにて、サンプルJSのコピペ(UTF-8で、コードは変更なし)でJSファイルを作成しております。
また独自作成アプリで作成したものも同様でした。(こちらは35行目以降にあるフィールドコードを当該アプリのフィールドコードに書き換え)
どのようにすればレーダーチャートが表示されますでしょうか?
お世話になっております。
上記の件、自己解決致しました。
ありがとうございました。
>グループフィールド(初期値:グループ内のフィールドを表示する)
こちらを実施しておらず、グループフィールドのデフォルト(閉じている状態)で行っておりました。
チェックを入れたところ、問題なく表示されました。
お世話になっております。
こちらの記事を参考に同じアプリを作り、値を変更してレーダーチャートの表示を行ったのですが、グラフの最大値が入力した値の最大値が変わるたびに変化する仕様のようなので、グラフの最大値を100に固定したいのですがJavaScript文のどの個所を変更すればグラフの最大値の固定が可能でしょうか。ぜひ教えていただきたいです。
西原 佑亮様
お世話になっております。
cybozu developer network 事務局です。
ご質問いただいた件ですが、
こちらのコメント欄は記事へのフィードバック用となります。
機能拡張のカスタマイズ方法等についてはぜひコミュニティをご活用ください。
https://developer.cybozu.io/hc/ja/community/topics
よろしくお願いいたします。
お世話になっております。質問の件ですが昨日解決することができました。コミュニティのほうにはまたわからないことがあれば質問を残したいと思います。ありがとうございました。
お世話になっております。
チャートを複数表示することはできたのですが、凡例を表示することができません。
option の中に "title" や "legend" で "display: true" などとしてみましたが
上や下に設定しても表示できないようです。
ご教示頂けますようお願い致します。
福森 豊和 様
お世話になっております。cybozu developer network 運営事務局でございます。
恐れ入りますが、記事のシナリオと直接的に関係のないご質問は、
ぜひコミュニティをご活用ください。
カスタマイズの実装方法など、有志による回答が得られる場となっております。
以上、よろしくお願い致します。
「プログラムをアップロードする」の項に示されている「次のプログラム」とは何でしょうか?
当方Chromeにて本ページを参照しておりますが、特にリンクの記載なく、何のプログラムかわからずにおります。
お手数ですがご教示頂けますと幸いです。
牛田 様
お世話になっております。cybozu developer network 運営事務局でございます。
該当ファイルのソースコードは、下の画像のように記事内に表示されています。
以下、ご確認いただけますでしょうか?
①ブラウザを変更してもソースコードはご覧いただけないでしょうか?
②ソースコード部分がご覧いただけないのは、この記事のみでしょうか?
上記2点当てはまるようでしたら、
牛田様がご使用のネットワークでGitHub(Gist)へのアクセスが禁止されている可能性があります。
cybozu developer network 運営事務局 担当者様
ご連絡ありがとうございます。例えばダッシュボードのサンプルには文字列のリンクが張ってあったので、そのように表示されるのだと思っていました。GitHub自体へのアクセスはできるのですが、Gistは規制されているようです。なんとかやり方を考えてみます。
失礼いたします。こちらの記事の内容に基づいて設定すれば、現在も利用可能でしょうか?
その通りに設定したつもりですがグラフが表示されません。
https://js.cybozu.com/chartjs/v1.0.2/Chart.min.jsと上のレーダーチャートサンプルプログラム、
https://js.cybozu.com/chartjs/v3.5.1/Chart.min.jsと同レーダーチャートサンプルプログラム
両方のパターンで試してみましたがだめでした。
Motomu Ito 様
お世話になっております。cybozu developer network 運営でございます。
改めて検証しましたが、PC版においては当方の環境では表示はされました。
ただし、
- PC版においても、グループの設定「グループ内のフィールドを表示する」をチェックしている必要がある
- モバイル版では表示されない
という状況が判明しましたので社内にフィードバックいたします。
ご連絡ありがとうございます、よろしくお願い致します。