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