mirror of https://github.com/vitalif/dimple
Fix ordering for arrays containing zero
parent
f4ae0a014a
commit
3e6407a81f
|
@ -0,0 +1,25 @@
|
||||||
|
<div id="chartContainer">
|
||||||
|
<script src="/lib/d3.v3.4.8.min.js"></script>
|
||||||
|
<script src="/dist/dimple.v2.0.2.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var data = [
|
||||||
|
{ xAxis: "59", yAxis: 10460, stack: "b" },
|
||||||
|
{ xAxis: "1014", yAxis: 5400, stack: "a" },
|
||||||
|
{ xAxis: "15.19", yAxis: 11809, stack: "a" },
|
||||||
|
{ xAxis: "15.19", yAxis: 11809, stack: "b" },
|
||||||
|
{ xAxis: "00002024", yAxis: 11048, stack: "a" },
|
||||||
|
{ xAxis: "0.0", yAxis: 10599, stack: "a" },
|
||||||
|
{ xAxis: "00002024", yAxis: 11048, stack: "b" },
|
||||||
|
{ xAxis: "2.529", yAxis: 14248, stack: "b" },
|
||||||
|
{ xAxis: "3034", yAxis: 10435, stack: "a" },
|
||||||
|
{ xAxis: "353.9", yAxis: 9880, stack: "b" }
|
||||||
|
];
|
||||||
|
var svg = dimple.newSvg("#chartContainer", 800, 600);
|
||||||
|
var chart = new dimple.chart(svg, data);
|
||||||
|
var x = chart.addCategoryAxis("x", "xAxis");
|
||||||
|
x.addOrderRule("xAxis");
|
||||||
|
var y = chart.addMeasureAxis("y", "yAxis");
|
||||||
|
var s = chart.addSeries("stack", dimple.plot.bar);
|
||||||
|
chart.draw();
|
||||||
|
</script>
|
||||||
|
</div>
|
|
@ -3991,7 +3991,7 @@
|
||||||
i;
|
i;
|
||||||
for (i = 0; i < array.length; i += 1) {
|
for (i = 0; i < array.length; i += 1) {
|
||||||
if (isNaN(array[i])) {
|
if (isNaN(array[i])) {
|
||||||
total = 0;
|
total = undefined;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
total += parseFloat(array[i]);
|
total += parseFloat(array[i]);
|
||||||
|
@ -4003,7 +4003,7 @@
|
||||||
var result = 0,
|
var result = 0,
|
||||||
sumA = sum(a),
|
sumA = sum(a),
|
||||||
sumB = sum(b);
|
sumB = sum(b);
|
||||||
if (!isNaN(sumA) && sumA !== 0 && !isNaN(sumB) && sumB !== 0) {
|
if (!isNaN(sumA) && !isNaN(sumB)) {
|
||||||
result = parseFloat(sumA) - parseFloat(sumB);
|
result = parseFloat(sumA) - parseFloat(sumB);
|
||||||
} else if (!isNaN(Date.parse(a[0])) && !isNaN(Date.parse(b[0]))) {
|
} else if (!isNaN(Date.parse(a[0])) && !isNaN(Date.parse(b[0]))) {
|
||||||
result = Date.parse(a[0]) - Date.parse(b[0]);
|
result = Date.parse(a[0]) - Date.parse(b[0]);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -60,7 +60,7 @@
|
||||||
i;
|
i;
|
||||||
for (i = 0; i < array.length; i += 1) {
|
for (i = 0; i < array.length; i += 1) {
|
||||||
if (isNaN(array[i])) {
|
if (isNaN(array[i])) {
|
||||||
total = 0;
|
total = undefined;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
total += parseFloat(array[i]);
|
total += parseFloat(array[i]);
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
var result = 0,
|
var result = 0,
|
||||||
sumA = sum(a),
|
sumA = sum(a),
|
||||||
sumB = sum(b);
|
sumB = sum(b);
|
||||||
if (!isNaN(sumA) && sumA !== 0 && !isNaN(sumB) && sumB !== 0) {
|
if (!isNaN(sumA) && !isNaN(sumB)) {
|
||||||
result = parseFloat(sumA) - parseFloat(sumB);
|
result = parseFloat(sumA) - parseFloat(sumB);
|
||||||
} else if (!isNaN(Date.parse(a[0])) && !isNaN(Date.parse(b[0]))) {
|
} else if (!isNaN(Date.parse(a[0])) && !isNaN(Date.parse(b[0]))) {
|
||||||
result = Date.parse(a[0]) - Date.parse(b[0]);
|
result = Date.parse(a[0]) - Date.parse(b[0]);
|
||||||
|
|
|
@ -12,7 +12,7 @@ define(["dimple"], function (dimple) {
|
||||||
{ "Int": 1, "Float": 234, "Text": "XFBGR", "Date": "12/5/99", "Group": "A"},
|
{ "Int": 1, "Float": 234, "Text": "XFBGR", "Date": "12/5/99", "Group": "A"},
|
||||||
{ "Int": 2, "Float": 54.35, "Text": "YTREB", "Date": "1/1/00", "Group": "A"},
|
{ "Int": 2, "Float": 54.35, "Text": "YTREB", "Date": "1/1/00", "Group": "A"},
|
||||||
{ "Int": 3, "Float": -453, "Text": "XGFDY", "Date": "2 February 2007", "Group": "B"},
|
{ "Int": 3, "Float": -453, "Text": "XGFDY", "Date": "2 February 2007", "Group": "B"},
|
||||||
{ "Int": 4, "Float": 5436546, "Text": "XGFDE", "Date": "2000-03-01", "Group": "B"},
|
{ "Int": 0, "Float": 5436546, "Text": "XGFDE", "Date": "2000-03-01", "Group": "B"},
|
||||||
{ "Int": 5, "Float": 4323, "Text": "YTREB", "Date": "10/10/2000", "Group": "C"},
|
{ "Int": 5, "Float": 4323, "Text": "YTREB", "Date": "10/10/2000", "Group": "C"},
|
||||||
{ "Int": 6, "Float": 0, "Text": "GFDHN", "Date": "11/10/2000", "Group": "C"},
|
{ "Int": 6, "Float": 0, "Text": "GFDHN", "Date": "11/10/2000", "Group": "C"},
|
||||||
{ "Int": 7, "Float": -453, "Text": "TRET", "Date": "10/9/2000", "Group": "D"},
|
{ "Int": 7, "Float": -453, "Text": "TRET", "Date": "10/9/2000", "Group": "D"},
|
||||||
|
@ -31,7 +31,7 @@ define(["dimple"], function (dimple) {
|
||||||
|
|
||||||
it("Implicitly orders by a single dimension", function () {
|
it("Implicitly orders by a single dimension", function () {
|
||||||
expect(getResults(data, "Int"))
|
expect(getResults(data, "Int"))
|
||||||
.toEqual("1, 2, 3, 4, 5, 6, 7");
|
.toEqual("0, 1, 2, 3, 5, 6, 7");
|
||||||
expect(getResults(data, "Float"))
|
expect(getResults(data, "Float"))
|
||||||
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
||||||
expect(getResults(data, "Text"))
|
expect(getResults(data, "Text"))
|
||||||
|
@ -42,7 +42,7 @@ define(["dimple"], function (dimple) {
|
||||||
|
|
||||||
it("Explicitly orders by a single dimension", function () {
|
it("Explicitly orders by a single dimension", function () {
|
||||||
expect(getResults(data, "Int", { ordering : "Int" }))
|
expect(getResults(data, "Int", { ordering : "Int" }))
|
||||||
.toEqual("1, 2, 3, 4, 5, 6, 7");
|
.toEqual("0, 1, 2, 3, 5, 6, 7");
|
||||||
expect(getResults(data, "Float", { ordering : "Float" }))
|
expect(getResults(data, "Float", { ordering : "Float" }))
|
||||||
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
.toEqual("-453, 0, 54.35, 234, 4323, 5436546");
|
||||||
expect(getResults(data, "Text", { ordering : "Text" }))
|
expect(getResults(data, "Text", { ordering : "Text" }))
|
||||||
|
@ -53,7 +53,7 @@ define(["dimple"], function (dimple) {
|
||||||
|
|
||||||
it("Orders descending by a single dimension", function () {
|
it("Orders descending by a single dimension", function () {
|
||||||
expect(getResults(data, "Int", { ordering : "Int", desc : true }))
|
expect(getResults(data, "Int", { ordering : "Int", desc : true }))
|
||||||
.toEqual("7, 6, 5, 4, 3, 2, 1");
|
.toEqual("7, 6, 5, 3, 2, 1, 0");
|
||||||
expect(getResults(data, "Float", { ordering : "Float", desc : true }))
|
expect(getResults(data, "Float", { ordering : "Float", desc : true }))
|
||||||
.toEqual("5436546, 4323, 234, 54.35, 0, -453");
|
.toEqual("5436546, 4323, 234, 54.35, 0, -453");
|
||||||
expect(getResults(data, "Text", { ordering : "Text", desc : true }))
|
expect(getResults(data, "Text", { ordering : "Text", desc : true }))
|
||||||
|
@ -63,22 +63,22 @@ define(["dimple"], function (dimple) {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Orders by a passed array", function () {
|
it("Orders by a passed array", function () {
|
||||||
expect(getResults(data, "Int", { ordering : [3, 7, 4, 5, 2, 1, 6] }))
|
expect(getResults(data, "Int", { ordering : [3, 7, 0, 5, 2, 1, 6] }))
|
||||||
.toEqual("3, 7, 4, 5, 2, 1, 6");
|
.toEqual("3, 7, 0, 5, 2, 1, 6");
|
||||||
expect(getResults(data, "Int", { ordering : [3, 7, 4, 5, 2, 1, 6], desc : true }))
|
expect(getResults(data, "Int", { ordering : [3, 7, 0, 5, 2, 1, 6], desc : true }))
|
||||||
.toEqual("6, 1, 2, 5, 4, 7, 3");
|
.toEqual("6, 1, 2, 5, 0, 7, 3");
|
||||||
expect(getResults(data, "Int", { ordering : [3, 7, 4] }))
|
expect(getResults(data, "Int", { ordering : [3, 7, 0] }))
|
||||||
.toEqual("3, 7, 4, 1, 2, 5, 6");
|
.toEqual("3, 7, 0, 1, 2, 5, 6");
|
||||||
expect(getResults(data, "Int", { ordering : [3, 7, 4], desc : true }))
|
expect(getResults(data, "Int", { ordering : [3, 7, 0], desc : true }))
|
||||||
.toEqual("4, 7, 3, 1, 2, 5, 6");
|
.toEqual("0, 7, 3, 1, 2, 5, 6");
|
||||||
expect(getResults(data, "Int", { ordering : ["3", "7", "4", "5", "2", "1", "6"] }))
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0", "5", "2", "1", "6"] }))
|
||||||
.toEqual("3, 7, 4, 5, 2, 1, 6");
|
.toEqual("3, 7, 0, 5, 2, 1, 6");
|
||||||
expect(getResults(data, "Int", { ordering : ["3", "7", "4", "5", "2", "1", "6"], desc : true }))
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0", "5", "2", "1", "6"], desc : true }))
|
||||||
.toEqual("6, 1, 2, 5, 4, 7, 3");
|
.toEqual("6, 1, 2, 5, 0, 7, 3");
|
||||||
expect(getResults(data, "Int", { ordering : ["3", "7", "4"] }))
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0"] }))
|
||||||
.toEqual("3, 7, 4, 1, 2, 5, 6");
|
.toEqual("3, 7, 0, 1, 2, 5, 6");
|
||||||
expect(getResults(data, "Int", { ordering : ["3", "7", "4"], desc : true }))
|
expect(getResults(data, "Int", { ordering : ["3", "7", "0"], desc : true }))
|
||||||
.toEqual("4, 7, 3, 1, 2, 5, 6");
|
.toEqual("0, 7, 3, 1, 2, 5, 6");
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Orders by a custom function", function () {
|
it("Orders by a custom function", function () {
|
||||||
|
@ -90,9 +90,9 @@ define(["dimple"], function (dimple) {
|
||||||
|
|
||||||
it("Orders by a second category", function () {
|
it("Orders by a second category", function () {
|
||||||
expect(getResults(data, "Int", { ordering : "Text" }))
|
expect(getResults(data, "Int", { ordering : "Text" }))
|
||||||
.toEqual("6, 7, 1, 4, 3, 2, 5");
|
.toEqual("6, 7, 1, 0, 3, 2, 5");
|
||||||
expect(getResults(data, "Int", { ordering : "Text", desc : true }))
|
expect(getResults(data, "Int", { ordering : "Text", desc : true }))
|
||||||
.toEqual("2, 5, 3, 4, 1, 7, 6");
|
.toEqual("2, 5, 3, 0, 1, 7, 6");
|
||||||
expect(getResults(data, "Group", { ordering : "Float" }))
|
expect(getResults(data, "Group", { ordering : "Float" }))
|
||||||
.toEqual("D, A, C, B, E");
|
.toEqual("D, A, C, B, E");
|
||||||
expect(getResults(data, "Group", { ordering : "Float", desc : true }))
|
expect(getResults(data, "Group", { ordering : "Float", desc : true }))
|
||||||
|
@ -101,13 +101,13 @@ define(["dimple"], function (dimple) {
|
||||||
|
|
||||||
it("Orders by a third category", function () {
|
it("Orders by a third category", function () {
|
||||||
expect(getResults(data, "Int", [{ ordering : "Group" }, { ordering : "Float" }]))
|
expect(getResults(data, "Int", [{ ordering : "Group" }, { ordering : "Float" }]))
|
||||||
.toEqual("2, 1, 3, 4, 6, 5, 7");
|
.toEqual("2, 1, 3, 0, 6, 5, 7");
|
||||||
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float" }]))
|
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float" }]))
|
||||||
.toEqual("7, 6, 5, 3, 4, 2, 1");
|
.toEqual("7, 6, 5, 3, 0, 2, 1");
|
||||||
expect(getResults(data, "Int", [{ ordering : "Group"}, { ordering : "Float", desc : true }]))
|
expect(getResults(data, "Int", [{ ordering : "Group"}, { ordering : "Float", desc : true }]))
|
||||||
.toEqual("1, 2, 4, 3, 5, 6, 7");
|
.toEqual("1, 2, 0, 3, 5, 6, 7");
|
||||||
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float", desc : true }]))
|
expect(getResults(data, "Int", [{ ordering : "Group", desc : true}, { ordering : "Float", desc : true }]))
|
||||||
.toEqual("7, 5, 6, 4, 3, 1, 2");
|
.toEqual("7, 5, 6, 0, 3, 1, 2");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
Loading…
Reference in New Issue