diff options
Diffstat (limited to 'web/nms.gathering.org/speedometer/c3-master/spec/api.focus-spec.js')
-rw-r--r-- | web/nms.gathering.org/speedometer/c3-master/spec/api.focus-spec.js | 441 |
1 files changed, 441 insertions, 0 deletions
diff --git a/web/nms.gathering.org/speedometer/c3-master/spec/api.focus-spec.js b/web/nms.gathering.org/speedometer/c3-master/spec/api.focus-spec.js new file mode 100644 index 0000000..df64e80 --- /dev/null +++ b/web/nms.gathering.org/speedometer/c3-master/spec/api.focus-spec.js @@ -0,0 +1,441 @@ +describe('c3 api focus', function () { + 'use strict'; + + var chart; + + var args = { + data: { + columns: [ + ['data1', 30, 200, 100, 400], + ['data2', 1000, 800, 500, 2000], + ['data3', 5000, 2000, 1000, 4000] + ] + } + }; + + beforeEach(function (done) { + chart = window.initChart(chart, args, done); + }); + + describe('focus', function () { + + it('should focus all targets', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-focused')).toBeTruthy(); + }); + legendItems.each(function () { + var item = d3.select(this); + expect(item.classed('c3-legend-item-focused')).toBeTruthy(); + }); + done(); + }, 1000); + }); + + it('should focus one target', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus('data2'); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-focused')).toBeFalsy(); + expect(targets.data2.classed('c3-focused')).toBeTruthy(); + expect(targets.data3.classed('c3-focused')).toBeFalsy(); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeTruthy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + done(); + }, 1000); + }); + + it('should focus multiple targets', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(['data1', 'data2']); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-focused')).toBeTruthy(); + expect(targets.data2.classed('c3-focused')).toBeTruthy(); + expect(targets.data3.classed('c3-focused')).toBeFalsy(); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeTruthy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeTruthy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + done(); + }, 1000); + }); + + }); + + describe('defocus', function () { + + it('should defocus all targets', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-focused')).toBeFalsy(); + expect(line.classed('c3-defocused')).toBeTruthy(); + }); + legendItems.each(function () { + var item = d3.select(this); + expect(item.classed('c3-legend-item-focused')).toBeFalsy(); + expect(+item.style('opacity')).toBeCloseTo(0.3); + }); + done(); + }, 1000); + }); + + it('should defocus one target', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus('data2'); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-defocused')).toBeFalsy(); + expect(targets.data2.classed('c3-defocused')).toBeTruthy(); + expect(targets.data3.classed('c3-defocused')).toBeFalsy(); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(1); + done(); + }, 1000); + }); + + it('should defocus multiple targets', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(['data1', 'data2']); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-defocused')).toBeTruthy(); + expect(targets.data2.classed('c3-defocused')).toBeTruthy(); + expect(targets.data3.classed('c3-defocused')).toBeFalsy(); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(1); + done(); + }, 1000); + }); + + it('should defocus multiple targets after focused', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + chart.defocus(['data1', 'data2']); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-defocused')).toBeTruthy(); + expect(targets.data2.classed('c3-defocused')).toBeTruthy(); + expect(targets.data3.classed('c3-defocused')).toBeFalsy(); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeTruthy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(1); + done(); + }, 1000); + }, 1000); + }); + + }); + + describe('revert', function () { + + it('should revert all targets after focus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + chart.revert(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-focused')).toBeFalsy(); + }); + legendItems.each(function () { + var item = d3.select(this); + expect(item.classed('c3-legend-item-focused')).toBeFalsy(); + expect(+item.style('opacity')).toBeCloseTo(1); + }); + done(); + }, 1000); + }, 1000); + }); + + it('should revert all targets after defocus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(); + setTimeout(function () { + chart.revert(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-defocused')).toBeFalsy(); + }); + legendItems.each(function () { + var item = d3.select(this); + expect(item.classed('c3-legend-item-focused')).toBeFalsy(); + expect(+item.style('opacity')).toBeCloseTo(1); + }); + done(); + }, 1000); + }, 1000); + }); + + it('should revert one target after focus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + chart.revert('data2'); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-focused')).toBeTruthy(); + expect(targets.data2.classed('c3-focused')).toBeFalsy(); + expect(targets.data3.classed('c3-focused')).toBeTruthy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(1); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeTruthy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeTruthy(); + done(); + }, 1000); + }, 1000); + }); + + it('should revert one target after defocus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(); + setTimeout(function () { + chart.revert('data2'); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-defocused')).toBeTruthy(); + expect(targets.data2.classed('c3-defocused')).toBeFalsy(); + expect(targets.data3.classed('c3-defocused')).toBeTruthy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(0.3); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(0.3); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + done(); + }, 1000); + }, 1000); + }); + + it('should focus multiple targets after focus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + chart.revert(['data1', 'data2']); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-focused')).toBeFalsy(); + expect(targets.data2.classed('c3-focused')).toBeFalsy(); + expect(targets.data3.classed('c3-focused')).toBeTruthy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(1); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeTruthy(); + done(); + }, 1000); + }, 1000); + }); + + it('should focus multiple targets after defocus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(); + setTimeout(function () { + chart.revert(['data1', 'data2']); + setTimeout(function () { + var targets = { + data1: main.select('.c3-chart-line.c3-target.c3-target-data1'), + data2: main.select('.c3-chart-line.c3-target.c3-target-data2'), + data3: main.select('.c3-chart-line.c3-target.c3-target-data3') + }, + legendItems = { + data1: legend.select('.c3-legend-item-data1'), + data2: legend.select('.c3-legend-item-data2'), + data3: legend.select('.c3-legend-item-data3') + }; + expect(targets.data1.classed('c3-defocused')).toBeFalsy(); + expect(targets.data2.classed('c3-defocused')).toBeFalsy(); + expect(targets.data3.classed('c3-defocused')).toBeTruthy(); + expect(+legendItems.data1.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data2.style('opacity')).toBeCloseTo(1); + expect(+legendItems.data3.style('opacity')).toBeCloseTo(0.3); + expect(legendItems.data1.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data2.classed('c3-legend-item-focused')).toBeFalsy(); + expect(legendItems.data3.classed('c3-legend-item-focused')).toBeFalsy(); + done(); + }, 1000); + }, 1000); + }); + + }); + + describe('when legend.show = false', function () { + + it('should update args to hide legend', function () { + args.legend = { + show: false + }; + expect(true).toBeTruthy(); + }); + + it('should focus all targets without showing legend', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-focused')).toBeTruthy(); + }); + expect(legendItems.size()).toBeCloseTo(0); + done(); + }, 1000); + }); + + it('should defocus all targets without showing legend', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.defocus(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-defocused')).toBeTruthy(); + }); + expect(legendItems.size()).toBeCloseTo(0); + done(); + }, 1000); + }); + + it('should revert all targets after focus', function (done) { + var main = chart.internal.main, + legend = chart.internal.legend; + chart.focus(); + setTimeout(function () { + chart.revert(); + setTimeout(function () { + var targets = main.select('.c3-chart-line.c3-target'), + legendItems = legend.select('.c3-legend-item'); + targets.each(function () { + var line = d3.select(this); + expect(line.classed('c3-focused')).toBeFalsy(); + }); + expect(legendItems.size()).toBeCloseTo(0); + done(); + }, 1000); + }, 1000); + }); + + }); + +}); |