From ea90d4f9c7d8812bd26c9881b7d10737cade1f57 Mon Sep 17 00:00:00 2001 From: Mitchell Buckley Date: Thu, 13 Apr 2017 20:01:24 +1000 Subject: [PATCH 1/2] Remove the map in data_formatter.rb --- app/assets/javascripts/chart.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/chart.js b/app/assets/javascripts/chart.js index 119f263..29133de 100644 --- a/app/assets/javascripts/chart.js +++ b/app/assets/javascripts/chart.js @@ -139,12 +139,10 @@ $(function() { $.each(data['data'], function(key, value) { var name = Kitechart.parseJSONorKeys(key)[0].toString(); - chartData.push({ - name: name, - y: parseFloat(Kitechart.parseValue(value)), - drilldown: name, - color: value['color'] + name: JSON.parse(key)[0].toString(), + y: parseFloat(value), + drilldown: JSON.parse(key)[0].toString() }); }); return chartData; @@ -152,13 +150,13 @@ $(function() { formatDrilldownData: function(data) { var drilldownData = []; - var dataLength = _.size(Kitechart.parseJSONorKeys(Object.keys(data['data'])[0])); + var dataLength = _.size(JSON.parse(Object.keys(data['data'])[0])); for (var i = 1; i <= dataLength - 1; i++) { $.each(data['data'], function(key, value) { - var name = _.dropRight(Kitechart.parseJSONorKeys(key), dataLength - i); + var name = _.dropRight(JSON.parse(key), dataLength - i); if (i !== dataLength - 1) { - var drilldown = _.dropRight(Kitechart.parseJSONorKeys(key), dataLength - i - 1); + var drilldown = _.dropRight(JSON.parse(key), dataLength - i - 1); } drilldownData.push({ @@ -166,8 +164,8 @@ $(function() { id: _.join(name, '-'), data: [ { - name: Kitechart.parseJSONorKeys(key)[i], - y: parseFloat(Kitechart.parseValue(value)), + name: JSON.parse(key)[i], + y: parseFloat(value), drilldown: _.join(drilldown, '-') } ] From 562fa1219a20fd2b07af67a2e3c819b31690f12a Mon Sep 17 00:00:00 2001 From: Mitchell Buckley Date: Fri, 14 Apr 2017 10:12:10 +1000 Subject: [PATCH 2/2] Remove lodash --- app/assets/javascripts/chart.js | 83 +++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/app/assets/javascripts/chart.js b/app/assets/javascripts/chart.js index 29133de..ea41aa2 100644 --- a/app/assets/javascripts/chart.js +++ b/app/assets/javascripts/chart.js @@ -3,29 +3,55 @@ $(function() { window.Chart = { mergeNames: function(arr) { - return _.chain(arr).groupBy('name').mapValues(function(v) { - return { name: v[0].name, y: _.sumBy(v, 'y'), color: v[0].color, drilldown: v[0].name }; - }).value(); + var holder = {}; + arr.forEach(function(d) { + if (holder.hasOwnProperty(d.name)) { + holder[d.name] = holder[d.name] + d.y; + } else { + holder[d.name] = d.y; + } + }); + + var obj2 = []; + for (var prop in holder) { + obj2.push({ name: prop, y: holder[prop], drilldown: prop }); + } + + return obj2; }, mergeDrilldowns: function(arr) { - return _.chain(arr).groupBy('name').mapValues(function(v) { - var data = []; - $.each(v, function(key, value) { - var item = _.find(data, { name: value.data[0].name }); - if (item !== undefined) { - item.y = item.y + value.data[0].y; + var obj3 = []; + + arr.forEach(function(d) { + var holder = {}; + d.data.forEach(function(a) { + + var drilldown = d['name'] + '-' + a.name; + if (holder.hasOwnProperty(a.drilldown)) { + holder[drilldown] = holder[a.drilldown] + a.y; } else { - data.push({ - name: value.data[0].name, - y: value.data[0].y, - color: v[0].color, - drilldown: value.data[0].drilldown - }); + holder[ drilldown] = a.y; } }); - return { id: v[0].id, data: data, name: v[0].name }; - }).value(); + + var obj2 = []; + for (var prop in holder) { + var names = prop.split('-'); + var name = names[names.length - 1]; + + if (d['data'][0]['drilldown'].split('-').length !== names.length) { + obj2.push({ name: name, y: holder[prop], drilldown: undefined }); + } else { + obj2.push({ name: name, y: holder[prop], drilldown: names.slice(0, names.length).join('-') }); + } + } + + d['data'] = obj2; + obj3.push(d); + }); + + return obj3; }, generateChart: function(title, data, yAxisTitle, chartType, options) { @@ -54,8 +80,8 @@ $(function() { var newData = chartData; var allDrilldownData = drilldownData; } else { - var newData = _.values(Chart.mergeNames(chartData)); - var allDrilldownData = _.values(Chart.mergeDrilldowns(drilldownData)); + var newData = Chart.mergeNames(chartData); + var allDrilldownData = Chart.mergeDrilldowns(drilldownData); } $(container).highcharts({ @@ -139,10 +165,11 @@ $(function() { $.each(data['data'], function(key, value) { var name = Kitechart.parseJSONorKeys(key)[0].toString(); + chartData.push({ - name: JSON.parse(key)[0].toString(), + name: name, y: parseFloat(value), - drilldown: JSON.parse(key)[0].toString() + drilldown: name }); }); return chartData; @@ -150,23 +177,21 @@ $(function() { formatDrilldownData: function(data) { var drilldownData = []; - var dataLength = _.size(JSON.parse(Object.keys(data['data'])[0])); + var dataLength = JSON.parse(Object.keys(data['data'])[0]).length; for (var i = 1; i <= dataLength - 1; i++) { $.each(data['data'], function(key, value) { - var name = _.dropRight(JSON.parse(key), dataLength - i); - if (i !== dataLength - 1) { - var drilldown = _.dropRight(JSON.parse(key), dataLength - i - 1); - } + var name = JSON.parse(key).slice(0, -(dataLength - i)); + var drilldown = JSON.parse(key).slice(0, -(dataLength - i - 1)); drilldownData.push({ - name: _.join(name, '-'), - id: _.join(name, '-'), + name: name.join('-'), + id: name.join('-'), data: [ { name: JSON.parse(key)[i], y: parseFloat(value), - drilldown: _.join(drilldown, '-') + drilldown: drilldown.join('-') } ] });