Skip to content

Instantly share code, notes, and snippets.

@SeyZ
Created March 27, 2018 10:33
Show Gist options
  • Save SeyZ/2dfe97ff20aec371ea46aa6b0ce74b5a to your computer and use it in GitHub Desktop.
Save SeyZ/2dfe97ff20aec371ea46aa6b0ce74b5a to your computer and use it in GitHub Desktop.
doc-lumber-smart-chart-time-based
// The value MUST be formatted like this.
{
value: [{
label: <string> ,
values: { value: <number> }
}, {
label: <string> ,
values: { value: <number> }
}, …]
}
# /config/routes.rb
Rails.application.routes.draw do
# MUST be declared before the mount ForestLiana::Engine.
namespace :forest do
post '/stats/charges-per-day' => 'charts#charges_per_day'
end
mount ForestLiana::Engine => '/forest'
end
# /app/controllers/forest/charts_controller.rb
class Forest::ChartsController < ForestLiana::ApplicationController
def charges_per_day
values = []
from = Date.parse('2018-03-01').to_time(:utc).to_i
to = Date.parse('2018-03-31').to_time(:utc).to_i
Stripe::Charge.list({
created: { gte: from, lte: to },
limit: 100
}).each do |charge|
date = Time.at(charge.created).beginning_of_day.strftime("%d/%m/%Y")
entry = values.find { |e| e[:label] == date }
if !entry
values << { label: date, values: { value: 1 } }
else
++entry[:values][:value]
end
end
stat = ForestLiana::Model::Stat.new({ value: values })
render json: serialize_model(stat)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment