*
* @author danvk@google.com (Dan Vanderkam)
*/
+import Dygraph from '../../src/dygraph';
+import * as utils from '../../src/dygraph-utils';
+
+import Proxy from './Proxy';
+import CanvasAssertions from './CanvasAssertions';
+import {assertDeepCloseTo} from './custom_asserts';
describe("to-dom-coords", function() {
-var origFunc = Dygraph.getContext;
-beforeEach(function() {
- document.body.innerHTML = "<div id='graph'></div>";
- Dygraph.getContext = function(canvas) {
- return new Proxy(origFunc(canvas));
- }
-});
-
-afterEach(function() {
- Dygraph.getContext = origFunc;
-});
+cleanupAfterEach();
+useProxyCanvas(utils, Proxy);
// Checks that toDomCoords and toDataCoords are inverses of one another.
var checkForInverses = function(g) {
it('testPlainChart', function() {
var opts = {
- axes : {
- x : {
+ axes: {
+ x: {
drawAxis : false,
- drawGrid : false,
+ drawGrid : false
},
- y : {
+ y: {
drawAxis : false,
- drawGrid : false,
+ drawGrid : false
}
},
rightGap: 0,
dateWindow: [0, 100],
width: 400,
height: 400,
- colors: ['#ff0000']
+ colors: ['#ff0000'],
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
it('testChartWithAxes', function() {
var opts = {
- axes : {
- x : {
+ axes: {
+ x: {
drawGrid: false,
drawAxis: true,
},
- y : {
+ y: {
drawGrid: false,
drawAxis: true,
axisLabelWidth: 100
dateWindow: [0, 100],
width: 500,
height: 450,
- colors: ['#ff0000']
+ colors: ['#ff0000'],
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
it('testChartWithAxesAndLabels', function() {
var opts = {
- axes : {
- x : {
+ axes: {
+ x: {
drawGrid: false,
drawAxis: true,
},
- y : {
+ y: {
drawGrid: false,
drawAxis: true,
axisLabelWidth: 100
- }
+ },
},
xAxisHeight: 50,
axisTickSize: 0,
xlabel: 'This is the x-axis',
xLabelHeight: 25,
title: 'This is the title of the chart',
- titleHeight: 25
+ titleHeight: 25,
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
valueRange: [0, 100],
dateWindow: [0, 100],
width: 500,
- height: 500
+ height: 500,
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
valueRange: [0, 100],
dateWindow: [0, 100],
width: 500,
- height: 500
+ height: 500,
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
drawAxis: false,
logscale: true
}
- }
+ },
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
var g = new Dygraph(graph, [ [1,1], [4,4] ], opts);
var epsilon = 1e-8;
- assert.equalsDelta([0, 4], g.toDataCoords(0, 0), epsilon);
- assert.equalsDelta([0, 1], g.toDataCoords(0, 400), epsilon);
- assert.equalsDelta([10, 4], g.toDataCoords(400, 0), epsilon);
- assert.equalsDelta([10, 1], g.toDataCoords(400, 400), epsilon);
- assert.equalsDelta([10, 2], g.toDataCoords(400, 200), epsilon);
+ assertDeepCloseTo([0, 4], g.toDataCoords(0, 0), epsilon);
+ assertDeepCloseTo([0, 1], g.toDataCoords(0, 400), epsilon);
+ assertDeepCloseTo([10, 4], g.toDataCoords(400, 0), epsilon);
+ assertDeepCloseTo([10, 1], g.toDataCoords(400, 400), epsilon);
+ assertDeepCloseTo([10, 2], g.toDataCoords(400, 200), epsilon);
assert.deepEqual([0, 0], g.toDomCoords(0, 4));
assert.deepEqual([0, 400], g.toDomCoords(0, 1));
assert.deepEqual([400, 0], g.toDomCoords(10, 4));
assert.deepEqual([400, 400], g.toDomCoords(10, 1));
assert.deepEqual([400, 200], g.toDomCoords(10, 2));
+
+ // Verify that the margins are adjusted appropriately for yRangePad.
+ g.updateOptions({yRangePad: 40});
+ assertDeepCloseTo([0, 4], g.toDataCoords(0, 40), epsilon);
+ assertDeepCloseTo([0, 1], g.toDataCoords(0, 360), epsilon);
+ assertDeepCloseTo([10, 4], g.toDataCoords(400, 40), epsilon);
+ assertDeepCloseTo([10, 1], g.toDataCoords(400, 360), epsilon);
+ assertDeepCloseTo([10, 2], g.toDataCoords(400, 200), epsilon);
+
+ assertDeepCloseTo([0, 40], g.toDomCoords(0, 4), epsilon);
+ assertDeepCloseTo([0, 360], g.toDomCoords(0, 1), epsilon);
+ assertDeepCloseTo([400, 40], g.toDomCoords(10, 4), epsilon);
+ assertDeepCloseTo([400, 360], g.toDomCoords(10, 1), epsilon);
+ assertDeepCloseTo([400, 200], g.toDomCoords(10, 2), epsilon);
});
it('testChartLogarithmic_XAxis', function() {
drawGrid: false,
drawAxis: false
}
- }
+ },
+ labels: ['X', 'Y']
}
var graph = document.getElementById("graph");
var g = new Dygraph(graph, [ [1,1], [10, 10], [100,100], [1000,1000] ], opts);
var epsilon = 1e-8;
- assert.equalsDelta(1, g.toDataXCoord(0), epsilon);
- assert.equalsDelta(5.623413251903489, g.toDataXCoord(100), epsilon);
- assert.equalsDelta(31.62277660168378, g.toDataXCoord(200), epsilon);
- assert.equalsDelta(177.8279410038921, g.toDataXCoord(300), epsilon);
- assert.equalsDelta(1000, g.toDataXCoord(400), epsilon);
-
- assert.equalsDelta(0, g.toDomXCoord(1), epsilon);
- assert.equalsDelta(3.6036036036036037, g.toDomXCoord(10), epsilon);
- assert.equalsDelta(39.63963963963964, g.toDomXCoord(100), epsilon);
- assert.equalsDelta(400, g.toDomXCoord(1000), epsilon);
-
- assert.equalsDelta(0, g.toPercentXCoord(1), epsilon);
- assert.equalsDelta(0.3333333333, g.toPercentXCoord(10), epsilon);
- assert.equalsDelta(0.6666666666, g.toPercentXCoord(100), epsilon);
- assert.equalsDelta(1, g.toPercentXCoord(1000), epsilon);
+ assert.closeTo(1, g.toDataXCoord(0), epsilon);
+ assert.closeTo(5.623413251903489, g.toDataXCoord(100), epsilon);
+ assert.closeTo(31.62277660168378, g.toDataXCoord(200), epsilon);
+ assert.closeTo(177.8279410038921, g.toDataXCoord(300), epsilon);
+ assert.closeTo(1000, g.toDataXCoord(400), epsilon);
+
+ assert.closeTo(0, g.toDomXCoord(1), epsilon);
+ assert.closeTo(3.6036036036036037, g.toDomXCoord(10), epsilon);
+ assert.closeTo(39.63963963963964, g.toDomXCoord(100), epsilon);
+ assert.closeTo(400, g.toDomXCoord(1000), epsilon);
+
+ assert.closeTo(0, g.toPercentXCoord(1), epsilon);
+ assert.closeTo(0.3333333333, g.toPercentXCoord(10), epsilon);
+ assert.closeTo(0.6666666666, g.toPercentXCoord(100), epsilon);
+ assert.closeTo(1, g.toPercentXCoord(1000), epsilon);
// Now zoom in and ensure that the methods return reasonable values.
g.updateOptions({dateWindow: [ 10, 100 ]});
- assert.equalsDelta(10, g.toDataXCoord(0), epsilon);
- assert.equalsDelta(17.78279410038923, g.toDataXCoord(100), epsilon);
- assert.equalsDelta(31.62277660168379, g.toDataXCoord(200), epsilon);
- assert.equalsDelta(56.23413251903491, g.toDataXCoord(300), epsilon);
- assert.equalsDelta(100, g.toDataXCoord(400), epsilon);
-
- assert.equalsDelta(-40, g.toDomXCoord(1), epsilon);
- assert.equalsDelta(0, g.toDomXCoord(10), epsilon);
- assert.equalsDelta(400, g.toDomXCoord(100), epsilon);
- assert.equalsDelta(4400, g.toDomXCoord(1000), epsilon);
-
- assert.equalsDelta(-1, g.toPercentXCoord(1), epsilon);
- assert.equalsDelta(0, g.toPercentXCoord(10), epsilon);
- assert.equalsDelta(1, g.toPercentXCoord(100), epsilon);
- assert.equalsDelta(2, g.toPercentXCoord(1000), epsilon);
+ assert.closeTo(10, g.toDataXCoord(0), epsilon);
+ assert.closeTo(17.78279410038923, g.toDataXCoord(100), epsilon);
+ assert.closeTo(31.62277660168379, g.toDataXCoord(200), epsilon);
+ assert.closeTo(56.23413251903491, g.toDataXCoord(300), epsilon);
+ assert.closeTo(100, g.toDataXCoord(400), epsilon);
+
+ assert.closeTo(-40, g.toDomXCoord(1), epsilon);
+ assert.closeTo(0, g.toDomXCoord(10), epsilon);
+ assert.closeTo(400, g.toDomXCoord(100), epsilon);
+ assert.closeTo(4400, g.toDomXCoord(1000), epsilon);
+
+ assert.closeTo(-1, g.toPercentXCoord(1), epsilon);
+ assert.closeTo(0, g.toPercentXCoord(10), epsilon);
+ assert.closeTo(1, g.toPercentXCoord(100), epsilon);
+ assert.closeTo(2, g.toPercentXCoord(1000), epsilon);
});
});