reports_kit 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/reports_kit/lib/report.js +0 -2
  3. data/config/routes.rb +3 -3
  4. data/gemfiles/mysql.gemfile.lock +3 -3
  5. data/gemfiles/postgresql.gemfile.lock +3 -3
  6. data/lib/reports_kit.rb +5 -2
  7. data/lib/reports_kit/base_controller.rb +3 -3
  8. data/lib/reports_kit/configuration.rb +5 -0
  9. data/lib/reports_kit/filters_controller.rb +9 -0
  10. data/lib/reports_kit/form_builder.rb +10 -39
  11. data/lib/reports_kit/helper.rb +3 -13
  12. data/lib/reports_kit/model_configuration.rb +1 -6
  13. data/lib/reports_kit/normalized_params.rb +16 -0
  14. data/lib/reports_kit/report_builder.rb +3 -2
  15. data/lib/reports_kit/reports/composite_series.rb +4 -3
  16. data/lib/reports_kit/reports/data/aggregate_composite.rb +1 -1
  17. data/lib/reports_kit/reports/data/generate_for_properties.rb +1 -1
  18. data/lib/reports_kit/reports/filter_with_series.rb +4 -0
  19. data/lib/reports_kit/reports/generate_autocomplete_results.rb +5 -20
  20. data/lib/reports_kit/reports/inferrable_configuration.rb +1 -1
  21. data/lib/reports_kit/reports/properties.rb +10 -0
  22. data/lib/reports_kit/reports/properties_to_filter.rb +40 -0
  23. data/lib/reports_kit/reports/series.rb +7 -2
  24. data/lib/reports_kit/reports_controller.rb +1 -15
  25. data/lib/reports_kit/version.rb +1 -1
  26. data/spec/factories/pro_repo_factory.rb +5 -0
  27. data/spec/reports_kit/reports/data/generate_spec.rb +27 -0
  28. data/spec/spec_helper.rb +4 -3
  29. data/spec/support/models/pro/repo.rb +5 -0
  30. data/spec/support/models/pro/special_issue.rb +4 -0
  31. metadata +9 -33
  32. data/docs/README.md +0 -8
  33. data/docs/dimensions.md +0 -110
  34. data/docs/display_options.md +0 -80
  35. data/docs/filters.md +0 -216
  36. data/docs/images/chart_options.png +0 -0
  37. data/docs/images/dashed_line.png +0 -0
  38. data/docs/images/demo_area.png +0 -0
  39. data/docs/images/demo_dashed_line.png +0 -0
  40. data/docs/images/demo_horizontal_stacked.png +0 -0
  41. data/docs/images/demo_legend.png +0 -0
  42. data/docs/images/demo_multiautocomplete.png +0 -0
  43. data/docs/images/demo_radar.png +0 -0
  44. data/docs/images/flights_by_carrier.png +0 -0
  45. data/docs/images/flights_by_carrier_and_flight_at.png +0 -0
  46. data/docs/images/flights_by_delay.png +0 -0
  47. data/docs/images/flights_by_flight_at.png +0 -0
  48. data/docs/images/flights_by_hours_delayed.png +0 -0
  49. data/docs/images/flights_with_check_box.png +0 -0
  50. data/docs/images/flights_with_configured_boolean.png +0 -0
  51. data/docs/images/flights_with_configured_datetime.png +0 -0
  52. data/docs/images/flights_with_configured_number.png +0 -0
  53. data/docs/images/flights_with_configured_string.png +0 -0
  54. data/docs/images/flights_with_date_range.png +0 -0
  55. data/docs/images/flights_with_filters.png +0 -0
  56. data/docs/images/flights_with_multi_autocomplete.png +0 -0
  57. data/docs/images/flights_with_string_filter.png +0 -0
  58. data/docs/images/horizontal_bar.png +0 -0
  59. data/docs/images/legend_right.png +0 -0
  60. data/docs/images/users_by_created_at_with_filter.png +0 -0
  61. data/docs/measures.md +0 -12
  62. data/lib/reports_kit/resources_controller.rb +0 -8
