123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- describe("flot hover plugin", function () {
- var placeholder, plot, options;
- var rgba = window.colors.rgba;
- var getEntireCanvasData = window.colors.getEntireCanvasData;
- var canvasData = window.colors.canvasData;
- beforeEach(function () {
- placeholder = setFixtures('<div id="test-container" style="width: 600px;height: 400px">')
- .find('#test-container');
- options = {
- grid: { hoverable: true, clickable: true },
- pan: { enableTouch: true, active: true },
- series: {
- lines: {
- show: true
- },
- points: {
- show: false
- }
- }
- };
- jasmine.clock().install().mockDate();
- jasmine.addMatchers(window.colors.jasmineMatchers);
- });
- afterEach(function() {
- jasmine.clock().uninstall();
- });
- describe('touch hover', function() {
- it('tap on plot triggers plothover event', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- coords = [{x: axisx.p2c(0.5), y: axisy.p2c(-3.5)}],
- spy = jasmine.createSpy('spy');
- $(plot.getPlaceholder()).on('plothover', spy);
- simulate.sendTouchEvents(coords, eventHolder, 'touchstart');
- jasmine.clock().tick(50);
- simulate.sendTouchEvents(coords, eventHolder, 'touchend');
- expect(spy).toHaveBeenCalled();
- expect(spy.calls.count()).toBe(1);
- });
- it('pan plot triggers plothovercleanup event', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- coords = [{x: axisx.p2c(0.5), y: axisy.p2c(-3.5)}],
- spy = jasmine.createSpy('spy');
- $(plot.getPlaceholder()).on('plothovercleanup', spy);
- simulate.sendTouchEvents(coords, eventHolder, 'touchstart');
- expect(spy).toHaveBeenCalled();
- expect(spy.calls.count()).toBe(1);
- });
- it('set data to the plot triggers plothovercleanup event', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [10, 10] ] ], options);
- var spy = jasmine.createSpy('spy');
- $(plot.getPlaceholder()).on('plothovercleanup', spy);
- plot.setData([1, 2, 3, 4]);
- expect(spy).toHaveBeenCalled();
- });
- });
- describe('mouse hover', function() {
- beforeEach(function() {
- options.series.hoverable = true;
- options.series.highlightColor = 'rgba(10, 20, 30, 1)';
- });
- it('should highlight the point when hovered', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(2) + offset.left,
- y = axisy.p2c(3) + offset.top,
- noButton = 0;
- simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(100);
- expect(getEntireCanvasData(canvas)).toContainPixelColor(rgba(10, 20, 30, 1));
- });
- it('should highlight the point when hovered from a small distance', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- epsilon = 2,
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(2) + offset.left + epsilon,
- y = axisy.p2c(3) + offset.top - epsilon,
- noButton = 0;
- simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(100);
- expect(getEntireCanvasData(canvas)).toContainPixelColor(rgba(10, 20, 30, 1));
- });
- it('should not highlight the point when hovered and the grid is not hoverable', function() {
- options.grid.hoverable = false;
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(2) + offset.left,
- y = axisy.p2c(3) + offset.top,
- noButton = 0;
- simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(100);
- expect(getEntireCanvasData(canvas)).not.toContainPixelColor(rgba(10, 20, 30, 1));
- });
- it('should not highlight the point when hovered and the series is not hoverable', function() {
- options.series.hoverable = false;
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(2) + offset.left,
- y = axisy.p2c(3) + offset.top,
- noButton = 0;
- simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(100);
- expect(getEntireCanvasData(canvas)).not.toContainPixelColor(rgba(10, 20, 30, 1));
- });
- it('should unhighlight the previouse point when hovering a new one', function() {
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x1 = axisx.p2c(2) + offset.left,
- y1 = axisy.p2c(3) + offset.top,
- x2 = axisx.p2c(10) + offset.left,
- y2 = axisy.p2c(10) + offset.top,
- r = 5,
- noButton = 0;
- simulate.mouseMove(eventHolder, x1, y1, noButton);
- jasmine.clock().tick(100);
- expect(canvasData(canvas, x1 - r, y1 - r, 2 * r, 2 * r)).toContainPixelColor(rgba(10, 20, 30, 1));
- expect(canvasData(canvas, x2 - r, y2 - r, 2 * r, 2 * r)).not.toContainPixelColor(rgba(10, 20, 30, 1));
- simulate.mouseMove(eventHolder, x2, y2, noButton);
- jasmine.clock().tick(100);
- expect(canvasData(canvas, x1 - r, y1 - r, 2 * r, 2 * r)).not.toContainPixelColor(rgba(10, 20, 30, 1));
- expect(canvasData(canvas, x2 - r, y2 - r, 2 * r, 2 * r)).toContainPixelColor(rgba(10, 20, 30, 1));
- });
- it('should update the current hover point to the placeholder when the plot created again', function () {
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- var eventHolder = plot.getEventHolder(),
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(2) + offset.left,
- y = axisy.p2c(3) + offset.top,
- noButton = 0;
- let evt = simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(1000);
- plot = $.plot(placeholder, [ [ [0, 0], [2, 3], [10, 10] ] ], options);
- expect(plot.getPlaceholder()[0].lastMouseMoveEvent.originalEvent.x).toEqual(evt.x);
- expect(plot.getPlaceholder()[0].lastMouseMoveEvent.originalEvent.y).toEqual(evt.y);
- });
- it('should highlight a bar when hovered', function() {
- options.series.bars = { show: true, barWidth: 0.5 };
- options.series.lines = undefined;
- plot = $.plot(placeholder, [ [ [0, 3], [1, 5], [2, 4] ] ], options);
- var eventHolder = plot.getEventHolder(),
- canvas = eventHolder,
- offset = plot.getPlotOffset(),
- axisx = plot.getXAxes()[0],
- axisy = plot.getYAxes()[0],
- x = axisx.p2c(1.25) + offset.left,
- y = axisy.p2c(2) + offset.top,
- noButton = 0;
- simulate.mouseMove(eventHolder, x, y, noButton);
- jasmine.clock().tick(100);
- expect(getEntireCanvasData(canvas)).toContainPixelColor(rgba(10, 20, 30, 1));
- });
- });
- });
|