A Chartkick dashboard tab for your solidus app. This extension works by taking a list of SolidusChartkick::Expression objects in your configuration file.
The expression object is a simple wrapper around a lambda which generates a Chartkick chart, and a label to display on the page. The lambdas have 3 arguments.
period: :day, :week, or :month
start_gt: start time as selected by user in their admin panel
end_lt: finish time as selected by user in their admin panelBasic installation will create a configuation file like:
SolidusChartkick.configure do |config|
include Chartkick::Helper
# User Created Chart
config.expressions << SolidusChartkick::Expression.new(
'Users Created',
'col-12',
->(period, start_gt, end_lt) {
scope = Spree::User.group_by_period(period, :created_at, range: start_gt..end_lt)
column_chart scope.count
}
)
# Order Total Chart
config.expressions << SolidusChartkick::Expression.new(
'Order Totals',
'col-12',
->(period, start_gt, end_lt) {
scope = Spree::Order.complete.group_by_period(period, :completed_at, range: start_gt..end_lt)
column_chart scope.sum(:total)
}
)
# Product Sold Via Count
config.expressions << SolidusChartkick::Expression.new(
'Products Sold',
'col-12',
->(_period, start_gt, end_lt) {
scope = Spree::Order.where(completed_at: start_gt.beginning_of_day..end_lt.end_of_day).joins(:products)
column_chart scope.group(:name).count
}
)
endResults look like:
Add solidus_chartkick to your Gemfile:
gem 'solidus_chartkick'Bundle your dependencies and run the installation generator:
bin/rails generate solidus_chartkick:installFirst bundle your dependencies, then run bin/rake. bin/rake will default to building the dummy
app if it does not exist, then it will run specs. The dummy app can be regenerated by using
bin/rake extension:test_app.
bin/rakeTo run Rubocop static code analysis run
bundle exec rubocopWhen testing your application's integration with this extension you may use its factories.
Simply add this require statement to your spec/spec_helper.rb:
require 'solidus_chartkick/testing_support/factories'Or, if you are using FactoryBot.definition_file_paths, you can load Solidus core
factories along with this extension's factories using this statement:
SolidusDevSupport::TestingSupport::Factories.load_for(SolidusChartkick::Engine)To run this extension in a sandboxed Solidus application, you can run bin/sandbox. The path for
the sandbox app is ./sandbox and bin/rails will forward any Rails commands to
sandbox/bin/rails.
Here's an example:
$ bin/rails server
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
* Listening on tcp://127.0.0.1:3000
Use Ctrl-C to stop
Before and after releases the changelog should be updated to reflect the up-to-date status of the project:
bin/rake changelog
git add CHANGELOG.md
git commit -m "Update the changelog"Please refer to the dedicated page on Solidus wiki.
Copyright (c) 2023 Minimal Audio, released under the New BSD License.
