! function(t) {
|
|
if ("object" == typeof exports && "undefined" != typeof module) module.exports = t();
|
|
else if ("function" == typeof define && define.amd) define([], t);
|
|
else {
|
|
var e;
|
|
e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.functionPlot = t()
|
|
}
|
|
}(function() {
|
|
return function t(e, n, r) {
|
|
function i(a, o) {
|
|
if (!n[a]) {
|
|
if (!e[a]) {
|
|
var l = "function" == typeof require && require;
|
|
if (!o && l) return l(a, !0);
|
|
if (s) return s(a, !0);
|
|
var c = new Error("Cannot find module '" + a + "'");
|
|
throw c.code = "MODULE_NOT_FOUND", c
|
|
}
|
|
var u = n[a] = {
|
|
exports: {}
|
|
};
|
|
e[a][0].call(u.exports, function(t) {
|
|
var n = e[a][1][t];
|
|
return i(n ? n : t)
|
|
}, u, u.exports, t, e, n, r)
|
|
}
|
|
return n[a].exports
|
|
}
|
|
for (var s = "function" == typeof require && require, a = 0; a < r.length; a++) i(r[a]);
|
|
return i
|
|
}({
|
|
1: [function(t, e) {
|
|
"use strict";
|
|
var n, r, i = window.d3,
|
|
s = t("events"),
|
|
a = t("extend"),
|
|
o = t("./lib/tip"),
|
|
l = t("./lib/utils"),
|
|
c = t("./lib/helper/"),
|
|
u = l.assert;
|
|
e.exports = function(t) {
|
|
function e() {
|
|
this.id = t.target, this.linkedGraphs = [this], this.setVars(), this.build(), this.setUpEventListeners()
|
|
}
|
|
t = t || {}, t.data = t.data || [];
|
|
var l, h, p, f, d, v, m = i.svg.line().x(function(t) {
|
|
return d(t[0])
|
|
}).y(function(t) {
|
|
return v(t[1])
|
|
});
|
|
return e.prototype = Object.create(s.prototype), e.prototype.updateBounds = function() {
|
|
l = this.meta.width = (t.width || n.DEFAULT_WIDTH) - p.left - p.right, h = this.meta.height = (t.height || n.DEFAULT_HEIGHT) - p.top - p.bottom;
|
|
var e = this.meta.xDomain,
|
|
r = this.meta.yDomain,
|
|
s = i.format("s"),
|
|
a = i.format(".0r"),
|
|
o = function(t) {
|
|
return Math.abs(t) >= 1 ? s(t) : a(t)
|
|
};
|
|
d = this.meta.xScale = i.scale.linear().domain(e).range([0, l]), v = this.meta.yScale = i.scale.linear().domain(r).range([h, 0]), this.meta.xAxis = i.svg.axis().scale(d).orient("bottom").tickFormat(o), this.meta.yAxis = i.svg.axis().scale(v).orient("left").tickFormat(o)
|
|
}, e.prototype.setVars = function() {
|
|
var e = 10;
|
|
this.meta = {}, p = this.meta.margin = {
|
|
left: 30,
|
|
right: 30,
|
|
top: 20,
|
|
bottom: 20
|
|
}, f = this.meta.zoomBehavior = i.behavior.zoom();
|
|
var n = this.meta.xDomain = t.xDomain || [-e / 2, e / 2],
|
|
r = this.meta.yDomain = t.yDomain || [-e / 2, e / 2];
|
|
u(n[0] < n[1]), u(r[0] < r[1]), t.title && (this.meta.margin.top = 40), this.updateBounds()
|
|
}, e.prototype.build = function() {
|
|
var e = this.root = i.select(t.target).selectAll("svg").data([t]);
|
|
this.root.enter = e.enter().append("svg").attr("class", "function-plot").attr("font-size", this.getFontSize()), e.attr("width", l + p.left + p.right).attr("height", h + p.top + p.bottom), this.buildTitle(), this.buildLegend(), this.buildCanvas(), this.buildClip(), this.buildAxis(), this.buildContent();
|
|
var n = this.tip = o(a(t.tip, {
|
|
owner: this
|
|
}));
|
|
this.canvas.call(n), this.buildZoomHelper()
|
|
}, e.prototype.buildTitle = function() {
|
|
var e = this.root.selectAll("text.title").data(function(t) {
|
|
return [t.title].filter(Boolean)
|
|
});
|
|
e.enter().append("text").attr("class", "title").attr("y", p.top / 2).attr("x", p.left + l / 2).attr("font-size", 25).attr("text-anchor", "middle").attr("alignment-baseline", "middle").text(t.title), e.exit().remove()
|
|
}, e.prototype.buildLegend = function() {
|
|
this.root.enter.append("text").attr("class", "top-right-legend").attr("text-anchor", "end"), this.root.select(".top-right-legend").attr("y", p.top).attr("x", l + p.left)
|
|
}, e.prototype.buildCanvas = function() {
|
|
var e = this;
|
|
this.meta.zoomBehavior.x(d).y(v).scaleExtent([1e-5, 1 / 0]).on("zoom", function() {
|
|
e.emit("all:zoom", d, v)
|
|
});
|
|
var n = this.canvas = this.root.selectAll(".canvas").data(function(t) {
|
|
return [t]
|
|
});
|
|
this.canvas.enter = n.enter().append("g").attr("class", "canvas"), n.attr("transform", "translate(" + p.left + "," + p.top + ")").call(f).each(function() {
|
|
var e = i.select(this);
|
|
t.disableZoom && e.on(".zoom", null)
|
|
})
|
|
}, e.prototype.buildClip = function() {
|
|
var t = this.id,
|
|
e = this.canvas.enter.append("defs");
|
|
e.append("clipPath").attr("id", "function-plot-clip-" + t).append("rect").attr("class", "clip static-clip"), this.canvas.selectAll(".clip").attr("width", l).attr("height", h)
|
|
}, e.prototype.buildAxis = function() {
|
|
var t = this.canvas.enter;
|
|
t.append("g").attr("class", "x axis"), t.append("g").attr("class", "y axis"), this.canvas.select(".x.axis").attr("transform", "translate(0," + h + ")").call(this.meta.xAxis), this.canvas.select(".y.axis").call(this.meta.yAxis), this.canvas.selectAll(".axis path, .axis line").attr("fill", "none").attr("stroke", "black").attr("shape-rendering", "crispedges").attr("opacity", .1)
|
|
}, e.prototype.buildAxisLabel = function() {
|
|
var t, e, n = this.canvas;
|
|
t = n.selectAll("text.x.axis-label").data(function(t) {
|
|
return [t.xLabel].filter(Boolean)
|
|
}), t.enter().append("text").attr("class", "x axis-label").attr("text-anchor", "end"), t.attr("x", l).attr("y", h - 6).text(function(t) {
|
|
return t
|
|
}), t.exit().remove(), e = n.selectAll("text.y.axis-label").data(function(t) {
|
|
return [t.yLabel].filter(Boolean)
|
|
}), e.enter().append("text").attr("class", "y axis-label").attr("y", 6).attr("dy", ".75em").attr("text-anchor", "end").attr("transform", "rotate(-90)"), e.text(function(t) {
|
|
return t
|
|
}), e.exit().remove()
|
|
}, e.prototype.buildContent = function() {
|
|
var t = this,
|
|
e = this.canvas,
|
|
n = this.content = e.selectAll("g.content").data(function(t) {
|
|
return [t]
|
|
});
|
|
n.enter().append("g").attr("clip-path", "url(#function-plot-clip-" + this.id + ")").attr("class", "content");
|
|
var s = n.selectAll("path.y.origin").data([
|
|
[
|
|
[0, v.domain()[0]],
|
|
[0, v.domain()[1]]
|
|
]
|
|
]);
|
|
s.enter().append("path").attr("class", "y origin").attr("stroke", "#eee"), s.attr("d", m);
|
|
var o = n.selectAll("path.x.origin").data([
|
|
[
|
|
[d.domain()[0], 0],
|
|
[d.domain()[1], 0]
|
|
]
|
|
]);
|
|
o.enter().append("path").attr("class", "x origin").attr("stroke", "#eee"), o.attr("d", m);
|
|
var l = n.selectAll("g.graph").data(function(t) {
|
|
return t.data
|
|
});
|
|
l.enter().append("g").attr("class", "graph"), l.each(function(e, n) {
|
|
var s = a({
|
|
owner: t,
|
|
index: n
|
|
}, e.graphOptions),
|
|
o = s.type || "line";
|
|
i.select(this).call(r[o](s)), i.select(this).call(c(s))
|
|
})
|
|
}, e.prototype.buildZoomHelper = function() {
|
|
var t = this;
|
|
this.canvas.enter.append("rect").attr("class", "zoom-and-drag").style("fill", "none").style("pointer-events", "all"), this.canvas.select(".zoom-and-drag").attr("width", l).attr("height", h).on("mouseover", function() {
|
|
t.emit("all:mouseover")
|
|
}).on("mouseout", function() {
|
|
t.emit("all:mouseout")
|
|
}).on("mousemove", function() {
|
|
t.emit("all:mousemove")
|
|
})
|
|
}, e.prototype.addLink = function() {
|
|
for (var t = 0; t < arguments.length; t += 1) this.linkedGraphs.push(arguments[t])
|
|
}, e.prototype.getFontSize = function() {
|
|
var fontSize = Math.max(Math.max(l, h) / 60, 8)
|
|
if (fontSize > 15) {
|
|
fontSize = 15;
|
|
}
|
|
return fontSize
|
|
}, e.prototype.setUpEventListeners = function() {
|
|
var t = this,
|
|
e = {
|
|
mousemove: function(e, n) {
|
|
t.tip.move(e, n)
|
|
},
|
|
mouseover: function() {
|
|
t.tip.show()
|
|
},
|
|
mouseout: function() {
|
|
t.tip.hide()
|
|
},
|
|
draw: function() {
|
|
t.buildContent()
|
|
},
|
|
"zoom:scaleUpdate": function(t, e) {
|
|
f.x(d.domain(t.domain())).y(v.domain(e.domain()))
|
|
},
|
|
"tip:update": function(e, r, i) {
|
|
var s = t.root.datum().data[i],
|
|
a = s.title || "",
|
|
o = s.renderer || function(t, e) {
|
|
return t.toFixed(3) + ", " + e.toFixed(3)
|
|
},
|
|
l = [];
|
|
a && l.push(a), l.push(o(e, r)), t.root.select(".top-right-legend").attr("fill", n.COLORS[i]).text(l.join(" "))
|
|
}
|
|
},
|
|
r = {
|
|
mousemove: function() {
|
|
var e = i.mouse(t.root.select("rect.zoom-and-drag").node()),
|
|
n = d.invert(e[0]),
|
|
r = v.invert(e[1]);
|
|
t.linkedGraphs.forEach(function(t) {
|
|
t.emit("mousemove", n, r)
|
|
})
|
|
},
|
|
zoom: function(e, n) {
|
|
t.linkedGraphs.forEach(function(t, r) {
|
|
var i = t.canvas;
|
|
i.select(".x.axis").call(t.meta.xAxis), i.select(".y.axis").call(t.meta.yAxis), r && t.emit("zoom:scaleUpdate", e, n), t.emit("draw")
|
|
}), t.emit("all:mousemove")
|
|
}
|
|
};
|
|
Object.keys(e).forEach(function(n) {
|
|
t.on(n, e[n]), !r[n] && t.on("all:" + n, function() {
|
|
var e = Array.prototype.slice.call(arguments);
|
|
t.linkedGraphs.forEach(function(t) {
|
|
var r = e.slice();
|
|
r.unshift(n), t.emit.apply(t, r)
|
|
})
|
|
})
|
|
}), Object.keys(r).forEach(function(e) {
|
|
t.on("all:" + e, r[e])
|
|
})
|
|
}, new e
|
|
}, n = e.exports.constants = t("./lib/constants"), r = e.exports.types = t("./lib/types/")
|
|
}, {
|
|
"./lib/constants": 3,
|
|
"./lib/helper/": 6,
|
|
"./lib/tip": 7,
|
|
"./lib/types/": 8,
|
|
"./lib/utils": 11,
|
|
events: 2,
|
|
extend: 12
|
|
}],
|
|
2: [function(t, e) {
|
|
function n() {
|
|
this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0
|
|
}
|
|
|
|
function r(t) {
|
|
return "function" == typeof t
|
|
}
|
|
|
|
function i(t) {
|
|
return "number" == typeof t
|
|
}
|
|
|
|
function s(t) {
|
|
return "object" == typeof t && null !== t
|
|
}
|
|
|
|
function a(t) {
|
|
return void 0 === t
|
|
}
|
|
e.exports = n, n.EventEmitter = n, n.prototype._events = void 0, n.prototype._maxListeners = void 0, n.defaultMaxListeners = 10, n.prototype.setMaxListeners = function(t) {
|
|
if (!i(t) || 0 > t || isNaN(t)) throw TypeError("n must be a positive number");
|
|
return this._maxListeners = t, this
|
|
}, n.prototype.emit = function(t) {
|
|
var e, n, i, o, l, c;
|
|
if (this._events || (this._events = {}), "error" === t && (!this._events.error || s(this._events.error) && !this._events.error.length)) {
|
|
if (e = arguments[1], e instanceof Error) throw e;
|
|
throw TypeError('Uncaught, unspecified "error" event.')
|
|
}
|
|
if (n = this._events[t], a(n)) return !1;
|
|
if (r(n)) switch (arguments.length) {
|
|
case 1:
|
|
n.call(this);
|
|
break;
|
|
case 2:
|
|
n.call(this, arguments[1]);
|
|
break;
|
|
case 3:
|
|
n.call(this, arguments[1], arguments[2]);
|
|
break;
|
|
default:
|
|
for (i = arguments.length, o = new Array(i - 1), l = 1; i > l; l++) o[l - 1] = arguments[l];
|
|
n.apply(this, o)
|
|
} else if (s(n)) {
|
|
for (i = arguments.length, o = new Array(i - 1), l = 1; i > l; l++) o[l - 1] = arguments[l];
|
|
for (c = n.slice(), i = c.length, l = 0; i > l; l++) c[l].apply(this, o)
|
|
}
|
|
return !0
|
|
}, n.prototype.addListener = function(t, e) {
|
|
var i;
|
|
if (!r(e)) throw TypeError("listener must be a function");
|
|
if (this._events || (this._events = {}), this._events.newListener && this.emit("newListener", t, r(e.listener) ? e.listener : e), this._events[t] ? s(this._events[t]) ? this._events[t].push(e) : this._events[t] = [this._events[t], e] : this._events[t] = e, s(this._events[t]) && !this._events[t].warned) {
|
|
var i;
|
|
i = a(this._maxListeners) ? n.defaultMaxListeners : this._maxListeners, i && i > 0 && this._events[t].length > i && (this._events[t].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[t].length), "function" == typeof console.trace && console.trace())
|
|
}
|
|
return this
|
|
}, n.prototype.on = n.prototype.addListener, n.prototype.once = function(t, e) {
|
|
function n() {
|
|
this.removeListener(t, n), i || (i = !0, e.apply(this, arguments))
|
|
}
|
|
if (!r(e)) throw TypeError("listener must be a function");
|
|
var i = !1;
|
|
return n.listener = e, this.on(t, n), this
|
|
}, n.prototype.removeListener = function(t, e) {
|
|
var n, i, a, o;
|
|
if (!r(e)) throw TypeError("listener must be a function");
|
|
if (!this._events || !this._events[t]) return this;
|
|
if (n = this._events[t], a = n.length, i = -1, n === e || r(n.listener) && n.listener === e) delete this._events[t], this._events.removeListener && this.emit("removeListener", t, e);
|
|
else if (s(n)) {
|
|
for (o = a; o-- > 0;)
|
|
if (n[o] === e || n[o].listener && n[o].listener === e) {
|
|
i = o;
|
|
break
|
|
}
|
|
if (0 > i) return this;
|
|
1 === n.length ? (n.length = 0, delete this._events[t]) : n.splice(i, 1), this._events.removeListener && this.emit("removeListener", t, e)
|
|
}
|
|
return this
|
|
}, n.prototype.removeAllListeners = function(t) {
|
|
var e, n;
|
|
if (!this._events) return this;
|
|
if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[t] && delete this._events[t], this;
|
|
if (0 === arguments.length) {
|
|
for (e in this._events) "removeListener" !== e && this.removeAllListeners(e);
|
|
return this.removeAllListeners("removeListener"), this._events = {}, this
|
|
}
|
|
if (n = this._events[t], r(n)) this.removeListener(t, n);
|
|
else
|
|
for (; n.length;) this.removeListener(t, n[n.length - 1]);
|
|
return delete this._events[t], this
|
|
}, n.prototype.listeners = function(t) {
|
|
var e;
|
|
return e = this._events && this._events[t] ? r(this._events[t]) ? [this._events[t]] : this._events[t].slice() : []
|
|
}, n.listenerCount = function(t, e) {
|
|
var n;
|
|
return n = t._events && t._events[e] ? r(t._events[e]) ? 1 : t._events[e].length : 0
|
|
}
|
|
}, {}],
|
|
3: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3;
|
|
e.exports = {
|
|
COLORS: ["steelblue", "red", "#05b378", "orange", "#4040e8", "yellow"].map(function(t) {
|
|
return n.hsl(t)
|
|
}),
|
|
ITERATIONS_LIMIT: 1e3,
|
|
DEFAULT_WIDTH: 550,
|
|
DEFAULT_HEIGHT: 350,
|
|
TIP_X_EPS: 1
|
|
}
|
|
}, {}],
|
|
4: [function(t, e) {
|
|
"use strict";
|
|
var n = t("./utils"),
|
|
r = t("./constants"),
|
|
i = n.assert;
|
|
e.exports = {
|
|
range: function(t, e) {
|
|
var n = e.range || [-1 / 0, 1 / 0],
|
|
r = t.meta.xScale,
|
|
i = Math.max(r.domain()[0], n[0]),
|
|
s = Math.min(r.domain()[1], n[1]);
|
|
return [i, s]
|
|
},
|
|
eval: function(t, e) {
|
|
i("function" == typeof e.fn);
|
|
var s = [],
|
|
a = this.range(t, e),
|
|
o = a[0],
|
|
l = a[1],
|
|
c = e.samples || 100,
|
|
u = e.deltaX;
|
|
u || (u = (l - o) / c);
|
|
var h = (l - o) / u;
|
|
h = h || 1, i(h >= 0), h > r.ITERATIONS_LIMIT && (h = r.ITERATIONS_LIMIT, u = (l - o) / h);
|
|
for (var p = 0; h >= p; p += 1) {
|
|
var f = o + u * p,
|
|
d = e.fn(f);
|
|
n.isValidNumber(f) && n.isValidNumber(d) && s.push([f, d])
|
|
}
|
|
return s = this.split(s, e.graphOptions)
|
|
},
|
|
split: function(t, e) {
|
|
e = e || {};
|
|
var n = .001,
|
|
r = Array.prototype.slice.call(e.limits || []),
|
|
i = [],
|
|
s = 0,
|
|
a = 1,
|
|
o = [];
|
|
for (r.unshift(-1e8), r.push(1e8); s < t.length;) {
|
|
for (; s < t.length && t[s][0] < r[a - 1] + n;) ++s;
|
|
for (o = []; s < t.length && t[s][0] >= r[a - 1] + n && t[s][0] <= r[a] - n;) o.push(t[s++]);
|
|
++a, o.length && i.push(o)
|
|
}
|
|
return i
|
|
}
|
|
}
|
|
}, {
|
|
"./constants": 3,
|
|
"./utils": 11
|
|
}],
|
|
5: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3,
|
|
r = t("../types/line");
|
|
e.exports = function(t) {
|
|
function e(t) {
|
|
var e = t.derivative.x0,
|
|
n = t.fn(e),
|
|
r = t.derivative.fn(e);
|
|
a.fn = function(t) {
|
|
return r * (t - e) + n
|
|
}
|
|
}
|
|
|
|
function i(e) {
|
|
var n = this;
|
|
e.derivative.updateOnMouseOver && !e.derivative.$$mouseListener && (e.derivative.$$mouseListener = function(t) {
|
|
e.derivative.x0 = t, s(n)
|
|
}, t.owner.on("tip:update", e.derivative.$$mouseListener))
|
|
}
|
|
var s, a = {
|
|
skipTip: !0
|
|
};
|
|
return s = function(s) {
|
|
s.each(function(o) {
|
|
var l = n.select(this);
|
|
e.call(s, o), i.call(s, o);
|
|
var c = l.selectAll("g.derivative").data([a]);
|
|
c.enter().append("g").attr("class", "derivative"), c.call(r(t)), c.selectAll("path").attr("opacity", .5)
|
|
})
|
|
}
|
|
}
|
|
}, {
|
|
"../types/line": 9
|
|
}],
|
|
6: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3,
|
|
r = t("./derivative");
|
|
e.exports = function(t) {
|
|
function e(e) {
|
|
e.each(function(e) {
|
|
var i = n.select(this);
|
|
e.derivative && i.call(r(t))
|
|
})
|
|
}
|
|
return e
|
|
}
|
|
}, {
|
|
"./derivative": 5
|
|
}],
|
|
7: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3,
|
|
r = t("extend"),
|
|
i = t("./utils"),
|
|
s = t("./constants");
|
|
e.exports = function(t) {
|
|
function e(t, e) {
|
|
return t.append("path").datum(e).attr("stroke", "grey").attr("stroke-dasharray", "5,5").attr("opacity", .5).attr("d", l)
|
|
}
|
|
|
|
function a(r) {
|
|
var i = r.selectAll("g.tip").data(function(t) {
|
|
return [t]
|
|
});
|
|
i.enter().append("g").attr("class", "tip").attr("clip-path", "url(#function-plot-clip-" + t.owner.id + ")"), a.el = i.selectAll("g.inner-tip").data(function(t) {
|
|
return [t]
|
|
}), a.el.enter().append("g").attr("class", "inner-tip").style("display", "none").each(function() {
|
|
var r = n.select(this);
|
|
e(r, [
|
|
[0, -t.owner.meta.height - o],
|
|
[0, t.owner.meta.height + o]
|
|
]).attr("class", "tip-x-line").style("display", "none"), e(r, [
|
|
[-t.owner.meta.width - o, 0],
|
|
[t.owner.meta.width + o, 0]
|
|
]).attr("class", "tip-y-line").style("display", "none"), r.append("circle").attr("r", 3), r.append("text").attr("transform", "translate(5,-5)")
|
|
}), r.selectAll(".tip-x-line").style("display", t.xLine ? null : "none"), r.selectAll(".tip-y-line").style("display", t.yLine ? null : "none")
|
|
}
|
|
t = r({
|
|
xLine: !1,
|
|
yLine: !1,
|
|
renderer: function(t, e) {
|
|
return "(" + t.toFixed(3) + ", " + e.toFixed(3) + ")"
|
|
},
|
|
owner: null
|
|
}, t);
|
|
var o = 20,
|
|
l = n.svg.line().x(function(t) {
|
|
return t[0]
|
|
}).y(function(t) {
|
|
return t[1]
|
|
});
|
|
return a.move = function(e, n) {
|
|
var r, l, c, u = 1 / 0,
|
|
h = -1,
|
|
p = a.el,
|
|
f = 1e8,
|
|
d = t.owner.meta,
|
|
v = p.data()[0].data,
|
|
m = d.xScale,
|
|
y = d.yScale,
|
|
x = d.width,
|
|
g = d.height;
|
|
for (r = 0; r < v.length; r += 1)
|
|
if (!v[r].skipTip) {
|
|
var b = v[r].range || [-f, f];
|
|
if (e > b[0] - s.TIP_X_EPS && e < b[1] + s.TIP_X_EPS) {
|
|
var w = v[r].fn(e);
|
|
if (i.isValidNumber(w)) {
|
|
var _ = Math.abs(w - n);
|
|
u > _ && (u = _, h = r)
|
|
}
|
|
}
|
|
}
|
|
if (-1 !== h) {
|
|
l = e, v[h].range && (l = Math.max(l, v[h].range[0]), l = Math.min(l, v[h].range[1])), c = v[h].fn(l), a.show(), t.owner.emit("tip:update", l, c, h);
|
|
var L = i.restrict(l, m.invert(-o), m.invert(x + o)),
|
|
A = i.restrict(c, y.invert(g + o), y.invert(-o));
|
|
p.attr("transform", "translate(" + m(L) + "," + y(A) + ")"), p.select("circle").attr("fill", s.COLORS[h]), p.select("text").attr("fill", s.COLORS[h]).text(t.renderer(l, c))
|
|
} else a.hide()
|
|
}, a.show = function() {
|
|
this.el.style("display", null)
|
|
}, a.hide = function() {
|
|
this.el.style("display", "none")
|
|
}, Object.keys(t).forEach(function(e) {
|
|
i.getterSetter.call(a, t, e)
|
|
}), a
|
|
}
|
|
}, {
|
|
"./constants": 3,
|
|
"./utils": 11,
|
|
extend: 12
|
|
}],
|
|
8: [function(t, e) {
|
|
"use strict";
|
|
e.exports = {
|
|
line: t("./line"),
|
|
scatter: t("./scatter")
|
|
}
|
|
}, {
|
|
"./line": 9,
|
|
"./scatter": 10
|
|
}],
|
|
9: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3,
|
|
r = t("../constants"),
|
|
i = t("../data");
|
|
e.exports = function(t) {
|
|
function e(s) {
|
|
var a = t.index;
|
|
s.each(function(s) {
|
|
var c = e.el = n.select(this),
|
|
u = i.eval(t.owner, s),
|
|
h = c.selectAll("path").data(u);
|
|
h.enter().append("path").attr("class", "line line-" + a).attr("stroke", r.COLORS[a]), h.each(function() {
|
|
var e, i = n.select(this);
|
|
t.closed ? (i.attr("fill", r.COLORS[a]), i.attr("fill-opacity", .3), e = l) : (i.attr("fill", "none"), e = o), i.attr("d", e)
|
|
}), h.exit().remove()
|
|
})
|
|
}
|
|
var s = t.owner.meta.xScale,
|
|
a = t.owner.meta.yScale,
|
|
o = n.svg.line().interpolate(t.interpolate || "cardinal").x(function(t) {
|
|
return s(t[0])
|
|
}).y(function(t) {
|
|
return a(t[1])
|
|
}),
|
|
l = n.svg.area().x(function(t) {
|
|
return s(t[0])
|
|
}).y0(a(0)).y1(function(t) {
|
|
return a(t[1])
|
|
});
|
|
return e
|
|
}
|
|
}, {
|
|
"../constants": 3,
|
|
"../data": 4
|
|
}],
|
|
10: [function(t, e) {
|
|
"use strict";
|
|
var n = window.d3,
|
|
r = t("../constants"),
|
|
i = t("../data");
|
|
e.exports = function(t) {
|
|
function e(e) {
|
|
var o = t.index;
|
|
e.each(function(e) {
|
|
var l, c, u = n.hsl(r.COLORS[o].toString()),
|
|
h = i.eval(t.owner, e),
|
|
p = [];
|
|
for (l = 0; l < h.length; l += 1)
|
|
for (c = 0; c < h[l].length; c += 1) p.push(h[l][c]);
|
|
var f = n.select(this).selectAll("circle").data(p);
|
|
f.enter().append("circle").attr("class", "circle circle-" + o).attr("fill", n.hsl(u.toString()).brighter(1.5)).attr("stroke", u), f.attr("opacity", .7).attr("r", 1).attr("cx", function(t) {
|
|
return s(t[0])
|
|
}).attr("cy", function(t) {
|
|
return a(t[1])
|
|
}), f.exit().remove()
|
|
})
|
|
}
|
|
var s = t.owner.meta.xScale,
|
|
a = t.owner.meta.yScale;
|
|
return e
|
|
}
|
|
}, {
|
|
"../constants": 3,
|
|
"../data": 4
|
|
}],
|
|
11: [function(t, e) {
|
|
"use strict";
|
|
e.exports = {
|
|
isValidNumber: function(t) {
|
|
return "number" == typeof t && !isNaN(t) && isFinite(t)
|
|
},
|
|
getterSetter: function(t, e) {
|
|
var n = this;
|
|
this[e] = function(r) {
|
|
return arguments.length ? (t[e] = r, n) : t[e]
|
|
}
|
|
},
|
|
restrict: function(t, e, n) {
|
|
if (e > n) {
|
|
var r = e;
|
|
e = n, n = r
|
|
}
|
|
return t = Math.max(t, e), t = Math.min(t, n)
|
|
},
|
|
assert: function(t, e) {
|
|
if (e = e || "assertion failed", !t) throw new Error(e)
|
|
}
|
|
}
|
|
}, {}],
|
|
12: [function(t, e) {
|
|
var n, r = Object.prototype.hasOwnProperty,
|
|
i = Object.prototype.toString,
|
|
s = function(t) {
|
|
"use strict";
|
|
if (!t || "[object Object]" !== i.call(t)) return !1;
|
|
var e = r.call(t, "constructor"),
|
|
s = t.constructor && t.constructor.prototype && r.call(t.constructor.prototype, "isPrototypeOf");
|
|
if (t.constructor && !e && !s) return !1;
|
|
var a;
|
|
for (a in t);
|
|
return a === n || r.call(t, a)
|
|
};
|
|
e.exports = function a() {
|
|
"use strict";
|
|
var t, e, r, i, o, l, c = arguments[0],
|
|
u = 1,
|
|
h = arguments.length,
|
|
p = !1;
|
|
for ("boolean" == typeof c ? (p = c, c = arguments[1] || {}, u = 2) : ("object" != typeof c && "function" != typeof c || null == c) && (c = {}); h > u; ++u)
|
|
if (t = arguments[u], null != t)
|
|
for (e in t) r = c[e], i = t[e], c !== i && (p && i && (s(i) || (o = Array.isArray(i))) ? (o ? (o = !1, l = r && Array.isArray(r) ? r : []) : l = r && s(r) ? r : {}, c[e] = a(p, l, i)) : i !== n && (c[e] = i));
|
|
return c
|
|
}
|
|
}, {}]
|
|
}, {}, [1])(1)
|
|
});
|