diff --git a/demo_rails/app/assets/javascripts/handling_events.coffee b/demo_rails/app/assets/javascripts/handling_events.coffee new file mode 100644 index 0000000..24f83d1 --- /dev/null +++ b/demo_rails/app/assets/javascripts/handling_events.coffee @@ -0,0 +1,3 @@ +# Place all the behaviors and hooks related to the matching controller here. +# All this logic will automatically be available in application.js. +# You can use CoffeeScript in this file: http://coffeescript.org/ diff --git a/demo_rails/app/assets/stylesheets/handling_events.scss b/demo_rails/app/assets/stylesheets/handling_events.scss new file mode 100644 index 0000000..1a4dec3 --- /dev/null +++ b/demo_rails/app/assets/stylesheets/handling_events.scss @@ -0,0 +1,3 @@ +// Place all the styles related to the HandlingEvents controller here. +// They will automatically be included in application.css. +// You can use Sass (SCSS) here: http://sass-lang.com/ diff --git a/demo_rails/app/controllers/handling_events_controller.rb b/demo_rails/app/controllers/handling_events_controller.rb new file mode 100644 index 0000000..a402b3b --- /dev/null +++ b/demo_rails/app/controllers/handling_events_controller.rb @@ -0,0 +1,35 @@ +class HandlingEventsController < ApplicationController + def handling_events + Daru::View.plotting_library = :googlecharts + + data = [ + ['Year', 'Sales', 'Expenses'], + ['2013', 1000, 400], + ['2014', 1170, 460], + ['2015', 660, 1120], + ['2016', 1030, 540] + ] + user_options = { + listeners: { + page: "alert('The user is navigating to page ' + (e['page'] + 1));", + select: "alert('A table row was selected');" + } + } + @table = Daru::View::Table.new(data, {page: 'enable', pageSize: 2}, user_options) + + user_options_chart = { + listeners: { + select: " var selection = chart.getSelection(); + var selectedValue = data_table.getFormattedValue(selection[0].row, 0); + alert('You selected ' + selectedValue + ' year');", + # exports the chart to PDF format + ready: "var doc = new jsPDF(); + doc.addImage(chart.getImageURI(), 0, 0); + doc.save('chart.pdf');" + } + } + @column_chart = Daru::View::Plot.new(@table.table, { type: :column, width: 800 }, user_options_chart) + + render "handling_events" , layout: "googlecharts_layout" + end +end diff --git a/demo_rails/app/helpers/handling_events_helper.rb b/demo_rails/app/helpers/handling_events_helper.rb new file mode 100644 index 0000000..b7db6ef --- /dev/null +++ b/demo_rails/app/helpers/handling_events_helper.rb @@ -0,0 +1,2 @@ +module HandlingEventsHelper +end diff --git a/demo_rails/app/views/handling_events/handling_events.erb b/demo_rails/app/views/handling_events/handling_events.erb new file mode 100644 index 0000000..3c2425b --- /dev/null +++ b/demo_rails/app/views/handling_events/handling_events.erb @@ -0,0 +1,27 @@ +

Handling Events in Google Table

+

+ Data : + <%=raw @table.data %> +
+ Options + <%=raw @table.options %> +
+ Table : +
+ <%=raw @table.div %> +

+
+ +

Handling events in Google charts

+

+ Data : + <%=raw @column_chart.data %> +
+ Options + <%=raw @column_chart.options %> +
+ Chart : +
+ <%=raw @column_chart.div %> +

