supercharts-bullet_train 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +44 -200
- data/lib/bullet_train/supercharts/version.rb +1 -1
- data/lib/bullet_train/supercharts.rb +15 -7
- data/lib/tasks/bullet_train/supercharts_tasks.rake +449 -4
- metadata +4 -11
- data/app/assets/javascripts/supercharts-bullet-train.esm.js +0 -2
- data/app/assets/javascripts/supercharts-bullet-train.esm.js.map +0 -1
- data/app/assets/javascripts/supercharts-bullet-train.js +0 -2
- data/app/assets/javascripts/supercharts-bullet-train.js.map +0 -1
- data/app/assets/javascripts/supercharts-bullet-train.modern.mjs +0 -2
- data/app/assets/javascripts/supercharts-bullet-train.modern.mjs.map +0 -1
- data/app/assets/javascripts/supercharts-bullet-train.umd.js +0 -2
- data/app/assets/javascripts/supercharts-bullet-train.umd.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52befa1216e7b527c464f2e21fa5e8c10f42703f64282d5277b9b2ae40c890fd
|
4
|
+
data.tar.gz: f4949e46bdb9b43a27b098b81afb725f27f6915a22521b86d56cbf99fc7bda05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ae2f208f61aa560202402b91350826eea940fb0ea2c9ffc80b52e4c0dd24a5cd293fe936970fca8f9b0c2b55e014f8ae5c677c39351a3a67ecad9fec9debd445
|
7
|
+
data.tar.gz: bea6b6562b908ff2186a683b7197a60dc55b08efa53ac2de251a61ced1642a4773d3f5a9a2a46bd1a7fb5a013906a65163c039570b9fd33de6cc47a1ec2e8896
|
data/README.md
CHANGED
@@ -1,241 +1,85 @@
|
|
1
|
-
# Supercharts for Bullet Train
|
1
|
+
# DEPRECATED: Supercharts for Bullet Train
|
2
2
|
|
3
3
|
Add charts to a [Bullet Train Rails app][bullet-train] the same way you super-scaffold a resource.
|
4
4
|
|
5
|
-
##
|
5
|
+
## Removing This Dependency, Run it Locally
|
6
6
|
|
7
|
-
|
7
|
+
This package is no longer maintained, but you can still continue to drive the charts you currently have locally.
|
8
8
|
|
9
|
-
|
9
|
+
To run everything locally and remove the dependency, eject the view partials and JavaScript components with this command:
|
10
10
|
|
11
|
-
|
11
|
+
bin/rails supercharts:eject_all
|
12
12
|
|
13
|
-
|
13
|
+
## CHANGELOG
|
14
14
|
|
15
|
-
|
15
|
+
### v1.3.1
|
16
16
|
|
17
|
-
|
17
|
+
**Deprecate the package.**
|
18
18
|
|
19
|
-
|
19
|
+
### v1.3.0
|
20
20
|
|
21
|
-
|
21
|
+
**Support for Bullet Train's new theme colors, removes `darkPrimary` color**
|
22
22
|
|
23
|
-
|
23
|
+
Impact on your previously charts: the files within `views/shared` (skeleton, filters) will look different after upgrade and might generate Tailwind errors.
|
24
24
|
|
25
|
-
|
26
|
-
gem "supercharts-bullet_train"
|
27
|
-
```
|
25
|
+
Recommendation: Upgrade to this version at the same time you upgrade to the latest version of Bullet Train's light theme. Otherwise, your charts will look off or you might have Tailwind build errors. See the [PR in `bullet_train-core` for the changes and rationale](https://github.com/bullet-train-co/bullet_train-core/pull/106).
|
28
26
|
|
29
|
-
|
30
|
-
```bash
|
31
|
-
$ bundle
|
32
|
-
```
|
27
|
+
Alternative: make local copies of the partials in `views/shared/` before you upgrade.
|
33
28
|
|
34
|
-
|
35
|
-
```bash
|
36
|
-
$ gem install supercharts-bullet_train
|
37
|
-
```
|
29
|
+
Look for:
|
38
30
|
|
39
|
-
|
31
|
+
* Replacing of `darkPrimary` with `slate`
|
32
|
+
* A darker background color in dark mode. That's because Bullet Train uses `bg-opacity-50` to get a half-way background Tailwind color increment, which doesn't work with the point border color.
|
40
33
|
|
41
|
-
|
34
|
+
Also included:
|
42
35
|
|
43
|
-
|
36
|
+
* New recommended approach for seeding test data using a `db/seeds/` file. See the "Generate some test data" above.
|
44
37
|
|
45
|
-
|
46
|
-
gem "groupdate"
|
47
|
-
```
|
38
|
+
### v1.2.0
|
48
39
|
|
49
|
-
|
50
|
-
```bash
|
51
|
-
$ bundle
|
52
|
-
```
|
40
|
+
**Locale strings**
|
53
41
|
|
54
|
-
|
55
|
-
```bash
|
56
|
-
$ gem install groupdate
|
57
|
-
```
|
42
|
+
No impact to your previously-scaffolded charts by applying this update, but the next charts you scaffold will have the changes.
|
58
43
|
|
59
|
-
|
44
|
+
Recommendation: Re-run the scaffold command or compare the diff against your chart to apply the changes.
|
60
45
|
|
61
|
-
|
46
|
+
Look for:
|
62
47
|
|
63
|
-
|
64
|
-
|
65
|
-
```
|
48
|
+
* new strings added to your resource's `en.yml` file. A new one is created if not already present.
|
49
|
+
* the scaffolded ERB now references all those new locale strings for a cleaner code.
|
66
50
|
|
67
|
-
|
51
|
+
### v1.1.0
|
68
52
|
|
69
|
-
|
70
|
-
// near the top
|
71
|
-
import { controllerDefinitions as superchartsControllers } from "@supercharts/supercharts-bullet-train"
|
53
|
+
**Fixes to time ranges and code optimizations.**
|
72
54
|
|
73
|
-
|
74
|
-
application.load(superchartsControllers)
|
75
|
-
```
|
55
|
+
No impact to your previously-scaffolded charts by applying this update, but the next charts you scaffold will have the new changes.
|
76
56
|
|
77
|
-
|
57
|
+
Recommendation: Re-run the scaffold command or compare the diff against your chart to apply the changes.
|
78
58
|
|
79
|
-
|
59
|
+
Look for:
|
80
60
|
|
81
|
-
|
61
|
+
* changes in the time ranges
|
62
|
+
* the variable no longer called `data`, but instead called `series`. There's a couple places where that's changed.
|
82
63
|
|
83
|
-
|
64
|
+
### v1.0.3
|
84
65
|
|
85
|
-
|
86
|
-
bin/super-scaffold supercharts:chart ClickThrough Team
|
87
|
-
```
|
66
|
+
**Bug fixes and small visual tweaks.**
|
88
67
|
|
89
|
-
|
68
|
+
No impact to your previously-scaffolded charts by applying this update, but the next charts you scaffold will have the bug fixes.
|
90
69
|
|
91
|
-
|
70
|
+
Recommendation: Re-run the scaffold command or compare the diff against your chart to apply the bug fixes.
|
92
71
|
|
93
|
-
|
72
|
+
Look for:
|
94
73
|
|
95
|
-
|
96
|
-
|
97
|
-
|
74
|
+
* there's now a nowrap on the date when the daily summary is shown
|
75
|
+
* `first: true` being removed from the second filter
|
76
|
+
* `var(--chart-height)""` (I mean)
|
77
|
+
* correctly use `value_formatted` instead of `value` for the formatted value column
|
78
|
+
* look for "Week of" in the formatted date when the weekly view is shown
|
98
79
|
|
99
|
-
|
100
|
-
ClickThrough.delete_all # start fresh
|
101
|
-
|
102
|
-
# Rubystats::LognormalDistribution.new(1, 4.0)
|
103
|
-
sample_logn_days_since_launch = [0.374752478249304,2.573715367349214,8.205364533794372,0.018758139772852223,0.007503724554433451,9.795277947976652,8.920746829981699,0.10551189188869997,1.764721845714895,0.16013475895174034,0.09656162234229956,1.051545673721908,3.4605465909422444,0.5284662248320162,12.552059342378902,0.802742590175781,0.02109366834525422,0.02664778128443366,4.390318514353362,0.09774971155444112,1.2046433918447472,6.842861969154294,0.011979372791258703,0.064030764714403,0.254580889613002,0.8375254371675241,6.645595256049555,0.004578324225909655,7.645897327323974,3.8198662350854358,2.5433159804484093,12.23258356052949,8.590508575839966,0.36652090412334615,0.11151312341555021,0.17233489061676868,0.2146532779238352,0.14245752689762017,0.19342953572076568,0.1529907988439447,0.00750514011797885,0.4518938917044475,2.824609604776437,0.9950891711469877,1.0656326056125578,0.1261305417548888,0.009966388079746133,11.001041702449946,0.0013675811570916427,0.02367451456093704,0.01894224395588477,4.440315660471336,0.09493622122995193,0.07657312652331208,1.4874835063144172,0.13842079252030612,2.1017802510726815,4.196227775076141,0.054093691138304485,0.0051252791552137186,3.0245345093639773,0.00032997376067659843,0.006931535931463956,1.78040031800141,1.2156342429038396,1.7978965235819222,0.818322573101528,0.08369936871534746,0.16412718021762976,9.844260419603875,5.14537997872604,10.644277259959916,2.516432067417657,0.02670462498452867,0.009043612354757327,2.481241138462057,1.9882680498827123,0.11922535105626798,0.20284489863820995,0.1274031773301022,0.35779282006366203,1.0571276594384351,1.0249771657735456,0.6552185634235514,0.7524783523736271,0.2539575382334551,0.5439132099545871]
|
104
|
-
|
105
|
-
sample_logn_days_since_launch.each do |days_offset|
|
106
|
-
created_at = 2.weeks.ago + days_offset.days
|
107
|
-
|
108
|
-
team.click_throughs.create!(created_at: created_at)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
```
|
80
|
+
### v1.0.0
|
112
81
|
|
113
|
-
|
114
|
-
|
115
|
-
```sh
|
116
|
-
bin/rails r db/seeds/click_throughs.rb
|
117
|
-
```
|
118
|
-
|
119
|
-
Visit your app in `localhost:3000` and you should see your new chart.
|
120
|
-
|
121
|
-

