diff --git a/lib/daru/view.rb b/lib/daru/view.rb
index a1992f4..02bec5a 100644
--- a/lib/daru/view.rb
+++ b/lib/daru/view.rb
@@ -112,7 +112,10 @@ def dependent_script(lib=:nyaplot)
when :nyaplot
Nyaplot.init_script
when :highcharts
- LazyHighCharts.init_script
+ init_code = ''
+ init_code << LazyHighCharts.init_css
+ init_code << LazyHighCharts.init_script
+ init_code
when :googlecharts
GoogleVisualr.init_script
when :datatables
diff --git a/lib/daru/view/adapters/highcharts.rb b/lib/daru/view/adapters/highcharts.rb
index 64cfcf1..4d7bef6 100644
--- a/lib/daru/view/adapters/highcharts.rb
+++ b/lib/daru/view/adapters/highcharts.rb
@@ -51,7 +51,10 @@ def init(data=[], options={})
end
def init_script
- LazyHighCharts.init_script
+ init_code = ''
+ init_code << LazyHighCharts.init_css
+ init_code << LazyHighCharts.init_script
+ init_code
end
def generate_body(plot)
diff --git a/lib/daru/view/adapters/highcharts/display.rb b/lib/daru/view/adapters/highcharts/display.rb
index 2444a5a..10cd6c2 100644
--- a/lib/daru/view/adapters/highcharts/display.rb
+++ b/lib/daru/view/adapters/highcharts/display.rb
@@ -2,10 +2,13 @@
require_relative 'iruby_notebook'
module LazyHighCharts
+ # Loads the dependent javascript required
+ #
+ # @param [Array] dependent js files required
+ # @return [String] js code of the dependent files
def self.init_script(
dependent_js=['js/highstock.js', 'js/map.js', 'highcharts-more.js',
- 'modules/exporting.js', 'highcharts-3d.js', 'modules/data.js'],
- dependent_css=['highcharts.css']
+ 'modules/exporting.js', 'highcharts-3d.js', 'modules/data.js']
)
# Highstock is based on Highcharts, meaning it has all the core
# functionality of Highcharts, plus some additional features. So
@@ -14,15 +17,25 @@ def self.init_script(
#
# Note: Don't reorder the dependent_js elements. It must be loaded in
# the same sequence. Otherwise some of the JS overlap and doesn't work.
- css = ''
- css << "\n"
js = ''
js << "\n"
- css + js
+ js
+ end
+
+ # Loads the dependent css required in styled mode
+ #
+ # @param [Array] dependent css files required
+ # @return [String] CSS code of the dependent file(s)
+ def self.init_css(
+ dependent_css=['highcharts.css']
+ )
+ css = ''
+ css << "\n"
+ css
end
class HighChart
diff --git a/spec/adapters/highcharts/display_spec.rb b/spec/adapters/highcharts/display_spec.rb
index 3ce9896..429e0c1 100644
--- a/spec/adapters/highcharts/display_spec.rb
+++ b/spec/adapters/highcharts/display_spec.rb
@@ -8,8 +8,6 @@
expect(js).to match(/BEGIN js\/highstock.js/i)
expect(js).to match(/Highstock JS/i)
expect(js).to match(/END js\/highstock.js/i)
- expect(js).to match(/BEGIN highcharts.css/i)
- expect(js).to match(/END highcharts.css/i)
expect(js).to match(/BEGIN highcharts-more.js/i)
expect(js).to match(/END highcharts-more.js/i)
expect(js).to match(/BEGIN modules\/exporting.js/i)
@@ -28,6 +26,13 @@
/console.log\(\"Finish loading highchartsjs\"\)/i)
end
end
+ describe "#init_css" do
+ it "generates valid initial css" do
+ css = LazyHighCharts.init_css
+ expect(css).to match(/BEGIN highcharts.css/i)
+ expect(css).to match(/END highcharts.css/i)
+ end
+ end
end
describe LazyHighCharts::HighChart do
diff --git a/spec/view_spec.rb b/spec/view_spec.rb
index 8205dc2..30486c5 100644
--- a/spec/view_spec.rb
+++ b/spec/view_spec.rb
@@ -44,4 +44,23 @@
end
end
-end
\ No newline at end of file
+ context "#dependent_script" do
+ it "should generate valid dependent script of highcharts" do
+ script = Daru::View.dependent_script(:highcharts)
+ expect(script).to match(/BEGIN highcharts.css/i)
+ expect(script).to match(/END highcharts.css/i)
+ expect(script).to match(/BEGIN js\/highstock.js/i)
+ expect(script).to match(/Highstock JS/i)
+ expect(script).to match(/END js\/highstock.js/i)
+ expect(script).to match(/BEGIN highcharts-more.js/i)
+ expect(script).to match(/END highcharts-more.js/i)
+ expect(script).to match(/BEGIN modules\/exporting.js/i)
+ expect(script).to match(/END modules\/exporting.js/i)
+ expect(script).to match(/BEGIN highcharts-3d.js/i)
+ expect(script).to match(/END highcharts-3d.js/i)
+ expect(script).to match(/BEGIN modules\/data.js/i)
+ expect(script).to match(/END modules\/data.js/i)
+ end
+ end
+
+end