app/assets/javascripts/rorschart.js in rorschart-0.7.2 vs app/assets/javascripts/rorschart.js in rorschart-0.8.0

- old
+ new

@@ -2,11 +2,11 @@ /*global google, $*/ (function () { 'use strict'; - var rorschart, resize; + var Rorschart, resize, refresh; if (window.hasOwnProperty('google')) { google.load('visualization', '1.0', {'packages': ['corechart', 'table']}); } else { throw new Error("Please include Google Charts first."); @@ -54,11 +54,11 @@ } } return dataTable; } - function drawChart(ChartClass, element, dataSource, options) { + function drawChart(chart, chartClass, element, dataSource, options) { var dataTable, type; type = Object.prototype.toString.call(dataSource); if (type === '[object String]') { @@ -76,14 +76,14 @@ } catch (err) { chartError(element, err.message); throw err; } - var chart = new ChartClass(element); + chart.chart = new chartClass(element); resize(function () { - chart.draw(dataTable, options); + chart.chart.draw(dataTable, options); }); } function retrieveRemoteData(element, url, callback) { $.ajax({ @@ -104,19 +104,48 @@ chartError(element, message + " "+ jqXHR.responseText); } }); } - rorschart = function (chartClass, element, dataSource, options) { - element = getElement(element); - if (typeof dataSource === "string") { - retrieveRemoteData(element, dataSource, function (data) { - google.setOnLoadCallback(drawChart(chartClass, element, data, options)); + refresh = function (chart, klass_name, hideRefreshMessage) { + + if (!hideRefreshMessage) { + setText(chart.element, 'Loading Chart data...'); + } + + chart.chartClass = klass_name || chart.chartClass + + if (typeof chart.dataSource === "string") { + retrieveRemoteData(chart.element, chart.dataSource, function (data) { + google.setOnLoadCallback(drawChart(chart, chart.chartClass, chart.element, data, chart.options)); }); } else { - google.setOnLoadCallback(drawChart(chartClass, element, dataSource, options)); + google.setOnLoadCallback(drawChart(chart, chart.chartClass, chart.element, chart.dataSource, chart.options)); } + } + + function setElement(chart, chartClass, element, dataSource, options) { + + if (typeof element === "string") { + element = document.getElementById(element); + } + + chart.chartClass = chartClass + chart.element = element; + chart.options = options || {}; + chart.dataSource = dataSource; + Rorschart.charts[element.id] = chart; + refresh(chart); + } + + Rorschart = { + GoogleChart: function (chartClass, element, dataSource, options) { + setElement(this, chartClass, element, dataSource, options); + }, + charts: {} }; - window.Rorschart = rorschart; + + window.Rorschart = Rorschart; + window.Rorschart.refresh = refresh; }());