|
122
|
-
|
123
|
-
## Modifying the chart
|
124
|
-
|
125
|
-
### The smallest change: switching to a bar chart
|
126
|
-
|
127
|
-
Changing to a bar chart is super easy: just change the following line in your `show.html.erb`
|
128
|
-
|
129
|
-
From:
|
130
|
-
|
131
|
-
```html
|
132
|
-
data-superchart-type-value="line"
|
133
|
-
```
|
134
|
-
|
135
|
-
To:
|
136
|
-
|
137
|
-
```html
|
138
|
-
data-superchart-type-value="bar"
|
139
|
-
```
|
140
|
-
|
141
|
-
### Other chart types: new Stimulus controller
|
142
|
-
|
143
|
-
Under the hood, the default Superchart is built using a chart.js instance wrapped inside a Stimulus controller.
|
144
|
-
|
145
|
-
For the following types of changes, you'll need to create your own Stimulus controller, duplicating the main `superchart_controller.js` found in this repo.
|
146
|
-
|
147
|
-
* Changing to a multi-line, stacked area or stacked bar chart
|
148
|
-
* Changing to a radial chart, a scattered plot, a box plot or any other chart
|
149
|
-
|
150
|
-
### Any other change: it depends
|
151
|
-
|
152
|
-
If you just want to make aesthetic changes, you can change the following css variables found at the top of your scaffolded `show.html.erb`. In this case, these are all TailwindCSS classes that set the appropriate custom CSS properties scoped to just that chart.
|
153
|
-
|
154
|
-
```html
|
155
|
-
[--axis-color:theme('colors.gray.300')] dark:[--axis-color:theme('colors.slate.500')]
|
156
|
-
[--grid-color:theme('colors.gray.100')] dark:[--grid-color:theme('colors.slate.800')]
|
157
|
-
[--line-color:#a86fe7]
|
158
|
-
[--point-color:theme('colors.gray.800')] dark:[--point-color:theme('colors.white')]
|
159
|
-
[--point-stroke-color:theme('colors.white')] dark:[--point-stroke-color:theme('colors.slate.700')]
|
160
|
-
[--point-stroke-color-hover:theme('colors.gray.100')] dark:[--point-stroke-color-hover:theme('colors.slate.800')]
|
161
|
-
[--bar-fill-color:var(--line-color)]
|
162
|
-
[--bar-hover-fill-color:var(--point-color)]
|
163
|
-
[--point-radius:4] md:[--point-radius:6]
|
164
|
-
[--point-hover-radius:6] md:[--point-hover-radius:10]
|
165
|
-
[--point-border-width:3] md:[--point-border-width:4]
|
166
|
-
[--point-hover-border-width:2] md:[--point-hover-border-width:3]
|
167
|
-
```
|
168
|
-
|
169
|
-
If you'd like to override some chart.js options, you can do so in the `chartjsOptions` element:
|
170
|
-
|
171
|
-
```html
|
172
|
-
<!-- This can only include valid JSON, but no functions. This is not code that will be evaluated -->
|
173
|
-
<template data-superchart-target="chartjsOptions">
|
174
|
-
{
|
175
|
-
"borderColor": "#000"
|
176
|
-
}
|
177
|
-
</template>
|
178
|
-
```
|
179
|
-
|
180
|
-
Note that to make this work with both light and dark mode, you might as well use a custom CSS property, which Supercharts lets you do (but chart.js does not support by default):
|
181
|
-
|
182
|
-
```html
|
183
|
-
<!-- cssVar is a special sub-property which Supercharts will properly interpret as the value of the custom CSS property you set it to -->
|
184
|
-
<template data-superchart-target="chartjsOptions">
|
185
|
-
{
|
186
|
-
"borderColor": {
|
187
|
-
"cssVar": "--my-custom-accent-color"
|
188
|
-
}
|
189
|
-
}
|
190
|
-
</template>
|
191
|
-
```
|
192
|
-
|
193
|
-
But if the changes you'd like to make is in the list below, you'll need to make your own custom Stimulus controller:
|
194
|
-
|
195
|
-
* The chart.js options you'd like to override includes JavaScript code (e.g. callback functions on properties)
|
196
|
-
* Including more than one series (multi-line chart, etc)
|
197
|
-
* Including annotations
|
198
|
-
* Including a custom hover overlay
|
199
|
-
* You need to change a chart.js option that's deeply nested (e.g. `scales.x.grid: false`) because it'll override all options in the top option
|
200
|
-
|
201
|
-
## Contributing
|
202
|
-
|
203
|
-
### Local development
|
204
|
-
|
205
|
-
* Create a Bullet Train app
|
206
|
-
* Use the instructions above to include the required gems and the npm package
|
207
|
-
* Create a `local/` directory into which you'll clone a copy of this repo:
|
208
|
-
|
209
|
-
```bash
|
210
|
-
mkdir local
|
211
|
-
cd local/
|
212
|
-
git clone <this REPO URL>
|
213
|
-
```
|
214
|
-
|
215
|
-
* In your Gemfile, change the gem to use the local path:
|
216
|
-
|
217
|
-
```ruby
|
218
|
-
gem "supercharts-bullet_train", path: "local/supercharts-bullet_train"
|
219
|
-
```
|
220
|
-
|
221
|
-
Then do
|
222
|
-
|
223
|
-
```bash
|
224
|
-
bundle install
|
225
|
-
```
|
226
|
-
|
227
|
-
* For modifying the JavaScript, Stimulus Controllers, you'll need to install `yalc` and use it to point to your local copy of the npm package:
|
228
|
-
|
229
|
-
```bash
|
230
|
-
yarn global add yalc
|
231
|
-
cd local/supercharts-bullet_train
|
232
|
-
yarn build # build the local changes
|
233
|
-
yalc push # publish the npm package locally on your own computer
|
234
|
-
cd ../../ # go back to the bullet-train project
|
235
|
-
yalc link @supercharts/supercharts-bullet-train
|
236
|
-
cd local/supercharts-bullet_train
|
237
|
-
yarn watch # continually watch for JavaScript changes, re-build the npm package and push to the Bullet Train app
|
238
|
-
```
|
82
|
+
**Initial launch**
|
239
83
|
|
240
84
|
## License
|
241
85
|
The gem and npm package are available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
@@ -1,13 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require "bullet_train/supercharts/
|
1
|
+
# Issue deprecation warning when this gem is loaded
|
2
|
+
unless defined?(BulletTrain::Supercharts::DEPRECATION_WARNING_SHOWN)
|
3
|
+
warn "⚠️ DEPRECATION WARNING: The supercharts-bullet_train gem is deprecated. Please eject the files locally using `bin/rails supercharts:eject_all`. See README for details."
|
4
|
+
end
|
5
|
+
|
6
|
+
# This gem is deprecated. All scaffolders are disabled.
|
7
|
+
# require "bullet_train/supercharts/version"
|
8
|
+
# require "bullet_train/supercharts/engine"
|
9
|
+
# require "scaffolding"
|
10
|
+
# require "scaffolding/transformer"
|
11
|
+
# require "scaffolding/block_manipulator"
|
12
|
+
# require "scaffolding/routes_file_manipulator"
|
13
|
+
# require "bullet_train/supercharts/scaffolders/chart_scaffolder"
|
8
14
|
|
9
15
|
module BulletTrain
|
10
16
|
module Supercharts
|
17
|
+
# Mark that the deprecation warning has been shown
|
18
|
+
DEPRECATION_WARNING_SHOWN = true
|
11
19
|
# Your code goes here...
|
12
20
|
end
|
13
21
|
end
|
@@ -1,4 +1,449 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Rake task to remove supercharts dependencies from a Bullet Train application.
|
4
|
+
#
|
5
|
+
# This task:
|
6
|
+
# 1. Ejects all view partials from supercharts gems to local app/views/ unless
|
7
|
+
# a local variant already exists using the shared/path abstraction for Bullet Train
|
8
|
+
# 2. Ejects the @supercharts/supercharts-bullet-train npm package, then inventories
|
9
|
+
# which files require @supercharts/stimulus-base and ejects those dependencies
|
10
|
+
# 3. Includes any missing npm dependencies that these packages require by merging
|
11
|
+
# their dependencies from their package.json files
|
12
|
+
# 4. Removes the supercharts gem and npm packages from Gemfile and package.json
|
13
|
+
#
|
14
|
+
# Usage: bundle exec rake supercharts:eject_all
|
15
|
+
#
|
16
|
+
# After running this task:
|
17
|
+
# - Run `bundle install` to update Gemfile.lock
|
18
|
+
# - Run `yarn install` to update yarn.lock
|
19
|
+
# - Test your application thoroughly
|
20
|
+
# - Commit your changes
|
21
|
+
|
22
|
+
require 'json'
|
23
|
+
require 'fileutils'
|
24
|
+
|
25
|
+
namespace :supercharts do
|
26
|
+
desc "Remove supercharts dependencies by ejecting views and npm packages"
|
27
|
+
task eject_all: :environment do
|
28
|
+
puts "🚀 Starting removal of supercharts dependencies...".blue
|
29
|
+
|
30
|
+
# Step 1: Eject view partials that don't have local variants
|
31
|
+
eject_supercharts_view_partials
|
32
|
+
|
33
|
+
# Step 2: Eject JavaScript packages and update imports
|
34
|
+
eject_supercharts_js_packages
|
35
|
+
|
36
|
+
# Step 3: Remove gem and npm dependencies
|
37
|
+
remove_supercharts_from_dependencies
|
38
|
+
|
39
|
+
puts "✅ Supercharts dependency removal completed successfully!".green
|
40
|
+
puts ""
|
41
|
+
puts "Next steps:".yellow
|
42
|
+
puts "1. Run 'bundle install' to update Gemfile.lock"
|
43
|
+
puts "2. Run 'yarn install' to update yarn.lock"
|
44
|
+
puts "3. Test your application to ensure everything works correctly"
|
45
|
+
puts "4. Commit your changes"
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def eject_supercharts_view_partials
|
51
|
+
puts "\n📂 Ejecting supercharts view partials...".blue
|
52
|
+
|
53
|
+
# Find the installed supercharts gem path
|
54
|
+
supercharts_gem_path = find_supercharts_gem_path
|
55
|
+
|
56
|
+
if supercharts_gem_path
|
57
|
+
puts " Found supercharts gem at: #{supercharts_gem_path}"
|
58
|
+
|
59
|
+
# Discover all view partials in the gem
|
60
|
+
supercharts_partials = discover_supercharts_partials(supercharts_gem_path)
|
61
|
+
|
62
|
+
if supercharts_partials.any?
|
63
|
+
puts " Found #{supercharts_partials.size} view partials to eject"
|
64
|
+
|
65
|
+
supercharts_partials.each do |partial_info|
|
66
|
+
partial_path = partial_info[:resolve_path]
|
67
|
+
gem_file_path = partial_info[:gem_file_path]
|
68
|
+
relative_path = partial_info[:relative_path]
|
69
|
+
local_path = Rails.root.join("app/views/#{relative_path}")
|
70
|
+
|
71
|
+
unless File.exist?(local_path)
|
72
|
+
puts " Ejecting #{relative_path}..."
|
73
|
+
|
74
|
+
# Create the local directory structure
|
75
|
+
FileUtils.mkdir_p(File.dirname(local_path))
|
76
|
+
|
77
|
+
# Copy the file from gem to local app
|
78
|
+
if File.exist?(gem_file_path)
|
79
|
+
# Add ejection comment to the top of the file
|
80
|
+
original_content = File.read(gem_file_path)
|
81
|
+
ejected_content = "<% # Ejected from supercharts-bullet_train gem %>\n\n#{original_content}"
|
82
|
+
|
83
|
+
File.write(local_path, ejected_content)
|
84
|
+
puts " ✅ Successfully ejected #{relative_path}".green
|
85
|
+
else
|
86
|
+
puts " ❌ Could not find source file: #{gem_file_path}".red
|
87
|
+
end
|
88
|
+
else
|
89
|
+
puts " ✅ #{relative_path} already exists locally, skipping".green
|
90
|
+
end
|
91
|
+
end
|
92
|
+
else
|
93
|
+
puts " ℹ️ No view partials found in supercharts gem".blue
|
94
|
+
end
|
95
|
+
else
|
96
|
+
puts " ⚠️ supercharts-bullet_train gem not found - skipping view partial ejection".yellow
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def eject_supercharts_js_packages
|
101
|
+
puts "\n📦 Ejecting supercharts JavaScript packages...".blue
|
102
|
+
|
103
|
+
# Check if @supercharts/supercharts-bullet-train is imported
|
104
|
+
js_files = Dir.glob(Rails.root.join("app/javascript/**/*.js"))
|
105
|
+
supercharts_imported = js_files.any? do |file|
|
106
|
+
File.read(file).include?("@supercharts/supercharts-bullet-train")
|
107
|
+
end
|
108
|
+
|
109
|
+
if supercharts_imported
|
110
|
+
eject_supercharts_bullet_train_package
|
111
|
+
eject_stimulus_base_package
|
112
|
+
else
|
113
|
+
puts " ℹ️ No @supercharts imports found in JavaScript files".blue
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
def eject_supercharts_bullet_train_package
|
118
|
+
puts " Ejecting @supercharts/supercharts-bullet-train package..."
|
119
|
+
|
120
|
+
# Find the installed supercharts gem path
|
121
|
+
supercharts_gem_path = find_supercharts_gem_path
|
122
|
+
|
123
|
+
if supercharts_gem_path
|
124
|
+
# Create local directory for the ejected package
|
125
|
+
local_js_dir = Rails.root.join("app/javascript/supercharts")
|
126
|
+
FileUtils.mkdir_p(local_js_dir)
|
127
|
+
|
128
|
+
# Copy JavaScript files from the gem's JavaScript directory
|
129
|
+
source_js_dir = File.join(supercharts_gem_path, "app/javascript")
|
130
|
+
|
131
|
+
if Dir.exist?(source_js_dir)
|
132
|
+
FileUtils.cp_r("#{source_js_dir}/.", local_js_dir)
|
133
|
+
puts " ✅ Copied JavaScript files to app/javascript/supercharts/".green
|
134
|
+
|
135
|
+
# Update the import in app/javascript/controllers/index.js
|
136
|
+
update_supercharts_import
|
137
|
+
|
138
|
+
# Copy package.json dependencies from gem
|
139
|
+
merge_supercharts_dependencies(supercharts_gem_path)
|
140
|
+
else
|
141
|
+
puts " ❌ Could not find JavaScript files in supercharts gem".red
|
142
|
+
end
|
143
|
+
else
|
144
|
+
puts " ❌ Could not find supercharts-bullet_train gem".red
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def eject_stimulus_base_package
|
149
|
+
puts " Inventorying files that require @supercharts/stimulus-base..."
|
150
|
+
|
151
|
+
# Find all files that import from @supercharts/stimulus-base
|
152
|
+
all_js_files = Dir.glob(Rails.root.join("app/javascript/**/*.js"))
|
153
|
+
files_requiring_stimulus_base = []
|
154
|
+
|
155
|
+
all_js_files.each do |file|
|
156
|
+
content = File.read(file)
|
157
|
+
if content.include?("@supercharts/stimulus-base")
|
158
|
+
files_requiring_stimulus_base << file
|
159
|
+
puts " 📋 Found dependency: #{File.basename(file)}"
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
if files_requiring_stimulus_base.any?
|
164
|
+
puts " Ejecting @supercharts/stimulus-base controllers..."
|
165
|
+
|
166
|
+
# Find the actual stimulus-base package
|
167
|
+
stimulus_base_path = find_stimulus_base_package
|
168
|
+
|
169
|
+
if stimulus_base_path
|
170
|
+
copy_stimulus_base_controllers(stimulus_base_path)
|
171
|
+
update_stimulus_base_imports(files_requiring_stimulus_base)
|
172
|
+
else
|
173
|
+
puts " ❌ Could not find @supercharts/stimulus-base package".red
|
174
|
+
puts " Please install it first: yarn add @supercharts/stimulus-base"
|
175
|
+
end
|
176
|
+
else
|
177
|
+
puts " ℹ️ No files require @supercharts/stimulus-base, skipping".blue
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
def find_stimulus_base_package
|
182
|
+
# Look for the package in node_modules
|
183
|
+
node_modules_path = Rails.root.join("node_modules/@supercharts/stimulus-base")
|
184
|
+
return node_modules_path if Dir.exist?(node_modules_path)
|
185
|
+
|
186
|
+
# Look for it in yarn cache or other locations
|
187
|
+
yarn_cache_output = `yarn cache dir 2>/dev/null`.chomp rescue nil
|
188
|
+
if yarn_cache_output && !yarn_cache_output.empty?
|
189
|
+
cached_package = Dir.glob("#{yarn_cache_output}/**/stimulus-base*").first
|
190
|
+
return cached_package if cached_package && Dir.exist?(cached_package)
|
191
|
+
end
|
192
|
+
|
193
|
+
nil
|
194
|
+
end
|
195
|
+
|
196
|
+
def copy_stimulus_base_controllers(source_path)
|
197
|
+
target_dir = Rails.root.join("app/javascript/stimulus-base")
|
198
|
+
FileUtils.mkdir_p(target_dir)
|
199
|
+
|
200
|
+
puts " Copying stimulus-base controllers from #{source_path}..."
|
201
|
+
|
202
|
+
# Look for src directory first, fall back to root level JS files
|
203
|
+
src_path = File.join(source_path, "src")
|
204
|
+
|
205
|
+
if Dir.exist?(src_path)
|
206
|
+
# Copy only the src files, but flatten them to the target directory
|
207
|
+
js_files = Dir.glob("#{src_path}/**/*.js")
|
208
|
+
|
209
|
+
if js_files.any?
|
210
|
+
js_files.each do |source_file|
|
211
|
+
# Calculate relative path within src directory
|
212
|
+
relative_path = source_file.sub("#{src_path}/", "")
|
213
|
+
target_file = File.join(target_dir, relative_path)
|
214
|
+
|
215
|
+
# Create target directory if needed
|
216
|
+
FileUtils.mkdir_p(File.dirname(target_file))
|
217
|
+
|
218
|
+
# Copy the file
|
219
|
+
FileUtils.cp(source_file, target_file)
|
220
|
+
|
221
|
+
# Fix common JavaScript syntax issues in ejected files
|
222
|
+
fix_javascript_syntax(target_file)
|
223
|
+
|
224
|
+
puts " ✅ Copied #{relative_path}".green
|
225
|
+
end
|
226
|
+
else
|
227
|
+
puts " ⚠️ No JavaScript files found in src directory".yellow
|
228
|
+
end
|
229
|
+
else
|
230
|
+
# Fall back to copying root level JS files (excluding dist)
|
231
|
+
js_files = Dir.glob("#{source_path}/*.js").reject { |f| f.include?('/dist/') }
|
232
|
+
|
233
|
+
if js_files.any?
|
234
|
+
js_files.each do |source_file|
|
235
|
+
filename = File.basename(source_file)
|
236
|
+
target_file = File.join(target_dir, filename)
|
237
|
+
|
238
|
+
# Copy the file
|
239
|
+
FileUtils.cp(source_file, target_file)
|
240
|
+
|
241
|
+
# Fix common JavaScript syntax issues in ejected files
|
242
|
+
fix_javascript_syntax(target_file)
|
243
|
+
|
244
|
+
puts " ✅ Copied #{filename}".green
|
245
|
+
end
|
246
|
+
else
|
247
|
+
puts " ⚠️ No JavaScript files found in stimulus-base package".yellow
|
248
|
+
end
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def find_supercharts_gem_path
|
253
|
+
# Use bundler to find the gem path
|
254
|
+
begin
|
255
|
+
gem_path = `bundle show supercharts-bullet_train 2>/dev/null`.chomp
|
256
|
+
return gem_path if $?.success? && !gem_path.empty? && Dir.exist?(gem_path)
|
257
|
+
rescue
|
258
|
+
# Fall back to trying with gem command
|
259
|
+
end
|
260
|
+
|
261
|
+
# Fall back to using gem command
|
262
|
+
begin
|
263
|
+
gem_path = `gem which supercharts-bullet_train 2>/dev/null`.chomp
|
264
|
+
if !gem_path.empty?
|
265
|
+
# gem which returns path to a file, we want the gem root
|
266
|
+
gem_root = gem_path.split('/lib/').first
|
267
|
+
return gem_root if Dir.exist?(gem_root)
|
268
|
+
end
|
269
|
+
rescue
|
270
|
+
# Ignore errors
|
271
|
+
end
|
272
|
+
|
273
|
+
nil
|
274
|
+
end
|
275
|
+
|
276
|
+
def discover_supercharts_partials(gem_path)
|
277
|
+
partials = []
|
278
|
+
|
279
|
+
# Look for view files in the gem
|
280
|
+
views_path = File.join(gem_path, "app/views")
|
281
|
+
|
282
|
+
if Dir.exist?(views_path)
|
283
|
+
# Find all .erb files (both partials and regular views)
|
284
|
+
Dir.glob("#{views_path}/**/*.html.erb").each do |view_file|
|
285
|
+
# Convert absolute path to relative path
|
286
|
+
relative_path = view_file.sub("#{views_path}/", "")
|
287
|
+
|
288
|
+
# Skip super scaffolding partials - these are templates for code generation
|
289
|
+
next if relative_path.include?('/scaffolding/')
|
290
|
+
|
291
|
+
# For partials (files starting with _), remove the underscore for the resolve path
|
292
|
+
# For regular views, keep the name as is
|
293
|
+
if File.basename(view_file).start_with?('_')
|
294
|
+
# e.g., "shared/supercharts/_chart_skeleton.html.erb" becomes "shared/supercharts/chart_skeleton"
|
295
|
+
resolve_path = relative_path.gsub(/\/_([^\/]+)\.html\.erb$/, '/\1')
|
296
|
+
else
|
297
|
+
# e.g., "shared/supercharts/show.html.erb" becomes "shared/supercharts/show"
|
298
|
+
resolve_path = relative_path.gsub(/\.html\.erb$/, '')
|
299
|
+
end
|
300
|
+
|
301
|
+
partials << {
|
302
|
+
resolve_path: resolve_path,
|
303
|
+
gem_file_path: view_file,
|
304
|
+
relative_path: relative_path
|
305
|
+
}
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
partials.sort_by { |p| p[:resolve_path] }
|
310
|
+
end
|
311
|
+
|
312
|
+
def fix_javascript_syntax(file_path)
|
313
|
+
|
314
|
+
return unless File.extname(file_path) == '.js'
|
315
|
+
|
316
|
+
content = File.read(file_path)
|
317
|
+
|
318
|
+
# Fix incorrect export syntax like "export Chartjs from" to "export { default as Chartjs } from"
|
319
|
+
updated_content = content.gsub(
|
320
|
+
/^export\s+([A-Z][a-zA-Z0-9]*)\s+from\s+/,
|
321
|
+
'export { default as \1 } from '
|
322
|
+
)
|
323
|
+
|
324
|
+
# Only write if content changed
|
325
|
+
if content != updated_content
|
326
|
+
File.write(file_path, updated_content)
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
330
|
+
def update_supercharts_import
|
331
|
+
index_file = Rails.root.join("app/javascript/controllers/index.js")
|
332
|
+
return unless File.exist?(index_file)
|
333
|
+
|
334
|
+
content = File.read(index_file)
|
335
|
+
updated_content = content.gsub(
|
336
|
+
'import { controllerDefinitions as superchartsControllers } from "@supercharts/supercharts-bullet-train"',
|
337
|
+
'import { controllerDefinitions as superchartsControllers } from "../supercharts"'
|
338
|
+
)
|
339
|
+
|
340
|
+
if content != updated_content
|
341
|
+
File.write(index_file, updated_content)
|
342
|
+
puts " ✅ Updated import in app/javascript/controllers/index.js".green
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
def update_stimulus_base_imports(files_requiring_stimulus_base)
|
347
|
+
files_requiring_stimulus_base.each do |controller_file|
|
348
|
+
content = File.read(controller_file)
|
349
|
+
|
350
|
+
# Calculate relative path from this file to the stimulus-base directory
|
351
|
+
file_dir = File.dirname(controller_file)
|
352
|
+
relative_path = Pathname.new(Rails.root.join("app/javascript/stimulus-base")).relative_path_from(Pathname.new(file_dir))
|
353
|
+
|
354
|
+
# Replace the npm package import with local relative path
|
355
|
+
updated_content = content.gsub(
|
356
|
+
'@supercharts/stimulus-base',
|
357
|
+
relative_path.to_s
|
358
|
+
)
|
359
|
+
|
360
|
+
if content != updated_content
|
361
|
+
File.write(controller_file, updated_content)
|
362
|
+
puts " ✅ Updated stimulus-base import to local path in #{File.basename(controller_file)}".green
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
366
|
+
|
367
|
+
def merge_supercharts_dependencies(gem_path)
|
368
|
+
# Use gem path if provided, otherwise fall back to local directory for backward compatibility
|
369
|
+
supercharts_package_json = File.join(gem_path, "package.json")
|
370
|
+
|
371
|
+
app_package_json = Rails.root.join("package.json")
|
372
|
+
|
373
|
+
return unless File.exist?(supercharts_package_json) && File.exist?(app_package_json)
|
374
|
+
|
375
|
+
supercharts_deps = JSON.parse(File.read(supercharts_package_json))
|
376
|
+
app_deps = JSON.parse(File.read(app_package_json))
|
377
|
+
|
378
|
+
# Merge dependencies from supercharts package, excluding @supercharts packages
|
379
|
+
deps_to_merge = supercharts_deps["dependencies"]&.reject { |name, _| name.start_with?("@supercharts") } || {}
|
380
|
+
|
381
|
+
# Add Chart.js if we're creating stubs that need it
|
382
|
+
unless app_deps["dependencies"]&.key?("chart.js")
|
383
|
+
deps_to_merge["chart.js"] = "^4.0.0"
|
384
|
+
end
|
385
|
+
|
386
|
+
deps_to_merge.each do |dep_name, version|
|
387
|
+
unless app_deps["dependencies"]&.key?(dep_name)
|
388
|
+
app_deps["dependencies"] ||= {}
|
389
|
+
app_deps["dependencies"][dep_name] = version
|
390
|
+
puts " ✅ Added dependency: #{dep_name}@#{version}".green
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
394
|
+
File.write(app_package_json, JSON.pretty_generate(app_deps))
|
395
|
+
puts " ✅ Updated package.json with supercharts dependencies".green
|
396
|
+
end
|
397
|
+
|
398
|
+
def remove_supercharts_from_dependencies
|
399
|
+
puts "\n🗑️ Removing supercharts from dependencies...".blue
|
400
|
+
|
401
|
+
# Remove from Gemfile
|
402
|
+
remove_supercharts_gem
|
403
|
+
|
404
|
+
# Remove from package.json
|
405
|
+
remove_supercharts_npm_packages
|
406
|
+
end
|
407
|
+
|
408
|
+
def remove_supercharts_gem
|
409
|
+
gemfile_path = Rails.root.join("Gemfile")
|
410
|
+
return unless File.exist?(gemfile_path)
|
411
|
+
|
412
|
+
lines = File.readlines(gemfile_path)
|
413
|
+
updated_lines = lines.reject { |line| line.match?(/gem\s+["']supercharts-bullet_train["']/) }
|
414
|
+
|
415
|
+
if lines.size != updated_lines.size
|
416
|
+
File.write(gemfile_path, updated_lines.join)
|
417
|
+
puts " ✅ Removed supercharts-bullet_train gem from Gemfile".green
|
418
|
+
else
|
419
|
+
puts " ℹ️ supercharts-bullet_train gem not found in Gemfile".blue
|
420
|
+
end
|
421
|
+
end
|
422
|
+
|
423
|
+
def remove_supercharts_npm_packages
|
424
|
+
package_json_path = Rails.root.join("package.json")
|
425
|
+
return unless File.exist?(package_json_path)
|
426
|
+
|
427
|
+
package_data = JSON.parse(File.read(package_json_path))
|
428
|
+
|
429
|
+
# Remove @supercharts packages
|
430
|
+
supercharts_packages = ["@supercharts/supercharts-bullet-train", "@supercharts/stimulus-base"]
|
431
|
+
removed_packages = []
|
432
|
+
|
433
|
+
supercharts_packages.each do |package|
|
434
|
+
if package_data["dependencies"]&.delete(package)
|
435
|
+
removed_packages << package
|
436
|
+
end
|
437
|
+
if package_data["devDependencies"]&.delete(package)
|
438
|
+
removed_packages << package
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
if removed_packages.any?
|
443
|
+
File.write(package_json_path, JSON.pretty_generate(package_data))
|
444
|
+
puts " ✅ Removed npm packages: #{removed_packages.join(', ')}".green
|
445
|
+
else
|
446
|
+
puts " ℹ️ No @supercharts npm packages found to remove".blue
|
447
|
+
end
|
448
|
+
end
|
449
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: supercharts-bullet_train
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pascal Laliberté
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -36,14 +36,6 @@ files:
|
|
36
36
|
- README.md
|
37
37
|
- Rakefile
|
38
38
|
- app/assets/config/bullet_train_supercharts_manifest.js
|
39
|
-
- app/assets/javascripts/supercharts-bullet-train.esm.js
|
40
|
-
- app/assets/javascripts/supercharts-bullet-train.esm.js.map
|
41
|
-
- app/assets/javascripts/supercharts-bullet-train.js
|
42
|
-
- app/assets/javascripts/supercharts-bullet-train.js.map
|
43
|
-
- app/assets/javascripts/supercharts-bullet-train.modern.mjs
|
44
|
-
- app/assets/javascripts/supercharts-bullet-train.modern.mjs.map
|
45
|
-
- app/assets/javascripts/supercharts-bullet-train.umd.js
|
46
|
-
- app/assets/javascripts/supercharts-bullet-train.umd.js.map
|
47
39
|
- app/javascript/controllers/index.js
|
48
40
|
- app/javascript/controllers/superchart_controller.js
|
49
41
|
- app/javascript/controllers/supercharts/describable_controller.js
|
@@ -71,7 +63,8 @@ licenses:
|
|
71
63
|
metadata:
|
72
64
|
homepage_uri: https://github.com/supercharts-dev/supercharts-bullet_train
|
73
65
|
source_code_uri: https://github.com/supercharts-dev/supercharts-bullet_train
|
74
|
-
post_install_message:
|
66
|
+
post_install_message: "⚠️ DEPRECATED: This package is retired. Eject files locally.
|
67
|
+
See README."
|
75
68
|
rdoc_options: []
|
76
69
|
require_paths:
|
77
70
|
- lib
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{SuperchartChartjsController as t,parseContentsAsCsv as e,parseContentsAsJSON as r}from"@supercharts/stimulus-base";import{Controller as a}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class i extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const a=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[a][this.csvData.columns[1]],value:this.csvData[a][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(t={...t,...r(this.chartjsOptionsTarget)}),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:o,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function o(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}i.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],i.values={type:{type:String,default:"line"}},i.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class l extends a{showDescriptionWith(t){var e,r,a;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(r=t.detail)?void 0:r.value,i=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).replaceAll("%label%",i),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}l.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],l.classes=["hideOverallDescription","hideContextualDescription"];class n extends a{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}n.targets=["chartSourceData","chart"],n.values={eventName:{type:String,default:"update-chart"}};class c extends a{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}c.targets=["data"],c.values={eventName:{type:String,default:"superchart:update-chart"}};const h=[[i,"superchart_controller.js"],[l,"supercharts/describable_controller.js"],[n,"supercharts/filterable_controller.js"],[c,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});export{l as DescribableController,n as FilterableController,c as FiltersController,i as SuperchartController,h as controllerDefinitions};
|
2
|
-
//# sourceMappingURL=supercharts-bullet-train.esm.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.esm.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"0KAqBA,SAASA,EAAwBC,GAC7B,MAAMC,GAAeD,EAAIE,MAAM,2CAA6C,IAAI,GAChF,GAAID,EACA,OAAOA,EAAYE,QAAQ,KAAM,KAAKA,QAAQ,MAAO,KAE7D,CCxB6BC,MAAAA,UAAAA,EAyB3BC,UACEC,MAAMD,SACP,CAEDE,cACED,MAAMC,aACP,CAEDC,iBAAiBC,WACf,MACMC,GADQD,MAAAA,GAAH,OAAGA,EAAAA,EAAOE,cAAPF,EAAAG,EAAgBC,WAAW,IACjBH,UACxBI,KAAKC,SAAS,wBAAyB,CAAEC,OAAQ,CAC/CC,MAAOH,KAAKI,QAAQR,GAAWI,KAAKI,QAAQC,QAAQ,IACpDC,MAAON,KAAKI,QAAQR,GAAWI,KAAKI,QAAQC,QAAQ,IACpDE,OAAQZ,MAAAA,UAAAA,EAAAA,EAAOE,WAAPW,EAAgBC,WAE3B,CAEDC,eACEV,KAAKI,QAAUO,EAAmBX,KAAKY,cACxC,CAEGC,kBACF,OAAIb,KAAKc,qBACMD,MAAAA,cAEVb,KAAKe,kBAKVf,KAAKU,eAEE,CACLM,OAAQhB,KAAKI,QAAQa,IAAIC,GAAKA,EAAElB,KAAKI,QAAQC,QAAQ,KACrDc,SAAU,CAAC,CACTC,KAAMpB,KAAKqB,UACXlB,MAAO,QACPmB,KAAMtB,KAAKI,QAAQa,IAAIC,GAAKA,EAAElB,KAAKI,QAAQC,QAAQ,UAXrDkB,QAAQC,KAAM,2FACP,GAaV,CAEGC,qBACF,IAAIC,EAAU,IACT1B,KAAK2B,gBAUV,OAPI3B,KAAK4B,0BACPF,EAAU,IACLA,KACAG,EAAoB7B,KAAK8B,wBAIpBC,KAAAA,gBAAgBL,EAC7B,CAEGM,uBACF,OAA2B,IAAvBhC,KAAKiC,eACF,CACLC,EAAG,CACDd,KAAM,SACNe,OAAQ,SACRC,SAAUpC,KAAKqC,mBACfC,KAAMC,IACNC,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIC,SACtB,GAETD,EAAIC,UAAW,EACLD,EAACE,MAAQ3C,KAAKqC,qBAG5BO,EAAG,CACDxB,KAAM,SACNe,OAAQ,SACRC,SAAUpC,KAAKqC,mBACfC,KAAMO,EACNL,MAAQC,GACW,SAAbA,EAAIrB,MAAmBqB,EAAIK,SAE9B,GACDL,EAAIK,UAAW,EACLL,EAACE,MAAQ3C,KAAKqC,qBAI/B,CAGGV,qBACF,MAAeoB,EAAG/C,KAAKgD,iBAAiB,gBACxC,MAAO,CACLC,qBAAqB,EACrBC,UAAWlD,KAAKgC,iBAChBmB,YAAa,CACXC,KAAM,QACNC,WAAW,GAEbC,YAAa,IACbC,SAAUvD,KAAKwD,aAAaC,KAAKzD,MACjC0D,QAAS,CACPC,OAAQ,CACNC,SAAS,GAEX/D,QAAS,CACPgE,SAAS,EACTC,SAAU,UACVC,SAAU/D,KAAKN,iBAAiB+D,KAAKzD,QAGzCgE,MAAOjB,EACPkB,MAAM,EACNC,YAAa,GACbC,YAAanE,KAAKgD,iBAAiB,gBACnCoB,eAAgB,OAChBC,WAAY,GACZC,iBAAkB,EAClBC,gBAAiB,QACjBC,iBAAkBxE,KAAKgD,iBAAiB,wBACxCyB,qBAAsBzE,KAAKgD,iBAAiB,iBAC5C0B,0BAA2B1E,KAAKgD,iBAAiB,iBACjD2B,sBAAuB3E,KAAKgD,iBAAiB,8BAC7C4B,YAAaC,OAAO7E,KAAKgD,iBAAiB,mBAC1C8B,iBAAkBD,OAAO7E,KAAKgD,iBAAiB,yBAC/C+B,iBAAkBF,OAAO7E,KAAKgD,iBAAiB,yBAC/CgC,sBAAuBH,OAAO7E,KAAKgD,iBAAiB,+BACpDiC,eAAgB,GAChBC,gBAAiBlF,KAAKgD,iBAAiB,oBACvCmC,qBAAsBnF,KAAKgD,iBAAiB,0BAC5CoC,UAAU,EACVC,OAAQ,CACNnD,EAAG,CACDoD,KAAM,CACJtB,MAAOhE,KAAKgD,iBAAiB,gBAC7BmB,YAAapB,EACbwC,UAAWxC,GAEbyC,MAAO,CACLxB,MAAOjB,EACPwC,UAAWxC,IAGfH,EAAG,CACD0C,KAAM,CACJtB,MAAOhE,KAAKgD,iBAAiB,gBAC7BmB,YAAapB,EACbwC,UAAWxC,GAEbyC,MAAO,CACLxB,MAAOjB,EACPwC,UAAWxC,GAEb0C,aAAc,EACdC,aAAc,KAIrB,CAEqBrD,yBACpB,IAAAsD,EAAAC,EAAAC,EAAA,OAAY7C,KAAAA,iBAAiB,yBAAtB,OAAA2C,EAAgD3F,KAAKa,cAAL,OAAhD+E,EAAgDD,EAAkBxE,SAAS,KAA3B,OAAA0E,EAAAD,EAA+BtE,WAA/E,EAAgDuE,EAAqCC,OAC7F,EAGH,WAAoBrD,GAClB,OAAqB,MAAVE,MAAcF,EAAIsD,MAAMV,OAAOzC,EAAEoD,iBAAiB,KAAOvD,EAAIsD,MAAME,eAAexD,EAAIyD,cAAc5E,KAAKmB,EAAIE,MAAQ,GAAGwD,SAAS,CAAC,MAAM,GAAMvD,CAC1J,GAhMQwD,QAAU,CAAE,iBAAkB,cAAe,gBAAiB,aAC9DC,OAAS,CACdjF,KAAM,CACJA,KAAMkF,OACNC,QAAS,WAINC,qBAAuB,CAC5B,uBAAwB,IACxB,eAAgB,OAChB,eAAgB,OAChB,eAAgB,OAChB,gBAAiB,OACjB,uBAAwB,OACxB,6BAA8B,OAC9B,mBAAoB,OACpB,yBAA0B,OAC1B,iBAAkB,EAClB,uBAAwB,GACxB,uBAAwB,EACxB,6BAA8B,mBCtBMC,EAItCC,oBAAoB/G,GAAO,IAAAgH,EAAAC,EAAAC,EACzB,SAAKlH,GAAD,SAACA,EAAOO,UAAPyG,EAAepG,KAGlB,OAFAP,KAAK8G,iCACL9G,KAAK+G,yBAIP/G,KAAKgH,yBACL,QAAcrH,MAAAA,GAAH,OAAGA,EAAAA,EAAOO,aAAPP,EAAAiH,EAAetG,MAClBH,EAAA,MAAGR,UAAHkH,EAAGlH,EAAOO,aAAV,EAAG2G,EAAe1G,MAE7BH,KAAKiH,4BAA4BC,UADnBlH,KAAKmH,oCAAoCD,UAEpDE,WAAW,UAAW9G,GACtB8G,WAAW,UAAWjH,GACzBH,KAAKqH,2BACN,CAEDL,yBACEhH,KAAKsH,yBAAyBC,UAAUC,OAAOxH,KAAKyH,8BACrD,CAEDV,yBACE/G,KAAKsH,yBAAyBC,UAAUG,UAAU1H,KAAKyH,8BACxD,CAEDX,4BACE9G,KAAKiH,4BAA4BM,UAAUC,OAAOxH,KAAK2H,iCACxD,CAEDN,4BACErH,KAAKiH,4BAA4BM,UAAUG,UAAU1H,KAAK2H,iCAC3D,IAlCMvB,QAAU,CAAE,qBAAsB,wBAAyB,mCAC3DwB,QAAU,CAAE,yBAA0B,6BCFlBnB,MAAAA,UAAAA,EAS3BhH,YAAYE,GACVK,KAAK6H,sBAAsBX,UAAYvH,EAAMO,OAAO4H,YAAYZ,UAChEvH,EAAMO,OAAO4H,YAAYJ,SACzB1H,KAAK+H,YAAYC,cAAc,IAAIC,YAAYjI,KAAKkI,gBACrD,IAZM9B,QAAU,CAAE,kBAAmB,SAC/BC,EAAAA,OAAS,CACd8B,UAAW,CACT/G,KAAMkF,OACNC,QAAS,iBCLA,MAAA6B,UAAyB3B,EAStClH,UACES,KAAKqI,QAAQL,cACX,IAAAC,YAAgBjI,KAAKkI,eAAgB,CACnChI,OAAQ,CAAE4H,YAAa9H,KAAKsI,YAC5BC,SAAS,EACTC,YAAY,IAGjB,IAhBMpC,QAAU,CAAE,UACZC,OAAS,CACd8B,UAAW,CACT/G,KAAMkF,OACNC,QAAS,4BCAFkC,QAAwB,CACnC,CAACC,EAAsB,4BACvB,CAACC,EAAuB,yCACxB,CAACC,EAAsB,wCACvB,CAACC,EAAmB,sCACpB5H,IAAI,SAASC,GACb,MACgB4H,EAAG5H,EAAE,GACrB,MAAO,CACL6H,WAAY9J,EAHFiC,EAAE,IAIZ8H,sBAAuBF,EAE1B"}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
var t=require("@supercharts/stimulus-base"),e=require("@hotwired/stimulus");function r(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class s extends t.SuperchartChartjsController{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const s=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[s][this.csvData.columns[1]],value:this.csvData[s][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=t.parseContentsAsCsv(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let e={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(e={...e,...t.parseContentsAsJSON(this.chartjsOptionsTarget)}),this.parseForCssVars(e)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:a,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function a(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}s.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],s.values={type:{type:String,default:"line"}},s.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class o extends e.Controller{showDescriptionWith(t){var e,r,s;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const a=null==t||null==(r=t.detail)?void 0:r.value,o=null==t||null==(s=t.detail)?void 0:s.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",a).replaceAll("%label%",o),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}o.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],o.classes=["hideOverallDescription","hideContextualDescription"];class i extends e.Controller{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}i.targets=["chartSourceData","chart"],i.values={eventName:{type:String,default:"update-chart"}};class l extends e.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}l.targets=["data"],l.values={eventName:{type:String,default:"superchart:update-chart"}};const n=[[s,"superchart_controller.js"],[o,"supercharts/describable_controller.js"],[i,"supercharts/filterable_controller.js"],[l,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:r(t[1]),controllerConstructor:e}});exports.DescribableController=o,exports.FilterableController=i,exports.FiltersController=l,exports.SuperchartController=s,exports.controllerDefinitions=n;
|
2
|
-
//# sourceMappingURL=supercharts-bullet-train.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
import{SuperchartChartjsController as t,parseContentsAsCsv as e,parseContentsAsJSON as r}from"@supercharts/stimulus-base";import{Controller as a}from"@hotwired/stimulus";function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}function i(){return i=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(t[a]=r[a])}return t},i.apply(this,arguments)}class o extends t{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const a=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[a][this.csvData.columns[1]],value:this.csvData[a][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t=i({},this.defaultOptions);return this.hasChartjsOptionsTarget&&(t=i({},t,r(this.chartjsOptionsTarget))),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:l,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function l(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}o.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],o.values={type:{type:String,default:"line"}},o.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class n extends a{showDescriptionWith(t){var e,r,a;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const s=null==t||null==(r=t.detail)?void 0:r.value,i=null==t||null==(a=t.detail)?void 0:a.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",s).replaceAll("%label%",i),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}n.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],n.classes=["hideOverallDescription","hideContextualDescription"];class c extends a{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}c.targets=["chartSourceData","chart"],c.values={eventName:{type:String,default:"update-chart"}};class h extends a{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}h.targets=["data"],h.values={eventName:{type:String,default:"superchart:update-chart"}};const d=[[o,"superchart_controller.js"],[n,"supercharts/describable_controller.js"],[c,"supercharts/filterable_controller.js"],[h,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});export{n as DescribableController,c as FilterableController,h as FiltersController,o as SuperchartController,d as controllerDefinitions};
|
2
|
-
//# sourceMappingURL=supercharts-bullet-train.modern.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.modern.mjs","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","_extends","defaultOptions","hasChartjsOptionsTarget","options","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","axisColor","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|
@@ -1,2 +0,0 @@
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@supercharts/stimulus-base"),require("@hotwired/stimulus")):"function"==typeof define&&define.amd?define(["exports","@supercharts/stimulus-base","@hotwired/stimulus"],e):e((t||self).superchartsBulletTrain={},t.stimulusBase,t.stimulus)}(this,function(t,e,r){function s(t){const e=(t.match(/^(?:\.\/)?(.+)(?:[_-]controller\..+?)$/)||[])[1];if(e)return e.replace(/_/g,"-").replace(/\//g,"--")}class a extends e.SuperchartChartjsController{connect(){super.connect()}updateChart(){super.updateChart()}describeDataForX(t){var e,r;const s=(null==t||null==(e=t.tooltip)?void 0:e.dataPoints[0]).dataIndex;this.dispatch("description-requested",{detail:{label:this.csvData[s][this.csvData.columns[1]],value:this.csvData[s][this.csvData.columns[3]],show:!(null==t||null==(r=t.tooltip)||!r.opacity)}})}parseCsvData(){this.csvData=e.parseContentsAsCsv(this.csvDataTarget)}get chartjsData(){return this.hasChartJsDataTarget?super.chartjsData():this.hasCsvDataTarget?(this.parseCsvData(),{labels:this.csvData.map(t=>t[this.csvData.columns[0]]),datasets:[{type:this.typeValue,label:"Value",data:this.csvData.map(t=>t[this.csvData.columns[2]])}]}):(console.warn("The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)"),[])}get chartjsOptions(){let t={...this.defaultOptions};return this.hasChartjsOptionsTarget&&(t={...t,...e.parseContentsAsJSON(this.chartjsOptionsTarget)}),this.parseForCssVars(t)}get animationOptions(){return!1!==this.runAnimations&&{x:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:NaN,delay:t=>"data"!==t.type||t.xStarted?0:(t.xStarted=!0,t.index*this.delayBetweenPoints)},y:{type:"number",easing:"linear",duration:this.delayBetweenPoints,from:o,delay:t=>"data"!==t.type||t.yStarted?0:(t.yStarted=!0,t.index*this.delayBetweenPoints)}}}get defaultOptions(){const t=this.cssPropertyValue("--axis-color");return{maintainAspectRatio:!1,animation:this.animationOptions,interaction:{mode:"index",intersect:!1},resizeDelay:200,onResize:this.handleResize.bind(this),plugins:{legend:{display:!1},tooltip:{enabled:!1,position:"nearest",external:this.describeDataForX.bind(this)}},color:t,fill:!1,lineTension:.3,borderColor:this.cssPropertyValue("--line-color"),borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",pointBorderColor:this.cssPropertyValue("--point-stroke-color"),pointBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBackgroundColor:this.cssPropertyValue("--point-color"),pointHoverBorderColor:this.cssPropertyValue("--point-stroke-color-hover"),pointRadius:Number(this.cssPropertyValue("--point-radius")),pointHoverRadius:Number(this.cssPropertyValue("--point-hover-radius")),pointBorderWidth:Number(this.cssPropertyValue("--point-border-width")),pointHoverBorderWidth:Number(this.cssPropertyValue("--point-hover-border-width")),pointHitRadius:10,backgroundColor:this.cssPropertyValue("--bar-fill-color"),hoverBackgroundColor:this.cssPropertyValue("--bar-hover-fill-color"),spanGaps:!1,scales:{x:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t}},y:{grid:{color:this.cssPropertyValue("--grid-color"),borderColor:t,tickColor:t},ticks:{color:t,tickColor:t},suggestedMin:0,suggestedMax:10}}}}get delayBetweenPoints(){var t,e,r;return this.cssPropertyValue("--animation-duration")/(null==(t=this.chartjsData)||null==(e=t.datasets[0])||null==(r=e.data)?void 0:r.length)}}function o(t){return 0===t.index?t.chart.scales.y.getPixelForValue(100):t.chart.getDatasetMeta(t.datasetIndex).data[t.index-1].getProps(["y"],!0).y}a.targets=["chartjsOptions","chartjsData","chartjsCanvas","csvData"],a.values={type:{type:String,default:"line"}},a.defaultCssProperties={"--animation-duration":200,"--axis-color":"#999","--grid-color":"#eee","--line-color":"#aaa","--point-color":"#333","--point-stroke-color":"#fff","--point-stroke-color-hover":"#eee","--bar-fill-color":"#999","--bar-hover-fill-color":"#333","--point-radius":6,"--point-hover-radius":10,"--point-border-width":4,"--point-hover-border-width":3};class i extends r.Controller{showDescriptionWith(t){var e,r,s;if(null==t||null==(e=t.detail)||!e.show)return this.hideContextualDescription(),void this.showOverallDescription();this.hideOverallDescription();const a=null==t||null==(r=t.detail)?void 0:r.value,o=null==t||null==(s=t.detail)?void 0:s.label;this.contextualDescriptionTarget.innerHTML=this.contextualDescriptionTemplateTarget.innerHTML.replaceAll("%value%",a).replaceAll("%label%",o),this.showContextualDescription()}hideOverallDescription(){this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)}showOverallDescription(){this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)}hideContextualDescription(){this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)}showContextualDescription(){this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)}}i.targets=["overallDescription","contextualDescription","contextualDescriptionTemplate"],i.classes=["hideOverallDescription","hideContextualDescription"];class l extends r.Controller{updateChart(t){this.chartSourceDataTarget.innerHTML=t.detail.dataElement.innerHTML,t.detail.dataElement.remove(),this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))}}l.targets=["chartSourceData","chart"],l.values={eventName:{type:String,default:"update-chart"}};class n extends r.Controller{connect(){this.element.dispatchEvent(new CustomEvent(this.eventNameValue,{detail:{dataElement:this.dataTarget},bubbles:!0,cancelable:!0}))}}n.targets=["data"],n.values={eventName:{type:String,default:"superchart:update-chart"}};const c=[[a,"superchart_controller.js"],[i,"supercharts/describable_controller.js"],[l,"supercharts/filterable_controller.js"],[n,"supercharts/filters_controller.js"]].map(function(t){const e=t[0];return{identifier:s(t[1]),controllerConstructor:e}});t.DescribableController=i,t.FilterableController=l,t.FiltersController=n,t.SuperchartController=a,t.controllerDefinitions=c});
|
2
|
-
//# sourceMappingURL=supercharts-bullet-train.umd.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"supercharts-bullet-train.umd.js","sources":["../../../node_modules/@hotwired/stimulus-webpack-helpers/dist/stimulus-webpack-helpers.js","../../javascript/controllers/superchart_controller.js","../../javascript/controllers/supercharts/describable_controller.js","../../javascript/controllers/supercharts/filterable_controller.js","../../javascript/controllers/supercharts/filters_controller.js","../../javascript/controllers/index.js"],"sourcesContent":["/*\nStimulus Webpack Helpers 1.0.0\nCopyright © 2021 Basecamp, LLC\n */\nfunction definitionsFromContext(context) {\n return context.keys()\n .map((key) => definitionForModuleWithContextAndKey(context, key))\n .filter((value) => value);\n}\nfunction definitionForModuleWithContextAndKey(context, key) {\n const identifier = identifierForContextKey(key);\n if (identifier) {\n return definitionForModuleAndIdentifier(context(key), identifier);\n }\n}\nfunction definitionForModuleAndIdentifier(module, identifier) {\n const controllerConstructor = module.default;\n if (typeof controllerConstructor == \"function\") {\n return { identifier, controllerConstructor };\n }\n}\nfunction identifierForContextKey(key) {\n const logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n if (logicalName) {\n return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n }\n}\n\nexport { definitionForModuleAndIdentifier, definitionForModuleWithContextAndKey, definitionsFromContext, identifierForContextKey };\n","import { SuperchartChartjsController, parseContentsAsJSON, parseContentsAsCsv } from '@supercharts/stimulus-base'\n\nexport default class extends SuperchartChartjsController {\n static targets = [ \"chartjsOptions\", \"chartjsData\", \"chartjsCanvas\", \"csvData\" ]\n static values = {\n type: { \n type: String,\n default: \"line\"\n }\n }\n \n static defaultCssProperties = {\n '--animation-duration': 200, // milliseconds\n '--axis-color': '#999',\n '--grid-color': '#eee',\n '--line-color': '#aaa',\n '--point-color': '#333',\n '--point-stroke-color': '#fff',\n '--point-stroke-color-hover': '#eee',\n '--bar-fill-color': '#999',\n '--bar-hover-fill-color': '#333',\n '--point-radius': 6,\n '--point-hover-radius': 10,\n '--point-border-width': 4,\n '--point-hover-border-width': 3,\n }\n \n connect() {\n super.connect()\n }\n \n updateChart() {\n super.updateChart()\n }\n \n describeDataForX(event) {\n const point = event?.tooltip?.dataPoints[0]\n const dataIndex = point.dataIndex\n this.dispatch(\"description-requested\", { detail: {\n label: this.csvData[dataIndex][this.csvData.columns[1]],\n value: this.csvData[dataIndex][this.csvData.columns[3]],\n show: !!event?.tooltip?.opacity\n } })\n }\n \n parseCsvData() {\n this.csvData = parseContentsAsCsv(this.csvDataTarget)\n }\n \n get chartjsData() {\n if (this.hasChartJsDataTarget) {\n return super.chartjsData()\n }\n if (!this.hasCsvDataTarget) {\n console.warn(`The chart needs data in a in a csv target or in a chartjsData target (in chart.js JSON)`)\n return []\n }\n \n this.parseCsvData()\n \n return {\n labels: this.csvData.map(d => d[this.csvData.columns[0]]),\n datasets: [{\n type: this.typeValue,\n label: \"Value\",\n data: this.csvData.map(d => d[this.csvData.columns[2]])\n }]\n }\n }\n \n get chartjsOptions() {\n let options = {\n ...this.defaultOptions\n }\n \n if (this.hasChartjsOptionsTarget) {\n options = {\n ...options,\n ...parseContentsAsJSON(this.chartjsOptionsTarget)\n }\n }\n \n return this.parseForCssVars(options)\n }\n \n get animationOptions() {\n if (this.runAnimations === false) { return false }\n return {\n x: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: NaN, // the point is initially skipped\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.xStarted) {\n return 0;\n }\n ctx.xStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n },\n y: {\n type: 'number',\n easing: 'linear',\n duration: this.delayBetweenPoints,\n from: previousY,\n delay: (ctx) => {\n if (ctx.type !== 'data' || ctx.yStarted) {\n return 0;\n }\n ctx.yStarted = true;\n return ctx.index * this.delayBetweenPoints;\n }\n }\n }\n }\n\n // You can set default options in this getter for all your charts.\n get defaultOptions() {\n const axisColor = this.cssPropertyValue('--axis-color')\n return {\n maintainAspectRatio: false,\n animation: this.animationOptions,\n interaction: {\n mode: 'index',\n intersect: false,\n },\n resizeDelay: 200, // milliseconds\n onResize: this.handleResize.bind(this),\n plugins: {\n legend: {\n display: false,\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: this.describeDataForX.bind(this)\n }\n },\n color: axisColor,\n fill: false,\n lineTension: 0.3,\n borderColor: this.cssPropertyValue('--line-color'),\n borderCapStyle: \"butt\",\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: \"miter\",\n pointBorderColor: this.cssPropertyValue('--point-stroke-color'),\n pointBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBackgroundColor: this.cssPropertyValue('--point-color'),\n pointHoverBorderColor: this.cssPropertyValue('--point-stroke-color-hover'),\n pointRadius: Number(this.cssPropertyValue('--point-radius')),\n pointHoverRadius: Number(this.cssPropertyValue('--point-hover-radius')),\n pointBorderWidth: Number(this.cssPropertyValue('--point-border-width')),\n pointHoverBorderWidth: Number(this.cssPropertyValue('--point-hover-border-width')),\n pointHitRadius: 10,\n backgroundColor: this.cssPropertyValue('--bar-fill-color'),\n hoverBackgroundColor: this.cssPropertyValue('--bar-hover-fill-color'),\n spanGaps: false,\n scales: {\n x: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n }\n },\n y: {\n grid: {\n color: this.cssPropertyValue('--grid-color'),\n borderColor: axisColor,\n tickColor: axisColor,\n },\n ticks: {\n color: axisColor,\n tickColor: axisColor\n },\n suggestedMin: 0,\n suggestedMax: 10\n }\n }\n }\n }\n \n get delayBetweenPoints() {\n return this.cssPropertyValue('--animation-duration') / this.chartjsData?.datasets[0]?.data?.length\n }\n}\n\nfunction previousY (ctx) {\n return ctx.index === 0 ? ctx.chart.scales.y.getPixelForValue(100) : ctx.chart.getDatasetMeta(ctx.datasetIndex).data[ctx.index - 1].getProps(['y'], true).y;\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"overallDescription\", \"contextualDescription\", \"contextualDescriptionTemplate\" ]\n static classes = [ \"hideOverallDescription\", \"hideContextualDescription\" ]\n \n showDescriptionWith(event) {\n if (!event?.detail?.show) {\n this.hideContextualDescription()\n this.showOverallDescription()\n return\n }\n \n this.hideOverallDescription()\n const value = event?.detail?.value\n const label = event?.detail?.label\n let newHTML = this.contextualDescriptionTemplateTarget.innerHTML\n this.contextualDescriptionTarget.innerHTML = newHTML\n .replaceAll(\"%value%\", value)\n .replaceAll(\"%label%\", label)\n this.showContextualDescription()\n }\n \n hideOverallDescription() {\n this.overallDescriptionTarget.classList.add(...this.hideOverallDescriptionClasses)\n }\n \n showOverallDescription() {\n this.overallDescriptionTarget.classList.remove(...this.hideOverallDescriptionClasses)\n }\n \n hideContextualDescription() {\n this.contextualDescriptionTarget.classList.add(...this.hideContextualDescriptionClasses)\n }\n \n showContextualDescription() {\n this.contextualDescriptionTarget.classList.remove(...this.hideContextualDescriptionClasses)\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"chartSourceData\", \"chart\" ]\n static values = {\n eventName: {\n type: String,\n default: \"update-chart\"\n }\n }\n \n updateChart(event) {\n this.chartSourceDataTarget.innerHTML = event.detail.dataElement.innerHTML\n event.detail.dataElement.remove()\n this.chartTarget.dispatchEvent(new CustomEvent(this.eventNameValue))\n }\n}","import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n static targets = [ \"data\" ]\n static values = {\n eventName: {\n type: String,\n default: \"superchart:update-chart\"\n }\n }\n \n connect() {\n this.element.dispatchEvent(\n new CustomEvent(this.eventNameValue, {\n detail: { dataElement: this.dataTarget },\n bubbles: true,\n cancelable: true\n })\n )\n }\n}","import { identifierForContextKey } from \"@hotwired/stimulus-webpack-helpers\"\n\nimport SuperchartController from \"./superchart_controller\"\nimport DescribableController from \"./supercharts/describable_controller\"\nimport FilterableController from \"./supercharts/filterable_controller\"\nimport FiltersController from \"./supercharts/filters_controller\"\n\nexport const controllerDefinitions = [\n [SuperchartController, \"superchart_controller.js\"],\n [DescribableController, \"supercharts/describable_controller.js\"],\n [FilterableController, \"supercharts/filterable_controller.js\"],\n [FiltersController, \"supercharts/filters_controller.js\"],\n].map(function(d) {\n const key = d[1]\n const controller = d[0]\n return {\n identifier: identifierForContextKey(key),\n controllerConstructor: controller\n }\n})\n\nexport {\n SuperchartController,\n DescribableController,\n FilterableController,\n FiltersController,\n}\n"],"names":["identifierForContextKey","key","logicalName","match","replace","SuperchartChartjsController","connect","super","updateChart","describeDataForX","event","dataIndex","tooltip","_event$tooltip","dataPoints","this","dispatch","detail","label","csvData","columns","value","show","_event$tooltip2","opacity","parseCsvData","parseContentsAsCsv","csvDataTarget","chartjsData","hasChartJsDataTarget","hasCsvDataTarget","labels","map","d","datasets","type","typeValue","data","console","warn","chartjsOptions","options","defaultOptions","hasChartjsOptionsTarget","parseContentsAsJSON","chartjsOptionsTarget","parseForCssVars","animationOptions","runAnimations","x","easing","duration","delayBetweenPoints","from","NaN","delay","ctx","xStarted","index","y","previousY","yStarted","axisColor","cssPropertyValue","maintainAspectRatio","animation","interaction","mode","intersect","resizeDelay","onResize","handleResize","bind","plugins","legend","display","enabled","position","external","color","fill","lineTension","borderColor","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","pointBorderColor","pointBackgroundColor","pointHoverBackgroundColor","pointHoverBorderColor","pointRadius","Number","pointHoverRadius","pointBorderWidth","pointHoverBorderWidth","pointHitRadius","backgroundColor","hoverBackgroundColor","spanGaps","scales","grid","tickColor","ticks","suggestedMin","suggestedMax","_this$chartjsData","_this$chartjsData$dat","_this$chartjsData$dat2","length","chart","getPixelForValue","getDatasetMeta","datasetIndex","getProps","targets","values","String","default","defaultCssProperties","Controller","showDescriptionWith","_event$detail","_event$detail2","_event$detail3","hideContextualDescription","showOverallDescription","hideOverallDescription","contextualDescriptionTarget","innerHTML","contextualDescriptionTemplateTarget","replaceAll","showContextualDescription","overallDescriptionTarget","classList","add","hideOverallDescriptionClasses","remove","hideContextualDescriptionClasses","classes","chartSourceDataTarget","dataElement","chartTarget","dispatchEvent","CustomEvent","eventNameValue","eventName","_class","element","dataTarget","bubbles","cancelable","controllerDefinitions","SuperchartController","DescribableController","FilterableController","FiltersController","controller","identifier","controllerConstructor"],"mappings":"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"}
|