+
\ No newline at end of file diff --git a/demo_rails/config/routes.rb b/demo_rails/config/routes.rb index 5fdb16f..449a667 100644 --- a/demo_rails/config/routes.rb +++ b/demo_rails/config/routes.rb @@ -8,4 +8,5 @@ get '/highchartscss', to: 'highcharts_css#highcharts_css' get '/highchartstockmap', to: 'highchart_stock_map#highchart_stock_map' get '/multiplecharts', to: 'multiple_charts#multiple_charts' + get '/handlingevents', to: 'handling_events#handling_events' end diff --git a/demo_rails/test/controllers/handling_events_controller_test.rb b/demo_rails/test/controllers/handling_events_controller_test.rb new file mode 100644 index 0000000..c58b494 --- /dev/null +++ b/demo_rails/test/controllers/handling_events_controller_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class HandlingEventsControllerTest < ActionDispatch::IntegrationTest + # test "the truth" do + # assert true + # end +end diff --git a/demo_sinatra/app.rb b/demo_sinatra/app.rb index 1a0eb87..51e15bd 100644 --- a/demo_sinatra/app.rb +++ b/demo_sinatra/app.rb @@ -26,6 +26,11 @@ erb :highchart_stock_map, :layout => :highcharts_layout end +get '/highchartscss' do + highcharts_css + erb :highcharts_css, :layout => :highcharts_layout +end + def highchart_example # bar chart opts = { @@ -316,32 +321,32 @@ def highchart_stock_map opts5 = { - chart: { - type: 'pie', - options3d: { - enabled: true, - alpha: 45, - beta: 0 - } - }, - title: { - text: 'Browser market shares at a specific website, 2014' - }, - tooltip: { - pointFormat: '{series.name}: {point.percentage:.1f}%' - }, - plotOptions: { - pie: { - allowPointSelect: true, - cursor: 'pointer', - depth: 35, - dataLabels: { - enabled: true, - format: '{point.name}' - } - } + chart: { + type: 'pie', + options3d: { + enabled: true, + alpha: 45, + beta: 0 + } + }, + title: { + text: 'Browser market shares at a specific website, 2014' + }, + tooltip: { + pointFormat: '{series.name}: {point.percentage:.1f}%' + }, + plotOptions: { + pie: { + allowPointSelect: true, + cursor: 'pointer', + depth: 35, + dataLabels: { + enabled: true, + format: '{point.name}' + } } } + } # data for the charts series_dt5 = ([{ @@ -529,3 +534,86 @@ def highchart_stock_map @map_idea = Daru::View::Plot.new(series_dt8, opts8) end + +def highcharts_css + # set the library, to plot charts + Daru::View.plotting_library = :highcharts + + # options for the charts + opts = { + chart: {defaultSeriesType: 'line'}, + css: ['.highcharts-background {fill: #efefef;stroke: #a4edba;stroke-width: 2px;}'], + title: { + text: 'Solar Employment Growth by Sector, 2010-2016' + }, + + subtitle: { + text: 'Source: thesolarfoundation.com' + }, + + yAxis: { + title: { + text: 'Number of Employees' + } + }, + legend: { + layout: 'vertical', + align: 'right', + verticalAlign: 'middle' + } + } + + # data for the charts + data = Daru::Vector.new([29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]) + + # initialize + @line_graph = Daru::View::Plot.new(data, opts) + + opts2 = { + chart: { + type: 'column' + }, + + css: ['.highcharts-color-0 {fill: #7cb5ec;stroke: #7cb5ec;}', + '.highcharts-axis.highcharts-color-0 .highcharts-axis-line {stroke: #7cb5ec;}', + '.highcharts-axis.highcharts-color-0 text {fill: #7cb5ec;}', + '.highcharts-color-1 {fill: #90ed7d;stroke: #90ed7d;}', + '.highcharts-axis.highcharts-color-1 .highcharts-axis-line {stroke: #90ed7d;}', + '.highcharts-axis.highcharts-color-1 text {fill: #90ed7d;}', + '.highcharts-yaxis .highcharts-axis-line {stroke-width: 2px;}' + ], + + title: { + text: 'Styling axes' + }, + + yAxis: [{ + className: 'highcharts-color-0', + title: { + text: 'Primary axis' + } + }, { + className: 'highcharts-color-1', + opposite: true, + title: { + text: 'Secondary axis' + } + }], + + plotOptions: { + column: { + borderRadius: 5 + } + } + } + + series_dt2 = [{ + data: [1, 3, 2, 4] + }, { + data: [324, 124, 547, 221], + yAxis: 1 + }] + + # initialize + @column_graph = Daru::View::Plot.new(series_dt2, opts2) +end diff --git a/demo_sinatra/views/highcharts_css.erb b/demo_sinatra/views/highcharts_css.erb new file mode 100644 index 0000000..de814e3 --- /dev/null +++ b/demo_sinatra/views/highcharts_css.erb @@ -0,0 +1,27 @@ +

Line Graph - Grey Background using CSS

+

+ Data : + <%= @line_graph.chart.series_data %> +
+ Options + <%= @line_graph.chart.options %> +
+ Chart : +
+ <%= @line_graph.div %> +

+
+ +

Column Graph - Different styling using CSS

+

+ Data : + <%= @column_graph.chart.series_data %> +
+ Options + <%= @column_graph.chart.options %> +
+ Chart : +
+ <%= @column_graph.div %> +

+
\ No newline at end of file