Merge branch 'release'
This commit is contained in:
Коммит
68424aeff4
8
Makefile
8
Makefile
|
@ -37,6 +37,7 @@ d3.core.js: \
|
|||
src/core/descending.js \
|
||||
src/core/min.js \
|
||||
src/core/max.js \
|
||||
src/core/sum.js \
|
||||
src/core/zip.js \
|
||||
src/core/bisect.js \
|
||||
src/core/nest.js \
|
||||
|
@ -146,6 +147,8 @@ d3.time.js: \
|
|||
src/start.js \
|
||||
src/time/time.js \
|
||||
src/time/format.js \
|
||||
src/time/format-utc.js \
|
||||
src/time/format-iso.js \
|
||||
src/end.js
|
||||
|
||||
d3.geom.js: \
|
||||
|
@ -171,6 +174,7 @@ tests: \
|
|||
tests/test-keys.test \
|
||||
tests/test-max.test \
|
||||
tests/test-min.test \
|
||||
tests/test-sum.test \
|
||||
tests/test-nest.test \
|
||||
tests/test-permute.test \
|
||||
tests/test-zip.test \
|
||||
|
@ -179,7 +183,11 @@ tests: \
|
|||
tests/test-round.test \
|
||||
tests/test-hsl.test \
|
||||
tests/test-time-format.test \
|
||||
tests/test-time-format-iso.test \
|
||||
tests/test-time-format-utc.test \
|
||||
tests/test-time-parse.test \
|
||||
tests/test-time-parse-iso.test \
|
||||
tests/test-time-parse-utc.test \
|
||||
tests/test-transition.test \
|
||||
tests/test-scale-linear.test \
|
||||
tests/test-scale-polylinear.test \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
(function(){d3 = {version: "1.20.3"}; // semver
|
||||
(function(){d3 = {version: "1.21.0"}; // semver
|
||||
if (!Date.now) Date.now = function() {
|
||||
return +new Date;
|
||||
};
|
||||
|
@ -68,6 +68,20 @@ d3.max = function(array, f) {
|
|||
}
|
||||
return a;
|
||||
};
|
||||
d3.sum = function(array, f) {
|
||||
var s = 0,
|
||||
n = array.length,
|
||||
a,
|
||||
i = -1;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
while (++i < n) if (!isNaN(a = +array[i])) s += a;
|
||||
} else {
|
||||
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
|
||||
}
|
||||
|
||||
return s;
|
||||
};
|
||||
d3.zip = function() {
|
||||
if (!(n = arguments.length)) return [];
|
||||
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m;) {
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
65
d3.time.js
65
d3.time.js
|
@ -1,4 +1,6 @@
|
|||
(function(){d3.time = {};
|
||||
|
||||
var d3_time = Date;
|
||||
d3.time.format = function(template) {
|
||||
var n = template.length;
|
||||
|
||||
|
@ -22,7 +24,7 @@ d3.time.format = function(template) {
|
|||
}
|
||||
|
||||
format.parse = function(string) {
|
||||
var date = new Date(1900, 0, 1),
|
||||
var date = new d3_time(1900, 0, 1),
|
||||
i = d3_time_parse(date, template, string, 0);
|
||||
if (i != string.length) return null;
|
||||
if (date.hour12) {
|
||||
|
@ -85,7 +87,7 @@ var d3_time_formats = {
|
|||
W: d3_time_weekNumberMonday,
|
||||
x: d3.time.format("%m/%d/%y"),
|
||||
X: d3.time.format("%H:%M:%S"),
|
||||
y: function(d) { return d3_time_zfill2(d.getYear() % 100); },
|
||||
y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
|
||||
Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
|
||||
Z: d3_time_zone,
|
||||
"%": function(d) { return "%"; }
|
||||
|
@ -288,17 +290,21 @@ var d3_time_amPmLookup = {
|
|||
pm: 1
|
||||
};
|
||||
|
||||
function d3_time_year(d) {
|
||||
return new d3_time(d.getFullYear(), 0, 1);
|
||||
}
|
||||
|
||||
function d3_time_dayOfYear(d) {
|
||||
return d3_time_zfill3(1 + ~~((d - new Date(d.getFullYear(), 0, 1)) / 864e5));
|
||||
return d3_time_zfill3(1 + ~~((d - d3_time_year(d)) / 864e5));
|
||||
}
|
||||
|
||||
function d3_time_weekNumberSunday(d) {
|
||||
var d0 = new Date(d.getFullYear(), 0, 1);
|
||||
var d0 = d3_time_year(d);
|
||||
return d3_time_zfill2(~~(((d - d0) / 864e5 + d0.getDay()) / 7));
|
||||
}
|
||||
|
||||
function d3_time_weekNumberMonday(d) {
|
||||
var d0 = new Date(d.getFullYear(), 0, 1);
|
||||
var d0 = d3_time_year(d);
|
||||
return d3_time_zfill2(~~(((d - d0) / 864e5 + (d0.getDay() + 6) % 7) / 7));
|
||||
}
|
||||
|
||||
|
@ -310,4 +316,53 @@ function d3_time_zone(d) {
|
|||
zm = Math.abs(z) % 60;
|
||||
return zs + d3_time_zfill2(zh) + d3_time_zfill2(zm);
|
||||
}
|
||||
d3.time.format.utc = function(template) {
|
||||
var local = d3.time.format(template);
|
||||
|
||||
function format(date) {
|
||||
var utc = new d3_time_format_utc();
|
||||
utc._ = date;
|
||||
return local(utc);
|
||||
}
|
||||
|
||||
format.parse = function(string) {
|
||||
try {
|
||||
d3_time = d3_time_format_utc;
|
||||
var date = local.parse(string);
|
||||
return date && date._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
}
|
||||
};
|
||||
|
||||
format.toString = local.toString;
|
||||
|
||||
return format;
|
||||
};
|
||||
|
||||
function d3_time_format_utc() {
|
||||
this._ = new Date(Date.UTC.apply(this, arguments));
|
||||
}
|
||||
|
||||
d3_time_format_utc.prototype = {
|
||||
getDate: function() { return this._.getUTCDate(); },
|
||||
getDay: function() { return this._.getUTCDay(); },
|
||||
getFullYear: function() { return this._.getUTCFullYear(); },
|
||||
getHours: function() { return this._.getUTCHours(); },
|
||||
getMilliseconds: function() { return this._.getUTCMilliseconds(); },
|
||||
getMinutes: function() { return this._.getUTCMinutes(); },
|
||||
getMonth: function() { return this._.getUTCMonth(); },
|
||||
getSeconds: function() { return this._.getUTCSeconds(); },
|
||||
getTimezoneOffset: function() { return 0; },
|
||||
valueOf: function() { return this._.getTime(); },
|
||||
setDate: function(x) { this._.setUTCDate(x); },
|
||||
setDay: function(x) { this._.setUTCDay(x); },
|
||||
setFullYear: function(x) { this._.setUTCFullYear(x); },
|
||||
setHours: function(x) { this._.setUTCHours(x); },
|
||||
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
|
||||
setMinutes: function(x) { this._.setUTCMinutes(x); },
|
||||
setMonth: function(x) { this._.setUTCMonth(x); },
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); }
|
||||
};
|
||||
d3.time.format.iso = d3.time.format.utc("%Y-%m-%dT%H:%M:%SZ");
|
||||
})();
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -1,6 +1,6 @@
|
|||
var w = 960,
|
||||
h = 500,
|
||||
mouse = [0, 0],
|
||||
mouse = [null, null],
|
||||
fill = d3.scale.linear().domain([0, 1e4]).range(["brown", "steelblue"]);
|
||||
|
||||
// Initialise boids.
|
||||
|
@ -16,6 +16,8 @@ var vertices = boids.map(function(boid) {
|
|||
return boid(boids);
|
||||
});
|
||||
|
||||
d3.select(window).on("blur", nullGravity);
|
||||
|
||||
var svg = d3.select("#vis")
|
||||
.append("svg:svg")
|
||||
.attr("width", w)
|
||||
|
@ -25,7 +27,8 @@ var svg = d3.select("#vis")
|
|||
var m = d3.svg.mouse(this);
|
||||
mouse[0] = m[0];
|
||||
mouse[1] = m[1];
|
||||
});
|
||||
})
|
||||
.on("mouseout", nullGravity);
|
||||
|
||||
svg.selectAll("path")
|
||||
.data(d3.geom.voronoi(vertices))
|
||||
|
@ -56,3 +59,7 @@ d3.timer(function() {
|
|||
.attr("d", function(d) { return "M" + d.join("L") + "Z"; })
|
||||
.style("fill", function(d) { return fill((d3.geom.polygon(d).area())); });
|
||||
});
|
||||
|
||||
function nullGravity() {
|
||||
mouse[0] = mouse[1] = null;
|
||||
}
|
||||
|
|
|
@ -1 +1 @@
|
|||
d3 = {version: "1.20.3"}; // semver
|
||||
d3 = {version: "1.21.0"}; // semver
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
d3.sum = function(array, f) {
|
||||
var s = 0,
|
||||
n = array.length,
|
||||
a,
|
||||
i = -1;
|
||||
|
||||
if (arguments.length === 1) {
|
||||
while (++i < n) if (!isNaN(a = +array[i])) s += a;
|
||||
} else {
|
||||
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
|
||||
}
|
||||
|
||||
return s;
|
||||
};
|
|
@ -0,0 +1 @@
|
|||
d3.time.format.iso = d3.time.format.utc("%Y-%m-%dT%H:%M:%SZ");
|
|
@ -0,0 +1,48 @@
|
|||
d3.time.format.utc = function(template) {
|
||||
var local = d3.time.format(template);
|
||||
|
||||
function format(date) {
|
||||
var utc = new d3_time_format_utc();
|
||||
utc._ = date;
|
||||
return local(utc);
|
||||
}
|
||||
|
||||
format.parse = function(string) {
|
||||
try {
|
||||
d3_time = d3_time_format_utc;
|
||||
var date = local.parse(string);
|
||||
return date && date._;
|
||||
} finally {
|
||||
d3_time = Date;
|
||||
}
|
||||
};
|
||||
|
||||
format.toString = local.toString;
|
||||
|
||||
return format;
|
||||
};
|
||||
|
||||
function d3_time_format_utc() {
|
||||
this._ = new Date(Date.UTC.apply(this, arguments));
|
||||
}
|
||||
|
||||
d3_time_format_utc.prototype = {
|
||||
getDate: function() { return this._.getUTCDate(); },
|
||||
getDay: function() { return this._.getUTCDay(); },
|
||||
getFullYear: function() { return this._.getUTCFullYear(); },
|
||||
getHours: function() { return this._.getUTCHours(); },
|
||||
getMilliseconds: function() { return this._.getUTCMilliseconds(); },
|
||||
getMinutes: function() { return this._.getUTCMinutes(); },
|
||||
getMonth: function() { return this._.getUTCMonth(); },
|
||||
getSeconds: function() { return this._.getUTCSeconds(); },
|
||||
getTimezoneOffset: function() { return 0; },
|
||||
valueOf: function() { return this._.getTime(); },
|
||||
setDate: function(x) { this._.setUTCDate(x); },
|
||||
setDay: function(x) { this._.setUTCDay(x); },
|
||||
setFullYear: function(x) { this._.setUTCFullYear(x); },
|
||||
setHours: function(x) { this._.setUTCHours(x); },
|
||||
setMilliseconds: function(x) { this._.setUTCMilliseconds(x); },
|
||||
setMinutes: function(x) { this._.setUTCMinutes(x); },
|
||||
setMonth: function(x) { this._.setUTCMonth(x); },
|
||||
setSeconds: function(x) { this._.setUTCSeconds(x); }
|
||||
};
|
|
@ -21,7 +21,7 @@ d3.time.format = function(template) {
|
|||
}
|
||||
|
||||
format.parse = function(string) {
|
||||
var date = new Date(1900, 0, 1),
|
||||
var date = new d3_time(1900, 0, 1),
|
||||
i = d3_time_parse(date, template, string, 0);
|
||||
if (i != string.length) return null;
|
||||
if (date.hour12) {
|
||||
|
@ -84,7 +84,7 @@ var d3_time_formats = {
|
|||
W: d3_time_weekNumberMonday,
|
||||
x: d3.time.format("%m/%d/%y"),
|
||||
X: d3.time.format("%H:%M:%S"),
|
||||
y: function(d) { return d3_time_zfill2(d.getYear() % 100); },
|
||||
y: function(d) { return d3_time_zfill2(d.getFullYear() % 100); },
|
||||
Y: function(d) { return d3_time_zfill4(d.getFullYear() % 10000); },
|
||||
Z: d3_time_zone,
|
||||
"%": function(d) { return "%"; }
|
||||
|
@ -287,17 +287,21 @@ var d3_time_amPmLookup = {
|
|||
pm: 1
|
||||
};
|
||||
|
||||
function d3_time_year(d) {
|
||||
return new d3_time(d.getFullYear(), 0, 1);
|
||||
}
|
||||
|
||||
function d3_time_dayOfYear(d) {
|
||||
return d3_time_zfill3(1 + ~~((d - new Date(d.getFullYear(), 0, 1)) / 864e5));
|
||||
return d3_time_zfill3(1 + ~~((d - d3_time_year(d)) / 864e5));
|
||||
}
|
||||
|
||||
function d3_time_weekNumberSunday(d) {
|
||||
var d0 = new Date(d.getFullYear(), 0, 1);
|
||||
var d0 = d3_time_year(d);
|
||||
return d3_time_zfill2(~~(((d - d0) / 864e5 + d0.getDay()) / 7));
|
||||
}
|
||||
|
||||
function d3_time_weekNumberMonday(d) {
|
||||
var d0 = new Date(d.getFullYear(), 0, 1);
|
||||
var d0 = d3_time_year(d);
|
||||
return d3_time_zfill2(~~(((d - d0) / 864e5 + (d0.getDay() + 6) % 7) / 7));
|
||||
}
|
||||
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
d3.time = {};
|
||||
|
||||
var d3_time = Date;
|
||||
|
|
|
@ -7,34 +7,34 @@ function max(array) {
|
|||
}
|
||||
|
||||
console.log("max:");
|
||||
console.log(" [1] -> " + max([1]))
|
||||
console.log(" [1] -> " + max([1]));
|
||||
console.log(" [5, 1, 2, 3, 4] -> " + max([5, 1, 2, 3, 4]));
|
||||
console.log(" [\"a\", \"b\", \"c\"] -> " + max(["c", "a", "b"]))
|
||||
console.log(" [\"20\", \"3\"] -> " + max(["20", "3"]))
|
||||
console.log(" [\"3\", \"20\"] -> " + max(["3", "20"]))
|
||||
console.log(" [20, 3] -> " + max([20, 3]))
|
||||
console.log(" [3, 20] -> " + max([3, 20]))
|
||||
console.log(" [\"a\", \"b\", \"c\"] -> " + max(["c", "a", "b"]));
|
||||
console.log(" [\"20\", \"3\"] -> " + max(["20", "3"]));
|
||||
console.log(" [\"3\", \"20\"] -> " + max(["3", "20"]));
|
||||
console.log(" [20, 3] -> " + max([20, 3]));
|
||||
console.log(" [3, 20] -> " + max([3, 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("max of empty array is undefined:");
|
||||
console.log(" [] -> " + max([]))
|
||||
console.log(" [null] -> " + max([null]))
|
||||
console.log(" [undefined] -> " + max([undefined]))
|
||||
console.log(" [NaN] -> " + max([NaN]))
|
||||
console.log(" [NaN, NaN] -> " + max([NaN, NaN]))
|
||||
console.log(" [] -> " + max([]));
|
||||
console.log(" [null] -> " + max([null]));
|
||||
console.log(" [undefined] -> " + max([undefined]));
|
||||
console.log(" [NaN] -> " + max([NaN]));
|
||||
console.log(" [NaN, NaN] -> " + max([NaN, NaN]));
|
||||
console.log("");
|
||||
|
||||
console.log("max ignores null, undefined, and NaN:");
|
||||
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + max([NaN, 1, 2, 3, 4, 5]));
|
||||
console.log(" [1, 2, 3, 4, 5, NaN] -> " + max([1, 2, 3, 4, 5, NaN]));
|
||||
console.log(" [10, null, 3, undefined, 3, NaN] -> " + max([10, null, 3, undefined, 5, NaN]));
|
||||
console.log(" [10, null, 3, undefined, 5, NaN] -> " + max([10, null, 3, undefined, 5, NaN]));
|
||||
console.log("");
|
||||
|
||||
console.log("max compares heterogenous types as numbers:");
|
||||
console.log(" [20, \"3\"] -> " + max([20, "3"]))
|
||||
console.log(" [\"20\", 3] -> " + max(["20", 3]))
|
||||
console.log(" [3, \"20\"] -> " + max([3, "20"]))
|
||||
console.log(" [\"3\", 20] -> " + max(["3", 20]))
|
||||
console.log(" [20, \"3\"] -> " + max([20, "3"]));
|
||||
console.log(" [\"20\", 3] -> " + max(["20", 3]));
|
||||
console.log(" [3, \"20\"] -> " + max([3, "20"]));
|
||||
console.log(" [\"3\", 20] -> " + max(["3", 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("max applies accessor function:");
|
||||
|
|
|
@ -17,7 +17,7 @@ max of empty array is undefined:
|
|||
max ignores null, undefined, and NaN:
|
||||
[NaN, 1, 2, 3, 4, 5] -> 5
|
||||
[1, 2, 3, 4, 5, NaN] -> 5
|
||||
[10, null, 3, undefined, 3, NaN] -> 10
|
||||
[10, null, 3, undefined, 5, NaN] -> 10
|
||||
|
||||
max compares heterogenous types as numbers:
|
||||
[20, "3"] -> 20
|
||||
|
|
|
@ -7,34 +7,34 @@ function min(array) {
|
|||
}
|
||||
|
||||
console.log("min:");
|
||||
console.log(" [1] -> " + min([1]))
|
||||
console.log(" [1] -> " + min([1]));
|
||||
console.log(" [5, 1, 2, 3, 4] -> " + min([5, 1, 2, 3, 4]));
|
||||
console.log(" [\"a\", \"b\", \"c\"] -> " + min(["c", "a", "b"]))
|
||||
console.log(" [\"20\", \"3\"] -> " + min(["20", "3"]))
|
||||
console.log(" [\"3\", \"20\"] -> " + min(["3", "20"]))
|
||||
console.log(" [20, 3] -> " + min([20, 3]))
|
||||
console.log(" [3, 20] -> " + min([3, 20]))
|
||||
console.log(" [\"a\", \"b\", \"c\"] -> " + min(["c", "a", "b"]));
|
||||
console.log(" [\"20\", \"3\"] -> " + min(["20", "3"]));
|
||||
console.log(" [\"3\", \"20\"] -> " + min(["3", "20"]));
|
||||
console.log(" [20, 3] -> " + min([20, 3]));
|
||||
console.log(" [3, 20] -> " + min([3, 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("min of empty array is undefined:");
|
||||
console.log(" [] -> " + min([]))
|
||||
console.log(" [null] -> " + min([null]))
|
||||
console.log(" [undefined] -> " + min([undefined]))
|
||||
console.log(" [NaN] -> " + min([NaN]))
|
||||
console.log(" [NaN, NaN] -> " + min([NaN, NaN]))
|
||||
console.log(" [] -> " + min([]));
|
||||
console.log(" [null] -> " + min([null]));
|
||||
console.log(" [undefined] -> " + min([undefined]));
|
||||
console.log(" [NaN] -> " + min([NaN]));
|
||||
console.log(" [NaN, NaN] -> " + min([NaN, NaN]));
|
||||
console.log("");
|
||||
|
||||
console.log("min ignores null, undefined, and NaN:");
|
||||
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + min([NaN, 1, 2, 3, 4, 5]));
|
||||
console.log(" [1, 2, 3, 4, 5, NaN] -> " + min([1, 2, 3, 4, 5, NaN]));
|
||||
console.log(" [10, null, 3, undefined, 3, NaN] -> " + min([10, null, 3, undefined, 5, NaN]));
|
||||
console.log(" [10, null, 3, undefined, 5, NaN] -> " + min([10, null, 3, undefined, 5, NaN]));
|
||||
console.log("");
|
||||
|
||||
console.log("min compares heterogenous types as numbers:");
|
||||
console.log(" [20, \"3\"] -> " + min([20, "3"]))
|
||||
console.log(" [\"20\", 3] -> " + min(["20", 3]))
|
||||
console.log(" [3, \"20\"] -> " + min([3, "20"]))
|
||||
console.log(" [\"3\", 20] -> " + min(["3", 20]))
|
||||
console.log(" [20, \"3\"] -> " + min([20, "3"]));
|
||||
console.log(" [\"20\", 3] -> " + min(["20", 3]));
|
||||
console.log(" [3, \"20\"] -> " + min([3, "20"]));
|
||||
console.log(" [\"3\", 20] -> " + min(["3", 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("min applies accessor function:");
|
||||
|
|
|
@ -17,7 +17,7 @@ min of empty array is undefined:
|
|||
min ignores null, undefined, and NaN:
|
||||
[NaN, 1, 2, 3, 4, 5] -> 1
|
||||
[1, 2, 3, 4, 5, NaN] -> 1
|
||||
[10, null, 3, undefined, 3, NaN] -> 3
|
||||
[10, null, 3, undefined, 5, NaN] -> 3
|
||||
|
||||
min compares heterogenous types as numbers:
|
||||
[20, "3"] -> "3"
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
require("./../lib/env-js/envjs/node");
|
||||
require("./../d3");
|
||||
|
||||
console.log("sum:");
|
||||
console.log(" [] -> " + d3.sum([]));
|
||||
console.log(" [1] -> " + d3.sum([1]));
|
||||
console.log(" [5, 1, 2, 3, 4] -> " + d3.sum([5, 1, 2, 3, 4]));
|
||||
console.log(" [\"a\", \"b\", \"c\"] -> " + d3.sum(["c", "a", "b"]));
|
||||
console.log(" [\"20\", \"3\"] -> " + d3.sum(["20", "3"]));
|
||||
console.log(" [\"3\", \"20\"] -> " + d3.sum(["3", "20"]));
|
||||
console.log(" [20, 3] -> " + d3.sum([20, 3]));
|
||||
console.log(" [3, 20] -> " + d3.sum([3, 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("sum ignores null, undefined, and NaN:");
|
||||
console.log(" [NaN, 1, 2, 3, 4, 5] -> " + d3.sum([NaN, 1, 2, 3, 4, 5]));
|
||||
console.log(" [1, 2, 3, 4, 5, NaN] -> " + d3.sum([1, 2, 3, 4, 5, NaN]));
|
||||
console.log(" [10, null, 3, undefined, 5, NaN] -> " + d3.sum([10, null, 3, undefined, 5, NaN]));
|
||||
console.log("");
|
||||
|
||||
console.log("sum treats heterogenous types as numbers:");
|
||||
console.log(" [20, \"3\"] -> " + d3.sum([20, "3"]));
|
||||
console.log(" [\"20\", 3] -> " + d3.sum(["20", 3]));
|
||||
console.log(" [3, \"20\"] -> " + d3.sum([3, "20"]));
|
||||
console.log(" [\"3\", 20] -> " + d3.sum(["3", 20]));
|
||||
console.log("");
|
||||
|
||||
console.log("sum applies accessor function:");
|
||||
console.log(" [1, 2, 3, 4, 5], [2, 4, 6, 8, 10] -> " + d3.sum([[1, 2, 3, 4, 5], [2, 4, 6, 8, 10]], function(d) { return d3.sum(d); }));
|
||||
console.log(" [1, 2, 3, 4, 5] -> " + d3.sum([1, 2, 3, 4, 5], function(d, i) { return i; }));
|
||||
console.log("");
|
|
@ -0,0 +1,25 @@
|
|||
sum:
|
||||
[] -> 0
|
||||
[1] -> 1
|
||||
[5, 1, 2, 3, 4] -> 15
|
||||
["a", "b", "c"] -> 0
|
||||
["20", "3"] -> 23
|
||||
["3", "20"] -> 23
|
||||
[20, 3] -> 23
|
||||
[3, 20] -> 23
|
||||
|
||||
sum ignores null, undefined, and NaN:
|
||||
[NaN, 1, 2, 3, 4, 5] -> 15
|
||||
[1, 2, 3, 4, 5, NaN] -> 15
|
||||
[10, null, 3, undefined, 5, NaN] -> 18
|
||||
|
||||
sum treats heterogenous types as numbers:
|
||||
[20, "3"] -> 23
|
||||
["20", 3] -> 23
|
||||
[3, "20"] -> 23
|
||||
["3", 20] -> 23
|
||||
|
||||
sum applies accessor function:
|
||||
[1, 2, 3, 4, 5], [2, 4, 6, 8, 10] -> 45
|
||||
[1, 2, 3, 4, 5] -> 10
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
require("./../lib/env-js/envjs/node");
|
||||
require("./../d3");
|
||||
require("./../d3.time");
|
||||
|
||||
console.log("format:");
|
||||
console.log(" 01/01/1990 00:00:00 ->", d3.time.format.iso(new Date(Date.UTC(1990, 0, 1))));
|
||||
console.log(" 12/31/2011 23:59:59 ->", d3.time.format.iso(new Date(Date.UTC(2011, 11, 31, 23, 59, 59))));
|
||||
console.log("");
|
|
@ -0,0 +1,4 @@
|
|||
format:
|
||||
01/01/1990 00:00:00 -> 1990-01-01T00:00:00Z
|
||||
12/31/2011 23:59:59 -> 2011-12-31T23:59:59Z
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
require("./../lib/env-js/envjs/node");
|
||||
require("./../d3");
|
||||
require("./../d3.time");
|
||||
|
||||
var formats = [
|
||||
"a", "A", "b", "B", "c", "d", "e", "H", "I", "j", "m", "M",
|
||||
"p", "S", "U", "w", "W", "x", "X", "y", "Y", "Z", "%"
|
||||
];
|
||||
|
||||
var now = new Date(Date.UTC(1990, 0, 1));
|
||||
console.log("format 01/01/1990 00:00:00:");
|
||||
formats.forEach(function(f) {
|
||||
console.log(" " + f + ":", d3.time.format.utc("%" + f)(now));
|
||||
});
|
||||
console.log("");
|
||||
|
||||
var now = new Date(Date.UTC(2011, 11, 31, 23, 59, 59));
|
||||
console.log("format 12/31/2011 23:59:59:");
|
||||
formats.forEach(function(f) {
|
||||
console.log(" " + f + ":", d3.time.format.utc("%" + f)(now));
|
||||
});
|
||||
console.log("");
|
|
@ -0,0 +1,50 @@
|
|||
format 01/01/1990 00:00:00:
|
||||
a: Mon
|
||||
A: Monday
|
||||
b: Jan
|
||||
B: January
|
||||
c: Mon Jan 1 00:00:00 1990
|
||||
d: 01
|
||||
e: 1
|
||||
H: 00
|
||||
I: 12
|
||||
j: 001
|
||||
m: 01
|
||||
M: 00
|
||||
p: AM
|
||||
S: 00
|
||||
U: 00
|
||||
w: 1
|
||||
W: 00
|
||||
x: 01/01/90
|
||||
X: 00:00:00
|
||||
y: 90
|
||||
Y: 1990
|
||||
Z: +0000
|
||||
%: %
|
||||
|
||||
format 12/31/2011 23:59:59:
|
||||
a: Sat
|
||||
A: Saturday
|
||||
b: Dec
|
||||
B: December
|
||||
c: Sat Dec 31 23:59:59 2011
|
||||
d: 31
|
||||
e: 31
|
||||
H: 23
|
||||
I: 11
|
||||
j: 365
|
||||
m: 12
|
||||
M: 59
|
||||
p: PM
|
||||
S: 59
|
||||
U: 52
|
||||
w: 6
|
||||
W: 52
|
||||
x: 12/31/11
|
||||
X: 23:59:59
|
||||
y: 11
|
||||
Y: 2011
|
||||
Z: +0000
|
||||
%: %
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
require("./../lib/env-js/envjs/node");
|
||||
require("./../d3");
|
||||
require("./../d3.time");
|
||||
|
||||
var f = d3.time.format.utc("%c");
|
||||
|
||||
console.log("parse:");
|
||||
console.log(" 1990-01-01T00:00:00Z ->", f(d3.time.format.iso.parse("1990-01-01T00:00:00Z")));
|
||||
console.log(" 2011-12-31T23:59:59Z ->", f(d3.time.format.iso.parse("2011-12-31T23:59:59Z")));
|
||||
console.log("");
|
|
@ -0,0 +1,4 @@
|
|||
parse:
|
||||
1990-01-01T00:00:00Z -> Mon Jan 1 00:00:00 1990
|
||||
2011-12-31T23:59:59Z -> Sat Dec 31 23:59:59 2011
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
require("./../lib/env-js/envjs/node");
|
||||
require("./../d3");
|
||||
require("./../d3.time");
|
||||
|
||||
var F = d3.time.format.utc,
|
||||
f = d3.time.format("%c");
|
||||
|
||||
console.log("parse a m/d/Y:");
|
||||
console.log(" Sun 01/01/1990:", f(F("%a %m/%d/%Y").parse("Sun 01/01/1990")));
|
||||
console.log(" Wed 01/01/1990:", f(F("%a %m/%d/%Y").parse("Wed 01/01/1990")));
|
||||
console.log(" XXX 01/01/1990:", F("%a %m/%d/%Y").parse("XXX 01/01/1990"));
|
||||
console.log("");
|
||||
|
||||
console.log("parse A m/d/Y:");
|
||||
console.log(" Sunday 01/01/1990:", f(F("%A %m/%d/%Y").parse("Sunday 01/01/1990")));
|
||||
console.log(" Wednesday 01/01/1990:", f(F("%A %m/%d/%Y").parse("Wednesday 01/01/1990")));
|
||||
console.log(" Caturday 01/01/1990:", F("%A %m/%d/%Y").parse("Caturday 01/01/1990"));
|
||||
console.log("");
|
||||
|
||||
console.log("parse m/d/y:");
|
||||
console.log(" 1/1/90:", f(F("%m/%d/%y").parse("1/1/90")));
|
||||
console.log(" 1/1/10:", f(F("%m/%d/%y").parse("1/1/10")));
|
||||
console.log("");
|
||||
|
||||
console.log("parse x:");
|
||||
console.log(" 1/1/90:", f(F("%x").parse("1/1/90")));
|
||||
console.log(" 1/1/10:", f(F("%x").parse("1/1/10")));
|
||||
console.log("");
|
||||
|
||||
console.log("parse b d Y:");
|
||||
console.log(" jan 01, 1990:", f(F("%b %d, %Y").parse("jan 01, 1990")));
|
||||
console.log(" jan 1, 1990:", f(F("%b %d, %Y").parse("jan 1, 1990")));
|
||||
console.log(" 1 Feb., 1990:", f(F("%d %b., %Y").parse("1 Feb., 1990")));
|
||||
console.log(" 01 Feb., 1990:", f(F("%d %b., %Y").parse("01 Feb., 1990")));
|
||||
console.log(" 1 Feb., 1990:", f(F("%d %b., %Y").parse(" 1 Feb., 1990")));
|
||||
console.log(" 1 Feb., 1990:", f(F(" %d %b., %Y").parse(" 1 Feb., 1990")));
|
||||
console.log(" Moy 1 1990:", F("%b %d %Y").parse("Moy 1 1990"));
|
||||
console.log("");
|
||||
|
||||
console.log("parse B d Y:");
|
||||
console.log(" January 01, 1990:", f(F("%B %d, %Y").parse("January 01, 1990")));
|
||||
console.log(" january 1, 1990:", f(F("%B %d, %Y").parse("january 1, 1990")));
|
||||
console.log(" 1 February, 1990:", f(F("%d %B, %Y").parse("1 February, 1990")));
|
||||
console.log(" 01 February, 1990:", f(F("%d %B, %Y").parse("01 February, 1990")));
|
||||
console.log(" 1 February, 1990:", f(F("%d %B, %Y").parse(" 1 February, 1990")));
|
||||
console.log(" 1 February, 1990:", f(F(" %d %B, %Y").parse(" 1 February, 1990")));
|
||||
console.log(" Juin 1 1990:", F("%B %d %Y").parse("Join 1 1990"));
|
||||
console.log("");
|
||||
|
||||
console.log("parse c:");
|
||||
console.log(" Mon Jan 1 00:00:00 1990:", f(F("%c").parse("Mon Jan 1 00:00:00 1990")));
|
||||
console.log(" Sun Jan 1 00:00:00 1990:", f(F("%c").parse("Sun Jan 1 00:00:00 1990")));
|
||||
console.log(" Mon Jan 01 00:00:00 1990:", f(F("%c").parse("Mon Jan 01 00:00:00 1990")));
|
||||
console.log(" Mon Jan 1 00:00:00 1990:", f(F("%c").parse("Mon Jan 1 00:00:00 1990")));
|
||||
console.log(" Mon Jan 1 0:0:0 1990:", f(F("%c").parse("Mon Jan 1 0:0:0 1990")));
|
||||
console.log("");
|
||||
|
||||
console.log("parse H M S:");
|
||||
console.log(" 00:00:00:", f(F("%H:%M:%S").parse("00:00:00")));
|
||||
console.log(" 11:59:59:", f(F("%H:%M:%S").parse("11:59:59")));
|
||||
console.log(" 12:00:00:", f(F("%H:%M:%S").parse("12:00:00")));
|
||||
console.log(" 12:00:01:", f(F("%H:%M:%S").parse("12:00:01")));
|
||||
console.log(" 23:59:59:", f(F("%H:%M:%S").parse("23:59:59")));
|
||||
console.log("");
|
||||
|
||||
console.log("parse X:");
|
||||
console.log(" 00:00:00:", f(F("%X").parse("00:00:00")));
|
||||
console.log(" 11:59:59:", f(F("%X").parse("11:59:59")));
|
||||
console.log(" 12:00:00:", f(F("%X").parse("12:00:00")));
|
||||
console.log(" 12:00:01:", f(F("%X").parse("12:00:01")));
|
||||
console.log(" 23:59:59:", f(F("%X").parse("23:59:59")));
|
||||
console.log("");
|
||||
|
||||
console.log("parse I M S p:");
|
||||
console.log(" 12:00:00 am:", f(F("%I:%M:%S %p").parse("12:00:00 am")));
|
||||
console.log(" 11:59:59 AM:", f(F("%I:%M:%S %p").parse("11:59:59 AM")));
|
||||
console.log(" 12:00:00 pm:", f(F("%I:%M:%S %p").parse("12:00:00 pm")));
|
||||
console.log(" 12:00:01 pm:", f(F("%I:%M:%S %p").parse("12:00:01 pm")));
|
||||
console.log(" 11:59:59 PM:", f(F("%I:%M:%S %p").parse("11:59:59 PM")));
|
||||
console.log("");
|
|
@ -0,0 +1,64 @@
|
|||
parse a m/d/Y:
|
||||
Sun 01/01/1990: Sun Dec 31 16:00:00 1989
|
||||
Wed 01/01/1990: Sun Dec 31 16:00:00 1989
|
||||
XXX 01/01/1990: null
|
||||
|
||||
parse A m/d/Y:
|
||||
Sunday 01/01/1990: Sun Dec 31 16:00:00 1989
|
||||
Wednesday 01/01/1990: Sun Dec 31 16:00:00 1989
|
||||
Caturday 01/01/1990: null
|
||||
|
||||
parse m/d/y:
|
||||
1/1/90: Sat Dec 31 16:00:00 2089
|
||||
1/1/10: Thu Dec 31 16:00:00 2009
|
||||
|
||||
parse x:
|
||||
1/1/90: Sat Dec 31 16:00:00 2089
|
||||
1/1/10: Thu Dec 31 16:00:00 2009
|
||||
|
||||
parse b d Y:
|
||||
jan 01, 1990: Sun Dec 31 16:00:00 1989
|
||||
jan 1, 1990: Sun Dec 31 16:00:00 1989
|
||||
1 Feb., 1990: Wed Jan 31 16:00:00 1990
|
||||
01 Feb., 1990: Wed Jan 31 16:00:00 1990
|
||||
1 Feb., 1990: Wed Jan 31 16:00:00 1990
|
||||
1 Feb., 1990: Wed Jan 31 16:00:00 1990
|
||||
Moy 1 1990: null
|
||||
|
||||
parse B d Y:
|
||||
January 01, 1990: Sun Dec 31 16:00:00 1989
|
||||
january 1, 1990: Sun Dec 31 16:00:00 1989
|
||||
1 February, 1990: Wed Jan 31 16:00:00 1990
|
||||
01 February, 1990: Wed Jan 31 16:00:00 1990
|
||||
1 February, 1990: Wed Jan 31 16:00:00 1990
|
||||
1 February, 1990: Wed Jan 31 16:00:00 1990
|
||||
Juin 1 1990: null
|
||||
|
||||
parse c:
|
||||
Mon Jan 1 00:00:00 1990: Sun Dec 31 16:00:00 1989
|
||||
Sun Jan 1 00:00:00 1990: Sun Dec 31 16:00:00 1989
|
||||
Mon Jan 01 00:00:00 1990: Sun Dec 31 16:00:00 1989
|
||||
Mon Jan 1 00:00:00 1990: Sun Dec 31 16:00:00 1989
|
||||
Mon Jan 1 0:0:0 1990: Sun Dec 31 16:00:00 1989
|
||||
|
||||
parse H M S:
|
||||
00:00:00: Sun Dec 31 16:00:00 1899
|
||||
11:59:59: Mon Jan 1 03:59:59 1900
|
||||
12:00:00: Mon Jan 1 04:00:00 1900
|
||||
12:00:01: Mon Jan 1 04:00:01 1900
|
||||
23:59:59: Mon Jan 1 15:59:59 1900
|
||||
|
||||
parse X:
|
||||
00:00:00: Sun Dec 31 16:00:00 1899
|
||||
11:59:59: Mon Jan 1 03:59:59 1900
|
||||
12:00:00: Mon Jan 1 04:00:00 1900
|
||||
12:00:01: Mon Jan 1 04:00:01 1900
|
||||
23:59:59: Mon Jan 1 15:59:59 1900
|
||||
|
||||
parse I M S p:
|
||||
12:00:00 am: Sun Dec 31 16:00:00 1899
|
||||
11:59:59 AM: Mon Jan 1 03:59:59 1900
|
||||
12:00:00 pm: Mon Jan 1 04:00:00 1900
|
||||
12:00:01 pm: Mon Jan 1 04:00:01 1900
|
||||
11:59:59 PM: Mon Jan 1 15:59:59 1900
|
||||
|
Загрузка…
Ссылка в новой задаче