diff --git a/Changelog.md b/Changelog.md index de9322e8..09231530 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,3 +1,16 @@ +## 0.4.1 +* `select_nodes` behavior now supports multiple selection with rectangular brush and modifier + keys. check out + [the example](http://dc-js.github.io/dc.graph.js/examples/rectangular-selection.html?layout=dagre). +* build graphs in the browser with simple `draw_graphs` + behavior. [example](http://dc-js.github.io/dc.graph.js/examples/network-building.html). +* `random_graph` utility abstracted from the example - it's not particularly sophisticated but it's + helpful for writing examples. +* arrow and textPath id's could get cross-linked when there were multiple dc.graphs in a page. (SVG + IDs need to be unique across the whole page.) +* option to enable zoom only when alt-key pressed. (hopefully in the near future zoom will be a + mode/behavior and we'll activate modes based on modifier keys.) + ## 0.4.0 * new `convert_tree` data import function is slightly more general than the old `convert_nest` * layout engines are proper objects. all layout parameters are moved to the layout objects and diff --git a/Gruntfile.js b/Gruntfile.js index d4b1c6fd..3669d566 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -163,7 +163,7 @@ module.exports = function (grunt) { 'querystring.js', 'chart.registry.js', 'timeline.js', - 'node_modules/crossfilter/crossfilter.js', + 'node_modules/crossfilter2/crossfilter.js', 'node_modules/d3/d3.js', 'node_modules/dc/dc.js', 'node_modules/jquery/dist/jquery.js', @@ -263,7 +263,8 @@ module.exports = function (grunt) { grunt.registerTask('build', ['concat', 'uglify']); grunt.registerTask('docs', ['build', 'copy', 'jsdoc', 'jsdoc2md']); grunt.registerTask('web', ['docs', 'gh-pages']); - grunt.registerTask('server', ['docs', 'connect:server', 'watch:scripts']); + grunt.registerTask('server', ['build', 'copy', 'connect:server', 'watch:scripts']); + grunt.registerTask('server:docs', ['docs', 'connect:server', 'watch:docs']); grunt.registerTask('lint', ['build', 'jshint', 'jscs']); grunt.registerTask('default', ['build', 'shell:hooks']); grunt.registerTask('doc-debug', ['build', 'jsdoc', 'jsdoc2md', 'connect:server', 'watch:docs']); @@ -277,6 +278,7 @@ module.exports.jsFiles = [ 'src/generate_objects.js', 'src/shape.js', 'src/diagram.js', + 'src/engine.js', 'src/webworker_layout.js', 'src/graphviz_attrs.js', 'src/cola_layout.js', @@ -288,11 +290,15 @@ module.exports.jsFiles = [ 'src/tree_constraints.js', 'src/behavior.js', 'src/tip.js', + 'src/edit_text.js', 'src/select_nodes.js', + 'src/filter_selection.js', + 'src/label_nodes.js', 'src/highlight_neighbors.js', 'src/highlight_paths_group.js', 'src/highlight_paths.js', 'src/expand_collapse.js', + 'src/draw_graphs.js', 'src/load_graph.js', 'src/munge_graph.js', 'src/flat_group.js', diff --git a/dc.graph.cola.worker.js b/dc.graph.cola.worker.js index d9eb3ff2..09541c93 100644 --- a/dc.graph.cola.worker.js +++ b/dc.graph.cola.worker.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -25,7 +25,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -35,7 +35,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } @@ -233,11 +233,11 @@ dc_graph.cola_layout = function(id) { v1.dcg_nodeKey = v.dcg_nodeKey; v1.width = v.width; v1.height = v.height; - v1.fixed = !!v.dgc_nodeFixed; + v1.fixed = !!v.dcg_nodeFixed; - if(typeof v.dgc_nodeFixed === 'object') { - v1.x = v.dgc_nodeFixed.x; - v1.y = v.dgc_nodeFixed.y; + if(v1.fixed && typeof v.dcg_nodeFixed === 'object') { + v1.x = v.dcg_nodeFixed.x; + v1.y = v.dcg_nodeFixed.y; } else { // should we support e.g. null to unset x,y? diff --git a/dc.graph.cola.worker.js.map b/dc.graph.cola.worker.js.map index c5774710..dc747fa8 100644 --- a/dc.graph.cola.worker.js.map +++ b/dc.graph.cola.worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/cola_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.cola.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dgc_nodeFixed;\n\n if(typeof v.dgc_nodeFixed === 'object') {\n v1.x = v.dgc_nodeFixed.x;\n v1.y = v.dgc_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file +{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/cola_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.cola.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dcg_nodeFixed;\n\n if(v1.fixed && typeof v.dcg_nodeFixed === 'object') {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file diff --git a/dc.graph.css b/dc.graph.css index 378c12c9..c8264d35 100644 --- a/dc.graph.css +++ b/dc.graph.css @@ -9,6 +9,7 @@ font: bold 14px verdana, san-serif; text-anchor: middle; pointer-events: none; + user-select: none; } .dc-graph text.edge-label { @@ -21,6 +22,11 @@ pointer-events: none; } +.dc-graph g.brush rect.extent { + fill: #4682b4; + fill-opacity: 0.125; +} + .dc-graph > svg { display: block; } diff --git a/dc.graph.dagre.worker.js b/dc.graph.dagre.worker.js index 7bf9a6a1..201dcbf5 100644 --- a/dc.graph.dagre.worker.js +++ b/dc.graph.dagre.worker.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -25,7 +25,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -35,7 +35,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } diff --git a/dc.graph.dagre.worker.js.map b/dc.graph.dagre.worker.js.map index da232670..681a31a2 100644 --- a/dc.graph.dagre.worker.js.map +++ b/dc.graph.dagre.worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/dagre_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.dagre.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file +{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/dagre_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.dagre.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file diff --git a/dc.graph.js b/dc.graph.js index 42713e50..92985882 100644 --- a/dc.graph.js +++ b/dc.graph.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -28,7 +28,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -38,7 +38,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } @@ -308,7 +308,7 @@ dc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree if(ni && callbacks.sib) callbacks.sib(true, roots[ni-1], n); callbacks.push && callbacks.push(); - place_tree(n, callbacks.row ? callbacks.row(n) : 0); + place_tree(n, callbacks.row && callbacks.row(n) || 0); }); callbacks.finish(rows); }; @@ -759,17 +759,19 @@ function bezier_point(points, t_) { * @return {dc_graph.diagram} **/ dc_graph.diagram = function (parent, chartGroup) { - // different enough from regular dc charts that we don't use bases + // different enough from regular dc charts that we don't use dc.baseMixin + // but attempt to implement most of that interface, copying some of the most basic stuff var _chart = dc.marginMixin({}); + _chart.__dcFlag__ = dc.utils.uniqueId(); var _svg = null, _defs = null, _g = null, _nodeLayer = null, _edgeLayer = null; - var _dispatch = d3.dispatch('end', 'start', 'drawn'); + var _dispatch = d3.dispatch('end', 'start', 'drawn', 'zoomed'); var _nodes = {}, _edges = {}; // hold state between runs var _stats = {}; var _nodes_snapshot, _edges_snapshot; var _children = {}, _arrows = {}; var _running = false; // for detecting concurrency issues var _translate = [0,0], _scale = 1; - var _zoom, _xScale, _yScale; + var _zoom; var _anchor, _chartGroup; function deprecate_layout_algo_parameter(name) { @@ -841,6 +843,17 @@ dc_graph.diagram = function (parent, chartGroup) { **/ _chart.mouseZoomable = property(true); + /** + * Whether zooming should only be enabled when the alt key is pressed. + * @method altKeyZoom + * @memberof dc_graph.diagram + * @instance + * @param {Boolean} [altKeyZoom=true] + * @return {Boolean} + * @return {dc_graph.diagram} + **/ + _chart.altKeyZoom = property(false); + /** * Set or get the fitting strategy for the canvas, which affects how the * [viewBox](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox) and @@ -1761,16 +1774,19 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.tickSize = deprecate_layout_algo_parameter('tickSize'); + _chart.uniqueId = function() { + return _chart.anchorName().replace(/[ .#=\[\]"]/g, '-'); + }; + _chart.edgeId = function(d) { return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\w-_]/g, '-'); }; _chart.arrowId = function(d, kind) { - return 'arrow-' + kind + '-' + _chart.edgeId(d); + return 'arrow-' + kind + '-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; - _chart.textpathId = function(d) { - return 'textpath-' + _chart.edgeId(d); + return 'textpath-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; // this kind of begs a (meta)graph ADT @@ -2516,6 +2532,7 @@ dc_graph.diagram = function (parent, chartGroup) { }); } _zoom.translate(translate).scale(scale).event(_svg); + _dispatch.zoomed(translate, scale); } } @@ -2655,9 +2672,12 @@ dc_graph.diagram = function (parent, chartGroup) { if(!_chart.initLayoutOnRedraw()) initLayout(); _chart.resetSvg(); - _g = _svg.append('g'); - _edgeLayer = _g.append('g'); - _nodeLayer = _g.append('g'); + _g = _svg.append('g') + .attr('class', 'draw'); + _edgeLayer = _g.append('g') + .attr('class', 'edge-layer'); + _nodeLayer = _g.append('g') + .attr('class', 'node-layer'); if(_chart.legend()) _chart.legend().render(); @@ -2746,7 +2766,35 @@ dc_graph.diagram = function (parent, chartGroup) { /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} - * method. Returns the top svg element for this specific chart. You can also pass in a new + * method. Gets or sets the x scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.x = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Gets or sets the y scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.y = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Returns the top `svg` element for this specific chart. You can also pass in a new * svg element, but setting the svg element on a diagram may have unexpected consequences. * @method svg * @memberof dc_graph.diagram @@ -2764,6 +2812,27 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the top `g` element for this specific chart. This method is usually used to + * retrieve the g element in order to overlay custom svg drawing + * programatically. **Caution**: The root g element is usually generated internally, and + * resetting it might produce unpredictable results. + * @method g + * @memberof dc_graph.diagram + * @instance + * @param {d3.selection} [selection] + * @return {d3.selection} + * @return {dc_graph.diagram} + + **/ + _chart.g = function (_) { + if (!arguments.length) { + return _g; + } + _g = _; + return _chart; + }; + /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} @@ -2894,22 +2963,22 @@ dc_graph.diagram = function (parent, chartGroup) { // with thanks to comments in https://github.com/d3/d3/issues/1084 function align_left(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[0]; + return translate[0] - _chart.x()(x) + _chart.x().range()[0]; } function align_top(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[0]; + return translate[1] - _chart.y()(y) + _chart.y().range()[0]; } function align_right(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[1]; + return translate[0] - _chart.x()(x) + _chart.x().range()[1]; } function align_bottom(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[1];; + return translate[1] - _chart.y()(y) + _chart.y().range()[1];; } function doZoom() { var translate = d3.event.translate; if(_chart.restrictPan()) { - var xDomain = _xScale.domain(), yDomain = _yScale.domain(); + var xDomain = _chart.x().domain(), yDomain = _chart.y().domain(); var bounds = margined_bounds(); var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1], lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]); @@ -2970,25 +3039,45 @@ dc_graph.diagram = function (parent, chartGroup) { } } + function enableZoom() { + _svg.call(_zoom); + _svg.on('dblclick.zoom', null); + } + function disableZoom() { + _svg.on('.zoom', null); + } + function generateSvg() { _svg = _chart.root().append('svg'); resizeSvg(); _defs = _svg.append('svg:defs'); + // start out with 1:1 zoom + if(!_chart.x()) + _chart.x(d3.scale.linear() + .domain([0, _chart.width()]) + .range([0, _chart.width()])); + if(!_chart.y()) + _chart.y(d3.scale.linear() + .domain([0, _chart.height()]) + .range([0, _chart.height()])); + _zoom = d3.behavior.zoom() + .on('zoom', doZoom) + .x(_chart.x()).y(_chart.y()); if(_chart.mouseZoomable()) { - // start out with 1:1 zoom - _xScale = d3.scale.linear() - .domain([0, _chart.width()]) - .range([0, _chart.width()]); - _yScale = d3.scale.linear() - .domain([0, _chart.height()]) - .range([0, _chart.height()]); - _zoom = d3.behavior.zoom() - .on('zoom', doZoom) - .x(_xScale).y(_yScale); - _svg.call(_zoom); - _svg.on('dblclick.zoom', null); + if(_chart.altKeyZoom()) { + d3.select(document) + .on('keydown', function() { + if(d3.event.key === 'Alt') + enableZoom(); + }) + .on('keyup', function() { + if(d3.event.key === 'Alt') + disableZoom(); + }); + } + else enableZoom(); } return _svg; @@ -2996,8 +3085,8 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.invertCoord = function(clientCoord) { return [ - _xScale.invert(clientCoord[0]), - _yScale.invert(clientCoord[1]) + _chart.x().invert(clientCoord[0]), + _chart.y().invert(clientCoord[1]) ]; }; @@ -3048,6 +3137,17 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the internal numeric ID of the chart. + * @method chartID + * @memberof dc.baseMixin + * @instance + * @returns {String} + */ + _chart.chartID = function () { + return _chart.__dcFlag__; + }; + /** * Returns the DOM id for the chart's anchored location. * @method anchorName @@ -3069,6 +3169,34 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart.anchor(parent, chartGroup); }; +dc_graph.spawn_engine = function(layout, args, worker) { + var allow_webworker = true; + var engine, params; + switch(layout) { + case 'dagre': + engine = dc_graph.dagre_layout(); + params = ['rankdir']; + break; + case 'tree': + engine = dc_graph.tree_layout(); + params = []; + allow_webworker = false; + break; + case 'cola': + default: + engine = dc_graph.cola_layout(); + params = ['lengthStrategy']; + break; + } + params.forEach(function(p) { + if(args[p]) + engine[p](args[p]); + }); + if(allow_webworker && worker !== 'false') + engine = dc_graph.webworker_layout(engine); + return engine; +}; + var _workers = {}; function create_worker(layoutAlgorithm) { if(!_workers[layoutAlgorithm]) { @@ -3245,11 +3373,11 @@ dc_graph.cola_layout = function(id) { v1.dcg_nodeKey = v.dcg_nodeKey; v1.width = v.width; v1.height = v.height; - v1.fixed = !!v.dgc_nodeFixed; + v1.fixed = !!v.dcg_nodeFixed; - if(typeof v.dgc_nodeFixed === 'object') { - v1.x = v.dgc_nodeFixed.x; - v1.y = v.dgc_nodeFixed.y; + if(v1.fixed && typeof v.dcg_nodeFixed === 'object') { + v1.x = v.dcg_nodeFixed.x; + v1.y = v.dcg_nodeFixed.y; } else { // should we support e.g. null to unset x,y? @@ -4323,33 +4451,175 @@ dc_graph.tip.table = function() { return gen; }; -// this currently only supports single selection with a click -// but it can be expanded with modifier-key clicks and rectangular selection etc. +// adapted from +// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652 + +function edittext(svg, position, options) { + var myforeign = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); + var textdiv = document.createElement("div"); + var text = options.text || "type on me"; + var textnode = document.createTextNode(text); + textdiv.appendChild(textnode); + textdiv.setAttribute("contentEditable", "true"); + textdiv.setAttribute("width", "auto"); + textdiv.setAttribute("style", "display: inline-block; background-color: white; padding: 2px"); //to make div fit text + myforeign.setAttribute("width", "100%"); + myforeign.setAttribute("height", "100%"); + myforeign.setAttribute("style", "text-align: left"); //to make div fit text + myforeign.setAttributeNS(null, "transform", "translate(" + position.x + " " + position.y + ")"); + svg.appendChild(myforeign); + myforeign.appendChild(textdiv); + + function accept() { + options.accept && options.accept(textdiv.innerText); + textdiv.onblur = null; + myforeign.remove(); + } + function cancel() { + options.cancel && options.cancel(); + textdiv.onblur = null; + myforeign.remove(); + } + + textdiv.onkeydown = function(event) { + if(event.keyCode===13) { + event.preventDefault(); + } + }; + textdiv.onkeyup = function(event) { + if(event.keyCode===13) { + accept(); + } else if(event.keyCode===27) { + cancel(); + } + }; + textdiv.onblur = cancel; + textdiv.focus(); + + var range = document.createRange(); + if(options.selectText) { + range.selectNodeContents(textdiv); + } else { + range.setStart(textdiv, text.length); + range.setEnd(textdiv, text.length); + } + var sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); +} + +dc_graph.edit_text = function(svg, selection, options) { + var position = options.position || {x: 0, y: 0}; + edittext(svg.node(), position, options); +}; + + dc_graph.select_nodes = function(props) { var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); - var _selected = []; + var _selected = [], _oldSelected; + var _brush, _gBrush; + + // http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin + var is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1; + + function isUnion(event) { + return event.shiftKey; + } + function isToggle(event) { + return is_a_mac ? event.metaKey : event.ctrlKey; + } + function add_array(a, v) { + return a.indexOf(v) >= 0 ? a : a.concat([v]); + } + function toggle_array(a, v) { + return a.indexOf(v) >= 0 ? a.filter(function(x) { return x != v; }) : a.concat([v]); + } + function selection_changed(chart) { + return function(selection) { + _selected = selection; + chart.refresh(); + }; + } + function background_click_event(chart, v) { + chart.svg().on('click.select-nodes', v ? function(d) { + select_nodes_group.node_set_changed([]); + } : null); + } + function brushstart() { + if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent)) + _oldSelected = _selected.slice(); + else { + _oldSelected = []; + select_nodes_group.node_set_changed([]); + } + } + function brushmove() { + var ext = _brush.extent(); + var rectSelect = _behavior.parent().selectAll('g.node').data().filter(function(n) { + return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] && + ext[0][1] < n.cola.y && n.cola.y < ext[1][1]; + }).map(function(n) { + return n.orig.key; + }); + var newSelected; + if(isUnion(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(add_array, _oldSelected); + else if(isToggle(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(toggle_array, _oldSelected); + else + newSelected = rectSelect; + select_nodes_group.node_set_changed(newSelected); + } + function brushend() { + _gBrush.call(_brush.clear()); + } + function install_brush(chart) { + if(_brush) + return; + _brush = d3.svg.brush() + .x(chart.x()).y(chart.y()) + .on('brushstart', brushstart) + .on('brush', brushmove) + .on('brushend', brushend); + + _gBrush = chart.svg().insert('g', ':first-child') + .attr('class', 'brush') + .call(_brush); + } function add_behavior(chart, node, edge) { - chart.cascade(50, true, conditional_properties(function(n) { + var condition = _behavior.noneIsAll() ? function(n) { + return !_selected.length || _selected.indexOf(n.orig.key) >= 0; + } : function(n) { return _selected.indexOf(n.orig.key) >= 0; - }, null, props)); + }; + chart.cascade(50, true, conditional_properties(condition, null, props)); + node.on('click.select-nodes', function(d) { - _selected = [chart.nodeKey.eval(d)]; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); + var key = chart.nodeKey.eval(d), newSelected; + if(isUnion(d3.event)) + newSelected = add_array(_selected, key); + else if(isToggle(d3.event)) + newSelected = toggle_array(_selected, key); + else { + if(_selected.length === 1 && _selected[0] === key && _behavior.secondClickEvent()) + _behavior.secondClickEvent()(d3.select(this)); + newSelected = [key]; + } + select_nodes_group.node_set_changed(newSelected); d3.event.stopPropagation(); }); - chart.svg().on('click.select-nodes', function(d) { - _selected = []; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); - }); + + if(_behavior.multipleSelect()) + install_brush(chart); + else + background_click_event(chart, _behavior.clickBackgroundClears()); + // drop any selected which no longer exist in the diagram var present = node.data().map(function(d) { return d.orig.key; }); - var nselect = _selected.length; - _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); - if(_selected.length !== nselect) - select_nodes_group.node_set_changed(_selected); + var now_selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); + if(_selected.length !== now_selected.length) + select_nodes_group.node_set_changed(now_selected); } function remove_behavior(chart, node, edge) { @@ -4358,12 +4628,22 @@ dc_graph.select_nodes = function(props) { chart.cascade(50, false, props); } - return dc_graph.behavior('select-nodes', { + var _behavior = dc_graph.behavior('select-nodes', { add_behavior: add_behavior, - remove_behavior: function(chart, node, edge) { - remove_behavior(chart, node, edge); + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.select-nodes', p ? selection_changed(p) : null); } }); + + _behavior.multipleSelect = property(true); + _behavior.clickBackgroundClears = property(true, false).react(function(v) { + if(!_behavior.multipleSelect() && _behavior.parent()) + background_click_event(_behavior.parent(), v); + }); + _behavior.secondClickEvent = property(null); + _behavior.noneIsAll = property(false); + return _behavior; }; dc_graph.select_nodes_group = function(brushgroup) { @@ -4374,6 +4654,116 @@ dc_graph.select_nodes_group = function(brushgroup) { return window.chart_registry.create_group('select-nodes', brushgroup); }; +dc_graph.filter_selection = function() { + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); + + function selection_changed(chart) { + return function(selection) { + if(selection.length) { + var set = d3.set(selection); + chart.nodeDimension().filterFunction(function(k) { + return set.has(k); + }); + } else chart.nodeDimension().filter(null); + chart.redrawGroup(); + }; + } + + var _behavior = { + parent: property(null).react(function(p) { + select_nodes_group.on('node_set_changed.filter-selection', p ? selection_changed(p) : null); + }) + }; + return _behavior; +}; + +dc_graph.label_nodes = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + var _idTag = options.idTag || 'id', + _labelTag = options.labelTag || 'label'; + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _selected = []; + var _input_anchor; + + function selection_changed_listener(chart) { + return function(selection) { + _selected = selection; + if(_selected.length) + _input_anchor.node().focus(); + }; + } + + function edit_node_label_listener(chart) { + return function(node, options) { + dc_graph.edit_text( + chart.svg(), + node, + { + text: options.text || chart.nodeLabel.eval(node.datum()), + position: {x: node.datum().cola.x, y: node.datum().cola.y}, + selectText: options.selectText, + accept: function(text) { + var d = node.datum(); + d.orig.value[_labelTag] = text; + chart.redraw(); + } + }); + }; + } + + function add_behavior(chart, node, edge) { + _input_anchor = chart.svg().selectAll('a#label-nodes-input').data([1]); + _input_anchor.enter() + .append('a').attr({ + id: 'label-nodes-input', + href: '#' + }); + _input_anchor.on('keyup.label-nodes', function() { + if(_selected.length) { + // printable characters should start edit + if(d3.event.key.length !== 1) + return; + var n2 = node.filter(function(d) { + return chart.nodeKey.eval(d) === _selected[0]; + }); + if(n2.empty()) { + console.error("couldn't find node '" + _selected[0] + "'!"); + return; + } + if(n2.size()>1) { + console.error("found too many nodes for '" + _selected[0] + "' (" + n2.size() + ")!"); + return; + } + label_nodes_group.edit_node_label(n2, {text: d3.event.key, selectText: false}); + } + }); + } + + function remove_behavior(chart, node, edge) { + chart.root().select('a#label-nodes-input').remove(); + } + + var _behavior = dc_graph.behavior('label-nodes', { + add_behavior: add_behavior, + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.label-nodes', p ? selection_changed_listener(p) : null); + label_nodes_group.on('edit_node_label.label-nodes', p ? edit_node_label_listener(p) : null); + } + }); + return _behavior; +}; + +dc_graph.label_nodes_group = function(brushgroup) { + window.chart_registry.create_type('label-nodes', function() { + return d3.dispatch('edit_node_label'); + }); + + return window.chart_registry.create_group('label-nodes', brushgroup); +}; + dc_graph.highlight_neighbors = function(props) { function clear_all_highlights(edge) { edge.each(function(e) { @@ -4801,6 +5191,160 @@ dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) { }); }; +dc_graph.draw_graphs = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + if(!options.edgeCrossfilter) + throw new Error('need edgeCrossfilter'); + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _idTag = options.idTag || 'id', + _sourceTag = options.sourceTag || 'source', + _targetTag = options.targetTag || 'target', + _labelTag = options.labelTag || 'label', + _fixedPosTag = options.fixedPosTag || 'fixedPos'; + + var _sourceDown = null, _targetMove = null, _edgeLayer = null, _hintData = []; + + function event_coords(chart) { + var bound = chart.root().node().getBoundingClientRect(); + return chart.invertCoord([d3.event.clientX - bound.left, + d3.event.clientY - bound.top]); + } + + function update_hint() { + var data = _hintData.filter(function(h) { + return h.source && h.target; + }); + var line = _edgeLayer.selectAll('line.hint-edge').data(data); + line.exit().remove(); + line.enter().append('line') + .attr('class', 'hint-edge') + .style({ + fill: 'none', + stroke: 'black', + 'pointer-events': 'none' + }); + + line.attr({ + x1: function(d) { return d.source.x; }, + y1: function(d) { return d.source.y; }, + x2: function(d) { return d.target.x; }, + y2: function(d) { return d.target.y; } + }); + } + + function erase_hint() { + _hintData = []; + _sourceDown = _targetMove = null; + update_hint(); + } + + function create_node(chart, pos) { + var node = {}; + node[_idTag] = uuid(); + node[_labelTag] = ''; + node[_fixedPosTag] = {x: pos[0], y: pos[1]}; + options.nodeCrossfilter.add([node]); + chart.redraw(); + select_nodes_group.node_set_changed([node[_idTag]]); + } + + function create_edge(chart, source, target) { + erase_hint(); + var edge = {}; + edge[_idTag] = uuid(); + edge[_sourceTag] = source.orig.key; + edge[_targetTag] = target.orig.key; + // changing this data inside crossfilter is okay because it is not indexed data + source.orig.value[_fixedPosTag] = null; + target.orig.value[_fixedPosTag] = null; + options.edgeCrossfilter.add([edge]); + chart.redraw(); + select_nodes_group.node_set_changed([]); + } + + function add_behavior(chart, node, edge, ehover) { + var select_nodes = chart.child('select-nodes'); + if(select_nodes) { + select_nodes.clickBackgroundClears(false); + select_nodes.secondClickEvent(function(node) { + label_nodes_group.edit_node_label(node, {selectText: true}); + }); + } + node + .on('mousedown.draw-graphs', function(d) { + d3.event.stopPropagation(); + _sourceDown = d; + _hintData = [{source: {x: _sourceDown.cola.x, y: _sourceDown.cola.y}}]; + }) + .on('mousemove.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown) { + if(d === _sourceDown) { + _targetMove = null; + _hintData[0].target = null; + } + else if(d !== _targetMove) { + _targetMove = d; + _hintData[0].target = {x: _targetMove.cola.x, y: _targetMove.cola.y}; + } + update_hint(); + } + }) + .on('mouseup.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown && _targetMove) + create_edge(chart, _sourceDown, _targetMove); + else + erase_hint(); + }); + chart.svg() + .on('mousedown.draw-graphs', function() { + _sourceDown = null; + }) + .on('mousemove.draw-graphs', function() { + var data = []; + if(_sourceDown) { // drawing edge + var coords = event_coords(chart); + _targetMove = null; + _hintData[0].target = {x: coords[0], y: coords[1]}; + update_hint(); + } + }) + .on('mouseup.draw-graphs', function() { + if(_sourceDown) // drag-edge + erase_hint(); + else // click-node + create_node(chart, event_coords(chart)); + }); + if(!_edgeLayer) + _edgeLayer = chart.g().append('g').attr('class', 'draw-graphs'); + } + + function remove_behavior(chart, node, edge, ehover) { + node + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + chart.svg() + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + } + + var _behavior = dc_graph.behavior('highlight-paths', { + add_behavior: add_behavior, + remove_behavior: remove_behavior + }); + + // whether to do relayout & redraw (true) or just refresh (false) + _behavior.doRedraw = property(false); + + return _behavior; +}; + + // load a graph from various formats and return the data in consistent {nodes, links} format dc_graph.load_graph = function() { // ignore any query parameters for checking extension @@ -5470,6 +6014,65 @@ dc_graph.wheel_edges = function(namef, nindices, R) { return edges; }; +dc_graph.random_graph = function(options) { + options = Object.assign({ + ncolors: 5, + nodeKey: 'key', + edgeKey: 'key', + sourceKey: 'sourcename', + targetKey: 'targetname', + colorTag: 'color', + nodeKeyGen: function(i) { return 'n' + i; }, + edgeKeyGen: function(i) { return 'e' + i; }, + newComponentProb: 0.1, + newNodeProb: 0.9 + }, options); + if(isNaN(options.newNodeProb)) + options.newNodeProb = 0.9; + if(options.newNodProb <= 0) + options.newNodeProb = 0.1; + var _nodes = [], _edges = []; + function new_node() { + var n = {}; + n[options.nodeKey] = options.nodeKeyGen(_nodes.length); + n[options.colorTag] = Math.floor(Math.random()*options.ncolors); + _nodes.push(n); + return n; + } + function random_node() { + return _nodes[Math.floor(Math.random()*_nodes.length)]; + } + return { + nodes: function() { + return _nodes; + }, + edges: function() { + return _edges; + }, + generate: function(N) { + while(N-- > 0) { + var choice = Math.random(); + var n1, n2; + if(!_nodes.length || choice < options.newComponentProb) + n1 = new_node(); + else + n1 = random_node(); + if(choice < options.newNodeProb) + n2 = new_node(); + else + n2 = random_node(); + if(n1 && n2) { + var edge = {}; + edge[options.edgeKey] = options.edgeKeyGen(_edges.length); + edge[options.sourceKey] = n1[options.nodeKey]; + edge[options.targetKey] = n2[options.nodeKey]; + _edges.push(edge); + } + } + } + }; +}; + dc_graph.line_breaks = function(charexp, max_line_length) { var regexp = new RegExp(charexp, 'g'); return function(n) { diff --git a/dc.graph.js.map b/dc.graph.js.map index 04caa9ad..07a78e70 100644 --- a/dc.graph.js.map +++ b/dc.graph.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/banner.js","src/core.js","src/utils.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/webworker_layout.js","src/graphviz_attrs.js","src/cola_layout.js","src/dagre_layout.js","src/tree_layout.js","src/legend.js","src/constraint_pattern.js","src/tree_positions.js","src/tree_constraints.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish, nodeid, sourceid, targetid}\n return function(nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = callbacks.nodeid(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n var target = nmap[callbacks.targetid(e)];\n if(ei && callbacks.sib)\n callbacks.sib(false, nmap[callbacks.targetid(outmap[key][ei-1])], target);\n callbacks.push && callbacks.push();\n place_tree(target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n); });\n else {\n roots = nodes.filter(function(n) { return !indegree[callbacks.nodeid(n)]; });\n if(nodes.length && !roots.length) // all nodes are in a cycle\n roots = [nodes[0]];\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it will replace the\n * back-end.\n *\n * **Deprecated**: use {@link dc_graph.diagram#layoutEngine diagram.layoutEngine} with the engine\n * object instead\n * @method layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo='cola'] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = function(value, skipWarning) {\n if(!arguments.length)\n return _chart.layoutEngine() ? _chart.layoutEngine().layoutAlgorithm() : 'cola';\n if(!skipWarning)\n console.warn('dc.graph.diagram.layoutAlgorithm is depecrated - pass the layout engine object to dc_graph.diagram.layoutEngine instead');\n\n var engine;\n switch(value) {\n case 'cola':\n engine = dc_graph.cola_layout();\n break;\n case 'dagre':\n engine = dc_graph.dagre_layout();\n }\n engine = dc_graph.webworker_layout(engine);\n _chart.layoutEngine(engine);\n return this;\n };\n\n /**\n * The layout engine determines how to draw things!\n * @method layoutEngine\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [engine=null] - the layout engine to use\n * @example\n * // use cola with no webworker\n * diagram.layoutEngine(dc_graph.cola_layout());\n * // use dagre with a webworker\n * diagram.layoutEngine(dc_graph.webworker_layout(dc_graph.dagre_layout()));\n **/\n _chart.layoutEngine = property(null).react(function(val) {\n if(val && val.parent)\n val.parent(_chart);\n });\n\n _chart.tickSize = deprecate_layout_algo_parameter('tickSize');\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components.\n *\n * **Deprecated**: Use\n * {@link dc_graph.cola_layout#handleDisconnected cola_layout.handleDisconnected} instead.\n * @method handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = deprecate_layout_algo_parameter('handleDisconnected');\n\n function initLayout() {\n if(!_chart.layoutEngine())\n _chart.layoutAlgorithm('cola', true);\n _chart.layoutEngine().init({\n width: _chart.width(),\n height: _chart.height()\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n _chart.layoutEngine().stop();\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n _chart.layoutEngine().populateLayoutNode(v1.cola, v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n _chart.layoutEngine().populateLayoutEdge(e1.cola, e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _chart.layoutEngine()\n .on('tick', function(nodes, edges) {\n var elapsed = Date.now() - startTime;\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _chart.layoutEngine().stop();\n }\n })\n .on('end', function(nodes, edges) {\n if(!_chart.showLayoutSteps()) {\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n })\n .on('start', function() {\n console.log('algo ' + _chart.layoutEngine().layoutAlgorithm() + ' started.');\n _dispatch.start();\n });\n\n if(_chart.initialOnly())\n _chart.layoutEngine().dispatch().end(wnodes, wedges);\n else {\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _chart.layoutEngine().data(\n wnodes.map(function(v) { return v.cola; }),\n layout_edges.map(function(v) { return v.cola; }),\n constraints,\n {groupConnected: _chart.groupConnected()}\n );\n _chart.layoutEngine().start({\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20\n });\n }\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @method render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @method on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @method getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @method svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @method resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @method redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @method renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @method defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","var _workers = {};\nfunction create_worker(layoutAlgorithm) {\n if(!_workers[layoutAlgorithm]) {\n var worker = _workers[layoutAlgorithm] = {\n worker: new Worker(script_path() + 'dc.graph.' + layoutAlgorithm + '.worker.js'),\n layouts: {}\n };\n worker.worker.onmessage = function(e) {\n var layoutId = e.data.layoutId;\n if(!worker.layouts[layoutId])\n throw new Error('layoutId \"' + layoutId + '\" unknown!');\n worker.layouts[layoutId].dispatch()[e.data.response].apply(null, e.data.args);\n };\n }\n return _workers[layoutAlgorithm];\n}\n\ndc_graph.webworker_layout = function(layoutEngine) {\n var _tick, _done, _dispatch = d3.dispatch('init', 'start', 'tick', 'end');\n var _worker = create_worker(layoutEngine.layoutAlgorithm());\n var engine = {};\n _worker.layouts[layoutEngine.layoutId()] = engine;\n\n engine.parent = function(parent) {\n if(layoutEngine.parent)\n layoutEngine.parent(parent);\n };\n engine.init = function(options) {\n options = layoutEngine.optionNames().reduce(\n function(options, option) {\n options[option] = layoutEngine[option]();\n return options;\n }, options);\n _worker.worker.postMessage({\n command: 'init',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n return this;\n };\n engine.data = function(nodes, edges, constraints, options) {\n _worker.worker.postMessage({\n command: 'data',\n args: {\n layoutId: layoutEngine.layoutId(),\n nodes: nodes,\n edges: edges,\n constraints: constraints,\n options: options\n }\n });\n };\n engine.start = function(options) {\n _worker.worker.postMessage({\n command: 'start',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n };\n engine.stop = function() {\n _worker.worker.postMessage({\n command: 'stop',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n return this;\n };\n // stopgap while layout options are still on diagram\n engine.getEngine = function() {\n return layoutEngine;\n };\n // somewhat sketchy - do we want this object to be transparent or not?\n var passthroughs = ['layoutAlgorithm', 'populateLayoutNode', 'populateLayoutEdge', 'rankdir', 'ranksep'];\n passthroughs.forEach(function(name) {\n engine[name] = function() {\n var ret = layoutEngine[name].apply(layoutEngine, arguments);\n return arguments.length ? this : ret;\n };\n });\n engine.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n engine.dispatch = function() {\n return _dispatch;\n };\n return engine;\n};\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dgc_nodeFixed;\n\n if(typeof v.dgc_nodeFixed === 'object') {\n v1.x = v.dgc_nodeFixed.x;\n v1.y = v.dgc_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","/**\n * `dc_graph.tree_layout` is a very simple and not very bright tree layout. It can draw any DAG, but\n * tries to position the nodes as a tree.\n * @class tree_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.tree_layout}\n **/\ndc_graph.tree_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dfs;\n\n function init(options) {\n var x;\n var nodeWidth = d3.functor(options.nodeWidth);\n function best_dist(left, right) {\n return (nodeWidth(left) + nodeWidth(right)) / 2;\n }\n _dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.dcg_edgeTarget;\n },\n init: function() {\n x = options.offsetX;\n },\n row: function(n) {\n return n.dcg_rank;\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nodeWidth(left) + nodeWidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.y = r*options.gapY + options.offsetY;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.x = (n.hit_ins*n.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.x - b.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.x - (badl + want);\n l = sort[badi].x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\n *
  • To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  • To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n * \n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n console.warn('dc_graph.tree_positions is deprecated; use the layout engine tree_layout instead');\n if(rootf || treef) {\n console.warn('dc_graph.tree_positions: rootf and treef are ignored');\n }\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.cola.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.cola.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.cola.dcg_edgeTarget;\n },\n init: function() {\n x = ofsx;\n },\n row: function(n) {\n return rowf(n.orig);\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.layoutEngine().rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.layoutEngine().rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","var convert_tree_helper = function(data, attrs, options, parent, level, inherit) {\n level = level || 0;\n if(attrs.length > (options.valuesByAttr ? 1 : 0)) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = data.map(function(v) {\n var key = v[options.nestKey];\n var childKey = options.nestKeysUnique ? key : uuid();\n if(childKey) {\n var node;\n if(options.ancestorKeys) {\n inherit = inherit || {};\n if(attr)\n inherit[attr] = key;\n node = Object.assign({}, inherit);\n } else node = {};\n node[options.nodeKey] = childKey;\n if(options.label && options.labelFun)\n node[options.label] = options.labelFun(key, attr, v);\n if(options.level)\n node[options.level] = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = childKey;\n edges.push(edge);\n }\n }\n var children = options.valuesByAttr ? v[attrs[0]] : v.values;\n var recurse = convert_tree_helper(children, attrs.slice(0), options,\n childKey, level+1, Object.assign({}, inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: data.map(function(v) {\n v = Object.assign({}, v);\n if(options.level)\n v[options.level] = level+1;\n return v;\n }), edges: data.map(function(v) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = v[options.nodeKey];\n return edge;\n })};\n};\n\ndc_graph.convert_tree = function(data, attrs, options) {\n options = Object.assign({\n nodeKey: 'key',\n edgeKey: 'key',\n edgeSource: 'sourcename',\n edgeTarget: 'targetname',\n nestKey: 'key'\n }, options);\n if(Array.isArray(data))\n return convert_tree_helper(data, attrs, options, options.root, 0, options.inherit);\n else {\n attrs = [''].concat(attrs);\n return convert_tree_helper([data], attrs, options, options.root, 0, options.inherit);\n }\n};\n\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n return dc_graph.convert_tree(nest, attrs, {\n nodeKey: nodeKeyAttr,\n edgeSource: edgeSourceAttr,\n edgeTarget: edgeTargetAttr,\n root: parent,\n inherit: inherit,\n ancestorKeys: true,\n label: 'name',\n labelFun: function(key, attr, v) { return attr + ':' + key; },\n level: '_level'\n });\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file +{"version":3,"sources":["src/banner.js","src/core.js","src/utils.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/engine.js","src/webworker_layout.js","src/graphviz_attrs.js","src/cola_layout.js","src/dagre_layout.js","src/tree_layout.js","src/legend.js","src/constraint_pattern.js","src/tree_positions.js","src/tree_constraints.js","src/behavior.js","src/tip.js","src/edit_text.js","src/select_nodes.js","src/filter_selection.js","src/label_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/draw_graphs.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish, nodeid, sourceid, targetid}\n return function(nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = callbacks.nodeid(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n var target = nmap[callbacks.targetid(e)];\n if(ei && callbacks.sib)\n callbacks.sib(false, nmap[callbacks.targetid(outmap[key][ei-1])], target);\n callbacks.push && callbacks.push();\n place_tree(target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n); });\n else {\n roots = nodes.filter(function(n) { return !indegree[callbacks.nodeid(n)]; });\n if(nodes.length && !roots.length) // all nodes are in a cycle\n roots = [nodes[0]];\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row && callbacks.row(n) || 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it will replace the\n * back-end.\n *\n * **Deprecated**: use {@link dc_graph.diagram#layoutEngine diagram.layoutEngine} with the engine\n * object instead\n * @method layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo='cola'] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = function(value, skipWarning) {\n if(!arguments.length)\n return _chart.layoutEngine() ? _chart.layoutEngine().layoutAlgorithm() : 'cola';\n if(!skipWarning)\n console.warn('dc.graph.diagram.layoutAlgorithm is depecrated - pass the layout engine object to dc_graph.diagram.layoutEngine instead');\n\n var engine;\n switch(value) {\n case 'cola':\n engine = dc_graph.cola_layout();\n break;\n case 'dagre':\n engine = dc_graph.dagre_layout();\n }\n engine = dc_graph.webworker_layout(engine);\n _chart.layoutEngine(engine);\n return this;\n };\n\n /**\n * The layout engine determines how to draw things!\n * @method layoutEngine\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [engine=null] - the layout engine to use\n * @example\n * // use cola with no webworker\n * diagram.layoutEngine(dc_graph.cola_layout());\n * // use dagre with a webworker\n * diagram.layoutEngine(dc_graph.webworker_layout(dc_graph.dagre_layout()));\n **/\n _chart.layoutEngine = property(null).react(function(val) {\n if(val && val.parent)\n val.parent(_chart);\n });\n\n _chart.tickSize = deprecate_layout_algo_parameter('tickSize');\n\n\n _chart.uniqueId = function() {\n return _chart.anchorName().replace(/[ .#=\\[\\]\"]/g, '-');\n };\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.uniqueId() + '-' + _chart.edgeId(d);\n };\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.uniqueId() + '-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components.\n *\n * **Deprecated**: Use\n * {@link dc_graph.cola_layout#handleDisconnected cola_layout.handleDisconnected} instead.\n * @method handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = deprecate_layout_algo_parameter('handleDisconnected');\n\n function initLayout() {\n if(!_chart.layoutEngine())\n _chart.layoutAlgorithm('cola', true);\n _chart.layoutEngine().init({\n width: _chart.width(),\n height: _chart.height()\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n _chart.layoutEngine().stop();\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n _chart.layoutEngine().populateLayoutNode(v1.cola, v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n _chart.layoutEngine().populateLayoutEdge(e1.cola, e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _chart.layoutEngine()\n .on('tick', function(nodes, edges) {\n var elapsed = Date.now() - startTime;\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _chart.layoutEngine().stop();\n }\n })\n .on('end', function(nodes, edges) {\n if(!_chart.showLayoutSteps()) {\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n })\n .on('start', function() {\n console.log('algo ' + _chart.layoutEngine().layoutAlgorithm() + ' started.');\n _dispatch.start();\n });\n\n if(_chart.initialOnly())\n _chart.layoutEngine().dispatch().end(wnodes, wedges);\n else {\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _chart.layoutEngine().data(\n wnodes.map(function(v) { return v.cola; }),\n layout_edges.map(function(v) { return v.cola; }),\n constraints,\n {groupConnected: _chart.groupConnected()}\n );\n _chart.layoutEngine().start({\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20\n });\n }\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n _dispatch.zoomed(translate, scale);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @method render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g')\n .attr('class', 'draw');\n _edgeLayer = _g.append('g')\n .attr('class', 'edge-layer');\n _nodeLayer = _g.append('g')\n .attr('class', 'node-layer');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @method on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @method getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the x scale.\n * @method x\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _chart.x = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the y scale.\n * @method x\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _chart.y = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top `svg` element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @method svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Returns the top `g` element for this specific chart. This method is usually used to\n * retrieve the g element in order to overlay custom svg drawing\n * programatically. **Caution**: The root g element is usually generated internally, and\n * resetting it might produce unpredictable results.\n * @method g\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.g = function (_) {\n if (!arguments.length) {\n return _g;\n }\n _g = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @method resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @method redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @method renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @method defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _chart.x()(x) + _chart.x().range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _chart.y()(y) + _chart.y().range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _chart.x()(x) + _chart.x().range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _chart.y()(y) + _chart.y().range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _chart.x().domain(), yDomain = _chart.y().domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function enableZoom() {\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n function disableZoom() {\n _svg.on('.zoom', null);\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n // start out with 1:1 zoom\n if(!_chart.x())\n _chart.x(d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]));\n if(!_chart.y())\n _chart.y(d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]));\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_chart.x()).y(_chart.y());\n if(_chart.mouseZoomable()) {\n if(_chart.altKeyZoom()) {\n d3.select(document)\n .on('keydown', function() {\n if(d3.event.key === 'Alt')\n enableZoom();\n })\n .on('keyup', function() {\n if(d3.event.key === 'Alt')\n disableZoom();\n });\n }\n else enableZoom();\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _chart.x().invert(clientCoord[0]),\n _chart.y().invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the internal numeric ID of the chart.\n * @method chartID\n * @memberof dc.baseMixin\n * @instance\n * @returns {String}\n */\n _chart.chartID = function () {\n return _chart.__dcFlag__;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","dc_graph.spawn_engine = function(layout, args, worker) {\n var allow_webworker = true;\n var engine, params;\n switch(layout) {\n case 'dagre':\n engine = dc_graph.dagre_layout();\n params = ['rankdir'];\n break;\n case 'tree':\n engine = dc_graph.tree_layout();\n params = [];\n allow_webworker = false;\n break;\n case 'cola':\n default:\n engine = dc_graph.cola_layout();\n params = ['lengthStrategy'];\n break;\n }\n params.forEach(function(p) {\n if(args[p])\n engine[p](args[p]);\n });\n if(allow_webworker && worker !== 'false')\n engine = dc_graph.webworker_layout(engine);\n return engine;\n};\n","var _workers = {};\nfunction create_worker(layoutAlgorithm) {\n if(!_workers[layoutAlgorithm]) {\n var worker = _workers[layoutAlgorithm] = {\n worker: new Worker(script_path() + 'dc.graph.' + layoutAlgorithm + '.worker.js'),\n layouts: {}\n };\n worker.worker.onmessage = function(e) {\n var layoutId = e.data.layoutId;\n if(!worker.layouts[layoutId])\n throw new Error('layoutId \"' + layoutId + '\" unknown!');\n worker.layouts[layoutId].dispatch()[e.data.response].apply(null, e.data.args);\n };\n }\n return _workers[layoutAlgorithm];\n}\n\ndc_graph.webworker_layout = function(layoutEngine) {\n var _tick, _done, _dispatch = d3.dispatch('init', 'start', 'tick', 'end');\n var _worker = create_worker(layoutEngine.layoutAlgorithm());\n var engine = {};\n _worker.layouts[layoutEngine.layoutId()] = engine;\n\n engine.parent = function(parent) {\n if(layoutEngine.parent)\n layoutEngine.parent(parent);\n };\n engine.init = function(options) {\n options = layoutEngine.optionNames().reduce(\n function(options, option) {\n options[option] = layoutEngine[option]();\n return options;\n }, options);\n _worker.worker.postMessage({\n command: 'init',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n return this;\n };\n engine.data = function(nodes, edges, constraints, options) {\n _worker.worker.postMessage({\n command: 'data',\n args: {\n layoutId: layoutEngine.layoutId(),\n nodes: nodes,\n edges: edges,\n constraints: constraints,\n options: options\n }\n });\n };\n engine.start = function(options) {\n _worker.worker.postMessage({\n command: 'start',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n };\n engine.stop = function() {\n _worker.worker.postMessage({\n command: 'stop',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n return this;\n };\n // stopgap while layout options are still on diagram\n engine.getEngine = function() {\n return layoutEngine;\n };\n // somewhat sketchy - do we want this object to be transparent or not?\n var passthroughs = ['layoutAlgorithm', 'populateLayoutNode', 'populateLayoutEdge', 'rankdir', 'ranksep'];\n passthroughs.forEach(function(name) {\n engine[name] = function() {\n var ret = layoutEngine[name].apply(layoutEngine, arguments);\n return arguments.length ? this : ret;\n };\n });\n engine.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n engine.dispatch = function() {\n return _dispatch;\n };\n return engine;\n};\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dcg_nodeFixed;\n\n if(v1.fixed && typeof v.dcg_nodeFixed === 'object') {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","/**\n * `dc_graph.tree_layout` is a very simple and not very bright tree layout. It can draw any DAG, but\n * tries to position the nodes as a tree.\n * @class tree_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.tree_layout}\n **/\ndc_graph.tree_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dfs;\n\n function init(options) {\n var x;\n var nodeWidth = d3.functor(options.nodeWidth);\n function best_dist(left, right) {\n return (nodeWidth(left) + nodeWidth(right)) / 2;\n }\n _dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.dcg_edgeTarget;\n },\n init: function() {\n x = options.offsetX;\n },\n row: function(n) {\n return n.dcg_rank;\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nodeWidth(left) + nodeWidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.y = r*options.gapY + options.offsetY;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.x = (n.hit_ins*n.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.x - b.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.x - (badl + want);\n l = sort[badi].x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\n *
  • To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  • To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n * \n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n console.warn('dc_graph.tree_positions is deprecated; use the layout engine tree_layout instead');\n if(rootf || treef) {\n console.warn('dc_graph.tree_positions: rootf and treef are ignored');\n }\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.cola.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.cola.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.cola.dcg_edgeTarget;\n },\n init: function() {\n x = ofsx;\n },\n row: function(n) {\n return rowf(n.orig);\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// adapted from\n// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652\n\nfunction edittext(svg, position, options) {\n var myforeign = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');\n var textdiv = document.createElement(\"div\");\n var text = options.text || \"type on me\";\n var textnode = document.createTextNode(text);\n textdiv.appendChild(textnode);\n textdiv.setAttribute(\"contentEditable\", \"true\");\n textdiv.setAttribute(\"width\", \"auto\");\n textdiv.setAttribute(\"style\", \"display: inline-block; background-color: white; padding: 2px\"); //to make div fit text\n myforeign.setAttribute(\"width\", \"100%\");\n myforeign.setAttribute(\"height\", \"100%\");\n myforeign.setAttribute(\"style\", \"text-align: left\"); //to make div fit text\n myforeign.setAttributeNS(null, \"transform\", \"translate(\" + position.x + \" \" + position.y + \")\");\n svg.appendChild(myforeign);\n myforeign.appendChild(textdiv);\n\n function accept() {\n options.accept && options.accept(textdiv.innerText);\n textdiv.onblur = null;\n myforeign.remove();\n }\n function cancel() {\n options.cancel && options.cancel();\n textdiv.onblur = null;\n myforeign.remove();\n }\n\n textdiv.onkeydown = function(event) {\n if(event.keyCode===13) {\n event.preventDefault();\n }\n };\n textdiv.onkeyup = function(event) {\n if(event.keyCode===13) {\n accept();\n } else if(event.keyCode===27) {\n cancel();\n }\n };\n textdiv.onblur = cancel;\n textdiv.focus();\n\n var range = document.createRange();\n if(options.selectText) {\n range.selectNodeContents(textdiv);\n } else {\n range.setStart(textdiv, text.length);\n range.setEnd(textdiv, text.length);\n }\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n}\n\ndc_graph.edit_text = function(svg, selection, options) {\n var position = options.position || {x: 0, y: 0};\n edittext(svg.node(), position, options);\n};\n\n","dc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [], _oldSelected;\n var _brush, _gBrush;\n\n // http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin\n var is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;\n\n function isUnion(event) {\n return event.shiftKey;\n }\n function isToggle(event) {\n return is_a_mac ? event.metaKey : event.ctrlKey;\n }\n function add_array(a, v) {\n return a.indexOf(v) >= 0 ? a : a.concat([v]);\n }\n function toggle_array(a, v) {\n return a.indexOf(v) >= 0 ? a.filter(function(x) { return x != v; }) : a.concat([v]);\n }\n\n function selection_changed(chart) {\n return function(selection) {\n _selected = selection;\n chart.refresh();\n };\n }\n function background_click_event(chart, v) {\n chart.svg().on('click.select-nodes', v ? function(d) {\n select_nodes_group.node_set_changed([]);\n } : null);\n }\n function brushstart() {\n if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent))\n _oldSelected = _selected.slice();\n else {\n _oldSelected = [];\n select_nodes_group.node_set_changed([]);\n }\n }\n function brushmove() {\n var ext = _brush.extent();\n var rectSelect = _behavior.parent().selectAll('g.node').data().filter(function(n) {\n return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] &&\n ext[0][1] < n.cola.y && n.cola.y < ext[1][1];\n }).map(function(n) {\n return n.orig.key;\n });\n var newSelected;\n if(isUnion(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(add_array, _oldSelected);\n else if(isToggle(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(toggle_array, _oldSelected);\n else\n newSelected = rectSelect;\n select_nodes_group.node_set_changed(newSelected);\n }\n function brushend() {\n _gBrush.call(_brush.clear());\n }\n function install_brush(chart) {\n if(_brush)\n return;\n _brush = d3.svg.brush()\n .x(chart.x()).y(chart.y())\n .on('brushstart', brushstart)\n .on('brush', brushmove)\n .on('brushend', brushend);\n\n _gBrush = chart.svg().insert('g', ':first-child')\n .attr('class', 'brush')\n .call(_brush);\n }\n function add_behavior(chart, node, edge) {\n var condition = _behavior.noneIsAll() ? function(n) {\n return !_selected.length || _selected.indexOf(n.orig.key) >= 0;\n } : function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n };\n chart.cascade(50, true, conditional_properties(condition, null, props));\n\n node.on('click.select-nodes', function(d) {\n var key = chart.nodeKey.eval(d), newSelected;\n if(isUnion(d3.event))\n newSelected = add_array(_selected, key);\n else if(isToggle(d3.event))\n newSelected = toggle_array(_selected, key);\n else {\n if(_selected.length === 1 && _selected[0] === key && _behavior.secondClickEvent())\n _behavior.secondClickEvent()(d3.select(this));\n newSelected = [key];\n }\n select_nodes_group.node_set_changed(newSelected);\n d3.event.stopPropagation();\n });\n\n if(_behavior.multipleSelect())\n install_brush(chart);\n else\n background_click_event(chart, _behavior.clickBackgroundClears());\n\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var now_selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== now_selected.length)\n select_nodes_group.node_set_changed(now_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n var _behavior = dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior,\n parent: function(p) {\n select_nodes_group.on('node_set_changed.select-nodes', p ? selection_changed(p) : null);\n }\n });\n\n _behavior.multipleSelect = property(true);\n _behavior.clickBackgroundClears = property(true, false).react(function(v) {\n if(!_behavior.multipleSelect() && _behavior.parent())\n background_click_event(_behavior.parent(), v);\n });\n _behavior.secondClickEvent = property(null);\n _behavior.noneIsAll = property(false);\n return _behavior;\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.filter_selection = function() {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n\n function selection_changed(chart) {\n return function(selection) {\n if(selection.length) {\n var set = d3.set(selection);\n chart.nodeDimension().filterFunction(function(k) {\n return set.has(k);\n });\n } else chart.nodeDimension().filter(null);\n chart.redrawGroup();\n };\n }\n\n var _behavior = {\n parent: property(null).react(function(p) {\n select_nodes_group.on('node_set_changed.filter-selection', p ? selection_changed(p) : null);\n })\n };\n return _behavior;\n};\n","dc_graph.label_nodes = function(options) {\n if(!options.nodeCrossfilter)\n throw new Error('need nodeCrossfilter');\n var _idTag = options.idTag || 'id',\n _labelTag = options.labelTag || 'label';\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'),\n label_nodes_group = dc_graph.label_nodes_group('label-nodes-group');\n var _selected = [];\n var _input_anchor;\n\n function selection_changed_listener(chart) {\n return function(selection) {\n _selected = selection;\n if(_selected.length)\n _input_anchor.node().focus();\n };\n }\n\n function edit_node_label_listener(chart) {\n return function(node, options) {\n dc_graph.edit_text(\n chart.svg(),\n node,\n {\n text: options.text || chart.nodeLabel.eval(node.datum()),\n position: {x: node.datum().cola.x, y: node.datum().cola.y},\n selectText: options.selectText,\n accept: function(text) {\n var d = node.datum();\n d.orig.value[_labelTag] = text;\n chart.redraw();\n }\n });\n };\n }\n\n function add_behavior(chart, node, edge) {\n _input_anchor = chart.svg().selectAll('a#label-nodes-input').data([1]);\n _input_anchor.enter()\n .append('a').attr({\n id: 'label-nodes-input',\n href: '#'\n });\n _input_anchor.on('keyup.label-nodes', function() {\n if(_selected.length) {\n // printable characters should start edit\n if(d3.event.key.length !== 1)\n return;\n var n2 = node.filter(function(d) {\n return chart.nodeKey.eval(d) === _selected[0];\n });\n if(n2.empty()) {\n console.error(\"couldn't find node '\" + _selected[0] + \"'!\");\n return;\n }\n if(n2.size()>1) {\n console.error(\"found too many nodes for '\" + _selected[0] + \"' (\" + n2.size() + \")!\");\n return;\n }\n label_nodes_group.edit_node_label(n2, {text: d3.event.key, selectText: false});\n }\n });\n }\n\n function remove_behavior(chart, node, edge) {\n chart.root().select('a#label-nodes-input').remove();\n }\n\n var _behavior = dc_graph.behavior('label-nodes', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior,\n parent: function(p) {\n select_nodes_group.on('node_set_changed.label-nodes', p ? selection_changed_listener(p) : null);\n label_nodes_group.on('edit_node_label.label-nodes', p ? edit_node_label_listener(p) : null);\n }\n });\n return _behavior;\n};\n\ndc_graph.label_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('label-nodes', function() {\n return d3.dispatch('edit_node_label');\n });\n\n return window.chart_registry.create_group('label-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.layoutEngine().rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.layoutEngine().rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","dc_graph.draw_graphs = function(options) {\n if(!options.nodeCrossfilter)\n throw new Error('need nodeCrossfilter');\n if(!options.edgeCrossfilter)\n throw new Error('need edgeCrossfilter');\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'),\n label_nodes_group = dc_graph.label_nodes_group('label-nodes-group');\n var _idTag = options.idTag || 'id',\n _sourceTag = options.sourceTag || 'source',\n _targetTag = options.targetTag || 'target',\n _labelTag = options.labelTag || 'label',\n _fixedPosTag = options.fixedPosTag || 'fixedPos';\n\n var _sourceDown = null, _targetMove = null, _edgeLayer = null, _hintData = [];\n\n function event_coords(chart) {\n var bound = chart.root().node().getBoundingClientRect();\n return chart.invertCoord([d3.event.clientX - bound.left,\n d3.event.clientY - bound.top]);\n }\n\n function update_hint() {\n var data = _hintData.filter(function(h) {\n return h.source && h.target;\n });\n var line = _edgeLayer.selectAll('line.hint-edge').data(data);\n line.exit().remove();\n line.enter().append('line')\n .attr('class', 'hint-edge')\n .style({\n fill: 'none',\n stroke: 'black',\n 'pointer-events': 'none'\n });\n\n line.attr({\n x1: function(d) { return d.source.x; },\n y1: function(d) { return d.source.y; },\n x2: function(d) { return d.target.x; },\n y2: function(d) { return d.target.y; }\n });\n }\n\n function erase_hint() {\n _hintData = [];\n _sourceDown = _targetMove = null;\n update_hint();\n }\n\n function create_node(chart, pos) {\n var node = {};\n node[_idTag] = uuid();\n node[_labelTag] = '';\n node[_fixedPosTag] = {x: pos[0], y: pos[1]};\n options.nodeCrossfilter.add([node]);\n chart.redraw();\n select_nodes_group.node_set_changed([node[_idTag]]);\n }\n\n function create_edge(chart, source, target) {\n erase_hint();\n var edge = {};\n edge[_idTag] = uuid();\n edge[_sourceTag] = source.orig.key;\n edge[_targetTag] = target.orig.key;\n // changing this data inside crossfilter is okay because it is not indexed data\n source.orig.value[_fixedPosTag] = null;\n target.orig.value[_fixedPosTag] = null;\n options.edgeCrossfilter.add([edge]);\n chart.redraw();\n select_nodes_group.node_set_changed([]);\n }\n\n function add_behavior(chart, node, edge, ehover) {\n var select_nodes = chart.child('select-nodes');\n if(select_nodes) {\n select_nodes.clickBackgroundClears(false);\n select_nodes.secondClickEvent(function(node) {\n label_nodes_group.edit_node_label(node, {selectText: true});\n });\n }\n node\n .on('mousedown.draw-graphs', function(d) {\n d3.event.stopPropagation();\n _sourceDown = d;\n _hintData = [{source: {x: _sourceDown.cola.x, y: _sourceDown.cola.y}}];\n })\n .on('mousemove.draw-graphs', function(d) {\n d3.event.stopPropagation();\n if(_sourceDown) {\n if(d === _sourceDown) {\n _targetMove = null;\n _hintData[0].target = null;\n }\n else if(d !== _targetMove) {\n _targetMove = d;\n _hintData[0].target = {x: _targetMove.cola.x, y: _targetMove.cola.y};\n }\n update_hint();\n }\n })\n .on('mouseup.draw-graphs', function(d) {\n d3.event.stopPropagation();\n if(_sourceDown && _targetMove)\n create_edge(chart, _sourceDown, _targetMove);\n else\n erase_hint();\n });\n chart.svg()\n .on('mousedown.draw-graphs', function() {\n _sourceDown = null;\n })\n .on('mousemove.draw-graphs', function() {\n var data = [];\n if(_sourceDown) { // drawing edge\n var coords = event_coords(chart);\n _targetMove = null;\n _hintData[0].target = {x: coords[0], y: coords[1]};\n update_hint();\n }\n })\n .on('mouseup.draw-graphs', function() {\n if(_sourceDown) // drag-edge\n erase_hint();\n else // click-node\n create_node(chart, event_coords(chart));\n });\n if(!_edgeLayer)\n _edgeLayer = chart.g().append('g').attr('class', 'draw-graphs');\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n chart.svg()\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","var convert_tree_helper = function(data, attrs, options, parent, level, inherit) {\n level = level || 0;\n if(attrs.length > (options.valuesByAttr ? 1 : 0)) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = data.map(function(v) {\n var key = v[options.nestKey];\n var childKey = options.nestKeysUnique ? key : uuid();\n if(childKey) {\n var node;\n if(options.ancestorKeys) {\n inherit = inherit || {};\n if(attr)\n inherit[attr] = key;\n node = Object.assign({}, inherit);\n } else node = {};\n node[options.nodeKey] = childKey;\n if(options.label && options.labelFun)\n node[options.label] = options.labelFun(key, attr, v);\n if(options.level)\n node[options.level] = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = childKey;\n edges.push(edge);\n }\n }\n var children = options.valuesByAttr ? v[attrs[0]] : v.values;\n var recurse = convert_tree_helper(children, attrs.slice(0), options,\n childKey, level+1, Object.assign({}, inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: data.map(function(v) {\n v = Object.assign({}, v);\n if(options.level)\n v[options.level] = level+1;\n return v;\n }), edges: data.map(function(v) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = v[options.nodeKey];\n return edge;\n })};\n};\n\ndc_graph.convert_tree = function(data, attrs, options) {\n options = Object.assign({\n nodeKey: 'key',\n edgeKey: 'key',\n edgeSource: 'sourcename',\n edgeTarget: 'targetname',\n nestKey: 'key'\n }, options);\n if(Array.isArray(data))\n return convert_tree_helper(data, attrs, options, options.root, 0, options.inherit);\n else {\n attrs = [''].concat(attrs);\n return convert_tree_helper([data], attrs, options, options.root, 0, options.inherit);\n }\n};\n\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n return dc_graph.convert_tree(nest, attrs, {\n nodeKey: nodeKeyAttr,\n edgeSource: edgeSourceAttr,\n edgeTarget: edgeTargetAttr,\n root: parent,\n inherit: inherit,\n ancestorKeys: true,\n label: 'name',\n labelFun: function(key, attr, v) { return attr + ':' + key; },\n level: '_level'\n });\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i 0) {\n var choice = Math.random();\n var n1, n2;\n if(!_nodes.length || choice < options.newComponentProb)\n n1 = new_node();\n else\n n1 = random_node();\n if(choice < options.newNodeProb)\n n2 = new_node();\n else\n n2 = random_node();\n if(n1 && n2) {\n var edge = {};\n edge[options.edgeKey] = options.edgeKeyGen(_edges.length);\n edge[options.sourceKey] = n1[options.nodeKey];\n edge[options.targetKey] = n2[options.nodeKey];\n _edges.push(edge);\n }\n }\n }\n };\n};\n","dc_graph.line_breaks = function(charexp, max_line_length) {\n var regexp = new RegExp(charexp, 'g');\n return function(n) {\n var s = n.key;\n var result;\n var line = '', lines = [], part, i = 0;\n do {\n result = regexp.exec(s);\n if(result)\n part = s.slice(i, regexp.lastIndex);\n else\n part = s.slice(i);\n if(line.length + part.length > max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file diff --git a/dc.graph.min.js b/dc.graph.min.js index 8cf10dad..0474092f 100644 --- a/dc.graph.min.js +++ b/dc.graph.min.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -18,6 +18,7 @@ * */ -!function(){function a(a,b,c){"use strict";function d(a){return a.orig}function e(a){return a}function f(a,b){var c=J(b),d=function(){return arguments.length?(console.warn(a),c.apply(J,arguments),this):c()};return["cascade","_eval","eval","react"].forEach(function(a){d[a]=c[a]}),d}function g(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function h(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,j(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,j(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function i(a,b){return function(){return a(b.apply(null,arguments))}}function j(a){return I.functor_wrap(a,d)}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function l(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!o(c,i,a))return!1}else if(!o(a,i,c))return!1;if(b>=d){if(!o(d,j,b))return!1}else if(!o(b,j,d))return!1;if(e>=g){if(!o(g,i,e))return!1}else if(!o(e,i,g))return!1;if(f>=h){if(!o(h,j,f))return!1}else if(!o(f,j,h))return!1;return{x:i,y:j}}function q(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function B(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,p,q,s;if(h){var t,u,v=function(b,c){return r(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),y=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=A(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=A(w(c,h.targetPort,j),y,y-2*i*j/k)}catch(a){u={ang:y,port:h.targetPort}}o=t.port,p=u.port;var z=Math.hypot(o.x,o.y),B=Math.hypot(p.x,p.y),C=z+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);q=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+p.x,y:g+p.y}],s=3}else m=f-d,n=g-e,o=r(a,b,m,n),p=r(a,c,-m,-n),o||(o={x:0,y:0}),p||(p={x:0,y:0}),q=[{x:d+o.x,y:e+o.y},{x:f+p.x,y:g+p.y}],s=1;return{sourcePort:o,targetPort:p,points:q,bezDegree:s}}function C(a,b){for(var c=[],d=1;da)return g.splice(c,0,{n:a,f:b}),h}return g.push({n:a,f:b}),h},h._eval=function(a,c){if(0!==c&&g.length){var d=g[c-1];return d.f(a,function(){return h._eval(a,c-1)})}return I.functor_wrap(h(),b)(a)},h.eval=function(a){return h._eval(a,g.length)},h.react=function(a){return arguments.length?(f=a,this):f},h};I.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var K={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();I.depth_first_traversal=function(a){return function(b,c){function d(b,c){var e=a.nodeid(b);return j[e]?void(a.skip&&a.skip(b,f[e])):(i[c]||(i[c]=[]),a.place&&a.place(b,c,i[c]),i[c].push(b),j[e]=!0,g[e]&&g[e].forEach(function(b,f){var i=h[a.targetid(b)];f&&a.sib&&a.sib(!1,h[a.targetid(g[e][f-1])],i),a.push&&a.push(),d(i,c+1)}),void(a.pop&&a.pop(b)))}a.init&&a.init(),a.tree&&(c=c.filter(function(b){return a.tree(b)}));var e,f={},g=c.reduce(function(b,c){var d=a.sourceid(c),e=a.targetid(c);return b[d]||(b[d]=[]),b[d].push(c),f[e]=(f[e]||0)+1,b},{}),h=b.reduce(function(b,c){var d=a.nodeid(c);return b[d]=c,b},{}),i=[],j={};a.root?e=b.filter(function(b){return a.root(b)}):(e=b.filter(function(b){return!f[a.nodeid(b)]}),b.length&&!e.length&&(e=[b[0]])),e.forEach(function(b,c){c&&a.sib&&a.sib(!0,e[c-1],b),a.push&&a.push(),d(b,a.row?a.row(b):0)}),a.finish(i)}};var M=1e-7,N={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};I.available_shapes=function(){var a=Object.keys(N);return a.slice(0,a.length-1)};var O={shape:"ellipse"};I.diagram=function(g,h){function k(a){return function(b){ga.layoutEngine()||ga.layoutAlgorithm("cola",!0),console.warn('Warning: dc_graph.diagram."'+a+'"is deprecated. Call the corresponding method on the layout engine instead.');var c=ga.layoutEngine();return c.getEngine&&(c=c.getEngine()),c[a](b),this}}function n(){ga.layoutEngine()||ga.layoutAlgorithm("cola",!0),ga.layoutEngine().init({width:ga.width(),height:ga.height()})}function o(a){return!!a.source&&!!a.target}function p(){return"none"!==ga.stageTransitions()?ga.transitionDuration()/2:ga.transitionDuration()}function q(a){return"none"===ga.stageTransitions()||"modins"===ga.stageTransitions()==!a?0:ga.transitionDuration()/2}function r(b,c){c.attr("stroke",ga.edgeStroke.eval).attr("stroke-width",ga.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=ga.edgeArrowhead.eval(a),c=R(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=ga.edgeArrowtail.eval(a),c=R(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+ga.arrowId(b,"head")+",#"+ga.arrowId(b,"tail")).attr("fill",ga.edgeStroke.eval(b))}),ga._updateNode(b)}function s(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){ga.isRunning()||ga.redraw()},0))}function x(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+ga.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+ga.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=B(ga,a.source,a.target,c,d,e,f,m,k,ga.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=E(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function y(a){x(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function A(a){var b=x(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function C(a){return function(b){var c=b.ports[a][b.parallel].path;return l(c.points,c.bezDegree)}}function D(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=T();i=ba.translate(),j=ba.scale(),n.forEach(function(a){switch(a){case"l":i[0]=U(i,o.left);break;case"t":i[1]=V(i,o.top);break;case"r":i[0]=W(i,o.right);break;case"b":i[1]=X(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ga.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ha.attr({viewBox:a,preserveAspectRatio:f})),ba.translate(i).scale(j).event(ha)}}function Q(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(o));var l={};c.each(function(a){l[ga.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var m=b.transition().duration(p()).delay(function(a){return q(l[ga.nodeKey.eval(a)])}).attr("opacity",ga.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var n={};e.each(function(a){n[ga.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ga.stageTransitions()?(A(b),c="new"):(y(b),c="old"),ga.edgeArrowhead.eval(b)&&a.select("#"+ga.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",C("modins"===ga.stageTransitions()?"new":"old"));var r=d.each(A).each(function(b){ga.edgeArrowhead.eval(b)&&a.select("#"+ga.arrowId(b,"head")).transition().duration(p()).delay(q(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(p()).delay(function(a){return q(n[ga.edgeKey.eval(a)])}).attr("opacity",ga.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ga.stageTransitions()&&n[ga.edgeKey.eval(a)]?"old":"new";return C(b)(a)});k.attr("d",D("modins"===ga.stageTransitions()?"new":"old"));var t=j.transition().duration(p()).delay(function(a){return q(n[ga.edgeKey.eval(a)])}).attr("opacity",ga.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ga.stageTransitions()&&n[ga.edgeKey.eval(a)]?"old":"new";return D(b)(a)});"insmod"===ga.stageTransitions()&&(p()>=50?(r=r.transition().duration(p()).attr("d",C("new")),t=t.transition().duration(p()).attr("d",D("new"))):(r.attr("d",C("new")),t.attr("d",C("new")))),ga.showLayoutSteps()||F([m,r,t],function(){s(!0)}),f.attr("d",C("new"))}function R(a,b,c){var d=ga.arrowId(a,b),e=ga.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*ga.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*ga.edgeArrowSize.eval(a)).attr("stroke",ga.edgeStroke.eval(a)).attr("fill",ga.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function S(a,b){ta=a,ua=b,ja.attr("transform","translate("+a+") scale("+b+")")}function T(){return{left:wa.left-ga.margins().left,top:wa.top-ga.margins().top,right:wa.right+ga.margins().right,bottom:wa.bottom+ga.margins().bottom}}function U(a,b){return a[0]-ca(b)+ca.range()[0]}function V(a,b){return a[1]-da(b)+da.range()[0]}function W(a,b){return a[0]-ca(b)+ca.range()[1]}function X(a,b){return a[1]-da(b)+da.range()[1]}function Y(){var b=a.event.translate;if(ga.restrictPan()){var c,d=ca.domain(),e=da.domain(),f=T(),g=f.leftga.timeLimit())&&(console.log("cancelled"),ga.layoutEngine().stop())}).on("end",function(a,b){ga.showLayoutSteps()?s(!0):(ga.initialOnly()||c(a,b),Q(C,D,u,v,w,x,y,z,A,B));var d;switch(ga.autoZoom()){case"always":d=!0;break;case"once":d=!0,ga.autoZoom(null);break;default:d=!1}N(C,u),d&&P()}).on("start",function(){console.log("algo "+ga.layoutEngine().layoutAlgorithm()+" started."),ma.start()}),ga.initialOnly()?ga.layoutEngine().dispatch().end(g,h):(ma.start(),ga.layoutEngine().data(g.map(function(a){return a.cola}),J.map(function(a){return a.cola}),H,{groupConnected:ga.groupConnected()}),ga.layoutEngine().start({initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20})),this},ga.refresh=function(b,c,d,e,f){b=b||ka.selectAll(".node"),c=c||la.selectAll(".edge"),r(b,c),d=d||la.selectAll(".edge-hover"),e=e||la.selectAll(".edge-label"),f=f||ia.selectAll("path.edge-label-path");var g=a.select(null);Q(b,g,c,g,d,g,e,g,f,g)};var wa;return ga.render=function(){return ga.initLayoutOnRedraw()||n(),ga.resetSvg(),ja=ha.append("g"),la=ja.append("g"),ka=ja.append("g"),ga.legend()&&ga.legend().render(),ga.redraw()},ga.on=function(a,b){return ma.on(a,b),this},ga.getStats=function(){return pa},ga.select=function(a){return ga.root().select(a)},ga.selectAll=function(a){return ga.root()?ga.root().selectAll(a):null},ga.svg=function(a){return arguments.length?(ha=a,ga):ha},ga.resetSvg=function(){return ga.select("svg").remove(),$()},ga.redrawGroup=function(){c.redrawAll(h)},ga.renderGroup=function(){c.renderAll(h)},ga.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ga},ga.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ia.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ga.invertCoord=function(a){return[ca.invert(a[0]),da.invert(a[1])]},ga.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ga.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ga.anchor=function(b,d){if(!arguments.length)return ea;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return ea=b.select&&b.classed?b.node():b,ga.root(a.select(ea)),ga.root().classed(I.constants.CHART_CLASS,!0),c.registerChart(ga,d),fa=d,ga},ga.anchorName=function(){var a=ga.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ga.chartID()},ga.anchor(g,h)};var P={};I.webworker_layout=function(b){var c=a.dispatch("init","start","tick","end"),d=F(b.layoutAlgorithm()),e={};d.layouts[b.layoutId()]=e,e.parent=function(a){b.parent&&b.parent(a)},e.init=function(a){return a=b.optionNames().reduce(function(a,c){return a[c]=b[c](),a},a),d.worker.postMessage({command:"init",args:{layoutId:b.layoutId(),options:a}}),this},e.data=function(a,c,e,f){d.worker.postMessage({command:"data",args:{layoutId:b.layoutId(),nodes:a,edges:c,constraints:e,options:f}})},e.start=function(a){d.worker.postMessage({command:"start",args:{layoutId:b.layoutId(),options:a}})},e.stop=function(){return d.worker.postMessage({command:"stop",args:{layoutId:b.layoutId()}}),this},e.getEngine=function(){return b};var f=["layoutAlgorithm","populateLayoutNode","populateLayoutEdge","rankdir","ranksep"];return f.forEach(function(a){e[a]=function(){var c=b[a].apply(b,arguments);return arguments.length?this:c}}),e.on=function(a,b){return c.on(a,b),this},e.dispatch=function(){return c},e},I.graphviz_attrs=function(){return{rankdir:J("TB"),ranksep:J(40)}},I.cola_layout=function(b){function c(a){switch(j=cola.d3adaptor().avoidOverlaps(!0).size([a.width,a.height]).handleDisconnected(a.handleDisconnected),j.tickSize&&j.tickSize(a.tickSize),a.lengthStrategy){case"symmetric":j.symmetricDiffLinkLengths(a.baseLength);break;case"jaccard":j.jaccardLinkLengths(a.baseLength);break;case"individual":j.linkDistance(function(b){return b.dcg_edgeLength||a.baseLength});break;case"none":}a.flowLayout&&j.flowLayout(a.flowLayout.axis,a.flowLayout.minSeparation)}function d(a,b,c,d){function e(a){k[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(l,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height,a.fixed=!!b.dgc_nodeFixed,"object"==typeof b.dgc_nodeFixed?(a.x=b.dgc_nodeFixed.x, -a.y=b.dgc_nodeFixed.y):(void 0!==b.x&&(a.x=b.x),void 0!==b.y&&(a.y=b.y))}),g=m(n,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.source=l[b.dcg_edgeSource],a.target=l[b.dcg_edgeTarget],a.dcg_edgeLength=b.dcg_edgeLength});f.forEach(function(a,b){a.index=b});var h=null;if(d.groupConnected){var i=cola.separateGraphs(f,g);h=i.map(function(a){return{leaves:a.array.map(function(a){return a.index})}})}j.on("tick",function(){e("tick")}).on("start",function(){k.start()}).on("end",function(){e("end")}),j.nodes(f).links(g).constraints(c).groups(h)}function e(a){j.start(a.initialUnconstrainedIterations,a.initialUserConstraintIterations,a.initialAllConstraintsIterations,a.gridSnapIterations)}function f(){j.stop()}var h,i=b||g(),j=null,k=a.dispatch("tick","start","end"),l={},n={},o=I.graphviz_attrs(),p=Object.keys(o);o.rankdir(null);var q=Object.assign(o,{layoutAlgorithm:function(){return"cola"},layoutId:function(){return i},parent:J(null),on:function(a,b){return k.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return["handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize"].concat(p)},populateLayoutNode:function(){},populateLayoutEdge:function(){},handleDisconnected:J(!0),lengthStrategy:J("symmetric"),baseLength:J(30),flowLayout:function(a){if(!arguments.length){if(h)return h;var b=q.rankdir();if(!b)return null;var c="LR"===b||"RL"===b?"x":"y";return{axis:c,minSeparation:q.ranksep()+2*q.parent().nodeRadius()}}return h=a,this},tickSize:J(1)});return q},I.cola_layout.scripts=["d3.js","cola.js"],I.dagre_layout=function(b){function c(a){k=new dagre.graphlib.Graph({multigraph:!0}),k.setGraph({rankdir:a.rankdir}),k.setDefaultEdgeLabel(function(){return{}})}function d(a,b,c,d){function e(a){l[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(n,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height},function(a,b){k.setNode(a,b)},function(a){k.removeNode(a)}),g=m(o,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.dcg_edgeSource=b.dcg_edgeSource,a.dcg_edgeTarget=b.dcg_edgeTarget},function(a,b,c){k.setEdge(c.dcg_edgeSource,c.dcg_edgeTarget,b)},function(a,b){k.removeEdge(b.dcg_edgeSource,b.dcg_edgeTarget,b.dcg_edgeKey)});h=function(){e("tick")},i=function(){e("end")}}function e(a){l.start(),dagre.layout(k),i()}function f(){}var h,i,j=b||g(),k=null,l=a.dispatch("tick","start","end"),n={},o={},p=I.graphviz_attrs(),q=Object.keys(p);return Object.assign(p,{layoutAlgorithm:function(){return"dagre"},layoutId:function(){return j},on:function(a,b){return l.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return q},populateLayoutNode:function(){},populateLayoutEdge:function(){}})},I.dagre_layout.scripts=["d3.js","dagre.js"],I.tree_layout=function(b){function c(b){function c(a,b){return(e(a)+e(b))/2}var d,e=a.functor(b.nodeWidth);h=I.depth_first_traversal({nodeid:function(a){return a.dcg_nodeKey},sourceid:function(a){return a.dcg_edgeSource},targetid:function(a){return a.dcg_edgeTarget},init:function(){d=b.offsetX},row:function(a){return a.dcg_rank},place:function(a,c,f){if(f.length){var g=f[f.length-1],h=(e(g)+e(a))/2;d=Math.max(d,g.left_x+h)}a.left_x=d,a.hit_ins=1,a.y=c*b.gapY+b.offsetY},sib:function(a,b,e){var f=c(b,e);a&&(f*=1.5),d+=f},pop:function(a){a.x=(a.left_x+d)/2},skip:function(a,b){a.x=(a.hit_ins*a.x+d)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,d=a.sort(function(a,b){return a.x-b.x}),e=null,f=null,g=0;g0&&--e;var j,k;if(g0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=J(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=J("n"),f.content=J(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=J(0),f},I.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=J(!0),b},I.select_nodes=function(b){function c(c,d,g){c.cascade(50,!0,h(function(a){return f.indexOf(a.orig.key)>=0},null,b)),d.on("click.select-nodes",function(b){f=[c.nodeKey.eval(b)],c.refresh(d,g),e.node_set_changed(f),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){f=[],c.refresh(d,g),e.node_set_changed(f)});var i=d.data().map(function(a){return a.orig.key}),j=f.length;f=f.filter(function(a){return i.indexOf(a)>=0}),f.length!==j&&e.node_set_changed(f)}function d(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var e=I.select_nodes_group("select-nodes-group"),f=[];return I.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},I.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},I.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,d,e){c.cascade(100,!0,h(null,function(a){return a.dcg_highlighted},a)),d.on("mouseover.highlight-neighbors",function(a){e.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(d,e)}).on("mouseout.highlight-neighbors",function(a){b(e),c.refresh(d,e)})}function d(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return I.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},I.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},I.highlight_paths=function(a,b,c,d){function e(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function f(a,b){r=a,s=b,t=u=null,e()}function g(a){a!==u&&(u=a,e())}function i(a){a!==t&&(t=a,e())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(d,e,f,g){d.cascade(200,!0,h(function(a){return!!r[d.nodeKey.eval(a)]},function(a){return!!s[d.edgeKey.eval(a)]},a)).cascade(300,!0,h(function(a){return m(r[d.nodeKey.eval(a)],t)},function(a){return m(s[d.edgeKey.eval(a)],t)},c)).cascade(400,!0,h(function(a){return m(r[d.nodeKey.eval(a)],u)},function(a){return m(s[d.edgeKey.eval(a)],u)},b)),e.on("mouseover.highlight-paths",function(a){q.hover_changed(r[d.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[d.nodeKey.eval(a)]))}),g.on("mouseover.highlight-paths",function(a){q.hover_changed(s[d.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[d.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=I.register_highlight_paths_group(d||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=I.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?f:null),q.on("hover_changed."+b,a?g:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=J(!1),v},I.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.layoutEngine().rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return I.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},I.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},I.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!H(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&H(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},I.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}();var Q=function(a,b,d,e,f,h){if(f=f||0,b.length>(d.valuesByAttr?1:0)){var i=b.shift(),j=[],k=[],l=a.map(function(a){var c=a[d.nestKey],l=d.nestKeysUnique?c:g();if(l){var m;if(d.ancestorKeys?(h=h||{},i&&(h[i]=c),m=Object.assign({},h)):m={},m[d.nodeKey]=l,d.label&&d.labelFun&&(m[d.label]=d.labelFun(c,i,a)),d.level&&(m[d.level]=f+1),j.push(m),e){var n={};n[d.edgeSource]=e,n[d.edgeTarget]=l,k.push(n)}}var o=d.valuesByAttr?a[b[0]]:a.values,p=Q(o,b.slice(0),d,l,f+1,Object.assign({},h));return p});return{nodes:Array.prototype.concat.apply(j,l.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(k,l.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a=Object.assign({},a),d.level&&(a[d.level]=f+1),a}),edges:a.map(function(a){var b={};return b[d.edgeSource]=e,b[d.edgeTarget]=a[d.nodeKey],b})}};return I.convert_tree=function(a,b,c){return c=Object.assign({nodeKey:"key",edgeKey:"key",edgeSource:"sourcename",edgeTarget:"targetname",nestKey:"key"},c),Array.isArray(a)?Q(a,b,c,c.root,0,c.inherit):(b=[""].concat(b),Q([a],b,c,c.root,0,c.inherit))},I.convert_nest=function(a,b,c,d,e,f,g){return I.convert_tree(a,b,{nodeKey:c,edgeSource:d,edgeTarget:e,root:f,inherit:g,ancestorKeys:!0,label:"name",labelFun:function(a,b,c){return b+":"+a},level:"_level"})},I.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=g()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},I.path_reader=function(a){function b(a,b,c){h.elementList.eval(a).forEach(function(d){var e,f;switch(h.elementType.eval(d)){case"node":e=h.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=h.edgeSource.eval(d)+"-"+h.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,f,g=I.register_highlight_paths_group(a||"highlight-paths-group"),h={pathList:J(e,!1),timeRange:J(null,!1),elementList:J(e,!1),elementType:J(null,!1),nodeKey:J(null,!1),edgeSource:J(null,!1),edgeTarget:J(null,!1),clear:function(){g.paths_changed({},{},[])},data:function(a){var e,i={},j={},k=[];h.pathList.eval(a).forEach(function(a){if(a._range=h.timeRange.eval(a)){if(e===!1)throw new Error("can't have a mix of ranged and non-ranged paths");e=!0}else{if(e===!0)throw new Error("can't have a mix of ranged and non-ranged paths");e=!1,b(a,i,j)}k.push(a)}),e?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),f&&this.setTime(f)):(c=null,d=null,g.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],e={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,e,h)}),g.paths_changed(e,h,c)}f=a}};return h},I.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=I.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:J("Nothing here"),zero_text:J("No paths"),error_text:J(null),queried:J(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},I.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return I.node_name(Math.floor(a/52))+I.node_name(a%52);throw new Error("no, that's too large")},I.node_object=function(a,b){return b=b||{},_.extend({id:a,name:I.node_name(a)},b)},I.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},I.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},I.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},I.d3=a,I.crossfilter=b,I.dc=c,I}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); +!function(){function a(a,b,c){"use strict";function d(a){return a.orig}function e(a){return a}function f(a,b){var c=K(b),d=function(){return arguments.length?(console.warn(a),c.apply(K,arguments),this):c()};return["cascade","_eval","eval","react"].forEach(function(a){d[a]=c[a]}),d}function g(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function h(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,j(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,j(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function i(a,b){return function(){return a(b.apply(null,arguments))}}function j(a){return J.functor_wrap(a,d)}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function l(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!o(c,i,a))return!1}else if(!o(a,i,c))return!1;if(b>=d){if(!o(d,j,b))return!1}else if(!o(b,j,d))return!1;if(e>=g){if(!o(g,i,e))return!1}else if(!o(e,i,g))return!1;if(f>=h){if(!o(h,j,f))return!1}else if(!o(f,j,h))return!1;return{x:i,y:j}}function q(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function B(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,p,q,s;if(h){var t,u,v=function(b,c){return r(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),y=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=A(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=A(w(c,h.targetPort,j),y,y-2*i*j/k)}catch(a){u={ang:y,port:h.targetPort}}o=t.port,p=u.port;var z=Math.hypot(o.x,o.y),B=Math.hypot(p.x,p.y),C=z+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);q=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+p.x,y:g+p.y}],s=3}else m=f-d,n=g-e,o=r(a,b,m,n),p=r(a,c,-m,-n),o||(o={x:0,y:0}),p||(p={x:0,y:0}),q=[{x:d+o.x,y:e+o.y},{x:f+p.x,y:g+p.y}],s=1;return{sourcePort:o,targetPort:p,points:q,bezDegree:s}}function C(a,b){for(var c=[],d=1;da)return g.splice(c,0,{n:a,f:b}),h}return g.push({n:a,f:b}),h},h._eval=function(a,c){if(0!==c&&g.length){var d=g[c-1];return d.f(a,function(){return h._eval(a,c-1)})}return J.functor_wrap(h(),b)(a)},h.eval=function(a){return h._eval(a,g.length)},h.react=function(a){return arguments.length?(f=a,this):f},h};J.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var L={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();J.depth_first_traversal=function(a){return function(b,c){function d(b,c){var e=a.nodeid(b);return j[e]?void(a.skip&&a.skip(b,f[e])):(i[c]||(i[c]=[]),a.place&&a.place(b,c,i[c]),i[c].push(b),j[e]=!0,g[e]&&g[e].forEach(function(b,f){var i=h[a.targetid(b)];f&&a.sib&&a.sib(!1,h[a.targetid(g[e][f-1])],i),a.push&&a.push(),d(i,c+1)}),void(a.pop&&a.pop(b)))}a.init&&a.init(),a.tree&&(c=c.filter(function(b){return a.tree(b)}));var e,f={},g=c.reduce(function(b,c){var d=a.sourceid(c),e=a.targetid(c);return b[d]||(b[d]=[]),b[d].push(c),f[e]=(f[e]||0)+1,b},{}),h=b.reduce(function(b,c){var d=a.nodeid(c);return b[d]=c,b},{}),i=[],j={};a.root?e=b.filter(function(b){return a.root(b)}):(e=b.filter(function(b){return!f[a.nodeid(b)]}),b.length&&!e.length&&(e=[b[0]])),e.forEach(function(b,c){c&&a.sib&&a.sib(!0,e[c-1],b),a.push&&a.push(),d(b,a.row&&a.row(b)||0)}),a.finish(i)}};var N=1e-7,O={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};J.available_shapes=function(){var a=Object.keys(O);return a.slice(0,a.length-1)};var P={shape:"ellipse"};J.diagram=function(g,h){function k(a){return function(b){ba.layoutEngine()||ba.layoutAlgorithm("cola",!0),console.warn('Warning: dc_graph.diagram."'+a+'"is deprecated. Call the corresponding method on the layout engine instead.');var c=ba.layoutEngine();return c.getEngine&&(c=c.getEngine()),c[a](b),this}}function n(){ba.layoutEngine()||ba.layoutAlgorithm("cola",!0),ba.layoutEngine().init({width:ba.width(),height:ba.height()})}function o(a){return!!a.source&&!!a.target}function p(){return"none"!==ba.stageTransitions()?ba.transitionDuration()/2:ba.transitionDuration()}function q(a){return"none"===ba.stageTransitions()||"modins"===ba.stageTransitions()==!a?0:ba.transitionDuration()/2}function r(b,c){c.attr("stroke",ba.edgeStroke.eval).attr("stroke-width",ba.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=ba.edgeArrowhead.eval(a),c=R(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=ba.edgeArrowtail.eval(a),c=R(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+ba.arrowId(b,"head")+",#"+ba.arrowId(b,"tail")).attr("fill",ba.edgeStroke.eval(b))}),ba._updateNode(b)}function s(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){ba.isRunning()||ba.redraw()},0))}function x(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+ba.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+ba.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=B(ba,a.source,a.target,c,d,e,f,m,k,ba.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=E(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function y(a){x(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function A(a){var b=x(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function C(a){return function(b){var c=b.ports[a][b.parallel].path;return l(c.points,c.bezDegree)}}function D(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=T();i=ea.translate(),j=ea.scale(),n.forEach(function(a){switch(a){case"l":i[0]=U(i,o.left);break;case"t":i[1]=V(i,o.top);break;case"r":i[0]=W(i,o.right);break;case"b":i[1]=X(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ba.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ha.attr({viewBox:a,preserveAspectRatio:f})),ea.translate(i).scale(j).event(ha),ma.zoomed(i,j)}}function Q(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(o));var l={};c.each(function(a){l[ba.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var m=b.transition().duration(p()).delay(function(a){return q(l[ba.nodeKey.eval(a)])}).attr("opacity",ba.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var n={};e.each(function(a){n[ba.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ba.stageTransitions()?(A(b),c="new"):(y(b),c="old"),ba.edgeArrowhead.eval(b)&&a.select("#"+ba.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",C("modins"===ba.stageTransitions()?"new":"old"));var r=d.each(A).each(function(b){ba.edgeArrowhead.eval(b)&&a.select("#"+ba.arrowId(b,"head")).transition().duration(p()).delay(q(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(p()).delay(function(a){return q(n[ba.edgeKey.eval(a)])}).attr("opacity",ba.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ba.stageTransitions()&&n[ba.edgeKey.eval(a)]?"old":"new";return C(b)(a)});k.attr("d",D("modins"===ba.stageTransitions()?"new":"old"));var t=j.transition().duration(p()).delay(function(a){return q(n[ba.edgeKey.eval(a)])}).attr("opacity",ba.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ba.stageTransitions()&&n[ba.edgeKey.eval(a)]?"old":"new";return D(b)(a)});"insmod"===ba.stageTransitions()&&(p()>=50?(r=r.transition().duration(p()).attr("d",C("new")),t=t.transition().duration(p()).attr("d",D("new"))):(r.attr("d",C("new")),t.attr("d",C("new")))),ba.showLayoutSteps()||F([m,r,t],function(){s(!0)}),f.attr("d",C("new"))}function R(a,b,c){var d=ba.arrowId(a,b),e=ba.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*ba.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*ba.edgeArrowSize.eval(a)).attr("stroke",ba.edgeStroke.eval(a)).attr("fill",ba.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function S(a,b){ta=a,ua=b,ja.attr("transform","translate("+a+") scale("+b+")")}function T(){return{left:wa.left-ba.margins().left,top:wa.top-ba.margins().top,right:wa.right+ba.margins().right,bottom:wa.bottom+ba.margins().bottom}}function U(a,b){return a[0]-ba.x()(b)+ba.x().range()[0]}function V(a,b){return a[1]-ba.y()(b)+ba.y().range()[0]}function W(a,b){return a[0]-ba.x()(b)+ba.x().range()[1]}function X(a,b){return a[1]-ba.y()(b)+ba.y().range()[1]}function Y(){var b=a.event.translate;if(ba.restrictPan()){var c,d=ba.x().domain(),e=ba.y().domain(),f=T(),g=f.leftba.timeLimit())&&(console.log("cancelled"),ba.layoutEngine().stop())}).on("end",function(a,b){ba.showLayoutSteps()?s(!0):(ba.initialOnly()||c(a,b),Q(C,D,u,v,w,x,y,z,A,B));var d;switch(ba.autoZoom()){case"always":d=!0;break;case"once":d=!0,ba.autoZoom(null);break;default:d=!1}N(C,u),d&&O()}).on("start",function(){console.log("algo "+ba.layoutEngine().layoutAlgorithm()+" started."),ma.start()}),ba.initialOnly()?ba.layoutEngine().dispatch().end(g,h):(ma.start(),ba.layoutEngine().data(g.map(function(a){return a.cola}),I.map(function(a){return a.cola}),H,{groupConnected:ba.groupConnected()}),ba.layoutEngine().start({initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20})),this},ba.refresh=function(b,c,d,e,f){b=b||ka.selectAll(".node"),c=c||la.selectAll(".edge"),r(b,c),d=d||la.selectAll(".edge-hover"),e=e||la.selectAll(".edge-label"),f=f||ia.selectAll("path.edge-label-path");var g=a.select(null);Q(b,g,c,g,d,g,e,g,f,g)};var wa;return ba.render=function(){return ba.initLayoutOnRedraw()||n(),ba.resetSvg(),ja=ha.append("g").attr("class","draw"),la=ja.append("g").attr("class","edge-layer"),ka=ja.append("g").attr("class","node-layer"),ba.legend()&&ba.legend().render(),ba.redraw()},ba.on=function(a,b){return ma.on(a,b),this},ba.getStats=function(){return pa},ba.select=function(a){return ba.root().select(a)},ba.selectAll=function(a){return ba.root()?ba.root().selectAll(a):null},ba.x=K(null),ba.y=K(null),ba.svg=function(a){return arguments.length?(ha=a,ba):ha},ba.g=function(a){return arguments.length?(ja=a,ba):ja},ba.resetSvg=function(){return ba.select("svg").remove(),aa()},ba.redrawGroup=function(){c.redrawAll(h)},ba.renderGroup=function(){c.renderAll(h)},ba.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ba},ba.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ia.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ba.invertCoord=function(a){return[ba.x().invert(a[0]),ba.y().invert(a[1])]},ba.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ba.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ba.anchor=function(b,d){if(!arguments.length)return fa;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return fa=b.select&&b.classed?b.node():b,ba.root(a.select(fa)),ba.root().classed(J.constants.CHART_CLASS,!0),c.registerChart(ba,d),ga=d,ba},ba.chartID=function(){return ba.__dcFlag__},ba.anchorName=function(){var a=ba.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ba.chartID()},ba.anchor(g,h)},J.spawn_engine=function(a,b,c){var d,e,f=!0;switch(a){case"dagre":d=J.dagre_layout(),e=["rankdir"];break;case"tree":d=J.tree_layout(),e=[],f=!1;break;case"cola":default:d=J.cola_layout(), +e=["lengthStrategy"]}return e.forEach(function(a){b[a]&&d[a](b[a])}),f&&"false"!==c&&(d=J.webworker_layout(d)),d};var Q={};J.webworker_layout=function(b){var c=a.dispatch("init","start","tick","end"),d=F(b.layoutAlgorithm()),e={};d.layouts[b.layoutId()]=e,e.parent=function(a){b.parent&&b.parent(a)},e.init=function(a){return a=b.optionNames().reduce(function(a,c){return a[c]=b[c](),a},a),d.worker.postMessage({command:"init",args:{layoutId:b.layoutId(),options:a}}),this},e.data=function(a,c,e,f){d.worker.postMessage({command:"data",args:{layoutId:b.layoutId(),nodes:a,edges:c,constraints:e,options:f}})},e.start=function(a){d.worker.postMessage({command:"start",args:{layoutId:b.layoutId(),options:a}})},e.stop=function(){return d.worker.postMessage({command:"stop",args:{layoutId:b.layoutId()}}),this},e.getEngine=function(){return b};var f=["layoutAlgorithm","populateLayoutNode","populateLayoutEdge","rankdir","ranksep"];return f.forEach(function(a){e[a]=function(){var c=b[a].apply(b,arguments);return arguments.length?this:c}}),e.on=function(a,b){return c.on(a,b),this},e.dispatch=function(){return c},e},J.graphviz_attrs=function(){return{rankdir:K("TB"),ranksep:K(40)}},J.cola_layout=function(b){function c(a){switch(j=cola.d3adaptor().avoidOverlaps(!0).size([a.width,a.height]).handleDisconnected(a.handleDisconnected),j.tickSize&&j.tickSize(a.tickSize),a.lengthStrategy){case"symmetric":j.symmetricDiffLinkLengths(a.baseLength);break;case"jaccard":j.jaccardLinkLengths(a.baseLength);break;case"individual":j.linkDistance(function(b){return b.dcg_edgeLength||a.baseLength});break;case"none":}a.flowLayout&&j.flowLayout(a.flowLayout.axis,a.flowLayout.minSeparation)}function d(a,b,c,d){function e(a){k[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(l,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height,a.fixed=!!b.dcg_nodeFixed,a.fixed&&"object"==typeof b.dcg_nodeFixed?(a.x=b.dcg_nodeFixed.x,a.y=b.dcg_nodeFixed.y):(void 0!==b.x&&(a.x=b.x),void 0!==b.y&&(a.y=b.y))}),g=m(n,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.source=l[b.dcg_edgeSource],a.target=l[b.dcg_edgeTarget],a.dcg_edgeLength=b.dcg_edgeLength});f.forEach(function(a,b){a.index=b});var h=null;if(d.groupConnected){var i=cola.separateGraphs(f,g);h=i.map(function(a){return{leaves:a.array.map(function(a){return a.index})}})}j.on("tick",function(){e("tick")}).on("start",function(){k.start()}).on("end",function(){e("end")}),j.nodes(f).links(g).constraints(c).groups(h)}function e(a){j.start(a.initialUnconstrainedIterations,a.initialUserConstraintIterations,a.initialAllConstraintsIterations,a.gridSnapIterations)}function f(){j.stop()}var h,i=b||g(),j=null,k=a.dispatch("tick","start","end"),l={},n={},o=J.graphviz_attrs(),p=Object.keys(o);o.rankdir(null);var q=Object.assign(o,{layoutAlgorithm:function(){return"cola"},layoutId:function(){return i},parent:K(null),on:function(a,b){return k.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return["handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize"].concat(p)},populateLayoutNode:function(){},populateLayoutEdge:function(){},handleDisconnected:K(!0),lengthStrategy:K("symmetric"),baseLength:K(30),flowLayout:function(a){if(!arguments.length){if(h)return h;var b=q.rankdir();if(!b)return null;var c="LR"===b||"RL"===b?"x":"y";return{axis:c,minSeparation:q.ranksep()+2*q.parent().nodeRadius()}}return h=a,this},tickSize:K(1)});return q},J.cola_layout.scripts=["d3.js","cola.js"],J.dagre_layout=function(b){function c(a){k=new dagre.graphlib.Graph({multigraph:!0}),k.setGraph({rankdir:a.rankdir}),k.setDefaultEdgeLabel(function(){return{}})}function d(a,b,c,d){function e(a){l[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(n,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height},function(a,b){k.setNode(a,b)},function(a){k.removeNode(a)}),g=m(o,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.dcg_edgeSource=b.dcg_edgeSource,a.dcg_edgeTarget=b.dcg_edgeTarget},function(a,b,c){k.setEdge(c.dcg_edgeSource,c.dcg_edgeTarget,b)},function(a,b){k.removeEdge(b.dcg_edgeSource,b.dcg_edgeTarget,b.dcg_edgeKey)});h=function(){e("tick")},i=function(){e("end")}}function e(a){l.start(),dagre.layout(k),i()}function f(){}var h,i,j=b||g(),k=null,l=a.dispatch("tick","start","end"),n={},o={},p=J.graphviz_attrs(),q=Object.keys(p);return Object.assign(p,{layoutAlgorithm:function(){return"dagre"},layoutId:function(){return j},on:function(a,b){return l.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return q},populateLayoutNode:function(){},populateLayoutEdge:function(){}})},J.dagre_layout.scripts=["d3.js","dagre.js"],J.tree_layout=function(b){function c(b){function c(a,b){return(e(a)+e(b))/2}var d,e=a.functor(b.nodeWidth);h=J.depth_first_traversal({nodeid:function(a){return a.dcg_nodeKey},sourceid:function(a){return a.dcg_edgeSource},targetid:function(a){return a.dcg_edgeTarget},init:function(){d=b.offsetX},row:function(a){return a.dcg_rank},place:function(a,c,f){if(f.length){var g=f[f.length-1],h=(e(g)+e(a))/2;d=Math.max(d,g.left_x+h)}a.left_x=d,a.hit_ins=1,a.y=c*b.gapY+b.offsetY},sib:function(a,b,e){var f=c(b,e);a&&(f*=1.5),d+=f},pop:function(a){a.x=(a.left_x+d)/2},skip:function(a,b){a.x=(a.hit_ins*a.x+d)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,d=a.sort(function(a,b){return a.x-b.x}),e=null,f=null,g=0;g0&&--e;var j,k;if(g0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=K(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=K("n"),f.content=K(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=K(0),f},J.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=K(!0),b},J.edit_text=function(a,b,c){var d=c.position||{x:0,y:0};H(a.node(),d,c)},J.select_nodes=function(b){function c(a){return a.shiftKey}function d(a){return u?a.metaKey:a.ctrlKey}function e(a,b){return a.indexOf(b)>=0?a:a.concat([b])}function f(a,b){return a.indexOf(b)>=0?a.filter(function(a){return a!=b}):a.concat([b])}function g(a){return function(b){t=b,a.refresh()}}function i(a,b){a.svg().on("click.select-nodes",b?function(a){s.node_set_changed([])}:null)}function j(){c(a.event.sourceEvent)||d(a.event.sourceEvent)?p=t.slice():(p=[],s.node_set_changed([]))}function k(){var b,g=q.extent(),h=v.parent().selectAll("g.node").data().filter(function(a){return a&&g[0][0]=0}:function(a){return t.indexOf(a.orig.key)>=0};g.cascade(50,!0,h(l,null,b)),j.on("click.select-nodes",function(b){var h,i=g.nodeKey.eval(b);c(a.event)?h=e(t,i):d(a.event)?h=f(t,i):(1===t.length&&t[0]===i&&v.secondClickEvent()&&v.secondClickEvent()(a.select(this)),h=[i]),s.node_set_changed(h),a.event.stopPropagation()}),v.multipleSelect()?m(g):i(g,v.clickBackgroundClears());var n=j.data().map(function(a){return a.orig.key}),o=t.filter(function(a){return n.indexOf(a)>=0});t.length!==o.length&&s.node_set_changed(o)}function o(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var p,q,r,s=J.select_nodes_group("select-nodes-group"),t=[],u=navigator.platform.toUpperCase().indexOf("MAC")!==-1,v=J.behavior("select-nodes",{add_behavior:n,remove_behavior:o,parent:function(a){s.on("node_set_changed.select-nodes",a?g(a):null)}});return v.multipleSelect=K(!0),v.clickBackgroundClears=K(!0,!1).react(function(a){!v.multipleSelect()&&v.parent()&&i(v.parent(),a)}),v.secondClickEvent=K(null),v.noneIsAll=K(!1),v},J.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},J.filter_selection=function(){function b(b){return function(c){if(c.length){var d=a.set(c);b.nodeDimension().filterFunction(function(a){return d.has(a)})}else b.nodeDimension().filter(null);b.redrawGroup()}}var c=J.select_nodes_group("select-nodes-group"),d={parent:K(null).react(function(a){c.on("node_set_changed.filter-selection",a?b(a):null)})};return d},J.label_nodes=function(b){function c(a){return function(a){k=a,k.length&&g.node().focus()}}function d(a){return function(b,c){J.edit_text(a.svg(),b,{text:c.text||a.nodeLabel.eval(b.datum()),position:{x:b.datum().cola.x,y:b.datum().cola.y},selectText:c.selectText,accept:function(c){var d=b.datum();d.orig.value[h]=c,a.redraw()}})}}function e(b,c,d){g=b.svg().selectAll("a#label-nodes-input").data([1]),g.enter().append("a").attr({id:"label-nodes-input",href:"#"}),g.on("keyup.label-nodes",function(){if(k.length){if(1!==a.event.key.length)return;var d=c.filter(function(a){return b.nodeKey.eval(a)===k[0]});if(d.empty())return void console.error("couldn't find node '"+k[0]+"'!");if(d.size()>1)return void console.error("found too many nodes for '"+k[0]+"' ("+d.size()+")!");j.edit_node_label(d,{text:a.event.key,selectText:!1})}})}function f(a,b,c){a.root().select("a#label-nodes-input").remove()}if(!b.nodeCrossfilter)throw new Error("need nodeCrossfilter");var g,h=(b.idTag||"id",b.labelTag||"label"),i=J.select_nodes_group("select-nodes-group"),j=J.label_nodes_group("label-nodes-group"),k=[],l=J.behavior("label-nodes",{add_behavior:e,remove_behavior:f,parent:function(a){i.on("node_set_changed.label-nodes",a?c(a):null),j.on("edit_node_label.label-nodes",a?d(a):null)}});return l},J.label_nodes_group=function(b){return window.chart_registry.create_type("label-nodes",function(){return a.dispatch("edit_node_label")}),window.chart_registry.create_group("label-nodes",b)},J.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,d,e){c.cascade(100,!0,h(null,function(a){return a.dcg_highlighted},a)),d.on("mouseover.highlight-neighbors",function(a){e.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(d,e)}).on("mouseout.highlight-neighbors",function(a){b(e),c.refresh(d,e)})}function d(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return J.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},J.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},J.highlight_paths=function(a,b,c,d){function e(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function f(a,b){r=a,s=b,t=u=null,e()}function g(a){a!==u&&(u=a,e())}function i(a){a!==t&&(t=a,e())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(d,e,f,g){d.cascade(200,!0,h(function(a){return!!r[d.nodeKey.eval(a)]},function(a){return!!s[d.edgeKey.eval(a)]},a)).cascade(300,!0,h(function(a){return m(r[d.nodeKey.eval(a)],t)},function(a){return m(s[d.edgeKey.eval(a)],t)},c)).cascade(400,!0,h(function(a){return m(r[d.nodeKey.eval(a)],u)},function(a){return m(s[d.edgeKey.eval(a)],u)},b)),e.on("mouseover.highlight-paths",function(a){q.hover_changed(r[d.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[d.nodeKey.eval(a)]))}),g.on("mouseover.highlight-paths",function(a){q.hover_changed(s[d.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[d.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=J.register_highlight_paths_group(d||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=J.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?f:null),q.on("hover_changed."+b,a?g:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=K(!1),v},J.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.layoutEngine().rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return J.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},J.draw_graphs=function(b){function c(b){var c=b.root().node().getBoundingClientRect();return b.invertCoord([a.event.clientX-c.left,a.event.clientY-c.top])}function d(){var a=u.filter(function(a){return a.source&&a.target}),b=t.selectAll("line.hint-edge").data(a);b.exit().remove(),b.enter().append("line").attr("class","hint-edge").style({fill:"none",stroke:"black","pointer-events":"none"}),b.attr({x1:function(a){return a.source.x},y1:function(a){return a.source.y},x2:function(a){return a.target.x},y2:function(a){return a.target.y}})}function e(){u=[],r=s=null,d()}function f(a,c){var d={};d[m]=g(),d[p]="",d[q]={x:c[0],y:c[1]},b.nodeCrossfilter.add([d]),a.redraw(),k.node_set_changed([d[m]])}function h(a,c,d){e();var f={};f[m]=g(),f[n]=c.orig.key,f[o]=d.orig.key,c.orig.value[q]=null,d.orig.value[q]=null,b.edgeCrossfilter.add([f]),a.redraw(),k.node_set_changed([])}function i(b,g,i,j){var k=b.child("select-nodes");k&&(k.clickBackgroundClears(!1),k.secondClickEvent(function(a){l.edit_node_label(a,{selectText:!0})})),g.on("mousedown.draw-graphs",function(b){a.event.stopPropagation(),r=b,u=[{source:{x:r.cola.x,y:r.cola.y}}]}).on("mousemove.draw-graphs",function(b){a.event.stopPropagation(),r&&(b===r?(s=null,u[0].target=null):b!==s&&(s=b,u[0].target={x:s.cola.x,y:s.cola.y}),d())}).on("mouseup.draw-graphs",function(c){a.event.stopPropagation(),r&&s?h(b,r,s):e()}),b.svg().on("mousedown.draw-graphs",function(){r=null}).on("mousemove.draw-graphs",function(){if(r){var a=c(b);s=null,u[0].target={x:a[0],y:a[1]},d()}}).on("mouseup.draw-graphs",function(){r?e():f(b,c(b))}),t||(t=b.g().append("g").attr("class","draw-graphs"))}function j(a,b,c,d){b.on("mousedown.draw-graphs",null).on("mousemove.draw-graphs",null).on("mouseup.draw-graphs",null),a.svg().on("mousedown.draw-graphs",null).on("mousemove.draw-graphs",null).on("mouseup.draw-graphs",null)}if(!b.nodeCrossfilter)throw new Error("need nodeCrossfilter");if(!b.edgeCrossfilter)throw new Error("need edgeCrossfilter");var k=J.select_nodes_group("select-nodes-group"),l=J.label_nodes_group("label-nodes-group"),m=b.idTag||"id",n=b.sourceTag||"source",o=b.targetTag||"target",p=b.labelTag||"label",q=b.fixedPosTag||"fixedPos",r=null,s=null,t=null,u=[],v=J.behavior("highlight-paths",{add_behavior:i,remove_behavior:j});return v.doRedraw=K(!1),v},J.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},J.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!I(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&I(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},J.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}();var R=function(a,b,d,e,f,h){if(f=f||0,b.length>(d.valuesByAttr?1:0)){var i=b.shift(),j=[],k=[],l=a.map(function(a){var c=a[d.nestKey],l=d.nestKeysUnique?c:g();if(l){var m;if(d.ancestorKeys?(h=h||{},i&&(h[i]=c),m=Object.assign({},h)):m={},m[d.nodeKey]=l,d.label&&d.labelFun&&(m[d.label]=d.labelFun(c,i,a)),d.level&&(m[d.level]=f+1),j.push(m),e){var n={};n[d.edgeSource]=e,n[d.edgeTarget]=l,k.push(n)}}var o=d.valuesByAttr?a[b[0]]:a.values,p=R(o,b.slice(0),d,l,f+1,Object.assign({},h));return p});return{nodes:Array.prototype.concat.apply(j,l.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(k,l.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a=Object.assign({},a),d.level&&(a[d.level]=f+1),a}),edges:a.map(function(a){var b={};return b[d.edgeSource]=e,b[d.edgeTarget]=a[d.nodeKey],b})}};return J.convert_tree=function(a,b,c){return c=Object.assign({nodeKey:"key",edgeKey:"key",edgeSource:"sourcename",edgeTarget:"targetname",nestKey:"key"},c),Array.isArray(a)?R(a,b,c,c.root,0,c.inherit):(b=[""].concat(b),R([a],b,c,c.root,0,c.inherit))},J.convert_nest=function(a,b,c,d,e,f,g){return J.convert_tree(a,b,{nodeKey:c,edgeSource:d,edgeTarget:e,root:f,inherit:g,ancestorKeys:!0,label:"name",labelFun:function(a,b,c){return b+":"+a},level:"_level"})},J.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=g()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},J.path_reader=function(a){function b(a,b,c){h.elementList.eval(a).forEach(function(d){var e,f;switch(h.elementType.eval(d)){case"node":e=h.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=h.edgeSource.eval(d)+"-"+h.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,f,g=J.register_highlight_paths_group(a||"highlight-paths-group"),h={pathList:K(e,!1),timeRange:K(null,!1),elementList:K(e,!1),elementType:K(null,!1),nodeKey:K(null,!1),edgeSource:K(null,!1),edgeTarget:K(null,!1),clear:function(){g.paths_changed({},{},[])},data:function(a){var e,i={},j={},k=[];h.pathList.eval(a).forEach(function(a){if(a._range=h.timeRange.eval(a)){if(e===!1)throw new Error("can't have a mix of ranged and non-ranged paths");e=!0}else{if(e===!0)throw new Error("can't have a mix of ranged and non-ranged paths");e=!1,b(a,i,j)}k.push(a)}),e?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),f&&this.setTime(f)):(c=null,d=null,g.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],e={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,e,h)}),g.paths_changed(e,h,c)}f=a}};return h},J.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){ +m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=J.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:K("Nothing here"),zero_text:K("No paths"),error_text:K(null),queried:K(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},J.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return J.node_name(Math.floor(a/52))+J.node_name(a%52);throw new Error("no, that's too large")},J.node_object=function(a,b){return b=b||{},_.extend({id:a,name:J.node_name(a)},b)},J.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},J.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;g0;){var g,h,i=Math.random();if(g=!d.length||ib&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},J.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},J.d3=a,J.crossfilter=b,J.dc=c,J}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); //# sourceMappingURL=dc.graph.min.js.map \ No newline at end of file diff --git a/dc.graph.min.js.map b/dc.graph.min.js.map index 9fa8d683..09e430f3 100644 --- a/dc.graph.min.js.map +++ b/dc.graph.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","get_original","x","orig","identity","deprecated_property","message","defaultValue","prop","property","ret","arguments","length","console","warn","apply","this","forEach","method","uuid","replace","c","r","Math","random","v","toString","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","error","compose","f","g","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","create_worker","layoutAlgorithm","_workers","worker","Worker","script_path","layouts","onmessage","e","layoutId","data","dispatch","response","args","align_f","axis","type","listname","can_get_graph_from_this","nodes","vertices","edges","links","version","constants","CHART_CLASS","unwrap","undefined","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","place_tree","nodeid","placed","skip","indegree","rows","place","outmap","ei","nmap","targetid","sib","pop","init","tree","filter","roots","reduce","m","tail","sourceid","head","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","diagram","parent","chartGroup","deprecate_layout_algo_parameter","name","_chart","layoutEngine","engine","getEngine","initLayout","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","nodeKey","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","edgeSource","sourceAccessor","sourcename","edgeTarget","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","lengthStrategy","edgeLength","edgeDistanceAccessor","distance","flowLayout","rankdir","baseLength","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","skipWarning","cola_layout","dagre_layout","webworker_layout","tickSize","edgeId","textpathId","getNode","handleDisconnected","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","stop","quicksort","by","wnodes","v1","dcg_nodeFixed","populateLayoutNode","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","populateLayoutEdge","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","elapsed","do_zoom","start","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_worker","options","optionNames","option","postMessage","command","passthroughs","graphviz_attrs","ranksep","_d3cola","d3adaptor","avoidOverlaps","symmetricDiffLinkLengths","jaccardLinkLengths","linkDistance","minSeparation","dispatchState","fixed","dgc_nodeFixed","groups","components","separateGraphs","leaves","array","gridSnapIterations","_flowLayout","_layoutId","graphviz","graphviz_keys","bind","flow","_dagreGraph","dagre","graphlib","Graph","multigraph","setGraph","setDefaultEdgeLabel","setNode","removeNode","setEdge","removeEdge","_tick","_done","layout","tree_layout","best_dist","nodeWidth","functor","_dfs","offsetX","dcg_rank","left_x","hit_ins","gapY","offsetY","isroot","want","badi","badl","limit","extra","opts","rowFunction","_items","_legend","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_positions","rootf","rowf","treef","ofsx","ofsy","nwidth","ygap","dfs","tree_constraints","xgap","foo_x","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_tree_helper","inherit","valuesByAttr","shift","children","nestKey","childKey","nestKeysUnique","ancestorKeys","labelFun","values","recurse","prototype","pluck","convert_tree","isArray","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file +{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","get_original","x","orig","identity","deprecated_property","message","defaultValue","prop","property","ret","arguments","length","console","warn","apply","this","forEach","method","uuid","replace","c","r","Math","random","v","toString","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","error","compose","f","g","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","create_worker","layoutAlgorithm","_workers","worker","Worker","script_path","layouts","onmessage","e","layoutId","data","dispatch","response","args","align_f","axis","type","listname","edittext","svg","position","options","accept","textdiv","innerText","onblur","myforeign","remove","cancel","createElement","text","textnode","createTextNode","appendChild","setAttribute","setAttributeNS","onkeydown","event","keyCode","preventDefault","onkeyup","focus","range","createRange","selectText","selectNodeContents","setStart","setEnd","window","getSelection","removeAllRanges","addRange","can_get_graph_from_this","nodes","vertices","edges","links","version","constants","CHART_CLASS","unwrap","undefined","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","place_tree","nodeid","placed","skip","indegree","rows","place","outmap","ei","nmap","targetid","sib","pop","init","tree","filter","roots","reduce","m","tail","sourceid","head","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","diagram","parent","chartGroup","deprecate_layout_algo_parameter","name","_chart","layoutEngine","engine","getEngine","initLayout","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","zoomed","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","nodeKey","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","enableZoom","on","disableZoom","generateSvg","append","_defs","linear","behavior","zoom","mouseZoomable","altKeyZoom","marginMixin","__dcFlag__","utils","uniqueId","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","_nodeLayer","_edgeLayer","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","edgeSource","sourceAccessor","sourcename","edgeTarget","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","lengthStrategy","edgeLength","edgeDistanceAccessor","distance","flowLayout","rankdir","baseLength","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","skipWarning","cola_layout","dagre_layout","webworker_layout","tickSize","anchorName","edgeId","textpathId","getNode","handleDisconnected","_enterNode","changedShape","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","stop","quicksort","by","wnodes","v1","dcg_nodeFixed","populateLayoutNode","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","populateLayoutEdge","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","elapsed","do_zoom","start","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","chartID","spawn_engine","layout","params","allow_webworker","tree_layout","_worker","optionNames","option","postMessage","command","passthroughs","graphviz_attrs","ranksep","_d3cola","d3adaptor","avoidOverlaps","symmetricDiffLinkLengths","jaccardLinkLengths","linkDistance","minSeparation","dispatchState","fixed","groups","components","separateGraphs","leaves","array","gridSnapIterations","_flowLayout","_layoutId","graphviz","graphviz_keys","bind","flow","_dagreGraph","dagre","graphlib","Graph","multigraph","setGraph","setDefaultEdgeLabel","setNode","removeNode","setEdge","removeEdge","_tick","_done","best_dist","nodeWidth","functor","_dfs","offsetX","dcg_rank","left_x","hit_ins","gapY","offsetY","isroot","want","badi","badl","limit","extra","opts","rowFunction","_items","_legend","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_positions","rootf","rowf","treef","ofsx","ofsy","nwidth","ygap","dfs","tree_constraints","xgap","foo_x","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","rowsEnter","outerHTML","edit_text","selection","select_nodes","isUnion","shiftKey","isToggle","is_a_mac","metaKey","ctrlKey","add_array","toggle_array","selection_changed","_selected","background_click_event","select_nodes_group","node_set_changed","brushstart","sourceEvent","_oldSelected","brushmove","newSelected","ext","_brush","rectSelect","brushend","_gBrush","clear","install_brush","brush","condition","noneIsAll","secondClickEvent","stopPropagation","multipleSelect","clickBackgroundClears","present","now_selected","navigator","platform","toUpperCase","brushgroup","chart_registry","create_type","create_group","filter_selection","set","filterFunction","has","label_nodes","selection_changed_listener","_input_anchor","edit_node_label_listener","datum","_labelTag","href","label_nodes_group","edit_node_label","nodeCrossfilter","idTag","labelTag","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","dcg_dblclk_timeout","draw_graphs","event_coords","update_hint","_hintData","style","pointer-events","erase_hint","_sourceDown","_targetMove","create_node","_idTag","_fixedPosTag","create_edge","_sourceTag","_targetTag","edgeCrossfilter","coords","sourceTag","targetTag","fixedPosTag","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_tree_helper","inherit","valuesByAttr","shift","children","nestKey","childKey","nestKeysUnique","ancestorKeys","labelFun","values","recurse","prototype","pluck","convert_tree","isArray","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","random_graph","new_node","nodeKeyGen","colorTag","ncolors","random_node","sourceKey","edgeKeyGen","newComponentProb","newNodeProb","newNodProb","n1","choice","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file diff --git a/package.json b/package.json index 31e892e6..16fe0ac8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dc.graph", - "version": "0.4.0", + "version": "0.4.1", "license": "Apache-2.0", "copyright": "2017", "description": "Graph visualizations integrated with crossfilter and dc.js", @@ -24,7 +24,7 @@ "url": "https://github.com/dc-js/dc.graph.js.git" }, "dependencies": { - "crossfilter": "1.x", + "crossfilter2": "~1.4.0-alpha.1", "dc": "~2.1.0", "dagre": "0.7.x", "d3": "3.x", diff --git a/src/cola_layout.js b/src/cola_layout.js index c08028bd..093cd315 100644 --- a/src/cola_layout.js +++ b/src/cola_layout.js @@ -50,11 +50,11 @@ dc_graph.cola_layout = function(id) { v1.dcg_nodeKey = v.dcg_nodeKey; v1.width = v.width; v1.height = v.height; - v1.fixed = !!v.dgc_nodeFixed; + v1.fixed = !!v.dcg_nodeFixed; - if(typeof v.dgc_nodeFixed === 'object') { - v1.x = v.dgc_nodeFixed.x; - v1.y = v.dgc_nodeFixed.y; + if(v1.fixed && typeof v.dcg_nodeFixed === 'object') { + v1.x = v.dcg_nodeFixed.x; + v1.y = v.dcg_nodeFixed.y; } else { // should we support e.g. null to unset x,y? diff --git a/src/depth_first_traversal.js b/src/depth_first_traversal.js index 56151325..8c782bbf 100644 --- a/src/depth_first_traversal.js +++ b/src/depth_first_traversal.js @@ -60,7 +60,7 @@ dc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree if(ni && callbacks.sib) callbacks.sib(true, roots[ni-1], n); callbacks.push && callbacks.push(); - place_tree(n, callbacks.row ? callbacks.row(n) : 0); + place_tree(n, callbacks.row && callbacks.row(n) || 0); }); callbacks.finish(rows); }; diff --git a/src/diagram.js b/src/diagram.js index fe38d839..613f270a 100644 --- a/src/diagram.js +++ b/src/diagram.js @@ -16,17 +16,19 @@ * @return {dc_graph.diagram} **/ dc_graph.diagram = function (parent, chartGroup) { - // different enough from regular dc charts that we don't use bases + // different enough from regular dc charts that we don't use dc.baseMixin + // but attempt to implement most of that interface, copying some of the most basic stuff var _chart = dc.marginMixin({}); + _chart.__dcFlag__ = dc.utils.uniqueId(); var _svg = null, _defs = null, _g = null, _nodeLayer = null, _edgeLayer = null; - var _dispatch = d3.dispatch('end', 'start', 'drawn'); + var _dispatch = d3.dispatch('end', 'start', 'drawn', 'zoomed'); var _nodes = {}, _edges = {}; // hold state between runs var _stats = {}; var _nodes_snapshot, _edges_snapshot; var _children = {}, _arrows = {}; var _running = false; // for detecting concurrency issues var _translate = [0,0], _scale = 1; - var _zoom, _xScale, _yScale; + var _zoom; var _anchor, _chartGroup; function deprecate_layout_algo_parameter(name) { @@ -98,6 +100,17 @@ dc_graph.diagram = function (parent, chartGroup) { **/ _chart.mouseZoomable = property(true); + /** + * Whether zooming should only be enabled when the alt key is pressed. + * @method altKeyZoom + * @memberof dc_graph.diagram + * @instance + * @param {Boolean} [altKeyZoom=true] + * @return {Boolean} + * @return {dc_graph.diagram} + **/ + _chart.altKeyZoom = property(false); + /** * Set or get the fitting strategy for the canvas, which affects how the * [viewBox](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox) and @@ -1018,16 +1031,19 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.tickSize = deprecate_layout_algo_parameter('tickSize'); + _chart.uniqueId = function() { + return _chart.anchorName().replace(/[ .#=\[\]"]/g, '-'); + }; + _chart.edgeId = function(d) { return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\w-_]/g, '-'); }; _chart.arrowId = function(d, kind) { - return 'arrow-' + kind + '-' + _chart.edgeId(d); + return 'arrow-' + kind + '-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; - _chart.textpathId = function(d) { - return 'textpath-' + _chart.edgeId(d); + return 'textpath-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; // this kind of begs a (meta)graph ADT @@ -1773,6 +1789,7 @@ dc_graph.diagram = function (parent, chartGroup) { }); } _zoom.translate(translate).scale(scale).event(_svg); + _dispatch.zoomed(translate, scale); } } @@ -1912,9 +1929,12 @@ dc_graph.diagram = function (parent, chartGroup) { if(!_chart.initLayoutOnRedraw()) initLayout(); _chart.resetSvg(); - _g = _svg.append('g'); - _edgeLayer = _g.append('g'); - _nodeLayer = _g.append('g'); + _g = _svg.append('g') + .attr('class', 'draw'); + _edgeLayer = _g.append('g') + .attr('class', 'edge-layer'); + _nodeLayer = _g.append('g') + .attr('class', 'node-layer'); if(_chart.legend()) _chart.legend().render(); @@ -2003,7 +2023,35 @@ dc_graph.diagram = function (parent, chartGroup) { /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} - * method. Returns the top svg element for this specific chart. You can also pass in a new + * method. Gets or sets the x scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.x = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Gets or sets the y scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.y = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Returns the top `svg` element for this specific chart. You can also pass in a new * svg element, but setting the svg element on a diagram may have unexpected consequences. * @method svg * @memberof dc_graph.diagram @@ -2021,6 +2069,27 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the top `g` element for this specific chart. This method is usually used to + * retrieve the g element in order to overlay custom svg drawing + * programatically. **Caution**: The root g element is usually generated internally, and + * resetting it might produce unpredictable results. + * @method g + * @memberof dc_graph.diagram + * @instance + * @param {d3.selection} [selection] + * @return {d3.selection} + * @return {dc_graph.diagram} + + **/ + _chart.g = function (_) { + if (!arguments.length) { + return _g; + } + _g = _; + return _chart; + }; + /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} @@ -2151,22 +2220,22 @@ dc_graph.diagram = function (parent, chartGroup) { // with thanks to comments in https://github.com/d3/d3/issues/1084 function align_left(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[0]; + return translate[0] - _chart.x()(x) + _chart.x().range()[0]; } function align_top(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[0]; + return translate[1] - _chart.y()(y) + _chart.y().range()[0]; } function align_right(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[1]; + return translate[0] - _chart.x()(x) + _chart.x().range()[1]; } function align_bottom(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[1];; + return translate[1] - _chart.y()(y) + _chart.y().range()[1];; } function doZoom() { var translate = d3.event.translate; if(_chart.restrictPan()) { - var xDomain = _xScale.domain(), yDomain = _yScale.domain(); + var xDomain = _chart.x().domain(), yDomain = _chart.y().domain(); var bounds = margined_bounds(); var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1], lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]); @@ -2227,25 +2296,45 @@ dc_graph.diagram = function (parent, chartGroup) { } } + function enableZoom() { + _svg.call(_zoom); + _svg.on('dblclick.zoom', null); + } + function disableZoom() { + _svg.on('.zoom', null); + } + function generateSvg() { _svg = _chart.root().append('svg'); resizeSvg(); _defs = _svg.append('svg:defs'); + // start out with 1:1 zoom + if(!_chart.x()) + _chart.x(d3.scale.linear() + .domain([0, _chart.width()]) + .range([0, _chart.width()])); + if(!_chart.y()) + _chart.y(d3.scale.linear() + .domain([0, _chart.height()]) + .range([0, _chart.height()])); + _zoom = d3.behavior.zoom() + .on('zoom', doZoom) + .x(_chart.x()).y(_chart.y()); if(_chart.mouseZoomable()) { - // start out with 1:1 zoom - _xScale = d3.scale.linear() - .domain([0, _chart.width()]) - .range([0, _chart.width()]); - _yScale = d3.scale.linear() - .domain([0, _chart.height()]) - .range([0, _chart.height()]); - _zoom = d3.behavior.zoom() - .on('zoom', doZoom) - .x(_xScale).y(_yScale); - _svg.call(_zoom); - _svg.on('dblclick.zoom', null); + if(_chart.altKeyZoom()) { + d3.select(document) + .on('keydown', function() { + if(d3.event.key === 'Alt') + enableZoom(); + }) + .on('keyup', function() { + if(d3.event.key === 'Alt') + disableZoom(); + }); + } + else enableZoom(); } return _svg; @@ -2253,8 +2342,8 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.invertCoord = function(clientCoord) { return [ - _xScale.invert(clientCoord[0]), - _yScale.invert(clientCoord[1]) + _chart.x().invert(clientCoord[0]), + _chart.y().invert(clientCoord[1]) ]; }; @@ -2305,6 +2394,17 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the internal numeric ID of the chart. + * @method chartID + * @memberof dc.baseMixin + * @instance + * @returns {String} + */ + _chart.chartID = function () { + return _chart.__dcFlag__; + }; + /** * Returns the DOM id for the chart's anchored location. * @method anchorName diff --git a/src/draw_graphs.js b/src/draw_graphs.js new file mode 100644 index 00000000..c5bb0a39 --- /dev/null +++ b/src/draw_graphs.js @@ -0,0 +1,153 @@ +dc_graph.draw_graphs = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + if(!options.edgeCrossfilter) + throw new Error('need edgeCrossfilter'); + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _idTag = options.idTag || 'id', + _sourceTag = options.sourceTag || 'source', + _targetTag = options.targetTag || 'target', + _labelTag = options.labelTag || 'label', + _fixedPosTag = options.fixedPosTag || 'fixedPos'; + + var _sourceDown = null, _targetMove = null, _edgeLayer = null, _hintData = []; + + function event_coords(chart) { + var bound = chart.root().node().getBoundingClientRect(); + return chart.invertCoord([d3.event.clientX - bound.left, + d3.event.clientY - bound.top]); + } + + function update_hint() { + var data = _hintData.filter(function(h) { + return h.source && h.target; + }); + var line = _edgeLayer.selectAll('line.hint-edge').data(data); + line.exit().remove(); + line.enter().append('line') + .attr('class', 'hint-edge') + .style({ + fill: 'none', + stroke: 'black', + 'pointer-events': 'none' + }); + + line.attr({ + x1: function(d) { return d.source.x; }, + y1: function(d) { return d.source.y; }, + x2: function(d) { return d.target.x; }, + y2: function(d) { return d.target.y; } + }); + } + + function erase_hint() { + _hintData = []; + _sourceDown = _targetMove = null; + update_hint(); + } + + function create_node(chart, pos) { + var node = {}; + node[_idTag] = uuid(); + node[_labelTag] = ''; + node[_fixedPosTag] = {x: pos[0], y: pos[1]}; + options.nodeCrossfilter.add([node]); + chart.redraw(); + select_nodes_group.node_set_changed([node[_idTag]]); + } + + function create_edge(chart, source, target) { + erase_hint(); + var edge = {}; + edge[_idTag] = uuid(); + edge[_sourceTag] = source.orig.key; + edge[_targetTag] = target.orig.key; + // changing this data inside crossfilter is okay because it is not indexed data + source.orig.value[_fixedPosTag] = null; + target.orig.value[_fixedPosTag] = null; + options.edgeCrossfilter.add([edge]); + chart.redraw(); + select_nodes_group.node_set_changed([]); + } + + function add_behavior(chart, node, edge, ehover) { + var select_nodes = chart.child('select-nodes'); + if(select_nodes) { + select_nodes.clickBackgroundClears(false); + select_nodes.secondClickEvent(function(node) { + label_nodes_group.edit_node_label(node, {selectText: true}); + }); + } + node + .on('mousedown.draw-graphs', function(d) { + d3.event.stopPropagation(); + _sourceDown = d; + _hintData = [{source: {x: _sourceDown.cola.x, y: _sourceDown.cola.y}}]; + }) + .on('mousemove.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown) { + if(d === _sourceDown) { + _targetMove = null; + _hintData[0].target = null; + } + else if(d !== _targetMove) { + _targetMove = d; + _hintData[0].target = {x: _targetMove.cola.x, y: _targetMove.cola.y}; + } + update_hint(); + } + }) + .on('mouseup.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown && _targetMove) + create_edge(chart, _sourceDown, _targetMove); + else + erase_hint(); + }); + chart.svg() + .on('mousedown.draw-graphs', function() { + _sourceDown = null; + }) + .on('mousemove.draw-graphs', function() { + var data = []; + if(_sourceDown) { // drawing edge + var coords = event_coords(chart); + _targetMove = null; + _hintData[0].target = {x: coords[0], y: coords[1]}; + update_hint(); + } + }) + .on('mouseup.draw-graphs', function() { + if(_sourceDown) // drag-edge + erase_hint(); + else // click-node + create_node(chart, event_coords(chart)); + }); + if(!_edgeLayer) + _edgeLayer = chart.g().append('g').attr('class', 'draw-graphs'); + } + + function remove_behavior(chart, node, edge, ehover) { + node + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + chart.svg() + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + } + + var _behavior = dc_graph.behavior('highlight-paths', { + add_behavior: add_behavior, + remove_behavior: remove_behavior + }); + + // whether to do relayout & redraw (true) or just refresh (false) + _behavior.doRedraw = property(false); + + return _behavior; +}; + diff --git a/src/edit_text.js b/src/edit_text.js new file mode 100644 index 00000000..02f5676b --- /dev/null +++ b/src/edit_text.js @@ -0,0 +1,62 @@ +// adapted from +// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652 + +function edittext(svg, position, options) { + var myforeign = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); + var textdiv = document.createElement("div"); + var text = options.text || "type on me"; + var textnode = document.createTextNode(text); + textdiv.appendChild(textnode); + textdiv.setAttribute("contentEditable", "true"); + textdiv.setAttribute("width", "auto"); + textdiv.setAttribute("style", "display: inline-block; background-color: white; padding: 2px"); //to make div fit text + myforeign.setAttribute("width", "100%"); + myforeign.setAttribute("height", "100%"); + myforeign.setAttribute("style", "text-align: left"); //to make div fit text + myforeign.setAttributeNS(null, "transform", "translate(" + position.x + " " + position.y + ")"); + svg.appendChild(myforeign); + myforeign.appendChild(textdiv); + + function accept() { + options.accept && options.accept(textdiv.innerText); + textdiv.onblur = null; + myforeign.remove(); + } + function cancel() { + options.cancel && options.cancel(); + textdiv.onblur = null; + myforeign.remove(); + } + + textdiv.onkeydown = function(event) { + if(event.keyCode===13) { + event.preventDefault(); + } + }; + textdiv.onkeyup = function(event) { + if(event.keyCode===13) { + accept(); + } else if(event.keyCode===27) { + cancel(); + } + }; + textdiv.onblur = cancel; + textdiv.focus(); + + var range = document.createRange(); + if(options.selectText) { + range.selectNodeContents(textdiv); + } else { + range.setStart(textdiv, text.length); + range.setEnd(textdiv, text.length); + } + var sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); +} + +dc_graph.edit_text = function(svg, selection, options) { + var position = options.position || {x: 0, y: 0}; + edittext(svg.node(), position, options); +}; + diff --git a/src/engine.js b/src/engine.js new file mode 100644 index 00000000..86a0b470 --- /dev/null +++ b/src/engine.js @@ -0,0 +1,27 @@ +dc_graph.spawn_engine = function(layout, args, worker) { + var allow_webworker = true; + var engine, params; + switch(layout) { + case 'dagre': + engine = dc_graph.dagre_layout(); + params = ['rankdir']; + break; + case 'tree': + engine = dc_graph.tree_layout(); + params = []; + allow_webworker = false; + break; + case 'cola': + default: + engine = dc_graph.cola_layout(); + params = ['lengthStrategy']; + break; + } + params.forEach(function(p) { + if(args[p]) + engine[p](args[p]); + }); + if(allow_webworker && worker !== 'false') + engine = dc_graph.webworker_layout(engine); + return engine; +}; diff --git a/src/filter_selection.js b/src/filter_selection.js new file mode 100644 index 00000000..74748973 --- /dev/null +++ b/src/filter_selection.js @@ -0,0 +1,22 @@ +dc_graph.filter_selection = function() { + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); + + function selection_changed(chart) { + return function(selection) { + if(selection.length) { + var set = d3.set(selection); + chart.nodeDimension().filterFunction(function(k) { + return set.has(k); + }); + } else chart.nodeDimension().filter(null); + chart.redrawGroup(); + }; + } + + var _behavior = { + parent: property(null).react(function(p) { + select_nodes_group.on('node_set_changed.filter-selection', p ? selection_changed(p) : null); + }) + }; + return _behavior; +}; diff --git a/src/generate.js b/src/generate.js index bcca32ab..3a71517d 100644 --- a/src/generate.js +++ b/src/generate.js @@ -84,3 +84,62 @@ dc_graph.wheel_edges = function(namef, nindices, R) { } return edges; }; + +dc_graph.random_graph = function(options) { + options = Object.assign({ + ncolors: 5, + nodeKey: 'key', + edgeKey: 'key', + sourceKey: 'sourcename', + targetKey: 'targetname', + colorTag: 'color', + nodeKeyGen: function(i) { return 'n' + i; }, + edgeKeyGen: function(i) { return 'e' + i; }, + newComponentProb: 0.1, + newNodeProb: 0.9 + }, options); + if(isNaN(options.newNodeProb)) + options.newNodeProb = 0.9; + if(options.newNodProb <= 0) + options.newNodeProb = 0.1; + var _nodes = [], _edges = []; + function new_node() { + var n = {}; + n[options.nodeKey] = options.nodeKeyGen(_nodes.length); + n[options.colorTag] = Math.floor(Math.random()*options.ncolors); + _nodes.push(n); + return n; + } + function random_node() { + return _nodes[Math.floor(Math.random()*_nodes.length)]; + } + return { + nodes: function() { + return _nodes; + }, + edges: function() { + return _edges; + }, + generate: function(N) { + while(N-- > 0) { + var choice = Math.random(); + var n1, n2; + if(!_nodes.length || choice < options.newComponentProb) + n1 = new_node(); + else + n1 = random_node(); + if(choice < options.newNodeProb) + n2 = new_node(); + else + n2 = random_node(); + if(n1 && n2) { + var edge = {}; + edge[options.edgeKey] = options.edgeKeyGen(_edges.length); + edge[options.sourceKey] = n1[options.nodeKey]; + edge[options.targetKey] = n2[options.nodeKey]; + _edges.push(edge); + } + } + } + }; +}; diff --git a/src/label_nodes.js b/src/label_nodes.js new file mode 100644 index 00000000..1d2a633f --- /dev/null +++ b/src/label_nodes.js @@ -0,0 +1,86 @@ +dc_graph.label_nodes = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + var _idTag = options.idTag || 'id', + _labelTag = options.labelTag || 'label'; + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _selected = []; + var _input_anchor; + + function selection_changed_listener(chart) { + return function(selection) { + _selected = selection; + if(_selected.length) + _input_anchor.node().focus(); + }; + } + + function edit_node_label_listener(chart) { + return function(node, options) { + dc_graph.edit_text( + chart.svg(), + node, + { + text: options.text || chart.nodeLabel.eval(node.datum()), + position: {x: node.datum().cola.x, y: node.datum().cola.y}, + selectText: options.selectText, + accept: function(text) { + var d = node.datum(); + d.orig.value[_labelTag] = text; + chart.redraw(); + } + }); + }; + } + + function add_behavior(chart, node, edge) { + _input_anchor = chart.svg().selectAll('a#label-nodes-input').data([1]); + _input_anchor.enter() + .append('a').attr({ + id: 'label-nodes-input', + href: '#' + }); + _input_anchor.on('keyup.label-nodes', function() { + if(_selected.length) { + // printable characters should start edit + if(d3.event.key.length !== 1) + return; + var n2 = node.filter(function(d) { + return chart.nodeKey.eval(d) === _selected[0]; + }); + if(n2.empty()) { + console.error("couldn't find node '" + _selected[0] + "'!"); + return; + } + if(n2.size()>1) { + console.error("found too many nodes for '" + _selected[0] + "' (" + n2.size() + ")!"); + return; + } + label_nodes_group.edit_node_label(n2, {text: d3.event.key, selectText: false}); + } + }); + } + + function remove_behavior(chart, node, edge) { + chart.root().select('a#label-nodes-input').remove(); + } + + var _behavior = dc_graph.behavior('label-nodes', { + add_behavior: add_behavior, + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.label-nodes', p ? selection_changed_listener(p) : null); + label_nodes_group.on('edit_node_label.label-nodes', p ? edit_node_label_listener(p) : null); + } + }); + return _behavior; +}; + +dc_graph.label_nodes_group = function(brushgroup) { + window.chart_registry.create_type('label-nodes', function() { + return d3.dispatch('edit_node_label'); + }); + + return window.chart_registry.create_group('label-nodes', brushgroup); +}; diff --git a/src/select_nodes.js b/src/select_nodes.js index 370d7a26..a6b01e94 100644 --- a/src/select_nodes.js +++ b/src/select_nodes.js @@ -1,30 +1,109 @@ -// this currently only supports single selection with a click -// but it can be expanded with modifier-key clicks and rectangular selection etc. dc_graph.select_nodes = function(props) { var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); - var _selected = []; + var _selected = [], _oldSelected; + var _brush, _gBrush; + // http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin + var is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1; + + function isUnion(event) { + return event.shiftKey; + } + function isToggle(event) { + return is_a_mac ? event.metaKey : event.ctrlKey; + } + function add_array(a, v) { + return a.indexOf(v) >= 0 ? a : a.concat([v]); + } + function toggle_array(a, v) { + return a.indexOf(v) >= 0 ? a.filter(function(x) { return x != v; }) : a.concat([v]); + } + + function selection_changed(chart) { + return function(selection) { + _selected = selection; + chart.refresh(); + }; + } + function background_click_event(chart, v) { + chart.svg().on('click.select-nodes', v ? function(d) { + select_nodes_group.node_set_changed([]); + } : null); + } + function brushstart() { + if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent)) + _oldSelected = _selected.slice(); + else { + _oldSelected = []; + select_nodes_group.node_set_changed([]); + } + } + function brushmove() { + var ext = _brush.extent(); + var rectSelect = _behavior.parent().selectAll('g.node').data().filter(function(n) { + return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] && + ext[0][1] < n.cola.y && n.cola.y < ext[1][1]; + }).map(function(n) { + return n.orig.key; + }); + var newSelected; + if(isUnion(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(add_array, _oldSelected); + else if(isToggle(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(toggle_array, _oldSelected); + else + newSelected = rectSelect; + select_nodes_group.node_set_changed(newSelected); + } + function brushend() { + _gBrush.call(_brush.clear()); + } + function install_brush(chart) { + if(_brush) + return; + _brush = d3.svg.brush() + .x(chart.x()).y(chart.y()) + .on('brushstart', brushstart) + .on('brush', brushmove) + .on('brushend', brushend); + + _gBrush = chart.svg().insert('g', ':first-child') + .attr('class', 'brush') + .call(_brush); + } function add_behavior(chart, node, edge) { - chart.cascade(50, true, conditional_properties(function(n) { + var condition = _behavior.noneIsAll() ? function(n) { + return !_selected.length || _selected.indexOf(n.orig.key) >= 0; + } : function(n) { return _selected.indexOf(n.orig.key) >= 0; - }, null, props)); + }; + chart.cascade(50, true, conditional_properties(condition, null, props)); + node.on('click.select-nodes', function(d) { - _selected = [chart.nodeKey.eval(d)]; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); + var key = chart.nodeKey.eval(d), newSelected; + if(isUnion(d3.event)) + newSelected = add_array(_selected, key); + else if(isToggle(d3.event)) + newSelected = toggle_array(_selected, key); + else { + if(_selected.length === 1 && _selected[0] === key && _behavior.secondClickEvent()) + _behavior.secondClickEvent()(d3.select(this)); + newSelected = [key]; + } + select_nodes_group.node_set_changed(newSelected); d3.event.stopPropagation(); }); - chart.svg().on('click.select-nodes', function(d) { - _selected = []; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); - }); + + if(_behavior.multipleSelect()) + install_brush(chart); + else + background_click_event(chart, _behavior.clickBackgroundClears()); + // drop any selected which no longer exist in the diagram var present = node.data().map(function(d) { return d.orig.key; }); - var nselect = _selected.length; - _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); - if(_selected.length !== nselect) - select_nodes_group.node_set_changed(_selected); + var now_selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); + if(_selected.length !== now_selected.length) + select_nodes_group.node_set_changed(now_selected); } function remove_behavior(chart, node, edge) { @@ -33,12 +112,22 @@ dc_graph.select_nodes = function(props) { chart.cascade(50, false, props); } - return dc_graph.behavior('select-nodes', { + var _behavior = dc_graph.behavior('select-nodes', { add_behavior: add_behavior, - remove_behavior: function(chart, node, edge) { - remove_behavior(chart, node, edge); + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.select-nodes', p ? selection_changed(p) : null); } }); + + _behavior.multipleSelect = property(true); + _behavior.clickBackgroundClears = property(true, false).react(function(v) { + if(!_behavior.multipleSelect() && _behavior.parent()) + background_click_event(_behavior.parent(), v); + }); + _behavior.secondClickEvent = property(null); + _behavior.noneIsAll = property(false); + return _behavior; }; dc_graph.select_nodes_group = function(brushgroup) { diff --git a/web/css/dc.graph.css b/web/css/dc.graph.css index 378c12c9..c8264d35 100644 --- a/web/css/dc.graph.css +++ b/web/css/dc.graph.css @@ -9,6 +9,7 @@ font: bold 14px verdana, san-serif; text-anchor: middle; pointer-events: none; + user-select: none; } .dc-graph text.edge-label { @@ -21,6 +22,11 @@ pointer-events: none; } +.dc-graph g.brush rect.extent { + fill: #4682b4; + fill-opacity: 0.125; +} + .dc-graph > svg { display: block; } diff --git a/web/docs/api-latest.md b/web/docs/api-latest.md index 17380b05..07a0e347 100644 --- a/web/docs/api-latest.md +++ b/web/docs/api-latest.md @@ -9,7 +9,7 @@ instance whenever it is appropriate. The getter forms of functions do not parti chaining because they return values that are not the chart. **Kind**: global namespace -**Version**: 0.4.0 +**Version**: 0.4.1 **Example** ```js // Example chaining @@ -26,6 +26,7 @@ chart.width(600) * [.height([height])](#dc_graph.diagram+height) ⇒ Number | [diagram](#dc_graph.diagram) * [.root([root])](#dc_graph.diagram+root) ⇒ node | [diagram](#dc_graph.diagram) * [.mouseZoomable([mouseZoomable])](#dc_graph.diagram+mouseZoomable) ⇒ Boolean | [diagram](#dc_graph.diagram) + * [.altKeyZoom([altKeyZoom])](#dc_graph.diagram+altKeyZoom) ⇒ Boolean | [diagram](#dc_graph.diagram) * [.fitStrategy([fitStrategy])](#dc_graph.diagram+fitStrategy) ⇒ String | [diagram](#dc_graph.diagram) * [.autoZoom([autoZoom])](#dc_graph.diagram+autoZoom) ⇒ String | [diagram](#dc_graph.diagram) * [.nodeDimension([nodeDimension])](#dc_graph.diagram+nodeDimension) ⇒ crossfilter.dimension | [diagram](#dc_graph.diagram) @@ -87,7 +88,10 @@ chart.width(600) * [.getStats()](#dc_graph.diagram+getStats) ⇒ [diagram](#dc_graph.diagram) * [.select([selector])](#dc_graph.diagram+select) ⇒ d3.selection | [diagram](#dc_graph.diagram) * [.selectAll([selector])](#dc_graph.diagram+selectAll) ⇒ d3.selection | [diagram](#dc_graph.diagram) + * [.x([scale])](#dc_graph.diagram+x) ⇒ d3.scale | [diagram](#dc_graph.diagram) + * [.x([scale])](#dc_graph.diagram+x) ⇒ d3.scale | [diagram](#dc_graph.diagram) * [.svg([selection])](#dc_graph.diagram+svg) ⇒ d3.selection | [diagram](#dc_graph.diagram) + * [.g([selection])](#dc_graph.diagram+g) ⇒ d3.selection | [diagram](#dc_graph.diagram) * [.resetSvg()](#dc_graph.diagram+resetSvg) ⇒ [diagram](#dc_graph.diagram) * [.redrawGroup()](#dc_graph.diagram+redrawGroup) ⇒ [diagram](#dc_graph.diagram) * [.renderGroup()](#dc_graph.diagram+renderGroup) ⇒ [diagram](#dc_graph.diagram) @@ -133,6 +137,7 @@ chart.width(600) * [.height([height])](#dc_graph.diagram+height) ⇒ Number | [diagram](#dc_graph.diagram) * [.root([root])](#dc_graph.diagram+root) ⇒ node | [diagram](#dc_graph.diagram) * [.mouseZoomable([mouseZoomable])](#dc_graph.diagram+mouseZoomable) ⇒ Boolean | [diagram](#dc_graph.diagram) + * [.altKeyZoom([altKeyZoom])](#dc_graph.diagram+altKeyZoom) ⇒ Boolean | [diagram](#dc_graph.diagram) * [.fitStrategy([fitStrategy])](#dc_graph.diagram+fitStrategy) ⇒ String | [diagram](#dc_graph.diagram) * [.autoZoom([autoZoom])](#dc_graph.diagram+autoZoom) ⇒ String | [diagram](#dc_graph.diagram) * [.nodeDimension([nodeDimension])](#dc_graph.diagram+nodeDimension) ⇒ crossfilter.dimension | [diagram](#dc_graph.diagram) @@ -194,7 +199,10 @@ chart.width(600) * [.getStats()](#dc_graph.diagram+getStats) ⇒ [diagram](#dc_graph.diagram) * [.select([selector])](#dc_graph.diagram+select) ⇒ d3.selection | [diagram](#dc_graph.diagram) * [.selectAll([selector])](#dc_graph.diagram+selectAll) ⇒ d3.selection | [diagram](#dc_graph.diagram) + * [.x([scale])](#dc_graph.diagram+x) ⇒ d3.scale | [diagram](#dc_graph.diagram) + * [.x([scale])](#dc_graph.diagram+x) ⇒ d3.scale | [diagram](#dc_graph.diagram) * [.svg([selection])](#dc_graph.diagram+svg) ⇒ d3.selection | [diagram](#dc_graph.diagram) + * [.g([selection])](#dc_graph.diagram+g) ⇒ d3.selection | [diagram](#dc_graph.diagram) * [.resetSvg()](#dc_graph.diagram+resetSvg) ⇒ [diagram](#dc_graph.diagram) * [.redrawGroup()](#dc_graph.diagram+redrawGroup) ⇒ [diagram](#dc_graph.diagram) * [.renderGroup()](#dc_graph.diagram+renderGroup) ⇒ [diagram](#dc_graph.diagram) @@ -267,6 +275,17 @@ whether dragging on the background pans the diagram. | --- | --- | --- | | [mouseZoomable] | Boolean | true | + + +#### diagram.altKeyZoom([altKeyZoom]) ⇒ Boolean | [diagram](#dc_graph.diagram) +Whether zooming should only be enabled when the alt key is pressed. + +**Kind**: instance method of [diagram](#dc_graph.diagram) + +| Param | Type | Default | +| --- | --- | --- | +| [altKeyZoom] | Boolean | true | + #### diagram.fitStrategy([fitStrategy]) ⇒ String | [diagram](#dc_graph.diagram) @@ -1197,12 +1216,38 @@ calls can be chained after it.) | --- | --- | | [selector] | String | + + +#### diagram.x([scale]) ⇒ d3.scale | [diagram](#dc_graph.diagram) +Standard dc.js +[baseMixin](https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin) +method. Gets or sets the x scale. + +**Kind**: instance method of [diagram](#dc_graph.diagram) + +| Param | Type | +| --- | --- | +| [scale] | d3.scale | + + + +#### diagram.x([scale]) ⇒ d3.scale | [diagram](#dc_graph.diagram) +Standard dc.js +[baseMixin](https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin) +method. Gets or sets the y scale. + +**Kind**: instance method of [diagram](#dc_graph.diagram) + +| Param | Type | +| --- | --- | +| [scale] | d3.scale | + #### diagram.svg([selection]) ⇒ d3.selection | [diagram](#dc_graph.diagram) Standard dc.js [baseMixin](https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin) -method. Returns the top svg element for this specific chart. You can also pass in a new +method. Returns the top `svg` element for this specific chart. You can also pass in a new svg element, but setting the svg element on a diagram may have unexpected consequences. **Kind**: instance method of [diagram](#dc_graph.diagram) @@ -1211,6 +1256,20 @@ svg element, but setting the svg element on a diagram may have unexpected conseq | --- | --- | | [selection] | d3.selection | + + +#### diagram.g([selection]) ⇒ d3.selection | [diagram](#dc_graph.diagram) +Returns the top `g` element for this specific chart. This method is usually used to +retrieve the g element in order to overlay custom svg drawing +programatically. **Caution**: The root g element is usually generated internally, and +resetting it might produce unpredictable results. + +**Kind**: instance method of [diagram](#dc_graph.diagram) + +| Param | Type | +| --- | --- | +| [selection] | d3.selection | + #### diagram.resetSvg() ⇒ [diagram](#dc_graph.diagram) diff --git a/web/examples/random.html b/web/examples/random.html index 8f596ba1..a833737c 100644 --- a/web/examples/random.html +++ b/web/examples/random.html @@ -5,15 +5,10 @@ - - - - - @@ -24,6 +19,7 @@ @@ -50,41 +46,33 @@ } var qs = querystring.parse(); - var nodes = [], edges = []; - var newNodeProb = +qs.newnode || 0.9; + var options = Object.assign({ + layout: 'cola', + worker: true, + newnode: 0.9, + newcomp: 0.1, + interval: 1000 + }, qs); - function random_node() { - return nodes[Math.floor(Math.random()*nodes.length)]; - } - var engine, params; - switch(qs.layout) { - case 'dagre': - engine = dc_graph.dagre_layout(); - params = ['rankdir']; - break; - case 'tree': - engine = dc_graph.tree_layout(); - params = []; - break; - case 'cola': - default: - engine = dc_graph.cola_layout(); - params = ['lengthStrategy']; - break; - } - params.forEach(function(p) { - if(qs[p]) - engine[p](qs[p]); - }); - if(qs.worker !== 'false') - engine = dc_graph.webworker_layout(engine); + var engine = dc_graph.spawn_engine(options.layout, qs, options.worker != 'false'); + // don't do multiple components for cola unless user specified + // layout is that unstable + if(engine.layoutAlgorithm()==='cola') + if(typeof options.newcomp !== 'string') + options.newcomp = 0; + var random = dc_graph.random_graph({ + nodeKey: 'id', edgeKey: 'id', + ncolors: 12, + newNodeProb: +options.newnode, + newComponentProb: +options.newcomp + }); var diagram = dc_graph.diagram('#graph'); - var data = build_data(nodes, edges); + var data = build_data(random.nodes(), random.edges()); diagram .layoutEngine(engine) - .width($(window).width()) - .height($(window).height()) + .width(document.documentElement.clientWidth) + .height(document.documentElement.clientHeight) .nodeDimension(data.nodef.dimension).nodeGroup(data.nodef.group) .edgeDimension(data.edgef.dimension).edgeGroup(data.edgef.group) .nodeStrokeWidth(0) // turn off outlines @@ -102,24 +90,18 @@ ['#a6cee3','#1f78b4','#b2df8a','#33a02c','#fb9a99','#e31a1c', '#fdbf6f','#ff7f00','#cab2d6','#6a3d9a','#ffff99','#b15928'])) .nodeTitle(null) // deactivate basic tooltips - .edgeArrowhead(qs.arrows ? 'vee' : null) + .edgeArrowhead(options.arrows ? 'vee' : null) + .timeLimit(options.interval - 100) .render(); window.setInterval(function() { - var choice = Math.random(); - var n1 = random_node(), n2; - if(choice < newNodeProb) - nodes.push(n2 = {id: 'n' + nodes.length, color: Math.floor(Math.random()*12)}); - else - n2 = random_node(); - if(n1) - edges.push({id: 'e' + edges.length, sourcename: n1.id, targetname: n2.id}); - data = build_data(nodes, edges); + random.generate(1); + data = build_data(random.nodes(), random.edges()); diagram .nodeDimension(data.nodef.dimension).nodeGroup(data.nodef.group) .edgeDimension(data.edgef.dimension).edgeGroup(data.edgef.group) .redraw(); - }, qs.interval || 2000); + }, +options.interval); })(); diff --git a/web/examples/rectangular-selection.html b/web/examples/rectangular-selection.html new file mode 100644 index 00000000..29a5b398 --- /dev/null +++ b/web/examples/rectangular-selection.html @@ -0,0 +1,125 @@ + + + + Rectangular selection of nodes + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + diff --git a/web/js/crossfilter.js b/web/js/crossfilter.js index 37f0a62f..ea17683e 100644 --- a/web/js/crossfilter.js +++ b/web/js/crossfilter.js @@ -1,19 +1,1368 @@ -(function(exports){ -crossfilter.version = "1.3.12"; -function crossfilter_identity(d) { - return d; +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.crossfilter = f()}})(function(){var define,module,exports;return (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 + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** Used to determine if values are of the language type `Object`. */ +var objectTypes = { + 'function': true, + 'object': true +}; + +/** Detect free variable `exports`. */ +var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) + ? exports + : undefined; + +/** Detect free variable `module`. */ +var freeModule = (objectTypes[typeof module] && module && !module.nodeType) + ? module + : undefined; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); + +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(objectTypes[typeof self] && self); + +/** Detect free variable `window`. */ +var freeWindow = checkGlobal(objectTypes[typeof window] && window); + +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(objectTypes[typeof this] && this); + +/** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ +var root = freeGlobal || + ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || + freeSelf || thisGlobal || Function('return this')(); + +/** + * Checks if `value` is a global object. + * + * @private + * @param {*} value The value to check. + * @returns {null|Object} Returns `value` if it's a global object, else `null`. + */ +function checkGlobal(value) { + return (value && value.Object === Object) ? value : null; } -crossfilter.permute = permute; -function permute(array, index) { - for (var i = 0, n = index.length, copy = new Array(n); i < n; ++i) { - copy[i] = array[index[i]]; +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Built-in value references. */ +var Symbol = root.Symbol; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; } - return copy; + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +module.exports = baseToString; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],3:[function(require,module,exports){ +(function (global){ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +var baseToString = require('lodash._basetostring'); + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]'; + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]/g; + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/6.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used to determine if values are of the language type `Object`. */ +var objectTypes = { + 'function': true, + 'object': true +}; + +/** Detect free variable `exports`. */ +var freeExports = (objectTypes[typeof exports] && exports && !exports.nodeType) + ? exports + : undefined; + +/** Detect free variable `module`. */ +var freeModule = (objectTypes[typeof module] && module && !module.nodeType) + ? module + : undefined; + +/** Detect free variable `global` from Node.js. */ +var freeGlobal = checkGlobal(freeExports && freeModule && typeof global == 'object' && global); + +/** Detect free variable `self`. */ +var freeSelf = checkGlobal(objectTypes[typeof self] && self); + +/** Detect free variable `window`. */ +var freeWindow = checkGlobal(objectTypes[typeof window] && window); + +/** Detect `this` as the global object. */ +var thisGlobal = checkGlobal(objectTypes[typeof this] && this); + +/** + * Used as a reference to the global object. + * + * The `this` value is used if it's the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ +var root = freeGlobal || + ((freeWindow !== (thisGlobal && thisGlobal.window)) && freeWindow) || + freeSelf || thisGlobal || Function('return this')(); + +/** + * Checks if `value` is a global object. + * + * @private + * @param {*} value The value to check. + * @returns {null|Object} Returns `value` if it's a global object, else `null`. + */ +function checkGlobal(value) { + return (value && value.Object === Object) ? value : null; +} + +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + return result; +} + +/** Used for built-in method references. */ +var arrayProto = Array.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = Function.prototype.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key); +} + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; +} + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + return true; +} + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to search. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = object[key]; + return isNative(value) ? value : undefined; +} + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoize(function(string) { + var result = []; + toString(string).replace(rePropName, function(match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/6.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/6.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'user': 'fred' }; + * var other = { 'user': 'fred' }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8 which returns 'object' for typed array and weak map constructors, + // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ +function isNative(value) { + if (!isObject(value)) { + return false; + } + var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = stringToPath; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"lodash._basetostring":2}],4:[function(require,module,exports){ +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ +var stringToPath = require('lodash._stringtopath'); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** `Object#toString` result references. */ +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) + * of values. + */ +var objectToString = objectProto.toString; + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value) { + return isArray(value) ? value : stringToPath(value); +} + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @type {Function} + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8 which returns 'object' for typed array and weak map constructors, + // and PhantomJS 1.9 which returns 'function' for `NodeList` instances. + var tag = isObject(value) ? objectToString.call(value) : ''; + return tag == funcTag || tag == genTag; +} + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/6.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return !!value && (type == 'object' || type == 'function'); +} + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return !!value && typeof value == 'object'; +} + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, + * else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && objectToString.call(value) == symbolTag); +} + +/** + * This method is like `_.get` except that if the resolved value is a + * function it's invoked with the `this` binding of its parent object and + * its result is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to resolve. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; + * + * _.result(object, 'a[0].b.c1'); + * // => 3 + * + * _.result(object, 'a[0].b.c2'); + * // => 4 + * + * _.result(object, 'a[0].b.c3', 'default'); + * // => 'default' + * + * _.result(object, 'a[0].b.c3', _.constant('default')); + * // => 'default' + */ +function result(object, path, defaultValue) { + path = isKey(path, object) ? [path] : castPath(path); + + var index = -1, + length = path.length; + + // Ensure the loop is entered when path is empty. + if (!length) { + object = undefined; + length = 1; + } + while (++index < length) { + var value = object == null ? undefined : object[toKey(path[index])]; + if (value === undefined) { + index = length; + value = defaultValue; + } + object = isFunction(value) ? value.call(object) : value; + } + return object; +} + +module.exports = result; + +},{"lodash._stringtopath":3}],5:[function(require,module,exports){ +module.exports={"version":"1.4.0-alpha.05"} +},{}],6:[function(require,module,exports){ +if (typeof Uint8Array !== "undefined") { + crossfilter_array8 = function(n) { return new Uint8Array(n); }; + crossfilter_array16 = function(n) { return new Uint16Array(n); }; + crossfilter_array32 = function(n) { return new Uint32Array(n); }; + + crossfilter_arrayLengthen = function(array, length) { + if (array.length >= length) return array; + var copy = new array.constructor(length); + copy.set(array); + return copy; + }; + + crossfilter_arrayWiden = function(array, width) { + var copy; + switch (width) { + case 16: copy = crossfilter_array16(array.length); break; + case 32: copy = crossfilter_array32(array.length); break; + default: throw new Error("invalid array width!"); + } + copy.set(array); + return copy; + }; +} + +function crossfilter_arrayUntyped(n) { + var array = new Array(n), i = -1; + while (++i < n) array[i] = 0; + return array; +} + +function crossfilter_arrayLengthenUntyped(array, length) { + var n = array.length; + while (n < length) array[n++] = 0; + return array; +} + +function crossfilter_arrayWidenUntyped(array, width) { + if (width > 32) throw new Error("invalid array width!"); + return array; +} + +// An arbitrarily-wide array of bitmasks +function crossfilter_bitarray(n) { + this.length = n; + this.subarrays = 1; + this.width = 8; + this.masks = { + 0: 0 + } + + this[0] = crossfilter_array8(n); +} + +crossfilter_bitarray.prototype.lengthen = function(n) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + this[i] = crossfilter_arrayLengthen(this[i], n); + } + this.length = n; +}; + +// Reserve a new bit index in the array, returns {offset, one} +crossfilter_bitarray.prototype.add = function() { + var m, w, one, i, len; + + for (i = 0, len = this.subarrays; i < len; ++i) { + m = this.masks[i]; + w = this.width - (32 * i); + one = ~m & -~m; + + if (w >= 32 && !one) { + continue; + } + + if (w < 32 && (one & (1 << w))) { + // widen this subarray + this[i] = crossfilter_arrayWiden(this[i], w <<= 1); + this.width = 32 * i + w; + } + + this.masks[i] |= one; + + return { + offset: i, + one: one + }; + } + + // add a new subarray + this[this.subarrays] = crossfilter_array8(this.length); + this.masks[this.subarrays] = 1; + this.width += 8; + return { + offset: this.subarrays++, + one: 1 + }; +}; + +// Copy record from index src to index dest +crossfilter_bitarray.prototype.copy = function(dest, src) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + this[i][dest] = this[i][src]; + } +}; + +// Truncate the array to the given length +crossfilter_bitarray.prototype.truncate = function(n) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + for (var j = this.length - 1; j >= n; j--) { + this[i][j] = 0; + } + this[i].length = n; + } + this.length = n; +}; + +// Checks that all bits for the given index are 0 +crossfilter_bitarray.prototype.zero = function(n) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + if (this[i][n]) { + return false; + } + } + return true; +}; + +// Checks that all bits for the given index are 0 except for possibly one +crossfilter_bitarray.prototype.zeroExcept = function(n, offset, zero) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + if (i === offset ? this[i][n] & zero : this[i][n]) { + return false; + } + } + return true; +}; + +// Checks that all bits for the given indez are 0 except for the specified mask. +// The mask should be an array of the same size as the filter subarrays width. +crossfilter_bitarray.prototype.zeroExceptMask = function(n, mask) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + if (this[i][n] & mask[i]) { + return false; + } + } + return true; } -var bisect = crossfilter.bisect = bisect_by(crossfilter_identity); -bisect.by = bisect_by; +// Checks that only the specified bit is set for the given index +crossfilter_bitarray.prototype.only = function(n, offset, one) { + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + if (this[i][n] != (i === offset ? one : 0)) { + return false; + } + } + return true; +}; + +// Checks that only the specified bit is set for the given index except for possibly one other +crossfilter_bitarray.prototype.onlyExcept = function(n, offset, zero, onlyOffset, onlyOne) { + var mask; + var i, len; + for (i = 0, len = this.subarrays; i < len; ++i) { + mask = this[i][n]; + if (i === offset) + mask &= zero; + if (mask != (i === onlyOffset ? onlyOne : 0)) { + return false; + } + } + return true; +}; + +module.exports = { + array8: crossfilter_arrayUntyped, + array16: crossfilter_arrayUntyped, + array32: crossfilter_arrayUntyped, + arrayLengthen: crossfilter_arrayLengthenUntyped, + arrayWiden: crossfilter_arrayWidenUntyped, + bitarray: crossfilter_bitarray +}; + +},{}],7:[function(require,module,exports){ +var crossfilter_identity = require('./identity'); function bisect_by(f) { @@ -55,1347 +1404,1859 @@ function bisect_by(f) { bisectRight.left = bisectLeft; return bisectRight; } -var heap = crossfilter.heap = heap_by(crossfilter_identity); -heap.by = heap_by; +module.exports = bisect_by(crossfilter_identity); +module.exports.by = bisect_by; // assign the raw function to the export as well + +},{"./identity":12}],8:[function(require,module,exports){ +var xfilterArray = require('./array'); +var xfilterFilter = require('./filter'); +var crossfilter_identity = require('./identity'); +var crossfilter_null = require('./null'); +var crossfilter_zero = require('./zero'); +var xfilterHeapselect = require('./heapselect'); +var xfilterHeap = require('./heap'); +var bisect = require('./bisect'); +var insertionsort = require('./insertionsort'); +var permute = require('./permute'); +var quicksort = require('./quicksort'); +var xfilterReduce = require('./reduce'); +var packageJson = require('./../package.json'); // require own package.json for the version field +var result = require('lodash.result'); +// expose API exports +exports.crossfilter = crossfilter; +exports.crossfilter.heap = xfilterHeap; +exports.crossfilter.heapselect = xfilterHeapselect; +exports.crossfilter.bisect = bisect; +exports.crossfilter.insertionsort = insertionsort; +exports.crossfilter.permute = permute; +exports.crossfilter.quicksort = quicksort; +exports.crossfilter.version = packageJson.version; // please note use of "package-json-versionify" transform -function heap_by(f) { +function crossfilter() { + var crossfilter = { + add: add, + remove: removeData, + dimension: dimension, + groupAll: groupAll, + size: size, + all: all, + onChange: onChange, + isElementFiltered: isElementFiltered, + }; - // Builds a binary heap within the specified array a[lo:hi]. The heap has the - // property such that the parent a[lo+i] is always less than or equal to its - // two children: a[lo+2*i+1] and a[lo+2*i+2]. - function heap(a, lo, hi) { - var n = hi - lo, - i = (n >>> 1) + 1; - while (--i > 0) sift(a, i, n, lo); - return a; - } + var data = [], // the records + n = 0, // the number of records; data.length + filters, // 1 is filtered out + filterListeners = [], // when the filters change + dataListeners = [], // when data is added + removeDataListeners = [], // when data is removed + callbacks = []; - // Sorts the specified array a[lo:hi] in descending order, assuming it is - // already a heap. - function sort(a, lo, hi) { - var n = hi - lo, - t; - while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo); - return a; - } + filters = new xfilterArray.bitarray(0); - // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous - // slice of array a[lo:lo+n]. This method can also be used to update the heap - // incrementally, without incurring the full cost of reconstructing the heap. - function sift(a, i, n, lo) { - var d = a[--lo + i], - x = f(d), - child; - while ((child = i << 1) <= n) { - if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++; - if (x <= f(a[lo + child])) break; - a[lo + i] = a[lo + child]; - i = child; + // Adds the specified new records to this crossfilter. + function add(newData) { + var n0 = n, + n1 = newData.length; + + // If there's actually new data to add… + // Merge the new data into the existing data. + // Lengthen the filter bitset to handle the new records. + // Notify listeners (dimensions and groups) that new data is available. + if (n1) { + data = data.concat(newData); + filters.lengthen(n += n1); + dataListeners.forEach(function(l) { l(newData, n0, n1); }); + triggerOnChange('dataAdded'); } - a[lo + i] = d; + + return crossfilter; } - heap.sort = sort; - return heap; -} -var heapselect = crossfilter.heapselect = heapselect_by(crossfilter_identity); + // Removes all records that match the current filters. + function removeData() { + var newIndex = crossfilter_index(n, n), + removed = []; + for (var i = 0, j = 0; i < n; ++i) { + if (!filters.zero(i)) newIndex[i] = j++; + else removed.push(i); + } -heapselect.by = heapselect_by; + // Remove all matching records from groups. + filterListeners.forEach(function(l) { l(-1, -1, [], removed, true); }); -function heapselect_by(f) { - var heap = heap_by(f); - - // Returns a new array containing the top k elements in the array a[lo:hi]. - // The returned array is not sorted, but maintains the heap property. If k is - // greater than hi - lo, then fewer than k elements will be returned. The - // order of elements in a is unchanged by this operation. - function heapselect(a, lo, hi, k) { - var queue = new Array(k = Math.min(hi - lo, k)), - min, - i, - x, - d; - - for (i = 0; i < k; ++i) queue[i] = a[lo++]; - heap(queue, 0, k); + // Update indexes. + removeDataListeners.forEach(function(l) { l(newIndex); }); - if (lo < hi) { - min = f(queue[0]); - do { - if (x = f(d = a[lo]) > min) { - queue[0] = d; - min = f(heap(queue, 0, k)[0]); - } - } while (++lo < hi); + // Remove old filters and data by overwriting. + for (var i = 0, j = 0; i < n; ++i) { + if (!filters.zero(i)) { + if (i !== j) filters.copy(j, i), data[j] = data[i]; + ++j; + } } - return queue; + data.length = n = j; + filters.truncate(j); + triggerOnChange('dataRemoved'); } - return heapselect; -} -var insertionsort = crossfilter.insertionsort = insertionsort_by(crossfilter_identity); - -insertionsort.by = insertionsort_by; - -function insertionsort_by(f) { - - function insertionsort(a, lo, hi) { - for (var i = lo + 1; i < hi; ++i) { - for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) { - a[j] = a[j - 1]; + // Return true if the data element at index i is filtered IN. + // Optionally, ignore the filters of any dimensions in the ignore_dimensions list. + function isElementFiltered(i, ignore_dimensions) { + var n, + d, + id, + len, + mask = Array(filters.subarrays); + for (n = 0; n < filters.subarrays; n++) { mask[n] = ~0; } + if (ignore_dimensions) { + for (d = 0, len = ignore_dimensions.length; d < len; d++) { + // The top bits of the ID are the subarray offset and the lower bits are the bit + // offset of the "one" mask. + id = ignore_dimensions[d].id(); + mask[id >> 7] &= ~(0x1 << (id & 0x3f)); } - a[j] = t; } - return a; + return filters.zeroExceptMask(i,mask); } - return insertionsort; -} -// Algorithm designed by Vladimir Yaroslavskiy. -// Implementation based on the Dart project; see lib/dart/LICENSE for details. - -var quicksort = crossfilter.quicksort = quicksort_by(crossfilter_identity); - -quicksort.by = quicksort_by; - -function quicksort_by(f) { - var insertionsort = insertionsort_by(f); + // Adds a new dimension with the specified value accessor function. + function dimension(value, iterable) { - function sort(a, lo, hi) { - return (hi - lo < quicksort_sizeThreshold - ? insertionsort - : quicksort)(a, lo, hi); - } + if (typeof value === 'string') { + var accessorPath = value; + value = function(d) { return result(d, accessorPath); }; + } - function quicksort(a, lo, hi) { - // Compute the two pivots by looking at 5 elements. - var sixth = (hi - lo) / 6 | 0, - i1 = lo + sixth, - i5 = hi - 1 - sixth, - i3 = lo + hi - 1 >> 1, // The midpoint. - i2 = i3 - sixth, - i4 = i3 + sixth; + var dimension = { + filter: filter, + filterExact: filterExact, + filterRange: filterRange, + filterFunction: filterFunction, + filterAll: filterAll, + top: top, + bottom: bottom, + group: group, + groupAll: groupAll, + dispose: dispose, + remove: dispose, // for backwards-compatibility + accessor: value, + id: function() { return id; } + }; - var e1 = a[i1], x1 = f(e1), - e2 = a[i2], x2 = f(e2), - e3 = a[i3], x3 = f(e3), - e4 = a[i4], x4 = f(e4), - e5 = a[i5], x5 = f(e5); + var one, // lowest unset bit as mask, e.g., 00001000 + zero, // inverted one, e.g., 11110111 + offset, // offset into the filters arrays + id, // unique ID for this dimension (reused when dimensions are disposed) + values, // sorted, cached array + index, // value rank ↦ object id + oldValues, // temporary array storing previously-added values + oldIndex, // temporary array storing previously-added index + newValues, // temporary array storing newly-added values + newIndex, // temporary array storing newly-added index + iterablesIndexCount, + newIterablesIndexCount, + iterablesIndexFilterStatus, + newIterablesIndexFilterStatus, + oldIterablesIndexFilterStatus, + iterablesEmptyRows, + sort = quicksort.by(function(i) { return newValues[i]; }), + refilter = xfilterFilter.filterAll, // for recomputing filter + refilterFunction, // the custom filter function in use + indexListeners = [], // when data is added + dimensionGroups = [], + lo0 = 0, + hi0 = 0, + t = 0; - var t; + // Updating a dimension is a two-stage process. First, we must update the + // associated filters for the newly-added records. Once all dimensions have + // updated their filters, the groups are notified to update. + dataListeners.unshift(preAdd); + dataListeners.push(postAdd); - // Sort the selected 5 elements using a sorting network. - if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t; - if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; - if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t; - if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; - if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t; - if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t; - if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t; - if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; - if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; + removeDataListeners.push(removeData); - var pivot1 = e2, pivotValue1 = x2, - pivot2 = e4, pivotValue2 = x4; + // Add a new dimension in the filter bitmap and store the offset and bitmask. + var tmp = filters.add(); + offset = tmp.offset; + one = tmp.one; + zero = ~one; - // e2 and e4 have been saved in the pivot variables. They will be written - // back, once the partitioning is finished. - a[i1] = e1; - a[i2] = a[lo]; - a[i3] = e3; - a[i4] = a[hi - 1]; - a[i5] = e5; + // Create a unique ID for the dimension + // IDs will be re-used if dimensions are disposed. + // For internal use the ID is the subarray offset shifted left 7 bits or'd with the + // bit offset of the set bit in the dimension's "one" mask. + id = (offset << 7) | (Math.log(one) / Math.log(2)); - var less = lo + 1, // First element in the middle partition. - great = hi - 2; // Last element in the middle partition. + preAdd(data, 0, n); + postAdd(data, 0, n); - // Note that for value comparison, <, <=, >= and > coerce to a primitive via - // Object.prototype.valueOf; == and === do not, so in order to be consistent - // with natural order (such as for Date objects), we must do two compares. - var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2; - if (pivotsEqual) { + // Incorporates the specified new records into this dimension. + // This function is responsible for updating filters, values, and index. + function preAdd(newData, n0, n1) { - // Degenerated case where the partitioning becomes a dutch national flag - // problem. - // - // [ | < pivot | == pivot | unpartitioned | > pivot | ] - // ^ ^ ^ ^ ^ - // left less k great right - // - // a[left] and a[right] are undefined and are filled after the - // partitioning. - // - // Invariants: - // 1) for x in ]left, less[ : x < pivot. - // 2) for x in [less, k[ : x == pivot. - // 3) for x in ]great, right[ : x > pivot. - for (var k = less; k <= great; ++k) { - var ek = a[k], xk = f(ek); - if (xk < pivotValue1) { - if (k !== less) { - a[k] = a[less]; - a[less] = ek; - } - ++less; - } else if (xk > pivotValue1) { + if (iterable){ + // Count all the values + t = 0; + j = 0; + k = []; - // Find the first element <= pivot in the range [k - 1, great] and - // put [:ek:] there. We know that such an element must exist: - // When k == less, then el3 (which is equal to pivot) lies in the - // interval. Otherwise a[k - 1] == pivot and the search stops at k-1. - // Note that in the latter case invariant 2 will be violated for a - // short amount of time. The invariant will be restored when the - // pivots are put into their final positions. - while (true) { - var greatValue = f(a[great]); - if (greatValue > pivotValue1) { - great--; - // This is the only location in the while-loop where a new - // iteration is started. - continue; - } else if (greatValue < pivotValue1) { - // Triple exchange. - a[k] = a[less]; - a[less++] = a[great]; - a[great--] = ek; - break; - } else { - a[k] = a[great]; - a[great--] = ek; - // Note: if great < k then we will exit the outer loop and fix - // invariant 2 (which we just violated). - break; - } + for (i = 0; i < newData.length; i++) { + for(j = 0, k = value(newData[i]); j < k.length; j++) { + t++; } } - } - } else { - // We partition the list into three parts: - // 1. < pivot1 - // 2. >= pivot1 && <= pivot2 - // 3. > pivot2 - // - // During the loop we have: - // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned | > pivot2 | ] - // ^ ^ ^ ^ ^ - // left less k great right - // - // a[left] and a[right] are undefined and are filled after the - // partitioning. - // - // Invariants: - // 1. for x in ]left, less[ : x < pivot1 - // 2. for x in [less, k[ : pivot1 <= x && x <= pivot2 - // 3. for x in ]great, right[ : x > pivot2 - for (var k = less; k <= great; k++) { - var ek = a[k], xk = f(ek); - if (xk < pivotValue1) { - if (k !== less) { - a[k] = a[less]; - a[less] = ek; + newValues = []; + newIterablesIndexCount = crossfilter_range(newData.length); + newIterablesIndexFilterStatus = crossfilter_index(t,1); + iterablesEmptyRows = []; + var unsortedIndex = crossfilter_range(t); + + for (l = 0, i = 0; i < newData.length; i++) { + k = value(newData[i]) + // + if(!k.length){ + newIterablesIndexCount[i] = 0; + iterablesEmptyRows.push(i); + continue; } - ++less; - } else { - if (xk > pivotValue2) { - while (true) { - var greatValue = f(a[great]); - if (greatValue > pivotValue2) { - great--; - if (great < k) break; - // This is the only location inside the loop where a new - // iteration is started. - continue; - } else { - // a[great] <= pivot2. - if (greatValue < pivotValue1) { - // Triple exchange. - a[k] = a[less]; - a[less++] = a[great]; - a[great--] = ek; - } else { - // a[great] >= pivot1. - a[k] = a[great]; - a[great--] = ek; - } - break; - } - } + newIterablesIndexCount[i] = k.length + for (j = 0; j < k.length; j++) { + newValues.push(k[j]); + unsortedIndex[l] = i; + l++; } } - } - } - // Move pivots into their final positions. - // We shrunk the list from both sides (a[left] and a[right] have - // meaningless values in them) and now we move elements from the first - // and third partition into these locations so that we can store the - // pivots. - a[lo] = a[less - 1]; - a[less - 1] = pivot1; - a[hi - 1] = a[great + 1]; - a[great + 1] = pivot2; + // Create the Sort map used to sort both the values and the valueToData indices + var sortMap = sort(crossfilter_range(t), 0, t); - // The list is now partitioned into three partitions: - // [ < pivot1 | >= pivot1 && <= pivot2 | > pivot2 ] - // ^ ^ ^ ^ - // left less great right + // Use the sortMap to sort the newValues + newValues = permute(newValues, sortMap); - // Recursive descent. (Don't include the pivot values.) - sort(a, lo, less - 1); - sort(a, great + 2, hi); - if (pivotsEqual) { - // All elements in the second partition are equal to the pivot. No - // need to sort them. - return a; - } + // Use the sortMap to sort the unsortedIndex map + // newIndex should be a map of sortedValue -> crossfilterData + newIndex = permute(unsortedIndex, sortMap) - // In theory it should be enough to call _doSort recursively on the second - // partition. - // The Android source however removes the pivot elements from the recursive - // call if the second partition is too large (more than 2/3 of the list). - if (less < i1 && great > i5) { - var lessValue, greatValue; - while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less; - while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great; + } else{ + // Permute new values into natural order using a standard sorted index. + newValues = newData.map(value); + newIndex = sort(crossfilter_range(n1), 0, n1); + newValues = permute(newValues, newIndex); + } - // Copy paste of the previous 3-way partitioning with adaptions. - // - // We partition the list into three parts: - // 1. == pivot1 - // 2. > pivot1 && < pivot2 - // 3. == pivot2 - // - // During the loop we have: - // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned | == pivot2 ] - // ^ ^ ^ - // less k great - // - // Invariants: - // 1. for x in [ *, less[ : x == pivot1 - // 2. for x in [less, k[ : pivot1 < x && x < pivot2 - // 3. for x in ]great, * ] : x == pivot2 - for (var k = less; k <= great; k++) { - var ek = a[k], xk = f(ek); - if (xk <= pivotValue1 && xk >= pivotValue1) { - if (k !== less) { - a[k] = a[less]; - a[less] = ek; + if(iterable) { + n1 = t; + } + + // Bisect newValues to determine which new records are selected. + var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1]; + if (refilterFunction) { + for (i = 0; i < n1; ++i) { + if (!refilterFunction(newValues[i], i)) { + filters[offset][newIndex[i] + n0] |= one; + if(iterable) newIterablesIndexFilterStatus[i] = 1; } - less++; + } + } else { + for (i = 0; i < lo1; ++i) { + filters[offset][newIndex[i] + n0] |= one; + if(iterable) newIterablesIndexFilterStatus[i] = 1; + } + for (i = hi1; i < n1; ++i) { + filters[offset][newIndex[i] + n0] |= one; + if(iterable) newIterablesIndexFilterStatus[i] = 1; + } + } + + // If this dimension previously had no data, then we don't need to do the + // more expensive merge operation; use the new values and index as-is. + if (!n0) { + values = newValues; + index = newIndex; + iterablesIndexCount = newIterablesIndexCount; + iterablesIndexFilterStatus = newIterablesIndexFilterStatus; + lo0 = lo1; + hi0 = hi1; + return; + } + + + + var oldValues = values, + oldIndex = index, + oldIterablesIndexFilterStatus = iterablesIndexFilterStatus + i0 = 0, + i1 = 0; + + if(iterable){ + old_n0 = n0 + n0 = oldValues.length; + n1 = t + } + + // Otherwise, create new arrays into which to merge new and old. + values = iterable ? new Array(n0 + n1) : new Array(n); + index = iterable ? new Array(n0 + n1) : crossfilter_index(n, n); + if(iterable) iterablesIndexFilterStatus = crossfilter_index(n0 + n1, 1); + + // Concatenate the newIterablesIndexCount onto the old one. + if(iterable) { + var oldiiclength = iterablesIndexCount.length; + iterablesIndexCount = xfilterArray.arrayLengthen(iterablesIndexCount, n); + for(var j=0; j+oldiiclength < n; j++) { + iterablesIndexCount[j+oldiiclength] = newIterablesIndexCount[j]; + } + } + + // Merge the old and new sorted values, and old and new index. + for (i = 0; i0 < n0 && i1 < n1; ++i) { + if (oldValues[i0] < newValues[i1]) { + values[i] = oldValues[i0]; + if(iterable) iterablesIndexFilterStatus[i] = oldIterablesIndexFilterStatus[i0]; + index[i] = oldIndex[i0++]; } else { - if (xk <= pivotValue2 && xk >= pivotValue2) { - while (true) { - var greatValue = f(a[great]); - if (greatValue <= pivotValue2 && greatValue >= pivotValue2) { - great--; - if (great < k) break; - // This is the only location inside the loop where a new - // iteration is started. - continue; - } else { - // a[great] < pivot2. - if (greatValue < pivotValue1) { - // Triple exchange. - a[k] = a[less]; - a[less++] = a[great]; - a[great--] = ek; - } else { - // a[great] == pivot1. - a[k] = a[great]; - a[great--] = ek; - } - break; - } + values[i] = newValues[i1]; + if(iterable) iterablesIndexFilterStatus[i] = oldIterablesIndexFilterStatus[i1]; + index[i] = newIndex[i1++] + (iterable ? old_n0 : n0); + } + } + + // Add any remaining old values. + for (; i0 < n0; ++i0, ++i) { + values[i] = oldValues[i0]; + if(iterable) iterablesIndexFilterStatus[i] = oldIterablesIndexFilterStatus[i0]; + index[i] = oldIndex[i0]; + } + + // Add any remaining new values. + for (; i1 < n1; ++i1, ++i) { + values[i] = newValues[i1]; + if(iterable) iterablesIndexFilterStatus[i] = oldIterablesIndexFilterStatus[i1]; + index[i] = newIndex[i1] + (iterable ? old_n0 : n0); + } + + // Bisect again to recompute lo0 and hi0. + bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1]; + } + + // When all filters have updated, notify index listeners of the new values. + function postAdd(newData, n0, n1) { + indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); }); + newValues = newIndex = null; + } + + function removeData(reIndex) { + for (var i = 0, j = 0, k; i < n; ++i) { + if (!filters.zero(k = index[i])) { + if (i !== j) values[j] = values[i]; + index[j] = reIndex[k]; + ++j; + } + } + values.length = j; + while (j < n) index[j++] = 0; + + // Bisect again to recompute lo0 and hi0. + var bounds = refilter(values); + lo0 = bounds[0], hi0 = bounds[1]; + } + + // Updates the selected values based on the specified bounds [lo, hi]. + // This implementation is used by all the public filter methods. + function filterIndexBounds(bounds) { + + var lo1 = bounds[0], + hi1 = bounds[1]; + + if (refilterFunction) { + refilterFunction = null; + filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; }, bounds[0] === 0 && bounds[1] === index.length); + lo0 = lo1; + hi0 = hi1; + return dimension; + } + + var i, + j, + k, + added = [], + removed = [], + valueIndexAdded = [], + valueIndexRemoved = []; + + + // Fast incremental update based on previous lo index. + if (lo1 < lo0) { + for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) { + added.push(index[i]); + valueIndexAdded.push(i); + } + } else if (lo1 > lo0) { + for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) { + removed.push(index[i]); + valueIndexRemoved.push(i); + } + } + + // Fast incremental update based on previous hi index. + if (hi1 > hi0) { + for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) { + added.push(index[i]); + valueIndexAdded.push(i); + } + } else if (hi1 < hi0) { + for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) { + removed.push(index[i]); + valueIndexRemoved.push(i); + } + } + + if(!iterable) { + // Flip filters normally. + + for(i=0; i pivot1 && < pivot2 | * ] - // ^ ^ - // less great - // Sort the second partition using recursive descent. + // Filters this dimension using the specified range, value, or null. + // If the range is null, this is equivalent to filterAll. + // If the range is an array, this is equivalent to filterRange. + // Otherwise, this is equivalent to filterExact. + function filter(range) { + return range == null + ? filterAll() : Array.isArray(range) + ? filterRange(range) : typeof range === "function" + ? filterFunction(range) + : filterExact(range); + } - // The second partition looks as follows: - // [ * | >= pivot1 && <= pivot2 | * ] - // ^ ^ - // less great - // Simply sort it by recursive descent. + // Filters this dimension to select the exact value. + function filterExact(value) { + return filterIndexBounds((refilter = xfilterFilter.filterExact(bisect, value))(values)); + } - return sort(a, less, great + 1); - } + // Filters this dimension to select the specified range [lo, hi]. + // The lower bound is inclusive, and the upper bound is exclusive. + function filterRange(range) { + return filterIndexBounds((refilter = xfilterFilter.filterRange(bisect, range))(values)); + } - return sort; -} + // Clears any filters on this dimension. + function filterAll() { + return filterIndexBounds((refilter = xfilterFilter.filterAll)(values)); + } -var quicksort_sizeThreshold = 32; -var crossfilter_array8 = crossfilter_arrayUntyped, - crossfilter_array16 = crossfilter_arrayUntyped, - crossfilter_array32 = crossfilter_arrayUntyped, - crossfilter_arrayLengthen = crossfilter_arrayLengthenUntyped, - crossfilter_arrayWiden = crossfilter_arrayWidenUntyped; + // Filters this dimension using an arbitrary function. + function filterFunction(f) { + refilterFunction = f; + refilter = xfilterFilter.filterAll; -if (typeof Uint8Array !== "undefined") { - crossfilter_array8 = function(n) { return new Uint8Array(n); }; - crossfilter_array16 = function(n) { return new Uint16Array(n); }; - crossfilter_array32 = function(n) { return new Uint32Array(n); }; + filterIndexFunction(f, false); - crossfilter_arrayLengthen = function(array, length) { - if (array.length >= length) return array; - var copy = new array.constructor(length); - copy.set(array); - return copy; - }; + lo0 = 0; + hi0 = n; - crossfilter_arrayWiden = function(array, width) { - var copy; - switch (width) { - case 16: copy = crossfilter_array16(array.length); break; - case 32: copy = crossfilter_array32(array.length); break; - default: throw new Error("invalid array width!"); + return dimension; } - copy.set(array); - return copy; - }; -} -function crossfilter_arrayUntyped(n) { - var array = new Array(n), i = -1; - while (++i < n) array[i] = 0; - return array; -} + function filterIndexFunction(f, filterAll) { + var i, + k, + x, + added = [], + removed = [], + valueIndexAdded = [], + valueIndexRemoved = [], + indexLength = index.length; + + if(!iterable) { + for (i = 0; i < indexLength; ++i) { + if (!(filters[offset][k = index[i]] & one) ^ !!(x = f(values[i], i))) { + if (x) added.push(k); + else removed.push(k); + } + } + } -function crossfilter_arrayLengthenUntyped(array, length) { - var n = array.length; - while (n < length) array[n++] = 0; - return array; -} + if(iterable) { + for(i=0; i < indexLength; ++i) { + if(f(values[i], i)) { + added.push(index[i]); + valueIndexAdded.push(i); + } else { + removed.push(index[i]); + valueIndexRemoved.push(i); + } + } + } -function crossfilter_arrayWidenUntyped(array, width) { - if (width > 32) throw new Error("invalid array width!"); - return array; -} -function crossfilter_filterExact(bisect, value) { - return function(values) { - var n = values.length; - return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)]; - }; -} + if(!iterable) { + for(i=0; i 0) toSkip = top_offset; + + while (--i >= lo0 && k > 0) { + if (filters.zero(j = index[i])) { + if(toSkip > 0) { + //skip matching row + --toSkip; + } else { + array.push(data[j]); + --k; + } + } + } + + if(iterable){ + for(i = 0; i < iterablesEmptyRows.length && k > 0; i++) { + // Add row with empty iterable column at the end + if(filters.zero(j = iterablesEmptyRows[i])) { + if(toSkip > 0) { + //skip matching row + --toSkip; + } else { + array.push(data[j]); + --k; + } + } + } + } + + return array; + } + + // Returns the bottom K selected records based on this dimension's order. + // Note: observes this dimension's filter, unlike group and groupAll. + function bottom(k, bottom_offset) { + var array = [], + i, + j, + toSkip = 0; + + if(bottom_offset && bottom_offset > 0) toSkip = bottom_offset; + + if(iterable) { + // Add row with empty iterable column at the top + for(i = 0; i < iterablesEmptyRows.length && k > 0; i++) { + if(filters.zero(j = iterablesEmptyRows[i])) { + if(toSkip > 0) { + //skip matching row + --toSkip; + } else { + array.push(data[j]); + --k; + } + } + } + } + + i = lo0; + + while (i < hi0 && k > 0) { + if (filters.zero(j = index[i])) { + if(toSkip > 0) { + //skip matching row + --toSkip; + } else { + array.push(data[j]); + --k; + } + } + i++; + } + + return array; + } + + // Adds a new group to this dimension, using the specified key function. + function group(key) { + var group = { + top: top, + all: all, + reduce: reduce, + reduceCount: reduceCount, + reduceSum: reduceSum, + order: order, + orderNatural: orderNatural, + size: size, + dispose: dispose, + remove: dispose // for backwards-compatibility + }; + + // Ensure that this group will be removed when the dimension is removed. + dimensionGroups.push(group); + + var groups, // array of {key, value} + groupIndex, // object id ↦ group id + groupWidth = 8, + groupCapacity = crossfilter_capacity(groupWidth), + k = 0, // cardinality + select, + heap, + reduceAdd, + reduceRemove, + reduceInitial, + update = crossfilter_null, + reset = crossfilter_null, + resetNeeded = true, + groupAll = key === crossfilter_null; + + if (arguments.length < 1) key = crossfilter_identity; + + // The group listens to the crossfilter for when any dimension changes, so + // that it can update the associated reduce values. It must also listen to + // the parent dimension for when data is added, and compute new keys. + filterListeners.push(update); + indexListeners.push(add); + removeDataListeners.push(removeData); + + // Incorporate any existing data into the grouping. + add(values, index, 0, n); + + // Incorporates the specified new values into this group. + // This function is responsible for updating groups and groupIndex. + function add(newValues, newIndex, n0, n1) { + + if(iterable) { + n0old = n0 + n0 = values.length - newValues.length + n1 = newValues.length; + } + + var oldGroups = groups, + reIndex = iterable ? [] : crossfilter_index(k, groupCapacity), + add = reduceAdd, + remove = reduceRemove, + initial = reduceInitial, + k0 = k, // old cardinality + i0 = 0, // index of old group + i1 = 0, // index of new record + j, // object id + g0, // old group + x0, // old key + x1, // new key + g, // group to add + x; // key of group to add + + // If a reset is needed, we don't need to update the reduce values. + if (resetNeeded) add = initial = crossfilter_null; + if (resetNeeded) remove = initial = crossfilter_null; + + // Reset the new groups (k is a lower bound). + // Also, make sure that groupIndex exists and is long enough. + groups = new Array(k), k = 0; + if(iterable){ + groupIndex = k0 > 1 ? groupIndex : []; + } + else{ + groupIndex = k0 > 1 ? xfilterArray.arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity); + } + + + // Get the first old key (x0 of g0), if it exists. + if (k0) x0 = (g0 = oldGroups[0]).key; + + // Find the first new key (x1), skipping NaN keys. + while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1; + + // While new keys remain… + while (i1 < n1) { + + // Determine the lesser of the two current keys; new and old. + // If there are no old keys remaining, then always add the new key. + if (g0 && x0 <= x1) { + g = g0, x = x0; + + // Record the new index of the old group. + reIndex[i0] = k; + + // Retrieve the next old key. + if (g0 = oldGroups[++i0]) x0 = g0.key; + } else { + g = {key: x1, value: initial()}, x = x1; + } + + // Add the lesser group. + groups[k] = g; + + // Add any selected records belonging to the added group, while + // advancing the new key and populating the associated group index. + + while (x1 <= x) { + j = newIndex[i1] + (iterable ? n0old : n0) + + + if(iterable){ + if(groupIndex[j]){ + groupIndex[j].push(k) + } + else{ + groupIndex[j] = [k] + } + } + else{ + groupIndex[j] = k; + } + + // Always add new values to groups. Only remove when not in filter. + // This gives groups full information on data life-cycle. + g.value = add(g.value, data[j], true); + if (!filters.zeroExcept(j, offset, zero)) g.value = remove(g.value, data[j], false); + if (++i1 >= n1) break; + x1 = key(newValues[i1]); + } + + groupIncrement(); + } + + // Add any remaining old groups that were greater th1an all new keys. + // No incremental reduce is needed; these groups have no new records. + // Also record the new index of the old group. + while (i0 < k0) { + groups[reIndex[i0] = k] = oldGroups[i0++]; + groupIncrement(); + } + + + // Fill in gaps with empty arrays where there may have been rows with empty iterables + if(iterable){ + for (i = 0; i < n; i++) { + if(!groupIndex[i]){ + groupIndex[i] = [] + } + } + } + + // If we added any new groups before any old groups, + // update the group index of all the old records. + if(k > i0){ + if(iterable){ + groupIndex = permute(groupIndex, reIndex, true) + } + else{ + for (i0 = 0; i0 < n0; ++i0) { + groupIndex[i0] = reIndex[groupIndex[i0]]; + } + } + } + + // Modify the update and reset behavior based on the cardinality. + // If the cardinality is less than or equal to one, then the groupIndex + // is not needed. If the cardinality is zero, then there are no records + // and therefore no groups to update or reset. Note that we also must + // change the registered listener to point to the new method. + j = filterListeners.indexOf(update); + if (k > 1) { + update = updateMany; + reset = resetMany; + } else { + if (!k && groupAll) { + k = 1; + groups = [{key: null, value: initial()}]; + } + if (k === 1) { + update = updateOne; + reset = resetOne; + } else { + update = crossfilter_null; + reset = crossfilter_null; + } + groupIndex = null; + } + filterListeners[j] = update; + + // Count the number of added groups, + // and widen the group index as needed. + function groupIncrement() { + if(iterable){ + k++ + return + } + if (++k === groupCapacity) { + reIndex = xfilterArray.arrayWiden(reIndex, groupWidth <<= 1); + groupIndex = xfilterArray.arrayWiden(groupIndex, groupWidth); + groupCapacity = crossfilter_capacity(groupWidth); + } + } + } -function crossfilter_filterRange(bisect, range) { - var min = range[0], - max = range[1]; - return function(values) { - var n = values.length; - return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)]; - }; -} + function removeData() { + if (k > 1) { + var oldK = k, + oldGroups = groups, + seenGroups = crossfilter_index(oldK, oldK); -function crossfilter_filterAll(values) { - return [0, values.length]; -} -function crossfilter_null() { - return null; -} -function crossfilter_zero() { - return 0; -} -function crossfilter_reduceIncrement(p) { - return p + 1; -} + // Filter out non-matches by copying matching group index entries to + // the beginning of the array. + for (var i = 0, j = 0; i < n; ++i) { + if (!filters.zero(i)) { + seenGroups[groupIndex[j] = groupIndex[i]] = 1; + ++j; + } + } -function crossfilter_reduceDecrement(p) { - return p - 1; -} + // Reassemble groups including only those groups that were referred + // to by matching group index entries. Note the new group index in + // seenGroups. + groups = [], k = 0; + for (i = 0; i < oldK; ++i) { + if (seenGroups[i]) { + seenGroups[i] = k++; + groups.push(oldGroups[i]); + } + } -function crossfilter_reduceAdd(f) { - return function(p, v) { - return p + +f(v); - }; -} + if (k > 1) { + // Reindex the group index using seenGroups to find the new index. + for (var i = 0; i < j; ++i) groupIndex[i] = seenGroups[groupIndex[i]]; + } else { + groupIndex = null; + } + filterListeners[filterListeners.indexOf(update)] = k > 1 + ? (reset = resetMany, update = updateMany) + : k === 1 ? (reset = resetOne, update = updateOne) + : reset = update = crossfilter_null; + } else if (k === 1) { + if (groupAll) return; + for (var i = 0; i < n; ++i) if (!filters.zero(i)) return; + groups = [], k = 0; + filterListeners[filterListeners.indexOf(update)] = + update = reset = crossfilter_null; + } + } -function crossfilter_reduceSubtract(f) { - return function(p, v) { - return p - f(v); - }; -} -exports.crossfilter = crossfilter; + // Reduces the specified selected or deselected records. + // This function is only used when the cardinality is greater than 1. + // notFilter indicates a crossfilter.add/remove operation. + function updateMany(filterOne, filterOffset, added, removed, notFilter) { -function crossfilter() { - var crossfilter = { - add: add, - remove: removeData, - dimension: dimension, - groupAll: groupAll, - size: size - }; + if ((filterOne === one && filterOffset === offset) || resetNeeded) return; - var data = [], // the records - n = 0, // the number of records; data.length - m = 0, // a bit mask representing which dimensions are in use - M = 8, // number of dimensions that can fit in `filters` - filters = crossfilter_array8(0), // M bits per record; 1 is filtered out - filterListeners = [], // when the filters change - dataListeners = [], // when data is added - removeDataListeners = []; // when data is removed + var i, + j, + k, + n, + g; - // Adds the specified new records to this crossfilter. - function add(newData) { - var n0 = n, - n1 = newData.length; + if(iterable){ + // Add the added values. + for (i = 0, n = added.length; i < n; ++i) { + if (filters.zeroExcept(k = added[i], offset, zero)) { + for (j = 0; j < groupIndex[k].length; j++) { + g = groups[groupIndex[k][j]]; + g.value = reduceAdd(g.value, data[k], false, j); + } + } + } - // If there's actually new data to add… - // Merge the new data into the existing data. - // Lengthen the filter bitset to handle the new records. - // Notify listeners (dimensions and groups) that new data is available. - if (n1) { - data = data.concat(newData); - filters = crossfilter_arrayLengthen(filters, n += n1); - dataListeners.forEach(function(l) { l(newData, n0, n1); }); - } + // Remove the removed values. + for (i = 0, n = removed.length; i < n; ++i) { + if (filters.onlyExcept(k = removed[i], offset, zero, filterOffset, filterOne)) { + for (j = 0; j < groupIndex[k].length; j++) { + g = groups[groupIndex[k][j]]; + g.value = reduceRemove(g.value, data[k], notFilter, j); + } + } + } + return; + } - return crossfilter; - } + // Add the added values. + for (i = 0, n = added.length; i < n; ++i) { + if (filters.zeroExcept(k = added[i], offset, zero)) { + g = groups[groupIndex[k]]; + g.value = reduceAdd(g.value, data[k], false); + } + } - // Removes all records that match the current filters. - function removeData() { - var newIndex = crossfilter_index(n, n), - removed = []; - for (var i = 0, j = 0; i < n; ++i) { - if (filters[i]) newIndex[i] = j++; - else removed.push(i); - } + // Remove the removed values. + for (i = 0, n = removed.length; i < n; ++i) { + if (filters.onlyExcept(k = removed[i], offset, zero, filterOffset, filterOne)) { + g = groups[groupIndex[k]]; + g.value = reduceRemove(g.value, data[k], notFilter); + } + } + } - // Remove all matching records from groups. - filterListeners.forEach(function(l) { l(0, [], removed); }); + // Reduces the specified selected or deselected records. + // This function is only used when the cardinality is 1. + // notFilter indicates a crossfilter.add/remove operation. + function updateOne(filterOne, filterOffset, added, removed, notFilter) { + if ((filterOne === one && filterOffset === offset) || resetNeeded) return; - // Update indexes. - removeDataListeners.forEach(function(l) { l(newIndex); }); + var i, + k, + n, + g = groups[0]; - // Remove old filters and data by overwriting. - for (var i = 0, j = 0, k; i < n; ++i) { - if (k = filters[i]) { - if (i !== j) filters[j] = k, data[j] = data[i]; - ++j; + // Add the added values. + for (i = 0, n = added.length; i < n; ++i) { + if (filters.zeroExcept(k = added[i], offset, zero)) { + g.value = reduceAdd(g.value, data[k], false); + } + } + + // Remove the removed values. + for (i = 0, n = removed.length; i < n; ++i) { + if (filters.onlyExcept(k = removed[i], offset, zero, filterOffset, filterOne)) { + g.value = reduceRemove(g.value, data[k], notFilter); + } + } } - } - data.length = j; - while (n > j) filters[--n] = 0; - } - // Adds a new dimension with the specified value accessor function. - function dimension(value) { - var dimension = { - filter: filter, - filterExact: filterExact, - filterRange: filterRange, - filterFunction: filterFunction, - filterAll: filterAll, - top: top, - bottom: bottom, - group: group, - groupAll: groupAll, - dispose: dispose, - remove: dispose // for backwards-compatibility - }; + // Recomputes the group reduce values from scratch. + // This function is only used when the cardinality is greater than 1. + function resetMany() { + var i, + j, + g; - var one = ~m & -~m, // lowest unset bit as mask, e.g., 00001000 - zero = ~one, // inverted one, e.g., 11110111 - values, // sorted, cached array - index, // value rank ↦ object id - newValues, // temporary array storing newly-added values - newIndex, // temporary array storing newly-added index - sort = quicksort_by(function(i) { return newValues[i]; }), - refilter = crossfilter_filterAll, // for recomputing filter - refilterFunction, // the custom filter function in use - indexListeners = [], // when data is added - dimensionGroups = [], - lo0 = 0, - hi0 = 0; + // Reset all group values. + for (i = 0; i < k; ++i) { + groups[i].value = reduceInitial(); + } - // Updating a dimension is a two-stage process. First, we must update the - // associated filters for the newly-added records. Once all dimensions have - // updated their filters, the groups are notified to update. - dataListeners.unshift(preAdd); - dataListeners.push(postAdd); + // We add all records and then remove filtered records so that reducers + // can build an 'unfiltered' view even if there are already filters in + // place on other dimensions. + if(iterable){ + for (i = 0; i < n; ++i) { + for (j = 0; j < groupIndex[i].length; j++) { + g = groups[groupIndex[i][j]]; + g.value = reduceAdd(g.value, data[i], true, j); + } + } + for (i = 0; i < n; ++i) { + if (!filters.zeroExcept(i, offset, zero)) { + for (j = 0; j < groupIndex[i].length; j++) { + g = groups[groupIndex[i][j]]; + g.value = reduceRemove(g.value, data[i], false, j); + } + } + } + return; + } - removeDataListeners.push(removeData); + for (i = 0; i < n; ++i) { + g = groups[groupIndex[i]]; + g.value = reduceAdd(g.value, data[i], true); + } + for (i = 0; i < n; ++i) { + if (!filters.zeroExcept(i, offset, zero)) { + g = groups[groupIndex[i]]; + g.value = reduceRemove(g.value, data[i], false); + } + } + } - // Incorporate any existing data into this dimension, and make sure that the - // filter bitset is wide enough to handle the new dimension. - m |= one; - if (M >= 32 ? !one : m & -(1 << M)) { - filters = crossfilter_arrayWiden(filters, M <<= 1); - } - preAdd(data, 0, n); - postAdd(data, 0, n); + // Recomputes the group reduce values from scratch. + // This function is only used when the cardinality is 1. + function resetOne() { + var i, + g = groups[0]; - // Incorporates the specified new records into this dimension. - // This function is responsible for updating filters, values, and index. - function preAdd(newData, n0, n1) { + // Reset the singleton group values. + g.value = reduceInitial(); - // Permute new values into natural order using a sorted index. - newValues = newData.map(value); - newIndex = sort(crossfilter_range(n1), 0, n1); - newValues = permute(newValues, newIndex); + // We add all records and then remove filtered records so that reducers + // can build an 'unfiltered' view even if there are already filters in + // place on other dimensions. + for (i = 0; i < n; ++i) { + g.value = reduceAdd(g.value, data[i], true); + } - // Bisect newValues to determine which new records are selected. - var bounds = refilter(newValues), lo1 = bounds[0], hi1 = bounds[1], i; - if (refilterFunction) { - for (i = 0; i < n1; ++i) { - if (!refilterFunction(newValues[i], i)) filters[newIndex[i] + n0] |= one; + for (i = 0; i < n; ++i) { + if (!filters.zeroExcept(i, offset, zero)) { + g.value = reduceRemove(g.value, data[i], false); + } } - } else { - for (i = 0; i < lo1; ++i) filters[newIndex[i] + n0] |= one; - for (i = hi1; i < n1; ++i) filters[newIndex[i] + n0] |= one; } - // If this dimension previously had no data, then we don't need to do the - // more expensive merge operation; use the new values and index as-is. - if (!n0) { - values = newValues; - index = newIndex; - lo0 = lo1; - hi0 = hi1; - return; + // Returns the array of group values, in the dimension's natural order. + function all() { + if (resetNeeded) reset(), resetNeeded = false; + return groups; } - var oldValues = values, - oldIndex = index, - i0 = 0, - i1 = 0; - - // Otherwise, create new arrays into which to merge new and old. - values = new Array(n); - index = crossfilter_index(n, n); + // Returns a new array containing the top K group values, in reduce order. + function top(k) { + var top = select(all(), 0, groups.length, k); + return heap.sort(top, 0, top.length); + } - // Merge the old and new sorted values, and old and new index. - for (i = 0; i0 < n0 && i1 < n1; ++i) { - if (oldValues[i0] < newValues[i1]) { - values[i] = oldValues[i0]; - index[i] = oldIndex[i0++]; - } else { - values[i] = newValues[i1]; - index[i] = newIndex[i1++] + n0; - } + // Sets the reduce behavior for this group to use the specified functions. + // This method lazily recomputes the reduce values, waiting until needed. + function reduce(add, remove, initial) { + reduceAdd = add; + reduceRemove = remove; + reduceInitial = initial; + resetNeeded = true; + return group; } - // Add any remaining old values. - for (; i0 < n0; ++i0, ++i) { - values[i] = oldValues[i0]; - index[i] = oldIndex[i0]; + // A convenience method for reducing by count. + function reduceCount() { + return reduce(xfilterReduce.reduceIncrement, xfilterReduce.reduceDecrement, crossfilter_zero); } - // Add any remaining new values. - for (; i1 < n1; ++i1, ++i) { - values[i] = newValues[i1]; - index[i] = newIndex[i1] + n0; + // A convenience method for reducing by sum(value). + function reduceSum(value) { + return reduce(xfilterReduce.reduceAdd(value), xfilterReduce.reduceSubtract(value), crossfilter_zero); } - // Bisect again to recompute lo0 and hi0. - bounds = refilter(values), lo0 = bounds[0], hi0 = bounds[1]; - } - - // When all filters have updated, notify index listeners of the new values. - function postAdd(newData, n0, n1) { - indexListeners.forEach(function(l) { l(newValues, newIndex, n0, n1); }); - newValues = newIndex = null; - } - - function removeData(reIndex) { - for (var i = 0, j = 0, k; i < n; ++i) { - if (filters[k = index[i]]) { - if (i !== j) values[j] = values[i]; - index[j] = reIndex[k]; - ++j; - } + // Sets the reduce order, using the specified accessor. + function order(value) { + select = xfilterHeapselect.by(valueOf); + heap = xfilterHeap.by(valueOf); + function valueOf(d) { return value(d.value); } + return group; } - values.length = j; - while (j < n) index[j++] = 0; - - // Bisect again to recompute lo0 and hi0. - var bounds = refilter(values); - lo0 = bounds[0], hi0 = bounds[1]; - } - // Updates the selected values based on the specified bounds [lo, hi]. - // This implementation is used by all the public filter methods. - function filterIndexBounds(bounds) { - var lo1 = bounds[0], - hi1 = bounds[1]; - - if (refilterFunction) { - refilterFunction = null; - filterIndexFunction(function(d, i) { return lo1 <= i && i < hi1; }); - lo0 = lo1; - hi0 = hi1; - return dimension; + // A convenience method for natural ordering by reduce value. + function orderNatural() { + return order(crossfilter_identity); } - var i, - j, - k, - added = [], - removed = []; - - // Fast incremental update based on previous lo index. - if (lo1 < lo0) { - for (i = lo1, j = Math.min(lo0, hi1); i < j; ++i) { - filters[k = index[i]] ^= one; - added.push(k); - } - } else if (lo1 > lo0) { - for (i = lo0, j = Math.min(lo1, hi0); i < j; ++i) { - filters[k = index[i]] ^= one; - removed.push(k); - } + // Returns the cardinality of this group, irrespective of any filters. + function size() { + return k; } - // Fast incremental update based on previous hi index. - if (hi1 > hi0) { - for (i = Math.max(lo1, hi0), j = hi1; i < j; ++i) { - filters[k = index[i]] ^= one; - added.push(k); - } - } else if (hi1 < hi0) { - for (i = Math.max(lo0, hi1), j = hi0; i < j; ++i) { - filters[k = index[i]] ^= one; - removed.push(k); - } + // Removes this group and associated event listeners. + function dispose() { + var i = filterListeners.indexOf(update); + if (i >= 0) filterListeners.splice(i, 1); + i = indexListeners.indexOf(add); + if (i >= 0) indexListeners.splice(i, 1); + i = removeDataListeners.indexOf(removeData); + if (i >= 0) removeDataListeners.splice(i, 1); + return group; } - lo0 = lo1; - hi0 = hi1; - filterListeners.forEach(function(l) { l(one, added, removed); }); - return dimension; + return reduceCount().orderNatural(); } - // Filters this dimension using the specified range, value, or null. - // If the range is null, this is equivalent to filterAll. - // If the range is an array, this is equivalent to filterRange. - // Otherwise, this is equivalent to filterExact. - function filter(range) { - return range == null - ? filterAll() : Array.isArray(range) - ? filterRange(range) : typeof range === "function" - ? filterFunction(range) - : filterExact(range); + // A convenience function for generating a singleton group. + function groupAll() { + var g = group(crossfilter_null), all = g.all; + delete g.all; + delete g.top; + delete g.order; + delete g.orderNatural; + delete g.size; + g.value = function() { return all()[0].value; }; + return g; } - // Filters this dimension to select the exact value. - function filterExact(value) { - return filterIndexBounds((refilter = crossfilter_filterExact(bisect, value))(values)); + // Removes this dimension and associated groups and event listeners. + function dispose() { + dimensionGroups.forEach(function(group) { group.dispose(); }); + var i = dataListeners.indexOf(preAdd); + if (i >= 0) dataListeners.splice(i, 1); + i = dataListeners.indexOf(postAdd); + if (i >= 0) dataListeners.splice(i, 1); + i = removeDataListeners.indexOf(removeData); + if (i >= 0) removeDataListeners.splice(i, 1); + filters.masks[offset] &= zero; + return filterAll(); } - // Filters this dimension to select the specified range [lo, hi]. - // The lower bound is inclusive, and the upper bound is exclusive. - function filterRange(range) { - return filterIndexBounds((refilter = crossfilter_filterRange(bisect, range))(values)); - } + return dimension; + } - // Clears any filters on this dimension. - function filterAll() { - return filterIndexBounds((refilter = crossfilter_filterAll)(values)); - } + // A convenience method for groupAll on a dummy dimension. + // This implementation can be optimized since it always has cardinality 1. + function groupAll() { + var group = { + reduce: reduce, + reduceCount: reduceCount, + reduceSum: reduceSum, + value: value, + dispose: dispose, + remove: dispose // for backwards-compatibility + }; - // Filters this dimension using an arbitrary function. - function filterFunction(f) { - refilter = crossfilter_filterAll; + var reduceValue, + reduceAdd, + reduceRemove, + reduceInitial, + resetNeeded = true; - filterIndexFunction(refilterFunction = f); + // The group listens to the crossfilter for when any dimension changes, so + // that it can update the reduce value. It must also listen to the parent + // dimension for when data is added. + filterListeners.push(update); + dataListeners.push(add); - lo0 = 0; - hi0 = n; + // For consistency; actually a no-op since resetNeeded is true. + add(data, 0, n); - return dimension; - } + // Incorporates the specified new values into this group. + function add(newData, n0) { + var i; - function filterIndexFunction(f) { - var i, - k, - x, - added = [], - removed = []; + if (resetNeeded) return; - for (i = 0; i < n; ++i) { - if (!(filters[k = index[i]] & one) ^ !!(x = f(values[i], i))) { - if (x) filters[k] &= zero, added.push(k); - else filters[k] |= one, removed.push(k); - } - } - filterListeners.forEach(function(l) { l(one, added, removed); }); - } + // Cycle through all the values. + for (i = n0; i < n; ++i) { - // Returns the top K selected records based on this dimension's order. - // Note: observes this dimension's filter, unlike group and groupAll. - function top(k) { - var array = [], - i = hi0, - j; + // Add all values all the time. + reduceValue = reduceAdd(reduceValue, data[i], true); - while (--i >= lo0 && k > 0) { - if (!filters[j = index[i]]) { - array.push(data[j]); - --k; + // Remove the value if filtered. + if (!filters.zero(i)) { + reduceValue = reduceRemove(reduceValue, data[i], false); } } - - return array; } - // Returns the bottom K selected records based on this dimension's order. - // Note: observes this dimension's filter, unlike group and groupAll. - function bottom(k) { - var array = [], - i = lo0, - j; + // Reduces the specified selected or deselected records. + function update(filterOne, filterOffset, added, removed, notFilter) { + var i, + k, + n; - while (i < hi0 && k > 0) { - if (!filters[j = index[i]]) { - array.push(data[j]); - --k; + if (resetNeeded) return; + + // Add the added values. + for (i = 0, n = added.length; i < n; ++i) { + if (filters.zero(k = added[i])) { + reduceValue = reduceAdd(reduceValue, data[k], notFilter); } - i++; } - return array; + // Remove the removed values. + for (i = 0, n = removed.length; i < n; ++i) { + if (filters.only(k = removed[i], filterOffset, filterOne)) { + reduceValue = reduceRemove(reduceValue, data[k], notFilter); + } + } } - // Adds a new group to this dimension, using the specified key function. - function group(key) { - var group = { - top: top, - all: all, - reduce: reduce, - reduceCount: reduceCount, - reduceSum: reduceSum, - order: order, - orderNatural: orderNatural, - size: size, - dispose: dispose, - remove: dispose // for backwards-compatibility - }; + // Recomputes the group reduce value from scratch. + function reset() { + var i; - // Ensure that this group will be removed when the dimension is removed. - dimensionGroups.push(group); + reduceValue = reduceInitial(); - var groups, // array of {key, value} - groupIndex, // object id ↦ group id - groupWidth = 8, - groupCapacity = crossfilter_capacity(groupWidth), - k = 0, // cardinality - select, - heap, - reduceAdd, - reduceRemove, - reduceInitial, - update = crossfilter_null, - reset = crossfilter_null, - resetNeeded = true, - groupAll = key === crossfilter_null; + // Cycle through all the values. + for (i = 0; i < n; ++i) { - if (arguments.length < 1) key = crossfilter_identity; + // Add all values all the time. + reduceValue = reduceAdd(reduceValue, data[i], true); - // The group listens to the crossfilter for when any dimension changes, so - // that it can update the associated reduce values. It must also listen to - // the parent dimension for when data is added, and compute new keys. - filterListeners.push(update); - indexListeners.push(add); - removeDataListeners.push(removeData); + // Remove the value if it is filtered. + if (!filters.zero(i)) { + reduceValue = reduceRemove(reduceValue, data[i], false); + } + } + } + + // Sets the reduce behavior for this group to use the specified functions. + // This method lazily recomputes the reduce value, waiting until needed. + function reduce(add, remove, initial) { + reduceAdd = add; + reduceRemove = remove; + reduceInitial = initial; + resetNeeded = true; + return group; + } + + // A convenience method for reducing by count. + function reduceCount() { + return reduce(xfilterReduce.reduceIncrement, xfilterReduce.reduceDecrement, crossfilter_zero); + } - // Incorporate any existing data into the grouping. - add(values, index, 0, n); + // A convenience method for reducing by sum(value). + function reduceSum(value) { + return reduce(xfilterReduce.reduceAdd(value), xfilterReduce.reduceSubtract(value), crossfilter_zero); + } - // Incorporates the specified new values into this group. - // This function is responsible for updating groups and groupIndex. - function add(newValues, newIndex, n0, n1) { - var oldGroups = groups, - reIndex = crossfilter_index(k, groupCapacity), - add = reduceAdd, - initial = reduceInitial, - k0 = k, // old cardinality - i0 = 0, // index of old group - i1 = 0, // index of new record - j, // object id - g0, // old group - x0, // old key - x1, // new key - g, // group to add - x; // key of group to add + // Returns the computed reduce value. + function value() { + if (resetNeeded) reset(), resetNeeded = false; + return reduceValue; + } - // If a reset is needed, we don't need to update the reduce values. - if (resetNeeded) add = initial = crossfilter_null; + // Removes this group and associated event listeners. + function dispose() { + var i = filterListeners.indexOf(update); + if (i >= 0) filterListeners.splice(i); + i = dataListeners.indexOf(add); + if (i >= 0) dataListeners.splice(i); + return group; + } - // Reset the new groups (k is a lower bound). - // Also, make sure that groupIndex exists and is long enough. - groups = new Array(k), k = 0; - groupIndex = k0 > 1 ? crossfilter_arrayLengthen(groupIndex, n) : crossfilter_index(n, groupCapacity); + return reduceCount(); + } - // Get the first old key (x0 of g0), if it exists. - if (k0) x0 = (g0 = oldGroups[0]).key; + // Returns the number of records in this crossfilter, irrespective of any filters. + function size() { + return n; + } - // Find the first new key (x1), skipping NaN keys. - while (i1 < n1 && !((x1 = key(newValues[i1])) >= x1)) ++i1; + // Returns the raw row data contained in this crossfilter + function all(){ + return data; + } - // While new keys remain… - while (i1 < n1) { + function onChange(cb){ + if(typeof cb !== 'function'){ + console.warn('onChange callback parameter must be a function!'); + return; + } + callbacks.push(cb); + return function(){ + callbacks.splice(callbacks.indexOf(cb), 1); + }; + } - // Determine the lesser of the two current keys; new and old. - // If there are no old keys remaining, then always add the new key. - if (g0 && x0 <= x1) { - g = g0, x = x0; + function triggerOnChange(eventName){ + for (var i = 0; i < callbacks.length; i++) { + callbacks[i](eventName); + } + } - // Record the new index of the old group. - reIndex[i0] = k; + return arguments.length + ? add(arguments[0]) + : crossfilter; +} - // Retrieve the next old key. - if (g0 = oldGroups[++i0]) x0 = g0.key; - } else { - g = {key: x1, value: initial()}, x = x1; - } +// Returns an array of size n, big enough to store ids up to m. +function crossfilter_index(n, m) { + return (m < 0x101 + ? xfilterArray.array8 : m < 0x10001 + ? xfilterArray.array16 + : xfilterArray.array32)(n); +} - // Add the lesser group. - groups[k] = g; +// Constructs a new array of size n, with sequential values from 0 to n - 1. +function crossfilter_range(n) { + var range = crossfilter_index(n, n); + for (var i = -1; ++i < n;) range[i] = i; + return range; +} - // Add any selected records belonging to the added group, while - // advancing the new key and populating the associated group index. - while (!(x1 > x)) { - groupIndex[j = newIndex[i1] + n0] = k; - if (!(filters[j] & zero)) g.value = add(g.value, data[j]); - if (++i1 >= n1) break; - x1 = key(newValues[i1]); - } +function crossfilter_capacity(w) { + return w === 8 + ? 0x100 : w === 16 + ? 0x10000 + : 0x100000000; +} - groupIncrement(); - } +},{"./../package.json":5,"./array":6,"./bisect":7,"./filter":9,"./heap":10,"./heapselect":11,"./identity":12,"./insertionsort":13,"./null":14,"./permute":15,"./quicksort":16,"./reduce":17,"./zero":18,"lodash.result":4}],9:[function(require,module,exports){ +function crossfilter_filterExact(bisect, value) { + return function(values) { + var n = values.length; + return [bisect.left(values, value, 0, n), bisect.right(values, value, 0, n)]; + }; +} - // Add any remaining old groups that were greater than all new keys. - // No incremental reduce is needed; these groups have no new records. - // Also record the new index of the old group. - while (i0 < k0) { - groups[reIndex[i0] = k] = oldGroups[i0++]; - groupIncrement(); - } +function crossfilter_filterRange(bisect, range) { + var min = range[0], + max = range[1]; + return function(values) { + var n = values.length; + return [bisect.left(values, min, 0, n), bisect.left(values, max, 0, n)]; + }; +} - // If we added any new groups before any old groups, - // update the group index of all the old records. - if (k > i0) for (i0 = 0; i0 < n0; ++i0) { - groupIndex[i0] = reIndex[groupIndex[i0]]; - } +function crossfilter_filterAll(values) { + return [0, values.length]; +} - // Modify the update and reset behavior based on the cardinality. - // If the cardinality is less than or equal to one, then the groupIndex - // is not needed. If the cardinality is zero, then there are no records - // and therefore no groups to update or reset. Note that we also must - // change the registered listener to point to the new method. - j = filterListeners.indexOf(update); - if (k > 1) { - update = updateMany; - reset = resetMany; - } else { - if (!k && groupAll) { - k = 1; - groups = [{key: null, value: initial()}]; - } - if (k === 1) { - update = updateOne; - reset = resetOne; - } else { - update = crossfilter_null; - reset = crossfilter_null; - } - groupIndex = null; - } - filterListeners[j] = update; +module.exports = { + filterExact: crossfilter_filterExact, + filterRange: crossfilter_filterRange, + filterAll: crossfilter_filterAll +}; - // Count the number of added groups, - // and widen the group index as needed. - function groupIncrement() { - if (++k === groupCapacity) { - reIndex = crossfilter_arrayWiden(reIndex, groupWidth <<= 1); - groupIndex = crossfilter_arrayWiden(groupIndex, groupWidth); - groupCapacity = crossfilter_capacity(groupWidth); - } - } - } +},{}],10:[function(require,module,exports){ +var crossfilter_identity = require('./identity'); - function removeData() { - if (k > 1) { - var oldK = k, - oldGroups = groups, - seenGroups = crossfilter_index(oldK, oldK); +function heap_by(f) { - // Filter out non-matches by copying matching group index entries to - // the beginning of the array. - for (var i = 0, j = 0; i < n; ++i) { - if (filters[i]) { - seenGroups[groupIndex[j] = groupIndex[i]] = 1; - ++j; - } - } + // Builds a binary heap within the specified array a[lo:hi]. The heap has the + // property such that the parent a[lo+i] is always less than or equal to its + // two children: a[lo+2*i+1] and a[lo+2*i+2]. + function heap(a, lo, hi) { + var n = hi - lo, + i = (n >>> 1) + 1; + while (--i > 0) sift(a, i, n, lo); + return a; + } - // Reassemble groups including only those groups that were referred - // to by matching group index entries. Note the new group index in - // seenGroups. - groups = [], k = 0; - for (i = 0; i < oldK; ++i) { - if (seenGroups[i]) { - seenGroups[i] = k++; - groups.push(oldGroups[i]); - } - } + // Sorts the specified array a[lo:hi] in descending order, assuming it is + // already a heap. + function sort(a, lo, hi) { + var n = hi - lo, + t; + while (--n > 0) t = a[lo], a[lo] = a[lo + n], a[lo + n] = t, sift(a, 1, n, lo); + return a; + } - if (k > 1) { - // Reindex the group index using seenGroups to find the new index. - for (var i = 0; i < j; ++i) groupIndex[i] = seenGroups[groupIndex[i]]; - } else { - groupIndex = null; - } - filterListeners[filterListeners.indexOf(update)] = k > 1 - ? (reset = resetMany, update = updateMany) - : k === 1 ? (reset = resetOne, update = updateOne) - : reset = update = crossfilter_null; - } else if (k === 1) { - if (groupAll) return; - for (var i = 0; i < n; ++i) if (filters[i]) return; - groups = [], k = 0; - filterListeners[filterListeners.indexOf(update)] = - update = reset = crossfilter_null; - } - } + // Sifts the element a[lo+i-1] down the heap, where the heap is the contiguous + // slice of array a[lo:lo+n]. This method can also be used to update the heap + // incrementally, without incurring the full cost of reconstructing the heap. + function sift(a, i, n, lo) { + var d = a[--lo + i], + x = f(d), + child; + while ((child = i << 1) <= n) { + if (child < n && f(a[lo + child]) > f(a[lo + child + 1])) child++; + if (x <= f(a[lo + child])) break; + a[lo + i] = a[lo + child]; + i = child; + } + a[lo + i] = d; + } - // Reduces the specified selected or deselected records. - // This function is only used when the cardinality is greater than 1. - function updateMany(filterOne, added, removed) { - if (filterOne === one || resetNeeded) return; + heap.sort = sort; + return heap; +} - var i, - k, - n, - g; +module.exports = heap_by(crossfilter_identity); +module.exports.by = heap_by; - // Add the added values. - for (i = 0, n = added.length; i < n; ++i) { - if (!(filters[k = added[i]] & zero)) { - g = groups[groupIndex[k]]; - g.value = reduceAdd(g.value, data[k]); - } - } +},{"./identity":12}],11:[function(require,module,exports){ +var crossfilter_identity = require('./identity'); +var xFilterHeap = require('./heap'); - // Remove the removed values. - for (i = 0, n = removed.length; i < n; ++i) { - if ((filters[k = removed[i]] & zero) === filterOne) { - g = groups[groupIndex[k]]; - g.value = reduceRemove(g.value, data[k]); - } - } - } +function heapselect_by(f) { + var heap = xFilterHeap.by(f); - // Reduces the specified selected or deselected records. - // This function is only used when the cardinality is 1. - function updateOne(filterOne, added, removed) { - if (filterOne === one || resetNeeded) return; + // Returns a new array containing the top k elements in the array a[lo:hi]. + // The returned array is not sorted, but maintains the heap property. If k is + // greater than hi - lo, then fewer than k elements will be returned. The + // order of elements in a is unchanged by this operation. + function heapselect(a, lo, hi, k) { + var queue = new Array(k = Math.min(hi - lo, k)), + min, + i, + x, + d; - var i, - k, - n, - g = groups[0]; + for (i = 0; i < k; ++i) queue[i] = a[lo++]; + heap(queue, 0, k); - // Add the added values. - for (i = 0, n = added.length; i < n; ++i) { - if (!(filters[k = added[i]] & zero)) { - g.value = reduceAdd(g.value, data[k]); - } + if (lo < hi) { + min = f(queue[0]); + do { + if (x = f(d = a[lo]) > min) { + queue[0] = d; + min = f(heap(queue, 0, k)[0]); } + } while (++lo < hi); + } - // Remove the removed values. - for (i = 0, n = removed.length; i < n; ++i) { - if ((filters[k = removed[i]] & zero) === filterOne) { - g.value = reduceRemove(g.value, data[k]); - } - } - } + return queue; + } - // Recomputes the group reduce values from scratch. - // This function is only used when the cardinality is greater than 1. - function resetMany() { - var i, - g; + return heapselect; +} - // Reset all group values. - for (i = 0; i < k; ++i) { - groups[i].value = reduceInitial(); - } +module.exports = heapselect_by(crossfilter_identity); +module.exports.by = heapselect_by; // assign the raw function to the export as well - // Add any selected records. - for (i = 0; i < n; ++i) { - if (!(filters[i] & zero)) { - g = groups[groupIndex[i]]; - g.value = reduceAdd(g.value, data[i]); - } - } - } +},{"./heap":10,"./identity":12}],12:[function(require,module,exports){ +function crossfilter_identity(d) { + return d; +} - // Recomputes the group reduce values from scratch. - // This function is only used when the cardinality is 1. - function resetOne() { - var i, - g = groups[0]; +module.exports = crossfilter_identity; - // Reset the singleton group values. - g.value = reduceInitial(); +},{}],13:[function(require,module,exports){ +var crossfilter_identity = require('./identity'); - // Add any selected records. - for (i = 0; i < n; ++i) { - if (!(filters[i] & zero)) { - g.value = reduceAdd(g.value, data[i]); - } - } - } +function insertionsort_by(f) { - // Returns the array of group values, in the dimension's natural order. - function all() { - if (resetNeeded) reset(), resetNeeded = false; - return groups; + function insertionsort(a, lo, hi) { + for (var i = lo + 1; i < hi; ++i) { + for (var j = i, t = a[i], x = f(t); j > lo && f(a[j - 1]) > x; --j) { + a[j] = a[j - 1]; } + a[j] = t; + } + return a; + } - // Returns a new array containing the top K group values, in reduce order. - function top(k) { - var top = select(all(), 0, groups.length, k); - return heap.sort(top, 0, top.length); - } + return insertionsort; +} - // Sets the reduce behavior for this group to use the specified functions. - // This method lazily recomputes the reduce values, waiting until needed. - function reduce(add, remove, initial) { - reduceAdd = add; - reduceRemove = remove; - reduceInitial = initial; - resetNeeded = true; - return group; - } +module.exports = insertionsort_by(crossfilter_identity); +module.exports.by = insertionsort_by; - // A convenience method for reducing by count. - function reduceCount() { - return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero); - } +},{"./identity":12}],14:[function(require,module,exports){ +function crossfilter_null() { + return null; +} - // A convenience method for reducing by sum(value). - function reduceSum(value) { - return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero); - } +module.exports = crossfilter_null; - // Sets the reduce order, using the specified accessor. - function order(value) { - select = heapselect_by(valueOf); - heap = heap_by(valueOf); - function valueOf(d) { return value(d.value); } - return group; - } +},{}],15:[function(require,module,exports){ +function permute(array, index, deep) { + for (var i = 0, n = index.length, copy = deep ? JSON.parse(JSON.stringify(array)) : new Array(n); i < n; ++i) { + copy[i] = array[index[i]]; + } + return copy; +} - // A convenience method for natural ordering by reduce value. - function orderNatural() { - return order(crossfilter_identity); - } +module.exports = permute; - // Returns the cardinality of this group, irrespective of any filters. - function size() { - return k; - } +},{}],16:[function(require,module,exports){ +var crossfilter_identity = require('./identity'); +var xFilterInsertionsort = require('./insertionsort'); - // Removes this group and associated event listeners. - function dispose() { - var i = filterListeners.indexOf(update); - if (i >= 0) filterListeners.splice(i, 1); - i = indexListeners.indexOf(add); - if (i >= 0) indexListeners.splice(i, 1); - i = removeDataListeners.indexOf(removeData); - if (i >= 0) removeDataListeners.splice(i, 1); - return group; - } +// Algorithm designed by Vladimir Yaroslavskiy. +// Implementation based on the Dart project; see NOTICE and AUTHORS for details. - return reduceCount().orderNatural(); - } +function quicksort_by(f) { + var insertionsort = xFilterInsertionsort.by(f); - // A convenience function for generating a singleton group. - function groupAll() { - var g = group(crossfilter_null), all = g.all; - delete g.all; - delete g.top; - delete g.order; - delete g.orderNatural; - delete g.size; - g.value = function() { return all()[0].value; }; - return g; - } + function sort(a, lo, hi) { + return (hi - lo < quicksort_sizeThreshold + ? insertionsort + : quicksort)(a, lo, hi); + } - // Removes this dimension and associated groups and event listeners. - function dispose() { - dimensionGroups.forEach(function(group) { group.dispose(); }); - var i = dataListeners.indexOf(preAdd); - if (i >= 0) dataListeners.splice(i, 1); - i = dataListeners.indexOf(postAdd); - if (i >= 0) dataListeners.splice(i, 1); - i = removeDataListeners.indexOf(removeData); - if (i >= 0) removeDataListeners.splice(i, 1); - m &= zero; - return filterAll(); - } + function quicksort(a, lo, hi) { + // Compute the two pivots by looking at 5 elements. + var sixth = (hi - lo) / 6 | 0, + i1 = lo + sixth, + i5 = hi - 1 - sixth, + i3 = lo + hi - 1 >> 1, // The midpoint. + i2 = i3 - sixth, + i4 = i3 + sixth; - return dimension; - } + var e1 = a[i1], x1 = f(e1), + e2 = a[i2], x2 = f(e2), + e3 = a[i3], x3 = f(e3), + e4 = a[i4], x4 = f(e4), + e5 = a[i5], x5 = f(e5); - // A convenience method for groupAll on a dummy dimension. - // This implementation can be optimized since it always has cardinality 1. - function groupAll() { - var group = { - reduce: reduce, - reduceCount: reduceCount, - reduceSum: reduceSum, - value: value, - dispose: dispose, - remove: dispose // for backwards-compatibility - }; + var t; - var reduceValue, - reduceAdd, - reduceRemove, - reduceInitial, - resetNeeded = true; + // Sort the selected 5 elements using a sorting network. + if (x1 > x2) t = e1, e1 = e2, e2 = t, t = x1, x1 = x2, x2 = t; + if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; + if (x1 > x3) t = e1, e1 = e3, e3 = t, t = x1, x1 = x3, x3 = t; + if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; + if (x1 > x4) t = e1, e1 = e4, e4 = t, t = x1, x1 = x4, x4 = t; + if (x3 > x4) t = e3, e3 = e4, e4 = t, t = x3, x3 = x4, x4 = t; + if (x2 > x5) t = e2, e2 = e5, e5 = t, t = x2, x2 = x5, x5 = t; + if (x2 > x3) t = e2, e2 = e3, e3 = t, t = x2, x2 = x3, x3 = t; + if (x4 > x5) t = e4, e4 = e5, e5 = t, t = x4, x4 = x5, x5 = t; - // The group listens to the crossfilter for when any dimension changes, so - // that it can update the reduce value. It must also listen to the parent - // dimension for when data is added. - filterListeners.push(update); - dataListeners.push(add); + var pivot1 = e2, pivotValue1 = x2, + pivot2 = e4, pivotValue2 = x4; - // For consistency; actually a no-op since resetNeeded is true. - add(data, 0, n); + // e2 and e4 have been saved in the pivot variables. They will be written + // back, once the partitioning is finished. + a[i1] = e1; + a[i2] = a[lo]; + a[i3] = e3; + a[i4] = a[hi - 1]; + a[i5] = e5; - // Incorporates the specified new values into this group. - function add(newData, n0) { - var i; + var less = lo + 1, // First element in the middle partition. + great = hi - 2; // Last element in the middle partition. - if (resetNeeded) return; + // Note that for value comparison, <, <=, >= and > coerce to a primitive via + // Object.prototype.valueOf; == and === do not, so in order to be consistent + // with natural order (such as for Date objects), we must do two compares. + var pivotsEqual = pivotValue1 <= pivotValue2 && pivotValue1 >= pivotValue2; + if (pivotsEqual) { + + // Degenerated case where the partitioning becomes a dutch national flag + // problem. + // + // [ | < pivot | == pivot | unpartitioned | > pivot | ] + // ^ ^ ^ ^ ^ + // left less k great right + // + // a[left] and a[right] are undefined and are filled after the + // partitioning. + // + // Invariants: + // 1) for x in ]left, less[ : x < pivot. + // 2) for x in [less, k[ : x == pivot. + // 3) for x in ]great, right[ : x > pivot. + for (var k = less; k <= great; ++k) { + var ek = a[k], xk = f(ek); + if (xk < pivotValue1) { + if (k !== less) { + a[k] = a[less]; + a[less] = ek; + } + ++less; + } else if (xk > pivotValue1) { + + // Find the first element <= pivot in the range [k - 1, great] and + // put [:ek:] there. We know that such an element must exist: + // When k == less, then el3 (which is equal to pivot) lies in the + // interval. Otherwise a[k - 1] == pivot and the search stops at k-1. + // Note that in the latter case invariant 2 will be violated for a + // short amount of time. The invariant will be restored when the + // pivots are put into their final positions. + while (true) { + var greatValue = f(a[great]); + if (greatValue > pivotValue1) { + great--; + // This is the only location in the while-loop where a new + // iteration is started. + continue; + } else if (greatValue < pivotValue1) { + // Triple exchange. + a[k] = a[less]; + a[less++] = a[great]; + a[great--] = ek; + break; + } else { + a[k] = a[great]; + a[great--] = ek; + // Note: if great < k then we will exit the outer loop and fix + // invariant 2 (which we just violated). + break; + } + } + } + } + } else { - // Add the added values. - for (i = n0; i < n; ++i) { - if (!filters[i]) { - reduceValue = reduceAdd(reduceValue, data[i]); + // We partition the list into three parts: + // 1. < pivot1 + // 2. >= pivot1 && <= pivot2 + // 3. > pivot2 + // + // During the loop we have: + // [ | < pivot1 | >= pivot1 && <= pivot2 | unpartitioned | > pivot2 | ] + // ^ ^ ^ ^ ^ + // left less k great right + // + // a[left] and a[right] are undefined and are filled after the + // partitioning. + // + // Invariants: + // 1. for x in ]left, less[ : x < pivot1 + // 2. for x in [less, k[ : pivot1 <= x && x <= pivot2 + // 3. for x in ]great, right[ : x > pivot2 + for (var k = less; k <= great; k++) { + var ek = a[k], xk = f(ek); + if (xk < pivotValue1) { + if (k !== less) { + a[k] = a[less]; + a[less] = ek; + } + ++less; + } else { + if (xk > pivotValue2) { + while (true) { + var greatValue = f(a[great]); + if (greatValue > pivotValue2) { + great--; + if (great < k) break; + // This is the only location inside the loop where a new + // iteration is started. + continue; + } else { + // a[great] <= pivot2. + if (greatValue < pivotValue1) { + // Triple exchange. + a[k] = a[less]; + a[less++] = a[great]; + a[great--] = ek; + } else { + // a[great] >= pivot1. + a[k] = a[great]; + a[great--] = ek; + } + break; + } + } + } } } } - // Reduces the specified selected or deselected records. - function update(filterOne, added, removed) { - var i, - k, - n; + // Move pivots into their final positions. + // We shrunk the list from both sides (a[left] and a[right] have + // meaningless values in them) and now we move elements from the first + // and third partition into these locations so that we can store the + // pivots. + a[lo] = a[less - 1]; + a[less - 1] = pivot1; + a[hi - 1] = a[great + 1]; + a[great + 1] = pivot2; - if (resetNeeded) return; + // The list is now partitioned into three partitions: + // [ < pivot1 | >= pivot1 && <= pivot2 | > pivot2 ] + // ^ ^ ^ ^ + // left less great right - // Add the added values. - for (i = 0, n = added.length; i < n; ++i) { - if (!filters[k = added[i]]) { - reduceValue = reduceAdd(reduceValue, data[k]); - } - } + // Recursive descent. (Don't include the pivot values.) + sort(a, lo, less - 1); + sort(a, great + 2, hi); - // Remove the removed values. - for (i = 0, n = removed.length; i < n; ++i) { - if (filters[k = removed[i]] === filterOne) { - reduceValue = reduceRemove(reduceValue, data[k]); - } - } + if (pivotsEqual) { + // All elements in the second partition are equal to the pivot. No + // need to sort them. + return a; } - // Recomputes the group reduce value from scratch. - function reset() { - var i; - - reduceValue = reduceInitial(); + // In theory it should be enough to call _doSort recursively on the second + // partition. + // The Android source however removes the pivot elements from the recursive + // call if the second partition is too large (more than 2/3 of the list). + if (less < i1 && great > i5) { + var lessValue, greatValue; + while ((lessValue = f(a[less])) <= pivotValue1 && lessValue >= pivotValue1) ++less; + while ((greatValue = f(a[great])) <= pivotValue2 && greatValue >= pivotValue2) --great; - for (i = 0; i < n; ++i) { - if (!filters[i]) { - reduceValue = reduceAdd(reduceValue, data[i]); + // Copy paste of the previous 3-way partitioning with adaptions. + // + // We partition the list into three parts: + // 1. == pivot1 + // 2. > pivot1 && < pivot2 + // 3. == pivot2 + // + // During the loop we have: + // [ == pivot1 | > pivot1 && < pivot2 | unpartitioned | == pivot2 ] + // ^ ^ ^ + // less k great + // + // Invariants: + // 1. for x in [ *, less[ : x == pivot1 + // 2. for x in [less, k[ : pivot1 < x && x < pivot2 + // 3. for x in ]great, * ] : x == pivot2 + for (var k = less; k <= great; k++) { + var ek = a[k], xk = f(ek); + if (xk <= pivotValue1 && xk >= pivotValue1) { + if (k !== less) { + a[k] = a[less]; + a[less] = ek; + } + less++; + } else { + if (xk <= pivotValue2 && xk >= pivotValue2) { + while (true) { + var greatValue = f(a[great]); + if (greatValue <= pivotValue2 && greatValue >= pivotValue2) { + great--; + if (great < k) break; + // This is the only location inside the loop where a new + // iteration is started. + continue; + } else { + // a[great] < pivot2. + if (greatValue < pivotValue1) { + // Triple exchange. + a[k] = a[less]; + a[less++] = a[great]; + a[great--] = ek; + } else { + // a[great] == pivot1. + a[k] = a[great]; + a[great--] = ek; + } + break; + } + } + } } } } - // Sets the reduce behavior for this group to use the specified functions. - // This method lazily recomputes the reduce value, waiting until needed. - function reduce(add, remove, initial) { - reduceAdd = add; - reduceRemove = remove; - reduceInitial = initial; - resetNeeded = true; - return group; - } + // The second partition has now been cleared of pivot elements and looks + // as follows: + // [ * | > pivot1 && < pivot2 | * ] + // ^ ^ + // less great + // Sort the second partition using recursive descent. - // A convenience method for reducing by count. - function reduceCount() { - return reduce(crossfilter_reduceIncrement, crossfilter_reduceDecrement, crossfilter_zero); - } + // The second partition looks as follows: + // [ * | >= pivot1 && <= pivot2 | * ] + // ^ ^ + // less great + // Simply sort it by recursive descent. - // A convenience method for reducing by sum(value). - function reduceSum(value) { - return reduce(crossfilter_reduceAdd(value), crossfilter_reduceSubtract(value), crossfilter_zero); - } + return sort(a, less, great + 1); + } - // Returns the computed reduce value. - function value() { - if (resetNeeded) reset(), resetNeeded = false; - return reduceValue; - } + return sort; +} - // Removes this group and associated event listeners. - function dispose() { - var i = filterListeners.indexOf(update); - if (i >= 0) filterListeners.splice(i); - i = dataListeners.indexOf(add); - if (i >= 0) dataListeners.splice(i); - return group; - } +var quicksort_sizeThreshold = 32; - return reduceCount(); - } +module.exports = quicksort_by(crossfilter_identity); +module.exports.by = quicksort_by; - // Returns the number of records in this crossfilter, irrespective of any filters. - function size() { - return n; - } +},{"./identity":12,"./insertionsort":13}],17:[function(require,module,exports){ +function crossfilter_reduceIncrement(p) { + return p + 1; +} - return arguments.length - ? add(arguments[0]) - : crossfilter; +function crossfilter_reduceDecrement(p) { + return p - 1; } -// Returns an array of size n, big enough to store ids up to m. -function crossfilter_index(n, m) { - return (m < 0x101 - ? crossfilter_array8 : m < 0x10001 - ? crossfilter_array16 - : crossfilter_array32)(n); +function crossfilter_reduceAdd(f) { + return function(p, v) { + return p + +f(v); + }; } -// Constructs a new array of size n, with sequential values from 0 to n - 1. -function crossfilter_range(n) { - var range = crossfilter_index(n, n); - for (var i = -1; ++i < n;) range[i] = i; - return range; +function crossfilter_reduceSubtract(f) { + return function(p, v) { + return p - f(v); + }; } -function crossfilter_capacity(w) { - return w === 8 - ? 0x100 : w === 16 - ? 0x10000 - : 0x100000000; +module.exports = { + reduceIncrement: crossfilter_reduceIncrement, + reduceDecrement: crossfilter_reduceDecrement, + reduceAdd: crossfilter_reduceAdd, + reduceSubtract: crossfilter_reduceSubtract +}; + +},{}],18:[function(require,module,exports){ +function crossfilter_zero() { + return 0; } -})(typeof exports !== 'undefined' && exports || this); + +module.exports = crossfilter_zero; + +},{}]},{},[1])(1) +}); \ No newline at end of file diff --git a/web/js/dc.graph.cola.worker.js b/web/js/dc.graph.cola.worker.js index d9eb3ff2..09541c93 100644 --- a/web/js/dc.graph.cola.worker.js +++ b/web/js/dc.graph.cola.worker.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -25,7 +25,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -35,7 +35,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } @@ -233,11 +233,11 @@ dc_graph.cola_layout = function(id) { v1.dcg_nodeKey = v.dcg_nodeKey; v1.width = v.width; v1.height = v.height; - v1.fixed = !!v.dgc_nodeFixed; + v1.fixed = !!v.dcg_nodeFixed; - if(typeof v.dgc_nodeFixed === 'object') { - v1.x = v.dgc_nodeFixed.x; - v1.y = v.dgc_nodeFixed.y; + if(v1.fixed && typeof v.dcg_nodeFixed === 'object') { + v1.x = v.dcg_nodeFixed.x; + v1.y = v.dcg_nodeFixed.y; } else { // should we support e.g. null to unset x,y? diff --git a/web/js/dc.graph.cola.worker.js.map b/web/js/dc.graph.cola.worker.js.map index c5774710..dc747fa8 100644 --- a/web/js/dc.graph.cola.worker.js.map +++ b/web/js/dc.graph.cola.worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/cola_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.cola.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dgc_nodeFixed;\n\n if(typeof v.dgc_nodeFixed === 'object') {\n v1.x = v.dgc_nodeFixed.x;\n v1.y = v.dgc_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file +{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/cola_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.cola.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dcg_nodeFixed;\n\n if(v1.fixed && typeof v.dcg_nodeFixed === 'object') {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file diff --git a/web/js/dc.graph.dagre.worker.js b/web/js/dc.graph.dagre.worker.js index 7bf9a6a1..201dcbf5 100644 --- a/web/js/dc.graph.dagre.worker.js +++ b/web/js/dc.graph.dagre.worker.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -25,7 +25,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -35,7 +35,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } diff --git a/web/js/dc.graph.dagre.worker.js.map b/web/js/dc.graph.dagre.worker.js.map index da232670..681a31a2 100644 --- a/web/js/dc.graph.dagre.worker.js.map +++ b/web/js/dc.graph.dagre.worker.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/dagre_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.dagre.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file +{"version":3,"sources":["src/core.js","src/generate_objects.js","src/graphviz_attrs.js","src/dagre_layout.js","src/webworker_message.js"],"names":[],"mappings":"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","file":"dc.graph.dagre.worker.js","sourcesContent":["/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","var _layouts;\n\nfunction postResponse(event, layoutId) {\n return function() {\n var message = {\n response: event,\n layoutId: layoutId\n };\n message.args = Array.prototype.slice.call(arguments);\n postMessage(message);\n };\n}\n\nonmessage = function(e) {\n var args = e.data.args;\n switch(e.data.command) {\n case 'init':\n // find a function under dc_graph that has `scripts`\n var layout_name;\n for(var name in dc_graph) {\n if(typeof dc_graph[name] === 'function' && dc_graph[name].scripts)\n layout_name = name;\n }\n if(!_layouts) {\n _layouts = {};\n importScripts.apply(null, dc_graph[layout_name].scripts);\n }\n\n _layouts[args.layoutId] = dc_graph[layout_name]()\n .on('tick', postResponse('tick', args.layoutId))\n .on('start', postResponse('start', args.layoutId))\n .on('end', postResponse('end', args.layoutId))\n .init(args.options);\n break;\n case 'data':\n if(_layouts)\n _layouts[args.layoutId].data(args.nodes, args.edges, args.constraints, args.options);\n break;\n case 'start':\n // if(args.initialOnly) {\n // if(args.showLayoutSteps)\n // _tick();\n // _done();\n // }\n // else\n _layouts[args.layoutId].start(args.options);\n break;\n case 'stop':\n if(_layouts)\n _layouts[args.layoutId].stop();\n break;\n }\n};\n\n"]} \ No newline at end of file diff --git a/web/js/dc.graph.js b/web/js/dc.graph.js index 42713e50..92985882 100644 --- a/web/js/dc.graph.js +++ b/web/js/dc.graph.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -28,7 +28,7 @@ * instance whenever it is appropriate. The getter forms of functions do not participate in function * chaining because they return values that are not the chart. * @namespace dc_graph - * @version 0.4.0 + * @version 0.4.1 * @example * // Example chaining * chart.width(600) @@ -38,7 +38,7 @@ */ var dc_graph = { - version: '0.4.0', + version: '0.4.1', constants: { CHART_CLASS: 'dc-graph' } @@ -308,7 +308,7 @@ dc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree if(ni && callbacks.sib) callbacks.sib(true, roots[ni-1], n); callbacks.push && callbacks.push(); - place_tree(n, callbacks.row ? callbacks.row(n) : 0); + place_tree(n, callbacks.row && callbacks.row(n) || 0); }); callbacks.finish(rows); }; @@ -759,17 +759,19 @@ function bezier_point(points, t_) { * @return {dc_graph.diagram} **/ dc_graph.diagram = function (parent, chartGroup) { - // different enough from regular dc charts that we don't use bases + // different enough from regular dc charts that we don't use dc.baseMixin + // but attempt to implement most of that interface, copying some of the most basic stuff var _chart = dc.marginMixin({}); + _chart.__dcFlag__ = dc.utils.uniqueId(); var _svg = null, _defs = null, _g = null, _nodeLayer = null, _edgeLayer = null; - var _dispatch = d3.dispatch('end', 'start', 'drawn'); + var _dispatch = d3.dispatch('end', 'start', 'drawn', 'zoomed'); var _nodes = {}, _edges = {}; // hold state between runs var _stats = {}; var _nodes_snapshot, _edges_snapshot; var _children = {}, _arrows = {}; var _running = false; // for detecting concurrency issues var _translate = [0,0], _scale = 1; - var _zoom, _xScale, _yScale; + var _zoom; var _anchor, _chartGroup; function deprecate_layout_algo_parameter(name) { @@ -841,6 +843,17 @@ dc_graph.diagram = function (parent, chartGroup) { **/ _chart.mouseZoomable = property(true); + /** + * Whether zooming should only be enabled when the alt key is pressed. + * @method altKeyZoom + * @memberof dc_graph.diagram + * @instance + * @param {Boolean} [altKeyZoom=true] + * @return {Boolean} + * @return {dc_graph.diagram} + **/ + _chart.altKeyZoom = property(false); + /** * Set or get the fitting strategy for the canvas, which affects how the * [viewBox](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/viewBox) and @@ -1761,16 +1774,19 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.tickSize = deprecate_layout_algo_parameter('tickSize'); + _chart.uniqueId = function() { + return _chart.anchorName().replace(/[ .#=\[\]"]/g, '-'); + }; + _chart.edgeId = function(d) { return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\w-_]/g, '-'); }; _chart.arrowId = function(d, kind) { - return 'arrow-' + kind + '-' + _chart.edgeId(d); + return 'arrow-' + kind + '-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; - _chart.textpathId = function(d) { - return 'textpath-' + _chart.edgeId(d); + return 'textpath-' + _chart.uniqueId() + '-' + _chart.edgeId(d); }; // this kind of begs a (meta)graph ADT @@ -2516,6 +2532,7 @@ dc_graph.diagram = function (parent, chartGroup) { }); } _zoom.translate(translate).scale(scale).event(_svg); + _dispatch.zoomed(translate, scale); } } @@ -2655,9 +2672,12 @@ dc_graph.diagram = function (parent, chartGroup) { if(!_chart.initLayoutOnRedraw()) initLayout(); _chart.resetSvg(); - _g = _svg.append('g'); - _edgeLayer = _g.append('g'); - _nodeLayer = _g.append('g'); + _g = _svg.append('g') + .attr('class', 'draw'); + _edgeLayer = _g.append('g') + .attr('class', 'edge-layer'); + _nodeLayer = _g.append('g') + .attr('class', 'node-layer'); if(_chart.legend()) _chart.legend().render(); @@ -2746,7 +2766,35 @@ dc_graph.diagram = function (parent, chartGroup) { /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} - * method. Returns the top svg element for this specific chart. You can also pass in a new + * method. Gets or sets the x scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.x = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Gets or sets the y scale. + * @method x + * @memberof dc_graph.diagram + * @instance + * @param {d3.scale} [scale] + * @return {d3.scale} + * @return {dc_graph.diagram} + + **/ + _chart.y = property(null); + + /** + * Standard dc.js + * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} + * method. Returns the top `svg` element for this specific chart. You can also pass in a new * svg element, but setting the svg element on a diagram may have unexpected consequences. * @method svg * @memberof dc_graph.diagram @@ -2764,6 +2812,27 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the top `g` element for this specific chart. This method is usually used to + * retrieve the g element in order to overlay custom svg drawing + * programatically. **Caution**: The root g element is usually generated internally, and + * resetting it might produce unpredictable results. + * @method g + * @memberof dc_graph.diagram + * @instance + * @param {d3.selection} [selection] + * @return {d3.selection} + * @return {dc_graph.diagram} + + **/ + _chart.g = function (_) { + if (!arguments.length) { + return _g; + } + _g = _; + return _chart; + }; + /** * Standard dc.js * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin} @@ -2894,22 +2963,22 @@ dc_graph.diagram = function (parent, chartGroup) { // with thanks to comments in https://github.com/d3/d3/issues/1084 function align_left(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[0]; + return translate[0] - _chart.x()(x) + _chart.x().range()[0]; } function align_top(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[0]; + return translate[1] - _chart.y()(y) + _chart.y().range()[0]; } function align_right(translate, x) { - return translate[0] - _xScale(x) + _xScale.range()[1]; + return translate[0] - _chart.x()(x) + _chart.x().range()[1]; } function align_bottom(translate, y) { - return translate[1] - _yScale(y) + _yScale.range()[1];; + return translate[1] - _chart.y()(y) + _chart.y().range()[1];; } function doZoom() { var translate = d3.event.translate; if(_chart.restrictPan()) { - var xDomain = _xScale.domain(), yDomain = _yScale.domain(); + var xDomain = _chart.x().domain(), yDomain = _chart.y().domain(); var bounds = margined_bounds(); var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1], lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]); @@ -2970,25 +3039,45 @@ dc_graph.diagram = function (parent, chartGroup) { } } + function enableZoom() { + _svg.call(_zoom); + _svg.on('dblclick.zoom', null); + } + function disableZoom() { + _svg.on('.zoom', null); + } + function generateSvg() { _svg = _chart.root().append('svg'); resizeSvg(); _defs = _svg.append('svg:defs'); + // start out with 1:1 zoom + if(!_chart.x()) + _chart.x(d3.scale.linear() + .domain([0, _chart.width()]) + .range([0, _chart.width()])); + if(!_chart.y()) + _chart.y(d3.scale.linear() + .domain([0, _chart.height()]) + .range([0, _chart.height()])); + _zoom = d3.behavior.zoom() + .on('zoom', doZoom) + .x(_chart.x()).y(_chart.y()); if(_chart.mouseZoomable()) { - // start out with 1:1 zoom - _xScale = d3.scale.linear() - .domain([0, _chart.width()]) - .range([0, _chart.width()]); - _yScale = d3.scale.linear() - .domain([0, _chart.height()]) - .range([0, _chart.height()]); - _zoom = d3.behavior.zoom() - .on('zoom', doZoom) - .x(_xScale).y(_yScale); - _svg.call(_zoom); - _svg.on('dblclick.zoom', null); + if(_chart.altKeyZoom()) { + d3.select(document) + .on('keydown', function() { + if(d3.event.key === 'Alt') + enableZoom(); + }) + .on('keyup', function() { + if(d3.event.key === 'Alt') + disableZoom(); + }); + } + else enableZoom(); } return _svg; @@ -2996,8 +3085,8 @@ dc_graph.diagram = function (parent, chartGroup) { _chart.invertCoord = function(clientCoord) { return [ - _xScale.invert(clientCoord[0]), - _yScale.invert(clientCoord[1]) + _chart.x().invert(clientCoord[0]), + _chart.y().invert(clientCoord[1]) ]; }; @@ -3048,6 +3137,17 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart; }; + /** + * Returns the internal numeric ID of the chart. + * @method chartID + * @memberof dc.baseMixin + * @instance + * @returns {String} + */ + _chart.chartID = function () { + return _chart.__dcFlag__; + }; + /** * Returns the DOM id for the chart's anchored location. * @method anchorName @@ -3069,6 +3169,34 @@ dc_graph.diagram = function (parent, chartGroup) { return _chart.anchor(parent, chartGroup); }; +dc_graph.spawn_engine = function(layout, args, worker) { + var allow_webworker = true; + var engine, params; + switch(layout) { + case 'dagre': + engine = dc_graph.dagre_layout(); + params = ['rankdir']; + break; + case 'tree': + engine = dc_graph.tree_layout(); + params = []; + allow_webworker = false; + break; + case 'cola': + default: + engine = dc_graph.cola_layout(); + params = ['lengthStrategy']; + break; + } + params.forEach(function(p) { + if(args[p]) + engine[p](args[p]); + }); + if(allow_webworker && worker !== 'false') + engine = dc_graph.webworker_layout(engine); + return engine; +}; + var _workers = {}; function create_worker(layoutAlgorithm) { if(!_workers[layoutAlgorithm]) { @@ -3245,11 +3373,11 @@ dc_graph.cola_layout = function(id) { v1.dcg_nodeKey = v.dcg_nodeKey; v1.width = v.width; v1.height = v.height; - v1.fixed = !!v.dgc_nodeFixed; + v1.fixed = !!v.dcg_nodeFixed; - if(typeof v.dgc_nodeFixed === 'object') { - v1.x = v.dgc_nodeFixed.x; - v1.y = v.dgc_nodeFixed.y; + if(v1.fixed && typeof v.dcg_nodeFixed === 'object') { + v1.x = v.dcg_nodeFixed.x; + v1.y = v.dcg_nodeFixed.y; } else { // should we support e.g. null to unset x,y? @@ -4323,33 +4451,175 @@ dc_graph.tip.table = function() { return gen; }; -// this currently only supports single selection with a click -// but it can be expanded with modifier-key clicks and rectangular selection etc. +// adapted from +// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652 + +function edittext(svg, position, options) { + var myforeign = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject'); + var textdiv = document.createElement("div"); + var text = options.text || "type on me"; + var textnode = document.createTextNode(text); + textdiv.appendChild(textnode); + textdiv.setAttribute("contentEditable", "true"); + textdiv.setAttribute("width", "auto"); + textdiv.setAttribute("style", "display: inline-block; background-color: white; padding: 2px"); //to make div fit text + myforeign.setAttribute("width", "100%"); + myforeign.setAttribute("height", "100%"); + myforeign.setAttribute("style", "text-align: left"); //to make div fit text + myforeign.setAttributeNS(null, "transform", "translate(" + position.x + " " + position.y + ")"); + svg.appendChild(myforeign); + myforeign.appendChild(textdiv); + + function accept() { + options.accept && options.accept(textdiv.innerText); + textdiv.onblur = null; + myforeign.remove(); + } + function cancel() { + options.cancel && options.cancel(); + textdiv.onblur = null; + myforeign.remove(); + } + + textdiv.onkeydown = function(event) { + if(event.keyCode===13) { + event.preventDefault(); + } + }; + textdiv.onkeyup = function(event) { + if(event.keyCode===13) { + accept(); + } else if(event.keyCode===27) { + cancel(); + } + }; + textdiv.onblur = cancel; + textdiv.focus(); + + var range = document.createRange(); + if(options.selectText) { + range.selectNodeContents(textdiv); + } else { + range.setStart(textdiv, text.length); + range.setEnd(textdiv, text.length); + } + var sel = window.getSelection(); + sel.removeAllRanges(); + sel.addRange(range); +} + +dc_graph.edit_text = function(svg, selection, options) { + var position = options.position || {x: 0, y: 0}; + edittext(svg.node(), position, options); +}; + + dc_graph.select_nodes = function(props) { var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); - var _selected = []; + var _selected = [], _oldSelected; + var _brush, _gBrush; + + // http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin + var is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1; + + function isUnion(event) { + return event.shiftKey; + } + function isToggle(event) { + return is_a_mac ? event.metaKey : event.ctrlKey; + } + function add_array(a, v) { + return a.indexOf(v) >= 0 ? a : a.concat([v]); + } + function toggle_array(a, v) { + return a.indexOf(v) >= 0 ? a.filter(function(x) { return x != v; }) : a.concat([v]); + } + function selection_changed(chart) { + return function(selection) { + _selected = selection; + chart.refresh(); + }; + } + function background_click_event(chart, v) { + chart.svg().on('click.select-nodes', v ? function(d) { + select_nodes_group.node_set_changed([]); + } : null); + } + function brushstart() { + if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent)) + _oldSelected = _selected.slice(); + else { + _oldSelected = []; + select_nodes_group.node_set_changed([]); + } + } + function brushmove() { + var ext = _brush.extent(); + var rectSelect = _behavior.parent().selectAll('g.node').data().filter(function(n) { + return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] && + ext[0][1] < n.cola.y && n.cola.y < ext[1][1]; + }).map(function(n) { + return n.orig.key; + }); + var newSelected; + if(isUnion(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(add_array, _oldSelected); + else if(isToggle(d3.event.sourceEvent)) + newSelected = rectSelect.reduce(toggle_array, _oldSelected); + else + newSelected = rectSelect; + select_nodes_group.node_set_changed(newSelected); + } + function brushend() { + _gBrush.call(_brush.clear()); + } + function install_brush(chart) { + if(_brush) + return; + _brush = d3.svg.brush() + .x(chart.x()).y(chart.y()) + .on('brushstart', brushstart) + .on('brush', brushmove) + .on('brushend', brushend); + + _gBrush = chart.svg().insert('g', ':first-child') + .attr('class', 'brush') + .call(_brush); + } function add_behavior(chart, node, edge) { - chart.cascade(50, true, conditional_properties(function(n) { + var condition = _behavior.noneIsAll() ? function(n) { + return !_selected.length || _selected.indexOf(n.orig.key) >= 0; + } : function(n) { return _selected.indexOf(n.orig.key) >= 0; - }, null, props)); + }; + chart.cascade(50, true, conditional_properties(condition, null, props)); + node.on('click.select-nodes', function(d) { - _selected = [chart.nodeKey.eval(d)]; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); + var key = chart.nodeKey.eval(d), newSelected; + if(isUnion(d3.event)) + newSelected = add_array(_selected, key); + else if(isToggle(d3.event)) + newSelected = toggle_array(_selected, key); + else { + if(_selected.length === 1 && _selected[0] === key && _behavior.secondClickEvent()) + _behavior.secondClickEvent()(d3.select(this)); + newSelected = [key]; + } + select_nodes_group.node_set_changed(newSelected); d3.event.stopPropagation(); }); - chart.svg().on('click.select-nodes', function(d) { - _selected = []; - chart.refresh(node, edge); - select_nodes_group.node_set_changed(_selected); - }); + + if(_behavior.multipleSelect()) + install_brush(chart); + else + background_click_event(chart, _behavior.clickBackgroundClears()); + // drop any selected which no longer exist in the diagram var present = node.data().map(function(d) { return d.orig.key; }); - var nselect = _selected.length; - _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); - if(_selected.length !== nselect) - select_nodes_group.node_set_changed(_selected); + var now_selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; }); + if(_selected.length !== now_selected.length) + select_nodes_group.node_set_changed(now_selected); } function remove_behavior(chart, node, edge) { @@ -4358,12 +4628,22 @@ dc_graph.select_nodes = function(props) { chart.cascade(50, false, props); } - return dc_graph.behavior('select-nodes', { + var _behavior = dc_graph.behavior('select-nodes', { add_behavior: add_behavior, - remove_behavior: function(chart, node, edge) { - remove_behavior(chart, node, edge); + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.select-nodes', p ? selection_changed(p) : null); } }); + + _behavior.multipleSelect = property(true); + _behavior.clickBackgroundClears = property(true, false).react(function(v) { + if(!_behavior.multipleSelect() && _behavior.parent()) + background_click_event(_behavior.parent(), v); + }); + _behavior.secondClickEvent = property(null); + _behavior.noneIsAll = property(false); + return _behavior; }; dc_graph.select_nodes_group = function(brushgroup) { @@ -4374,6 +4654,116 @@ dc_graph.select_nodes_group = function(brushgroup) { return window.chart_registry.create_group('select-nodes', brushgroup); }; +dc_graph.filter_selection = function() { + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'); + + function selection_changed(chart) { + return function(selection) { + if(selection.length) { + var set = d3.set(selection); + chart.nodeDimension().filterFunction(function(k) { + return set.has(k); + }); + } else chart.nodeDimension().filter(null); + chart.redrawGroup(); + }; + } + + var _behavior = { + parent: property(null).react(function(p) { + select_nodes_group.on('node_set_changed.filter-selection', p ? selection_changed(p) : null); + }) + }; + return _behavior; +}; + +dc_graph.label_nodes = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + var _idTag = options.idTag || 'id', + _labelTag = options.labelTag || 'label'; + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _selected = []; + var _input_anchor; + + function selection_changed_listener(chart) { + return function(selection) { + _selected = selection; + if(_selected.length) + _input_anchor.node().focus(); + }; + } + + function edit_node_label_listener(chart) { + return function(node, options) { + dc_graph.edit_text( + chart.svg(), + node, + { + text: options.text || chart.nodeLabel.eval(node.datum()), + position: {x: node.datum().cola.x, y: node.datum().cola.y}, + selectText: options.selectText, + accept: function(text) { + var d = node.datum(); + d.orig.value[_labelTag] = text; + chart.redraw(); + } + }); + }; + } + + function add_behavior(chart, node, edge) { + _input_anchor = chart.svg().selectAll('a#label-nodes-input').data([1]); + _input_anchor.enter() + .append('a').attr({ + id: 'label-nodes-input', + href: '#' + }); + _input_anchor.on('keyup.label-nodes', function() { + if(_selected.length) { + // printable characters should start edit + if(d3.event.key.length !== 1) + return; + var n2 = node.filter(function(d) { + return chart.nodeKey.eval(d) === _selected[0]; + }); + if(n2.empty()) { + console.error("couldn't find node '" + _selected[0] + "'!"); + return; + } + if(n2.size()>1) { + console.error("found too many nodes for '" + _selected[0] + "' (" + n2.size() + ")!"); + return; + } + label_nodes_group.edit_node_label(n2, {text: d3.event.key, selectText: false}); + } + }); + } + + function remove_behavior(chart, node, edge) { + chart.root().select('a#label-nodes-input').remove(); + } + + var _behavior = dc_graph.behavior('label-nodes', { + add_behavior: add_behavior, + remove_behavior: remove_behavior, + parent: function(p) { + select_nodes_group.on('node_set_changed.label-nodes', p ? selection_changed_listener(p) : null); + label_nodes_group.on('edit_node_label.label-nodes', p ? edit_node_label_listener(p) : null); + } + }); + return _behavior; +}; + +dc_graph.label_nodes_group = function(brushgroup) { + window.chart_registry.create_type('label-nodes', function() { + return d3.dispatch('edit_node_label'); + }); + + return window.chart_registry.create_group('label-nodes', brushgroup); +}; + dc_graph.highlight_neighbors = function(props) { function clear_all_highlights(edge) { edge.each(function(e) { @@ -4801,6 +5191,160 @@ dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) { }); }; +dc_graph.draw_graphs = function(options) { + if(!options.nodeCrossfilter) + throw new Error('need nodeCrossfilter'); + if(!options.edgeCrossfilter) + throw new Error('need edgeCrossfilter'); + var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'), + label_nodes_group = dc_graph.label_nodes_group('label-nodes-group'); + var _idTag = options.idTag || 'id', + _sourceTag = options.sourceTag || 'source', + _targetTag = options.targetTag || 'target', + _labelTag = options.labelTag || 'label', + _fixedPosTag = options.fixedPosTag || 'fixedPos'; + + var _sourceDown = null, _targetMove = null, _edgeLayer = null, _hintData = []; + + function event_coords(chart) { + var bound = chart.root().node().getBoundingClientRect(); + return chart.invertCoord([d3.event.clientX - bound.left, + d3.event.clientY - bound.top]); + } + + function update_hint() { + var data = _hintData.filter(function(h) { + return h.source && h.target; + }); + var line = _edgeLayer.selectAll('line.hint-edge').data(data); + line.exit().remove(); + line.enter().append('line') + .attr('class', 'hint-edge') + .style({ + fill: 'none', + stroke: 'black', + 'pointer-events': 'none' + }); + + line.attr({ + x1: function(d) { return d.source.x; }, + y1: function(d) { return d.source.y; }, + x2: function(d) { return d.target.x; }, + y2: function(d) { return d.target.y; } + }); + } + + function erase_hint() { + _hintData = []; + _sourceDown = _targetMove = null; + update_hint(); + } + + function create_node(chart, pos) { + var node = {}; + node[_idTag] = uuid(); + node[_labelTag] = ''; + node[_fixedPosTag] = {x: pos[0], y: pos[1]}; + options.nodeCrossfilter.add([node]); + chart.redraw(); + select_nodes_group.node_set_changed([node[_idTag]]); + } + + function create_edge(chart, source, target) { + erase_hint(); + var edge = {}; + edge[_idTag] = uuid(); + edge[_sourceTag] = source.orig.key; + edge[_targetTag] = target.orig.key; + // changing this data inside crossfilter is okay because it is not indexed data + source.orig.value[_fixedPosTag] = null; + target.orig.value[_fixedPosTag] = null; + options.edgeCrossfilter.add([edge]); + chart.redraw(); + select_nodes_group.node_set_changed([]); + } + + function add_behavior(chart, node, edge, ehover) { + var select_nodes = chart.child('select-nodes'); + if(select_nodes) { + select_nodes.clickBackgroundClears(false); + select_nodes.secondClickEvent(function(node) { + label_nodes_group.edit_node_label(node, {selectText: true}); + }); + } + node + .on('mousedown.draw-graphs', function(d) { + d3.event.stopPropagation(); + _sourceDown = d; + _hintData = [{source: {x: _sourceDown.cola.x, y: _sourceDown.cola.y}}]; + }) + .on('mousemove.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown) { + if(d === _sourceDown) { + _targetMove = null; + _hintData[0].target = null; + } + else if(d !== _targetMove) { + _targetMove = d; + _hintData[0].target = {x: _targetMove.cola.x, y: _targetMove.cola.y}; + } + update_hint(); + } + }) + .on('mouseup.draw-graphs', function(d) { + d3.event.stopPropagation(); + if(_sourceDown && _targetMove) + create_edge(chart, _sourceDown, _targetMove); + else + erase_hint(); + }); + chart.svg() + .on('mousedown.draw-graphs', function() { + _sourceDown = null; + }) + .on('mousemove.draw-graphs', function() { + var data = []; + if(_sourceDown) { // drawing edge + var coords = event_coords(chart); + _targetMove = null; + _hintData[0].target = {x: coords[0], y: coords[1]}; + update_hint(); + } + }) + .on('mouseup.draw-graphs', function() { + if(_sourceDown) // drag-edge + erase_hint(); + else // click-node + create_node(chart, event_coords(chart)); + }); + if(!_edgeLayer) + _edgeLayer = chart.g().append('g').attr('class', 'draw-graphs'); + } + + function remove_behavior(chart, node, edge, ehover) { + node + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + chart.svg() + .on('mousedown.draw-graphs', null) + .on('mousemove.draw-graphs', null) + .on('mouseup.draw-graphs', null); + } + + var _behavior = dc_graph.behavior('highlight-paths', { + add_behavior: add_behavior, + remove_behavior: remove_behavior + }); + + // whether to do relayout & redraw (true) or just refresh (false) + _behavior.doRedraw = property(false); + + return _behavior; +}; + + // load a graph from various formats and return the data in consistent {nodes, links} format dc_graph.load_graph = function() { // ignore any query parameters for checking extension @@ -5470,6 +6014,65 @@ dc_graph.wheel_edges = function(namef, nindices, R) { return edges; }; +dc_graph.random_graph = function(options) { + options = Object.assign({ + ncolors: 5, + nodeKey: 'key', + edgeKey: 'key', + sourceKey: 'sourcename', + targetKey: 'targetname', + colorTag: 'color', + nodeKeyGen: function(i) { return 'n' + i; }, + edgeKeyGen: function(i) { return 'e' + i; }, + newComponentProb: 0.1, + newNodeProb: 0.9 + }, options); + if(isNaN(options.newNodeProb)) + options.newNodeProb = 0.9; + if(options.newNodProb <= 0) + options.newNodeProb = 0.1; + var _nodes = [], _edges = []; + function new_node() { + var n = {}; + n[options.nodeKey] = options.nodeKeyGen(_nodes.length); + n[options.colorTag] = Math.floor(Math.random()*options.ncolors); + _nodes.push(n); + return n; + } + function random_node() { + return _nodes[Math.floor(Math.random()*_nodes.length)]; + } + return { + nodes: function() { + return _nodes; + }, + edges: function() { + return _edges; + }, + generate: function(N) { + while(N-- > 0) { + var choice = Math.random(); + var n1, n2; + if(!_nodes.length || choice < options.newComponentProb) + n1 = new_node(); + else + n1 = random_node(); + if(choice < options.newNodeProb) + n2 = new_node(); + else + n2 = random_node(); + if(n1 && n2) { + var edge = {}; + edge[options.edgeKey] = options.edgeKeyGen(_edges.length); + edge[options.sourceKey] = n1[options.nodeKey]; + edge[options.targetKey] = n2[options.nodeKey]; + _edges.push(edge); + } + } + } + }; +}; + dc_graph.line_breaks = function(charexp, max_line_length) { var regexp = new RegExp(charexp, 'g'); return function(n) { diff --git a/web/js/dc.graph.js.map b/web/js/dc.graph.js.map index 04caa9ad..07a78e70 100644 --- a/web/js/dc.graph.js.map +++ b/web/js/dc.graph.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/banner.js","src/core.js","src/utils.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/webworker_layout.js","src/graphviz_attrs.js","src/cola_layout.js","src/dagre_layout.js","src/tree_layout.js","src/legend.js","src/constraint_pattern.js","src/tree_positions.js","src/tree_constraints.js","src/behavior.js","src/tip.js","src/select_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.0\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.0',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish, nodeid, sourceid, targetid}\n return function(nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = callbacks.nodeid(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n var target = nmap[callbacks.targetid(e)];\n if(ei && callbacks.sib)\n callbacks.sib(false, nmap[callbacks.targetid(outmap[key][ei-1])], target);\n callbacks.push && callbacks.push();\n place_tree(target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n); });\n else {\n roots = nodes.filter(function(n) { return !indegree[callbacks.nodeid(n)]; });\n if(nodes.length && !roots.length) // all nodes are in a cycle\n roots = [nodes[0]];\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row ? callbacks.row(n) : 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it will replace the\n * back-end.\n *\n * **Deprecated**: use {@link dc_graph.diagram#layoutEngine diagram.layoutEngine} with the engine\n * object instead\n * @method layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo='cola'] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = function(value, skipWarning) {\n if(!arguments.length)\n return _chart.layoutEngine() ? _chart.layoutEngine().layoutAlgorithm() : 'cola';\n if(!skipWarning)\n console.warn('dc.graph.diagram.layoutAlgorithm is depecrated - pass the layout engine object to dc_graph.diagram.layoutEngine instead');\n\n var engine;\n switch(value) {\n case 'cola':\n engine = dc_graph.cola_layout();\n break;\n case 'dagre':\n engine = dc_graph.dagre_layout();\n }\n engine = dc_graph.webworker_layout(engine);\n _chart.layoutEngine(engine);\n return this;\n };\n\n /**\n * The layout engine determines how to draw things!\n * @method layoutEngine\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [engine=null] - the layout engine to use\n * @example\n * // use cola with no webworker\n * diagram.layoutEngine(dc_graph.cola_layout());\n * // use dagre with a webworker\n * diagram.layoutEngine(dc_graph.webworker_layout(dc_graph.dagre_layout()));\n **/\n _chart.layoutEngine = property(null).react(function(val) {\n if(val && val.parent)\n val.parent(_chart);\n });\n\n _chart.tickSize = deprecate_layout_algo_parameter('tickSize');\n\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.edgeId(d);\n };\n\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components.\n *\n * **Deprecated**: Use\n * {@link dc_graph.cola_layout#handleDisconnected cola_layout.handleDisconnected} instead.\n * @method handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = deprecate_layout_algo_parameter('handleDisconnected');\n\n function initLayout() {\n if(!_chart.layoutEngine())\n _chart.layoutAlgorithm('cola', true);\n _chart.layoutEngine().init({\n width: _chart.width(),\n height: _chart.height()\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n _chart.layoutEngine().stop();\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n _chart.layoutEngine().populateLayoutNode(v1.cola, v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n _chart.layoutEngine().populateLayoutEdge(e1.cola, e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _chart.layoutEngine()\n .on('tick', function(nodes, edges) {\n var elapsed = Date.now() - startTime;\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _chart.layoutEngine().stop();\n }\n })\n .on('end', function(nodes, edges) {\n if(!_chart.showLayoutSteps()) {\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n })\n .on('start', function() {\n console.log('algo ' + _chart.layoutEngine().layoutAlgorithm() + ' started.');\n _dispatch.start();\n });\n\n if(_chart.initialOnly())\n _chart.layoutEngine().dispatch().end(wnodes, wedges);\n else {\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _chart.layoutEngine().data(\n wnodes.map(function(v) { return v.cola; }),\n layout_edges.map(function(v) { return v.cola; }),\n constraints,\n {groupConnected: _chart.groupConnected()}\n );\n _chart.layoutEngine().start({\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20\n });\n }\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @method render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g');\n _edgeLayer = _g.append('g');\n _nodeLayer = _g.append('g');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @method on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @method getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top svg element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @method svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @method resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @method redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @method renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @method defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _xScale(x) + _xScale.range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _yScale(y) + _yScale.range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _xScale.domain(), yDomain = _yScale.domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n if(_chart.mouseZoomable()) {\n // start out with 1:1 zoom\n _xScale = d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]);\n _yScale = d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]);\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_xScale).y(_yScale);\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _xScale.invert(clientCoord[0]),\n _yScale.invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","var _workers = {};\nfunction create_worker(layoutAlgorithm) {\n if(!_workers[layoutAlgorithm]) {\n var worker = _workers[layoutAlgorithm] = {\n worker: new Worker(script_path() + 'dc.graph.' + layoutAlgorithm + '.worker.js'),\n layouts: {}\n };\n worker.worker.onmessage = function(e) {\n var layoutId = e.data.layoutId;\n if(!worker.layouts[layoutId])\n throw new Error('layoutId \"' + layoutId + '\" unknown!');\n worker.layouts[layoutId].dispatch()[e.data.response].apply(null, e.data.args);\n };\n }\n return _workers[layoutAlgorithm];\n}\n\ndc_graph.webworker_layout = function(layoutEngine) {\n var _tick, _done, _dispatch = d3.dispatch('init', 'start', 'tick', 'end');\n var _worker = create_worker(layoutEngine.layoutAlgorithm());\n var engine = {};\n _worker.layouts[layoutEngine.layoutId()] = engine;\n\n engine.parent = function(parent) {\n if(layoutEngine.parent)\n layoutEngine.parent(parent);\n };\n engine.init = function(options) {\n options = layoutEngine.optionNames().reduce(\n function(options, option) {\n options[option] = layoutEngine[option]();\n return options;\n }, options);\n _worker.worker.postMessage({\n command: 'init',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n return this;\n };\n engine.data = function(nodes, edges, constraints, options) {\n _worker.worker.postMessage({\n command: 'data',\n args: {\n layoutId: layoutEngine.layoutId(),\n nodes: nodes,\n edges: edges,\n constraints: constraints,\n options: options\n }\n });\n };\n engine.start = function(options) {\n _worker.worker.postMessage({\n command: 'start',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n };\n engine.stop = function() {\n _worker.worker.postMessage({\n command: 'stop',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n return this;\n };\n // stopgap while layout options are still on diagram\n engine.getEngine = function() {\n return layoutEngine;\n };\n // somewhat sketchy - do we want this object to be transparent or not?\n var passthroughs = ['layoutAlgorithm', 'populateLayoutNode', 'populateLayoutEdge', 'rankdir', 'ranksep'];\n passthroughs.forEach(function(name) {\n engine[name] = function() {\n var ret = layoutEngine[name].apply(layoutEngine, arguments);\n return arguments.length ? this : ret;\n };\n });\n engine.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n engine.dispatch = function() {\n return _dispatch;\n };\n return engine;\n};\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dgc_nodeFixed;\n\n if(typeof v.dgc_nodeFixed === 'object') {\n v1.x = v.dgc_nodeFixed.x;\n v1.y = v.dgc_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","/**\n * `dc_graph.tree_layout` is a very simple and not very bright tree layout. It can draw any DAG, but\n * tries to position the nodes as a tree.\n * @class tree_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.tree_layout}\n **/\ndc_graph.tree_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dfs;\n\n function init(options) {\n var x;\n var nodeWidth = d3.functor(options.nodeWidth);\n function best_dist(left, right) {\n return (nodeWidth(left) + nodeWidth(right)) / 2;\n }\n _dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.dcg_edgeTarget;\n },\n init: function() {\n x = options.offsetX;\n },\n row: function(n) {\n return n.dcg_rank;\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nodeWidth(left) + nodeWidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.y = r*options.gapY + options.offsetY;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.x = (n.hit_ins*n.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.x - b.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.x - (badl + want);\n l = sort[badi].x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\n *
  • To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  • To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n * \n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n console.warn('dc_graph.tree_positions is deprecated; use the layout engine tree_layout instead');\n if(rootf || treef) {\n console.warn('dc_graph.tree_positions: rootf and treef are ignored');\n }\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.cola.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.cola.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.cola.dcg_edgeTarget;\n },\n init: function() {\n x = ofsx;\n },\n row: function(n) {\n return rowf(n.orig);\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// this currently only supports single selection with a click\n// but it can be expanded with modifier-key clicks and rectangular selection etc.\ndc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [];\n\n function add_behavior(chart, node, edge) {\n chart.cascade(50, true, conditional_properties(function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n }, null, props));\n node.on('click.select-nodes', function(d) {\n _selected = [chart.nodeKey.eval(d)];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n d3.event.stopPropagation();\n });\n chart.svg().on('click.select-nodes', function(d) {\n _selected = [];\n chart.refresh(node, edge);\n select_nodes_group.node_set_changed(_selected);\n });\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var nselect = _selected.length;\n _selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== nselect)\n select_nodes_group.node_set_changed(_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n return dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.layoutEngine().rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.layoutEngine().rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","var convert_tree_helper = function(data, attrs, options, parent, level, inherit) {\n level = level || 0;\n if(attrs.length > (options.valuesByAttr ? 1 : 0)) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = data.map(function(v) {\n var key = v[options.nestKey];\n var childKey = options.nestKeysUnique ? key : uuid();\n if(childKey) {\n var node;\n if(options.ancestorKeys) {\n inherit = inherit || {};\n if(attr)\n inherit[attr] = key;\n node = Object.assign({}, inherit);\n } else node = {};\n node[options.nodeKey] = childKey;\n if(options.label && options.labelFun)\n node[options.label] = options.labelFun(key, attr, v);\n if(options.level)\n node[options.level] = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = childKey;\n edges.push(edge);\n }\n }\n var children = options.valuesByAttr ? v[attrs[0]] : v.values;\n var recurse = convert_tree_helper(children, attrs.slice(0), options,\n childKey, level+1, Object.assign({}, inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: data.map(function(v) {\n v = Object.assign({}, v);\n if(options.level)\n v[options.level] = level+1;\n return v;\n }), edges: data.map(function(v) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = v[options.nodeKey];\n return edge;\n })};\n};\n\ndc_graph.convert_tree = function(data, attrs, options) {\n options = Object.assign({\n nodeKey: 'key',\n edgeKey: 'key',\n edgeSource: 'sourcename',\n edgeTarget: 'targetname',\n nestKey: 'key'\n }, options);\n if(Array.isArray(data))\n return convert_tree_helper(data, attrs, options, options.root, 0, options.inherit);\n else {\n attrs = [''].concat(attrs);\n return convert_tree_helper([data], attrs, options, options.root, 0, options.inherit);\n }\n};\n\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n return dc_graph.convert_tree(nest, attrs, {\n nodeKey: nodeKeyAttr,\n edgeSource: edgeSourceAttr,\n edgeTarget: edgeTargetAttr,\n root: parent,\n inherit: inherit,\n ancestorKeys: true,\n label: 'name',\n labelFun: function(key, attr, v) { return attr + ':' + key; },\n level: '_level'\n });\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file +{"version":3,"sources":["src/banner.js","src/core.js","src/utils.js","src/depth_first_traversal.js","src/generate_objects.js","src/shape.js","src/diagram.js","src/engine.js","src/webworker_layout.js","src/graphviz_attrs.js","src/cola_layout.js","src/dagre_layout.js","src/tree_layout.js","src/legend.js","src/constraint_pattern.js","src/tree_positions.js","src/tree_constraints.js","src/behavior.js","src/tip.js","src/edit_text.js","src/select_nodes.js","src/filter_selection.js","src/label_nodes.js","src/highlight_neighbors.js","src/highlight_paths_group.js","src/highlight_paths.js","src/expand_collapse.js","src/draw_graphs.js","src/load_graph.js","src/munge_graph.js","src/flat_group.js","src/convert.js","src/path_reader.js","src/path_selector.js","src/generate.js","src/line_breaks.js","src/type_graph.js","src/footer.js"],"names":[],"mappings":"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","file":"dc.graph.js","sourcesContent":["(function() { function _dc_graph(d3, crossfilter, dc) {\n'use strict';\n","/**\n * The entire dc.graph.js library is scoped under the **dc_graph** name space. It does not introduce\n * anything else into the global name space.\n *\n * Like in dc.js and most libraries built on d3, most `dc_graph` functions are designed to allow function chaining, meaning they return the current chart\n * instance whenever it is appropriate. The getter forms of functions do not participate in function\n * chaining because they return values that are not the chart.\n * @namespace dc_graph\n * @version 0.4.1\n * @example\n * // Example chaining\n * chart.width(600)\n * .height(400)\n * .nodeDimension(nodeDim)\n * .nodeGroup(nodeGroup);\n */\n\nvar dc_graph = {\n version: '0.4.1',\n constants: {\n CHART_CLASS: 'dc-graph'\n }\n};\n\nfunction get_original(x) {\n return x.orig;\n}\n\nfunction identity(x) {\n return x;\n};\n\nvar property = function (defaultValue, unwrap) {\n if(unwrap === undefined)\n unwrap = get_original;\n else if(unwrap === false)\n unwrap = identity;\n var value = defaultValue, react = null;\n var cascade = [];\n var ret = function (_) {\n if (!arguments.length) {\n return value;\n }\n if(react)\n react(_);\n value = _;\n return this;\n };\n ret.cascade = function (n, f) {\n for(var i = 0; i n) {\n cascade.splice(i, 0, {n: n, f: f});\n return ret;\n }\n }\n cascade.push({n: n, f: f});\n return ret;\n };\n ret._eval = function(o, n) {\n if(n===0 || !cascade.length)\n return dc_graph.functor_wrap(ret(), unwrap)(o);\n else {\n var last = cascade[n-1];\n return last.f(o, function() {\n return ret._eval(o, n-1);\n });\n }\n };\n ret.eval = function(o) {\n return ret._eval(o, cascade.length);\n };\n ret.react = function(_) {\n if (!arguments.length) {\n return react;\n }\n react = _;\n return this;\n };\n return ret;\n};\n\nfunction deprecated_property(message, defaultValue) {\n var prop = property(defaultValue);\n var ret = function() {\n if(arguments.length) {\n console.warn(message);\n prop.apply(property, arguments);\n return this;\n }\n return prop();\n };\n ['cascade', '_eval', 'eval', 'react'].forEach(function(method) {\n ret[method] = prop[method];\n });\n return ret;\n}\n\n// http://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\nfunction uuid() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\n return v.toString(16);\n });\n}\n","// i'm sure there's a word for this in haskell\nfunction conditional_properties(npred, epred, props) {\n function _if(pred, curr) {\n return function(o, last) {\n return pred(o) ? curr(o) : last();\n };\n }\n var props2 = {};\n for(var p in props) {\n if(/^node/.test(p)) {\n if(npred)\n props2[p] = _if(npred, param(props[p]));\n }\n else if(/^edge/.test(p)) {\n if(epred)\n props2[p] = _if(epred, param(props[p]));\n }\n else console.error('only know how to deal with properties that start with \"node\" or \"edge\"');\n }\n return props2;\n}\n\nfunction compose(f, g) {\n return function() {\n return f(g.apply(null, arguments));\n };\n}\n\n// version of d3.functor that optionally wraps the function with another\n// one, if the parameter is a function\ndc_graph.functor_wrap = function (v, wrap) {\n if(typeof v === \"function\") {\n return wrap ? function(x) {\n return v(wrap(x));\n } : v;\n }\n else return function() {\n return v;\n };\n};\n\n// we want to allow either values or functions to be passed to specify parameters.\n// if a function, the function needs a preprocessor to extract the original key/value\n// pair from the wrapper object we put it in.\nfunction param(v) {\n return dc_graph.functor_wrap(v, get_original);\n}\n\n// http://jsperf.com/cloning-an-object/101\nfunction clone(obj) {\n var target = {};\n for(var i in obj) {\n if(obj.hasOwnProperty(i)) {\n target[i] = obj[i];\n }\n }\n return target;\n}\n\n// because i don't think we need to bind edge point data (yet!)\nvar bez_cmds = {\n 1: 'L', 2: 'Q', 3: 'C'\n};\n\nfunction generate_path(pts, bezDegree, close) {\n var cats = ['M', pts[0].x, ',', pts[0].y], remain = bezDegree;\n var hasNaN = false;\n for(var i = 1; i < pts.length; ++i) {\n if(isNaN(pts[i].x) || isNaN(pts[i].y))\n hasNaN = true;\n cats.push(remain===bezDegree ? bez_cmds[bezDegree] : ' ', pts[i].x, ',', pts[i].y);\n if(--remain===0)\n remain = bezDegree;\n }\n if(remain!=bezDegree)\n console.log(\"warning: pts.length didn't match bezian degree\", pts, bezDegree);\n if(close)\n cats.push('Z');\n return cats.join('');\n}\n\n// for IE (do we care really?)\nMath.hypot = Math.hypot || function() {\n var y = 0;\n var length = arguments.length;\n\n for (var i = 0; i < length; i++) {\n if (arguments[i] === Infinity || arguments[i] === -Infinity) {\n return Infinity;\n }\n y += arguments[i] * arguments[i];\n }\n return Math.sqrt(y);\n};\n\nvar script_path = function() {\n var _path;\n return function() {\n if(_path === undefined) {\n // adapted from http://stackoverflow.com/a/18283141/676195\n _path = null; // only try once\n var filename = 'dc.graph.js';\n var scripts = document.getElementsByTagName('script');\n if (scripts && scripts.length > 0) {\n for (var i in scripts) {\n if (scripts[i].src && scripts[i].src.match(new RegExp(filename+'$'))) {\n _path = scripts[i].src.replace(new RegExp('(.*)'+filename+'$'), '$1');\n break;\n }\n }\n }\n }\n return _path;\n };\n}();\n","// arguably depth first search is a stupid algorithm to modularize -\n// there are many, many interesting moments to insert a behavior\n// and those end up being almost bigger than the function itself\n\n// this is an argument for providing a graph API which could make it\n// easy to just write a recursive function instead of using this\ndc_graph.depth_first_traversal = function(callbacks) { // {init, root, row, tree, place, sib, push, pop, skip, finish, nodeid, sourceid, targetid}\n return function(nodes, edges) {\n callbacks.init && callbacks.init();\n if(callbacks.tree)\n edges = edges.filter(function(e) { return callbacks.tree(e); });\n var indegree = {};\n var outmap = edges.reduce(function(m, e) {\n var tail = callbacks.sourceid(e),\n head = callbacks.targetid(e);\n if(!m[tail]) m[tail] = [];\n m[tail].push(e);\n indegree[head] = (indegree[head] || 0) + 1;\n return m;\n }, {});\n var nmap = nodes.reduce(function(m, n) {\n var key = callbacks.nodeid(n);\n m[key] = n;\n return m;\n }, {});\n\n var rows = [];\n var placed = {};\n function place_tree(n, r) {\n var key = callbacks.nodeid(n);\n if(placed[key]) {\n callbacks.skip && callbacks.skip(n, indegree[key]);\n return;\n }\n if(!rows[r])\n rows[r] = [];\n callbacks.place && callbacks.place(n, r, rows[r]);\n rows[r].push(n);\n placed[key] = true;\n if(outmap[key])\n outmap[key].forEach(function(e, ei) {\n var target = nmap[callbacks.targetid(e)];\n if(ei && callbacks.sib)\n callbacks.sib(false, nmap[callbacks.targetid(outmap[key][ei-1])], target);\n callbacks.push && callbacks.push();\n place_tree(target, r+1);\n });\n callbacks.pop && callbacks.pop(n);\n }\n\n var roots;\n if(callbacks.root)\n roots = nodes.filter(function(n) { return callbacks.root(n); });\n else {\n roots = nodes.filter(function(n) { return !indegree[callbacks.nodeid(n)]; });\n if(nodes.length && !roots.length) // all nodes are in a cycle\n roots = [nodes[0]];\n }\n roots.forEach(function(n, ni) {\n if(ni && callbacks.sib)\n callbacks.sib(true, roots[ni-1], n);\n callbacks.push && callbacks.push();\n place_tree(n, callbacks.row && callbacks.row(n) || 0);\n });\n callbacks.finish(rows);\n };\n};\n","// create or re-use objects in a map, delete the ones that were not reused\nfunction regenerate_objects(preserved, list, key, assign, create, destroy) {\n if(!create) create = function(k, o) { };\n if(!destroy) destroy = function(k) { };\n var keep = {};\n function wrap(o) {\n var k = key(o);\n if(!preserved[k])\n create(k, preserved[k] = {}, o);\n var o1 = preserved[k];\n assign(o1, o);\n keep[k] = true;\n return o1;\n }\n var wlist = list.map(wrap);\n // delete any objects from last round that are no longer used\n for(var k in preserved)\n if(!keep[k]) {\n destroy(k, preserved[k]);\n delete preserved[k];\n }\n return wlist;\n}\n","function point_on_ellipse(A, B, dx, dy) {\n var tansq = Math.tan(Math.atan2(dy, dx));\n tansq = tansq*tansq; // why is this not just dy*dy/dx*dx ? ?\n var ret = {x: A*B/Math.sqrt(B*B + A*A*tansq), y: A*B/Math.sqrt(A*A + B*B/tansq)};\n if(dx<0)\n ret.x = -ret.x;\n if(dy<0)\n ret.y = -ret.y;\n return ret;\n}\n\nvar eps = 0.0000001;\nfunction between(a, b, c) {\n return a-eps <= b && b <= c+eps;\n}\n\n// Adapted from http://stackoverflow.com/questions/563198/how-do-you-detect-where-two-line-segments-intersect/1968345#1968345\nfunction segment_intersection(x1,y1,x2,y2, x3,y3,x4,y4) {\n var x=((x1*y2-y1*x2)*(x3-x4)-(x1-x2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n var y=((x1*y2-y1*x2)*(y3-y4)-(y1-y2)*(x3*y4-y3*x4)) /\n ((x1-x2)*(y3-y4)-(y1-y2)*(x3-x4));\n if (isNaN(x)||isNaN(y)) {\n return false;\n } else {\n if (x1>=x2) {\n if (!between(x2, x, x1)) {return false;}\n } else {\n if (!between(x1, x, x2)) {return false;}\n }\n if (y1>=y2) {\n if (!between(y2, y, y1)) {return false;}\n } else {\n if (!between(y1, y, y2)) {return false;}\n }\n if (x3>=x4) {\n if (!between(x4, x, x3)) {return false;}\n } else {\n if (!between(x3, x, x4)) {return false;}\n }\n if (y3>=y4) {\n if (!between(y4, y, y3)) {return false;}\n } else {\n if (!between(y3, y, y4)) {return false;}\n }\n }\n return {x: x, y: y};\n}\n\n\nfunction point_on_polygon(points, x0, y0, x1, y1) {\n for(var i = 0; i < points.length; ++i) {\n var next = i===points.length-1 ? 0 : i+1;\n var isect = segment_intersection(points[i].x, points[i].y, points[next].x, points[next].y,\n x0, y0, x1, y1);\n if(isect)\n return isect;\n }\n return null;\n}\n\nfunction point_on_shape(chart, d, deltaX, deltaY) {\n switch(d.dcg_shape.shape) {\n case 'ellipse':\n return point_on_ellipse(d.dcg_rx, d.dcg_ry, deltaX, deltaY);\n case 'polygon':\n return point_on_polygon(d.dcg_points, 0, 0, deltaX, deltaY);\n }\n}\n\n// as many as we can get from\n// http://www.graphviz.org/doc/info/shapes.html\nvar dc_graph_shapes_ = {\n ellipse: function() {\n return {shape: 'ellipse'};\n },\n egg: function() {\n return {shape: 'polygon', sides: 100, distortion: -0.25};\n },\n triangle: function() {\n return {shape: 'polygon', sides: 3};\n },\n rectangle: function() {\n return {shape: 'polygon', sides: 4};\n },\n diamond: function() {\n return {shape: 'polygon', sides: 4, rotation: 45};\n },\n trapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: -0.5};\n },\n parallelogram: function() {\n return {shape: 'polygon', sides: 4, skew: 0.5};\n },\n pentagon: function() {\n return {shape: 'polygon', sides: 5};\n },\n hexagon: function() {\n return {shape: 'polygon', sides: 6};\n },\n septagon: function() {\n return {shape: 'polygon', sides: 7};\n },\n octagon: function() {\n return {shape: 'polygon', sides: 8};\n },\n invtriangle: function() {\n return {shape: 'polygon', sides: 3, rotation: 180};\n },\n invtrapezium: function() {\n return {shape: 'polygon', sides: 4, distortion: 0.5};\n },\n square: function() {\n return {shape: 'polygon', sides: 4};\n },\n polygon: function(def) {\n return {\n shape: 'polygon',\n sides: def.sides,\n skew: def.skew,\n distortion: def.distortion,\n rotation: def.rotation\n };\n }\n};\n\ndc_graph.available_shapes = function() {\n var shapes = Object.keys(dc_graph_shapes_);\n return shapes.slice(0, shapes.length-1);\n};\n\nvar default_shape = {shape: 'ellipse'};\n\nfunction elaborate_shape(def) {\n var shape = def.shape;\n if(def.shape === 'random') {\n var keys = Object.keys(dc_graph_shapes_);\n shape = def._shape = keys[Math.floor(Math.random()*keys.length)];\n }\n return (dc_graph_shapes_[shape] || function() {\n throw new Error('unknown shape ' + def.shape);\n })(def);\n}\n\nfunction infer_shape(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n d.dcg_shape = elaborate_shape(def);\n d.dcg_shape.abstract = def;\n };\n}\n\nfunction shape_changed(chart) {\n return function(d) {\n var def = chart.nodeShape.eval(d) || default_shape;\n var old = d.dcg_shape.abstract;\n if(def.shape !== old.shape)\n return true;\n else if(def.shape === 'polygon') {\n return def.shape.sides !== old.sides || def.shape.skew !== old.skew ||\n def.shape.distortion !== old.distortion || def.shape.rotation !== old.rotation;\n }\n else return false;\n };\n}\n\nfunction shape_element(chart) {\n return function(d) {\n var shape = d.dcg_shape.shape, elem;\n switch(shape) {\n case 'ellipse':\n elem = 'ellipse';\n break;\n case 'polygon':\n elem = 'path';\n break;\n default:\n throw new Error('unknown shape ' + shape);\n }\n return document.createElementNS(\"http://www.w3.org/2000/svg\", elem);\n };\n}\n\nfunction fit_shape(chart) {\n return function(d) {\n var r = chart.nodeRadius.eval(d);\n var bbox;\n if(chart.nodeFitLabel.eval(d))\n bbox = this.getBBox();\n var fitx = 0;\n if(bbox && bbox.width && bbox.height) {\n // make sure we can fit height in r\n r = Math.max(r, bbox.height/2 + 5);\n var rx;\n if(d.dcg_shape.shape === 'ellipse') {\n // solve (x/A)^2 + (y/B)^2) = 1 for A, with B=r, to fit text in ellipse\n // http://stackoverflow.com/a/433438/676195\n var y_over_B = bbox.height/2/r;\n rx = bbox.width/2/Math.sqrt(1 - y_over_B*y_over_B);\n d.dcg_rx = Math.max(rx, r);\n d.dcg_ry = r;\n } else {\n rx = bbox.width/2;\n // this is cribbed from graphviz but there is much i don't understand\n // and any errors are mine\n // https://github.com/ellson/graphviz/blob/6acd566eab716c899ef3c4ddc87eceb9b428b627/lib/common/shapes.c#L1996\n d.dcg_rx = rx*Math.sqrt(2)/Math.cos(Math.PI/(d.dcg_shape.sides||4));\n d.dcg_ry = r;\n }\n fitx = rx*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n }\n else d.dcg_rx = d.dcg_ry = r;\n var rplus = r*2 + chart.nodePadding.eval(d) + chart.nodeStrokeWidth.eval(d);\n d.cola.width = Math.max(fitx, rplus);\n d.cola.height = rplus;\n };\n}\n\nfunction ellipse_attrs(chart, d) {\n return {\n rx: function(d) { return d.dcg_rx; },\n ry: function(d) { return d.dcg_ry; }\n };\n}\n\nfunction polygon_attrs(chart, d) {\n return {\n d: function(d) {\n var def = d.dcg_shape,\n sides = def.sides || 4,\n skew = def.skew || 0,\n distortion = def.distortion || 0,\n rotation = def.rotation || 0,\n align = (sides%2 ? 0 : 0.5), // even-sided horizontal top, odd pointy top\n angles = [];\n rotation = rotation/360 + 0.25; // start at y axis not x\n for(var i = 0; i= 0)\n throw new Error(\"f(a) must be less than 0\");\n if(f(b).val <= 0)\n throw new Error(\"f(b) must be greater than 0\");\n while(true) {\n if(!--patience)\n throw new Error(\"patience ran out\");\n var c = (a+b)/2,\n f_c = f(c), fv = f_c.val;\n if(Math.abs(fv) < 0.5)\n return f_c;\n if(fv > 0)\n b = c;\n else\n a = c;\n }\n}\n\nfunction draw_edge_to_shapes(chart, source, target, sx, sy, tx, ty,\n neighbor, dir, offset, source_padding, target_padding) {\n var deltaX, deltaY,\n sp, tp, points, bezDegree,\n headAng, retPath;\n if(!neighbor) {\n deltaX = tx - sx;\n deltaY = ty - sy;\n sp = point_on_shape(chart, source, deltaX, deltaY);\n tp = point_on_shape(chart, target, -deltaX, -deltaY);\n if(!sp) sp = {x: 0, y: 0};\n if(!tp) tp = {x: 0, y: 0};\n points = [{\n x: sx + sp.x,\n y: sy + sp.y\n }, {\n x: tx + tp.x,\n y: ty + tp.y\n }];\n bezDegree = 1;\n }\n else {\n var p_on_s = function(node, ang) {\n return point_on_shape(chart, node, Math.cos(ang)*1000, Math.sin(ang)*1000);\n };\n var compare_dist = function(node, port0, goal) {\n return function(ang) {\n var port = p_on_s(node, ang);\n if(!port)\n return {\n port: {x: 0, y: 0},\n val: 0,\n ang: ang\n };\n else\n return {\n port: port,\n val: Math.hypot(port.x - port0.x, port.y - port0.y) - goal,\n ang: ang\n };\n };\n };\n var srcang = Math.atan2(neighbor.sourcePort.y, neighbor.sourcePort.x),\n tarang = Math.atan2(neighbor.targetPort.y, neighbor.targetPort.x);\n var bss, bst;\n\n // don't like this but throwing is unacceptable\n try {\n bss = binary_search(compare_dist(source, neighbor.sourcePort, offset),\n srcang, srcang + 2 * dir * offset / source_padding);\n }\n catch(x) {\n bss = {ang: srcang, port: neighbor.sourcePort};\n }\n try {\n bst = binary_search(compare_dist(target, neighbor.targetPort, offset),\n tarang, tarang - 2 * dir * offset / source_padding);\n }\n catch(x) {\n bst = {ang: tarang, port: neighbor.targetPort};\n }\n\n sp = bss.port;\n tp = bst.port;\n var sdist = Math.hypot(sp.x, sp.y),\n tdist = Math.hypot(tp.x, tp.y),\n c1dist = sdist+source_padding/2,\n c2dist = tdist+target_padding/2;\n var c1X = sx + c1dist * Math.cos(bss.ang),\n c1Y = sy + c1dist * Math.sin(bss.ang),\n c2X = tx + c2dist * Math.cos(bst.ang),\n c2Y = ty + c2dist * Math.sin(bst.ang);\n points = [\n {x: sx + sp.x, y: sy + sp.y},\n {x: c1X, y: c1Y},\n {x: c2X, y: c2Y},\n {x: tx + tp.x, y: ty + tp.y}\n ];\n bezDegree = 3;\n }\n return {\n sourcePort: sp,\n targetPort: tp,\n points: points,\n bezDegree: bezDegree\n };\n}\n\n\n// from https://www.jasondavies.com/animated-bezier/\nfunction interpolate(d, p) {\n var r = [];\n for (var i=1; i\" + d.orig.value.name + \"\");\n * });\n * diagram.child('tip', tip);\n * @return {dc_graph.diagram}\n **/\n _chart.child = function(id, object) {\n if(arguments.length === 1)\n return _children[id];\n // do not notify unnecessarily\n if(_children[id] === object)\n return _chart;\n if(_children[id])\n _children[id].parent(null);\n _children[id] = object;\n if(object)\n object.parent(_chart);\n return _chart;\n };\n\n /**\n * Specify 'cola' (the default) or 'dagre' as the Layout Algorithm and it will replace the\n * back-end.\n *\n * **Deprecated**: use {@link dc_graph.diagram#layoutEngine diagram.layoutEngine} with the engine\n * object instead\n * @method layoutAlgorithm\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [algo='cola'] - the name of the layout algorithm to use\n * @example\n * // use dagre for layout\n * diagram.layoutAlgorithm('dagre');\n * @return {dc_graph.diagram}\n **/\n _chart.layoutAlgorithm = function(value, skipWarning) {\n if(!arguments.length)\n return _chart.layoutEngine() ? _chart.layoutEngine().layoutAlgorithm() : 'cola';\n if(!skipWarning)\n console.warn('dc.graph.diagram.layoutAlgorithm is depecrated - pass the layout engine object to dc_graph.diagram.layoutEngine instead');\n\n var engine;\n switch(value) {\n case 'cola':\n engine = dc_graph.cola_layout();\n break;\n case 'dagre':\n engine = dc_graph.dagre_layout();\n }\n engine = dc_graph.webworker_layout(engine);\n _chart.layoutEngine(engine);\n return this;\n };\n\n /**\n * The layout engine determines how to draw things!\n * @method layoutEngine\n * @memberof dc_graph.diagram\n * @instance\n * @param {Object} [engine=null] - the layout engine to use\n * @example\n * // use cola with no webworker\n * diagram.layoutEngine(dc_graph.cola_layout());\n * // use dagre with a webworker\n * diagram.layoutEngine(dc_graph.webworker_layout(dc_graph.dagre_layout()));\n **/\n _chart.layoutEngine = property(null).react(function(val) {\n if(val && val.parent)\n val.parent(_chart);\n });\n\n _chart.tickSize = deprecate_layout_algo_parameter('tickSize');\n\n\n _chart.uniqueId = function() {\n return _chart.anchorName().replace(/[ .#=\\[\\]\"]/g, '-');\n };\n\n _chart.edgeId = function(d) {\n return 'edge-' + _chart.edgeKey.eval(d).replace(/[^\\w-_]/g, '-');\n };\n\n _chart.arrowId = function(d, kind) {\n return 'arrow-' + kind + '-' + _chart.uniqueId() + '-' + _chart.edgeId(d);\n };\n _chart.textpathId = function(d) {\n return 'textpath-' + _chart.uniqueId() + '-' + _chart.edgeId(d);\n };\n\n // this kind of begs a (meta)graph ADT\n // instead of munging this into the diagram\n _chart.getNode = function(id) {\n return _nodes[id] ? _nodes[id].orig : null;\n };\n\n /**\n * Instructs cola.js to fit the connected components.\n *\n * **Deprecated**: Use\n * {@link dc_graph.cola_layout#handleDisconnected cola_layout.handleDisconnected} instead.\n * @method handleDisconnected\n * @memberof dc_graph.diagram\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.diagram}\n **/\n _chart.handleDisconnected = deprecate_layout_algo_parameter('handleDisconnected');\n\n function initLayout() {\n if(!_chart.layoutEngine())\n _chart.layoutAlgorithm('cola', true);\n _chart.layoutEngine().init({\n width: _chart.width(),\n height: _chart.height()\n });\n }\n\n _chart._enterNode = function(nodeEnter) {\n if(_chart.nodeTitle())\n nodeEnter.append('title');\n nodeEnter.each(infer_shape(_chart));\n nodeEnter.append(shape_element(_chart))\n .attr('class', 'node-shape');\n nodeEnter.append('text')\n .attr('class', 'node-label');\n return _chart;\n };\n\n _chart._updateNode = function(node) {\n var changedShape = node.filter(shape_changed(_chart));\n changedShape.select('.node-shape').remove();\n changedShape.each(infer_shape(_chart));\n changedShape.insert(shape_element(_chart), ':first-child')\n .attr('class', 'node-shape');\n node.select('title')\n .text(_chart.nodeTitle.eval);\n var text = node.select('text.node-label');\n var tspan = text.selectAll('tspan').data(function(n) {\n var lines = _chart.nodeLabel.eval(n);\n if(!lines)\n return [];\n else if(typeof lines === 'string')\n lines = [lines];\n var first = lines.length%2 ? 0.3 - (lines.length-1)/2 : 1-lines.length/2;\n return lines.map(function(line, i) { return {line: line, ofs: (i==0 ? first : 1) + 'em'}; });\n });\n tspan.enter().append('tspan')\n .attr('x', 0)\n .attr('dy', function(d) { return d.ofs; });\n tspan.text(function(d) { return d.line; });\n tspan.exit().remove();\n text\n .attr('fill', _chart.nodeLabelFill.eval)\n .each(fit_shape(_chart));\n node.select('.node-shape')\n .each(shape_attrs(_chart))\n .attr({\n stroke: _chart.nodeStroke.eval,\n 'stroke-width': _chart.nodeStrokeWidth.eval,\n fill: compose(_chart.nodeFillScale() || identity, _chart.nodeFill.eval)\n });\n return _chart;\n };\n\n function has_source_and_target(e) {\n return !!e.source && !!e.target;\n }\n\n // three stages: delete before layout, and modify & insert split the transitionDuration\n function transition_duration() {\n return (_chart.stageTransitions() !== 'none') ?\n _chart.transitionDuration() / 2 :\n _chart.transitionDuration();\n }\n\n function transition_delay(is_enter) {\n return _chart.stageTransitions() === 'none' ||\n _chart.stageTransitions() === 'modins' === !is_enter ?\n 0 :\n _chart.transitionDuration() / 2;\n }\n\n _chart.isRunning = function() {\n return _running;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Computes a new layout based on the nodes and edges in the edge groups, and\n * displays the diagram. To the extent possible, the diagram will minimize changes in\n * positions from the previous layout. `.render()` must be called the first time, and\n * `.redraw()` can be called after that.\n\n * `.redraw()` will be triggered by changes to the filters in any other charts in the same\n * dc.js chart group.\n\n * Unlike in dc.js, `redraw` executes asynchronously, because drawing can be computationally\n * intensive, and the diagram will be drawn multiple times if\n * {@link #dc_graph.diagram+showLayoutSteps showLayoutSteps}\n * is enabled. Watch the {@link #dc_graph.diagram+on 'end'} event to know when layout is\n * complete.\n **/\n var _needsRedraw = false;\n _chart.redraw = function () {\n // since dc.js can receive UI events and trigger redraws whenever it wants,\n // and cola absolutely will not tolerate being poked while it's doing layout,\n // we need to guard the startLayout call.\n if(_running) {\n _needsRedraw = true;\n return this;\n }\n else return _chart.startLayout();\n };\n\n _chart.startLayout = function () {\n var nodes = _chart.nodeGroup().all();\n var edges = _chart.edgeGroup().all();\n if(_running) {\n throw new Error('dc_graph.diagram.redraw already running!');\n }\n _running = true;\n\n _chart.layoutEngine().stop();\n\n if(_chart.initLayoutOnRedraw())\n initLayout();\n\n // ordering shouldn't matter, but we support ordering in case it does\n if(_chart.nodeOrdering()) {\n nodes = crossfilter.quicksort.by(_chart.nodeOrdering())(nodes.slice(0), 0, nodes.length);\n }\n if(_chart.edgeOrdering()) {\n edges = crossfilter.quicksort.by(_chart.edgeOrdering())(edges.slice(0), 0, edges.length);\n }\n\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return _chart.nodeKey()(v);\n }, function(v1, v) {\n v1.orig = v;\n v1.cola = v1.cola || {};\n v1.cola.dcg_nodeKey = _chart.nodeKey.eval(v1);\n if(_chart.nodeFixed())\n v1.cola.dcg_nodeFixed = _chart.nodeFixed.eval(v1);\n _chart.layoutEngine().populateLayoutNode(v1.cola, v1);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return _chart.edgeKey()(e);\n }, function(e1, e) {\n e1.orig = e;\n e1.cola = e1.cola || {};\n e1.cola.dcg_edgeKey = _chart.edgeKey.eval(e1);\n e1.cola.dcg_edgeSource = _chart.edgeSource.eval(e1);\n e1.cola.dcg_edgeTarget = _chart.edgeTarget.eval(e1);\n e1.source = _nodes[e1.cola.dcg_edgeSource];\n e1.target = _nodes[e1.cola.dcg_edgeTarget];\n e1.cola.dcg_edgeLength = _chart.edgeLength.eval(e1);\n _chart.layoutEngine().populateLayoutEdge(e1.cola, e1);\n });\n\n // remove edges that don't have both end nodes\n wedges = wedges.filter(has_source_and_target);\n\n // remove self-edges (since we can't draw them - will be option later)\n wedges = wedges.filter(function(e) { return e.source !== e.target; });\n\n wedges = wedges.filter(_chart.edgeIsShown.eval);\n\n // and optionally, nodes that have no edges\n if(_chart.induceNodes()) {\n var keeps = {};\n wedges.forEach(function(e) {\n keeps[e.cola.dcg_edgeSource] = true;\n keeps[e.cola.dcg_edgeTarget] = true;\n });\n wnodes = wnodes.filter(function(n) { return keeps[n.cola.dcg_nodeKey]; });\n for(var k in _nodes)\n if(!keeps[k])\n delete _nodes[k];\n }\n\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n _stats = {nnodes: wnodes.length, nedges: wedges.length};\n\n // annotate parallel edges so we can draw them specially\n if(_chart.parallelEdgeOffset()) {\n var em = new Array(wnodes.length);\n for(var i = 0; i < em.length; ++i) {\n em[i] = new Array(em.length); // technically could be diagonal array\n for(var j = 0; j < em.length; ++j)\n em[i][j] = {\n n: 0,\n ports: {\n rev: []\n }\n };\n }\n wedges.forEach(function(e) {\n var min = Math.min(e.source.index, e.target.index),\n max = Math.max(e.source.index, e.target.index);\n e.parallel = em[min][max].n++;\n e.ports = em[min][max].ports;\n e.ports.rev.push(min !== e.source.index);\n });\n for(i = 0; i < em.length; ++i)\n for(j = 0; j < em.length; ++j)\n if(em[i][j].n)\n em[i][j].ports.n = em[i][j].n;\n }\n\n // create edge SVG elements\n var edge = _edgeLayer.selectAll('.edge')\n .data(wedges, _chart.edgeKey.eval);\n var edgeEnter = edge.enter().append('svg:path')\n .attr({\n class: 'edge',\n id: _chart.edgeId,\n opacity: 0\n });\n\n edge.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .each(function(d) {\n edgeArrow(d, 'head', null);\n edgeArrow(d, 'head', null);\n })\n .remove();\n\n // another wider copy of the edge just for hover events\n var edgeHover = _edgeLayer.selectAll('.edge-hover')\n .data(wedges, _chart.edgeKey.eval);\n var edgeHoverEnter = edgeHover.enter().append('svg:path')\n .attr('class', 'edge-hover')\n .attr('opacity', 0)\n .attr('stroke', 'green')\n .attr('stroke-width', 10)\n .on('mouseover', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'visible');\n })\n .on('mouseout', function(d) {\n d3.select('#' + _chart.edgeId(d) + '-label')\n .attr('visibility', 'hidden');\n });\n edgeHover.exit().remove();\n\n var edgeLabels = _edgeLayer.selectAll('.edge-label')\n .data(wedges, _chart.edgeKey.eval);\n var edgeLabelsEnter = edgeLabels.enter()\n .append('text')\n .attr('id', function(d) {\n return _chart.edgeId(d) + '-label';\n })\n .attr('visibility', 'hidden')\n .attr({'class':'edge-label',\n 'text-anchor': 'middle',\n dy:-2})\n .append('textPath')\n .attr('startOffset', '50%')\n .attr('xlink:href', function(d) {\n var id = _chart.textpathId(d);\n return '#' + id;\n });\n var textPaths = _defs.selectAll('path.edge-label-path')\n .data(wedges, _chart.textpathId);\n var textPathsEnter = textPaths.enter()\n .append('svg:path').attr({\n class: 'edge-label-path',\n id: _chart.textpathId\n });\n edgeLabels.each(function(d) {\n d.dcg_bbox = null;\n })\n .selectAll('textPath')\n .text(function(d){\n return _chart.edgeLabel.eval(d);\n });\n edgeLabels.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0).remove();\n\n // create node SVG elements\n var node = _nodeLayer.selectAll('.node')\n .data(wnodes, _chart.nodeKey.eval);\n var nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('opacity', '0'); // don't show until has layout\n // .call(_d3cola.drag);\n\n _chart._enterNode(nodeEnter);\n\n node.exit().transition()\n .duration(transition_duration())\n .delay(_chart.deleteDelay())\n .attr('opacity', 0)\n .remove();\n\n _dispatch.drawn(node, edge, edgeHover);\n\n _refresh(node, edge);\n\n // really we should have layout chaining like in the good old Dynagraph days\n // the ordering of this and the previous 4 statements is somewhat questionable\n if(_chart.initialLayout())\n _chart.initialLayout()(_chart, wnodes, wedges);\n\n // no layout if the topology hasn't changed\n var skip_layout = false;\n if(!_chart.layoutUnchanged()) {\n var nodes_snapshot = JSON.stringify(wnodes.map(get_original)),\n edges_snapshot = JSON.stringify(wedges.map(get_original));\n if(nodes_snapshot === _nodes_snapshot && edges_snapshot === _edges_snapshot)\n skip_layout = true;\n _nodes_snapshot = nodes_snapshot;\n _edges_snapshot = edges_snapshot;\n }\n\n // cola constraints always use indices, but node references\n // are more friendly, so translate those\n\n // i am not satisfied with this constraint generation api...\n // https://github.com/dc-js/dc.graph.js/issues/10\n var constraints = _chart.constrain()(_chart, wnodes, wedges);\n // translate references from names to indices (ugly)\n constraints.forEach(function(c) {\n if(c.type) {\n switch(c.type) {\n case 'alignment':\n c.offsets.forEach(function(o) {\n o.node = _nodes[o.node].index;\n });\n break;\n case 'circle':\n c.nodes.forEach(function(n) {\n n.node = _nodes[n.node].index;\n });\n break;\n }\n } else if(c.axis) {\n c.left = _nodes[c.left].index;\n c.right = _nodes[c.right].index;\n }\n });\n\n // pseudo-cola.js features\n\n // 1. non-layout edges are drawn but not told to cola.js\n var layout_edges = wedges.filter(_chart.edgeIsLayout.eval);\n var nonlayout_edges = wedges.filter(function(x) {\n return !_chart.edgeIsLayout.eval(x);\n });\n\n // 2. type=circle constraints\n var circle_constraints = constraints.filter(function(c) {\n return c.type === 'circle';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'circle';\n });\n circle_constraints.forEach(function(c) {\n var R = (c.distance || _chart.baseLength()*4) / (2*Math.sin(Math.PI/c.nodes.length));\n var nindices = c.nodes.map(function(x) { return x.node; });\n var namef = function(i) {\n return _chart.nodeKey.eval(wnodes[i]);\n };\n var wheel = dc_graph.wheel_edges(namef, nindices, R)\n .map(function(e) {\n var e1 = {internal: e};\n e1.source = _nodes[e.sourcename];\n e1.target = _nodes[e.targetname];\n return e1;\n });\n layout_edges = layout_edges.concat(wheel);\n });\n\n // 3. ordered alignment\n var ordered_constraints = constraints.filter(function(c) {\n return c.type === 'ordering';\n });\n constraints = constraints.filter(function(c) {\n return c.type !== 'ordering';\n });\n ordered_constraints.forEach(function(c) {\n var sorted = c.nodes.map(function(n) { return _nodes[n]; });\n if(c.ordering) {\n var sort = crossfilter.quicksort.by(param(c.ordering));\n sorted = sort(sorted, 0, sorted.length);\n }\n var left;\n sorted.forEach(function(n, i) {\n if(i===0)\n left = n;\n else {\n constraints.push({\n left: left.index,\n right: (left = n).index,\n axis: c.axis,\n gap: c.gap\n });\n }\n });\n });\n if(_chart.legend())\n _chart.legend().redraw();\n if(skip_layout) {\n _running = false;\n _dispatch.end(false);\n return this;\n }\n var startTime = Date.now();\n\n function populate_cola(rnodes, redges) {\n rnodes.forEach(function(rn) {\n var n = _nodes[rn.dcg_nodeKey];\n n.cola.x = rn.x;\n n.cola.y = rn.y;\n });\n redges.forEach(function(re) {\n var e = _edges[re.dcg_edgeKey];\n });\n }\n _chart.layoutEngine()\n .on('tick', function(nodes, edges) {\n var elapsed = Date.now() - startTime;\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n if(_chart.showLayoutSteps())\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n if(_needsRedraw || _chart.timeLimit() && elapsed > _chart.timeLimit()) {\n console.log('cancelled');\n _chart.layoutEngine().stop();\n }\n })\n .on('end', function(nodes, edges) {\n if(!_chart.showLayoutSteps()) {\n if(!_chart.initialOnly())\n populate_cola(nodes, edges);\n draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter);\n }\n else layout_done(true);\n var do_zoom;\n switch(_chart.autoZoom()) {\n case 'always':\n do_zoom = true;\n break;\n case 'once':\n do_zoom = true;\n _chart.autoZoom(null);\n break;\n default:\n do_zoom = false;\n }\n calc_bounds(node, edge);\n if(do_zoom)\n auto_zoom();\n })\n .on('start', function() {\n console.log('algo ' + _chart.layoutEngine().layoutAlgorithm() + ' started.');\n _dispatch.start();\n });\n\n if(_chart.initialOnly())\n _chart.layoutEngine().dispatch().end(wnodes, wedges);\n else {\n _dispatch.start(); // cola doesn't seem to fire this itself?\n _chart.layoutEngine().data(\n wnodes.map(function(v) { return v.cola; }),\n layout_edges.map(function(v) { return v.cola; }),\n constraints,\n {groupConnected: _chart.groupConnected()}\n );\n _chart.layoutEngine().start({\n initialUnconstrainedIterations: 10,\n initialUserConstraintIterations: 20,\n initialAllConstraintsIterations: 20\n });\n }\n return this;\n };\n\n function _refresh(node, edge) {\n edge\n .attr('stroke', _chart.edgeStroke.eval)\n .attr('stroke-width', _chart.edgeStrokeWidth.eval)\n .attr('marker-end', function(d) {\n var name = _chart.edgeArrowhead.eval(d),\n id = edgeArrow(d, 'head', name);\n return id ? 'url(#' + id + ')' : null;\n })\n .attr('marker-start', function(d) {\n var name = _chart.edgeArrowtail.eval(d),\n arrow_id = edgeArrow(d, 'tail', name);\n return name ? 'url(#' + arrow_id + ')' : null;\n })\n .each(function(e) {\n d3.selectAll('#' + _chart.arrowId(e, 'head') + ',#' + _chart.arrowId(e, 'tail'))\n .attr('fill', _chart.edgeStroke.eval(e));\n });\n\n _chart._updateNode(node);\n }\n\n _chart.refresh = function(node, edge, edgeHover, edgeLabels, textPaths) {\n node = node || _nodeLayer.selectAll('.node');\n edge = edge || _edgeLayer.selectAll('.edge');\n _refresh(node, edge);\n\n edgeHover = edgeHover || _edgeLayer.selectAll('.edge-hover');\n edgeLabels = edgeLabels || _edgeLayer.selectAll('.edge-label');\n textPaths = textPaths || _defs.selectAll('path.edge-label-path');\n var nullSel = d3.select(null); // no enters\n draw(node, nullSel, edge, nullSel, edgeHover, nullSel, edgeLabels, nullSel, textPaths, nullSel);\n };\n\n\n function layout_done(happens) {\n _dispatch.end(happens);\n _running = false;\n if(_needsRedraw) {\n _needsRedraw = false;\n window.setTimeout(function() {\n if(!_chart.isRunning()) // someone else may already have started\n _chart.redraw();\n }, 0);\n }\n }\n\n function calc_edge_path(d, age, sx, sy, tx, ty) {\n if(!d.ports[age]) {\n var source_padding = d.source.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.source) / 2,\n target_padding = d.target.dcg_ry +\n _chart.nodeStrokeWidth.eval(d.target) / 2;\n d.ports[age] = new Array(d.ports.n);\n var reversedness = d.ports.rev[d.parallel];\n for(var p = 0; p < d.ports.n; ++p) {\n // alternate parallel edges over, then under\n var dir = (!!(p%2) === (sx < tx)) ? -1 : 1,\n port = Math.floor((p+1)/2),\n last = port ? d.ports[age][p > 2 ? p - 2 : 0].path : null;\n var path = draw_edge_to_shapes(_chart, d.source, d.target, sx, sy, tx, ty,\n last, dir, _chart.parallelEdgeOffset(),\n source_padding, target_padding\n );\n if(d.ports.rev[p] !== reversedness)\n path.points.reverse();\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n var near = bezier_point(path.points, 0.75);\n d.ports[age][p] = {\n path: path,\n orient: Math.atan2(tpos.y - near.y, tpos.x - near.x) + 'rad'\n };\n }\n }\n return d.ports[age][d.parallel].path;\n }\n\n function calc_old_edge_path(d) {\n calc_edge_path(d, 'old', d.source.prevX || d.source.cola.x, d.source.prevY || d.source.cola.y,\n d.target.prevX || d.target.cola.x, d.target.prevY || d.target.cola.y);\n }\n\n function calc_new_edge_path(d) {\n var path = calc_edge_path(d, 'new', d.source.cola.x, d.source.cola.y, d.target.cola.x, d.target.cola.y);\n var spos = path.points[0], tpos = path.points[path.points.length-1];\n d.length = Math.hypot(tpos.x-spos.x, tpos.y-spos.y);\n }\n\n function render_edge_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n return generate_path(path.points, path.bezDegree);\n };\n }\n\n function render_edge_label_path(age) {\n return function(d) {\n var path = d.ports[age][d.parallel].path;\n var points = d.target.cola.x < d.source.cola.x ?\n path.points.slice(0).reverse() : path.points;\n return generate_path(points, path.bezDegree);\n };\n }\n\n // wait on multiple transitions, adapted from\n // http://stackoverflow.com/questions/10692100/invoke-a-callback-at-the-end-of-a-transition\n function endall(transitions, callback) {\n if (transitions.every(function(transition) { return transition.size() === 0; }))\n callback();\n var n = 0;\n transitions.forEach(function(transition) {\n transition\n .each(function() { ++n; })\n .each('end.all', function() { if (!--n) callback(); });\n });\n }\n\n function node_bounds(n) {\n return {left: n.cola.x - n.dcg_rx, top: n.cola.y - n.dcg_ry,\n right: n.cola.x + n.dcg_rx, bottom: n.cola.y + n.dcg_ry};\n }\n\n function union_bounds(b1, b2) {\n return {\n left: Math.min(b1.left, b2.left),\n top: Math.min(b1.top, b2.top),\n right: Math.max(b1.right, b2.right),\n bottom: Math.max(b1.bottom, b2.bottom)\n };\n }\n\n function point_to_bounds(p) {\n return {\n left: p.x,\n top: p.y,\n right: p.x,\n bottom: p.y\n };\n }\n\n function edge_bounds(e) {\n // assumption: edge must have some points\n var points = e.ports.new[e.parallel].path.points;\n return points.map(point_to_bounds).reduce(union_bounds);\n }\n\n function debug_bounds(bounds) {\n var brect = _g.selectAll('rect.bounds').data([0]);\n brect.enter()\n .insert('rect', ':first-child').attr({\n class: 'bounds',\n fill: 'rgba(128,255,128,0.1)',\n stroke: '#000'\n });\n brect\n .attr({\n x: bounds.left,\n y: bounds.top,\n width: bounds.right - bounds.left,\n height: bounds.bottom - bounds.top\n });\n }\n\n var _bounds;\n function calc_bounds(node, edge) {\n if((_chart.fitStrategy() || _chart.restrictPan()) && node.size()) {\n // assumption: there can be no edges without nodes\n _bounds = node.data().map(node_bounds).reduce(union_bounds);\n _bounds = edge.data().map(edge_bounds).reduce(union_bounds, _bounds);\n }\n }\n\n function auto_zoom() {\n if(_chart.fitStrategy()) {\n if(!_bounds)\n return;\n var vwidth = _bounds.right - _bounds.left, vheight = _bounds.bottom - _bounds.top,\n swidth = _chart.width(), sheight = _chart.height(), viewBox;\n if(_chart.DEBUG_BOUNDS)\n debug_bounds(_bounds);\n var fitS = _chart.fitStrategy(), pAR, translate = [0,0], scale = 1,\n amv; // align margins vertically\n if(['default', 'vertical', 'horizontal'].indexOf(fitS) >= 0) {\n var sAR = sheight / swidth, vAR = vheight / vwidth,\n vrl = vAR 2)\n throw new Error(\"align_ expecting 0-2 sides, not \" + sides.length);\n var bounds = margined_bounds();\n translate = _zoom.translate();\n scale = _zoom.scale();\n sides.forEach(function(s) {\n switch(s) {\n case 'l':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 't':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'r':\n translate[0] = align_right(translate, bounds.right);\n break;\n case 'b':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n throw new Error(\"align_ expecting l t r or b, not '\" + s + \"'\");\n }\n });\n }\n else if(typeof fitS === 'function') {\n var fit = fitS(vwidth, vheight, swidth, sheight);\n pAR = fit.pAR;\n translate = fit.translate;\n scale = fit.scale;\n viewBox = fit.viewBox;\n }\n else if(typeof fitS === 'string')\n pAR = _chart.fitStrategy();\n else\n throw new Error('unknown fitStrategy type ' + typeof fitS);\n\n if(pAR !== undefined) {\n if(!viewBox)\n viewBox = [_bounds.left, _bounds.top, vwidth, vheight].join(' ');\n _svg.attr({\n viewBox: viewBox,\n preserveAspectRatio: pAR\n });\n }\n _zoom.translate(translate).scale(scale).event(_svg);\n _dispatch.zoomed(translate, scale);\n }\n }\n\n function draw(node, nodeEnter, edge, edgeEnter, edgeHover, edgeHoverEnter, edgeLabels, edgeLabelsEnter, textPaths, textPathsEnter) {\n console.assert(edge.data().every(has_source_and_target));\n\n var nodeEntered = {};\n nodeEnter\n .each(function(n) {\n nodeEntered[_chart.nodeKey.eval(n)] = true;\n })\n .attr('transform', function (d) {\n // start new nodes at their final position\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n });\n var ntrans = node\n .transition()\n .duration(transition_duration())\n .delay(function(n) {\n return transition_delay(nodeEntered[_chart.nodeKey.eval(n)]);\n })\n .attr('opacity', _chart.nodeOpacity.eval)\n .attr('transform', function (d) {\n return 'translate(' + d.cola.x + ',' + d.cola.y + ')';\n })\n .each('end.record', function(d) {\n d.prevX = d.cola.x;\n d.prevY = d.cola.y;\n });\n\n // reset edge ports\n edge.each(function(d) {\n d.ports.new = null;\n d.ports.old = null;\n });\n\n var edgeEntered = {};\n edgeEnter\n .each(function(e) {\n edgeEntered[_chart.edgeKey.eval(e)] = true;\n })\n .each(function(e) {\n // if staging transitions, just fade new edges in at new position\n // else start new edges at old positions of nodes, if any, else new positions\n var age;\n if(_chart.stageTransitions() === 'modins') {\n calc_new_edge_path(e);\n age = 'new';\n }\n else {\n calc_old_edge_path(e);\n age = 'old';\n }\n if(_chart.edgeArrowhead.eval(e))\n d3.select('#' + _chart.arrowId(e, 'head'))\n .attr('orient', function() {\n return e.ports[age][e.parallel].orient;\n });\n })\n .attr('d', render_edge_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n\n var etrans = edge.each(calc_new_edge_path)\n .each(function(e) {\n if(_chart.edgeArrowhead.eval(e)) {\n d3.select('#' + _chart.arrowId(e, 'head'))\n .transition().duration(transition_duration())\n .delay(transition_delay(false))\n .attr('orient', function() {\n return e.ports.new[e.parallel].orient;\n });\n }\n })\n .transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_path(when)(e);\n });\n textPathsEnter\n .attr('d', render_edge_label_path(_chart.stageTransitions() === 'modins' ? 'new' : 'old'));\n var textTrans = textPaths.transition()\n .duration(transition_duration())\n .delay(function(e) {\n return transition_delay(edgeEntered[_chart.edgeKey.eval(e)]);\n })\n .attr('opacity', _chart.edgeOpacity.eval)\n .attr('d', function(e) {\n var when = _chart.stageTransitions() === 'insmod' &&\n edgeEntered[_chart.edgeKey.eval(e)] ? 'old' : 'new';\n return render_edge_label_path(when)(e);\n });\n if(_chart.stageTransitions() === 'insmod') {\n // inserted edges transition twice in insmod mode\n if(transition_duration() >= 50) {\n etrans = etrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_path('new'));\n textTrans = textTrans.transition()\n .duration(transition_duration())\n .attr('d', render_edge_label_path('new'));\n } else {\n // if transitions are too short, we run into various problems,\n // from transitions not completing to objects not found\n // so don't try to chain in that case\n // this also helped once: d3.timer.flush();\n etrans\n .attr('d', render_edge_path('new'));\n textTrans\n .attr('d', render_edge_path('new'));\n }\n }\n\n // signal layout done when all transitions complete\n // because otherwise client might start another layout and lock the processor\n if(!_chart.showLayoutSteps())\n endall([ntrans, etrans, textTrans], function() { layout_done(true); });\n\n edgeHover.attr('d', render_edge_path('new'));\n }\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Erases any existing SVG elements and draws the diagram from scratch. `.render()`\n * must be called the first time, and `.redraw()` can be called after that.\n * @method render\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.render = function () {\n if(!_chart.initLayoutOnRedraw())\n initLayout();\n _chart.resetSvg();\n _g = _svg.append('g')\n .attr('class', 'draw');\n _edgeLayer = _g.append('g')\n .attr('class', 'edge-layer');\n _nodeLayer = _g.append('g')\n .attr('class', 'node-layer');\n\n if(_chart.legend())\n _chart.legend().render();\n return _chart.redraw();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Attaches an event handler to the diagram. The currently supported events are\n * * `start()` - layout is starting\n * * `drawn(nodes, edges)` - the node and edge elements have been rendered to the screen\n * and can be modified through the passed d3 selections.\n * * `end()` - diagram layout has completed.\n * @method on\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [event] - the event to subscribe to\n * @param {Function} [f] - the event handler\n * @return {dc_graph.diagram}\n **/\n _chart.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n\n /**\n * Returns an object with current statistics on graph layout.\n * * `nnodes` - number of nodes displayed\n * * `nedges` - number of edges displayed\n * @method getStats\n * @memberof dc_graph.diagram\n * @instance\n * @return {}\n * @return {dc_graph.diagram}\n **/\n _chart.getStats = function() {\n return _stats;\n };\n\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Execute a d3 single selection in the diagram's scope using the given selector\n * and return the d3 selection. Roughly the same as\n * ```js\n * d3.select('#diagram-id').select(selector)\n * ```\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method select\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.select = function (s) {\n return _chart.root().select(s);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Selects all elements that match the d3 single selector in the diagram's scope,\n * and return the d3 selection. Roughly the same as\n\n * ```js\n * d3.select('#diagram-id').selectAll(selector)\n * ```\n\n * Since this function returns a d3 selection, it is not chainable. (However, d3 selection\n * calls can be chained after it.)\n * @method selectAll\n * @memberof dc_graph.diagram\n * @instance\n * @param {String} [selector]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n **/\n _chart.selectAll = function (s) {\n return _chart.root() ? _chart.root().selectAll(s) : null;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the x scale.\n * @method x\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _chart.x = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Gets or sets the y scale.\n * @method x\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.scale} [scale]\n * @return {d3.scale}\n * @return {dc_graph.diagram}\n\n **/\n _chart.y = property(null);\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Returns the top `svg` element for this specific chart. You can also pass in a new\n * svg element, but setting the svg element on a diagram may have unexpected consequences.\n * @method svg\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.svg = function (_) {\n if (!arguments.length) {\n return _svg;\n }\n _svg = _;\n return _chart;\n };\n\n /**\n * Returns the top `g` element for this specific chart. This method is usually used to\n * retrieve the g element in order to overlay custom svg drawing\n * programatically. **Caution**: The root g element is usually generated internally, and\n * resetting it might produce unpredictable results.\n * @method g\n * @memberof dc_graph.diagram\n * @instance\n * @param {d3.selection} [selection]\n * @return {d3.selection}\n * @return {dc_graph.diagram}\n\n **/\n _chart.g = function (_) {\n if (!arguments.length) {\n return _g;\n }\n _g = _;\n return _chart;\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Remove the diagram's SVG elements from the dom and recreate the container SVG\n * element.\n * @method resetSvg\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.resetSvg = function () {\n _chart.select('svg').remove();\n return generateSvg();\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be redrawn.\n * @method redrawGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.redrawGroup = function () {\n dc.redrawAll(chartGroup);\n };\n\n /**\n * Standard dc.js\n * {@link https://github.com/dc-js/dc.js/blob/develop/web/docs/api-latest.md#dc.baseMixin baseMixin}\n * method. Causes all charts in the chart group to be rendered.\n * @method renderGroup\n * @memberof dc_graph.diagram\n * @instance\n * @return {dc_graph.diagram}\n **/\n _chart.renderGroup = function () {\n dc.renderAll(chartGroup);\n };\n\n /**\n * Creates an svg marker definition for drawing edge arrow tails or heads. The `viewBox` of\n * the marker is `0 -5 10 10`, so the arrow should be drawn from (0, -5) to (10, 5); it\n * will be moved and sized based on the other parameters, and rotated based on the\n * orientation of the edge.\n\n * (If further customization is required, it is possible to append other `svg:defs` to\n * `chart.svg()` and use refer to them by `id`.)\n * @method defineArrow\n * @memberof dc_graph.diagram\n * @instance\n * @param {Number} name - the identifier to give the marker, to be used with\n * {@link #dc_graph.diagram+edgeArrowhead edgeArrowhead} or\n * {@link #dc_graph.diagram+edgeArrowtail edgeArrowtail}\n * @param {Number} width - the width, in pixels, to draw the marker\n * @param {Number} height - the height, in pixels, to draw the marker\n * @param {Number} refX - the X reference position, in marker coordinates, which will be\n * aligned to the endpoint of the edge\n * @param {Number} refY - the Y reference position\n * @param {Function} drawf - a function to draw the marker using d3 SVG primitives, which\n * takes the marker object as its parameter.\n * @example\n * // the built-in `vee` arrow is defined like so:\n * _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n * marker.append('svg:path')\n * .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n * .attr('stroke-width', '0px');\n * });\n * @return {dc_graph.diagram}\n **/\n _chart.defineArrow = function(name, width, height, refX, refY, drawf) {\n _arrows[name] = {\n name: name,\n width: width,\n height: height,\n refX: refX,\n refY: refY,\n drawFunction: drawf\n };\n return _chart;\n };\n\n _chart.addOrRemoveDef = function(id, whether, tag) {\n var data = whether ? [0] : [];\n var sel = _defs.selectAll('#' + id).data(data);\n\n var selEnter = sel\n .enter().append(tag)\n .attr('id', id);\n sel.exit().remove();\n return selEnter;\n };\n\n function edgeArrow(d, kind, name) {\n var id = _chart.arrowId(d, kind),\n markerEnter = _chart.addOrRemoveDef(id, !!name, 'svg:marker');\n\n if(name) {\n markerEnter\n .attr('viewBox', '0 -5 10 10')\n .attr('refX', _arrows[name].refX)\n .attr('refY', _arrows[name].refY)\n .attr('markerUnits', 'userSpaceOnUse')\n .attr('markerWidth', _arrows[name].width*_chart.edgeArrowSize.eval(d))\n .attr('markerHeight', _arrows[name].height*_chart.edgeArrowSize.eval(d))\n .attr('stroke', _chart.edgeStroke.eval(d))\n .attr('fill', _chart.edgeStroke.eval(d))\n .call(_arrows[name].drawFunction);\n }\n return name ? id : null;\n }\n\n function globalTransform(pos, scale) {\n _translate = pos;\n _scale = scale;\n _g.attr('transform', 'translate(' + pos + ')' + ' scale(' + scale + ')');\n }\n\n function margined_bounds() {\n return {\n left: _bounds.left - _chart.margins().left,\n top: _bounds.top - _chart.margins().top,\n right: _bounds.right + _chart.margins().right,\n bottom: _bounds.bottom + _chart.margins().bottom\n };\n }\n\n // with thanks to comments in https://github.com/d3/d3/issues/1084\n function align_left(translate, x) {\n return translate[0] - _chart.x()(x) + _chart.x().range()[0];\n }\n function align_top(translate, y) {\n return translate[1] - _chart.y()(y) + _chart.y().range()[0];\n }\n function align_right(translate, x) {\n return translate[0] - _chart.x()(x) + _chart.x().range()[1];\n }\n function align_bottom(translate, y) {\n return translate[1] - _chart.y()(y) + _chart.y().range()[1];;\n }\n\n function doZoom() {\n var translate = d3.event.translate;\n if(_chart.restrictPan()) {\n var xDomain = _chart.x().domain(), yDomain = _chart.y().domain();\n var bounds = margined_bounds();\n var less1 = bounds.left < xDomain[0], less2 = bounds.right < xDomain[1],\n lessExt = (bounds.right - bounds.left) < (xDomain[1] - xDomain[0]);\n var align, nothing = 0;\n if(less1 && less2)\n if(lessExt)\n align = 'left';\n else\n align = 'right';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'right';\n else\n align = 'left';\n switch(align) {\n case 'left':\n translate[0] = align_left(translate, bounds.left);\n break;\n case 'right':\n translate[0] = align_right(translate, bounds.right);\n break;\n default:\n ++nothing;\n }\n less1 = bounds.top < yDomain[0]; less2 = bounds.bottom < yDomain[1];\n lessExt = (bounds.bottom - bounds.top) < (yDomain[1] - yDomain[0]);\n if(less1 && less2)\n if(lessExt)\n align = 'top';\n else\n align = 'bottom';\n else if(!less1 && !less2)\n if(lessExt)\n align = 'bottom';\n else\n align = 'top';\n switch(align) {\n case 'top':\n translate[1] = align_top(translate, bounds.top);\n break;\n case 'bottom':\n translate[1] = align_bottom(translate, bounds.bottom);\n break;\n default:\n ++nothing;\n }\n\n if(nothing<2)\n _zoom.translate(translate);\n }\n globalTransform(translate, d3.event.scale);\n }\n\n function resizeSvg(w, h) {\n if(_svg) {\n _svg.attr('width', w || _chart.width())\n .attr('height', h || _chart.height());\n }\n }\n\n function enableZoom() {\n _svg.call(_zoom);\n _svg.on('dblclick.zoom', null);\n }\n function disableZoom() {\n _svg.on('.zoom', null);\n }\n\n function generateSvg() {\n _svg = _chart.root().append('svg');\n resizeSvg();\n\n _defs = _svg.append('svg:defs');\n\n // start out with 1:1 zoom\n if(!_chart.x())\n _chart.x(d3.scale.linear()\n .domain([0, _chart.width()])\n .range([0, _chart.width()]));\n if(!_chart.y())\n _chart.y(d3.scale.linear()\n .domain([0, _chart.height()])\n .range([0, _chart.height()]));\n _zoom = d3.behavior.zoom()\n .on('zoom', doZoom)\n .x(_chart.x()).y(_chart.y());\n if(_chart.mouseZoomable()) {\n if(_chart.altKeyZoom()) {\n d3.select(document)\n .on('keydown', function() {\n if(d3.event.key === 'Alt')\n enableZoom();\n })\n .on('keyup', function() {\n if(d3.event.key === 'Alt')\n disableZoom();\n });\n }\n else enableZoom();\n }\n\n return _svg;\n }\n\n _chart.invertCoord = function(clientCoord) {\n return [\n _chart.x().invert(clientCoord[0]),\n _chart.y().invert(clientCoord[1])\n ];\n };\n\n _chart.defineArrow('vee', 12, 12, 10, 0, function(marker) {\n marker.append('svg:path')\n .attr('d', 'M0,-5 L10,0 L0,5 L3,0')\n .attr('stroke-width', '0px');\n });\n _chart.defineArrow('dot', 7, 7, 0, 0, function(marker) {\n marker.append('svg:circle')\n .attr('r', 5)\n .attr('cx', 5)\n .attr('cy', 0)\n .attr('stroke-width', '0px');\n });\n\n /**\n * Set the root SVGElement to either be any valid [d3 single\n * selector](https://github.com/mbostock/d3/wiki/Selections#selecting-elements) specifying a dom\n * block element such as a div; or a dom element or d3 selection. This class is called\n * internally on chart initialization, but be called again to relocate the chart. However, it\n * will orphan any previously created SVGElements.\n * @method anchor\n * @memberof dc_graph.diagram\n * @instance\n * @param {anchorSelector|anchorNode|d3.selection} [parent]\n * @param {String} [chartGroup]\n * @return {String|node|d3.selection}\n * @return {dc_graph.diagram}\n */\n _chart.anchor = function(parent, chartGroup) {\n if (!arguments.length) {\n return _anchor;\n }\n if (parent) {\n if (parent.select && parent.classed) { // detect d3 selection\n _anchor = parent.node();\n } else {\n _anchor = parent;\n }\n _chart.root(d3.select(_anchor));\n _chart.root().classed(dc_graph.constants.CHART_CLASS, true);\n dc.registerChart(_chart, chartGroup);\n } else {\n throw new dc.errors.BadArgumentException('parent must be defined');\n }\n _chartGroup = chartGroup;\n return _chart;\n };\n\n /**\n * Returns the internal numeric ID of the chart.\n * @method chartID\n * @memberof dc.baseMixin\n * @instance\n * @returns {String}\n */\n _chart.chartID = function () {\n return _chart.__dcFlag__;\n };\n\n /**\n * Returns the DOM id for the chart's anchored location.\n * @method anchorName\n * @memberof dc_graph.diagram\n * @instance\n * @return {String}\n */\n _chart.anchorName = function () {\n var a = _chart.anchor();\n if (a && a.id) {\n return a.id;\n }\n if (a && a.replace) {\n return a.replace('#', '');\n }\n return 'dc-graph' + _chart.chartID();\n };\n\n return _chart.anchor(parent, chartGroup);\n};\n","dc_graph.spawn_engine = function(layout, args, worker) {\n var allow_webworker = true;\n var engine, params;\n switch(layout) {\n case 'dagre':\n engine = dc_graph.dagre_layout();\n params = ['rankdir'];\n break;\n case 'tree':\n engine = dc_graph.tree_layout();\n params = [];\n allow_webworker = false;\n break;\n case 'cola':\n default:\n engine = dc_graph.cola_layout();\n params = ['lengthStrategy'];\n break;\n }\n params.forEach(function(p) {\n if(args[p])\n engine[p](args[p]);\n });\n if(allow_webworker && worker !== 'false')\n engine = dc_graph.webworker_layout(engine);\n return engine;\n};\n","var _workers = {};\nfunction create_worker(layoutAlgorithm) {\n if(!_workers[layoutAlgorithm]) {\n var worker = _workers[layoutAlgorithm] = {\n worker: new Worker(script_path() + 'dc.graph.' + layoutAlgorithm + '.worker.js'),\n layouts: {}\n };\n worker.worker.onmessage = function(e) {\n var layoutId = e.data.layoutId;\n if(!worker.layouts[layoutId])\n throw new Error('layoutId \"' + layoutId + '\" unknown!');\n worker.layouts[layoutId].dispatch()[e.data.response].apply(null, e.data.args);\n };\n }\n return _workers[layoutAlgorithm];\n}\n\ndc_graph.webworker_layout = function(layoutEngine) {\n var _tick, _done, _dispatch = d3.dispatch('init', 'start', 'tick', 'end');\n var _worker = create_worker(layoutEngine.layoutAlgorithm());\n var engine = {};\n _worker.layouts[layoutEngine.layoutId()] = engine;\n\n engine.parent = function(parent) {\n if(layoutEngine.parent)\n layoutEngine.parent(parent);\n };\n engine.init = function(options) {\n options = layoutEngine.optionNames().reduce(\n function(options, option) {\n options[option] = layoutEngine[option]();\n return options;\n }, options);\n _worker.worker.postMessage({\n command: 'init',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n return this;\n };\n engine.data = function(nodes, edges, constraints, options) {\n _worker.worker.postMessage({\n command: 'data',\n args: {\n layoutId: layoutEngine.layoutId(),\n nodes: nodes,\n edges: edges,\n constraints: constraints,\n options: options\n }\n });\n };\n engine.start = function(options) {\n _worker.worker.postMessage({\n command: 'start',\n args: {\n layoutId: layoutEngine.layoutId(),\n options: options\n }\n });\n };\n engine.stop = function() {\n _worker.worker.postMessage({\n command: 'stop',\n args: {\n layoutId: layoutEngine.layoutId()\n }\n });\n return this;\n };\n // stopgap while layout options are still on diagram\n engine.getEngine = function() {\n return layoutEngine;\n };\n // somewhat sketchy - do we want this object to be transparent or not?\n var passthroughs = ['layoutAlgorithm', 'populateLayoutNode', 'populateLayoutEdge', 'rankdir', 'ranksep'];\n passthroughs.forEach(function(name) {\n engine[name] = function() {\n var ret = layoutEngine[name].apply(layoutEngine, arguments);\n return arguments.length ? this : ret;\n };\n });\n engine.on = function(event, f) {\n _dispatch.on(event, f);\n return this;\n };\n engine.dispatch = function() {\n return _dispatch;\n };\n return engine;\n};\n","/**\n * `dc_graph.graphviz_attrs defines a basic set of attributes which layout engines should\n * implement - although these are not // required, they make it easier for clients and\n * behaviors (like expand_collapse) to work with // multiple layout engines // these\n * attributes are {@link http://www.graphviz.org/doc/info/attrs.html from graphviz}\n * @class graphviz_attrs\n * @memberof dc_graph\n * @return {Object}\n **/\ndc_graph.graphviz_attrs = function() {\n return {\n /**\n * Direction to draw ranks.\n * @method rankdir\n * @memberof dc_graph.graphviz_attrs\n * @instance\n * @param {String} [rankdir='TB'] 'TB', 'LR', 'BT', or 'RL'\n **/\n rankdir: property('TB'),\n /**\n * Spacing in between ranks.\n * @method ranksep\n * @memberof dc_graph.graphviz_attrs\n * @instnace\n * @param {String} [ranksep=40]\n **/\n ranksep: property(40)\n };\n};\n","/**\n * `dc_graph.cola_layout` is an adaptor for cola.js layouts in dc.graph.js\n * @class cola_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.cola_layout}\n **/\ndc_graph.cola_layout = function(id) {\n var _layoutId = id || uuid();\n var _d3cola = null;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _flowLayout;\n // node and edge objects shared with cola.js, preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // width, height, handleDisconnected, lengthStrategy, baseLength, flowLayout, tickSize\n _d3cola = cola.d3adaptor()\n .avoidOverlaps(true)\n .size([options.width, options.height])\n .handleDisconnected(options.handleDisconnected);\n if(_d3cola.tickSize) // non-standard\n _d3cola.tickSize(options.tickSize);\n\n switch(options.lengthStrategy) {\n case 'symmetric':\n _d3cola.symmetricDiffLinkLengths(options.baseLength);\n break;\n case 'jaccard':\n _d3cola.jaccardLinkLengths(options.baseLength);\n break;\n case 'individual':\n _d3cola.linkDistance(function(e) {\n return e.dcg_edgeLength || options.baseLength;\n });\n break;\n case 'none':\n default:\n }\n if(options.flowLayout) {\n _d3cola.flowLayout(options.flowLayout.axis, options.flowLayout.minSeparation);\n }\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n v1.fixed = !!v.dcg_nodeFixed;\n\n if(v1.fixed && typeof v.dcg_nodeFixed === 'object') {\n v1.x = v.dcg_nodeFixed.x;\n v1.y = v.dcg_nodeFixed.y;\n }\n else {\n // should we support e.g. null to unset x,y?\n if(v.x !== undefined)\n v1.x = v.x;\n if(v.y !== undefined)\n v1.y = v.y;\n }\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n // cola edges can work with indices or with object references\n // but it will replace indices with object references\n e1.source = _nodes[e.dcg_edgeSource];\n e1.target = _nodes[e.dcg_edgeTarget];\n e1.dcg_edgeLength = e.dcg_edgeLength;\n });\n\n // cola needs each node object to have an index property\n wnodes.forEach(function(v, i) {\n v.index = i;\n });\n\n var groups = null;\n if(options.groupConnected) {\n var components = cola.separateGraphs(wnodes, wedges);\n groups = components.map(function(g) {\n return {leaves: g.array.map(function(n) { return n.index; })};\n });\n }\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _d3cola.on('tick', /* _tick = */ function() {\n dispatchState('tick');\n }).on('start', function() {\n _dispatch.start();\n }).on('end', /* _done = */ function() {\n dispatchState('end');\n });\n _d3cola.nodes(wnodes)\n .links(wedges)\n .constraints(constraints)\n .groups(groups);\n }\n\n function start(options) {\n _d3cola.start(options.initialUnconstrainedIterations,\n options.initialUserConstraintIterations,\n options.initialAllConstraintsIterations,\n options.gridSnapIterations);\n }\n\n function stop() {\n _d3cola.stop();\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n graphviz.rankdir(null);\n\n var engine = Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'cola';\n },\n layoutId: function() {\n return _layoutId;\n },\n parent: property(null),\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return ['handleDisconnected', 'lengthStrategy', 'baseLength', 'flowLayout', 'tickSize']\n .concat(graphviz_keys);\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {},\n /**\n * Instructs cola.js to fit the connected components.\n * @method handleDisconnected\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Boolean} [handleDisconnected=true]\n * @return {Boolean}\n * @return {dc_graph.cola_layout}\n **/\n handleDisconnected: property(true),\n /**\n * Currently, three strategies are supported for specifying the lengths of edges:\n * * 'individual' - uses the `edgeLength` for each edge. If it returns falsy, uses the\n * `baseLength`\n * * 'symmetric', 'jaccard' - compute the edge length based on the graph structure around\n * the edge. See\n * {@link https://github.com/tgdwyer/WebCola/wiki/link-lengths the cola.js wiki}\n * for more details.\n * 'none' - no edge lengths will be specified\n * @method lengthStrategy\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Function|String} [lengthStrategy='symmetric']\n * @return {Function|String}\n * @return {dc_graph.cola_layout}\n **/\n lengthStrategy: property('symmetric'),\n /**\n * Gets or sets the default edge length (in pixels) when the `.lengthStrategy` is\n * 'individual', and the base value to be multiplied for 'symmetric' and 'jaccard' edge\n * lengths.\n * @method baseLength\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Number} [baseLength=30]\n * @return {Number}\n * @return {dc_graph.cola_layout}\n **/\n baseLength: property(30),\n /**\n * If `flowLayout` is set, it determines the axis and separation for\n * {@link http://marvl.infotech.monash.edu/webcola/doc/classes/cola.layout.html#flowlayout cola flow layout}.\n * If it is not set, `flowLayout` will be calculated from the {@link dc_graph.graphviz_attrs#rankdir rankdir}\n * and {@link dc_graph.graphviz_attrs#ranksep ranksep}; if `rankdir` is also null (the\n * default for cola layout), then there will be no flow.\n * @method flowLayout\n * @memberof dc_graph.cola_layout\n * @instance\n * @param {Object} [flowLayout=null]\n * @example\n * // No flow (default)\n * chart.flowLayout(null)\n * // flow in x with min separation 200\n * chart.flowLayout({axis: 'x', minSeparation: 200})\n **/\n flowLayout: function(flow) {\n if(!arguments.length) {\n if(_flowLayout)\n return _flowLayout;\n var dir = engine.rankdir();\n if(!dir)\n return null;\n var axis = (dir === 'LR' || dir === 'RL') ? 'x' : 'y';\n return {\n axis: axis,\n minSeparation: engine.ranksep() + engine.parent().nodeRadius()*2\n };\n }\n _flowLayout = flow;\n return this;\n },\n tickSize: property(1)\n });\n return engine;\n};\n\ndc_graph.cola_layout.scripts = ['d3.js', 'cola.js'];\n","/**\n * `dc_graph.dagre_layout` is an adaptor for dagre.js layouts in dc.graph.js\n *\n * In addition to the below layout attributes, `dagre_layout` also implements the attributes from\n * {@link dc_graph.graphviz_attrs graphviz_attrs}\n * @class dagre_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.dagre_layout}\n **/\ndc_graph.dagre_layout = function(id) {\n var _layoutId = id || uuid();\n var _dagreGraph = null, _tick, _done;\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n // node and edge objects preserved from one iteration\n // to the next (as long as the object is still in the layout)\n var _nodes = {}, _edges = {};\n\n function init(options) {\n // Create a new directed graph\n _dagreGraph = new dagre.graphlib.Graph({multigraph: true});\n\n // Set an object for the graph label\n _dagreGraph.setGraph({rankdir: options.rankdir});\n\n // Default to assigning a new object as a label for each new edge.\n _dagreGraph.setDefaultEdgeLabel(function() { return {}; });\n }\n\n function data(nodes, edges, constraints, options) {\n var wnodes = regenerate_objects(_nodes, nodes, function(v) {\n return v.dcg_nodeKey;\n }, function(v1, v) {\n v1.dcg_nodeKey = v.dcg_nodeKey;\n v1.width = v.width;\n v1.height = v.height;\n }, function(k, o) {\n _dagreGraph.setNode(k, o);\n }, function(k) {\n _dagreGraph.removeNode(k);\n });\n var wedges = regenerate_objects(_edges, edges, function(e) {\n return e.dcg_edgeKey;\n }, function(e1, e) {\n e1.dcg_edgeKey = e.dcg_edgeKey;\n e1.dcg_edgeSource = e.dcg_edgeSource;\n e1.dcg_edgeTarget = e.dcg_edgeTarget;\n }, function(k, o, e) {\n _dagreGraph.setEdge(e.dcg_edgeSource, e.dcg_edgeTarget, o);\n }, function(k, e) {\n _dagreGraph.removeEdge(e.dcg_edgeSource, e.dcg_edgeTarget, e.dcg_edgeKey);\n });\n\n function dispatchState(event) {\n _dispatch[event](\n wnodes,\n wedges.map(function(e) {\n return {dcg_edgeKey: e.dcg_edgeKey};\n })\n );\n }\n _tick = function() {\n dispatchState('tick');\n };\n _done = function() {\n dispatchState('end');\n };\n }\n\n function start(options) {\n _dispatch.start();\n dagre.layout(_dagreGraph);\n _done();\n }\n\n function stop() {\n }\n\n var graphviz = dc_graph.graphviz_attrs(), graphviz_keys = Object.keys(graphviz);\n return Object.assign(graphviz, {\n layoutAlgorithm: function() {\n return 'dagre';\n },\n layoutId: function() {\n return _layoutId;\n },\n on: function(event, f) {\n _dispatch.on(event, f);\n return this;\n },\n init: function(options) {\n this.optionNames().forEach(function(option) {\n options[option] = options[option] || this[option]();\n }.bind(this));\n init(options);\n return this;\n },\n data: function(nodes, edges, constraints, options) {\n data(nodes, edges, constraints, options);\n },\n start: function(options) {\n start(options);\n },\n stop: function() {\n stop();\n },\n optionNames: function() {\n return graphviz_keys;\n },\n populateLayoutNode: function() {},\n populateLayoutEdge: function() {}\n });\n}\n\ndc_graph.dagre_layout.scripts = ['d3.js', 'dagre.js'];\n","/**\n * `dc_graph.tree_layout` is a very simple and not very bright tree layout. It can draw any DAG, but\n * tries to position the nodes as a tree.\n * @class tree_layout\n * @memberof dc_graph\n * @param {String} [id=uuid()] - Unique identifier\n * @return {dc_graph.tree_layout}\n **/\ndc_graph.tree_layout = function(id) {\n var _layoutId = id || uuid();\n var _dispatch = d3.dispatch('tick', 'start', 'end');\n var _dfs;\n\n function init(options) {\n var x;\n var nodeWidth = d3.functor(options.nodeWidth);\n function best_dist(left, right) {\n return (nodeWidth(left) + nodeWidth(right)) / 2;\n }\n _dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.dcg_edgeTarget;\n },\n init: function() {\n x = options.offsetX;\n },\n row: function(n) {\n return n.dcg_rank;\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nodeWidth(left) + nodeWidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.y = r*options.gapY + options.offsetY;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.x = (n.hit_ins*n.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.x - b.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.x - (badl + want);\n l = sort[badi].x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\n *
  • To generate additional constraints on edges besides the built-in ones, create a rules\n * between two different types. The rule will apply to any edges in the layout which match the\n * source and target types, and generate simple \"left/right\" constraints. (Note that \"left\" and\n * \"right\" in this context refer to sides of an inequality constraint `left + gap <= right`)\n *
  • To generate constraints on a set of nodes, such as alignment, ordering, or circle\n * constraints, create a rule from a type to itself, a self edge.\n * \n * (It is also conceivable to want constraints between individual nodes which don't\n * have edges between them. This is not directly supported at this time; right now the workaround\n * is to create the edge but not draw it, e.g. by setting its {@link #dc_graph.diagram+edgeOpacity}\n * to zero. If you have a use-case for this, please\n * {@link https://github.com/dc-js/dc.graph.js/issues/new file an issue}.\n *\n * The pattern syntax is an embedded domain specific language designed to be terse without\n * restricting its power. As such, there are complicated rules for defaulting and inferring\n * parameters from other parameters. Since most users will want the simplest form, this document\n * will start from the highest level and then show how to use more complicated forms in order to\n * gain more control.\n *\n * Then we'll build back up from the ground up and show how inference works.\n * @class constraint_pattern\n * @memberof dc_graph\n * @param {dc_graph.diagram} diagram - the diagram to pull attributes from, mostly to determine\n * the keys of nodes and edge sources and targets\n * @param {Object} pattern - a graph which defines the constraints to be generated\n * @return {Function}\n */\ndc_graph.constraint_pattern = function(pattern) {\n var types = {}, rules = [];\n\n pattern.nodes.forEach(function(n) {\n var id = n.id;\n var type = types[id] || (types[id] = {});\n // partitions could be done more efficiently; this is POC\n if(n.partition) {\n var partition = n.partition;\n var value = n.value || n.id;\n if(n.all || n.typename) {\n type.match = n.extract ?\n function(n2) { return n.extract(n2.value[partition]); } :\n function(n2) { return n2.value[partition]; };\n type.typename = n.typename || function(n2) { return partition + '=' + n2.value[partition]; };\n }\n else\n type.match = function(n2) { return n2.value[partition] === value; };\n }\n else if(n.match)\n type.match = n.match;\n else throw new Error(\"couldn't determine matcher for type \" + JSON.stringify(n));\n });\n pattern.edges.forEach(function(e) {\n if(e.disable)\n return;\n var rule = {source: e.source, target: e.target};\n rule.produce = typeof e.produce === 'function' ? e.produce : function() {\n return clone(e.produce);\n };\n ['listname', 'wrap', 'reverse'].forEach(function(k) {\n if(e[k] !== undefined) rule[k] = e[k];\n });\n rules.push(rule);\n });\n\n return function(diagram, nodes, edges) {\n var constraints = [];\n var members = {};\n nodes.forEach(function(n) {\n var key = diagram.nodeKey.eval(n);\n for(var t in types) {\n var type = types[t], value = type.match(n.orig);\n if(value) {\n var tname = type.typename ? type.typename(t, value) : t;\n if(!members[tname])\n members[tname] = {\n nodes: [], // original ordering\n whether: {} // boolean\n };\n members[tname].nodes.push(key);\n members[tname].whether[key] = true;\n }\n }\n });\n // traversal of rules could be more efficient, again POC\n var edge_rules = rules.filter(function(r) {\n return r.source !== r.target;\n });\n var type_rules = rules.filter(function(r) {\n return r.source === r.target;\n });\n edges.forEach(function(e) {\n var source = diagram.edgeSource.eval(e),\n target = diagram.edgeTarget.eval(e);\n edge_rules.forEach(function(r) {\n if(members[r.source] && members[r.source].whether[source] &&\n members[r.target] && members[r.target].whether[target]) {\n var constraint = r.produce(members, nodes, edges);\n if(r.reverse) {\n constraint.left = target;\n constraint.right = source;\n }\n else {\n constraint.left = source;\n constraint.right = target;\n }\n constraints.push(constraint);\n }\n });\n });\n type_rules.forEach(function(r) {\n if(!members[r.source])\n return;\n var constraint = r.produce(),\n listname = r.listname || r.produce.listname || 'nodes',\n wrap = r.wrap || r.produce.wrap || function(x) { return x; };\n constraint[listname] = members[r.source].nodes.map(wrap);\n constraints.push(constraint);\n });\n return constraints;\n };\n};\n\n// constraint generation convenience functions\ndc_graph.gap_y = function(gap, equality) {\n return {\n axis: 'y',\n gap: gap,\n equality: !!equality\n };\n};\ndc_graph.gap_x = function(gap, equality) {\n return {\n axis: 'x',\n gap: gap,\n equality: !!equality\n };\n};\n\nfunction align_f(axis) {\n var ret = function() {\n return {\n type: 'alignment',\n axis: axis\n };\n };\n ret.listname = 'offsets';\n ret.wrap = function(x) { return {node: x, offset: 0}; };\n return ret;\n}\n\ndc_graph.align_y = function() {\n return align_f('y');\n};\ndc_graph.align_x = function() {\n return align_f('x');\n};\n\ndc_graph.order_x = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'x',\n gap: 60,\n ordering: ordering\n };\n};\ndc_graph.order_y = function(gap, ordering) {\n return {\n type: 'ordering',\n axis: 'y',\n gap: 60,\n ordering: ordering\n };\n};\n","// this naive tree-drawer is paraphrased from memory from dot\ndc_graph.tree_positions = function(rootf, rowf, treef, ofsx, ofsy, nwidth, ygap) {\n console.warn('dc_graph.tree_positions is deprecated; use the layout engine tree_layout instead');\n if(rootf || treef) {\n console.warn('dc_graph.tree_positions: rootf and treef are ignored');\n }\n var x;\n nwidth = d3.functor(nwidth);\n function best_dist(left, right) {\n return (nwidth(left) + nwidth(right)) / 2;\n }\n var dfs = dc_graph.depth_first_traversal({\n nodeid: function(n) {\n return n.cola.dcg_nodeKey;\n },\n sourceid: function(n) {\n return n.cola.dcg_edgeSource;\n },\n targetid: function(n) {\n return n.cola.dcg_edgeTarget;\n },\n init: function() {\n x = ofsx;\n },\n row: function(n) {\n return rowf(n.orig);\n },\n place: function(n, r, row) {\n if(row.length) {\n var left = row[row.length-1];\n var g = (nwidth(left) + nwidth(n)) / 2;\n x = Math.max(x, left.left_x + g);\n }\n n.left_x = x;\n n.hit_ins = 1;\n n.cola.y = r*ygap + ofsy;\n },\n sib: function(isroot, left, right) {\n var g = best_dist(left, right);\n if(isroot) g = g*1.5;\n x += g;\n },\n pop: function(n) {\n n.cola.x = (n.left_x + x)/2;\n },\n skip: function(n, indegree) {\n // rolling average of in-neighbor x positions\n n.cola.x = (n.hit_ins*n.cola.x + x)/++n.hit_ins;\n if(n.hit_ins === indegree)\n delete n.hit_ins;\n },\n finish: function(rows) {\n // this is disgusting. patch up any places where nodes overlap by scanning\n // right far enough to find the space, then fill from left to right at the\n // minimum gap\n rows.forEach(function(row) {\n var sort = row.sort(function(a, b) { return a.cola.x - b.cola.x; });\n var badi = null, badl = null, want;\n for(var i=0; i0)\n --badi; // might want to use more left\n var l, limit;\n if(i < sort.length - 2) { // found space before right\n var extra = right.cola.x - (badl + want);\n l = sort[badi].cola.x + extra/2;\n limit = i+1;\n } else {\n l = Math.max(sort[badi].cola.x, badl - best_dist(sort[badi], sort[badi+1]) - (want - right.cola.x + badl)/2);\n limit = sort.length;\n }\n for(var j = badi+1; j\" + d + \"\"; })\n .direction(_tip.direction());\n _tip.parent().svg().call(_d3tip);\n }\n node\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n ehover\n .on('mouseover.tip', fetch_and_show_content('content'))\n .on('mouseout.tip', hide_tip);\n }\n\n /**\n * Specify the direction for tooltips. Currently supports the\n * [cardinal and intercardinaldirections](https://en.wikipedia.org/wiki/Points_of_the_compass) supported by\n * [d3.tip.direction](https://github.com/Caged/d3-tip/blob/master/docs/positioning-tooltips.md#tipdirection):\n * `'n'`, `'ne'`, `'e'`, etc.\n * @name direction\n * @memberof dc_graph.tip\n * @instance\n * @param {String} [direction='n']\n * @return {String}\n * @return {dc_graph.tip}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\n _tip.direction = property('n');\n\n /**\n * Specifies the function to generate content for the tooltip. This function has the\n * signature `function(d, k)`, where `d` is the datum of the node being hovered over,\n * and `k` is a continuation. The function should fetch the content, asynchronously if\n * needed, and then pass html forward to `k`.\n * @name content\n * @memberof dc_graph.tip\n * @instance\n * @param {Function} [content]\n * @return {Function}\n * @example\n * // Default behavior: show title\n * var tip = dc_graph.tip().content(function(d, k) {\n * k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n * });\n **/\n _tip.content = property(function(d, k) {\n k(_tip.parent() ? _tip.parent().nodeTitle.eval(d) : '');\n });\n\n _tip.delay = property(0);\n\n return _tip;\n};\n\n/**\n * Generates a handler which can be passed to `tip.content` to produce a table of the\n * attributes and values of the hovered object.\n *\n * Note: this interface is not great and is subject to change in the near term.\n * @name table\n * @memberof dc_graph.tip\n * @instance\n * @return {Function}\n * @example\n * // show all the attributes and values in the node and edge objects\n * var tip = dc_graph.tip();\n * tip.content(tip.table());\n **/\ndc_graph.tip.table = function() {\n var gen = function(d, k) {\n d = d.orig.value;\n var keys = Object.keys(d).filter(d3.functor(gen.filter()))\n .filter(function(k) {\n return d[k];\n });\n var table = d3.select(document.createElement('table'));\n var rows = table.selectAll('tr').data(keys);\n var rowsEnter = rows.enter().append('tr');\n rowsEnter.append('td').text(function(k) { return k; });\n rowsEnter.append('td').text(function(k) { return d[k]; });\n k(table.node().outerHTML); // optimizing for clarity over speed (?)\n };\n gen.filter = property(true);\n return gen;\n};\n","// adapted from\n// http://stackoverflow.com/questions/9308938/inline-text-editing-in-svg/#26644652\n\nfunction edittext(svg, position, options) {\n var myforeign = document.createElementNS('http://www.w3.org/2000/svg', 'foreignObject');\n var textdiv = document.createElement(\"div\");\n var text = options.text || \"type on me\";\n var textnode = document.createTextNode(text);\n textdiv.appendChild(textnode);\n textdiv.setAttribute(\"contentEditable\", \"true\");\n textdiv.setAttribute(\"width\", \"auto\");\n textdiv.setAttribute(\"style\", \"display: inline-block; background-color: white; padding: 2px\"); //to make div fit text\n myforeign.setAttribute(\"width\", \"100%\");\n myforeign.setAttribute(\"height\", \"100%\");\n myforeign.setAttribute(\"style\", \"text-align: left\"); //to make div fit text\n myforeign.setAttributeNS(null, \"transform\", \"translate(\" + position.x + \" \" + position.y + \")\");\n svg.appendChild(myforeign);\n myforeign.appendChild(textdiv);\n\n function accept() {\n options.accept && options.accept(textdiv.innerText);\n textdiv.onblur = null;\n myforeign.remove();\n }\n function cancel() {\n options.cancel && options.cancel();\n textdiv.onblur = null;\n myforeign.remove();\n }\n\n textdiv.onkeydown = function(event) {\n if(event.keyCode===13) {\n event.preventDefault();\n }\n };\n textdiv.onkeyup = function(event) {\n if(event.keyCode===13) {\n accept();\n } else if(event.keyCode===27) {\n cancel();\n }\n };\n textdiv.onblur = cancel;\n textdiv.focus();\n\n var range = document.createRange();\n if(options.selectText) {\n range.selectNodeContents(textdiv);\n } else {\n range.setStart(textdiv, text.length);\n range.setEnd(textdiv, text.length);\n }\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n}\n\ndc_graph.edit_text = function(svg, selection, options) {\n var position = options.position || {x: 0, y: 0};\n edittext(svg.node(), position, options);\n};\n\n","dc_graph.select_nodes = function(props) {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n var _selected = [], _oldSelected;\n var _brush, _gBrush;\n\n // http://stackoverflow.com/questions/7044944/jquery-javascript-to-detect-os-without-a-plugin\n var is_a_mac = navigator.platform.toUpperCase().indexOf('MAC')!==-1;\n\n function isUnion(event) {\n return event.shiftKey;\n }\n function isToggle(event) {\n return is_a_mac ? event.metaKey : event.ctrlKey;\n }\n function add_array(a, v) {\n return a.indexOf(v) >= 0 ? a : a.concat([v]);\n }\n function toggle_array(a, v) {\n return a.indexOf(v) >= 0 ? a.filter(function(x) { return x != v; }) : a.concat([v]);\n }\n\n function selection_changed(chart) {\n return function(selection) {\n _selected = selection;\n chart.refresh();\n };\n }\n function background_click_event(chart, v) {\n chart.svg().on('click.select-nodes', v ? function(d) {\n select_nodes_group.node_set_changed([]);\n } : null);\n }\n function brushstart() {\n if(isUnion(d3.event.sourceEvent) || isToggle(d3.event.sourceEvent))\n _oldSelected = _selected.slice();\n else {\n _oldSelected = [];\n select_nodes_group.node_set_changed([]);\n }\n }\n function brushmove() {\n var ext = _brush.extent();\n var rectSelect = _behavior.parent().selectAll('g.node').data().filter(function(n) {\n return n && ext[0][0] < n.cola.x && n.cola.x < ext[1][0] &&\n ext[0][1] < n.cola.y && n.cola.y < ext[1][1];\n }).map(function(n) {\n return n.orig.key;\n });\n var newSelected;\n if(isUnion(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(add_array, _oldSelected);\n else if(isToggle(d3.event.sourceEvent))\n newSelected = rectSelect.reduce(toggle_array, _oldSelected);\n else\n newSelected = rectSelect;\n select_nodes_group.node_set_changed(newSelected);\n }\n function brushend() {\n _gBrush.call(_brush.clear());\n }\n function install_brush(chart) {\n if(_brush)\n return;\n _brush = d3.svg.brush()\n .x(chart.x()).y(chart.y())\n .on('brushstart', brushstart)\n .on('brush', brushmove)\n .on('brushend', brushend);\n\n _gBrush = chart.svg().insert('g', ':first-child')\n .attr('class', 'brush')\n .call(_brush);\n }\n function add_behavior(chart, node, edge) {\n var condition = _behavior.noneIsAll() ? function(n) {\n return !_selected.length || _selected.indexOf(n.orig.key) >= 0;\n } : function(n) {\n return _selected.indexOf(n.orig.key) >= 0;\n };\n chart.cascade(50, true, conditional_properties(condition, null, props));\n\n node.on('click.select-nodes', function(d) {\n var key = chart.nodeKey.eval(d), newSelected;\n if(isUnion(d3.event))\n newSelected = add_array(_selected, key);\n else if(isToggle(d3.event))\n newSelected = toggle_array(_selected, key);\n else {\n if(_selected.length === 1 && _selected[0] === key && _behavior.secondClickEvent())\n _behavior.secondClickEvent()(d3.select(this));\n newSelected = [key];\n }\n select_nodes_group.node_set_changed(newSelected);\n d3.event.stopPropagation();\n });\n\n if(_behavior.multipleSelect())\n install_brush(chart);\n else\n background_click_event(chart, _behavior.clickBackgroundClears());\n\n // drop any selected which no longer exist in the diagram\n var present = node.data().map(function(d) { return d.orig.key; });\n var now_selected = _selected.filter(function(k) { return present.indexOf(k) >= 0; });\n if(_selected.length !== now_selected.length)\n select_nodes_group.node_set_changed(now_selected);\n }\n\n function remove_behavior(chart, node, edge) {\n node.on('click.select-nodes', null);\n chart.svg().on('click.select-nodes', null);\n chart.cascade(50, false, props);\n }\n\n var _behavior = dc_graph.behavior('select-nodes', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior,\n parent: function(p) {\n select_nodes_group.on('node_set_changed.select-nodes', p ? selection_changed(p) : null);\n }\n });\n\n _behavior.multipleSelect = property(true);\n _behavior.clickBackgroundClears = property(true, false).react(function(v) {\n if(!_behavior.multipleSelect() && _behavior.parent())\n background_click_event(_behavior.parent(), v);\n });\n _behavior.secondClickEvent = property(null);\n _behavior.noneIsAll = property(false);\n return _behavior;\n};\n\ndc_graph.select_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('select-nodes', function() {\n return d3.dispatch('node_set_changed');\n });\n\n return window.chart_registry.create_group('select-nodes', brushgroup);\n};\n","dc_graph.filter_selection = function() {\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group');\n\n function selection_changed(chart) {\n return function(selection) {\n if(selection.length) {\n var set = d3.set(selection);\n chart.nodeDimension().filterFunction(function(k) {\n return set.has(k);\n });\n } else chart.nodeDimension().filter(null);\n chart.redrawGroup();\n };\n }\n\n var _behavior = {\n parent: property(null).react(function(p) {\n select_nodes_group.on('node_set_changed.filter-selection', p ? selection_changed(p) : null);\n })\n };\n return _behavior;\n};\n","dc_graph.label_nodes = function(options) {\n if(!options.nodeCrossfilter)\n throw new Error('need nodeCrossfilter');\n var _idTag = options.idTag || 'id',\n _labelTag = options.labelTag || 'label';\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'),\n label_nodes_group = dc_graph.label_nodes_group('label-nodes-group');\n var _selected = [];\n var _input_anchor;\n\n function selection_changed_listener(chart) {\n return function(selection) {\n _selected = selection;\n if(_selected.length)\n _input_anchor.node().focus();\n };\n }\n\n function edit_node_label_listener(chart) {\n return function(node, options) {\n dc_graph.edit_text(\n chart.svg(),\n node,\n {\n text: options.text || chart.nodeLabel.eval(node.datum()),\n position: {x: node.datum().cola.x, y: node.datum().cola.y},\n selectText: options.selectText,\n accept: function(text) {\n var d = node.datum();\n d.orig.value[_labelTag] = text;\n chart.redraw();\n }\n });\n };\n }\n\n function add_behavior(chart, node, edge) {\n _input_anchor = chart.svg().selectAll('a#label-nodes-input').data([1]);\n _input_anchor.enter()\n .append('a').attr({\n id: 'label-nodes-input',\n href: '#'\n });\n _input_anchor.on('keyup.label-nodes', function() {\n if(_selected.length) {\n // printable characters should start edit\n if(d3.event.key.length !== 1)\n return;\n var n2 = node.filter(function(d) {\n return chart.nodeKey.eval(d) === _selected[0];\n });\n if(n2.empty()) {\n console.error(\"couldn't find node '\" + _selected[0] + \"'!\");\n return;\n }\n if(n2.size()>1) {\n console.error(\"found too many nodes for '\" + _selected[0] + \"' (\" + n2.size() + \")!\");\n return;\n }\n label_nodes_group.edit_node_label(n2, {text: d3.event.key, selectText: false});\n }\n });\n }\n\n function remove_behavior(chart, node, edge) {\n chart.root().select('a#label-nodes-input').remove();\n }\n\n var _behavior = dc_graph.behavior('label-nodes', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior,\n parent: function(p) {\n select_nodes_group.on('node_set_changed.label-nodes', p ? selection_changed_listener(p) : null);\n label_nodes_group.on('edit_node_label.label-nodes', p ? edit_node_label_listener(p) : null);\n }\n });\n return _behavior;\n};\n\ndc_graph.label_nodes_group = function(brushgroup) {\n window.chart_registry.create_type('label-nodes', function() {\n return d3.dispatch('edit_node_label');\n });\n\n return window.chart_registry.create_group('label-nodes', brushgroup);\n};\n","dc_graph.highlight_neighbors = function(props) {\n function clear_all_highlights(edge) {\n edge.each(function(e) {\n e.dcg_highlighted = false;\n });\n }\n\n function add_behavior(chart, node, edge) {\n chart.cascade(100, true, conditional_properties(null, function(e) {\n return e.dcg_highlighted;\n }, props));\n node\n .on('mouseover.highlight-neighbors', function(d) {\n edge.each(function(e) {\n e.dcg_highlighted = e.source === d || e.target === d;\n });\n chart.refresh(node, edge);\n })\n .on('mouseout.highlight-neighbors', function(d) {\n clear_all_highlights(edge);\n chart.refresh(node, edge);\n });\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.highlight-neighbors', null)\n .on('mouseout.highlight-neighbors', null);\n clear_all_highlights(edge);\n chart.cascade(100, false, props);\n }\n\n return dc_graph.behavior('highlight-neighbors', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge) {\n remove_behavior(chart, node, edge);\n }\n });\n};\n\n","dc_graph.register_highlight_paths_group = function(pathsgroup) {\n window.chart_registry.create_type('highlight-paths', function() {\n return d3.dispatch('paths_changed', 'hover_changed', 'select_changed');\n });\n\n return window.chart_registry.create_group('highlight-paths', pathsgroup);\n};\n","dc_graph.highlight_paths = function(pathprops, hoverprops, selectprops, pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n pathprops = pathprops || {};\n hoverprops = hoverprops || {};\n selectprops = selectprops || {};\n var node_on_paths = {}, edge_on_paths = {}, selected = null, hoverpaths = null;\n\n function refresh() {\n if(_behavior.doRedraw())\n _behavior.parent().relayout().redraw();\n else\n _behavior.parent().refresh();\n }\n\n function paths_changed(nop, eop) {\n node_on_paths = nop;\n edge_on_paths = eop;\n selected = hoverpaths = null;\n refresh();\n }\n\n function hover_changed(hp) {\n if(hp !== hoverpaths) {\n hoverpaths = hp;\n refresh();\n }\n }\n\n function select_changed(sp) {\n if(sp !== selected) {\n selected = sp;\n refresh();\n }\n }\n\n function clear_all_highlights() {\n node_on_paths = {};\n edge_on_paths = {};\n }\n\n function contains_path(paths) {\n return function(path) {\n return paths.indexOf(path)>=0;\n };\n }\n\n // sigh\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function intersect_paths(pathsA, pathsB) {\n if(!pathsA || !pathsB)\n return false;\n return pathsA.some(contains_path(pathsB));\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n function add_behavior(chart, node, edge, ehover) {\n chart\n .cascade(200, true, conditional_properties(function(n) {\n return !!node_on_paths[chart.nodeKey.eval(n)];\n }, function(e) {\n return !!edge_on_paths[chart.edgeKey.eval(e)];\n }, pathprops))\n .cascade(300, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], selected);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], selected);\n }, selectprops))\n .cascade(400, true, conditional_properties(function(n) {\n return intersect_paths(node_on_paths[chart.nodeKey.eval(n)], hoverpaths);\n }, function(e) {\n return intersect_paths(edge_on_paths[chart.edgeKey.eval(e)], hoverpaths);\n }, hoverprops));\n\n node\n .on('mouseover.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(node_on_paths[chart.nodeKey.eval(n)] || null);\n })\n .on('mouseout.highlight-paths', function(n) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, node_on_paths[chart.nodeKey.eval(n)]));\n });\n\n\n ehover\n .on('mouseover.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(edge_on_paths[chart.edgeKey.eval(e)] || null);\n })\n .on('mouseout.highlight-paths', function(e) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click.highlight-paths', function(n) {\n highlight_paths_group.select_changed(toggle_paths(selected, edge_on_paths[chart.nodeKey.eval(n)]));\n });\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n ehover\n .on('mouseover.highlight-paths', null)\n .on('mouseout.highlight-paths', null)\n .on('click.highlight-paths', null);\n clear_all_highlights();\n chart\n .cascade(200, false, pathprops)\n .cascade(300, false, selectprops)\n .cascade(400, false, hoverprops);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: function(chart, node, edge, ehover) {\n remove_behavior(chart, node, edge, ehover);\n return this;\n },\n parent: function(p) {\n var anchor = p.anchorName();\n highlight_paths_group.on('paths_changed.' + anchor, p ? paths_changed : null);\n highlight_paths_group.on('hover_changed.' + anchor, p ? hover_changed : null);\n highlight_paths_group.on('select_changed.' + anchor, p ? select_changed : null);\n }\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","dc_graph.expand_collapse = function(get_degree, expand, collapse, dirs) {\n dirs = dirs || ['both'];\n if(dirs.length > 2)\n throw new Error('there are only two directions to expand in');\n\n function add_gradient_def(chart) {\n var gradient = chart.addOrRemoveDef('spike-gradient', true, 'linearGradient');\n gradient.attr({\n x1: '0%',\n y1: '0%',\n x2: '100%',\n y2: '0%',\n spreadMethod: 'pad'\n });\n gradient.selectAll('stop').data([[0,'black',1], [100, 'black', '0']])\n .enter().append('stop').attr({\n offset: function(d) {\n return d[0] + '%';\n },\n 'stop-color': function(d) {\n return d[1];\n },\n 'stop-opacity': function(d) {\n return d[2];\n }\n });\n }\n\n function view_degree(chart, edge, dir, key) {\n var fil;\n switch(dir) {\n case 'out':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key;\n };\n break;\n case 'in':\n fil = function(e) {\n return chart.edgeTarget.eval(e) === key;\n };\n break;\n case 'both':\n fil = function(e) {\n return chart.edgeSource.eval(e) === key || chart.edgeTarget.eval(e) === key;\n };\n break;\n }\n return edge.filter(fil).size();\n }\n\n function spike_directioner(rankdir, dir, n) {\n if(dir==='both')\n return function(i) {\n return Math.PI * (2 * i / n - 0.5);\n };\n else {\n var sweep = (n-1)*Math.PI/n, ofs;\n switch(rankdir) {\n case 'LR':\n ofs = 0;\n break;\n case 'TB':\n ofs = Math.PI/2;\n break;\n case 'RL':\n ofs = Math.PI;\n break;\n case 'BT':\n ofs = -Math.PI/2;\n break;\n }\n if(dir === 'in')\n ofs += Math.PI;\n return function(i) {\n return ofs + sweep * (-.5 + (n > 1 ? i / (n-1) : 0)); // avoid 0/0\n };\n }\n }\n\n function draw_selected(chart, node, edge) {\n var spike = node\n .selectAll('g.spikes')\n .data(function(d) {\n return (d.dcg_expand_selected &&\n (!d.dcg_expanded || !d.dcg_expanded[d.dcg_expand_selected.dir])) ?\n [d] : [];\n });\n spike.exit().remove();\n spike\n .enter().insert('g', ':first-child')\n .classed('spikes', true);\n var rect = spike\n .selectAll('rect.spike')\n .data(function(d) {\n var key = chart.nodeKey.eval(d);\n var dir = d.dcg_expand_selected.dir,\n n = d.dcg_expand_selected.n,\n af = spike_directioner(chart.layoutEngine().rankdir(), dir, n),\n ret = Array(n);\n for(var i = 0; i d.cola.y ? 'out' : 'in';\n case 'BT':\n return y < d.cola.y ? 'out' : 'in';\n case 'LR':\n return x > d.cola.x ? 'out' : 'in';\n case 'RL':\n return x < d.cola.x ? 'out' : 'in';\n }\n throw new Error('unknown rankdir ' + chart.layoutEngine().rankdir());\n }\n\n\n function add_behavior(chart, node, edge) {\n function mousemove(d) {\n var dir = zonedir(chart, d3.event, dirs, d);\n var nk = chart.nodeKey.eval(d);\n Promise.resolve(get_degree(nk, dir)).then(function(degree) {\n var spikes = {\n dir: dir,\n n: Math.max(0, degree - view_degree(chart, edge, dir, nk)) // be tolerant of inconsistencies\n };\n node.each(function(n) {\n n.dcg_expand_selected = n === d ? spikes : null;\n });\n draw_selected(chart, node, edge);\n });\n }\n\n function click(d) {\n var event = d3.event;\n console.log(event.type);\n function action() {\n var dir = zonedir(chart, event, dirs, d);\n d.dcg_expanded = d.dcg_expanded || {};\n if(!d.dcg_expanded[dir]) {\n expand(chart.nodeKey.eval(d), dir, event.type === 'dblclick');\n d.dcg_expanded[dir] = true;\n }\n else {\n collapse(chart.nodeKey.eval(d), collapsible.bind(null, chart, edge, dir), dir);\n d.dcg_expanded[dir] = false;\n }\n draw_selected(chart, node, edge);\n d.dcg_dblclk_timeout = null;\n }\n return action();\n // distinguish click and double click - kind of fishy but seems to work\n // basically, wait to see if a click becomes a dblclick - but it's even worse\n // because you'll receive a second click before the dblclick on most browsers\n if(d.dcg_dblclk_timeout) {\n window.clearTimeout(d.dcg_dblclk_timeout);\n if(event.type === 'dblclick')\n action();\n d.dcg_dblclk_timeout = null;\n }\n else d.dcg_dblclk_timeout = window.setTimeout(action, 200);\n }\n\n node\n .on('mouseover.expand-collapse', mousemove)\n .on('mousemove.expand-collapse', mousemove)\n .on('mouseout.expand-collapse', function(d) {\n clear_selected(chart, node, edge);\n })\n .on('click', click)\n .on('dblclick', click);\n }\n\n function remove_behavior(chart, node, edge) {\n node\n .on('mouseover.expand-collapse', null)\n .on('mouseout.expand-collapse', null);\n clear_selected(chart, node);\n }\n\n return dc_graph.behavior('expand-collapse', {\n add_behavior: add_behavior,\n first: add_gradient_def,\n remove_behavior: remove_behavior\n });\n};\n","dc_graph.draw_graphs = function(options) {\n if(!options.nodeCrossfilter)\n throw new Error('need nodeCrossfilter');\n if(!options.edgeCrossfilter)\n throw new Error('need edgeCrossfilter');\n var select_nodes_group = dc_graph.select_nodes_group('select-nodes-group'),\n label_nodes_group = dc_graph.label_nodes_group('label-nodes-group');\n var _idTag = options.idTag || 'id',\n _sourceTag = options.sourceTag || 'source',\n _targetTag = options.targetTag || 'target',\n _labelTag = options.labelTag || 'label',\n _fixedPosTag = options.fixedPosTag || 'fixedPos';\n\n var _sourceDown = null, _targetMove = null, _edgeLayer = null, _hintData = [];\n\n function event_coords(chart) {\n var bound = chart.root().node().getBoundingClientRect();\n return chart.invertCoord([d3.event.clientX - bound.left,\n d3.event.clientY - bound.top]);\n }\n\n function update_hint() {\n var data = _hintData.filter(function(h) {\n return h.source && h.target;\n });\n var line = _edgeLayer.selectAll('line.hint-edge').data(data);\n line.exit().remove();\n line.enter().append('line')\n .attr('class', 'hint-edge')\n .style({\n fill: 'none',\n stroke: 'black',\n 'pointer-events': 'none'\n });\n\n line.attr({\n x1: function(d) { return d.source.x; },\n y1: function(d) { return d.source.y; },\n x2: function(d) { return d.target.x; },\n y2: function(d) { return d.target.y; }\n });\n }\n\n function erase_hint() {\n _hintData = [];\n _sourceDown = _targetMove = null;\n update_hint();\n }\n\n function create_node(chart, pos) {\n var node = {};\n node[_idTag] = uuid();\n node[_labelTag] = '';\n node[_fixedPosTag] = {x: pos[0], y: pos[1]};\n options.nodeCrossfilter.add([node]);\n chart.redraw();\n select_nodes_group.node_set_changed([node[_idTag]]);\n }\n\n function create_edge(chart, source, target) {\n erase_hint();\n var edge = {};\n edge[_idTag] = uuid();\n edge[_sourceTag] = source.orig.key;\n edge[_targetTag] = target.orig.key;\n // changing this data inside crossfilter is okay because it is not indexed data\n source.orig.value[_fixedPosTag] = null;\n target.orig.value[_fixedPosTag] = null;\n options.edgeCrossfilter.add([edge]);\n chart.redraw();\n select_nodes_group.node_set_changed([]);\n }\n\n function add_behavior(chart, node, edge, ehover) {\n var select_nodes = chart.child('select-nodes');\n if(select_nodes) {\n select_nodes.clickBackgroundClears(false);\n select_nodes.secondClickEvent(function(node) {\n label_nodes_group.edit_node_label(node, {selectText: true});\n });\n }\n node\n .on('mousedown.draw-graphs', function(d) {\n d3.event.stopPropagation();\n _sourceDown = d;\n _hintData = [{source: {x: _sourceDown.cola.x, y: _sourceDown.cola.y}}];\n })\n .on('mousemove.draw-graphs', function(d) {\n d3.event.stopPropagation();\n if(_sourceDown) {\n if(d === _sourceDown) {\n _targetMove = null;\n _hintData[0].target = null;\n }\n else if(d !== _targetMove) {\n _targetMove = d;\n _hintData[0].target = {x: _targetMove.cola.x, y: _targetMove.cola.y};\n }\n update_hint();\n }\n })\n .on('mouseup.draw-graphs', function(d) {\n d3.event.stopPropagation();\n if(_sourceDown && _targetMove)\n create_edge(chart, _sourceDown, _targetMove);\n else\n erase_hint();\n });\n chart.svg()\n .on('mousedown.draw-graphs', function() {\n _sourceDown = null;\n })\n .on('mousemove.draw-graphs', function() {\n var data = [];\n if(_sourceDown) { // drawing edge\n var coords = event_coords(chart);\n _targetMove = null;\n _hintData[0].target = {x: coords[0], y: coords[1]};\n update_hint();\n }\n })\n .on('mouseup.draw-graphs', function() {\n if(_sourceDown) // drag-edge\n erase_hint();\n else // click-node\n create_node(chart, event_coords(chart));\n });\n if(!_edgeLayer)\n _edgeLayer = chart.g().append('g').attr('class', 'draw-graphs');\n }\n\n function remove_behavior(chart, node, edge, ehover) {\n node\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n chart.svg()\n .on('mousedown.draw-graphs', null)\n .on('mousemove.draw-graphs', null)\n .on('mouseup.draw-graphs', null);\n }\n\n var _behavior = dc_graph.behavior('highlight-paths', {\n add_behavior: add_behavior,\n remove_behavior: remove_behavior\n });\n\n // whether to do relayout & redraw (true) or just refresh (false)\n _behavior.doRedraw = property(false);\n\n return _behavior;\n};\n\n","// load a graph from various formats and return the data in consistent {nodes, links} format\ndc_graph.load_graph = function() {\n // ignore any query parameters for checking extension\n function ignore_query(file) {\n if(!file)\n return null;\n return file.replace(/\\?.*/, '');\n }\n var file1, file2, callback;\n file1 = arguments[0];\n if(arguments.length===3) {\n file2 = arguments[1];\n callback = arguments[2];\n }\n else if(arguments.length===2) {\n callback = arguments[1];\n }\n else throw new Error('need two or three arguments');\n\n if(file2) {\n // this is not general - really titan-specific\n queue()\n .defer(d3.json, file1)\n .defer(d3.json, file2)\n .await(function(error, nodes, edges) {\n if(error)\n callback(error, null);\n else\n callback(null, {nodes: nodes.results, edges: edges.results});\n });\n }\n else if(/\\.json$/.test(ignore_query(file1)))\n d3.json(file1, callback);\n else if(/\\.gv|\\.dot$/.test(ignore_query(file1)))\n d3.text(file1, function (error, f) {\n if(error) {\n callback(error, null);\n return;\n }\n var digraph = graphlibDot.parse(f);\n\n var nodeNames = digraph.nodes();\n var nodes = new Array(nodeNames.length);\n nodeNames.forEach(function (name, i) {\n var node = nodes[i] = digraph._nodes[nodeNames[i]];\n node.id = i;\n node.name = name;\n });\n\n var edgeNames = digraph.edges();\n var edges = [];\n edgeNames.forEach(function(e) {\n var edge = digraph._edges[e];\n edges.push({\n source: digraph._nodes[edge.u].id,\n target: digraph._nodes[edge.v].id,\n sourcename: edge.u,\n targetname: edge.v\n });\n });\n var graph = {nodes: nodes, links: edges};\n callback(null, graph);\n });\n};\n","function can_get_graph_from_this(data) {\n return (data.nodes || data.vertices) && (data.edges || data.links);\n}\n\n// general-purpose reader of various json-based graph formats\n// (esp but not limited to titan graph database-like formats)\n// this could be generalized a lot\ndc_graph.munge_graph = function(data, nodekeyattr, sourceattr, targetattr) {\n // we want data = {nodes, edges} and the field names for keys; find those in common json formats\n var nodes, edges, nka = nodekeyattr || \"name\",\n sa = sourceattr || \"sourcename\", ta = targetattr || \"targetname\";\n\n if(!can_get_graph_from_this(data)) {\n var wrappers = ['database', 'response'];\n var wi = wrappers.findIndex(function(f) { return data[f] && can_get_graph_from_this(data[f]); });\n if(wi<0)\n throw new Error(\"couldn't find the data!\");\n data = data[wrappers[wi]];\n }\n edges = data.edges || data.links;\n nodes = data.nodes || data.vertices;\n\n function find_attr(o, attrs) {\n return attrs.filter(function(a) { return !!o[a]; });\n }\n\n //var edgekeyattr = \"id\";\n var edge0 = edges[0];\n if(edge0[sa] === undefined) {\n var sourceattrs = sourceattr ? [sourceattr] : ['source_ecomp_uid', \"node1\", \"source\", \"tail\"],\n targetattrs = targetattr ? [targetattr] : ['target_ecomp_uid', \"node2\", \"target\", \"head\"];\n //var edgekeyattrs = ['id', '_id', 'ecomp_uid'];\n var edgewrappers = ['edge'];\n if(edge0.node0 && edge0.node1) { // specific conflict here\n sa = 'node0';\n ta = 'node1';\n }\n else {\n var candidates = find_attr(edge0, sourceattrs);\n if(!candidates.length) {\n wi = edgewrappers.findIndex(function(w) {\n return edge0[w] && find_attr(edge0[w], sourceattrs).length;\n });\n if(wi<0) {\n if(sourceattr)\n throw new Error('sourceattr ' + sa + \" didn't work\");\n else\n throw new Error(\"didn't find any source attr\");\n }\n edges = edges.map(function(e) { return e[edgewrappers[wi]]; });\n edge0 = edges[0];\n candidates = find_attr(edge0, sourceattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible source attr', candidates);\n sa = candidates[0];\n\n candidates = find_attr(edge0, targetattrs);\n if(!candidates.length) {\n if(targetattr && !edge0[targetattr])\n throw new Error('targetattr ' + ta + \" didn't work\");\n else\n throw new Error(\"didn't find any target attr\");\n }\n if(candidates.length > 1)\n console.warn('found more than one possible target attr', candidates);\n ta = candidates[0];\n\n /*\n // we're currently assembling our own edgeid\n candidates = find_attr(edge0, edgekeyattrs);\n if(!candidates.length)\n throw new Error(\"didn't find any edge key\");\n if(candidates.length > 1)\n console.warn('found more than one edge key attr', candidates);\n edgekeyattr = candidates[0];\n */\n }\n }\n var node0 = nodes[0];\n if(node0[nka] === undefined) {\n var nodekeyattrs = nodekeyattr ? [nodekeyattr] : ['ecomp_uid', 'id', '_id'];\n var nodewrappers = ['vertex'];\n candidates = find_attr(node0, nodekeyattrs);\n if(!candidates.length) {\n wi = nodewrappers.findIndex(function(w) {\n return node0[w] && find_attr(node0[w], nodekeyattrs).length;\n });\n if(wi<0) {\n if(nodekeyattr)\n throw new Error('nodekeyattr ' + nka + \" didn't work\");\n else\n throw new Error(\"couldn't find the node data\");\n }\n nodes = nodes.map(function(n) { return n[nodewrappers[wi]]; });\n node0 = nodes[0];\n candidates = find_attr(node0, nodekeyattrs);\n }\n if(candidates.length > 1)\n console.warn('found more than one possible node key attr', candidates);\n nka = candidates[0];\n }\n\n return {\n nodes: nodes,\n edges: edges,\n nodekeyattr: nka,\n sourceattr: sa,\n targetattr: ta\n };\n}\n","/**\n * `dc_graph.flat_group` implements a special [\"fake group\"](https://github.com/dc-js/dc.js/wiki/FAQ#fake-groups)\n * for the special case where you want a group that represents the filtered rows of the crossfilter.\n *\n * Although `dc_graph` can be used with reduced data, typically the nodes and edges are just rows of\n * the corresponding data arrays, and each array has a column which contains the unique identifier\n * for the node or edge. In this setup, there are other dimensions and groups which are aggregated\n * for the use of dc.js charts, but the graph just shows or does not show the nodes and edges from\n * the rows.\n *\n * This simple class supports that use case in three steps:\n * 1. It creates a dimension keyed on the unique identifier (specified to `flat_group.make`)\n * 2. It creates a group from the dimension with a reduction function that returns the row when the\n * row is filtered in, and `null` when the row is filtered out.\n * 3. It wraps the group in a fake group which filters out the resulting nulls.\n *\n * The result is a fake group whose `.all()` method returns an array of the currently filtered-in\n * `{key, value}` pairs, where the key is that returned by the ID accessor, and the value is the raw\n * row object from the data.\n *\n * This could be a useful crossfilter utility outside of dc.graph. For example, bubble charts and\n * scatter plots often use similar functionality because each observation is either shown or not,\n * and it is helpful to have the entire row available as reduced data.\n *\n * But it would need to be generalized and cleaned up. (For example, the way it has to create the\n * crossfilter and dimension is kinda dumb.) And there is currently no such crossfilter utility\n * library to put it in.\n *\n * @namespace flat_group\n * @memberof dc_graph\n * @type {{}}\n**/\n\ndc_graph.flat_group = (function() {\n var reduce_01 = {\n add: function(p, v) { return v; },\n remove: function() { return null; },\n init: function() { return null; }\n };\n // now we only really want to see the non-null values, so make a fake group\n function non_null(group) {\n return {\n all: function() {\n return group.all().filter(function(kv) {\n return kv.value !== null;\n });\n }\n };\n }\n\n function dim_group(ndx, id_accessor) {\n var dimension = ndx.dimension(id_accessor);\n return {\n crossfilter: ndx,\n dimension: dimension,\n group: non_null(dimension.group().reduce(reduce_01.add,\n reduce_01.remove,\n reduce_01.init))\n };\n }\n\n return {\n /**\n * Create a crossfilter, dimension, and flat group, as described in {@link dc_graph.flat_group flat_group}.\n * Returns an object containing all three.\n\n * @method make\n * @memberof dc_graph.flat_group\n * @param {Array} vec - the data array for crossfilter\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n make: function(vec, id_accessor) {\n var ndx = crossfilter(vec);\n return dim_group(ndx, id_accessor);\n },\n /**\n * Create a flat dimension and group from an existing crossfilter.\n *\n * This is a wretched name for this function.\n\n * @method another\n * @memberof dc_graph.flat_group\n * @param {Object} ndx - crossfilter instance\n * @param {Function} id_accessor - accessor function taking a row object and returning its\n * unique identifier\n * @return {Object} `{crossfilter, dimension, group}`\n **/\n another: function(ndx, id_accessor) {\n return dim_group(ndx, id_accessor);\n }\n };\n})();\n\n\n","var convert_tree_helper = function(data, attrs, options, parent, level, inherit) {\n level = level || 0;\n if(attrs.length > (options.valuesByAttr ? 1 : 0)) {\n var attr = attrs.shift();\n var nodes = [], edges = [];\n var children = data.map(function(v) {\n var key = v[options.nestKey];\n var childKey = options.nestKeysUnique ? key : uuid();\n if(childKey) {\n var node;\n if(options.ancestorKeys) {\n inherit = inherit || {};\n if(attr)\n inherit[attr] = key;\n node = Object.assign({}, inherit);\n } else node = {};\n node[options.nodeKey] = childKey;\n if(options.label && options.labelFun)\n node[options.label] = options.labelFun(key, attr, v);\n if(options.level)\n node[options.level] = level+1;\n nodes.push(node);\n if(parent) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = childKey;\n edges.push(edge);\n }\n }\n var children = options.valuesByAttr ? v[attrs[0]] : v.values;\n var recurse = convert_tree_helper(children, attrs.slice(0), options,\n childKey, level+1, Object.assign({}, inherit));\n return recurse;\n });\n return {nodes: Array.prototype.concat.apply(nodes, children.map(dc.pluck('nodes'))),\n edges: Array.prototype.concat.apply(edges, children.map(dc.pluck('edges')))};\n }\n else return {nodes: data.map(function(v) {\n v = Object.assign({}, v);\n if(options.level)\n v[options.level] = level+1;\n return v;\n }), edges: data.map(function(v) {\n var edge = {};\n edge[options.edgeSource] = parent;\n edge[options.edgeTarget] = v[options.nodeKey];\n return edge;\n })};\n};\n\ndc_graph.convert_tree = function(data, attrs, options) {\n options = Object.assign({\n nodeKey: 'key',\n edgeKey: 'key',\n edgeSource: 'sourcename',\n edgeTarget: 'targetname',\n nestKey: 'key'\n }, options);\n if(Array.isArray(data))\n return convert_tree_helper(data, attrs, options, options.root, 0, options.inherit);\n else {\n attrs = [''].concat(attrs);\n return convert_tree_helper([data], attrs, options, options.root, 0, options.inherit);\n }\n};\n\ndc_graph.convert_nest = function(nest, attrs, nodeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n return dc_graph.convert_tree(nest, attrs, {\n nodeKey: nodeKeyAttr,\n edgeSource: edgeSourceAttr,\n edgeTarget: edgeTargetAttr,\n root: parent,\n inherit: inherit,\n ancestorKeys: true,\n label: 'name',\n labelFun: function(key, attr, v) { return attr + ':' + key; },\n level: '_level'\n });\n};\n\ndc_graph.convert_adjacency_list = function(nodes, namesIn, namesOut) {\n // adjacenciesAttr, edgeKeyAttr, edgeSourceAttr, edgeTargetAttr, parent, inherit) {\n var edges = Array.prototype.concat.apply([], nodes.map(function(n) {\n return n[namesIn.adjacencies].map(function(adj) {\n var e = {};\n if(namesOut.edgeKey)\n e[namesOut.edgeKey] = uuid();\n e[namesOut.edgeSource] = n[namesIn.nodeKey];\n e[namesOut.edgeTarget] = namesIn.targetKey ? adj[namesIn.targetKey] : adj;\n if(namesOut.adjacency)\n e[namesOut.adjacency] = adj;\n return e;\n });\n }));\n return {\n nodes: nodes,\n edges: edges\n };\n};\n\n","dc_graph.path_reader = function(pathsgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var _intervals, _intervalTree, _time;\n\n function register_path_objs(path, nop, eop) {\n reader.elementList.eval(path).forEach(function(element) {\n var key, paths;\n switch(reader.elementType.eval(element)) {\n case 'node':\n key = reader.nodeKey.eval(element);\n paths = nop[key] = nop[key] || [];\n break;\n case 'edge':\n key = reader.edgeSource.eval(element) + '-' + reader.edgeTarget.eval(element);\n paths = eop[key] = eop[key] || [];\n break;\n }\n paths.push(path);\n });\n }\n\n var reader = {\n pathList: property(identity, false),\n timeRange: property(null, false),\n elementList: property(identity, false),\n elementType: property(null, false),\n nodeKey: property(null, false),\n edgeSource: property(null, false),\n edgeTarget: property(null, false),\n clear: function() {\n highlight_paths_group.paths_changed({}, {}, []);\n },\n data: function(data) {\n var nop = {}, eop = {}, allpaths = [], has_ranges;\n reader.pathList.eval(data).forEach(function(path) {\n if((path._range = reader.timeRange.eval(path))) { // ugh modifying user data\n if(has_ranges===false)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = true;\n } else {\n if(has_ranges===true)\n throw new Error(\"can't have a mix of ranged and non-ranged paths\");\n has_ranges = false;\n register_path_objs(path, nop, eop);\n }\n allpaths.push(path);\n });\n if(has_ranges) {\n _intervals = allpaths.map(function(path) {\n var interval = [path._range[0].getTime(), path._range[1].getTime()];\n interval.path = path;\n return interval;\n });\n // currently must include lysenko-interval-tree separately\n _intervalTree = lysenkoIntervalTree(_intervals);\n if(_time)\n this.setTime(_time);\n } else {\n _intervals = null;\n _intervalTree = null;\n highlight_paths_group.paths_changed(nop, eop, allpaths);\n }\n },\n getIntervals: function() {\n return _intervals;\n },\n setTime: function(t) {\n if(t && _intervalTree) {\n var paths = [], nop = {}, eop = {};\n _intervalTree.queryPoint(t.getTime(), function(interval) {\n paths.push(interval.path);\n register_path_objs(interval.path, nop, eop);\n });\n highlight_paths_group.paths_changed(nop, eop, paths);\n }\n _time = t;\n }\n };\n\n return reader;\n};\n\n","dc_graph.path_selector = function(parent, reader, pathsgroup, chartgroup) {\n var highlight_paths_group = dc_graph.register_highlight_paths_group(pathsgroup || 'highlight-paths-group');\n var root = d3.select(parent);\n var paths_ = [];\n var hovered = null, selected = null;\n\n // unfortunately these functions are copied from dc_graph.highlight_paths\n function contains_path(paths) {\n return function(path) {\n return paths ? paths.indexOf(path)>=0 : false;\n };\n }\n\n function doesnt_contain_path(paths) {\n var cp = contains_path(paths);\n return function(path) {\n return !cp(path);\n };\n }\n\n function toggle_paths(pathsA, pathsB) {\n if(!pathsA)\n return pathsB;\n else if(!pathsB)\n return pathsA;\n if(pathsB.every(contains_path(pathsA)))\n return pathsA.filter(doesnt_contain_path(pathsB));\n else return pathsA.concat(pathsB.filter(doesnt_contain_path(pathsA)));\n }\n\n // this should use the whole cascading architecture\n // and allow customization rather than hardcoding everything\n // in fact, you can't even reliably overlap attributes without that (so we don't)\n\n function draw_paths(paths) {\n var p2 = root.selectAll('span.path-selector').data(paths);\n p2.enter()\n .append('span')\n .attr('class', 'path-selector')\n .style({\n 'border-width': '1px',\n 'border-style': 'solid',\n 'border-color': 'grey',\n 'border-radius': '4px',\n 'display': 'inline-block',\n padding: '4px',\n cursor: 'pointer',\n margin: '5px'\n });\n p2.exit().transition(1000).attr('opacity', 0).remove();\n p2.text(function(d, i) {\n return 'path ' + (i+1) + ' (' + reader.elementList.eval(d).length + ')';\n })\n .on('mouseover', function(d) {\n highlight_paths_group.hover_changed([d]);\n })\n .on('mouseout', function(d) {\n highlight_paths_group.hover_changed(null);\n })\n .on('click', function(d) {\n highlight_paths_group.select_changed(toggle_paths(selected, [d]));\n });\n var no_paths = root.selectAll('span.no-paths').data(paths.length === 0 ? [0] : []);\n no_paths.exit().remove();\n no_paths.enter()\n .append('span')\n .attr('class', 'no-paths');\n no_paths\n .classed('error', !!selector.error_text())\n .text(selector.error_text() || (selector.queried() ? selector.zero_text() : selector.default_text()));\n }\n\n function draw_hovered() {\n var is_hovered = contains_path(hovered);\n root.selectAll('span.path-selector')\n .style({\n 'border-color': function(d, i) { return is_hovered(d) ? '#e41a1c' : 'grey'; },\n 'border-width': function(d, i) { return (is_hovered(d) ? 2 : 1) + 'px'; },\n padding: function(d, i) { return (is_hovered(d) ? 3 : 4) + 'px'; }\n });\n }\n\n function draw_selected() {\n var is_selected = contains_path(selected);\n root.selectAll('span.path-selector')\n .style({\n 'background-color': function(d, i) { return is_selected(d) ? '#1c1ae6' : 'white'; },\n 'color': function(d, i) { return is_selected(d) ? 'white' : 'black'; }\n });\n }\n\n highlight_paths_group\n .on('paths_changed.selector', function(nop, eop, paths) {\n hovered = selected = null;\n paths_ = paths;\n selector.redraw();\n })\n .on('hover_changed.selector', function(hpaths) {\n hovered = hpaths;\n draw_hovered();\n })\n .on('select_changed.selector', function(spaths) {\n selected = spaths;\n draw_selected();\n });\n var selector = {\n default_text: property('Nothing here'),\n zero_text: property('No paths'),\n error_text: property(null),\n queried: property(false),\n redraw: function() {\n draw_paths(paths_);\n draw_hovered();\n draw_selected();\n },\n render: function() {\n this.redraw();\n return this;\n }\n };\n dc.registerChart(selector, chartgroup);\n return selector;\n}\n","dc_graph.node_name = function(i) {\n // a-z, A-Z, aa-Zz, then quit\n if(i<26)\n return String.fromCharCode(97+i);\n else if(i<52)\n return String.fromCharCode(65+i-26);\n else if(i<52*52)\n return dc_graph.node_name(Math.floor(i/52)) + dc_graph.node_name(i%52);\n else throw new Error(\"no, that's too large\");\n};\ndc_graph.node_object = function(i, attrs) {\n attrs = attrs || {};\n return _.extend({\n id: i,\n name: dc_graph.node_name(i)\n }, attrs);\n};\n\ndc_graph.edge_object = function(namef, i, j, attrs) {\n attrs = attrs || {};\n return _.extend({\n source: i,\n target: j,\n sourcename: namef(i),\n targetname: namef(j)\n }, attrs);\n};\n\ndc_graph.generate = function(type, args, env, callback) {\n var nodes, edges, i, j;\n var nodePrefix = env.nodePrefix || '';\n var namef = function(i) {\n return nodes[i].name;\n };\n var N = args[0];\n var linkLength = env.linkLength || 30;\n switch(type) {\n case 'clique':\n case 'cliquestf':\n nodes = new Array(N);\n edges = [];\n for(i = 0; i 0) {\n var choice = Math.random();\n var n1, n2;\n if(!_nodes.length || choice < options.newComponentProb)\n n1 = new_node();\n else\n n1 = random_node();\n if(choice < options.newNodeProb)\n n2 = new_node();\n else\n n2 = random_node();\n if(n1 && n2) {\n var edge = {};\n edge[options.edgeKey] = options.edgeKeyGen(_edges.length);\n edge[options.sourceKey] = n1[options.nodeKey];\n edge[options.targetKey] = n2[options.nodeKey];\n _edges.push(edge);\n }\n }\n }\n };\n};\n","dc_graph.line_breaks = function(charexp, max_line_length) {\n var regexp = new RegExp(charexp, 'g');\n return function(n) {\n var s = n.key;\n var result;\n var line = '', lines = [], part, i = 0;\n do {\n result = regexp.exec(s);\n if(result)\n part = s.slice(i, regexp.lastIndex);\n else\n part = s.slice(i);\n if(line.length + part.length > max_line_length && line.length > 0) {\n lines.push(line);\n line = '';\n }\n line += part;\n i = regexp.lastIndex;\n }\n while(result !== null);\n lines.push(line);\n return lines;\n };\n};\n","dc_graph.build_type_graph = function(nodes, edges, nkey, ntype, esource, etarget) {\n var nmap = {}, tnodes = {}, tedges = {};\n nodes.forEach(function(n) {\n nmap[nkey(n)] = n;\n var t = ntype(n);\n if(!tnodes[t])\n tnodes[t] = {type: t};\n });\n edges.forEach(function(e) {\n var source = esource(e), target = etarget(e), sn, tn;\n if(!(sn = nmap[source]))\n throw new Error('source key ' + source + ' not found!');\n if(!(tn = nmap[target]))\n throw new Error('target key ' + target + ' not found!');\n var etype = ntype(sn) + '/' + ntype(tn);\n if(!tedges[etype])\n tedges[etype] = {\n type: etype,\n source: ntype(sn),\n target: ntype(tn)\n };\n });\n return {\n nodes: Object.keys(tnodes).map(function(k) { return tnodes[k]; }),\n edges: Object.keys(tedges).map(function(k) { return tedges[k]; })\n };\n}\n","dc_graph.d3 = d3;\ndc_graph.crossfilter = crossfilter;\ndc_graph.dc = dc;\n\nreturn dc_graph;\n}\n if (typeof define === 'function' && define.amd) {\n define([\"d3\", \"crossfilter\", \"dc\"], _dc_graph);\n } else if (typeof module == \"object\" && module.exports) {\n var _d3 = require('d3');\n var _crossfilter = require('crossfilter');\n if (typeof _crossfilter !== \"function\") {\n _crossfilter = _crossfilter.crossfilter;\n }\n var _dc = require('dc');\n module.exports = _dc_graph(_d3, _crossfilter, _dc);\n } else {\n this.dc_graph = _dc_graph(d3, crossfilter, dc);\n }\n}\n)();\n"]} \ No newline at end of file diff --git a/web/js/dc.graph.min.js b/web/js/dc.graph.min.js index 8cf10dad..0474092f 100644 --- a/web/js/dc.graph.min.js +++ b/web/js/dc.graph.min.js @@ -1,5 +1,5 @@ /*! - * dc.graph 0.4.0 + * dc.graph 0.4.1 * http://dc-js.github.io/dc.graph.js/ * Copyright 2015-2016 AT&T Intellectual Property & the dc.graph.js Developers * https://github.com/dc-js/dc.graph.js/blob/master/AUTHORS @@ -18,6 +18,7 @@ * */ -!function(){function a(a,b,c){"use strict";function d(a){return a.orig}function e(a){return a}function f(a,b){var c=J(b),d=function(){return arguments.length?(console.warn(a),c.apply(J,arguments),this):c()};return["cascade","_eval","eval","react"].forEach(function(a){d[a]=c[a]}),d}function g(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function h(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,j(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,j(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function i(a,b){return function(){return a(b.apply(null,arguments))}}function j(a){return I.functor_wrap(a,d)}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function l(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!o(c,i,a))return!1}else if(!o(a,i,c))return!1;if(b>=d){if(!o(d,j,b))return!1}else if(!o(b,j,d))return!1;if(e>=g){if(!o(g,i,e))return!1}else if(!o(e,i,g))return!1;if(f>=h){if(!o(h,j,f))return!1}else if(!o(f,j,h))return!1;return{x:i,y:j}}function q(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function B(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,p,q,s;if(h){var t,u,v=function(b,c){return r(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),y=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=A(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=A(w(c,h.targetPort,j),y,y-2*i*j/k)}catch(a){u={ang:y,port:h.targetPort}}o=t.port,p=u.port;var z=Math.hypot(o.x,o.y),B=Math.hypot(p.x,p.y),C=z+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);q=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+p.x,y:g+p.y}],s=3}else m=f-d,n=g-e,o=r(a,b,m,n),p=r(a,c,-m,-n),o||(o={x:0,y:0}),p||(p={x:0,y:0}),q=[{x:d+o.x,y:e+o.y},{x:f+p.x,y:g+p.y}],s=1;return{sourcePort:o,targetPort:p,points:q,bezDegree:s}}function C(a,b){for(var c=[],d=1;da)return g.splice(c,0,{n:a,f:b}),h}return g.push({n:a,f:b}),h},h._eval=function(a,c){if(0!==c&&g.length){var d=g[c-1];return d.f(a,function(){return h._eval(a,c-1)})}return I.functor_wrap(h(),b)(a)},h.eval=function(a){return h._eval(a,g.length)},h.react=function(a){return arguments.length?(f=a,this):f},h};I.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var K={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();I.depth_first_traversal=function(a){return function(b,c){function d(b,c){var e=a.nodeid(b);return j[e]?void(a.skip&&a.skip(b,f[e])):(i[c]||(i[c]=[]),a.place&&a.place(b,c,i[c]),i[c].push(b),j[e]=!0,g[e]&&g[e].forEach(function(b,f){var i=h[a.targetid(b)];f&&a.sib&&a.sib(!1,h[a.targetid(g[e][f-1])],i),a.push&&a.push(),d(i,c+1)}),void(a.pop&&a.pop(b)))}a.init&&a.init(),a.tree&&(c=c.filter(function(b){return a.tree(b)}));var e,f={},g=c.reduce(function(b,c){var d=a.sourceid(c),e=a.targetid(c);return b[d]||(b[d]=[]),b[d].push(c),f[e]=(f[e]||0)+1,b},{}),h=b.reduce(function(b,c){var d=a.nodeid(c);return b[d]=c,b},{}),i=[],j={};a.root?e=b.filter(function(b){return a.root(b)}):(e=b.filter(function(b){return!f[a.nodeid(b)]}),b.length&&!e.length&&(e=[b[0]])),e.forEach(function(b,c){c&&a.sib&&a.sib(!0,e[c-1],b),a.push&&a.push(),d(b,a.row?a.row(b):0)}),a.finish(i)}};var M=1e-7,N={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};I.available_shapes=function(){var a=Object.keys(N);return a.slice(0,a.length-1)};var O={shape:"ellipse"};I.diagram=function(g,h){function k(a){return function(b){ga.layoutEngine()||ga.layoutAlgorithm("cola",!0),console.warn('Warning: dc_graph.diagram."'+a+'"is deprecated. Call the corresponding method on the layout engine instead.');var c=ga.layoutEngine();return c.getEngine&&(c=c.getEngine()),c[a](b),this}}function n(){ga.layoutEngine()||ga.layoutAlgorithm("cola",!0),ga.layoutEngine().init({width:ga.width(),height:ga.height()})}function o(a){return!!a.source&&!!a.target}function p(){return"none"!==ga.stageTransitions()?ga.transitionDuration()/2:ga.transitionDuration()}function q(a){return"none"===ga.stageTransitions()||"modins"===ga.stageTransitions()==!a?0:ga.transitionDuration()/2}function r(b,c){c.attr("stroke",ga.edgeStroke.eval).attr("stroke-width",ga.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=ga.edgeArrowhead.eval(a),c=R(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=ga.edgeArrowtail.eval(a),c=R(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+ga.arrowId(b,"head")+",#"+ga.arrowId(b,"tail")).attr("fill",ga.edgeStroke.eval(b))}),ga._updateNode(b)}function s(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){ga.isRunning()||ga.redraw()},0))}function x(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+ga.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+ga.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=B(ga,a.source,a.target,c,d,e,f,m,k,ga.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=E(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function y(a){x(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function A(a){var b=x(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function C(a){return function(b){var c=b.ports[a][b.parallel].path;return l(c.points,c.bezDegree)}}function D(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=T();i=ba.translate(),j=ba.scale(),n.forEach(function(a){switch(a){case"l":i[0]=U(i,o.left);break;case"t":i[1]=V(i,o.top);break;case"r":i[0]=W(i,o.right);break;case"b":i[1]=X(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ga.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ha.attr({viewBox:a,preserveAspectRatio:f})),ba.translate(i).scale(j).event(ha)}}function Q(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(o));var l={};c.each(function(a){l[ga.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var m=b.transition().duration(p()).delay(function(a){return q(l[ga.nodeKey.eval(a)])}).attr("opacity",ga.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var n={};e.each(function(a){n[ga.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ga.stageTransitions()?(A(b),c="new"):(y(b),c="old"),ga.edgeArrowhead.eval(b)&&a.select("#"+ga.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",C("modins"===ga.stageTransitions()?"new":"old"));var r=d.each(A).each(function(b){ga.edgeArrowhead.eval(b)&&a.select("#"+ga.arrowId(b,"head")).transition().duration(p()).delay(q(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(p()).delay(function(a){return q(n[ga.edgeKey.eval(a)])}).attr("opacity",ga.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ga.stageTransitions()&&n[ga.edgeKey.eval(a)]?"old":"new";return C(b)(a)});k.attr("d",D("modins"===ga.stageTransitions()?"new":"old"));var t=j.transition().duration(p()).delay(function(a){return q(n[ga.edgeKey.eval(a)])}).attr("opacity",ga.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ga.stageTransitions()&&n[ga.edgeKey.eval(a)]?"old":"new";return D(b)(a)});"insmod"===ga.stageTransitions()&&(p()>=50?(r=r.transition().duration(p()).attr("d",C("new")),t=t.transition().duration(p()).attr("d",D("new"))):(r.attr("d",C("new")),t.attr("d",C("new")))),ga.showLayoutSteps()||F([m,r,t],function(){s(!0)}),f.attr("d",C("new"))}function R(a,b,c){var d=ga.arrowId(a,b),e=ga.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*ga.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*ga.edgeArrowSize.eval(a)).attr("stroke",ga.edgeStroke.eval(a)).attr("fill",ga.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function S(a,b){ta=a,ua=b,ja.attr("transform","translate("+a+") scale("+b+")")}function T(){return{left:wa.left-ga.margins().left,top:wa.top-ga.margins().top,right:wa.right+ga.margins().right,bottom:wa.bottom+ga.margins().bottom}}function U(a,b){return a[0]-ca(b)+ca.range()[0]}function V(a,b){return a[1]-da(b)+da.range()[0]}function W(a,b){return a[0]-ca(b)+ca.range()[1]}function X(a,b){return a[1]-da(b)+da.range()[1]}function Y(){var b=a.event.translate;if(ga.restrictPan()){var c,d=ca.domain(),e=da.domain(),f=T(),g=f.leftga.timeLimit())&&(console.log("cancelled"),ga.layoutEngine().stop())}).on("end",function(a,b){ga.showLayoutSteps()?s(!0):(ga.initialOnly()||c(a,b),Q(C,D,u,v,w,x,y,z,A,B));var d;switch(ga.autoZoom()){case"always":d=!0;break;case"once":d=!0,ga.autoZoom(null);break;default:d=!1}N(C,u),d&&P()}).on("start",function(){console.log("algo "+ga.layoutEngine().layoutAlgorithm()+" started."),ma.start()}),ga.initialOnly()?ga.layoutEngine().dispatch().end(g,h):(ma.start(),ga.layoutEngine().data(g.map(function(a){return a.cola}),J.map(function(a){return a.cola}),H,{groupConnected:ga.groupConnected()}),ga.layoutEngine().start({initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20})),this},ga.refresh=function(b,c,d,e,f){b=b||ka.selectAll(".node"),c=c||la.selectAll(".edge"),r(b,c),d=d||la.selectAll(".edge-hover"),e=e||la.selectAll(".edge-label"),f=f||ia.selectAll("path.edge-label-path");var g=a.select(null);Q(b,g,c,g,d,g,e,g,f,g)};var wa;return ga.render=function(){return ga.initLayoutOnRedraw()||n(),ga.resetSvg(),ja=ha.append("g"),la=ja.append("g"),ka=ja.append("g"),ga.legend()&&ga.legend().render(),ga.redraw()},ga.on=function(a,b){return ma.on(a,b),this},ga.getStats=function(){return pa},ga.select=function(a){return ga.root().select(a)},ga.selectAll=function(a){return ga.root()?ga.root().selectAll(a):null},ga.svg=function(a){return arguments.length?(ha=a,ga):ha},ga.resetSvg=function(){return ga.select("svg").remove(),$()},ga.redrawGroup=function(){c.redrawAll(h)},ga.renderGroup=function(){c.renderAll(h)},ga.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ga},ga.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ia.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ga.invertCoord=function(a){return[ca.invert(a[0]),da.invert(a[1])]},ga.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ga.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ga.anchor=function(b,d){if(!arguments.length)return ea;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return ea=b.select&&b.classed?b.node():b,ga.root(a.select(ea)),ga.root().classed(I.constants.CHART_CLASS,!0),c.registerChart(ga,d),fa=d,ga},ga.anchorName=function(){var a=ga.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ga.chartID()},ga.anchor(g,h)};var P={};I.webworker_layout=function(b){var c=a.dispatch("init","start","tick","end"),d=F(b.layoutAlgorithm()),e={};d.layouts[b.layoutId()]=e,e.parent=function(a){b.parent&&b.parent(a)},e.init=function(a){return a=b.optionNames().reduce(function(a,c){return a[c]=b[c](),a},a),d.worker.postMessage({command:"init",args:{layoutId:b.layoutId(),options:a}}),this},e.data=function(a,c,e,f){d.worker.postMessage({command:"data",args:{layoutId:b.layoutId(),nodes:a,edges:c,constraints:e,options:f}})},e.start=function(a){d.worker.postMessage({command:"start",args:{layoutId:b.layoutId(),options:a}})},e.stop=function(){return d.worker.postMessage({command:"stop",args:{layoutId:b.layoutId()}}),this},e.getEngine=function(){return b};var f=["layoutAlgorithm","populateLayoutNode","populateLayoutEdge","rankdir","ranksep"];return f.forEach(function(a){e[a]=function(){var c=b[a].apply(b,arguments);return arguments.length?this:c}}),e.on=function(a,b){return c.on(a,b),this},e.dispatch=function(){return c},e},I.graphviz_attrs=function(){return{rankdir:J("TB"),ranksep:J(40)}},I.cola_layout=function(b){function c(a){switch(j=cola.d3adaptor().avoidOverlaps(!0).size([a.width,a.height]).handleDisconnected(a.handleDisconnected),j.tickSize&&j.tickSize(a.tickSize),a.lengthStrategy){case"symmetric":j.symmetricDiffLinkLengths(a.baseLength);break;case"jaccard":j.jaccardLinkLengths(a.baseLength);break;case"individual":j.linkDistance(function(b){return b.dcg_edgeLength||a.baseLength});break;case"none":}a.flowLayout&&j.flowLayout(a.flowLayout.axis,a.flowLayout.minSeparation)}function d(a,b,c,d){function e(a){k[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(l,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height,a.fixed=!!b.dgc_nodeFixed,"object"==typeof b.dgc_nodeFixed?(a.x=b.dgc_nodeFixed.x, -a.y=b.dgc_nodeFixed.y):(void 0!==b.x&&(a.x=b.x),void 0!==b.y&&(a.y=b.y))}),g=m(n,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.source=l[b.dcg_edgeSource],a.target=l[b.dcg_edgeTarget],a.dcg_edgeLength=b.dcg_edgeLength});f.forEach(function(a,b){a.index=b});var h=null;if(d.groupConnected){var i=cola.separateGraphs(f,g);h=i.map(function(a){return{leaves:a.array.map(function(a){return a.index})}})}j.on("tick",function(){e("tick")}).on("start",function(){k.start()}).on("end",function(){e("end")}),j.nodes(f).links(g).constraints(c).groups(h)}function e(a){j.start(a.initialUnconstrainedIterations,a.initialUserConstraintIterations,a.initialAllConstraintsIterations,a.gridSnapIterations)}function f(){j.stop()}var h,i=b||g(),j=null,k=a.dispatch("tick","start","end"),l={},n={},o=I.graphviz_attrs(),p=Object.keys(o);o.rankdir(null);var q=Object.assign(o,{layoutAlgorithm:function(){return"cola"},layoutId:function(){return i},parent:J(null),on:function(a,b){return k.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return["handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize"].concat(p)},populateLayoutNode:function(){},populateLayoutEdge:function(){},handleDisconnected:J(!0),lengthStrategy:J("symmetric"),baseLength:J(30),flowLayout:function(a){if(!arguments.length){if(h)return h;var b=q.rankdir();if(!b)return null;var c="LR"===b||"RL"===b?"x":"y";return{axis:c,minSeparation:q.ranksep()+2*q.parent().nodeRadius()}}return h=a,this},tickSize:J(1)});return q},I.cola_layout.scripts=["d3.js","cola.js"],I.dagre_layout=function(b){function c(a){k=new dagre.graphlib.Graph({multigraph:!0}),k.setGraph({rankdir:a.rankdir}),k.setDefaultEdgeLabel(function(){return{}})}function d(a,b,c,d){function e(a){l[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(n,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height},function(a,b){k.setNode(a,b)},function(a){k.removeNode(a)}),g=m(o,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.dcg_edgeSource=b.dcg_edgeSource,a.dcg_edgeTarget=b.dcg_edgeTarget},function(a,b,c){k.setEdge(c.dcg_edgeSource,c.dcg_edgeTarget,b)},function(a,b){k.removeEdge(b.dcg_edgeSource,b.dcg_edgeTarget,b.dcg_edgeKey)});h=function(){e("tick")},i=function(){e("end")}}function e(a){l.start(),dagre.layout(k),i()}function f(){}var h,i,j=b||g(),k=null,l=a.dispatch("tick","start","end"),n={},o={},p=I.graphviz_attrs(),q=Object.keys(p);return Object.assign(p,{layoutAlgorithm:function(){return"dagre"},layoutId:function(){return j},on:function(a,b){return l.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return q},populateLayoutNode:function(){},populateLayoutEdge:function(){}})},I.dagre_layout.scripts=["d3.js","dagre.js"],I.tree_layout=function(b){function c(b){function c(a,b){return(e(a)+e(b))/2}var d,e=a.functor(b.nodeWidth);h=I.depth_first_traversal({nodeid:function(a){return a.dcg_nodeKey},sourceid:function(a){return a.dcg_edgeSource},targetid:function(a){return a.dcg_edgeTarget},init:function(){d=b.offsetX},row:function(a){return a.dcg_rank},place:function(a,c,f){if(f.length){var g=f[f.length-1],h=(e(g)+e(a))/2;d=Math.max(d,g.left_x+h)}a.left_x=d,a.hit_ins=1,a.y=c*b.gapY+b.offsetY},sib:function(a,b,e){var f=c(b,e);a&&(f*=1.5),d+=f},pop:function(a){a.x=(a.left_x+d)/2},skip:function(a,b){a.x=(a.hit_ins*a.x+d)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,d=a.sort(function(a,b){return a.x-b.x}),e=null,f=null,g=0;g0&&--e;var j,k;if(g0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=J(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=J("n"),f.content=J(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=J(0),f},I.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=J(!0),b},I.select_nodes=function(b){function c(c,d,g){c.cascade(50,!0,h(function(a){return f.indexOf(a.orig.key)>=0},null,b)),d.on("click.select-nodes",function(b){f=[c.nodeKey.eval(b)],c.refresh(d,g),e.node_set_changed(f),a.event.stopPropagation()}),c.svg().on("click.select-nodes",function(a){f=[],c.refresh(d,g),e.node_set_changed(f)});var i=d.data().map(function(a){return a.orig.key}),j=f.length;f=f.filter(function(a){return i.indexOf(a)>=0}),f.length!==j&&e.node_set_changed(f)}function d(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var e=I.select_nodes_group("select-nodes-group"),f=[];return I.behavior("select-nodes",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},I.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},I.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,d,e){c.cascade(100,!0,h(null,function(a){return a.dcg_highlighted},a)),d.on("mouseover.highlight-neighbors",function(a){e.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(d,e)}).on("mouseout.highlight-neighbors",function(a){b(e),c.refresh(d,e)})}function d(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return I.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},I.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},I.highlight_paths=function(a,b,c,d){function e(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function f(a,b){r=a,s=b,t=u=null,e()}function g(a){a!==u&&(u=a,e())}function i(a){a!==t&&(t=a,e())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(d,e,f,g){d.cascade(200,!0,h(function(a){return!!r[d.nodeKey.eval(a)]},function(a){return!!s[d.edgeKey.eval(a)]},a)).cascade(300,!0,h(function(a){return m(r[d.nodeKey.eval(a)],t)},function(a){return m(s[d.edgeKey.eval(a)],t)},c)).cascade(400,!0,h(function(a){return m(r[d.nodeKey.eval(a)],u)},function(a){return m(s[d.edgeKey.eval(a)],u)},b)),e.on("mouseover.highlight-paths",function(a){q.hover_changed(r[d.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[d.nodeKey.eval(a)]))}),g.on("mouseover.highlight-paths",function(a){q.hover_changed(s[d.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[d.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=I.register_highlight_paths_group(d||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=I.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?f:null),q.on("hover_changed."+b,a?g:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=J(!1),v},I.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.layoutEngine().rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return I.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},I.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},I.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!H(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&H(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},I.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}();var Q=function(a,b,d,e,f,h){if(f=f||0,b.length>(d.valuesByAttr?1:0)){var i=b.shift(),j=[],k=[],l=a.map(function(a){var c=a[d.nestKey],l=d.nestKeysUnique?c:g();if(l){var m;if(d.ancestorKeys?(h=h||{},i&&(h[i]=c),m=Object.assign({},h)):m={},m[d.nodeKey]=l,d.label&&d.labelFun&&(m[d.label]=d.labelFun(c,i,a)),d.level&&(m[d.level]=f+1),j.push(m),e){var n={};n[d.edgeSource]=e,n[d.edgeTarget]=l,k.push(n)}}var o=d.valuesByAttr?a[b[0]]:a.values,p=Q(o,b.slice(0),d,l,f+1,Object.assign({},h));return p});return{nodes:Array.prototype.concat.apply(j,l.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(k,l.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a=Object.assign({},a),d.level&&(a[d.level]=f+1),a}),edges:a.map(function(a){var b={};return b[d.edgeSource]=e,b[d.edgeTarget]=a[d.nodeKey],b})}};return I.convert_tree=function(a,b,c){return c=Object.assign({nodeKey:"key",edgeKey:"key",edgeSource:"sourcename",edgeTarget:"targetname",nestKey:"key"},c),Array.isArray(a)?Q(a,b,c,c.root,0,c.inherit):(b=[""].concat(b),Q([a],b,c,c.root,0,c.inherit))},I.convert_nest=function(a,b,c,d,e,f,g){return I.convert_tree(a,b,{nodeKey:c,edgeSource:d,edgeTarget:e,root:f,inherit:g,ancestorKeys:!0,label:"name",labelFun:function(a,b,c){return b+":"+a},level:"_level"})},I.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=g()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},I.path_reader=function(a){function b(a,b,c){h.elementList.eval(a).forEach(function(d){var e,f;switch(h.elementType.eval(d)){case"node":e=h.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=h.edgeSource.eval(d)+"-"+h.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,f,g=I.register_highlight_paths_group(a||"highlight-paths-group"),h={pathList:J(e,!1),timeRange:J(null,!1),elementList:J(e,!1),elementType:J(null,!1),nodeKey:J(null,!1),edgeSource:J(null,!1),edgeTarget:J(null,!1),clear:function(){g.paths_changed({},{},[])},data:function(a){var e,i={},j={},k=[];h.pathList.eval(a).forEach(function(a){if(a._range=h.timeRange.eval(a)){if(e===!1)throw new Error("can't have a mix of ranged and non-ranged paths");e=!0}else{if(e===!0)throw new Error("can't have a mix of ranged and non-ranged paths");e=!1,b(a,i,j)}k.push(a)}),e?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),f&&this.setTime(f)):(c=null,d=null,g.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],e={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,e,h)}),g.paths_changed(e,h,c)}f=a}};return h},I.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=I.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:J("Nothing here"),zero_text:J("No paths"),error_text:J(null),queried:J(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},I.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return I.node_name(Math.floor(a/52))+I.node_name(a%52);throw new Error("no, that's too large")},I.node_object=function(a,b){return b=b||{},_.extend({id:a,name:I.node_name(a)},b)},I.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},I.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;gb&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},I.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},I.d3=a,I.crossfilter=b,I.dc=c,I}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); +!function(){function a(a,b,c){"use strict";function d(a){return a.orig}function e(a){return a}function f(a,b){var c=K(b),d=function(){return arguments.length?(console.warn(a),c.apply(K,arguments),this):c()};return["cascade","_eval","eval","react"].forEach(function(a){d[a]=c[a]}),d}function g(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(a){var b=16*Math.random()|0,c="x"==a?b:3&b|8;return c.toString(16)})}function h(a,b,c){function d(a,b){return function(c,d){return a(c)?b(c):d()}}var e={};for(var f in c)/^node/.test(f)?a&&(e[f]=d(a,j(c[f]))):/^edge/.test(f)?b&&(e[f]=d(b,j(c[f]))):console.error('only know how to deal with properties that start with "node" or "edge"');return e}function i(a,b){return function(){return a(b.apply(null,arguments))}}function j(a){return J.functor_wrap(a,d)}function k(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b}function l(a,b,c){for(var d=["M",a[0].x,",",a[0].y],e=b,f=!1,g=1;g=c){if(!o(c,i,a))return!1}else if(!o(a,i,c))return!1;if(b>=d){if(!o(d,j,b))return!1}else if(!o(b,j,d))return!1;if(e>=g){if(!o(g,i,e))return!1}else if(!o(e,i,g))return!1;if(f>=h){if(!o(h,j,f))return!1}else if(!o(f,j,h))return!1;return{x:i,y:j}}function q(a,b,c,d,e){for(var f=0;f=0)throw new Error("f(a) must be less than 0");if(a(c).val<=0)throw new Error("f(b) must be greater than 0");for(;;){if(!--d)throw new Error("patience ran out");var e=(b+c)/2,f=a(e),g=f.val;if(Math.abs(g)<.5)return f;g>0?c=e:b=e}}function B(a,b,c,d,e,f,g,h,i,j,k,l){var m,n,o,p,q,s;if(h){var t,u,v=function(b,c){return r(a,b,1e3*Math.cos(c),1e3*Math.sin(c))},w=function(a,b,c){return function(d){var e=v(a,d);return e?{port:e,val:Math.hypot(e.x-b.x,e.y-b.y)-c,ang:d}:{port:{x:0,y:0},val:0,ang:d}}},x=Math.atan2(h.sourcePort.y,h.sourcePort.x),y=Math.atan2(h.targetPort.y,h.targetPort.x);try{t=A(w(b,h.sourcePort,j),x,x+2*i*j/k)}catch(a){t={ang:x,port:h.sourcePort}}try{u=A(w(c,h.targetPort,j),y,y-2*i*j/k)}catch(a){u={ang:y,port:h.targetPort}}o=t.port,p=u.port;var z=Math.hypot(o.x,o.y),B=Math.hypot(p.x,p.y),C=z+k/2,D=B+l/2,E=d+C*Math.cos(t.ang),F=e+C*Math.sin(t.ang),G=f+D*Math.cos(u.ang),H=g+D*Math.sin(u.ang);q=[{x:d+o.x,y:e+o.y},{x:E,y:F},{x:G,y:H},{x:f+p.x,y:g+p.y}],s=3}else m=f-d,n=g-e,o=r(a,b,m,n),p=r(a,c,-m,-n),o||(o={x:0,y:0}),p||(p={x:0,y:0}),q=[{x:d+o.x,y:e+o.y},{x:f+p.x,y:g+p.y}],s=1;return{sourcePort:o,targetPort:p,points:q,bezDegree:s}}function C(a,b){for(var c=[],d=1;da)return g.splice(c,0,{n:a,f:b}),h}return g.push({n:a,f:b}),h},h._eval=function(a,c){if(0!==c&&g.length){var d=g[c-1];return d.f(a,function(){return h._eval(a,c-1)})}return J.functor_wrap(h(),b)(a)},h.eval=function(a){return h._eval(a,g.length)},h.react=function(a){return arguments.length?(f=a,this):f},h};J.functor_wrap=function(a,b){return"function"==typeof a?b?function(c){return a(b(c))}:a:function(){return a}};var L={1:"L",2:"Q",3:"C"};Math.hypot=Math.hypot||function(){for(var a=0,b=arguments.length,c=0;c0)for(var d in c)if(c[d].src&&c[d].src.match(new RegExp(b+"$"))){a=c[d].src.replace(new RegExp("(.*)"+b+"$"),"$1");break}}return a}}();J.depth_first_traversal=function(a){return function(b,c){function d(b,c){var e=a.nodeid(b);return j[e]?void(a.skip&&a.skip(b,f[e])):(i[c]||(i[c]=[]),a.place&&a.place(b,c,i[c]),i[c].push(b),j[e]=!0,g[e]&&g[e].forEach(function(b,f){var i=h[a.targetid(b)];f&&a.sib&&a.sib(!1,h[a.targetid(g[e][f-1])],i),a.push&&a.push(),d(i,c+1)}),void(a.pop&&a.pop(b)))}a.init&&a.init(),a.tree&&(c=c.filter(function(b){return a.tree(b)}));var e,f={},g=c.reduce(function(b,c){var d=a.sourceid(c),e=a.targetid(c);return b[d]||(b[d]=[]),b[d].push(c),f[e]=(f[e]||0)+1,b},{}),h=b.reduce(function(b,c){var d=a.nodeid(c);return b[d]=c,b},{}),i=[],j={};a.root?e=b.filter(function(b){return a.root(b)}):(e=b.filter(function(b){return!f[a.nodeid(b)]}),b.length&&!e.length&&(e=[b[0]])),e.forEach(function(b,c){c&&a.sib&&a.sib(!0,e[c-1],b),a.push&&a.push(),d(b,a.row&&a.row(b)||0)}),a.finish(i)}};var N=1e-7,O={ellipse:function(){return{shape:"ellipse"}},egg:function(){return{shape:"polygon",sides:100,distortion:-.25}},triangle:function(){return{shape:"polygon",sides:3}},rectangle:function(){return{shape:"polygon",sides:4}},diamond:function(){return{shape:"polygon",sides:4,rotation:45}},trapezium:function(){return{shape:"polygon",sides:4,distortion:-.5}},parallelogram:function(){return{shape:"polygon",sides:4,skew:.5}},pentagon:function(){return{shape:"polygon",sides:5}},hexagon:function(){return{shape:"polygon",sides:6}},septagon:function(){return{shape:"polygon",sides:7}},octagon:function(){return{shape:"polygon",sides:8}},invtriangle:function(){return{shape:"polygon",sides:3,rotation:180}},invtrapezium:function(){return{shape:"polygon",sides:4,distortion:.5}},square:function(){return{shape:"polygon",sides:4}},polygon:function(a){return{shape:"polygon",sides:a.sides,skew:a.skew,distortion:a.distortion,rotation:a.rotation}}};J.available_shapes=function(){var a=Object.keys(O);return a.slice(0,a.length-1)};var P={shape:"ellipse"};J.diagram=function(g,h){function k(a){return function(b){ba.layoutEngine()||ba.layoutAlgorithm("cola",!0),console.warn('Warning: dc_graph.diagram."'+a+'"is deprecated. Call the corresponding method on the layout engine instead.');var c=ba.layoutEngine();return c.getEngine&&(c=c.getEngine()),c[a](b),this}}function n(){ba.layoutEngine()||ba.layoutAlgorithm("cola",!0),ba.layoutEngine().init({width:ba.width(),height:ba.height()})}function o(a){return!!a.source&&!!a.target}function p(){return"none"!==ba.stageTransitions()?ba.transitionDuration()/2:ba.transitionDuration()}function q(a){return"none"===ba.stageTransitions()||"modins"===ba.stageTransitions()==!a?0:ba.transitionDuration()/2}function r(b,c){c.attr("stroke",ba.edgeStroke.eval).attr("stroke-width",ba.edgeStrokeWidth.eval).attr("marker-end",function(a){var b=ba.edgeArrowhead.eval(a),c=R(a,"head",b);return c?"url(#"+c+")":null}).attr("marker-start",function(a){var b=ba.edgeArrowtail.eval(a),c=R(a,"tail",b);return b?"url(#"+c+")":null}).each(function(b){a.selectAll("#"+ba.arrowId(b,"head")+",#"+ba.arrowId(b,"tail")).attr("fill",ba.edgeStroke.eval(b))}),ba._updateNode(b)}function s(a){ma.end(a),sa=!1,va&&(va=!1,window.setTimeout(function(){ba.isRunning()||ba.redraw()},0))}function x(a,b,c,d,e,f){if(!a.ports[b]){var g=a.source.dcg_ry+ba.nodeStrokeWidth.eval(a.source)/2,h=a.target.dcg_ry+ba.nodeStrokeWidth.eval(a.target)/2;a.ports[b]=new Array(a.ports.n);for(var i=a.ports.rev[a.parallel],j=0;j2?j-2:0].path:null,n=B(ba,a.source,a.target,c,d,e,f,m,k,ba.parallelEdgeOffset(),g,h);a.ports.rev[j]!==i&&n.points.reverse();var o=(n.points[0],n.points[n.points.length-1]),p=E(n.points,.75);a.ports[b][j]={path:n,orient:Math.atan2(o.y-p.y,o.x-p.x)+"rad"}}}return a.ports[b][a.parallel].path}function y(a){x(a,"old",a.source.prevX||a.source.cola.x,a.source.prevY||a.source.cola.y,a.target.prevX||a.target.cola.x,a.target.prevY||a.target.cola.y)}function A(a){var b=x(a,"new",a.source.cola.x,a.source.cola.y,a.target.cola.x,a.target.cola.y),c=b.points[0],d=b.points[b.points.length-1];a.length=Math.hypot(d.x-c.x,d.y-c.y)}function C(a){return function(b){var c=b.ports[a][b.parallel].path;return l(c.points,c.bezDegree)}}function D(a){return function(b){var c=b.ports[a][b.parallel].path,d=b.target.cola.x=0){var k=e/d,l=c/b,m=l2)throw new Error("align_ expecting 0-2 sides, not "+n.length);var o=T();i=ea.translate(),j=ea.scale(),n.forEach(function(a){switch(a){case"l":i[0]=U(i,o.left);break;case"t":i[1]=V(i,o.top);break;case"r":i[0]=W(i,o.right);break;case"b":i[1]=X(i,o.bottom);break;default:throw new Error("align_ expecting l t r or b, not '"+a+"'")}})}else if("function"==typeof h){var p=h(b,c,d,e);f=p.pAR,i=p.translate,j=p.scale,a=p.viewBox}else{if("string"!=typeof h)throw new Error("unknown fitStrategy type "+typeof h);f=ba.fitStrategy()}void 0!==f&&(a||(a=[wa.left,wa.top,b,c].join(" ")),ha.attr({viewBox:a,preserveAspectRatio:f})),ea.translate(i).scale(j).event(ha),ma.zoomed(i,j)}}function Q(b,c,d,e,f,g,h,i,j,k){console.assert(d.data().every(o));var l={};c.each(function(a){l[ba.nodeKey.eval(a)]=!0}).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"});var m=b.transition().duration(p()).delay(function(a){return q(l[ba.nodeKey.eval(a)])}).attr("opacity",ba.nodeOpacity.eval).attr("transform",function(a){return"translate("+a.cola.x+","+a.cola.y+")"}).each("end.record",function(a){a.prevX=a.cola.x,a.prevY=a.cola.y});d.each(function(a){a.ports.new=null,a.ports.old=null});var n={};e.each(function(a){n[ba.edgeKey.eval(a)]=!0}).each(function(b){var c;"modins"===ba.stageTransitions()?(A(b),c="new"):(y(b),c="old"),ba.edgeArrowhead.eval(b)&&a.select("#"+ba.arrowId(b,"head")).attr("orient",function(){return b.ports[c][b.parallel].orient})}).attr("d",C("modins"===ba.stageTransitions()?"new":"old"));var r=d.each(A).each(function(b){ba.edgeArrowhead.eval(b)&&a.select("#"+ba.arrowId(b,"head")).transition().duration(p()).delay(q(!1)).attr("orient",function(){return b.ports.new[b.parallel].orient})}).transition().duration(p()).delay(function(a){return q(n[ba.edgeKey.eval(a)])}).attr("opacity",ba.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ba.stageTransitions()&&n[ba.edgeKey.eval(a)]?"old":"new";return C(b)(a)});k.attr("d",D("modins"===ba.stageTransitions()?"new":"old"));var t=j.transition().duration(p()).delay(function(a){return q(n[ba.edgeKey.eval(a)])}).attr("opacity",ba.edgeOpacity.eval).attr("d",function(a){var b="insmod"===ba.stageTransitions()&&n[ba.edgeKey.eval(a)]?"old":"new";return D(b)(a)});"insmod"===ba.stageTransitions()&&(p()>=50?(r=r.transition().duration(p()).attr("d",C("new")),t=t.transition().duration(p()).attr("d",D("new"))):(r.attr("d",C("new")),t.attr("d",C("new")))),ba.showLayoutSteps()||F([m,r,t],function(){s(!0)}),f.attr("d",C("new"))}function R(a,b,c){var d=ba.arrowId(a,b),e=ba.addOrRemoveDef(d,!!c,"svg:marker");return c&&e.attr("viewBox","0 -5 10 10").attr("refX",ra[c].refX).attr("refY",ra[c].refY).attr("markerUnits","userSpaceOnUse").attr("markerWidth",ra[c].width*ba.edgeArrowSize.eval(a)).attr("markerHeight",ra[c].height*ba.edgeArrowSize.eval(a)).attr("stroke",ba.edgeStroke.eval(a)).attr("fill",ba.edgeStroke.eval(a)).call(ra[c].drawFunction),c?d:null}function S(a,b){ta=a,ua=b,ja.attr("transform","translate("+a+") scale("+b+")")}function T(){return{left:wa.left-ba.margins().left,top:wa.top-ba.margins().top,right:wa.right+ba.margins().right,bottom:wa.bottom+ba.margins().bottom}}function U(a,b){return a[0]-ba.x()(b)+ba.x().range()[0]}function V(a,b){return a[1]-ba.y()(b)+ba.y().range()[0]}function W(a,b){return a[0]-ba.x()(b)+ba.x().range()[1]}function X(a,b){return a[1]-ba.y()(b)+ba.y().range()[1]}function Y(){var b=a.event.translate;if(ba.restrictPan()){var c,d=ba.x().domain(),e=ba.y().domain(),f=T(),g=f.leftba.timeLimit())&&(console.log("cancelled"),ba.layoutEngine().stop())}).on("end",function(a,b){ba.showLayoutSteps()?s(!0):(ba.initialOnly()||c(a,b),Q(C,D,u,v,w,x,y,z,A,B));var d;switch(ba.autoZoom()){case"always":d=!0;break;case"once":d=!0,ba.autoZoom(null);break;default:d=!1}N(C,u),d&&O()}).on("start",function(){console.log("algo "+ba.layoutEngine().layoutAlgorithm()+" started."),ma.start()}),ba.initialOnly()?ba.layoutEngine().dispatch().end(g,h):(ma.start(),ba.layoutEngine().data(g.map(function(a){return a.cola}),I.map(function(a){return a.cola}),H,{groupConnected:ba.groupConnected()}),ba.layoutEngine().start({initialUnconstrainedIterations:10,initialUserConstraintIterations:20,initialAllConstraintsIterations:20})),this},ba.refresh=function(b,c,d,e,f){b=b||ka.selectAll(".node"),c=c||la.selectAll(".edge"),r(b,c),d=d||la.selectAll(".edge-hover"),e=e||la.selectAll(".edge-label"),f=f||ia.selectAll("path.edge-label-path");var g=a.select(null);Q(b,g,c,g,d,g,e,g,f,g)};var wa;return ba.render=function(){return ba.initLayoutOnRedraw()||n(),ba.resetSvg(),ja=ha.append("g").attr("class","draw"),la=ja.append("g").attr("class","edge-layer"),ka=ja.append("g").attr("class","node-layer"),ba.legend()&&ba.legend().render(),ba.redraw()},ba.on=function(a,b){return ma.on(a,b),this},ba.getStats=function(){return pa},ba.select=function(a){return ba.root().select(a)},ba.selectAll=function(a){return ba.root()?ba.root().selectAll(a):null},ba.x=K(null),ba.y=K(null),ba.svg=function(a){return arguments.length?(ha=a,ba):ha},ba.g=function(a){return arguments.length?(ja=a,ba):ja},ba.resetSvg=function(){return ba.select("svg").remove(),aa()},ba.redrawGroup=function(){c.redrawAll(h)},ba.renderGroup=function(){c.renderAll(h)},ba.defineArrow=function(a,b,c,d,e,f){return ra[a]={name:a,width:b,height:c,refX:d,refY:e,drawFunction:f},ba},ba.addOrRemoveDef=function(a,b,c){var d=b?[0]:[],e=ia.selectAll("#"+a).data(d),f=e.enter().append(c).attr("id",a);return e.exit().remove(),f},ba.invertCoord=function(a){return[ba.x().invert(a[0]),ba.y().invert(a[1])]},ba.defineArrow("vee",12,12,10,0,function(a){a.append("svg:path").attr("d","M0,-5 L10,0 L0,5 L3,0").attr("stroke-width","0px")}),ba.defineArrow("dot",7,7,0,0,function(a){a.append("svg:circle").attr("r",5).attr("cx",5).attr("cy",0).attr("stroke-width","0px")}),ba.anchor=function(b,d){if(!arguments.length)return fa;if(!b)throw new c.errors.BadArgumentException("parent must be defined");return fa=b.select&&b.classed?b.node():b,ba.root(a.select(fa)),ba.root().classed(J.constants.CHART_CLASS,!0),c.registerChart(ba,d),ga=d,ba},ba.chartID=function(){return ba.__dcFlag__},ba.anchorName=function(){var a=ba.anchor();return a&&a.id?a.id:a&&a.replace?a.replace("#",""):"dc-graph"+ba.chartID()},ba.anchor(g,h)},J.spawn_engine=function(a,b,c){var d,e,f=!0;switch(a){case"dagre":d=J.dagre_layout(),e=["rankdir"];break;case"tree":d=J.tree_layout(),e=[],f=!1;break;case"cola":default:d=J.cola_layout(), +e=["lengthStrategy"]}return e.forEach(function(a){b[a]&&d[a](b[a])}),f&&"false"!==c&&(d=J.webworker_layout(d)),d};var Q={};J.webworker_layout=function(b){var c=a.dispatch("init","start","tick","end"),d=F(b.layoutAlgorithm()),e={};d.layouts[b.layoutId()]=e,e.parent=function(a){b.parent&&b.parent(a)},e.init=function(a){return a=b.optionNames().reduce(function(a,c){return a[c]=b[c](),a},a),d.worker.postMessage({command:"init",args:{layoutId:b.layoutId(),options:a}}),this},e.data=function(a,c,e,f){d.worker.postMessage({command:"data",args:{layoutId:b.layoutId(),nodes:a,edges:c,constraints:e,options:f}})},e.start=function(a){d.worker.postMessage({command:"start",args:{layoutId:b.layoutId(),options:a}})},e.stop=function(){return d.worker.postMessage({command:"stop",args:{layoutId:b.layoutId()}}),this},e.getEngine=function(){return b};var f=["layoutAlgorithm","populateLayoutNode","populateLayoutEdge","rankdir","ranksep"];return f.forEach(function(a){e[a]=function(){var c=b[a].apply(b,arguments);return arguments.length?this:c}}),e.on=function(a,b){return c.on(a,b),this},e.dispatch=function(){return c},e},J.graphviz_attrs=function(){return{rankdir:K("TB"),ranksep:K(40)}},J.cola_layout=function(b){function c(a){switch(j=cola.d3adaptor().avoidOverlaps(!0).size([a.width,a.height]).handleDisconnected(a.handleDisconnected),j.tickSize&&j.tickSize(a.tickSize),a.lengthStrategy){case"symmetric":j.symmetricDiffLinkLengths(a.baseLength);break;case"jaccard":j.jaccardLinkLengths(a.baseLength);break;case"individual":j.linkDistance(function(b){return b.dcg_edgeLength||a.baseLength});break;case"none":}a.flowLayout&&j.flowLayout(a.flowLayout.axis,a.flowLayout.minSeparation)}function d(a,b,c,d){function e(a){k[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(l,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height,a.fixed=!!b.dcg_nodeFixed,a.fixed&&"object"==typeof b.dcg_nodeFixed?(a.x=b.dcg_nodeFixed.x,a.y=b.dcg_nodeFixed.y):(void 0!==b.x&&(a.x=b.x),void 0!==b.y&&(a.y=b.y))}),g=m(n,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.source=l[b.dcg_edgeSource],a.target=l[b.dcg_edgeTarget],a.dcg_edgeLength=b.dcg_edgeLength});f.forEach(function(a,b){a.index=b});var h=null;if(d.groupConnected){var i=cola.separateGraphs(f,g);h=i.map(function(a){return{leaves:a.array.map(function(a){return a.index})}})}j.on("tick",function(){e("tick")}).on("start",function(){k.start()}).on("end",function(){e("end")}),j.nodes(f).links(g).constraints(c).groups(h)}function e(a){j.start(a.initialUnconstrainedIterations,a.initialUserConstraintIterations,a.initialAllConstraintsIterations,a.gridSnapIterations)}function f(){j.stop()}var h,i=b||g(),j=null,k=a.dispatch("tick","start","end"),l={},n={},o=J.graphviz_attrs(),p=Object.keys(o);o.rankdir(null);var q=Object.assign(o,{layoutAlgorithm:function(){return"cola"},layoutId:function(){return i},parent:K(null),on:function(a,b){return k.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return["handleDisconnected","lengthStrategy","baseLength","flowLayout","tickSize"].concat(p)},populateLayoutNode:function(){},populateLayoutEdge:function(){},handleDisconnected:K(!0),lengthStrategy:K("symmetric"),baseLength:K(30),flowLayout:function(a){if(!arguments.length){if(h)return h;var b=q.rankdir();if(!b)return null;var c="LR"===b||"RL"===b?"x":"y";return{axis:c,minSeparation:q.ranksep()+2*q.parent().nodeRadius()}}return h=a,this},tickSize:K(1)});return q},J.cola_layout.scripts=["d3.js","cola.js"],J.dagre_layout=function(b){function c(a){k=new dagre.graphlib.Graph({multigraph:!0}),k.setGraph({rankdir:a.rankdir}),k.setDefaultEdgeLabel(function(){return{}})}function d(a,b,c,d){function e(a){l[a](f,g.map(function(a){return{dcg_edgeKey:a.dcg_edgeKey}}))}var f=m(n,a,function(a){return a.dcg_nodeKey},function(a,b){a.dcg_nodeKey=b.dcg_nodeKey,a.width=b.width,a.height=b.height},function(a,b){k.setNode(a,b)},function(a){k.removeNode(a)}),g=m(o,b,function(a){return a.dcg_edgeKey},function(a,b){a.dcg_edgeKey=b.dcg_edgeKey,a.dcg_edgeSource=b.dcg_edgeSource,a.dcg_edgeTarget=b.dcg_edgeTarget},function(a,b,c){k.setEdge(c.dcg_edgeSource,c.dcg_edgeTarget,b)},function(a,b){k.removeEdge(b.dcg_edgeSource,b.dcg_edgeTarget,b.dcg_edgeKey)});h=function(){e("tick")},i=function(){e("end")}}function e(a){l.start(),dagre.layout(k),i()}function f(){}var h,i,j=b||g(),k=null,l=a.dispatch("tick","start","end"),n={},o={},p=J.graphviz_attrs(),q=Object.keys(p);return Object.assign(p,{layoutAlgorithm:function(){return"dagre"},layoutId:function(){return j},on:function(a,b){return l.on(a,b),this},init:function(a){return this.optionNames().forEach(function(b){a[b]=a[b]||this[b]()}.bind(this)),c(a),this},data:function(a,b,c,e){d(a,b,c,e)},start:function(a){e(a)},stop:function(){f()},optionNames:function(){return q},populateLayoutNode:function(){},populateLayoutEdge:function(){}})},J.dagre_layout.scripts=["d3.js","dagre.js"],J.tree_layout=function(b){function c(b){function c(a,b){return(e(a)+e(b))/2}var d,e=a.functor(b.nodeWidth);h=J.depth_first_traversal({nodeid:function(a){return a.dcg_nodeKey},sourceid:function(a){return a.dcg_edgeSource},targetid:function(a){return a.dcg_edgeTarget},init:function(){d=b.offsetX},row:function(a){return a.dcg_rank},place:function(a,c,f){if(f.length){var g=f[f.length-1],h=(e(g)+e(a))/2;d=Math.max(d,g.left_x+h)}a.left_x=d,a.hit_ins=1,a.y=c*b.gapY+b.offsetY},sib:function(a,b,e){var f=c(b,e);a&&(f*=1.5),d+=f},pop:function(a){a.x=(a.left_x+d)/2},skip:function(a,b){a.x=(a.hit_ins*a.x+d)/++a.hit_ins,a.hit_ins===b&&delete a.hit_ins},finish:function(a){a.forEach(function(a){for(var b,d=a.sort(function(a,b){return a.x-b.x}),e=null,f=null,g=0;g0&&--e;var j,k;if(g0&&--d;var j,k;if(f"+a+""}).direction(f.direction()),f.parent().svg().call(g)),d.on("mouseover.tip",b("content")).on("mouseout.tip",c),e.on("mouseover.tip",b("content")).on("mouseout.tip",c)}var e,f={},g=null;return f.parent=K(null).react(function(a){a?a.on("drawn.tip",function(a,b,c){d(a,c)}):f.parent()&&f.parent().on("drawn.tip",null)}),f.direction=K("n"),f.content=K(function(a,b){b(f.parent()?f.parent().nodeTitle.eval(a):"")}),f.delay=K(0),f},J.tip.table=function(){var b=function(c,d){c=c.orig.value;var e=Object.keys(c).filter(a.functor(b.filter())).filter(function(a){return c[a]}),f=a.select(document.createElement("table")),g=f.selectAll("tr").data(e),h=g.enter().append("tr");h.append("td").text(function(a){return a}),h.append("td").text(function(a){return c[a]}),d(f.node().outerHTML)};return b.filter=K(!0),b},J.edit_text=function(a,b,c){var d=c.position||{x:0,y:0};H(a.node(),d,c)},J.select_nodes=function(b){function c(a){return a.shiftKey}function d(a){return u?a.metaKey:a.ctrlKey}function e(a,b){return a.indexOf(b)>=0?a:a.concat([b])}function f(a,b){return a.indexOf(b)>=0?a.filter(function(a){return a!=b}):a.concat([b])}function g(a){return function(b){t=b,a.refresh()}}function i(a,b){a.svg().on("click.select-nodes",b?function(a){s.node_set_changed([])}:null)}function j(){c(a.event.sourceEvent)||d(a.event.sourceEvent)?p=t.slice():(p=[],s.node_set_changed([]))}function k(){var b,g=q.extent(),h=v.parent().selectAll("g.node").data().filter(function(a){return a&&g[0][0]=0}:function(a){return t.indexOf(a.orig.key)>=0};g.cascade(50,!0,h(l,null,b)),j.on("click.select-nodes",function(b){var h,i=g.nodeKey.eval(b);c(a.event)?h=e(t,i):d(a.event)?h=f(t,i):(1===t.length&&t[0]===i&&v.secondClickEvent()&&v.secondClickEvent()(a.select(this)),h=[i]),s.node_set_changed(h),a.event.stopPropagation()}),v.multipleSelect()?m(g):i(g,v.clickBackgroundClears());var n=j.data().map(function(a){return a.orig.key}),o=t.filter(function(a){return n.indexOf(a)>=0});t.length!==o.length&&s.node_set_changed(o)}function o(a,c,d){c.on("click.select-nodes",null),a.svg().on("click.select-nodes",null),a.cascade(50,!1,b)}var p,q,r,s=J.select_nodes_group("select-nodes-group"),t=[],u=navigator.platform.toUpperCase().indexOf("MAC")!==-1,v=J.behavior("select-nodes",{add_behavior:n,remove_behavior:o,parent:function(a){s.on("node_set_changed.select-nodes",a?g(a):null)}});return v.multipleSelect=K(!0),v.clickBackgroundClears=K(!0,!1).react(function(a){!v.multipleSelect()&&v.parent()&&i(v.parent(),a)}),v.secondClickEvent=K(null),v.noneIsAll=K(!1),v},J.select_nodes_group=function(b){return window.chart_registry.create_type("select-nodes",function(){return a.dispatch("node_set_changed")}),window.chart_registry.create_group("select-nodes",b)},J.filter_selection=function(){function b(b){return function(c){if(c.length){var d=a.set(c);b.nodeDimension().filterFunction(function(a){return d.has(a)})}else b.nodeDimension().filter(null);b.redrawGroup()}}var c=J.select_nodes_group("select-nodes-group"),d={parent:K(null).react(function(a){c.on("node_set_changed.filter-selection",a?b(a):null)})};return d},J.label_nodes=function(b){function c(a){return function(a){k=a,k.length&&g.node().focus()}}function d(a){return function(b,c){J.edit_text(a.svg(),b,{text:c.text||a.nodeLabel.eval(b.datum()),position:{x:b.datum().cola.x,y:b.datum().cola.y},selectText:c.selectText,accept:function(c){var d=b.datum();d.orig.value[h]=c,a.redraw()}})}}function e(b,c,d){g=b.svg().selectAll("a#label-nodes-input").data([1]),g.enter().append("a").attr({id:"label-nodes-input",href:"#"}),g.on("keyup.label-nodes",function(){if(k.length){if(1!==a.event.key.length)return;var d=c.filter(function(a){return b.nodeKey.eval(a)===k[0]});if(d.empty())return void console.error("couldn't find node '"+k[0]+"'!");if(d.size()>1)return void console.error("found too many nodes for '"+k[0]+"' ("+d.size()+")!");j.edit_node_label(d,{text:a.event.key,selectText:!1})}})}function f(a,b,c){a.root().select("a#label-nodes-input").remove()}if(!b.nodeCrossfilter)throw new Error("need nodeCrossfilter");var g,h=(b.idTag||"id",b.labelTag||"label"),i=J.select_nodes_group("select-nodes-group"),j=J.label_nodes_group("label-nodes-group"),k=[],l=J.behavior("label-nodes",{add_behavior:e,remove_behavior:f,parent:function(a){i.on("node_set_changed.label-nodes",a?c(a):null),j.on("edit_node_label.label-nodes",a?d(a):null)}});return l},J.label_nodes_group=function(b){return window.chart_registry.create_type("label-nodes",function(){return a.dispatch("edit_node_label")}),window.chart_registry.create_group("label-nodes",b)},J.highlight_neighbors=function(a){function b(a){a.each(function(a){a.dcg_highlighted=!1})}function c(c,d,e){c.cascade(100,!0,h(null,function(a){return a.dcg_highlighted},a)),d.on("mouseover.highlight-neighbors",function(a){e.each(function(b){b.dcg_highlighted=b.source===a||b.target===a}),c.refresh(d,e)}).on("mouseout.highlight-neighbors",function(a){b(e),c.refresh(d,e)})}function d(c,d,e){d.on("mouseover.highlight-neighbors",null).on("mouseout.highlight-neighbors",null),b(e),c.cascade(100,!1,a)}return J.behavior("highlight-neighbors",{add_behavior:c,remove_behavior:function(a,b,c){d(a,b,c)}})},J.register_highlight_paths_group=function(b){return window.chart_registry.create_type("highlight-paths",function(){return a.dispatch("paths_changed","hover_changed","select_changed")}),window.chart_registry.create_group("highlight-paths",b)},J.highlight_paths=function(a,b,c,d){function e(){v.doRedraw()?v.parent().relayout().redraw():v.parent().refresh()}function f(a,b){r=a,s=b,t=u=null,e()}function g(a){a!==u&&(u=a,e())}function i(a){a!==t&&(t=a,e())}function j(){r={},s={}}function k(a){return function(b){return a.indexOf(b)>=0}}function l(a){var b=k(a);return function(a){return!b(a)}}function m(a,b){return!(!a||!b)&&a.some(k(b))}function n(a,b){return a?b?b.every(k(a))?a.filter(l(b)):a.concat(b.filter(l(a))):a:b}function o(d,e,f,g){d.cascade(200,!0,h(function(a){return!!r[d.nodeKey.eval(a)]},function(a){return!!s[d.edgeKey.eval(a)]},a)).cascade(300,!0,h(function(a){return m(r[d.nodeKey.eval(a)],t)},function(a){return m(s[d.edgeKey.eval(a)],t)},c)).cascade(400,!0,h(function(a){return m(r[d.nodeKey.eval(a)],u)},function(a){return m(s[d.edgeKey.eval(a)],u)},b)),e.on("mouseover.highlight-paths",function(a){q.hover_changed(r[d.nodeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,r[d.nodeKey.eval(a)]))}),g.on("mouseover.highlight-paths",function(a){q.hover_changed(s[d.edgeKey.eval(a)]||null)}).on("mouseout.highlight-paths",function(a){q.hover_changed(null)}).on("click.highlight-paths",function(a){q.select_changed(n(t,s[d.nodeKey.eval(a)]))})}function p(d,e,f,g){e.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),g.on("mouseover.highlight-paths",null).on("mouseout.highlight-paths",null).on("click.highlight-paths",null),j(),d.cascade(200,!1,a).cascade(300,!1,c).cascade(400,!1,b)}var q=J.register_highlight_paths_group(d||"highlight-paths-group");a=a||{},b=b||{},c=c||{};var r={},s={},t=null,u=null,v=J.behavior("highlight-paths",{add_behavior:o,remove_behavior:function(a,b,c,d){return p(a,b,c,d),this},parent:function(a){var b=a.anchorName();q.on("paths_changed."+b,a?f:null),q.on("hover_changed."+b,a?g:null),q.on("select_changed."+b,a?i:null)}});return v.doRedraw=K(!1),v},J.expand_collapse=function(b,c,d,e){function f(a){var b=a.addOrRemoveDef("spike-gradient",!0,"linearGradient");b.attr({x1:"0%",y1:"0%",x2:"100%",y2:"0%",spreadMethod:"pad"}),b.selectAll("stop").data([[0,"black",1],[100,"black","0"]]).enter().append("stop").attr({offset:function(a){return a[0]+"%"},"stop-color":function(a){return a[1]},"stop-opacity":function(a){return a[2]}})}function g(a,b,c,d){var e;switch(c){case"out":e=function(b){return a.edgeSource.eval(b)===d};break;case"in":e=function(b){return a.edgeTarget.eval(b)===d};break;case"both":e=function(b){return a.edgeSource.eval(b)===d||a.edgeTarget.eval(b)===d}}return b.filter(e).size()}function h(a,b,c){if("both"===b)return function(a){return Math.PI*(2*a/c-.5)};var d,e=(c-1)*Math.PI/c;switch(a){case"LR":d=0;break;case"TB":d=Math.PI/2;break;case"RL":d=Math.PI;break;case"BT":d=-Math.PI/2}return"in"===b&&(d+=Math.PI),function(a){return d+e*(-.5+(c>1?a/(c-1):0))}}function i(a,b,c){var d=b.selectAll("g.spikes").data(function(a){return!a.dcg_expand_selected||a.dcg_expanded&&a.dcg_expanded[a.dcg_expand_selected.dir]?[]:[a]});d.exit().remove(),d.enter().insert("g",":first-child").classed("spikes",!0);var e=d.selectAll("rect.spike").data(function(b){for(var c=(a.nodeKey.eval(b),b.dcg_expand_selected.dir),d=b.dcg_expand_selected.n,e=h(a.layoutEngine().rankdir(),c,d),f=Array(d),g=0;gd.cola.y?"out":"in";case"BT":return hd.cola.x?"out":"in";case"RL":return g2)throw new Error("there are only two directions to expand in");return J.behavior("expand-collapse",{add_behavior:m,first:f,remove_behavior:n})},J.draw_graphs=function(b){function c(b){var c=b.root().node().getBoundingClientRect();return b.invertCoord([a.event.clientX-c.left,a.event.clientY-c.top])}function d(){var a=u.filter(function(a){return a.source&&a.target}),b=t.selectAll("line.hint-edge").data(a);b.exit().remove(),b.enter().append("line").attr("class","hint-edge").style({fill:"none",stroke:"black","pointer-events":"none"}),b.attr({x1:function(a){return a.source.x},y1:function(a){return a.source.y},x2:function(a){return a.target.x},y2:function(a){return a.target.y}})}function e(){u=[],r=s=null,d()}function f(a,c){var d={};d[m]=g(),d[p]="",d[q]={x:c[0],y:c[1]},b.nodeCrossfilter.add([d]),a.redraw(),k.node_set_changed([d[m]])}function h(a,c,d){e();var f={};f[m]=g(),f[n]=c.orig.key,f[o]=d.orig.key,c.orig.value[q]=null,d.orig.value[q]=null,b.edgeCrossfilter.add([f]),a.redraw(),k.node_set_changed([])}function i(b,g,i,j){var k=b.child("select-nodes");k&&(k.clickBackgroundClears(!1),k.secondClickEvent(function(a){l.edit_node_label(a,{selectText:!0})})),g.on("mousedown.draw-graphs",function(b){a.event.stopPropagation(),r=b,u=[{source:{x:r.cola.x,y:r.cola.y}}]}).on("mousemove.draw-graphs",function(b){a.event.stopPropagation(),r&&(b===r?(s=null,u[0].target=null):b!==s&&(s=b,u[0].target={x:s.cola.x,y:s.cola.y}),d())}).on("mouseup.draw-graphs",function(c){a.event.stopPropagation(),r&&s?h(b,r,s):e()}),b.svg().on("mousedown.draw-graphs",function(){r=null}).on("mousemove.draw-graphs",function(){if(r){var a=c(b);s=null,u[0].target={x:a[0],y:a[1]},d()}}).on("mouseup.draw-graphs",function(){r?e():f(b,c(b))}),t||(t=b.g().append("g").attr("class","draw-graphs"))}function j(a,b,c,d){b.on("mousedown.draw-graphs",null).on("mousemove.draw-graphs",null).on("mouseup.draw-graphs",null),a.svg().on("mousedown.draw-graphs",null).on("mousemove.draw-graphs",null).on("mouseup.draw-graphs",null)}if(!b.nodeCrossfilter)throw new Error("need nodeCrossfilter");if(!b.edgeCrossfilter)throw new Error("need edgeCrossfilter");var k=J.select_nodes_group("select-nodes-group"),l=J.label_nodes_group("label-nodes-group"),m=b.idTag||"id",n=b.sourceTag||"source",o=b.targetTag||"target",p=b.labelTag||"label",q=b.fixedPosTag||"fixedPos",r=null,s=null,t=null,u=[],v=J.behavior("highlight-paths",{add_behavior:i,remove_behavior:j});return v.doRedraw=K(!1),v},J.load_graph=function(){function b(a){return a?a.replace(/\?.*/,""):null}var c,d,e;if(c=arguments[0],3===arguments.length)d=arguments[1],e=arguments[2];else{if(2!==arguments.length)throw new Error("need two or three arguments");e=arguments[1]}d?queue().defer(a.json,c).defer(a.json,d).await(function(a,b,c){a?e(a,null):e(null,{nodes:b.results,edges:c.results})}):/\.json$/.test(b(c))?a.json(c,e):/\.gv|\.dot$/.test(b(c))&&a.text(c,function(a,b){if(a)return void e(a,null);var c=graphlibDot.parse(b),d=c.nodes(),f=new Array(d.length);d.forEach(function(a,b){var e=f[b]=c._nodes[d[b]];e.id=b,e.name=a});var g=c.edges(),h=[];g.forEach(function(a){var b=c._edges[a];h.push({source:c._nodes[b.u].id,target:c._nodes[b.v].id,sourcename:b.u,targetname:b.v})});var i={nodes:f,links:h};e(null,i)})},J.munge_graph=function(a,b,c,d){function e(a,b){return b.filter(function(b){return!!a[b]})}var f,g,h=b||"name",i=c||"sourcename",j=d||"targetname";if(!I(a)){var k=["database","response"],l=k.findIndex(function(b){return a[b]&&I(a[b])});if(l<0)throw new Error("couldn't find the data!");a=a[k[l]]}g=a.edges||a.links,f=a.nodes||a.vertices;var m=g[0];if(void 0===m[i]){var n=c?[c]:["source_ecomp_uid","node1","source","tail"],o=d?[d]:["target_ecomp_uid","node2","target","head"],p=["edge"];if(m.node0&&m.node1)i="node0",j="node1";else{var q=e(m,n);if(!q.length){if(l=p.findIndex(function(a){return m[a]&&e(m[a],n).length}),l<0)throw c?new Error("sourceattr "+i+" didn't work"):new Error("didn't find any source attr");g=g.map(function(a){return a[p[l]]}),m=g[0],q=e(m,n)}if(q.length>1&&console.warn("found more than one possible source attr",q),i=q[0],q=e(m,o),!q.length)throw d&&!m[d]?new Error("targetattr "+j+" didn't work"):new Error("didn't find any target attr");q.length>1&&console.warn("found more than one possible target attr",q),j=q[0]}}var r=f[0];if(void 0===r[h]){var s=b?[b]:["ecomp_uid","id","_id"],t=["vertex"];if(q=e(r,s),!q.length){if(l=t.findIndex(function(a){return r[a]&&e(r[a],s).length}),l<0)throw b?new Error("nodekeyattr "+h+" didn't work"):new Error("couldn't find the node data");f=f.map(function(a){return a[t[l]]}),r=f[0],q=e(r,s)}q.length>1&&console.warn("found more than one possible node key attr",q),h=q[0]}return{nodes:f,edges:g,nodekeyattr:h,sourceattr:i,targetattr:j}},J.flat_group=function(){function a(a){return{all:function(){return a.all().filter(function(a){return null!==a.value})}}}function c(b,c){var e=b.dimension(c);return{crossfilter:b,dimension:e,group:a(e.group().reduce(d.add,d.remove,d.init))}}var d={add:function(a,b){return b},remove:function(){return null},init:function(){return null}};return{make:function(a,d){var e=b(a);return c(e,d)},another:function(a,b){return c(a,b)}}}();var R=function(a,b,d,e,f,h){if(f=f||0,b.length>(d.valuesByAttr?1:0)){var i=b.shift(),j=[],k=[],l=a.map(function(a){var c=a[d.nestKey],l=d.nestKeysUnique?c:g();if(l){var m;if(d.ancestorKeys?(h=h||{},i&&(h[i]=c),m=Object.assign({},h)):m={},m[d.nodeKey]=l,d.label&&d.labelFun&&(m[d.label]=d.labelFun(c,i,a)),d.level&&(m[d.level]=f+1),j.push(m),e){var n={};n[d.edgeSource]=e,n[d.edgeTarget]=l,k.push(n)}}var o=d.valuesByAttr?a[b[0]]:a.values,p=R(o,b.slice(0),d,l,f+1,Object.assign({},h));return p});return{nodes:Array.prototype.concat.apply(j,l.map(c.pluck("nodes"))),edges:Array.prototype.concat.apply(k,l.map(c.pluck("edges")))}}return{nodes:a.map(function(a){return a=Object.assign({},a),d.level&&(a[d.level]=f+1),a}),edges:a.map(function(a){var b={};return b[d.edgeSource]=e,b[d.edgeTarget]=a[d.nodeKey],b})}};return J.convert_tree=function(a,b,c){return c=Object.assign({nodeKey:"key",edgeKey:"key",edgeSource:"sourcename",edgeTarget:"targetname",nestKey:"key"},c),Array.isArray(a)?R(a,b,c,c.root,0,c.inherit):(b=[""].concat(b),R([a],b,c,c.root,0,c.inherit))},J.convert_nest=function(a,b,c,d,e,f,g){return J.convert_tree(a,b,{nodeKey:c,edgeSource:d,edgeTarget:e,root:f,inherit:g,ancestorKeys:!0,label:"name",labelFun:function(a,b,c){return b+":"+a},level:"_level"})},J.convert_adjacency_list=function(a,b,c){var d=Array.prototype.concat.apply([],a.map(function(a){return a[b.adjacencies].map(function(d){var e={};return c.edgeKey&&(e[c.edgeKey]=g()),e[c.edgeSource]=a[b.nodeKey],e[c.edgeTarget]=b.targetKey?d[b.targetKey]:d,c.adjacency&&(e[c.adjacency]=d),e})}));return{nodes:a,edges:d}},J.path_reader=function(a){function b(a,b,c){h.elementList.eval(a).forEach(function(d){var e,f;switch(h.elementType.eval(d)){case"node":e=h.nodeKey.eval(d),f=b[e]=b[e]||[];break;case"edge":e=h.edgeSource.eval(d)+"-"+h.edgeTarget.eval(d),f=c[e]=c[e]||[]}f.push(a)})}var c,d,f,g=J.register_highlight_paths_group(a||"highlight-paths-group"),h={pathList:K(e,!1),timeRange:K(null,!1),elementList:K(e,!1),elementType:K(null,!1),nodeKey:K(null,!1),edgeSource:K(null,!1),edgeTarget:K(null,!1),clear:function(){g.paths_changed({},{},[])},data:function(a){var e,i={},j={},k=[];h.pathList.eval(a).forEach(function(a){if(a._range=h.timeRange.eval(a)){if(e===!1)throw new Error("can't have a mix of ranged and non-ranged paths");e=!0}else{if(e===!0)throw new Error("can't have a mix of ranged and non-ranged paths");e=!1,b(a,i,j)}k.push(a)}),e?(c=k.map(function(a){var b=[a._range[0].getTime(),a._range[1].getTime()];return b.path=a,b}),d=lysenkoIntervalTree(c),f&&this.setTime(f)):(c=null,d=null,g.paths_changed(i,j,k))},getIntervals:function(){return c},setTime:function(a){if(a&&d){var c=[],e={},h={};d.queryPoint(a.getTime(),function(a){c.push(a.path),b(a.path,e,h)}),g.paths_changed(e,h,c)}f=a}};return h},J.path_selector=function(b,d,e,f){function g(a){return function(b){return!!a&&a.indexOf(b)>=0}}function h(a){var b=g(a);return function(a){return!b(a)}}function i(a,b){return a?b?b.every(g(a))?a.filter(h(b)):a.concat(b.filter(h(a))):a:b}function j(a){var b=n.selectAll("span.path-selector").data(a);b.enter().append("span").attr("class","path-selector").style({"border-width":"1px","border-style":"solid","border-color":"grey","border-radius":"4px",display:"inline-block",padding:"4px",cursor:"pointer",margin:"5px"}),b.exit().transition(1e3).attr("opacity",0).remove(),b.text(function(a,b){return"path "+(b+1)+" ("+d.elementList.eval(a).length+")"}).on("mouseover",function(a){m.hover_changed([a])}).on("mouseout",function(a){m.hover_changed(null)}).on("click",function(a){ +m.select_changed(i(q,[a]))});var c=n.selectAll("span.no-paths").data(0===a.length?[0]:[]);c.exit().remove(),c.enter().append("span").attr("class","no-paths"),c.classed("error",!!r.error_text()).text(r.error_text()||(r.queried()?r.zero_text():r.default_text()))}function k(){var a=g(p);n.selectAll("span.path-selector").style({"border-color":function(b,c){return a(b)?"#e41a1c":"grey"},"border-width":function(b,c){return(a(b)?2:1)+"px"},padding:function(b,c){return(a(b)?3:4)+"px"}})}function l(){var a=g(q);n.selectAll("span.path-selector").style({"background-color":function(b,c){return a(b)?"#1c1ae6":"white"},color:function(b,c){return a(b)?"white":"black"}})}var m=J.register_highlight_paths_group(e||"highlight-paths-group"),n=a.select(b),o=[],p=null,q=null;m.on("paths_changed.selector",function(a,b,c){p=q=null,o=c,r.redraw()}).on("hover_changed.selector",function(a){p=a,k()}).on("select_changed.selector",function(a){q=a,l()});var r={default_text:K("Nothing here"),zero_text:K("No paths"),error_text:K(null),queried:K(!1),redraw:function(){j(o),k(),l()},render:function(){return this.redraw(),this}};return c.registerChart(r,f),r},J.node_name=function(a){if(a<26)return String.fromCharCode(97+a);if(a<52)return String.fromCharCode(65+a-26);if(a<2704)return J.node_name(Math.floor(a/52))+J.node_name(a%52);throw new Error("no, that's too large")},J.node_object=function(a,b){return b=b||{},_.extend({id:a,name:J.node_name(a)},b)},J.edge_object=function(a,b,c,d){return d=d||{},_.extend({source:b,target:c,sourcename:a(b),targetname:a(c)},d)},J.generate=function(a,b,c,d){var e,f,g,h,i=c.nodePrefix||"",j=function(a){return e[a].name},k=b[0],l=c.linkLength||30;switch(a){case"clique":case"cliquestf":for(e=new Array(k),f=[],g=0;g0;){var g,h,i=Math.random();if(g=!d.length||ib&&g.length>0&&(h.push(g),g=""),g+=e,i=c.lastIndex;while(null!==d);return h.push(g),h}},J.build_type_graph=function(a,b,c,d,e,f){var g={},h={},i={};return a.forEach(function(a){g[c(a)]=a;var b=d(a);h[b]||(h[b]={type:b})}),b.forEach(function(a){var b,c,h=e(a),j=f(a);if(!(b=g[h]))throw new Error("source key "+h+" not found!");if(!(c=g[j]))throw new Error("target key "+j+" not found!");var k=d(b)+"/"+d(c);i[k]||(i[k]={type:k,source:d(b),target:d(c)})}),{nodes:Object.keys(h).map(function(a){return h[a]}),edges:Object.keys(i).map(function(a){return i[a]})}},J.d3=a,J.crossfilter=b,J.dc=c,J}if("function"==typeof define&&define.amd)define(["d3","crossfilter","dc"],a);else if("object"==typeof module&&module.exports){var b=require("d3"),c=require("crossfilter");"function"!=typeof c&&(c=c.crossfilter);var d=require("dc");module.exports=a(b,c,d)}else this.dc_graph=a(d3,crossfilter,dc)}(); //# sourceMappingURL=dc.graph.min.js.map \ No newline at end of file diff --git a/web/js/dc.graph.min.js.map b/web/js/dc.graph.min.js.map index 9fa8d683..09e430f3 100644 --- a/web/js/dc.graph.min.js.map +++ b/web/js/dc.graph.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","get_original","x","orig","identity","deprecated_property","message","defaultValue","prop","property","ret","arguments","length","console","warn","apply","this","forEach","method","uuid","replace","c","r","Math","random","v","toString","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","error","compose","f","g","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","create_worker","layoutAlgorithm","_workers","worker","Worker","script_path","layouts","onmessage","e","layoutId","data","dispatch","response","args","align_f","axis","type","listname","can_get_graph_from_this","nodes","vertices","edges","links","version","constants","CHART_CLASS","unwrap","undefined","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","place_tree","nodeid","placed","skip","indegree","rows","place","outmap","ei","nmap","targetid","sib","pop","init","tree","filter","roots","reduce","m","tail","sourceid","head","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","diagram","parent","chartGroup","deprecate_layout_algo_parameter","name","_chart","layoutEngine","engine","getEngine","initLayout","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","window","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","event","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","nodeKey","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","_xScale","range","_yScale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","generateSvg","append","_defs","mouseZoomable","linear","behavior","zoom","on","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","marginMixin","_nodeLayer","_edgeLayer","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","edgeSource","sourceAccessor","sourcename","edgeTarget","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","lengthStrategy","edgeLength","edgeDistanceAccessor","distance","flowLayout","rankdir","baseLength","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","skipWarning","cola_layout","dagre_layout","webworker_layout","tickSize","edgeId","textpathId","getNode","handleDisconnected","_enterNode","changedShape","remove","text","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","stop","quicksort","by","wnodes","v1","dcg_nodeFixed","populateLayoutNode","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","populateLayoutEdge","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","elapsed","do_zoom","start","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","svg","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","anchorName","chartID","_worker","options","optionNames","option","postMessage","command","passthroughs","graphviz_attrs","ranksep","_d3cola","d3adaptor","avoidOverlaps","symmetricDiffLinkLengths","jaccardLinkLengths","linkDistance","minSeparation","dispatchState","fixed","dgc_nodeFixed","groups","components","separateGraphs","leaves","array","gridSnapIterations","_flowLayout","_layoutId","graphviz","graphviz_keys","bind","flow","_dagreGraph","dagre","graphlib","Graph","multigraph","setGraph","setDefaultEdgeLabel","setNode","removeNode","setEdge","removeEdge","_tick","_done","layout","tree_layout","best_dist","nodeWidth","functor","_dfs","offsetX","dcg_rank","left_x","hit_ins","gapY","offsetY","isroot","want","badi","badl","limit","extra","opts","rowFunction","_items","_legend","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_positions","rootf","rowf","treef","ofsx","ofsy","nwidth","ygap","dfs","tree_constraints","xgap","foo_x","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","createElement","rowsEnter","outerHTML","select_nodes","_selected","select_nodes_group","node_set_changed","stopPropagation","present","nselect","brushgroup","chart_registry","create_type","create_group","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","dcg_dblclk_timeout","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_tree_helper","inherit","valuesByAttr","shift","children","nestKey","childKey","nestKeysUnique","ancestorKeys","labelFun","values","recurse","prototype","pluck","convert_tree","isArray","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","clear","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","style","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file +{"version":3,"sources":["dc.graph.js"],"names":["_dc_graph","d3","crossfilter","dc","get_original","x","orig","identity","deprecated_property","message","defaultValue","prop","property","ret","arguments","length","console","warn","apply","this","forEach","method","uuid","replace","c","r","Math","random","v","toString","conditional_properties","npred","epred","props","_if","pred","curr","o","last","props2","p","test","param","error","compose","f","g","dc_graph","functor_wrap","clone","obj","target","i","hasOwnProperty","generate_path","pts","bezDegree","close","cats","y","remain","hasNaN","isNaN","push","bez_cmds","log","join","regenerate_objects","preserved","list","key","assign","create","destroy","wrap","k","o1","keep","wlist","map","point_on_ellipse","A","B","dx","dy","tansq","tan","atan2","sqrt","between","a","b","eps","segment_intersection","x1","y1","x2","y2","x3","y3","x4","y4","point_on_polygon","points","x0","y0","next","isect","point_on_shape","chart","d","deltaX","deltaY","dcg_shape","shape","dcg_rx","dcg_ry","dcg_points","elaborate_shape","def","keys","Object","dc_graph_shapes_","_shape","floor","Error","infer_shape","nodeShape","eval","default_shape","abstract","shape_changed","old","sides","skew","distortion","rotation","shape_element","elem","document","createElementNS","fit_shape","bbox","nodeRadius","nodeFitLabel","getBBox","fitx","width","height","max","rx","y_over_B","cos","PI","nodePadding","nodeStrokeWidth","rplus","cola","ellipse_attrs","ry","polygon_attrs","align","angles","theta","sin","yext","extent","min","shape_attrs","sel","select","attr","binary_search","patience","val","f_c","fv","abs","draw_edge_to_shapes","source","sx","sy","tx","ty","neighbor","dir","offset","source_padding","target_padding","sp","tp","bss","bst","p_on_s","node","ang","compare_dist","port0","goal","port","hypot","srcang","sourcePort","tarang","targetPort","sdist","tdist","c1dist","c2dist","c1X","c1Y","c2X","c2Y","interpolate","d0","d1","getLevels","t_","bezier_point","q","create_worker","layoutAlgorithm","_workers","worker","Worker","script_path","layouts","onmessage","e","layoutId","data","dispatch","response","args","align_f","axis","type","listname","edittext","svg","position","options","accept","textdiv","innerText","onblur","myforeign","remove","cancel","createElement","text","textnode","createTextNode","appendChild","setAttribute","setAttributeNS","onkeydown","event","keyCode","preventDefault","onkeyup","focus","range","createRange","selectText","selectNodeContents","setStart","setEnd","window","getSelection","removeAllRanges","addRange","can_get_graph_from_this","nodes","vertices","edges","links","version","constants","CHART_CLASS","unwrap","undefined","value","react","cascade","_","n","splice","_eval","1","2","3","Infinity","_path","filename","scripts","getElementsByTagName","src","match","RegExp","depth_first_traversal","callbacks","place_tree","nodeid","placed","skip","indegree","rows","place","outmap","ei","nmap","targetid","sib","pop","init","tree","filter","roots","reduce","m","tail","sourceid","head","root","ni","row","finish","ellipse","egg","triangle","rectangle","diamond","trapezium","parallelogram","pentagon","hexagon","septagon","octagon","invtriangle","invtrapezium","square","polygon","available_shapes","shapes","slice","diagram","parent","chartGroup","deprecate_layout_algo_parameter","name","_chart","layoutEngine","engine","getEngine","initLayout","has_source_and_target","transition_duration","stageTransitions","transitionDuration","transition_delay","is_enter","_refresh","edge","edgeStroke","edgeStrokeWidth","edgeArrowhead","id","edgeArrow","edgeArrowtail","arrow_id","each","selectAll","arrowId","_updateNode","layout_done","happens","_dispatch","end","_running","_needsRedraw","setTimeout","isRunning","redraw","calc_edge_path","age","ports","Array","reversedness","rev","parallel","path","parallelEdgeOffset","reverse","tpos","near","orient","calc_old_edge_path","prevX","prevY","calc_new_edge_path","spos","render_edge_path","render_edge_label_path","endall","transitions","callback","every","transition","size","node_bounds","left","top","right","bottom","union_bounds","b1","b2","point_to_bounds","edge_bounds","new","debug_bounds","bounds","brect","_g","enter","insert","class","fill","stroke","calc_bounds","fitStrategy","restrictPan","_bounds","auto_zoom","viewBox","vwidth","vheight","swidth","sheight","DEBUG_BOUNDS","pAR","amv","fitS","translate","scale","indexOf","sAR","vAR","vrl","margins","split","toLowerCase","margined_bounds","_zoom","s","align_left","align_top","align_right","align_bottom","fit","_svg","preserveAspectRatio","zoomed","draw","nodeEnter","edgeEnter","edgeHover","edgeHoverEnter","edgeLabels","edgeLabelsEnter","textPaths","textPathsEnter","assert","nodeEntered","nodeKey","ntrans","duration","delay","nodeOpacity","edgeEntered","edgeKey","etrans","edgeOpacity","when","textTrans","showLayoutSteps","kind","markerEnter","addOrRemoveDef","_arrows","refX","refY","edgeArrowSize","call","drawFunction","globalTransform","pos","_translate","_scale","doZoom","xDomain","domain","yDomain","less1","less2","lessExt","nothing","resizeSvg","w","h","enableZoom","on","disableZoom","generateSvg","append","_defs","linear","behavior","zoom","mouseZoomable","altKeyZoom","marginMixin","__dcFlag__","utils","uniqueId","_nodes_snapshot","_edges_snapshot","_anchor","_chartGroup","_nodeLayer","_edgeLayer","_nodes","_edges","_stats","_children","empty","autoZoom","zoomToFit","nodeDimension","nodeGroup","edgeDimension","edgeGroup","nodeKeyAccessor","kv","edgeKeyAccessor","edgeSource","sourceAccessor","sourcename","edgeTarget","targetAccessor","targetname","nodeRadiusAccessor","nodeStrokeWidthAccessor","nodeStroke","nodeStrokeAccessor","nodeFillScale","nodeFill","nodeFillAccessor","nodeLabel","nodeLabelAccessor","label","nodeLabelFill","nodeLabelFillAccessor","nodeFitLabelAccessor","nodeTitle","nodeTitleAccessor","nodeOrdering","nodeFixed","nodeFixedAccessor","edgeStrokeAccessor","edgeStrokeWidthAccessor","edgeOpacityAccessor","edgeLabel","edgeLabelAccessor","edgeArrowheadAccessor","edgeArrowtailAccessor","edgeIsLayout","edgeIsLayoutAccessor","notLayout","edgeIsShown","lengthStrategy","edgeLength","edgeDistanceAccessor","distance","flowLayout","rankdir","baseLength","deleteDelay","groupConnected","timeLimit","constrain","edgeOrdering","level","add","initLayoutOnRedraw","layoutUnchanged","relayout","initialLayout","initialOnly","induceNodes","legend","l","child","object","skipWarning","cola_layout","dagre_layout","webworker_layout","tickSize","anchorName","edgeId","textpathId","getNode","handleDisconnected","_enterNode","changedShape","tspan","lines","first","line","ofs","exit","stroke-width","startLayout","populate_cola","rnodes","redges","rn","dcg_nodeKey","re","dcg_edgeKey","all","stop","quicksort","by","wnodes","v1","dcg_nodeFixed","populateLayoutNode","wedges","e1","dcg_edgeSource","dcg_edgeTarget","dcg_edgeLength","populateLayoutEdge","keeps","index","nnodes","nedges","em","j","opacity","text-anchor","dcg_bbox","drawn","skip_layout","nodes_snapshot","JSON","stringify","edges_snapshot","constraints","offsets","layout_edges","circle_constraints","R","nindices","namef","wheel","wheel_edges","internal","concat","ordered_constraints","sorted","ordering","sort","gap","startTime","Date","now","elapsed","do_zoom","start","initialUnconstrainedIterations","initialUserConstraintIterations","initialAllConstraintsIterations","refresh","nullSel","render","resetSvg","getStats","redrawGroup","redrawAll","renderGroup","renderAll","defineArrow","drawf","whether","tag","selEnter","invertCoord","clientCoord","invert","marker","anchor","errors","BadArgumentException","classed","registerChart","chartID","spawn_engine","layout","params","allow_webworker","tree_layout","_worker","optionNames","option","postMessage","command","passthroughs","graphviz_attrs","ranksep","_d3cola","d3adaptor","avoidOverlaps","symmetricDiffLinkLengths","jaccardLinkLengths","linkDistance","minSeparation","dispatchState","fixed","groups","components","separateGraphs","leaves","array","gridSnapIterations","_flowLayout","_layoutId","graphviz","graphviz_keys","bind","flow","_dagreGraph","dagre","graphlib","Graph","multigraph","setGraph","setDefaultEdgeLabel","setNode","removeNode","setEdge","removeEdge","_tick","_done","best_dist","nodeWidth","functor","_dfs","offsetX","dcg_rank","left_x","hit_ins","gapY","offsetY","isroot","want","badi","badl","limit","extra","opts","rowFunction","_items","_legend","nodeHeight","exemplars","item","constraint_pattern","pattern","types","rules","partition","typename","extract","n2","disable","rule","produce","members","t","tname","edge_rules","type_rules","constraint","gap_y","equality","gap_x","align_y","align_x","order_x","order_y","tree_positions","rootf","rowf","treef","ofsx","ofsy","nwidth","ygap","dfs","tree_constraints","xgap","foo_x","event_namespace","handlers","_behavior","ehover","add_behavior","rest","remove_behavior","tip","fetch_and_show_content","fetcher","_tip","content","_d3tip","show","clearTimeout","_timeout","hide_tip","hide","annotate","html","direction","table","gen","rowsEnter","outerHTML","edit_text","selection","select_nodes","isUnion","shiftKey","isToggle","is_a_mac","metaKey","ctrlKey","add_array","toggle_array","selection_changed","_selected","background_click_event","select_nodes_group","node_set_changed","brushstart","sourceEvent","_oldSelected","brushmove","newSelected","ext","_brush","rectSelect","brushend","_gBrush","clear","install_brush","brush","condition","noneIsAll","secondClickEvent","stopPropagation","multipleSelect","clickBackgroundClears","present","now_selected","navigator","platform","toUpperCase","brushgroup","chart_registry","create_type","create_group","filter_selection","set","filterFunction","has","label_nodes","selection_changed_listener","_input_anchor","edit_node_label_listener","datum","_labelTag","href","label_nodes_group","edit_node_label","nodeCrossfilter","idTag","labelTag","highlight_neighbors","clear_all_highlights","dcg_highlighted","register_highlight_paths_group","pathsgroup","highlight_paths","pathprops","hoverprops","selectprops","doRedraw","paths_changed","nop","eop","node_on_paths","edge_on_paths","selected","hoverpaths","hover_changed","hp","select_changed","contains_path","paths","doesnt_contain_path","cp","intersect_paths","pathsA","pathsB","some","toggle_paths","highlight_paths_group","expand_collapse","get_degree","expand","collapse","dirs","add_gradient_def","gradient","spreadMethod","stop-color","stop-opacity","view_degree","fil","spike_directioner","sweep","draw_selected","spike","dcg_expand_selected","dcg_expanded","rect","af","clear_selected","collapsible","zonedir","bound","getBoundingClientRect","clientX","clientY","mousemove","nk","Promise","resolve","then","degree","spikes","click","action","dcg_dblclk_timeout","draw_graphs","event_coords","update_hint","_hintData","style","pointer-events","erase_hint","_sourceDown","_targetMove","create_node","_idTag","_fixedPosTag","create_edge","_sourceTag","_targetTag","edgeCrossfilter","coords","sourceTag","targetTag","fixedPosTag","load_graph","ignore_query","file","file1","file2","queue","defer","json","await","results","digraph","graphlibDot","parse","nodeNames","edgeNames","u","graph","munge_graph","nodekeyattr","sourceattr","targetattr","find_attr","attrs","nka","sa","ta","wrappers","wi","findIndex","edge0","sourceattrs","targetattrs","edgewrappers","node0","node1","candidates","nodekeyattrs","nodewrappers","flat_group","non_null","group","dim_group","ndx","id_accessor","dimension","reduce_01","make","vec","another","convert_tree_helper","inherit","valuesByAttr","shift","children","nestKey","childKey","nestKeysUnique","ancestorKeys","labelFun","values","recurse","prototype","pluck","convert_tree","isArray","convert_nest","nest","nodeKeyAttr","edgeSourceAttr","edgeTargetAttr","convert_adjacency_list","namesIn","namesOut","adjacencies","adj","targetKey","adjacency","path_reader","register_path_objs","reader","elementList","element","elementType","_intervals","_intervalTree","_time","pathList","timeRange","has_ranges","allpaths","_range","interval","getTime","lysenkoIntervalTree","setTime","getIntervals","queryPoint","path_selector","chartgroup","draw_paths","p2","border-width","border-style","border-color","border-radius","display","padding","cursor","margin","no_paths","selector","error_text","queried","zero_text","default_text","draw_hovered","is_hovered","hovered","is_selected","background-color","color","paths_","hpaths","spaths","node_name","String","fromCharCode","node_object","extend","edge_object","generate","env","nodePrefix","N","linkLength","circle","undirected","rimLength","par","strutSkip","strutLength","random_graph","new_node","nodeKeyGen","colorTag","ncolors","random_node","sourceKey","edgeKeyGen","newComponentProb","newNodeProb","newNodProb","n1","choice","line_breaks","charexp","max_line_length","regexp","result","part","exec","lastIndex","build_type_graph","nkey","ntype","esource","etarget","tnodes","tedges","sn","tn","etype","define","amd","module","exports","_d3","require","_crossfilter","_dc"],"mappings":"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","file":"dc.graph.min.js"} \ No newline at end of file diff --git a/web/js/network-building.js b/web/js/network-building.js new file mode 100644 index 00000000..7647a13a --- /dev/null +++ b/web/js/network-building.js @@ -0,0 +1,44 @@ +var qs = querystring.parse(); + +var node_flat = dc_graph.flat_group.make([], function(d) { return d.id; }), + edge_flat = dc_graph.flat_group.make([], function(d) { return d.source + '-' + d.target; }); + +var diagram = dc_graph.diagram('#graph'); + +diagram + .width(window.innerWidth) + .height(window.innerHeight) + .layoutAlgorithm('cola') + .transitionDuration(500) + .stageTransitions('insmod') + .showLayoutSteps(false) + .nodeDimension(node_flat.dimension).nodeGroup(node_flat.group) + .edgeDimension(edge_flat.dimension).edgeGroup(edge_flat.group) + .edgeSource(function(e) { return e.value.source; }) + .edgeTarget(function(e) { return e.value.target; }) + .nodeLabel(function(n) { return n.value.label; }) + .nodeFixed(function(n) { return n.value.fixedPos; }) + .edgeArrowhead('vee'); + +diagram.timeLimit(1000); + +var select_nodes = dc_graph.select_nodes({ + nodeFill: '#eeffe0', + nodeStrokeWidth: 2 +}).multipleSelect(false); + +var label_nodes = dc_graph.label_nodes({ + nodeCrossfilter: node_flat.crossfilter +}); + +var draw_graphs = dc_graph.draw_graphs({ + nodeCrossfilter: node_flat.crossfilter, + edgeCrossfilter: edge_flat.crossfilter +}); + +diagram + .child('select-nodes', select_nodes) + .child('label-nodes', label_nodes) + .child('draw-graphs', draw_graphs); + +dc.renderAll(); diff --git a/web/network-building.html b/web/network-building.html new file mode 100644 index 00000000..3cd88be6 --- /dev/null +++ b/web/network-building.html @@ -0,0 +1,40 @@ + + + + Network building + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +