2021年04月04日に参加
学習履歴詳細
(Chart.js)チャートUIの改善
Statistics#indexのviewを改善する。
- labelから西暦を削除する。Viewに渡されたchartlabelを整形する。
const labels = chartlabel; console.log(labels); //["2020-01-20", "2020-01-21", "2020-01-22", "2020-01-23", "2020-01-24", "2020-01-25", "2020-01-26"] var result = labels.map(function( value) { return value.substr(5); }); console.log(result); //["01-20", "01-21", "01-22", "01-23", "01-24", "01-25", "01-26"]
西暦は削除されたが、月が一桁の際に先頭に0が付いてしまい、見にくい。条件分岐で先頭が0の場合は0を削除したい。
ここまで考えたところで、Reportモデル生成時にラベルを整形した方が、DRYになると気づいた。
そこで、Reportを生成するサービスクラス内のchart_data
メソッドを書き換えた。
#app/lib/generate_report/report.rb def chart_data(user, date_begin, date_range) # labels = date_begin..date_end).to_a labels = date_range.map { |date| date.strftime("%-m月%-d日") } y_axis_data = data_generator(user, date_begin) chart_data = { labels: labels, datasets: y_axis_data } end
<参考>
Building a chart with Chart.js and Ruby on Rails
【JavaScript入門】配列処理をするmap()の使い方とMapオブジェクトの解説!
【Ruby入門】strftimeで日付・時刻を書式指定して文字列に変換する
- 画面幅が狭くなるごとにグラフの高さが縮んでしまう。
Chart.jsのオプションで高さを動的に設定できるようにしたい。
いままではViewファイルのJavascriptでオプションを設定していた。
サービスクラスのReportクラスから設定できる様に書き換える。
# app/lib/generate_report/report.rb module GenerateReport class Report #省略 def chart_options options = { responsive: true, scales: { yAxes: [{ ticks: { max: 2, min: -2, stepSize: 1.0 } }] } } end #省略 end
- 基本情報1時間
Ruby
JavaScript
Rails
基本情報技術者
2020年01月21日(火)
2.7時間