ReportsKit ===== ReportsKit lets you easily create beautiful charts with customizable, interactive filters. For interactive examples, see [reportskit.co](https://www.reportskit.co/). --- [](docs/images/demo.gif?raw=true) [](docs/images/demo_area.png?raw=true)        [](docs/images/demo_dashed_line.png?raw=true) [](docs/images/demo_horizontal_stacked.png?raw=true)        [](docs/images/demo_legend.png?raw=true) [](docs/images/demo_multiautocomplete.png?raw=true)        [](docs/images/demo_radar.png?raw=true) --- 1. **Quick setup** - Install ReportsKit and create your first chart in less than one minute using just ~5 lines of code. 1. **Simple chart configuration** - Create charts using your existing Rails models. ReportsKit examines the column types and associations to understand how to render the chart. 1. **Powerful results** - To see what ReportsKit can create with minimal code, see [reportskit.co](https://www.reportskit.co/). Resources --------- * [Installation](#installation) * [Quick Start](#quick-start) * [Examples](https://www.reportskit.co/) * [Documentation](docs) Installation ------------ In `Gemfile`: ```ruby gem 'reports_kit' ``` In `app/assets/stylesheets/application.css.scss`: ```scss *= require reports_kit/application ``` In `app/assets/javascripts/application.js`: ```js //= require reports_kit/application ``` In `config/routes.rb`: ```ruby Rails.application.routes.draw do mount ReportsKit::Engine, at: '/' # ... end ``` Quick Start ----------- After installation, you can create your first chart with a single line! In any view, create a chart that shows the number of records of a model (e.g. `user`) created over time: `app/views/users/index.html.haml` ```haml = render_report measure: { key: 'user', dimensions: ['created_at'] } ``` You're done! `render_report` will render the following chart: [](docs/images/users_by_created_at.png?raw=true) Instead of passing a hash to `render_report`, you can alternatively configure your charts using YAML and then pass the filename to `render_report`: `config/reports_kit/reports/my_users.yml` ```yaml measure: key: user dimensions: - created_at ``` `app/views/users/index.html.haml` ```haml = render_report 'my_users' ``` The YAML approach is more maintainable and readable, so we'll use it in the rest of the documentation. ### Form Controls You can add a date range form control to the above chart with a single line, using one of ReportsKit's form helpers: `app/views/users/index.html.haml` ```haml = render_report 'my_users' do |f| = f.date_range :created_at ``` [](docs/images/users_by_created_at_with_filter.png?raw=true) Many other form controls are available; see [Filters](docs/filters.md) for more. ### How It Works In the Quick Start chart, `key: 'user'` tells ReportsKit to count the number of `User` records, and `dimensions: ['created_at']` tells it to group by the week of the `created_at` column. Since `created_at` is a `datetime` column, ReportsKit knows that it should sort the results chronologically. To learn how to use more of ReportsKit's features, check out the following resources: * [Examples](https://www.reportskit.co/) * [Documentation](docs) Testing ------- ReportsKit is tested against PostgreSQL and MySQL. If you'd like to submit a PR, please be sure to use [Appraisal](https://github.com/thoughtbot/appraisal) to test your changes in both contexts: ```bash appraisal rspec ``` License ------- ReportsKit is released under the MIT License. Please see the MIT-LICENSE file for details.