@@ -1,216 +0,0 @@
1
- ### Filters
2
-
3
- #### Overview
4
-
5
- A filter is like a SQL `WHERE`: it filters the results to only include results that match a condition. You can use datetime columns, integer columns, string columns, associations, or even define custom filters.
6
-
7
- For example, if the `Flight` model has a `delay` column that's an integer, the chart below will show only flights that have a delay of greater than 15 minutes:
8
-
9
- ```yaml
10
- measure: flight
11
- filters:
12
- - key: delay
13
- criteria:
14
- operator: '>'
15
- value: 15
16
- dimensions:
17
- - carrier
18
- ```
19
- [<img src="images/flights_with_configured_number.png?raw=true" width="500" />](images/flights_with_configured_number.png?raw=true)
20
-
21
- You can also create form controls that the user can use to filter the chart:
22
-
23
- ```yaml
24
- measure: flight
25
- filters:
26
- - carrier
27
- - carrier_name
28
- - is_on_time
29
- - flight_at
30
- dimensions:
31
- - flight_at
32
- - carrier
33
- ```
34
-
35
- In `app/views/my_view.html.haml`, you can use ReportsKit's form helpers to create the controls:
36
- ```haml
37
- = render_report 'filters' do |f|
38
- .pull-right
39
- = f.date_range :flight_at
40
- = f.multi_autocomplete :carrier, scope: 'top', placeholder: 'Carrier...'
41
- = f.string_filter :carrier_name, placeholder: 'Carrier name (e.g. Airlines)...', style: 'width: 175px;'
42
- .checkbox
43
- = label_tag :is_on_time do
44
- = f.check_box :is_on_time
45
- On time
46
- ```
47
- [<img src="images/flights_with_filters.png?raw=true" width="500" />](images/flights_with_filters.png?raw=true)
48
-
49
- #### Types
50
-
51
- ##### Boolean
52
-
53
- Boolean filters can be used on any `boolean` columns, or you can define your own boolean filter (see [Custom Filters](#custom-filters)).
54
-
55
- ```yaml
56
- measure: flight
57
- filters:
58
- - key: is_on_time
59
- criteria:
60
- value: true
61
- dimensions:
62
- - carrier
63
- ```
64
- [<img src="images/flights_with_configured_boolean.png?raw=true" width="500" />](images/flights_with_configured_boolean.png?raw=true)
65
-
66
- ##### Datetime
67
-
68
- Datetime filters can be used on any `datetime` or `timestamp` columns, or you can define your own datetime filter (see [Custom Filters](#custom-filters)).
69
-
70
- ```yaml
71
- measure: flight
72
- filters:
73
- - key: flight_at
74
- criteria:
75
- operator: between
76
- value: -3M - now
77
- dimensions:
78
- - carrier
79
- ```
80
- [<img src="images/flights_with_configured_datetime.png?raw=true" width="500" />](images/flights_with_configured_datetime.png?raw=true)
81
-
82
- The `value` in the example above is shorthand for relative time; it represents the time range of `(3.months.ago..Time.zone.now)`. To see the other supported time durations (e.g. `w` for week, `d` for day), see [RelativeTime](https://github.com/tombenner/reports_kit/blob/master/lib/reports_kit/relative_time.rb).
83
-
84
- ##### Number
85
-
86
- Number filters can be used on any `integer`, `float`, or `decimal` columns, or you can define your own number filter (see [Custom Filters](#custom-filters)).
87
-
88
- ```yaml
89
- measure: flight
90
- filters:
91
- - key: delay
92
- criteria:
93
- operator: '>'
94
- value: 15
95
- dimensions:
96
- - carrier
97
- ```
98
- [<img src="images/flights_with_configured_number.png?raw=true" width="500" />](images/flights_with_configured_number.png?raw=true)
99
-
100
- ##### String
101
-
102
- String filters can be used on any `string` or `text` columns, or you can define your own number filter (see [Custom Filters](#custom-filters)).
103
-
104
- ```yaml
105
- measure: flight
106
- filters:
107
- - key: carrier_name
108
- criteria:
109
- operator: contains
110
- value: airlines
111
- dimensions:
112
- - carrier
113
- ```
114
- [<img src="images/flights_with_configured_string.png?raw=true" width="500" />](images/flights_with_configured_string.png?raw=true)
115
-
116
- ##### Custom Filters
117
-
118
- You can define custom filters in your model. For example, if `Flight` has a column named `delay` (an integer with a unit of minutes), then we can define a `was_delayed` dimension:
119
-
120
- ```ruby
121
- class Flight < ApplicationRecord
122
- include ReportsKit::Model
123
-
124
- reports_kit do
125
- filter :was_delayed, :boolean, conditions: 'delay IS NOT NULL AND delay > 15'
126
- end
127
- end
128
- ```
129
-
130
- We can then use the `was_delayed` filter:
131
-
132
- ```yaml
133
- measure: flight
134
- filters:
135
- - key: was_delayed
136
- criteria:
137
- value: true
138
- dimensions:
139
- - carrier
140
- ```
141
- [<img src="images/flights_by_hours_delayed.png?raw=true" width="500" />](images/flights_by_hours_delayed.png?raw=true)
142
-
143
- #### Form Controls
144
-
145
- Most charting libraries don't provide interactive form controls, but ReportsKit does. It makes it easy to add form controls to allow end users to modify charts.
146
-
147
- ##### Check Box
148
-
149
- Check boxes can be used with filters that have a `boolean` type.
150
-
151
- ```yaml
152
- measure: flight
153
- filters:
154
- - is_on_time
155
- dimensions:
156
- - flight_at
157
- - carrier
158
- ```
159
- ```haml
160
- = render_report 'filter_check_box' do |f|
161
- .checkbox
162
- = label_tag :is_on_time do
163
- = f.check_box :is_on_time
164
- On time
165
- ```
166
- [<img src="images/flights_with_check_box.png?raw=true" width="500" />](images/flights_with_check_box.png?raw=true)
167
-
168
- ##### Date Range
169
-
170
- Date ranges can be used with filters that have a `datetime` type.
171
-
172
- ```yaml
173
- measure: flight
174
- filters:
175
- - flight_at
176
- dimensions:
177
- - flight_at
178
- - carrier
179
- ```
180
- ```haml
181
- = render_report 'filter_date_range' do |f|
182
- = f.date_range :flight_at
183
- ```
184
- [<img src="images/flights_with_date_range.png?raw=true" width="500" />](images/flights_with_date_range.png?raw=true)
185
-
186
- ##### Multi-Autocomplete
187
-
188
- ```yaml
189
- measure: flight
190
- filters:
191
- - carrier
192
- dimensions:
193
- - flight_at
194
- - carrier
195
- ```
196
- ```haml
197
- = render_report 'filter_multi_autocomplete' do |f|
198
- = f.multi_autocomplete :carrier, scope: 'top', placeholder: 'Carrier...'
199
- ```
200
- [<img src="images/flights_with_multi_autocomplete.png?raw=true" width="500" />](images/flights_with_multi_autocomplete.png?raw=true)
201
-
202
- ##### String Filter
203
-
204
- ```yaml
205
- measure: flight
206
- filters:
207
- - carrier_name
208
- dimensions:
209
- - flight_at
210
- - carrier
211
- ```
212
- ```haml
213
- = render_report 'filter_string' do |f|
214
- = f.string_filter :carrier_name, placeholder: 'Carrier name (e.g. Airlines)...', style: 'width: 175px;'
215
- ```
216
- [<img src="images/flights_with_string_filter.png?raw=true" width="500" />](images/flights_with_string_filter.png?raw=true)
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,12 +0,0 @@
1
- ### Measures
2
-
3
- The measure is what is being counted (or aggregated in another way). You can use any model as the measure.
4
-
5
- For example, say we have a `Flight` model with a `flight_at` datetime column. We can chart the number of flights over time:
6
-
7
- ```yaml
8
- measure: flight
9
- dimensions:
10
- - flight_at
11
- ```
12
- [<img src="images/flights_by_flight_at.png?raw=true" width="500" />](images/flights_by_flight_at.png?raw=true)
@@ -1,8 +0,0 @@
1
- module ReportsKit
2
- class ResourcesController < ReportsKit::BaseController
3
- def autocomplete
4
- results = Reports::GenerateAutocompleteResults.new(params, context_record: context_record).perform
5
- render json: { data: results }
6
- end
7
- end
8
- end