Skip to content

Commit

Permalink
adds namespaced timers - closes #55
Browse files Browse the repository at this point in the history
  • Loading branch information
1wheel committed Dec 12, 2017
1 parent 5afd1cf commit 608a2b6
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 13 deletions.
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -201,8 +201,11 @@ var fruits = [{ name: "Apple", color: "green" }, { name: "Banana", color: "yello
fruits.sort(d3.ascendingKey('color'));
```
<a
name="nestBy" href="#nestBy">#</a> d3.<b>nestBy</b>(<i>array, key</i>) [<>](https://github.com/gka/d3-jetpack/blob/master/src/nestBy.js "Source")
<a name="timer" href="#timer">#</a> d3.<b>timer</b>(<i>callback[, delay[, time[, namespace]]]</i>) [<>](https://github.com/gka/d3-jetpack/blob/master/src/timer.js "Source")
`d3.timer`, `d3.timeout` and `d3.interval` all now take an optional namespace argument. Previous timers with the same namespace as a new timer are stopped.
<a name="nestBy" href="#nestBy">#</a> d3.<b>nestBy</b>(<i>array, key</i>) [<>](https://github.com/gka/d3-jetpack/blob/master/src/nestBy.js "Source")
Shorthand for `d3.nest().key(key).entries(array)`. Returns an array of arrays, instead of a `key`/`value` pairs. The `key` property of each array is equal the value returned by the `key` function when it is called with element of the array.
Expand Down
44 changes: 40 additions & 4 deletions build/d3-jetpack.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
// https://github.com/gka/d3-jetpack#readme Version 2.0.15. Copyright 2017 Gregor Aisch.
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-transition'), require('d3-array'), require('d3-axis'), require('d3-scale'), require('d3-collection'), require('d3-queue'), require('d3-request')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-transition', 'd3-array', 'd3-axis', 'd3-scale', 'd3-collection', 'd3-queue', 'd3-request'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Selection,d3Transition,d3Array,d3Axis,d3Scale,d3Collection,d3Queue,d3Request) { 'use strict';
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-selection'), require('d3-transition'), require('d3-array'), require('d3-axis'), require('d3-scale'), require('d3-collection'), require('d3-queue'), require('d3-request'), require('d3-timer')) :
typeof define === 'function' && define.amd ? define(['exports', 'd3-selection', 'd3-transition', 'd3-array', 'd3-axis', 'd3-scale', 'd3-collection', 'd3-queue', 'd3-request', 'd3-timer'], factory) :
(factory((global.d3 = global.d3 || {}),global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3,global.d3));
}(this, (function (exports,d3Selection,d3Transition,d3Array,d3Axis,d3Scale,d3Collection,d3Queue,d3Request,d3Timer) { 'use strict';

var translateSelection = function(xy, dim) {
var node = this.node();
Expand Down Expand Up @@ -486,6 +486,39 @@ function polygonClosed(coordinates) {
return !(a[0] - b[0] || a[1] - b[1]);
}

var prev = {};

var timer$1 = function(fn, delay, time, name){
if (prev[name]) prev[name].stop();

var newTimer = d3Timer.timer(fn, delay, time, name);
if (name) prev[name] = newTimer;

return newTimer
};

var prev$1 = {};

var interval$1 = function(fn, delay, time, name){
if (prev$1[name]) prev$1[name].stop();

var newTimer = d3Timer.interval(fn, delay, time, name);
if (name) prev$1[name] = newTimer;

return newTimer
};

var prev$2 = {};

var timeout$1 = function(fn, delay, time, name){
if (prev$2[name]) prev$2[name].stop();

var newTimer = d3Timer.timeout(fn, delay, time, name);
if (name) prev$2[name] = newTimer;

return newTimer
};

d3Selection.selection.prototype.translate = translateSelection;
d3Transition.transition.prototype.translate = translateSelection;
d3Selection.selection.prototype.append = append;
Expand Down Expand Up @@ -513,6 +546,9 @@ exports.nestBy = nestBy;
exports.round = round;
exports.clamp = clamp;
exports.polygonClip = polygonClip;
exports.timer = timer$1;
exports.interval = interval$1;
exports.timeout = timeout$1;

Object.defineProperty(exports, '__esModule', { value: true });

Expand Down
39 changes: 36 additions & 3 deletions build/d3v4+jetpack.js
Original file line number Diff line number Diff line change
Expand Up @@ -17326,6 +17326,39 @@ function polygonClosed(coordinates) {
return !(a[0] - b[0] || a[1] - b[1]);
}

var prev = {};

var timer$1 = function(fn, delay, time, name){
if (prev[name]) prev[name].stop();

var newTimer = timer(fn, delay, time, name);
if (name) prev[name] = newTimer;

return newTimer
};

var prev$1 = {};

var interval$2 = function(fn, delay, time, name){
if (prev$1[name]) prev$1[name].stop();

var newTimer = interval$1(fn, delay, time, name);
if (name) prev$1[name] = newTimer;

return newTimer
};

var prev$2 = {};

var timeout$2 = function(fn, delay, time, name){
if (prev$2[name]) prev$2[name].stop();

var newTimer = timeout$1(fn, delay, time, name);
if (name) prev$2[name] = newTimer;

return newTimer
};

selection.prototype.translate = translateSelection;
transition.prototype.translate = translateSelection;
selection.prototype.append = append;
Expand Down Expand Up @@ -17357,6 +17390,9 @@ exports.nestBy = nestBy;
exports.round = round;
exports.clamp = clamp;
exports.polygonClip = polygonClip;
exports.timer = timer$1;
exports.timeout = timeout$2;
exports.interval = interval$2;
exports.version = version;
exports.bisect = bisectRight;
exports.bisectRight = bisectRight;
Expand Down Expand Up @@ -17741,10 +17777,7 @@ exports.timeFormatLocale = formatLocale$1;
exports.isoFormat = formatIso;
exports.isoParse = parseIso;
exports.now = now;
exports.timer = timer;
exports.timerFlush = timerFlush;
exports.timeout = timeout$1;
exports.interval = interval$1;
exports.transition = transition;
exports.active = active;
exports.interrupt = interrupt;
Expand Down
5 changes: 4 additions & 1 deletion d3-index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,8 @@ export {
nestBy,
round,
clamp,
polygonClip
polygonClip,
timer,
timeout,
interval
} from "./index.js";
5 changes: 4 additions & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,7 @@ export {default as loadData} from "./src/loadData";
export {default as nestBy} from "./src/nestBy";
export {default as round} from "./src/round";
export {default as clamp} from "./src/clamp";
export {default as polygonClip} from "./src/polygonClip";
export {default as polygonClip} from "./src/polygonClip";
export {default as timer} from "./src/timer";
export {default as interval} from "./src/interval";
export {default as timeout} from "./src/timeout";
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"jsnext:main": "index",
"module": "index",
"scripts": {
"pretest": "rm -rf build && mkdir build && rollup --banner \"$(preamble)\" -f umd -g d3-selection:d3,d3-transition:d3,d3-axis:d3,d3-scale:d3,d3-queue:d3,d3-array:d3,d3-collection:d3,d3-request:d3 -n d3 -o build/d3-jetpack.js -- index.js",
"pretest": "rm -rf build && mkdir build && rollup --banner \"$(preamble)\" -f umd -g d3-selection:d3,d3-transition:d3,d3-axis:d3,d3-scale:d3,d3-queue:d3,d3-array:d3,d3-collection:d3,d3-request:d3,d3-timer:d3 -n d3 -o build/d3-jetpack.js -- index.js",
"test": "tape 'test/test-*.js'",
"prepublish": "npm run pretest && bin/rollup"
},
Expand All @@ -19,8 +19,8 @@
"rollup": "0.41",
"rollup-plugin-ascii": "0.0",
"rollup-plugin-node-resolve": "2",
"tape": "4",
"svgdom": "^0.0.15",
"tape": "4",
"uglify-js": "2"
},
"repository": {
Expand Down Expand Up @@ -60,6 +60,7 @@
"d3-request": "1",
"d3-scale": "1",
"d3-selection": "1",
"d3-timer": "1",
"d3-transition": "1"
}
}
12 changes: 12 additions & 0 deletions src/interval.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {interval} from "d3-timer";

var prev = {}

export default function(fn, delay, time, name){
if (prev[name]) prev[name].stop()

var newTimer = interval(fn, delay, time, name)
if (name) prev[name] = newTimer

return newTimer
}
12 changes: 12 additions & 0 deletions src/timeout.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {timeout} from "d3-timer";

var prev = {}

export default function(fn, delay, time, name){
if (prev[name]) prev[name].stop()

var newTimer = timeout(fn, delay, time, name)
if (name) prev[name] = newTimer

return newTimer
}
12 changes: 12 additions & 0 deletions src/timer.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import {timer} from "d3-timer";

var prev = {}

export default function(fn, delay, time, name){
if (prev[name]) prev[name].stop()

var newTimer = timer(fn, delay, time, name)
if (name) prev[name] = newTimer

return newTimer
}
3 changes: 3 additions & 0 deletions test/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -116,4 +116,7 @@

drawCicle([c.width/2, c.height/2])


// d3.timer(() => console.log('hell0'), 0, 0, 'hello-timer')

</script>

0 comments on commit 608a2b6

Please sign in to comment.