diff --git a/src/kibana/components/vislib/lib/layout/layout.js b/src/kibana/components/vislib/lib/layout/layout.js index 539640524c89f..8a359eb21bb95 100644 --- a/src/kibana/components/vislib/lib/layout/layout.js +++ b/src/kibana/components/vislib/lib/layout/layout.js @@ -91,7 +91,7 @@ define(function (require) { } if (obj.splits) { - d3.select(this.el).select('.' + obj.class).call(obj.splits); + d3.select(this.el).select('.' + obj.class).call(obj.splits, obj.parent); } if (obj.children) { diff --git a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js b/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js index fd260b530aadf..a538ac2ce7dee 100644 --- a/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js +++ b/src/kibana/components/vislib/lib/layout/splits/pie_chart/chart_title_split.js @@ -9,7 +9,7 @@ define(function () { * if not data.rows or data.columns, return no chart titles */ - return function (selection) { + return function (selection, parent) { selection.each(function (data) { var div = d3.select(this); @@ -24,9 +24,9 @@ define(function () { .attr('class', 'chart-title'); if (data.rows) { - d3.select('.x-axis-chart-title').remove(); + d3.select(parent).select('.x-axis-chart-title').remove(); } else { - d3.select('.y-axis-chart-title').remove(); + d3.select(parent).select('.y-axis-chart-title').remove(); } return div; diff --git a/test/unit/specs/vislib/fixture/_vis_fixture.js b/test/unit/specs/vislib/fixture/_vis_fixture.js index e0045309d9285..d6b7a7620606e 100644 --- a/test/unit/specs/vislib/fixture/_vis_fixture.js +++ b/test/unit/specs/vislib/fixture/_vis_fixture.js @@ -7,7 +7,7 @@ define(function (require) { $('body').append('
'); - var $el = $('.visualize-chart'); + var $el = $('.visualize-chart:last'); $el.width(1024); $el.height(300); diff --git a/test/unit/specs/vislib/visualizations/pie_chart.js b/test/unit/specs/vislib/visualizations/pie_chart.js index eaee3b72b8c15..ab264773f1360 100644 --- a/test/unit/specs/vislib/visualizations/pie_chart.js +++ b/test/unit/specs/vislib/visualizations/pie_chart.js @@ -47,6 +47,79 @@ define(function (require) { 120 ]; + describe('No global chart settings', function () { + var visLibParams1 = { + el: '', + type: 'pie', + addLegend: true, + addTooltip: true + }; + var visLibParams2 = { + el: '', + type: 'pie', + addLegend: true, + addTooltip: true + }; + var chart1; + var chart2; + var Vis; + var indexPattern; + var buildHierarchicalData; + var data1; + var data2; + + beforeEach(function () { + module('PieChartFactory'); + }); + + beforeEach(function () { + inject(function (d3, Private) { + chart1 = Private(require('vislib_fixtures/_vis_fixture'))(visLibParams1); + chart2 = Private(require('vislib_fixtures/_vis_fixture'))(visLibParams2); + Vis = Private(require('components/vis/vis')); + indexPattern = Private(require('fixtures/stubbed_logstash_index_pattern')); + buildHierarchicalData = Private(require('components/agg_response/hierarchical/build_hierarchical_data')); + require('css!components/vislib/styles/main'); + + var id_1 = 1; + var id_2 = 1; + var stubVis1 = new Vis(indexPattern, { + type: 'pie', + aggs: rowAgg + }); + var stubVis2 = new Vis(indexPattern, { + type: 'pie', + aggs: colAgg + }); + + // We need to set the aggs to a known value. + _.each(stubVis1.aggs, function (agg) { + agg.id = 'agg_' + id_1++; + }); + _.each(stubVis2.aggs, function (agg) { + agg.id = 'agg_' + id_2++; + }); + + data1 = buildHierarchicalData(stubVis1, fixtures.threeTermBuckets); + data2 = buildHierarchicalData(stubVis2, fixtures.threeTermBuckets); + + chart1.render(data1); + chart2.render(data2); + }); + }); + + afterEach(function () { + $('.visualize-chart').remove(); + chart1 = null; + chart2 = null; + }); + + it('should render chart titles for all charts', function () { + expect($(chart1.el).find('.y-axis-chart-title').length).to.be(1); + expect($(chart2.el).find('.x-axis-chart-title').length).to.be(1); + }); + }); + aggArray.forEach(function (dataAgg, i) { describe('Vislib PieChart Class Test Suite for ' + names[i] + ' data', function () { var visLibParams = {