Rails 애플리케이션으로 Cal-Heatmap 표시
지난 반년 동안의 연습 기록에 착색을 했어요.
>에 heatmap 태그 추가
표시하려는]erb에 다음 탭을 추가합니다.id는 임의
index.heml.erb
<div id="heatmap"></div>
하트맵의 초기화, 응용된javascript 쓰기
html.erb 또는 js 파일에서CalHeatMap의 생성 및 초기화에 대해 설명합니다.
각 옵션의 상세한 상황은 공식 문서를 참조하세요.
요점.
var startDate = new Date();
startDate.setMonth(startDate.getMonth() - 5);
var parser = function(data) {
return eval("(" + data + ")");
};
var cal = new CalHeatMap();
cal.init({
itemSelector: "#heatmap",
data: "/api/comments?user_id=<%= @user.id %>&start={{d:start}}&stop={{d:end}}",
afterLoadData: parser,
cellSize: 7,
domain: "month",
subDomain: "day",
range: 6,
tooltip: true,
start: startDate,
legendColors: ["white","green"],
domainLabelFormat: “%b",
legend: [1,2,3,4]
});
Rails에 json을 반환하는 API 추가
grape를 이용하여 rails에 json의 API를 추가로 되돌려줍니다.
하트맵이 받아들인 데이터 형식은timepoint와 값의 해시이기 때문에DateTime의 변수를 입력하십시오i의 값을 해시 키로 설정합니다.
tunes_api.rb
module Api
class TunesApi < Grape::API
resource :comments do
get do
user = User.find_by_id(params[:user_id])
from = params[:start]
to = params[:stop]
comments = user.comments.where(created_at: from..to)
comments.map{|c| c.created_at.to_i}.inject(Hash.new(0)){|h, tm| h[tm] += 1; h}.to_json
end
end
end
end
총결산
하트맵의 데이터 형식에 따라 json을 되돌려주면 GiitHub 스타일의 달력을 간단하게 표시할 수 있습니다.
다만, 달 표시를 하면 달 사이에 틈이 생겨서 item이 없는 칸의 색을 바꾸려면 기존 옵션(legendColors)은 상상할 수 없기 때문에 css를 직접 다시 정의했습니다.(향후 개선 기대)
응용하면 곳곳에서 축적된 데이터를 볼 수 있다.
Reference
이 문제에 관하여(Rails 애플리케이션으로 Cal-Heatmap 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/volpe28v/items/3a5a2c05f1c0ee3fa5ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)