forked from marmelab/EventDrops
-
Notifications
You must be signed in to change notification settings - Fork 1
/
bundle.map.json
1 lines (1 loc) · 18.6 KB
/
bundle.map.json
1
{"version":3,"file":"bundle.js","sources":["node_modules/browserify/node_modules/browser-pack/_prelude.js","lib/main.js","lib/eventDrops.js","lib/util/configurable.js","lib/eventLine.js","lib/delimiter.js","lib/filterData.js"],"names":["eventDrops","require","define","amd","d3","chart","window","module","exports","configurable","eventLine","delimiter","defaultConfig","start","Date","end","width","margin","top","left","bottom","right","locale","axisFormat","tickFormat","d","getMilliseconds","getSeconds","getMinutes","getHours","getDay","getDate","getMonth","eventHover","hasDelimiter","hasTopAxis","hasBottomAxis","data","length","eventColor","config","eventDropGraph","selection","each","updateZoom","event","sourceEvent","toString","zoom","translate","scale","redraw","redrawDelimiter","svg","select","remove","append","classed","attr","graphWidth","call","xScale","dateFormat","timeFormat","time","format","drawXAxis","where","tickFormatData","forEach","item","tick","slice","push","multi","xAxis","axis","orient","y","parseInt","graphHeight","graph","size","height","graphBody","lines","selectAll","enter","yScale","name","style","exit","behavior","center","on","this","yDomain","yRange","index","domain","range","yAxisEl","yTick","curx","cury","zoomRect","clientX","clientY","el","document","elementFromPoint","tagName","x","ordinal","key","targetFunction","listeners","value","arguments","hasOwnProperty","filterData","text","count","dates","circle","limits","filteredData","boundary","min","max","datum"],"mappings":"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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})","\"use strict\";\n/* global require, define, module */\n\nvar eventDrops = require('./eventDrops');\n\nif (typeof define === \"function\" && define.amd) {\n define('d3.chart.eventDrops', [\"d3\"], function (d3) {\n d3.chart = d3.chart || {};\n d3.chart.eventDrops = eventDrops(d3);\n });\n} else if (window) {\n window.d3.chart = window.d3.chart || {};\n window.d3.chart.eventDrops = eventDrops(window.d3);\n} else {\n module.exports = eventDrops;\n}\n","\"use strict\";\n/* global require, module */\n\nvar configurable = require('./util/configurable');\nvar eventLine = require('./eventLine');\nvar delimiter = require('./delimiter');\n\nmodule.exports = function (d3) {\n\n var defaultConfig = {\n start: new Date(0),\n end: new Date(),\n width: 1000,\n margin: {\n top: 60,\n left: 200,\n bottom: 40,\n right: 50\n },\n locale: null,\n axisFormat: null,\n tickFormat: [\n [\".%L\", function(d) { return d.getMilliseconds(); }],\n [\":%S\", function(d) { return d.getSeconds(); }],\n [\"%I:%M\", function(d) { return d.getMinutes(); }],\n [\"%I %p\", function(d) { return d.getHours(); }],\n [\"%a %d\", function(d) { return d.getDay() && d.getDate() != 1; }],\n [\"%b %d\", function(d) { return d.getDate() != 1; }],\n [\"%B\", function(d) { return d.getMonth(); }],\n [\"%Y\", function() { return true; }]\n ],\n eventHover: null,\n hasDelimiter: true,\n hasTopAxis: true,\n hasBottomAxis: function (data) {\n return data.length >= 10;\n },\n eventColor: 'black'\n };\n\n return function eventDrops(config) {\n var xScale = d3.time.scale();\n var yScale = d3.scale.ordinal();\n config = config || {};\n for (var key in defaultConfig) {\n config[key] = config[key] || defaultConfig[key];\n }\n\n function eventDropGraph(selection) {\n selection.each(function (data) {\n var zoom = d3.behavior.zoom().center(null).on(\"zoom\", updateZoom);\n\n if (config.hasDelimiter) {\n zoom.on(\"zoomend\", redrawDelimiter);\n }\n var graphWidth = config.width - config.margin.right - config.margin.left;\n var graphHeight = data.length * 40;\n var height = graphHeight + config.margin.top + config.margin.bottom;\n\n d3.select(this).select('svg').remove();\n\n var svg = d3.select(this)\n .append('svg')\n .attr('width', config.width)\n .attr('height', height)\n ;\n\n var graph = svg.append('g')\n .attr('transform', 'translate(0, 25)');\n\n var yDomain = [];\n var yRange = [];\n\n data.forEach(function (event, index) {\n yDomain.push(event.name);\n yRange.push(index * 40);\n });\n\n yScale.domain(yDomain).range(yRange);\n\n var yAxisEl = graph.append('g')\n .classed('y-axis', true)\n .attr('transform', 'translate(0, 60)');\n\n var yTick = yAxisEl.append('g').selectAll('g').data(yDomain);\n\n yTick.enter()\n .append('g')\n .attr('transform', function(d) {\n return 'translate(0, ' + yScale(d) + ')';\n })\n .append('line')\n .classed('y-tick', true)\n .attr('x1', config.margin.left)\n .attr('x2', config.margin.left + graphWidth);\n\n yTick.exit().remove();\n\n var curx, cury;\n var zoomRect = svg\n .append('rect')\n .call(zoom)\n .classed('zoom', true)\n .attr('width', graphWidth)\n .attr('height', height )\n .attr('transform', 'translate(' + config.margin.left + ', 35)')\n ;\n\n if (typeof config.eventHover === 'function') {\n zoomRect.on('mousemove', function(d, e) {\n var event = d3.event;\n if (curx == event.clientX && cury == event.clientY) return;\n curx = event.clientX;\n cury = event.clientY;\n zoomRect.attr('display', 'none');\n var el = document.elementFromPoint(d3.event.clientX, d3.event.clientY);\n zoomRect.attr('display', 'block');\n if (el.tagName !== 'circle') return;\n config.eventHover(el);\n });\n }\n\n xScale.range([0, graphWidth]).domain([config.start, config.end]);\n\n zoom.x(xScale);\n\n function updateZoom() {\n if (d3.event.sourceEvent.toString() === '[object MouseEvent]') {\n zoom.translate([d3.event.translate[0], 0]);\n }\n\n if (d3.event.sourceEvent.toString() === '[object WheelEvent]') {\n zoom.scale(d3.event.scale);\n }\n\n redraw();\n }\n\n function redrawDelimiter() {\n svg.select('.delimiter').remove();\n var delimiterEl = svg\n .append('g')\n .classed('delimiter', true)\n .attr('width', graphWidth)\n .attr('height', 10)\n .attr('transform', 'translate(' + config.margin.left + ', ' + (config.margin.top - 45) + ')')\n .call(delimiter({\n xScale: xScale,\n dateFormat: config.locale ? config.locale.timeFormat(\"%d %B %Y\") : d3.time.format(\"%d %B %Y\")\n }))\n ;\n }\n\n function drawXAxis(where) {\n\n // copy config.tickFormat because d3 format.multi edit its given tickFormat data\n var tickFormatData = [];\n\n config.tickFormat.forEach(function (item) {\n var tick = item.slice(0);\n tickFormatData.push(tick);\n });\n\n var tickFormat = config.locale ? config.locale.timeFormat.multi(tickFormatData) : d3.time.format.multi(tickFormatData);\n var xAxis = d3.svg.axis()\n .scale(xScale)\n .orient(where)\n .tickFormat(tickFormat);\n ;\n\n if (typeof config.axisFormat === 'function') {\n config.axisFormat(xAxis);\n }\n\n var y = (where == 'bottom' ? parseInt(graphHeight) : 0) + config.margin.top - 40;\n\n graph.select('.x-axis.' + where).remove();\n var xAxisEl = graph\n .append('g')\n .classed('x-axis', true)\n .classed(where, true)\n .attr('transform', 'translate(' + config.margin.left + ', ' + y + ')')\n .call(xAxis)\n ;\n }\n\n function redraw() {\n\n var hasTopAxis = typeof config.hasTopAxis === 'function' ? config.hasTopAxis(data) : config.hasTopAxis;\n if (hasTopAxis) {\n drawXAxis('top');\n }\n\n var hasBottomAxis = typeof config.hasBottomAxis === 'function' ? config.hasBottomAxis(data) : config.hasBottomAxis;\n if (hasBottomAxis) {\n drawXAxis('bottom');\n }\n\n zoom.size([config.width, height]);\n\n graph.select('.graph-body').remove();\n var graphBody = graph\n .append('g')\n .classed('graph-body', true)\n .attr('transform', 'translate(' + config.margin.left + ', ' + (config.margin.top - 15) + ')');\n\n var lines = graphBody.selectAll('g').data(data);\n\n lines.enter()\n .append('g')\n .classed('line', true)\n .attr('transform', function(d) {\n return 'translate(0,' + yScale(d.name) + ')';\n })\n .style('fill', config.eventColor)\n .call(eventLine({ xScale: xScale }))\n ;\n\n lines.exit().remove();\n }\n\n redraw();\n if (config.hasDelimiter) {\n redrawDelimiter();\n }\n });\n }\n\n configurable(eventDropGraph, config);\n\n return eventDropGraph;\n };\n};\n","module.exports = function configurable(targetFunction, config, listeners) {\n listeners = listeners || {};\n for (var item in config) {\n (function(item) {\n targetFunction[item] = function(value) {\n if (!arguments.length) return config[item];\n config[item] = value;\n if (listeners.hasOwnProperty(item)) {\n listeners[item](value);\n }\n\n return targetFunction;\n };\n })(item); // for doesn't create a closure, forcing it\n }\n};\n","\"use strict\";\n/* global require, module, d3 */\n\nvar configurable = require('./util/configurable');\nvar filterData = require('./filterData');\n\nvar defaultConfig = {\n xScale: null\n};\n\nmodule.exports = function (config) {\n\n config = config || {};\n for (var key in defaultConfig) {\n config[key] = config[key] || defaultConfig[key];\n }\n\n var eventLine = function eventLine(selection) {\n selection.each(function (data) {\n d3.select(this).selectAll('text').remove();\n\n d3.select(this).append('text')\n .text(function(d) {\n var count = filterData(d.dates, config.xScale).length;\n return d.name + (count > 0 ? ' (' + count + ')' : '');\n })\n .attr('text-anchor', 'end')\n .attr('transform', 'translate(-20)')\n .style('fill', 'black')\n ;\n\n d3.select(this).selectAll('circle').remove();\n\n var circle = d3.select(this).selectAll('circle')\n .data(function(d) {\n // filter value outside of range\n return filterData(d.dates, config.xScale);\n });\n\n circle.enter()\n .append('circle')\n .attr('cx', function(d) {\n return config.xScale(d);\n })\n .attr('cy', -5)\n .attr('r', 10)\n ;\n\n circle.exit().remove();\n\n });\n };\n\n configurable(eventLine, config);\n\n return eventLine;\n};\n","\"use strict\";\n/* global require, module, d3 */\n\nvar configurable = require('./util/configurable');\n\nvar defaultConfig = {\n xScale: null,\n dateFormat: null\n};\n\nmodule.exports = function (config) {\n\n config = config || {};\n for (var key in defaultConfig) {\n config[key] = config[key] || defaultConfig[key];\n }\n\n function delimiter(selection) {\n selection.each(function (data) {\n d3.select(this).selectAll('text').remove();\n\n var limits = config.xScale.domain();\n\n d3.select(this).append('text')\n .text(function () {\n\n return config.dateFormat(limits[0]);\n })\n .classed('start', true)\n ;\n\n d3.select(this).append('text')\n .text(function () {\n\n return config.dateFormat(limits[1]);\n })\n .attr('text-anchor', 'end')\n .attr('transform', 'translate(' + config.xScale.range()[1] + ')')\n .classed('end', true)\n ;\n });\n }\n\n configurable(delimiter, config);\n\n return delimiter;\n};\n","\"use strict\";\n/* global module */\n\nmodule.exports = function filterDate(data, scale) {\n data = data || [];\n var filteredData = [];\n var boundary = scale.range();\n var min = boundary[0];\n var max = boundary[1];\n data.forEach(function (datum) {\n var value = scale(datum);\n if (value < min || value > max) {\n return;\n }\n filteredData.push(datum);\n });\n\n return filteredData;\n};\n"]}