From 28571244cc109986794dcf21e0ce9f4776766722 Mon Sep 17 00:00:00 2001 From: jos Date: Thu, 22 Jan 2015 14:28:28 +0100 Subject: [PATCH] Released v3.9.1 --- dist/vis.js | 17033 ++++++++++++++++++++++---------------------- dist/vis.map | 2 +- dist/vis.min.js | 30 +- docs/network.html | 19 +- download/vis.zip | Bin 2236697 -> 2228822 bytes index.html | 2 +- 6 files changed, 8549 insertions(+), 8537 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index 506f99f1..0541a5fa 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.9.0 - * @date 2015-01-16 + * @version 3.9.1 + * @date 2015-01-22 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -113,24 +113,24 @@ return /******/ (function(modules) { // webpackBootstrap components: { items: { - Item: __webpack_require__(31), - BackgroundItem: __webpack_require__(32), - BoxItem: __webpack_require__(33), - PointItem: __webpack_require__(34), - RangeItem: __webpack_require__(35) + Item: __webpack_require__(20), + BackgroundItem: __webpack_require__(21), + BoxItem: __webpack_require__(22), + PointItem: __webpack_require__(23), + RangeItem: __webpack_require__(24) }, - Component: __webpack_require__(20), - CurrentTime: __webpack_require__(21), - CustomTime: __webpack_require__(22), - DataAxis: __webpack_require__(23), - GraphGroup: __webpack_require__(24), - Group: __webpack_require__(25), - BackgroundGroup: __webpack_require__(26), - ItemSet: __webpack_require__(27), - Legend: __webpack_require__(28), - LineGraph: __webpack_require__(29), - TimeAxis: __webpack_require__(30) + Component: __webpack_require__(25), + CurrentTime: __webpack_require__(26), + CustomTime: __webpack_require__(27), + DataAxis: __webpack_require__(28), + GraphGroup: __webpack_require__(29), + Group: __webpack_require__(30), + BackgroundGroup: __webpack_require__(31), + ItemSet: __webpack_require__(32), + Legend: __webpack_require__(33), + LineGraph: __webpack_require__(34), + TimeAxis: __webpack_require__(35) } }; @@ -6348,10 +6348,10 @@ return /******/ (function(modules) { // webpackBootstrap var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(30); - var CurrentTime = __webpack_require__(21); - var CustomTime = __webpack_require__(22); - var ItemSet = __webpack_require__(27); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var ItemSet = __webpack_require__(32); /** * Create a timeline visualization @@ -6668,10 +6668,10 @@ return /******/ (function(modules) { // webpackBootstrap var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(30); - var CurrentTime = __webpack_require__(21); - var CustomTime = __webpack_require__(22); - var LineGraph = __webpack_require__(29); + var TimeAxis = __webpack_require__(35); + var CurrentTime = __webpack_require__(26); + var CustomTime = __webpack_require__(27); + var LineGraph = __webpack_require__(34); /** * Create a timeline visualization @@ -7665,7 +7665,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var moment = __webpack_require__(44); - var Component = __webpack_require__(20); + var Component = __webpack_require__(25); var DateUtil = __webpack_require__(15); /** @@ -9086,3775 +9086,3214 @@ return /******/ (function(modules) { // webpackBootstrap /* 20 */ /***/ function(module, exports, __webpack_require__) { + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + /** - * Prototype for visual components - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] - * @param {Object} [options] + * @constructor Item + * @param {Object} data Object containing (optional) parameters type, + * start, end, content, group, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} options Configuration options + * // TODO: describe available options */ - function Component (body, options) { - this.options = null; - this.props = null; + function Item (data, conversion, options) { + this.id = null; + this.parent = null; + this.data = data; + this.dom = null; + this.conversion = conversion || {}; + this.options = options || {}; + + this.selected = false; + this.displayed = false; + this.dirty = true; + + this.top = null; + this.left = null; + this.width = null; + this.height = null; } + Item.prototype.stack = true; + /** - * Set options for the component. The new options will be merged into the - * current options. - * @param {Object} options + * Select current item */ - Component.prototype.setOptions = function(options) { - if (options) { - util.extend(this.options, options); - } + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Unselect current item */ - Component.prototype.redraw = function() { - // should be implemented by the component - return false; + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Destroy the component. Cleanup DOM and event listeners + * Set data for the item. Existing data will be updated. The id should not + * be changed. When the item is displayed, it will be redrawn immediately. + * @param {Object} data */ - Component.prototype.destroy = function() { - // should be implemented by the component + Item.prototype.setData = function(data) { + this.data = data; + this.dirty = true; + if (this.displayed) this.redraw(); }; /** - * Test whether the component is resized since the last time _isResized() was - * called. - * @return {Boolean} Returns true if the component is resized - * @protected + * Set a parent for the item + * @param {ItemSet | Group} parent */ - Component.prototype._isResized = function() { - var resized = (this.props._previousWidth !== this.props.width || - this.props._previousHeight !== this.props.height); - - this.props._previousWidth = this.props.width; - this.props._previousHeight = this.props.height; - - return resized; + Item.prototype.setParent = function(parent) { + if (this.displayed) { + this.hide(); + this.parent = parent; + if (this.parent) { + this.show(); + } + } + else { + this.parent = parent; + } }; - module.exports = Component; - - -/***/ }, -/* 21 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Component = __webpack_require__(20); - var moment = __webpack_require__(44); - var locales = __webpack_require__(48); - /** - * A current time bar - * @param {{range: Range, dom: Object, domProps: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCurrentTime] - * @constructor CurrentTime - * @extends Component + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - function CurrentTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCurrentTime: true, - - locales: locales, - locale: 'en' - }; - this.options = util.extend({}, this.defaultOptions); - this.offset = 0; - - this._create(); - - this.setOptions(options); - } - - CurrentTime.prototype = new Component(); + Item.prototype.isVisible = function(range) { + // Should be implemented by Item implementations + return false; + }; /** - * Create the HTML DOM for the current time bar - * @private + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed */ - CurrentTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'currenttime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - - this.bar = bar; + Item.prototype.show = function() { + return false; }; /** - * Destroy the CurrentTime bar + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed */ - CurrentTime.prototype.destroy = function () { - this.options.showCurrentTime = false; - this.redraw(); // will remove the bar from the DOM and stop refreshing + Item.prototype.hide = function() { + return false; + }; - this.body = null; + /** + * Repaint the item + */ + Item.prototype.redraw = function() { + // should be implemented by the item }; /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCurrentTime] + * Reposition the Item horizontally */ - CurrentTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); - } + Item.prototype.repositionX = function() { + // should be implemented by the item }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Reposition the Item vertically */ - CurrentTime.prototype.redraw = function() { - if (this.options.showCurrentTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); + Item.prototype.repositionY = function() { + // should be implemented by the item + }; - this.start(); - } + /** + * Repaint a delete button on the top right of the item when the item is selected + * @param {HTMLElement} anchor + * @protected + */ + Item.prototype._repaintDeleteButton = function (anchor) { + if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { + // create and show button + var me = this; - var now = new Date(new Date().valueOf() + this.offset); - var x = this.body.util.toScreen(now); + var deleteButton = document.createElement('div'); + deleteButton.className = 'delete'; + deleteButton.title = 'Delete this item'; - var locale = this.options.locales[this.options.locale]; - var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); + Hammer(deleteButton, { + preventDefault: true + }).on('tap', function (event) { + me.parent.removeFromDataSet(me); + event.stopPropagation(); + }); - this.bar.style.left = x + 'px'; - this.bar.title = title; + anchor.appendChild(deleteButton); + this.dom.deleteButton = deleteButton; } - else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + else if (!this.selected && this.dom.deleteButton) { + // remove button + if (this.dom.deleteButton.parentNode) { + this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); } - this.stop(); + this.dom.deleteButton = null; } - - return false; }; /** - * Start auto refreshing the current time bar + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - CurrentTime.prototype.start = function() { - var me = this; - - function update () { - me.stop(); - - // determine interval to refresh - var scale = me.body.range.conversion(me.body.domProps.center.width).scale; - var interval = 1 / scale / 10; - if (interval < 30) interval = 30; - if (interval > 1000) interval = 1000; + Item.prototype._updateContents = function (element) { + var content; + if (this.options.template) { + var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset + content = this.options.template(itemData); + } + else { + content = this.data.content; + } - me.redraw(); + if(content !== this.content) { + // only replace the content when changed + if (content instanceof Element) { + element.innerHTML = ''; + element.appendChild(content); + } + else if (content != undefined) { + element.innerHTML = content; + } + else { + if (!(this.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } + } - // start a timer to adjust for the new time - me.currentTimeTimer = setTimeout(update, interval); + this.content = content; } - - update(); }; /** - * Stop auto refreshing the current time bar + * Set HTML contents for the item + * @param {Element} element HTML element to fill with the contents + * @private */ - CurrentTime.prototype.stop = function() { - if (this.currentTimeTimer !== undefined) { - clearTimeout(this.currentTimeTimer); - delete this.currentTimeTimer; + Item.prototype._updateTitle = function (element) { + if (this.data.title != null) { + element.title = this.data.title || ''; + } + else { + element.removeAttribute('title'); } }; /** - * Set a current time. This can be used for example to ensure that a client's - * time is synchronized with a shared server time. - * @param {Date | String | Number} time A Date, unix timestamp, or - * ISO date string. + * Process dataAttributes timeline option and set as data- attributes on dom.content + * @param {Element} element HTML element to which the attributes will be attached + * @private */ - CurrentTime.prototype.setCurrentTime = function(time) { - var t = util.convert(time, 'Date').valueOf(); - var now = new Date().valueOf(); - this.offset = t - now; - this.redraw(); + Item.prototype._updateDataAttributes = function(element) { + if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { + var attributes = []; + + if (Array.isArray(this.options.dataAttributes)) { + attributes = this.options.dataAttributes; + } + else if (this.options.dataAttributes == 'all') { + attributes = Object.keys(this.data); + } + else { + return; + } + + for (var i = 0; i < attributes.length; i++) { + var name = attributes[i]; + var value = this.data[name]; + + if (value != null) { + element.setAttribute('data-' + name, value); + } + else { + element.removeAttribute('data-' + name); + } + } + } }; /** - * Get the current time. - * @return {Date} Returns the current time. + * Update custom styles of the element + * @param element + * @private */ - CurrentTime.prototype.getCurrentTime = function() { - return new Date(new Date().valueOf() + this.offset); + Item.prototype._updateStyle = function(element) { + // remove old styles + if (this.style) { + util.removeCssText(element, this.style); + this.style = null; + } + + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; + } }; - module.exports = CurrentTime; + module.exports = Item; /***/ }, -/* 22 */ +/* 21 */ /***/ function(module, exports, __webpack_require__) { var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var Component = __webpack_require__(20); - var moment = __webpack_require__(44); - var locales = __webpack_require__(48); + var Item = __webpack_require__(20); + var BackgroundGroup = __webpack_require__(31); + var RangeItem = __webpack_require__(24); /** - * A custom time bar - * @param {{range: Range, dom: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCustomTime] - * @constructor CustomTime - * @extends Component + * @constructor BackgroundItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options */ - - function CustomTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCustomTime: false, - locales: locales, - locale: 'en' + // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation + function BackgroundItem (data, conversion, options) { + this.props = { + content: { + width: 0 + } }; - this.options = util.extend({}, this.defaultOptions); + this.overflow = false; // if contents can overflow (css styling), this flag is set to true - this.customTime = new Date(); - this.eventParams = {}; // stores state parameters while dragging the bar + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); + } + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); + } + } - // create the DOM - this._create(); + Item.call(this, data, conversion, options); - this.setOptions(options); + this.emptyContent = false; } - CustomTime.prototype = new Component(); + BackgroundItem.prototype = new Item (null, null, null); - /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCustomTime] - */ - CustomTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCustomTime', 'locale', 'locales'], this.options, options); - } - }; + BackgroundItem.prototype.baseClassName = 'item background'; + BackgroundItem.prototype.stack = false; /** - * Create the DOM for the custom time - * @private + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible */ - CustomTime.prototype._create = function() { - var bar = document.createElement('div'); - bar.className = 'customtime'; - bar.style.position = 'absolute'; - bar.style.top = '0px'; - bar.style.height = '100%'; - this.bar = bar; - - var drag = document.createElement('div'); - drag.style.position = 'relative'; - drag.style.top = '0px'; - drag.style.left = '-10px'; - drag.style.height = '100%'; - drag.style.width = '20px'; - bar.appendChild(drag); - - // attach event listeners - this.hammer = Hammer(bar, { - prevent_default: true - }); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + BackgroundItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; /** - * Destroy the CustomTime bar + * Repaint the item */ - CustomTime.prototype.destroy = function () { - this.options.showCustomTime = false; - this.redraw(); // will remove the bar from the DOM - - this.hammer.enable(false); - this.hammer = null; + BackgroundItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - this.body = null; - }; + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - CustomTime.prototype.redraw = function () { - if (this.options.showCustomTime) { - var parent = this.body.dom.backgroundVertical; - if (this.bar.parentNode != parent) { - // attach to the dom - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } - parent.appendChild(this.bar); - } + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - var x = this.body.util.toScreen(this.customTime); + // Note: we do NOT attach this item as attribute to the DOM, + // such that background items cannot be selected + //dom.box['timeline-item'] = this; - var locale = this.options.locales[this.options.locale]; - var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); - title = title.charAt(0).toUpperCase() + title.substring(1); + this.dirty = true; + } - this.bar.style.left = x + 'px'; - this.bar.title = title; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); } - else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); + if (!dom.box.parentNode) { + var background = this.parent.dom.background; + if (!background) { + throw new Error('Cannot redraw item: parent has no background container element'); } + background.appendChild(dom.box); } + this.displayed = true; - return false; - }; - - /** - * Set custom time. - * @param {Date | number | string} time - */ - CustomTime.prototype.setCustomTime = function(time) { - this.customTime = util.convert(time, 'Date'); - this.redraw(); + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.content); + this._updateDataAttributes(this.dom.content); + this._updateStyle(this.dom.box); + + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; + + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + this.props.content.width = this.dom.content.offsetWidth; + this.height = 0; // set height zero, so this item will be ignored when stacking items + + this.dirty = false; + } }; /** - * Retrieve the current custom time. - * @return {Date} customTime + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - CustomTime.prototype.getCustomTime = function() { - return new Date(this.customTime.valueOf()); - }; + BackgroundItem.prototype.show = RangeItem.prototype.show; /** - * Start moving horizontally - * @param {Event} event - * @private + * Hide the item from the DOM (when visible) + * @return {Boolean} changed */ - CustomTime.prototype._onDragStart = function(event) { - this.eventParams.dragging = true; - this.eventParams.customTime = this.customTime; - - event.stopPropagation(); - event.preventDefault(); - }; + BackgroundItem.prototype.hide = RangeItem.prototype.hide; /** - * Perform moving operating. - * @param {Event} event - * @private + * Reposition the item horizontally + * @Override */ - CustomTime.prototype._onDrag = function (event) { - if (!this.eventParams.dragging) return; - - var deltaX = event.gesture.deltaX, - x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, - time = this.body.util.toTime(x); - - this.setCustomTime(time); - - // fire a timechange event - this.body.emitter.emit('timechange', { - time: new Date(this.customTime.valueOf()) - }); - - event.stopPropagation(); - event.preventDefault(); - }; + BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; /** - * Stop moving operating. - * @param {event} event - * @private + * Reposition the item vertically + * @Override */ - CustomTime.prototype._onDragEnd = function (event) { - if (!this.eventParams.dragging) return; + BackgroundItem.prototype.repositionY = function(margin) { + var onTop = this.options.orientation === 'top'; + this.dom.content.style.top = onTop ? '' : '0'; + this.dom.content.style.bottom = onTop ? '0' : ''; + var height; - // fire a timechanged event - this.body.emitter.emit('timechanged', { - time: new Date(this.customTime.valueOf()) - }); + // special positioning for subgroups + if (this.data.subgroup !== undefined) { + var itemSubgroup = this.data.subgroup; + var subgroups = this.parent.subgroups; + var subgroupIndex = subgroups[itemSubgroup].index; + // if the orientation is top, we need to take the difference in height into account. + if (onTop == true) { + // the first subgroup will have to account for the distance from the top to the first item. + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } - event.stopPropagation(); - event.preventDefault(); + // the others will have to be offset downwards with this same distance. + newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + // and when the orientation is bottom: + else { + var newTop = this.parent.top; + for (var subgroup in subgroups) { + if (subgroups.hasOwnProperty(subgroup)) { + if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { + newTop += subgroups[subgroup].height + margin.item.vertical; + } + } + } + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; + } + } + // and in the case of no subgroups: + else { + // we want backgrounds with groups to only show in groups. + if (this.parent instanceof BackgroundGroup) { + // if the item is not in a group: + height = Math.max(this.parent.height, + this.parent.itemSet.body.domProps.center.height, + this.parent.itemSet.body.domProps.centerContainer.height); + this.dom.box.style.top = onTop ? '0' : ''; + this.dom.box.style.bottom = onTop ? '' : '0'; + } + else { + height = this.parent.height; + // same alignment for items when orientation is top or bottom + this.dom.box.style.top = this.parent.top + 'px'; + this.dom.box.style.bottom = ''; + } + } + this.dom.box.style.height = height + 'px'; }; - module.exports = CustomTime; + module.exports = BackgroundItem; /***/ }, -/* 23 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { + var Item = __webpack_require__(20); var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(20); - var DataStep = __webpack_require__(16); /** - * A horizontal time axis - * @param {Object} [options] See DataAxis.setOptions for the available - * options. - * @constructor DataAxis - * @extends Component - * @param body + * @constructor BoxItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options */ - function DataAxis (body, options, svg, linegraphOptions) { - this.id = util.randomUUID(); - this.body = body; - - this.defaultOptions = { - orientation: 'left', // supported: 'left', 'right' - showMinorLabels: true, - showMajorLabels: true, - icons: true, - majorLinesOffset: 7, - minorLinesOffset: 4, - labelOffsetX: 10, - labelOffsetY: 2, - iconWidth: 20, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - }, - title: { - left: {text:undefined}, - right: {text:undefined} + function BoxItem (data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} + line: { + width: 0, + height: 0 } }; - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {}, - title: {} - }; + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } + } - this.dom = {}; + Item.call(this, data, conversion, options); + } - this.range = {start:0, end:0}; + BoxItem.prototype = new Item (null, null, null); - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + BoxItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); + }; - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; - this.hidden = false; + /** + * Repaint the item + */ + BoxItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.zeroCrossing = -1; + // create main box + dom.box = document.createElement('DIV'); - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; - this.iconsRemoved = false; + // contents box (inside the background box). used for making margins + dom.content = document.createElement('DIV'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); + // line to axis + dom.line = document.createElement('DIV'); + dom.line.className = 'line'; - this.groups = {}; - this.amountOfGroups = 0; + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; - // create the HTML DOM - this._create(); + // attach this item as attribute + dom.box['timeline-item'] = this; - var me = this; - this.body.emitter.on("verticalDrag", function() { - me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; - }); - } + this.dirty = true; + } - DataAxis.prototype = new Component(); + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); + foreground.appendChild(dom.box); + } + if (!dom.line.parentNode) { + var background = this.parent.dom.background; + if (!background) throw new Error('Cannot redraw item: parent has no background container element'); + background.appendChild(dom.line); + } + if (!dom.dot.parentNode) { + var axis = this.parent.dom.axis; + if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); + axis.appendChild(dom.dot); + } + this.displayed = true; + + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.box.className = 'item box' + className; + dom.line.className = 'item line' + className; + dom.dot.className = 'item dot' + className; - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + // recalculate size + this.props.dot.height = dom.dot.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.line.width = dom.line.offsetWidth; + this.width = dom.box.offsetWidth; + this.height = dom.box.offsetHeight; + + this.dirty = false; } - this.amountOfGroups += 1; - }; - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; + this._repaintDeleteButton(dom.box); }; - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + /** + * Show the item in the DOM (when not already displayed). The items DOM will + * be created when needed. + */ + BoxItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); } }; + /** + * Hide the item from the DOM (when visible) + */ + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; - DataAxis.prototype.setOptions = function (options) { - if (options) { - var redraw = false; - if (this.options.orientation != options.orientation && options.orientation !== undefined) { - redraw = true; - } - var fields = [ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'icons', - 'majorLinesOffset', - 'minorLinesOffset', - 'labelOffsetX', - 'labelOffsetY', - 'iconWidth', - 'width', - 'visible', - 'customRange', - 'title', - 'format', - 'alignZeros' - ]; - util.selectiveExtend(fields, this.options, options); + if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); + if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); + if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); - this.minWidth = Number(('' + this.options.width).replace("px","")); + this.top = null; + this.left = null; - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); - } + this.displayed = false; } }; - /** - * Create the HTML DOM for the DataAxis + * Reposition the item horizontally + * @Override */ - DataAxis.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.style.width = this.options.width; - this.dom.frame.style.height = this.height; - - this.dom.lineContainer = document.createElement('div'); - this.dom.lineContainer.style.width = '100%'; - this.dom.lineContainer.style.height = this.height; - this.dom.lineContainer.style.position = 'relative'; - - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = "absolute"; - this.svg.style.top = '0px'; - this.svg.style.height = '100%'; - this.svg.style.width = '100%'; - this.svg.style.display = "block"; - this.dom.frame.appendChild(this.svg); - }; - - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); - - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + BoxItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); + var align = this.options.align; + var left; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - if (this.options.orientation == 'left') { - x = iconOffset; + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; + } + else if (align == 'left') { + this.left = start; } else { - x = this.width - iconWidth - iconOffset; + // default or 'center' + this.left = start - this.width / 2; } - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + iconOffset; - } - } - } + // reposition box + box.style.left = this.left + 'px'; - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = false; - }; + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; - DataAxis.prototype._cleanupIcons = function() { - if (this.iconsRemoved == false) { - DOMutil.prepareElements(this.svgElements); - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = true; - } - } + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * Create the HTML DOM for the DataAxis + * Reposition the item vertically + * @Override */ - DataAxis.prototype.show = function() { - this.hidden = false; - if (!this.dom.frame.parentNode) { - if (this.options.orientation == 'left') { - this.body.dom.left.appendChild(this.dom.frame); - } - else { - this.body.dom.right.appendChild(this.dom.frame); - } - } + BoxItem.prototype.repositionY = function() { + var orientation = this.options.orientation; + var box = this.dom.box; + var line = this.dom.line; + var dot = this.dom.dot; - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } - }; + if (orientation == 'top') { + box.style.top = (this.top || 0) + 'px'; - /** - * Create the HTML DOM for the DataAxis - */ - DataAxis.prototype.hide = function() { - this.hidden = true; - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + line.style.top = '0'; + line.style.height = (this.parent.top + this.top + 1) + 'px'; + line.style.bottom = ''; } + else { // orientation 'bottom' + var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty + var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; + line.style.top = (itemSetHeight - lineHeight) + 'px'; + line.style.bottom = '0'; } + + dot.style.top = (-this.props.dot.height / 2) + 'px'; }; + module.exports = BoxItem; + + +/***/ }, +/* 23 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(20); + /** - * Set a range (start and end) - * @param end - * @param start - * @param end + * @constructor PointItem + * @extends Item + * @param {Object} data Object containing parameters start + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe available options */ - DataAxis.prototype.setRange = function (start, end) { - if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; + function PointItem (data, conversion, options) { + this.props = { + dot: { + top: 0, + width: 0, + height: 0 + }, + content: { + height: 0, + marginLeft: 0 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); } } - this.range.start = start; - this.range.end = end; + + Item.call(this, data, conversion, options); + } + + PointItem.prototype = new Item (null, null, null); + + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + PointItem.prototype.isVisible = function(range) { + // determine visibility + // TODO: account for the real width of the item. Right now we just add 1/4 to the window + var interval = (range.end - range.start) / 4; + return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Repaint the item */ - DataAxis.prototype.redraw = function () { - var resized = false; - var activeGroups = 0; - - // Make sure the line container adheres to the vertical scrolling. - this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; + PointItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; - } - } - } - if (this.amountOfGroups == 0 || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - this.height = Number(this.linegraphSVG.style.height.replace("px","")); + // background box + dom.point = document.createElement('div'); + // className is updated in redraw() - // svg offsetheight did not work in firefox and explorer... - this.dom.lineContainer.style.height = this.height + 'px'; - this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); - var props = this.props; - var frame = this.dom.frame; + // dot at start + dom.dot = document.createElement('div'); + dom.point.appendChild(dom.dot); - // update classname - frame.className = 'dataaxis'; + // attach this item as attribute + dom.point['timeline-item'] = this; - // calculate character width and height - this._calculateCharSize(); + this.dirty = true; + } - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.point.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); + } + foreground.appendChild(dom.point); + } + this.displayed = true; - // determine the width and height of the elements for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.point); + this._updateDataAttributes(this.dom.point); + this._updateStyle(this.dom.point); - props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; - props.minorLineHeight = 1; - props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; - props.majorLineHeight = 1; + // update class + var className = (this.data.className? ' ' + this.data.className : '') + + (this.selected ? ' selected' : ''); + dom.point.className = 'item point' + className; + dom.dot.className = 'item dot' + className; - // take frame offline while updating (is almost twice as fast) - if (orientation == 'left') { - frame.style.top = '0'; - frame.style.left = '0'; - frame.style.bottom = ''; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.left.width; - this.props.height = this.body.domProps.left.height; - } - else { // right - frame.style.top = ''; - frame.style.bottom = '0'; - frame.style.left = '0'; - frame.style.width = this.width + 'px'; - frame.style.height = this.height + "px"; - this.props.width = this.body.domProps.right.width; - this.props.height = this.body.domProps.right.height; - } + // recalculate size + this.width = dom.point.offsetWidth; + this.height = dom.point.offsetHeight; + this.props.dot.width = dom.dot.offsetWidth; + this.props.dot.height = dom.dot.offsetHeight; + this.props.content.height = dom.content.offsetHeight; - resized = this._redrawLabels(); - resized = this._isResized() || resized; + // resize contents + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + //dom.content.style.marginRight = ... + 'px'; // TODO: margin right - if (this.options.icons == true) { - this._redrawGroupIcons(); - } - else { - this._cleanupIcons(); - } + dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; + dom.dot.style.left = (this.props.dot.width / 2) + 'px'; - this._redrawTitle(orientation); + this.dirty = false; } - return resized; + + this._repaintDeleteButton(dom.point); }; /** - * Repaint major and minor text labels and vertical grid lines - * @private + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - DataAxis.prototype._redrawLabels = function () { - var resized = false; - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); + PointItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; - var orientation = this.options['orientation']; + /** + * Hide the item from the DOM (when visible) + */ + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); + } - // calculate range and step (step such that we have space for 7 characters per label) - var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; + this.top = null; + this.left = null; - var step = new DataStep( - this.range.start, - this.range.end, - minimumStep, - this.dom.frame.offsetHeight, - this.options.customRange[this.options.orientation], - this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on - ); + this.displayed = false; + } + }; - this.step = step; - // get the distance in pixels for a step - // dead space is space that is "left over" after a step - var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); + /** + * Reposition the item horizontally + * @Override + */ + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - this.stepPixels = stepPixels; + this.left = start - this.props.dot.width; - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; + // reposition point + this.dom.point.style.left = this.left + 'px'; + }; - // the slave axis needs to use the same horizontal lines as the master axis. - if (this.master == false) { - stepPixels = this.stepPixelsForced; - stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); - for (var i = 0; i < 0.5 * stepDifference; i++) { - step.previous(); - } - amountOfSteps = this.height / stepPixels; + /** + * Reposition the item vertically + * @Override + */ + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; - if (this.zeroCrossing != -1 && this.options.alignZeros == true) { - var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; - if (zeroStepDifference > 0) { - for (var i = 0; i < zeroStepDifference; i++) {step.next();} - } - else if (zeroStepDifference < 0) { - for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} - } - } + if (orientation == 'top') { + point.style.top = this.top + 'px'; } else { - amountOfSteps += 0.25; + point.style.top = (this.parent.height - this.top - this.height) + 'px'; } + }; + module.exports = PointItem; - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; - - // do not draw the first label - var max = 1; - // Get the number of decimal places - var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; - } +/***/ }, +/* 24 */ +/***/ function(module, exports, __webpack_require__) { - this.maxLabelSize = 0; - var y = 0; - while (max < Math.round(amountOfSteps)) { - step.next(); - y = Math.round(max * stepPixels); - marginStartPos = max * stepPixels; - var isMajor = step.isMajor(); + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(20); - if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); + /** + * @constructor RangeItem + * @extends Item + * @param {Object} data Object containing parameters start, end + * content, className. + * @param {{toScreen: function, toTime: function}} conversion + * Conversion functions from time to screen and vice versa + * @param {Object} [options] Configuration options + * // TODO: describe options + */ + function RangeItem (data, conversion, options) { + this.props = { + content: { + width: 0 } + }; + this.overflow = false; // if contents can overflow (css styling), this flag is set to true - if (isMajor && this.options['showMajorLabels'] && this.master == true || - this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { - if (y >= 0) { - this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); - } - this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); - } - else { - this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); } - - if (this.master == true && step.current == 0) { - this.zeroCrossing = max; + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); } - - max++; - } - - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); - } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; } - // Note that title is rotated, so we're using the height, not width! - var titleWidth = 0; - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - titleWidth = this.props.titleCharHeight; - } - var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; + Item.call(this, data, conversion, options); + } - // this will resize the yAxis to accommodate the labels. - if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { - this.width = this.maxLabelSize + offset; - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; - } - // this will resize the yAxis if it is too big for the labels. - else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { - this.width = Math.max(this.minWidth,this.maxLabelSize + offset); - this.options.width = this.width + "px"; - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - this.redraw(); - resized = true; - } - else { - DOMutil.cleanupElements(this.DOMelements.lines); - DOMutil.cleanupElements(this.DOMelements.labels); - resized = false; - } + RangeItem.prototype = new Item (null, null, null); - return resized; - }; + RangeItem.prototype.baseClassName = 'item range'; - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; + /** + * Check whether this item is visible inside given range + * @returns {{start: Number, end: Number}} range with a timestamp for start and end + * @returns {boolean} True if visible + */ + RangeItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); }; /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * Repaint the item */ - DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { - // reuse redundant label - var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); - label.className = className; - label.innerHTML = text; - if (orientation == 'left') { - label.style.left = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "right"; + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() + + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); + + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; } - else { - label.style.right = '-' + this.options.labelOffsetX + 'px'; - label.style.textAlign = "left"; + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + if (!dom.box.parentNode) { + var foreground = this.parent.dom.foreground; + if (!foreground) { + throw new Error('Cannot redraw item: parent has no foreground container element'); + } + foreground.appendChild(dom.box); } + this.displayed = true; - label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + // Update DOM when item is marked dirty. An item is marked dirty when: + // - the item is not yet rendered + // - the item's data is changed + // - the item is selected/deselected + if (this.dirty) { + this._updateContents(this.dom.content); + this._updateTitle(this.dom.box); + this._updateDataAttributes(this.dom.box); + this._updateStyle(this.dom.box); - text += ''; + // update class + var className = (this.data.className ? (' ' + this.data.className) : '') + + (this.selected ? ' selected' : ''); + dom.box.className = this.baseClassName + className; - var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); - if (this.maxLabelSize < text.length * largestWidth) { - this.maxLabelSize = text.length * largestWidth; + // determine from css whether this box has overflow + this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + + // recalculate size + // turn off max-width to be able to calculate the real width + // this causes an extra browser repaint/reflow, but so be it + this.dom.content.style.maxWidth = 'none'; + this.props.content.width = this.dom.content.offsetWidth; + this.height = this.dom.box.offsetHeight; + this.dom.content.style.maxWidth = ''; + + this.dirty = false; } + + this._repaintDeleteButton(dom.box); + this._repaintDragLeft(); + this._repaintDragRight(); }; /** - * Create a minor line for the axis at position y - * @param y - * @param orientation - * @param className - * @param offset - * @param width + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { - if (this.master == true) { - var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); - line.className = className; - line.innerHTML = ''; - - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; - } - else { - line.style.right = (this.width - offset) + 'px'; - } - - line.style.width = width + 'px'; - line.style.top = y + 'px'; + RangeItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); } }; /** - * Create a title for the axis - * @private - * @param orientation + * Hide the item from the DOM (when visible) + * @return {Boolean} changed */ - DataAxis.prototype._redrawTitle = function (orientation) { - DOMutil.prepareElements(this.DOMelements.title); - - // Check if the title is defined for this axes - if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { - var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); - title.className = 'yAxis title ' + orientation; - title.innerHTML = this.options.title[orientation].text; + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); + if (box.parentNode) { + box.parentNode.removeChild(box); } - if (orientation == 'left') { - title.style.left = this.props.titleCharHeight + 'px'; - } - else { - title.style.right = this.props.titleCharHeight + 'px'; - } + this.top = null; + this.left = null; - title.style.width = this.height + 'px'; + this.displayed = false; } - - // we need to clean up in case we did not use all elements. - DOMutil.cleanupElements(this.DOMelements.title); }; - - - /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private + * Reposition the item horizontally + * @Override */ - DataAxis.prototype._calculateCharSize = function () { - // determine the char width and height on the minor axis - if (!('minorCharHeight' in this.props)) { - var textMinor = document.createTextNode('0'); - var measureCharMinor = document.createElement('div'); - measureCharMinor.className = 'yAxis minor measure'; - measureCharMinor.appendChild(textMinor); - this.dom.frame.appendChild(measureCharMinor); - - this.props.minorCharHeight = measureCharMinor.clientHeight; - this.props.minorCharWidth = measureCharMinor.clientWidth; + RangeItem.prototype.repositionX = function() { + var parentWidth = this.parent.width; + var start = this.conversion.toScreen(this.data.start); + var end = this.conversion.toScreen(this.data.end); + var contentLeft; + var contentWidth; - this.dom.frame.removeChild(measureCharMinor); + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; } - - if (!('majorCharHeight' in this.props)) { - var textMajor = document.createTextNode('0'); - var measureCharMajor = document.createElement('div'); - measureCharMajor.className = 'yAxis major measure'; - measureCharMajor.appendChild(textMajor); - this.dom.frame.appendChild(measureCharMajor); - - this.props.majorCharHeight = measureCharMajor.clientHeight; - this.props.majorCharWidth = measureCharMajor.clientWidth; - - this.dom.frame.removeChild(measureCharMajor); + if (end > 2 * parentWidth) { + end = 2 * parentWidth; } + var boxWidth = Math.max(end - start, 1); - if (!('titleCharHeight' in this.props)) { - var textTitle = document.createTextNode('0'); - var measureCharTitle = document.createElement('div'); - measureCharTitle.className = 'yAxis title measure'; - measureCharTitle.appendChild(textTitle); - this.dom.frame.appendChild(measureCharTitle); - - this.props.titleCharHeight = measureCharTitle.clientHeight; - this.props.titleCharWidth = measureCharTitle.clientWidth; + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; - this.dom.frame.removeChild(measureCharTitle); + // Note: The calculation of width is an optimistic calculation, giving + // a width which will not change when moving the Timeline + // So no re-stacking needed, which is nicer for the eye; + } + else { + this.left = start; + this.width = boxWidth; + contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); } - }; - - /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * @param {Date} date the date to be snapped. - * @return {Date} snappedDate - */ - DataAxis.prototype.snap = function(date) { - return this.step.snap(date); - }; - module.exports = DataAxis; + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; + switch (this.options.align) { + case 'left': + this.dom.content.style.left = '0'; + break; -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { + case 'right': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; + break; - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Line = __webpack_require__(51); - var Bar = __webpack_require__(52); - var Points = __webpack_require__(53); + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; - /** - * /** - * @param {object} group | the object of the group from the dataset - * @param {string} groupId | ID of the group - * @param {object} options | the default options - * @param {array} groupsUsingDefaultStyles | this array has one entree. - * It is passed as an array so it is passed by reference. - * It enumerates through the default styles - * @constructor - */ - function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { - this.id = groupId; - var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] - this.options = util.selectiveBridgeObject(fields,options); - this.usingDefaultStyle = group.className === undefined; - this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; - this.zeroPosition = 0; - this.update(group); - if (this.usingDefaultStyle == true) { - this.groupsUsingDefaultStyles[0] += 1; + default: // 'auto' + // when range exceeds left of the window, position the contents at the left of the visible area + if (this.overflow) { + if (end > 0) { + contentLeft = Math.max(-start, 0); + } + else { + contentLeft = -contentWidth; // ensure it's not visible anymore + } + } + else { + if (start < 0) { + contentLeft = Math.min(-start, + (end - start - contentWidth - 2 * this.options.padding)); + // TODO: remove the need for options.padding. it's terrible. + } + else { + contentLeft = 0; + } + } + this.dom.content.style.left = contentLeft + 'px'; } - this.itemsData = []; - this.visible = group.visible === undefined ? true : group.visible; - } - + }; /** - * this loads a reference to all items in this group into this group. - * @param {array} items + * Reposition the item vertically + * @Override */ - GraphGroup.prototype.setItems = function(items) { - if (items != null) { - this.itemsData = items; - if (this.options.sort == true) { - this.itemsData.sort(function (a,b) {return a.x - b.x;}) - } + RangeItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + box = this.dom.box; + + if (orientation == 'top') { + box.style.top = this.top + 'px'; } else { - this.itemsData = []; + box.style.top = (this.parent.height - this.top - this.height) + 'px'; } }; - /** - * this is used for plotting barcharts, this way, we only have to calculate it once. - * @param pos + * Repaint a drag area on the left side of the range when the range is selected + * @protected */ - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; - }; + RangeItem.prototype._repaintDragLeft = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { + // create and show drag area + var dragLeft = document.createElement('div'); + dragLeft.className = 'drag-left'; + dragLeft.dragLeftItem = this; + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); + + this.dom.box.appendChild(dragLeft); + this.dom.dragLeft = dragLeft; + } + else if (!this.selected && this.dom.dragLeft) { + // delete drag area + if (this.dom.dragLeft.parentNode) { + this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); + } + this.dom.dragLeft = null; + } + }; /** - * set the options of the graph group over the default options. - * @param options + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; - util.selectiveDeepExtend(fields, this.options, options); - - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); + RangeItem.prototype._repaintDragRight = function () { + if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { + // create and show drag area + var dragRight = document.createElement('div'); + dragRight.className = 'drag-right'; + dragRight.dragRightItem = this; - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; - } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; - } - } - } - } - } + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); - if (this.options.style == 'line') { - this.type = new Line(this.id, this.options); - } - else if (this.options.style == 'bar') { - this.type = new Bar(this.id, this.options); + this.dom.box.appendChild(dragRight); + this.dom.dragRight = dragRight; } - else if (this.options.style == 'points') { - this.type = new Points(this.id, this.options); + else if (!this.selected && this.dom.dragRight) { + // delete drag area + if (this.dom.dragRight.parentNode) { + this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); + } + this.dom.dragRight = null; } }; + module.exports = RangeItem; - /** - * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph - * @param group - */ - GraphGroup.prototype.update = function(group) { - this.group = group; - this.content = group.content || 'graph'; - this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; - this.visible = group.visible === undefined ? true : group.visible; - this.style = group.style; - this.setOptions(group.options); - }; +/***/ }, +/* 25 */ +/***/ function(module, exports, __webpack_require__) { /** - * draw the icon for the legend. - * - * @param x - * @param y - * @param JSONcontainer - * @param SVGcontainer - * @param iconWidth - * @param iconHeight + * Prototype for visual components + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] + * @param {Object} [options] */ - GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { - var fillHeight = iconHeight * 0.5; - var path, fillPath; - - var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); - outline.setAttributeNS(null, "x", x); - outline.setAttributeNS(null, "y", y - fillHeight); - outline.setAttributeNS(null, "width", iconWidth); - outline.setAttributeNS(null, "height", 2*fillHeight); - outline.setAttributeNS(null, "class", "outline"); - - if (this.options.style == 'line') { - path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - path.setAttributeNS(null, "class", this.className); - if(this.style !== undefined) { - path.setAttributeNS(null, "style", this.style); - } - - path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); - if (this.options.shaded.enabled == true) { - fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); - if (this.options.shaded.orientation == 'top') { - fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + - "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); - } - else { - fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + - "L"+x+"," + (y + fillHeight) + " " + - "L"+ (x + iconWidth) + "," + (y + fillHeight) + - "L"+ (x + iconWidth) + ","+y); - } - fillPath.setAttributeNS(null, "class", this.className + " iconFill"); - } - - if (this.options.drawPoints.enabled == true) { - DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); - } - } - else { - var barWidth = Math.round(0.3 * iconWidth); - var bar1Height = Math.round(0.4 * iconHeight); - var bar2Height = Math.round(0.75 * iconHeight); - - var offset = Math.round((iconWidth - (2 * barWidth))/3); + function Component (body, options) { + this.options = null; + this.props = null; + } - DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); - DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); + /** + * Set options for the component. The new options will be merged into the + * current options. + * @param {Object} options + */ + Component.prototype.setOptions = function(options) { + if (options) { + util.extend(this.options, options); } }; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + Component.prototype.redraw = function() { + // should be implemented by the component + return false; + }; /** - * return the legend entree for this group. - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} + * Destroy the component. Cleanup DOM and event listeners */ - GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { - var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); - return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; - } + Component.prototype.destroy = function() { + // should be implemented by the component + }; - GraphGroup.prototype.getYRange = function(groupData) { - return this.type.getYRange(groupData); - } + /** + * Test whether the component is resized since the last time _isResized() was + * called. + * @return {Boolean} Returns true if the component is resized + * @protected + */ + Component.prototype._isResized = function() { + var resized = (this.props._previousWidth !== this.props.width || + this.props._previousHeight !== this.props.height); - GraphGroup.prototype.draw = function(dataset, group, framework) { - this.type.draw(dataset, group, framework); - } + this.props._previousWidth = this.props.width; + this.props._previousHeight = this.props.height; + return resized; + }; - module.exports = GraphGroup; + module.exports = Component; /***/ }, -/* 25 */ +/* 26 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var stack = __webpack_require__(18); - var RangeItem = __webpack_require__(35); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * A current time bar + * @param {{range: Range, dom: Object, domProps: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCurrentTime] + * @constructor CurrentTime + * @extends Component */ - function Group (groupId, data, itemSet) { - this.groupId = groupId; - this.subgroups = {}; - this.subgroupIndex = 0; - this.subgroupOrderer = data && data.subgroupOrder; - this.itemSet = itemSet; + function CurrentTime (body, options) { + this.body = body; - this.dom = {}; - this.props = { - label: { - width: 0, - height: 0 - } - }; - this.className = null; + // default options + this.defaultOptions = { + showCurrentTime: true, - this.items = {}; // items filtered by groupId of this group - this.visibleItems = []; // items currently visible in window - this.orderedItems = { - byStart: [], - byEnd: [] + locales: locales, + locale: 'en' }; - this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. - var me = this; - this.itemSet.body.emitter.on("checkRangedItems", function () { - me.checkRangedItems = true; - }) + this.options = util.extend({}, this.defaultOptions); + this.offset = 0; this._create(); - this.setData(data); + this.setOptions(options); } + CurrentTime.prototype = new Component(); + /** - * Create DOM elements for the group + * Create the HTML DOM for the current time bar * @private */ - Group.prototype._create = function() { - var label = document.createElement('div'); - label.className = 'vlabel'; - this.dom.label = label; - - var inner = document.createElement('div'); - inner.className = 'inner'; - label.appendChild(inner); - this.dom.inner = inner; - - var foreground = document.createElement('div'); - foreground.className = 'group'; - foreground['timeline-group'] = this; - this.dom.foreground = foreground; - - this.dom.background = document.createElement('div'); - this.dom.background.className = 'group'; - - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; + CurrentTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'currenttime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; - // create a hidden marker to detect when the Timelines container is attached - // to the DOM, or the style of a parent of the Timeline is changed from - // display:none is changed to visible. - this.dom.marker = document.createElement('div'); - this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? - this.dom.marker.innerHTML = '?'; - this.dom.background.appendChild(this.dom.marker); + this.bar = bar; }; /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className + * Destroy the CurrentTime bar */ - Group.prototype.setData = function(data) { - // update contents - var content = data && data.content; - if (content instanceof Element) { - this.dom.inner.appendChild(content); - } - else if (content !== undefined && content !== null) { - this.dom.inner.innerHTML = content; - } - else { - this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null - } + CurrentTime.prototype.destroy = function () { + this.options.showCurrentTime = false; + this.redraw(); // will remove the bar from the DOM and stop refreshing - // update title - this.dom.label.title = data && data.title || ''; + this.body = null; + }; - if (!this.dom.inner.firstChild) { - util.addClassName(this.dom.inner, 'hidden'); - } - else { - util.removeClassName(this.dom.inner, 'hidden'); + /** + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCurrentTime] + */ + CurrentTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); } + }; - // update className - var className = data && data.className || null; - if (className != this.className) { - if (this.className) { - util.removeClassName(this.dom.label, this.className); - util.removeClassName(this.dom.foreground, this.className); - util.removeClassName(this.dom.background, this.className); - util.removeClassName(this.dom.axis, this.className); + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CurrentTime.prototype.redraw = function() { + if (this.options.showCurrentTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + parent.appendChild(this.bar); + + this.start(); } - util.addClassName(this.dom.label, className); - util.addClassName(this.dom.foreground, className); - util.addClassName(this.dom.background, className); - util.addClassName(this.dom.axis, className); - this.className = className; - } - // update style - if (this.style) { - util.removeCssText(this.dom.label, this.style); - this.style = null; + var now = new Date(new Date().valueOf() + this.offset); + var x = this.body.util.toScreen(now); + + var locale = this.options.locales[this.options.locale]; + var title = locale.current + ' ' + locale.time + ': ' + moment(now).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); + + this.bar.style.left = x + 'px'; + this.bar.title = title; } - if (data && data.style) { - util.addCssText(this.dom.label, data.style); - this.style = data.style; + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); + } + this.stop(); } - }; - /** - * Get the width of the group label - * @return {number} width - */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; + return false; }; - /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized + * Start auto refreshing the current time bar */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; + CurrentTime.prototype.start = function() { + var me = this; - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + function update () { + me.stop(); - // force recalculation of the height of the items when the marker height changed - // (due to the Timeline being attached to the DOM or changed from display:none to visible) - var markerHeight = this.dom.marker.clientHeight; - if (markerHeight != this.lastMarkerHeight) { - this.lastMarkerHeight = markerHeight; + // determine interval to refresh + var scale = me.body.range.conversion(me.body.domProps.center.width).scale; + var interval = 1 / scale / 10; + if (interval < 30) interval = 30; + if (interval > 1000) interval = 1000; - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); - }); + me.redraw(); - restack = true; + // start a timer to adjust for the new time + me.currentTimeTimer = setTimeout(update, interval); } - // reposition visible items vertically - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - stack.stack(this.visibleItems, margin, restack); - } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + update(); + }; + + /** + * Stop auto refreshing the current time bar + */ + CurrentTime.prototype.stop = function() { + if (this.currentTimeTimer !== undefined) { + clearTimeout(this.currentTimeTimer); + delete this.currentTimeTimer; } + }; - // recalculate the height of the group - var height = this._calculateHeight(margin); + /** + * Set a current time. This can be used for example to ensure that a client's + * time is synchronized with a shared server time. + * @param {Date | String | Number} time A Date, unix timestamp, or + * ISO date string. + */ + CurrentTime.prototype.setCurrentTime = function(time) { + var t = util.convert(time, 'Date').valueOf(); + var now = new Date().valueOf(); + this.offset = t - now; + this.redraw(); + }; - // calculate actual size and position - var foreground = this.dom.foreground; - this.top = foreground.offsetTop; - this.left = foreground.offsetLeft; - this.width = foreground.offsetWidth; - resized = util.updateProperty(this, 'height', height) || resized; + /** + * Get the current time. + * @return {Date} Returns the current time. + */ + CurrentTime.prototype.getCurrentTime = function() { + return new Date(new Date().valueOf() + this.offset); + }; - // recalculate size of label - resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; - resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; + module.exports = CurrentTime; - // apply new height - this.dom.background.style.height = height + 'px'; - this.dom.foreground.style.height = height + 'px'; - this.dom.label.style.height = height + 'px'; - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); - } +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { - return resized; - }; + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * recalculate the height of the group - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @returns {number} Returns the height - * @private + * A custom time bar + * @param {{range: Range, dom: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCustomTime] + * @constructor CustomTime + * @extends Component */ - Group.prototype._calculateHeight = function (margin) { - // recalculate the height of the group - var height; - var visibleItems = this.visibleItems; - //var visibleSubgroups = []; - //this.visibleSubgroups = 0; - this.resetSubgroups(); - var me = this; - if (visibleItems.length) { - var min = visibleItems[0].top; - var max = visibleItems[0].top + visibleItems[0].height; - util.forEach(visibleItems, function (item) { - min = Math.min(min, item.top); - max = Math.max(max, (item.top + item.height)); - if (item.data.subgroup !== undefined) { - me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); - me.subgroups[item.data.subgroup].visible = true; - //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ - // visibleSubgroups.push(item.data.subgroup); - // me.visibleSubgroups += 1; - //} - } - }); - if (min > margin.axis) { - // there is an empty gap between the lowest item and the axis - var offset = min - margin.axis; - max -= offset; - util.forEach(visibleItems, function (item) { - item.top -= offset; - }); - } - height = max + margin.item.vertical / 2; - } - else { - height = margin.axis + margin.item.vertical; - } - height = Math.max(height, this.props.label.height); - return height; - }; + function CustomTime (body, options) { + this.body = body; - /** - * Show this group: attach to the DOM - */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); - } + // default options + this.defaultOptions = { + showCustomTime: false, + locales: locales, + locale: 'en' + }; + this.options = util.extend({}, this.defaultOptions); - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); - } + this.customTime = new Date(); + this.eventParams = {}; // stores state parameters while dragging the bar - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } + // create the DOM + this._create(); - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); - } - }; + this.setOptions(options); + } + + CustomTime.prototype = new Component(); /** - * Hide this group: remove from the DOM + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCustomTime] */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); + CustomTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCustomTime', 'locale', 'locales'], this.options, options); } + }; - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); - } + /** + * Create the DOM for the custom time + * @private + */ + CustomTime.prototype._create = function() { + var bar = document.createElement('div'); + bar.className = 'customtime'; + bar.style.position = 'absolute'; + bar.style.top = '0px'; + bar.style.height = '100%'; + this.bar = bar; - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); - } + var drag = document.createElement('div'); + drag.style.position = 'relative'; + drag.style.top = '0px'; + drag.style.left = '-10px'; + drag.style.height = '100%'; + drag.style.width = '20px'; + bar.appendChild(drag); - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); - } + // attach event listeners + this.hammer = Hammer(bar, { + prevent_default: true + }); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); }; /** - * Add an item to the group - * @param {Item} item + * Destroy the CustomTime bar */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); + CustomTime.prototype.destroy = function () { + this.options.showCustomTime = false; + this.redraw(); // will remove the bar from the DOM - // add to - if (item.data.subgroup !== undefined) { - if (this.subgroups[item.data.subgroup] === undefined) { - this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; - this.subgroupIndex++; - } - this.subgroups[item.data.subgroup].items.push(item); - } - this.orderSubgroups(); + this.hammer.enable(false); + this.hammer = null; - if (this.visibleItems.indexOf(item) == -1) { - var range = this.itemSet.body.range; // TODO: not nice accessing the range like this - this._checkIfVisible(item, this.visibleItems, range); - } + this.body = null; }; - Group.prototype.orderSubgroups = function() { - if (this.subgroupOrderer !== undefined) { - var sortArray = []; - if (typeof this.subgroupOrderer == 'string') { - for (var subgroup in this.subgroups) { - sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) - } - sortArray.sort(function (a, b) { - return a.sortField - b.sortField; - }) - } - else if (typeof this.subgroupOrderer == 'function') { - for (var subgroup in this.subgroups) { - sortArray.push(this.subgroups[subgroup].items[0].data); + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + CustomTime.prototype.redraw = function () { + if (this.options.showCustomTime) { + var parent = this.body.dom.backgroundVertical; + if (this.bar.parentNode != parent) { + // attach to the dom + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } - sortArray.sort(this.subgroupOrderer); + parent.appendChild(this.bar); } - if (sortArray.length > 0) { - for (var i = 0; i < sortArray.length; i++) { - this.subgroups[sortArray[i].subgroup].index = i; - } - } - } - }; + var x = this.body.util.toScreen(this.customTime); - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; + var locale = this.options.locales[this.options.locale]; + var title = locale.time + ': ' + moment(this.customTime).format('dddd, MMMM Do YYYY, H:mm:ss'); + title = title.charAt(0).toUpperCase() + title.substring(1); + + this.bar.style.left = x + 'px'; + this.bar.title = title; + } + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } } + + return false; }; /** - * Remove an item from the group - * @param {Item} item + * Set custom time. + * @param {Date | number | string} time */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(null); - - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); - - // TODO: also remove from ordered items? + CustomTime.prototype.setCustomTime = function(time) { + this.customTime = util.convert(time, 'Date'); + this.redraw(); }; - /** - * Remove an item from the corresponding DataSet - * @param {Item} item + * Retrieve the current custom time. + * @return {Date} customTime */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); + CustomTime.prototype.getCustomTime = function() { + return new Date(this.customTime.valueOf()); }; - /** - * Reorder the items + * Start moving horizontally + * @param {Event} event + * @private */ - Group.prototype.order = function() { - var array = util.toArray(this.items); - var startArray = []; - var endArray = []; - - for (var i = 0; i < array.length; i++) { - if (array[i].data.end !== undefined) { - endArray.push(array[i]); - } - startArray.push(array[i]); - } - this.orderedItems = { - byStart: startArray, - byEnd: endArray - }; + CustomTime.prototype._onDragStart = function(event) { + this.eventParams.dragging = true; + this.eventParams.customTime = this.customTime; - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); + event.stopPropagation(); + event.preventDefault(); }; - /** - * Update the visible items - * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date - * @param {Item[]} visibleItems The previously visible items. - * @param {{start: number, end: number}} range Visible range - * @return {Item[]} visibleItems The new visible items. + * Perform moving operating. + * @param {Event} event * @private */ - Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { - var visibleItems = []; - var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems - var interval = (range.end - range.start) / 4; - var lowerBound = range.start - interval; - var upperBound = range.end + interval; - var item, i; + CustomTime.prototype._onDrag = function (event) { + if (!this.eventParams.dragging) return; - // this function is used to do the binary search. - var searchFunction = function (value) { - if (value < lowerBound) {return -1;} - else if (value <= upperBound) {return 0;} - else {return 1;} - } + var deltaX = event.gesture.deltaX, + x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, + time = this.body.util.toTime(x); - // first check if the items that were in view previously are still in view. - // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! - // also cleans up invisible items. - if (oldVisibleItems.length > 0) { - for (i = 0; i < oldVisibleItems.length; i++) { - this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); - } - } + this.setCustomTime(time); - // we do a binary search for the items that have only start values. - var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); + // fire a timechange event + this.body.emitter.emit('timechange', { + time: new Date(this.customTime.valueOf()) + }); - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. - this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { - return (item.data.start < lowerBound || item.data.start > upperBound); + event.stopPropagation(); + event.preventDefault(); + }; + + /** + * Stop moving operating. + * @param {event} event + * @private + */ + CustomTime.prototype._onDragEnd = function (event) { + if (!this.eventParams.dragging) return; + + // fire a timechanged event + this.body.emitter.emit('timechanged', { + time: new Date(this.customTime.valueOf()) }); - // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. - // We therefore have to brute force check all items in the byEnd list - if (this.checkRangedItems == true) { - this.checkRangedItems = false; - for (i = 0; i < orderedItems.byEnd.length; i++) { - this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); - } - } - else { - // we do a binary search for the items that have defined end times. - var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); + event.stopPropagation(); + event.preventDefault(); + }; - // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. - this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { - return (item.data.end < lowerBound || item.data.end > upperBound); - }); - } + module.exports = CustomTime; - // finally, we reposition all the visible items. - for (i = 0; i < visibleItems.length; i++) { - item = visibleItems[i]; - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - } - - // debug - //console.log("new line") - //if (this.groupId == null) { - // for (i = 0; i < orderedItems.byStart.length; i++) { - // item = orderedItems.byStart[i].data; - // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") - // } - // for (i = 0; i < orderedItems.byEnd.length; i++) { - // item = orderedItems.byEnd[i].data; - // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") - // } - //} - - return visibleItems; - }; - - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { - var item; - var i; - - if (initialPos != -1) { - for (i = initialPos; i >= 0; i--) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - } - - for (i = initialPos + 1; i < items.length; i++) { - item = items[i]; - if (breakCondition(item)) { - break; - } - else { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); - } - } - } - } - } +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); + var DataStep = __webpack_require__(16); /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body */ - Group.prototype._checkIfVisible = function(item, visibleItems, range) { - if (item.isVisible(range)) { - if (!item.displayed) item.show(); - // reposition item horizontally - item.repositionX(); - visibleItems.push(item); - } - else { - if (item.displayed) item.hide(); - } - }; - + function DataAxis (body, options, svg, linegraphOptions) { + this.id = util.randomUUID(); + this.body = body; - /** - * this function is very similar to the _checkIfInvisible() but it does not - * return booleans, hides the item if it should not be seen and always adds to - * the visibleItems. - * this one is for brute forcing and hiding. - * - * @param {Item} item - * @param {Array} visibleItems - * @param {{start:number, end:number}} range - * @private - */ - Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { - if (item.isVisible(range)) { - if (visibleItemsLookup[item.id] === undefined) { - visibleItemsLookup[item.id] = true; - visibleItems.push(item); + this.defaultOptions = { + orientation: 'left', // supported: 'left', 'right' + showMinorLabels: true, + showMajorLabels: true, + icons: true, + majorLinesOffset: 7, + minorLinesOffset: 4, + labelOffsetX: 10, + labelOffsetY: 2, + iconWidth: 20, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + }, + title: { + left: {text:undefined}, + right: {text:undefined} + }, + format: { + left: {decimals: undefined}, + right: {decimals: undefined} } - } - else { - if (item.displayed) item.hide(); - } - }; + }; + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {}, + title: {} + }; + this.dom = {}; - module.exports = Group; + this.range = {start:0, end:0}; + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; + this.hidden = false; - var util = __webpack_require__(1); - var Group = __webpack_require__(25); + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.zeroCrossing = -1; - /** - * @constructor BackgroundGroup - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet - */ - function BackgroundGroup (groupId, data, itemSet) { - Group.call(this, groupId, data, itemSet); + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; + this.iconsRemoved = false; - this.width = 0; - this.height = 0; - this.top = 0; - this.left = 0; - } - BackgroundGroup.prototype = Object.create(Group.prototype); + this.groups = {}; + this.amountOfGroups = 0; - /** - * Repaint this group - * @param {{start: number, end: number}} range - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @param {boolean} [restack=false] Force restacking of all items - * @return {boolean} Returns true if the group is resized - */ - BackgroundGroup.prototype.redraw = function(range, margin, restack) { - var resized = false; + // create the HTML DOM + this._create(); - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); + var me = this; + this.body.emitter.on("verticalDrag", function() { + me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; + }); + } - // calculate actual size - this.width = this.dom.background.offsetWidth; + DataAxis.prototype = new Component(); - // apply new height (just always zero for BackgroundGroup - this.dom.background.style.height = '0'; - // update vertical position of items after they are re-stacked and the height of the group is calculated - for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { - var item = this.visibleItems[i]; - item.repositionY(margin); + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; } + this.amountOfGroups += 1; + }; - return resized; + DataAxis.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; }; - /** - * Show this group: attach to the DOM - */ - BackgroundGroup.prototype.show = function() { - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); + DataAxis.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; } }; - module.exports = BackgroundGroup; - -/***/ }, -/* 27 */ -/***/ function(module, exports, __webpack_require__) { + DataAxis.prototype.setOptions = function (options) { + if (options) { + var redraw = false; + if (this.options.orientation != options.orientation && options.orientation !== undefined) { + redraw = true; + } + var fields = [ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'icons', + 'majorLinesOffset', + 'minorLinesOffset', + 'labelOffsetX', + 'labelOffsetY', + 'iconWidth', + 'width', + 'visible', + 'customRange', + 'title', + 'format', + 'alignZeros' + ]; + util.selectiveExtend(fields, this.options, options); - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Component = __webpack_require__(20); - var Group = __webpack_require__(25); - var BackgroundGroup = __webpack_require__(26); - var BoxItem = __webpack_require__(33); - var PointItem = __webpack_require__(34); - var RangeItem = __webpack_require__(35); - var BackgroundItem = __webpack_require__(32); + this.minWidth = Number(('' + this.options.width).replace("px","")); + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); + } + } + }; - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - var BACKGROUND = '__background__'; // reserved group id for background items without group /** - * An ItemSet holds a set of items and ranges which can be displayed in a - * range. The width is determined by the parent of the ItemSet, and the height - * is determined by the size of the items. - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See ItemSet.setOptions for the available options. - * @constructor ItemSet - * @extends Component + * Create the HTML DOM for the DataAxis */ - function ItemSet(body, options) { - this.body = body; + DataAxis.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.style.width = this.options.width; + this.dom.frame.style.height = this.height; - this.defaultOptions = { - type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' - align: 'auto', // alignment of box items - stack: true, - groupOrder: null, + this.dom.lineContainer = document.createElement('div'); + this.dom.lineContainer.style.width = '100%'; + this.dom.lineContainer.style.height = this.height; + this.dom.lineContainer.style.position = 'relative'; - selectable: true, - editable: { - updateTime: false, - updateGroup: false, - add: false, - remove: false - }, + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = "absolute"; + this.svg.style.top = '0px'; + this.svg.style.height = '100%'; + this.svg.style.width = '100%'; + this.svg.style.display = "block"; + this.dom.frame.appendChild(this.svg); + }; - onAdd: function (item, callback) { - callback(item); - }, - onUpdate: function (item, callback) { - callback(item); - }, - onMove: function (item, callback) { - callback(item); - }, - onRemove: function (item, callback) { - callback(item); - }, - onMoving: function (item, callback) { - callback(item); - }, + DataAxis.prototype._redrawGroupIcons = function () { + DOMutil.prepareElements(this.svgElements); - margin: { - item: { - horizontal: 10, - vertical: 10 - }, - axis: 20 - }, - padding: 5 - }; + var x; + var iconWidth = this.options.iconWidth; + var iconHeight = 15; + var iconOffset = 4; + var y = iconOffset + 0.5 * iconHeight; - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); + if (this.options.orientation == 'left') { + x = iconOffset; + } + else { + x = this.width - iconWidth - iconOffset; + } - // options for getting items from the DataSet with the correct type - this.itemOptions = { - type: {start: 'Date', end: 'Date'} - }; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + iconOffset; + } + } + } - this.conversion = { - toScreen: body.util.toScreen, - toTime: body.util.toTime - }; - this.dom = {}; - this.props = {}; - this.hammer = null; + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = false; + }; - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + DataAxis.prototype._cleanupIcons = function() { + if (this.iconsRemoved == false) { + DOMutil.prepareElements(this.svgElements); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = true; + } + } - // listeners for the DataSet of the items - this.itemListeners = { - 'add': function (event, params, senderId) { - me._onAdd(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdate(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemove(params.items); + /** + * Create the HTML DOM for the DataAxis + */ + DataAxis.prototype.show = function() { + this.hidden = false; + if (!this.dom.frame.parentNode) { + if (this.options.orientation == 'left') { + this.body.dom.left.appendChild(this.dom.frame); } - }; - - // listeners for the DataSet of the groups - this.groupListeners = { - 'add': function (event, params, senderId) { - me._onAddGroups(params.items); - }, - 'update': function (event, params, senderId) { - me._onUpdateGroups(params.items); - }, - 'remove': function (event, params, senderId) { - me._onRemoveGroups(params.items); + else { + this.body.dom.right.appendChild(this.dom.frame); } - }; - - this.items = {}; // object with an Item for every data item - this.groups = {}; // Group object for every group - this.groupIds = []; - - this.selection = []; // list with the ids of all selected nodes - this.stackDirty = true; // if true, all items will be restacked on next redraw - - this.touchParams = {}; // stores properties while dragging - // create the HTML DOM + } - this._create(); + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); + } + }; - this.setOptions(options); - } + /** + * Create the HTML DOM for the DataAxis + */ + DataAxis.prototype.hide = function() { + this.hidden = true; + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } - ItemSet.prototype = new Component(); + if (this.dom.lineContainer.parentNode) { + this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + } + }; - // available item types will be registered here - ItemSet.types = { - background: BackgroundItem, - box: BoxItem, - range: RangeItem, - point: PointItem + /** + * Set a range (start and end) + * @param end + * @param start + * @param end + */ + DataAxis.prototype.setRange = function (start, end) { + if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { + if (start > 0) { + start = 0; + } + } + this.range.start = start; + this.range.end = end; }; /** - * Create the HTML DOM for the ItemSet + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - ItemSet.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'itemset'; - frame['timeline-itemset'] = this; - this.dom.frame = frame; + DataAxis.prototype.redraw = function () { + var resized = false; + var activeGroups = 0; + + // Make sure the line container adheres to the vertical scrolling. + this.dom.lineContainer.style.top = this.body.domProps.scrollTop + 'px'; - // create background panel - var background = document.createElement('div'); - background.className = 'background'; - frame.appendChild(background); - this.dom.background = background; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; + } + } + } + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); - // create foreground panel - var foreground = document.createElement('div'); - foreground.className = 'foreground'; - frame.appendChild(foreground); - this.dom.foreground = foreground; + // svg offsetheight did not work in firefox and explorer... + this.dom.lineContainer.style.height = this.height + 'px'; + this.width = this.options.visible == true ? Number(('' + this.options.width).replace("px","")) : 0; - // create axis panel - var axis = document.createElement('div'); - axis.className = 'axis'; - this.dom.axis = axis; + var props = this.props; + var frame = this.dom.frame; - // create labelset - var labelSet = document.createElement('div'); - labelSet.className = 'labelset'; - this.dom.labelSet = labelSet; + // update classname + frame.className = 'dataaxis'; - // create ungrouped Group - this._updateUngrouped(); + // calculate character width and height + this._calculateCharSize(); - // create background Group - var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); - backgroundGroup.show(); - this.groups[BACKGROUND] = backgroundGroup; + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; - // attach event listeners - // Note: we bind to the centerContainer for the case where the height - // of the center container is larger than of the ItemSet, so we - // can click in the empty area to create a new item or deselect an item. - this.hammer = Hammer(this.body.dom.centerContainer, { - preventDefault: true - }); + // determine the width and height of the elements for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - // drag items when selected - this.hammer.on('touch', this._onTouch.bind(this)); - this.hammer.on('dragstart', this._onDragStart.bind(this)); - this.hammer.on('drag', this._onDrag.bind(this)); - this.hammer.on('dragend', this._onDragEnd.bind(this)); + props.minorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.minorLinesOffset; + props.minorLineHeight = 1; + props.majorLineWidth = this.body.dom.backgroundHorizontal.offsetWidth - this.lineOffset - this.width + 2 * this.options.majorLinesOffset; + props.majorLineHeight = 1; - // single select (or unselect) when tapping an item - this.hammer.on('tap', this._onSelectItem.bind(this)); + // take frame offline while updating (is almost twice as fast) + if (orientation == 'left') { + frame.style.top = '0'; + frame.style.left = '0'; + frame.style.bottom = ''; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.left.width; + this.props.height = this.body.domProps.left.height; + } + else { // right + frame.style.top = ''; + frame.style.bottom = '0'; + frame.style.left = '0'; + frame.style.width = this.width + 'px'; + frame.style.height = this.height + "px"; + this.props.width = this.body.domProps.right.width; + this.props.height = this.body.domProps.right.height; + } - // multi select when holding mouse/touch, or on ctrl+click - this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + resized = this._redrawLabels(); + resized = this._isResized() || resized; - // add item on doubletap - this.hammer.on('doubletap', this._onAddItem.bind(this)); + if (this.options.icons == true) { + this._redrawGroupIcons(); + } + else { + this._cleanupIcons(); + } - // attach to the DOM - this.show(); + this._redrawTitle(orientation); + } + return resized; }; /** - * Set options for the ItemSet. Existing options will be extended/overwritten. - * @param {Object} [options] The following options are available: - * {String} type - * Default type for the items. Choose from 'box' - * (default), 'point', 'range', or 'background'. - * The default style can be overwritten by - * individual items. - * {String} align - * Alignment for the items, only applicable for - * BoxItem. Choose 'center' (default), 'left', or - * 'right'. - * {String} orientation - * Orientation of the item set. Choose 'top' or - * 'bottom' (default). - * {Function} groupOrder - * A sorting function for ordering groups - * {Boolean} stack - * If true (deafult), items will be stacked on - * top of each other. - * {Number} margin.axis - * Margin between the axis and the items in pixels. - * Default is 20. - * {Number} margin.item.horizontal - * Horizontal margin between items in pixels. - * Default is 10. - * {Number} margin.item.vertical - * Vertical Margin between items in pixels. - * Default is 10. - * {Number} margin.item - * Margin between items in pixels in both horizontal - * and vertical direction. Default is 10. - * {Number} margin - * Set margin for both axis and items in pixels. - * {Number} padding - * Padding of the contents of an item in pixels. - * Must correspond with the items css. Default is 5. - * {Boolean} selectable - * If true (default), items can be selected. - * {Boolean} editable - * Set all editable options to true or false - * {Boolean} editable.updateTime - * Allow dragging an item to an other moment in time - * {Boolean} editable.updateGroup - * Allow dragging an item to an other group - * {Boolean} editable.add - * Allow creating new items on double tap - * {Boolean} editable.remove - * Allow removing items by clicking the delete button - * top right of a selected item. - * {Function(item: Item, callback: Function)} onAdd - * Callback function triggered when an item is about to be added: - * when the user double taps an empty space in the Timeline. - * {Function(item: Item, callback: Function)} onUpdate - * Callback function fired when an item is about to be updated. - * This function typically has to show a dialog where the user - * change the item. If not implemented, nothing happens. - * {Function(item: Item, callback: Function)} onMove - * Fired when an item has been moved. If not implemented, - * the move action will be accepted. - * {Function(item: Item, callback: Function)} onRemove - * Fired when an item is about to be deleted. - * If not implemented, the item will be always removed. + * Repaint major and minor text labels and vertical grid lines + * @private */ - ItemSet.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide']; - util.selectiveExtend(fields, this.options, options); + DataAxis.prototype._redrawLabels = function () { + var resized = false; + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - if ('margin' in options) { - if (typeof options.margin === 'number') { - this.options.margin.axis = options.margin; - this.options.margin.item.horizontal = options.margin; - this.options.margin.item.vertical = options.margin; - } - else if (typeof options.margin === 'object') { - util.selectiveExtend(['axis'], this.options.margin, options.margin); - if ('item' in options.margin) { - if (typeof options.margin.item === 'number') { - this.options.margin.item.horizontal = options.margin.item; - this.options.margin.item.vertical = options.margin.item; - } - else if (typeof options.margin.item === 'object') { - util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); - } - } - } + var orientation = this.options['orientation']; + + // calculate range and step (step such that we have space for 7 characters per label) + var minimumStep = this.master ? this.props.majorCharHeight || 10 : this.stepPixelsForced; + + var step = new DataStep( + this.range.start, + this.range.end, + minimumStep, + this.dom.frame.offsetHeight, + this.options.customRange[this.options.orientation], + this.master == false && this.options.alignZeros // doess the step have to align zeros? only if not master and the options is on + ); + + this.step = step; + // get the distance in pixels for a step + // dead space is space that is "left over" after a step + var stepPixels = (this.dom.frame.offsetHeight - (step.deadSpace * (this.dom.frame.offsetHeight / step.marginRange))) / (((step.marginRange - step.deadSpace) / step.step)); + + this.stepPixels = stepPixels; + + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; + + // the slave axis needs to use the same horizontal lines as the master axis. + if (this.master == false) { + stepPixels = this.stepPixelsForced; + stepDifference = Math.round((this.dom.frame.offsetHeight / stepPixels) - amountOfSteps); + for (var i = 0; i < 0.5 * stepDifference; i++) { + step.previous(); } + amountOfSteps = this.height / stepPixels; - if ('editable' in options) { - if (typeof options.editable === 'boolean') { - this.options.editable.updateTime = options.editable; - this.options.editable.updateGroup = options.editable; - this.options.editable.add = options.editable; - this.options.editable.remove = options.editable; + if (this.zeroCrossing != -1 && this.options.alignZeros == true) { + var zeroStepDifference = (step.marginEnd / step.step) - this.zeroCrossing; + if (zeroStepDifference > 0) { + for (var i = 0; i < zeroStepDifference; i++) {step.next();} } - else if (typeof options.editable === 'object') { - util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + else if (zeroStepDifference < 0) { + for (var i = 0; i < -zeroStepDifference; i++) {step.previous();} } } + } + else { + amountOfSteps += 0.25; + } - // callback functions - var addCallback = (function (name) { - var fn = options[name]; - if (fn) { - if (!(fn instanceof Function)) { - throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); - } - this.options[name] = fn; - } - }).bind(this); - ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - // force the itemSet to refresh: options like orientation and margins may be changed - this.markDirty(); + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; + + // do not draw the first label + var max = 1; + + // Get the number of decimal places + var decimals; + if(this.options.format[orientation] !== undefined) { + decimals = this.options.format[orientation].decimals; } - }; - /** - * Mark the ItemSet dirty so it will refresh everything with next redraw - */ - ItemSet.prototype.markDirty = function() { - this.groupIds = []; - this.stackDirty = true; - }; + this.maxLabelSize = 0; + var y = 0; + while (max < Math.round(amountOfSteps)) { + step.next(); + y = Math.round(max * stepPixels); + marginStartPos = max * stepPixels; + var isMajor = step.isMajor(); - /** - * Destroy the ItemSet - */ - ItemSet.prototype.destroy = function() { - this.hide(); - this.setItems(null); - this.setGroups(null); + if (this.options['showMinorLabels'] && isMajor == false || this.master == false && this.options['showMinorLabels'] == true) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis minor', this.props.minorCharHeight); + } - this.hammer = null; + if (isMajor && this.options['showMajorLabels'] && this.master == true || + this.options['showMinorLabels'] == false && this.master == false && isMajor == true) { + if (y >= 0) { + this._redrawLabel(y - 2, step.getCurrent(decimals), orientation, 'yAxis major', this.props.majorCharHeight); + } + this._redrawLine(y, orientation, 'grid horizontal major', this.options.majorLinesOffset, this.props.majorLineWidth); + } + else { + this._redrawLine(y, orientation, 'grid horizontal minor', this.options.minorLinesOffset, this.props.minorLineWidth); + } - this.body = null; - this.conversion = null; - }; + if (this.master == true && step.current == 0) { + this.zeroCrossing = max; + } - /** - * Hide the component from the DOM - */ - ItemSet.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + max++; } - // remove the axis with dots - if (this.dom.axis.parentNode) { - this.dom.axis.parentNode.removeChild(this.dom.axis); + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); } - - // remove the labelset containing all group labels - if (this.dom.labelSet.parentNode) { - this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); + else { + this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; } - }; - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - ItemSet.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); + // Note that title is rotated, so we're using the height, not width! + var titleWidth = 0; + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + titleWidth = this.props.titleCharHeight; } + var offset = this.options.icons == true ? Math.max(this.options.iconWidth, titleWidth) + this.options.labelOffsetX + 15 : titleWidth + this.options.labelOffsetX + 15; - // show axis with dots - if (!this.dom.axis.parentNode) { - this.body.dom.backgroundVertical.appendChild(this.dom.axis); + // this will resize the yAxis to accommodate the labels. + if (this.maxLabelSize > (this.width - offset) && this.options.visible == true) { + this.width = this.maxLabelSize + offset; + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; } - - // show labelset containing labels - if (!this.dom.labelSet.parentNode) { - this.body.dom.left.appendChild(this.dom.labelSet); + // this will resize the yAxis if it is too big for the labels. + else if (this.maxLabelSize < (this.width - offset) && this.options.visible == true && this.width > this.minWidth) { + this.width = Math.max(this.minWidth,this.maxLabelSize + offset); + this.options.width = this.width + "px"; + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + this.redraw(); + resized = true; + } + else { + DOMutil.cleanupElements(this.DOMelements.lines); + DOMutil.cleanupElements(this.DOMelements.labels); + resized = false; } + + return resized; + }; + + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; }; /** - * Set selected items by their id. Replaces the current selection - * Unknown id's are silently ignored. - * @param {string[] | string} [ids] An array with zero or more id's of the items to be - * selected, or a single item id. If ids is undefined - * or an empty array, all items will be unselected. + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ - ItemSet.prototype.setSelection = function(ids) { - var i, ii, id, item; + DataAxis.prototype._redrawLabel = function (y, text, orientation, className, characterHeight) { + // reuse redundant label + var label = DOMutil.getDOMElement('div',this.DOMelements.labels, this.dom.frame); //this.dom.redundant.labels.shift(); + label.className = className; + label.innerHTML = text; + if (orientation == 'left') { + label.style.left = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "right"; + } + else { + label.style.right = '-' + this.options.labelOffsetX + 'px'; + label.style.textAlign = "left"; + } - if (ids == undefined) ids = []; - if (!Array.isArray(ids)) ids = [ids]; + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; - // unselect currently selected items - for (i = 0, ii = this.selection.length; i < ii; i++) { - id = this.selection[i]; - item = this.items[id]; - if (item) item.unselect(); - } + text += ''; - // select items - this.selection = []; - for (i = 0, ii = ids.length; i < ii; i++) { - id = ids[i]; - item = this.items[id]; - if (item) { - this.selection.push(id); - item.select(); - } + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; } }; /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width */ - ItemSet.prototype.getSelection = function() { - return this.selection.concat([]); + DataAxis.prototype._redrawLine = function (y, orientation, className, offset, width) { + if (this.master == true) { + var line = DOMutil.getDOMElement('div',this.DOMelements.lines, this.dom.lineContainer);//this.dom.redundant.lines.shift(); + line.className = className; + line.innerHTML = ''; + + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; + } + + line.style.width = width + 'px'; + line.style.top = y + 'px'; + } }; /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items + * Create a title for the axis + * @private + * @param orientation */ - ItemSet.prototype.getVisibleItems = function() { - var range = this.body.range.getRange(); - var left = this.body.util.toScreen(range.start); - var right = this.body.util.toScreen(range.end); + DataAxis.prototype._redrawTitle = function (orientation) { + DOMutil.prepareElements(this.DOMelements.title); - var ids = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - var group = this.groups[groupId]; - var rawVisibleItems = group.visibleItems; + // Check if the title is defined for this axes + if (this.options.title[orientation] !== undefined && this.options.title[orientation].text !== undefined) { + var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); + title.className = 'yAxis title ' + orientation; + title.innerHTML = this.options.title[orientation].text; - // filter the "raw" set with visibleItems into a set which is really - // visible by pixels - for (var i = 0; i < rawVisibleItems.length; i++) { - var item = rawVisibleItems[i]; - // TODO: also check whether visible vertically - if ((item.left < right) && (item.left + item.width > left)) { - ids.push(item.id); - } - } + // Add style - if provided + if (this.options.title[orientation].style !== undefined) { + util.addCssText(title, this.options.title[orientation].style); + } + + if (orientation == 'left') { + title.style.left = this.props.titleCharHeight + 'px'; + } + else { + title.style.right = this.props.titleCharHeight + 'px'; } + + title.style.width = this.height + 'px'; } - return ids; + // we need to clean up in case we did not use all elements. + DOMutil.cleanupElements(this.DOMelements.title); }; + + + /** - * Deselect a selected item - * @param {String | Number} id + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. * @private */ - ItemSet.prototype._deselect = function(id) { - var selection = this.selection; - for (var i = 0, ii = selection.length; i < ii; i++) { - if (selection[i] == id) { // non-strict comparison! - selection.splice(i, 1); - break; - } - } - }; + DataAxis.prototype._calculateCharSize = function () { + // determine the char width and height on the minor axis + if (!('minorCharHeight' in this.props)) { + var textMinor = document.createTextNode('0'); + var measureCharMinor = document.createElement('div'); + measureCharMinor.className = 'yAxis minor measure'; + measureCharMinor.appendChild(textMinor); + this.dom.frame.appendChild(measureCharMinor); - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - ItemSet.prototype.redraw = function() { - var margin = this.options.margin, - range = this.body.range, - asSize = util.option.asSize, - options = this.options, - orientation = options.orientation, - resized = false, - frame = this.dom.frame, - editable = options.editable.updateTime || options.editable.updateGroup; + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; - // recalculate absolute position (before redrawing groups) - this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; - this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + this.dom.frame.removeChild(measureCharMinor); + } - // update class name - frame.className = 'itemset' + (editable ? ' editable' : ''); + if (!('majorCharHeight' in this.props)) { + var textMajor = document.createTextNode('0'); + var measureCharMajor = document.createElement('div'); + measureCharMajor.className = 'yAxis major measure'; + measureCharMajor.appendChild(textMajor); + this.dom.frame.appendChild(measureCharMajor); - // reorder the groups (if needed) - resized = this._orderGroups() || resized; + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; - // check whether zoomed (in that case we need to re-stack everything) - // TODO: would be nicer to get this as a trigger from Range - var visibleInterval = range.end - range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); - if (zoomed) this.stackDirty = true; - this.lastVisibleInterval = visibleInterval; - this.props.lastWidth = this.props.width; - - var restack = this.stackDirty; - var firstGroup = this._firstGroup(); - var firstMargin = { - item: margin.item, - axis: margin.axis - }; - var nonFirstMargin = { - item: margin.item, - axis: margin.item.vertical / 2 - }; - var height = 0; - var minHeight = margin.axis + margin.item.vertical; - - // redraw the background group - this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); - - // redraw all regular groups - util.forEach(this.groups, function (group) { - var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; - var groupResized = group.redraw(range, groupMargin, restack); - resized = groupResized || resized; - height += group.height; - }); - height = Math.max(height, minHeight); - this.stackDirty = false; - - // update frame height - frame.style.height = asSize(height); - - // calculate actual size - this.props.width = frame.offsetWidth; - this.props.height = height; + this.dom.frame.removeChild(measureCharMajor); + } - // reposition axis - this.dom.axis.style.top = asSize((orientation == 'top') ? - (this.body.domProps.top.height + this.body.domProps.border.top) : - (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); - this.dom.axis.style.left = '0'; + if (!('titleCharHeight' in this.props)) { + var textTitle = document.createTextNode('0'); + var measureCharTitle = document.createElement('div'); + measureCharTitle.className = 'yAxis title measure'; + measureCharTitle.appendChild(textTitle); + this.dom.frame.appendChild(measureCharTitle); - // check if this component is resized - resized = this._isResized() || resized; + this.props.titleCharHeight = measureCharTitle.clientHeight; + this.props.titleCharWidth = measureCharTitle.clientWidth; - return resized; + this.dom.frame.removeChild(measureCharTitle); + } }; /** - * Get the first group, aligned with the axis - * @return {Group | null} firstGroup - * @private + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * @param {Date} date the date to be snapped. + * @return {Date} snappedDate */ - ItemSet.prototype._firstGroup = function() { - var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); - var firstGroupId = this.groupIds[firstGroupIndex]; - var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; - - return firstGroup || null; + DataAxis.prototype.snap = function(date) { + return this.step.snap(date); }; - /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. - * @protected - */ - ItemSet.prototype._updateUngrouped = function() { - var ungrouped = this.groups[UNGROUPED]; - var background = this.groups[BACKGROUND]; - var item, itemId; - - if (this.groupsData) { - // remove the group holding all ungrouped items - if (ungrouped) { - ungrouped.hide(); - delete this.groups[UNGROUPED]; + module.exports = DataAxis; - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - item.parent && item.parent.remove(item); - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - group && group.add(item) || item.hide(); - } - } - } - } - else { - // create a group holding all (unfiltered) items - if (!ungrouped) { - var id = null; - var data = null; - ungrouped = new Group(id, data, this); - this.groups[UNGROUPED] = ungrouped; - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - ungrouped.add(item); - } - } +/***/ }, +/* 29 */ +/***/ function(module, exports, __webpack_require__) { - ungrouped.show(); - } - } - }; + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Line = __webpack_require__(49); + var Bar = __webpack_require__(50); + var Points = __webpack_require__(51); /** - * Get the element for the labelset - * @return {HTMLElement} labelSet + * /** + * @param {object} group | the object of the group from the dataset + * @param {string} groupId | ID of the group + * @param {object} options | the default options + * @param {array} groupsUsingDefaultStyles | this array has one entree. + * It is passed as an array so it is passed by reference. + * It enumerates through the default styles + * @constructor */ - ItemSet.prototype.getLabelSet = function() { - return this.dom.labelSet; - }; + function GraphGroup (group, groupId, options, groupsUsingDefaultStyles) { + this.id = groupId; + var fields = ['sampling','style','sort','yAxisOrientation','barChart','drawPoints','shaded','catmullRom'] + this.options = util.selectiveBridgeObject(fields,options); + this.usingDefaultStyle = group.className === undefined; + this.groupsUsingDefaultStyles = groupsUsingDefaultStyles; + this.zeroPosition = 0; + this.update(group); + if (this.usingDefaultStyle == true) { + this.groupsUsingDefaultStyles[0] += 1; + } + this.itemsData = []; + this.visible = group.visible === undefined ? true : group.visible; + } + /** - * Set items - * @param {vis.DataSet | null} items + * this loads a reference to all items in this group into this group. + * @param {array} items */ - ItemSet.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; - - // replace the dataset - if (!items) { - this.itemsData = null; - } - else if (items instanceof DataSet || items instanceof DataView) { + GraphGroup.prototype.setItems = function(items) { + if (items != null) { this.itemsData = items; + if (this.options.sort == true) { + this.itemsData.sort(function (a,b) {return a.x - b.x;}) + } } else { - throw new TypeError('Data must be an instance of DataSet or DataView'); - } - - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); - - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } - - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); - - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); - - // update the group holding all ungrouped items - this._updateUngrouped(); + this.itemsData = []; } }; + /** - * Get the current items - * @returns {vis.DataSet | null} + * this is used for plotting barcharts, this way, we only have to calculate it once. + * @param pos */ - ItemSet.prototype.getItems = function() { - return this.itemsData; + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; }; + /** - * Set groups - * @param {vis.DataSet} groups + * set the options of the graph group over the default options. + * @param options */ - ItemSet.prototype.setGroups = function(groups) { - var me = this, - ids; + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } + } + } } - // replace the dataset - if (!groups) { - this.groupsData = null; - } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; + if (this.options.style == 'line') { + this.type = new Line(this.id, this.options); } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + else if (this.options.style == 'bar') { + this.type = new Bar(this.id, this.options); } - - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); - - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); + else if (this.options.style == 'points') { + this.type = new Points(this.id, this.options); } - - // update the group holding all ungrouped items - this._updateUngrouped(); - - // update the order of all items in each group - this._order(); - - this.body.emitter.emit('change', {queue: true}); - }; - - /** - * Get the current groups - * @returns {vis.DataSet | null} groups - */ - ItemSet.prototype.getGroups = function() { - return this.groupsData; }; - /** - * Remove an item by its id - * @param {String | Number} id - */ - ItemSet.prototype.removeItem = function(id) { - var item = this.itemsData.get(id), - dataset = this.itemsData.getDataSet(); - - if (item) { - // confirm deletion - this.options.onRemove(item, function (item) { - if (item) { - // remove by id here, it is possible that an item has no id defined - // itself, so better not delete by the item itself - dataset.remove(id); - } - }); - } - }; /** - * Get the time of an item based on it's data and options.type - * @param {Object} itemData - * @returns {string} Returns the type - * @private + * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph + * @param group */ - ItemSet.prototype._getType = function (itemData) { - return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); + GraphGroup.prototype.update = function(group) { + this.group = group; + this.content = group.content || 'graph'; + this.className = group.className || this.className || "graphGroup" + this.groupsUsingDefaultStyles[0] % 10; + this.visible = group.visible === undefined ? true : group.visible; + this.style = group.style; + this.setOptions(group.options); }; /** - * Get the group id for an item - * @param {Object} itemData - * @returns {string} Returns the groupId - * @private - */ - ItemSet.prototype._getGroupId = function (itemData) { - var type = this._getType(itemData); - if (type == 'background' && itemData.group == undefined) { - return BACKGROUND; - } - else { - return this.groupsData ? itemData.group : UNGROUPED; - } - }; - - /** - * Handle updated items - * @param {Number[]} ids - * @protected + * draw the icon for the legend. + * + * @param x + * @param y + * @param JSONcontainer + * @param SVGcontainer + * @param iconWidth + * @param iconHeight */ - ItemSet.prototype._onUpdate = function(ids) { - var me = this; - - ids.forEach(function (id) { - var itemData = me.itemsData.get(id, me.itemOptions); - var item = me.items[id]; - var type = me._getType(itemData); + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; - var constructor = ItemSet.types[type]; + var outline = DOMutil.getSVGElement("rect", JSONcontainer, SVGcontainer); + outline.setAttributeNS(null, "x", x); + outline.setAttributeNS(null, "y", y - fillHeight); + outline.setAttributeNS(null, "width", iconWidth); + outline.setAttributeNS(null, "height", 2*fillHeight); + outline.setAttributeNS(null, "class", "outline"); - if (item) { - // update item - if (!constructor || !(item instanceof constructor)) { - // item type has changed, delete the item and recreate it - me._removeItem(item); - item = null; - } - else { - me._updateItem(item, itemData); - } + if (this.options.style == 'line') { + path = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + path.setAttributeNS(null, "class", this.className); + if(this.style !== undefined) { + path.setAttributeNS(null, "style", this.style); } - if (!item) { - // create item - if (constructor) { - item = new constructor(itemData, me.conversion, me.options); - item.id = id; // TODO: not so nice setting id afterwards - me._addItem(item); - } - else if (type == 'rangeoverflow') { - // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day - throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + - '.vis.timeline .item.range .content {overflow: visible;}'); + path.setAttributeNS(null, "d", "M" + x + ","+y+" L" + (x + iconWidth) + ","+y+""); + if (this.options.shaded.enabled == true) { + fillPath = DOMutil.getSVGElement("path", JSONcontainer, SVGcontainer); + if (this.options.shaded.orientation == 'top') { + fillPath.setAttributeNS(null, "d", "M"+x+", " + (y - fillHeight) + + "L"+x+","+y+" L"+ (x + iconWidth) + ","+y+" L"+ (x + iconWidth) + "," + (y - fillHeight)); } else { - throw new TypeError('Unknown item type "' + type + '"'); + fillPath.setAttributeNS(null, "d", "M"+x+","+y+" " + + "L"+x+"," + (y + fillHeight) + " " + + "L"+ (x + iconWidth) + "," + (y + fillHeight) + + "L"+ (x + iconWidth) + ","+y); } + fillPath.setAttributeNS(null, "class", this.className + " iconFill"); } - }); - - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); - }; - - /** - * Handle added items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - /** - * Handle removed items - * @param {Number[]} ids - * @protected - */ - ItemSet.prototype._onRemove = function(ids) { - var count = 0; - var me = this; - ids.forEach(function (id) { - var item = me.items[id]; - if (item) { - count++; - me._removeItem(item); + if (this.options.drawPoints.enabled == true) { + DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); } - }); + } + else { + var barWidth = Math.round(0.3 * iconWidth); + var bar1Height = Math.round(0.4 * iconHeight); + var bar2Height = Math.round(0.75 * iconHeight); - if (count) { - // update order - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); + var offset = Math.round((iconWidth - (2 * barWidth))/3); + + DOMutil.drawBar(x + 0.5*barWidth + offset , y + fillHeight - bar1Height - 1, barWidth, bar1Height, this.className + ' bar', JSONcontainer, SVGcontainer); + DOMutil.drawBar(x + 1.5*barWidth + offset + 2, y + fillHeight - bar2Height - 1, barWidth, bar2Height, this.className + ' bar', JSONcontainer, SVGcontainer); } }; - /** - * Update the order of item in all groups - * @private - */ - ItemSet.prototype._order = function() { - // reorder the items in all groups - // TODO: optimization: only reorder groups affected by the changed items - util.forEach(this.groups, function (group) { - group.order(); - }); - }; /** - * Handle updated groups - * @param {Number[]} ids - * @private + * return the legend entree for this group. + * + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - ItemSet.prototype._onUpdateGroups = function(ids) { - this._onAddGroups(ids); - }; + GraphGroup.prototype.getLegend = function(iconWidth, iconHeight) { + var svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.drawIcon(0,0.5*iconHeight,[],svg,iconWidth,iconHeight); + return {icon: svg, label: this.content, orientation:this.options.yAxisOrientation}; + } - /** - * Handle changed groups (added or updated) - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onAddGroups = function(ids) { - var me = this; + GraphGroup.prototype.getYRange = function(groupData) { + return this.type.getYRange(groupData); + } - ids.forEach(function (id) { - var groupData = me.groupsData.get(id); - var group = me.groups[id]; + GraphGroup.prototype.draw = function(dataset, group, framework) { + this.type.draw(dataset, group, framework); + } - if (!group) { - // check for reserved ids - if (id == UNGROUPED || id == BACKGROUND) { - throw new Error('Illegal group id. ' + id + ' is a reserved id.'); - } - var groupOptions = Object.create(me.options); - util.extend(groupOptions, { - height: null - }); + module.exports = GraphGroup; - group = new Group(id, groupData, me); - me.groups[id] = group; - // add items with this groupId to the new group - for (var itemId in me.items) { - if (me.items.hasOwnProperty(itemId)) { - var item = me.items[itemId]; - if (item.data.group == id) { - group.add(item); - } - } - } +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { - group.order(); - group.show(); - } - else { - // update group - group.setData(groupData); + var util = __webpack_require__(1); + var stack = __webpack_require__(18); + var RangeItem = __webpack_require__(24); + + /** + * @constructor Group + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ + function Group (groupId, data, itemSet) { + this.groupId = groupId; + this.subgroups = {}; + this.subgroupIndex = 0; + this.subgroupOrderer = data && data.subgroupOrder; + this.itemSet = itemSet; + + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 } - }); + }; + this.className = null; - this.body.emitter.emit('change', {queue: true}); - }; + this.items = {}; // items filtered by groupId of this group + this.visibleItems = []; // items currently visible in window + this.orderedItems = { + byStart: [], + byEnd: [] + }; + this.checkRangedItems = false; // needed to refresh the ranged items if the window is programatically changed with NO overlap. + var me = this; + this.itemSet.body.emitter.on("checkRangedItems", function () { + me.checkRangedItems = true; + }) + + this._create(); + + this.setData(data); + } /** - * Handle removed groups - * @param {Number[]} ids + * Create DOM elements for the group * @private */ - ItemSet.prototype._onRemoveGroups = function(ids) { - var groups = this.groups; - ids.forEach(function (id) { - var group = groups[id]; + Group.prototype._create = function() { + var label = document.createElement('div'); + label.className = 'vlabel'; + this.dom.label = label; - if (group) { - group.hide(); - delete groups[id]; - } - }); + var inner = document.createElement('div'); + inner.className = 'inner'; + label.appendChild(inner); + this.dom.inner = inner; - this.markDirty(); + var foreground = document.createElement('div'); + foreground.className = 'group'; + foreground['timeline-group'] = this; + this.dom.foreground = foreground; - this.body.emitter.emit('change', {queue: true}); + this.dom.background = document.createElement('div'); + this.dom.background.className = 'group'; + + this.dom.axis = document.createElement('div'); + this.dom.axis.className = 'group'; + + // create a hidden marker to detect when the Timelines container is attached + // to the DOM, or the style of a parent of the Timeline is changed from + // display:none is changed to visible. + this.dom.marker = document.createElement('div'); + this.dom.marker.style.visibility = 'hidden'; // TODO: ask jos why this is not none? + this.dom.marker.innerHTML = '?'; + this.dom.background.appendChild(this.dom.marker); }; /** - * Reorder the groups if needed - * @return {boolean} changed - * @private + * Set the group data for this group + * @param {Object} data Group data, can contain properties content and className */ - ItemSet.prototype._orderGroups = function () { - if (this.groupsData) { - // reorder the groups - var groupIds = this.groupsData.getIds({ - order: this.options.groupOrder - }); + Group.prototype.setData = function(data) { + // update contents + var content = data && data.content; + if (content instanceof Element) { + this.dom.inner.appendChild(content); + } + else if (content !== undefined && content !== null) { + this.dom.inner.innerHTML = content; + } + else { + this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null + } - var changed = !util.equalArray(groupIds, this.groupIds); - if (changed) { - // hide all groups, removes them from the DOM - var groups = this.groups; - groupIds.forEach(function (groupId) { - groups[groupId].hide(); - }); + // update title + this.dom.label.title = data && data.title || ''; - // show the groups again, attach them to the DOM in correct order - groupIds.forEach(function (groupId) { - groups[groupId].show(); - }); + if (!this.dom.inner.firstChild) { + util.addClassName(this.dom.inner, 'hidden'); + } + else { + util.removeClassName(this.dom.inner, 'hidden'); + } - this.groupIds = groupIds; + // update className + var className = data && data.className || null; + if (className != this.className) { + if (this.className) { + util.removeClassName(this.dom.label, this.className); + util.removeClassName(this.dom.foreground, this.className); + util.removeClassName(this.dom.background, this.className); + util.removeClassName(this.dom.axis, this.className); } + util.addClassName(this.dom.label, className); + util.addClassName(this.dom.foreground, className); + util.addClassName(this.dom.background, className); + util.addClassName(this.dom.axis, className); + this.className = className; + } - return changed; + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; } - else { - return false; + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; } }; /** - * Add a new item - * @param {Item} item - * @private + * Get the width of the group label + * @return {number} width */ - ItemSet.prototype._addItem = function(item) { - this.items[item.id] = item; - - // add to group - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); + Group.prototype.getLabelWidth = function() { + return this.props.label.width; }; + /** - * Update an existing item - * @param {Item} item - * @param {Object} itemData - * @private + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized */ - ItemSet.prototype._updateItem = function(item, itemData) { - var oldGroupId = item.data.group; + Group.prototype.redraw = function(range, margin, restack) { + var resized = false; - // update the items data (will redraw the item when displayed) - item.setData(itemData); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - // update group - if (oldGroupId != item.data.group) { - var oldGroup = this.groups[oldGroupId]; - if (oldGroup) oldGroup.remove(item); + // force recalculation of the height of the items when the marker height changed + // (due to the Timeline being attached to the DOM or changed from display:none to visible) + var markerHeight = this.dom.marker.clientHeight; + if (markerHeight != this.lastMarkerHeight) { + this.lastMarkerHeight = markerHeight; - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); + + restack = true; } - }; - /** - * Delete an item from the ItemSet: remove it from the DOM, from the map - * with items, and from the map with visible items, and from the selection - * @param {Item} item - * @private - */ - ItemSet.prototype._removeItem = function(item) { - // remove from DOM - item.hide(); + // reposition visible items vertically + if (this.itemSet.options.stack) { // TODO: ugly way to access options... + stack.stack(this.visibleItems, margin, restack); + } + else { // no stacking + stack.nostack(this.visibleItems, margin, this.subgroups); + } - // remove from items - delete this.items[item.id]; + // recalculate the height of the group + var height = this._calculateHeight(margin); - // remove from selection - var index = this.selection.indexOf(item.id); - if (index != -1) this.selection.splice(index, 1); + // calculate actual size and position + var foreground = this.dom.foreground; + this.top = foreground.offsetTop; + this.left = foreground.offsetLeft; + this.width = foreground.offsetWidth; + resized = util.updateProperty(this, 'height', height) || resized; - // remove from group - item.parent && item.parent.remove(item); - }; + // recalculate size of label + resized = util.updateProperty(this.props.label, 'width', this.dom.inner.clientWidth) || resized; + resized = util.updateProperty(this.props.label, 'height', this.dom.inner.clientHeight) || resized; - /** - * Create an array containing all items being a range (having an end date) - * @param array - * @returns {Array} - * @private - */ - ItemSet.prototype._constructByEndArray = function(array) { - var endArray = []; + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); - } + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - return endArray; + + return resized; }; /** - * Register the clicked item on touch, before dragStart is initiated. - * - * dragStart is initiated from a mousemove event, which can have left the item - * already resulting in an item == null - * - * @param {Event} event + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height * @private */ - ItemSet.prototype._onTouch = function (event) { - // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); + Group.prototype._calculateHeight = function (margin) { + // recalculate the height of the group + var height; + var visibleItems = this.visibleItems; + //var visibleSubgroups = []; + //this.visibleSubgroups = 0; + this.resetSubgroups(); + var me = this; + if (visibleItems.length) { + var min = visibleItems[0].top; + var max = visibleItems[0].top + visibleItems[0].height; + util.forEach(visibleItems, function (item) { + min = Math.min(min, item.top); + max = Math.max(max, (item.top + item.height)); + if (item.data.subgroup !== undefined) { + me.subgroups[item.data.subgroup].height = Math.max(me.subgroups[item.data.subgroup].height,item.height); + me.subgroups[item.data.subgroup].visible = true; + //if (visibleSubgroups.indexOf(item.data.subgroup) == -1){ + // visibleSubgroups.push(item.data.subgroup); + // me.visibleSubgroups += 1; + //} + } + }); + if (min > margin.axis) { + // there is an empty gap between the lowest item and the axis + var offset = min - margin.axis; + max -= offset; + util.forEach(visibleItems, function (item) { + item.top -= offset; + }); + } + height = max + margin.item.vertical / 2; + } + else { + height = margin.axis + margin.item.vertical; + } + height = Math.max(height, this.props.label.height); + + return height; }; /** - * Start dragging the selected events - * @param {Event} event - * @private + * Show this group: attach to the DOM */ - ItemSet.prototype._onDragStart = function (event) { - if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { - return; + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); } - var item = this.touchParams.item || null; - var me = this; - var props; - - if (item && item.selected) { - var dragLeftItem = event.target.dragLeftItem; - var dragRightItem = event.target.dragRightItem; - - if (dragLeftItem) { - props = { - item: dragLeftItem, - initialX: event.gesture.center.clientX - }; - - if (me.options.editable.updateTime) { - props.start = item.data.start.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + if (!this.dom.foreground.parentNode) { + this.itemSet.dom.foreground.appendChild(this.dom.foreground); + } - this.touchParams.itemProps = [props]; - } - else if (dragRightItem) { - props = { - item: dragRightItem, - initialX: event.gesture.center.clientX - }; + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } - if (me.options.editable.updateTime) { - props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + if (!this.dom.axis.parentNode) { + this.itemSet.dom.axis.appendChild(this.dom.axis); + } + }; - this.touchParams.itemProps = [props]; - } - else { - this.touchParams.itemProps = this.getSelection().map(function (id) { - var item = me.items[id]; - var props = { - item: item, - initialX: event.gesture.center.clientX - }; + /** + * Hide this group: remove from the DOM + */ + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); + } - if (me.options.editable.updateTime) { - if ('start' in item.data) props.start = item.data.start.valueOf(); - if ('end' in item.data) props.end = item.data.end.valueOf(); - } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); + } - return props; - }); - } + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); + } - event.stopPropagation(); + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); } }; /** - * Drag selected items - * @param {Event} event - * @private + * Add an item to the group + * @param {Item} item */ - ItemSet.prototype._onDrag = function (event) { - event.preventDefault() + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); - if (this.touchParams.itemProps) { - var me = this; - var snap = this.body.util.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + // add to + if (item.data.subgroup !== undefined) { + if (this.subgroups[item.data.subgroup] === undefined) { + this.subgroups[item.data.subgroup] = {height:0, visible: false, index:this.subgroupIndex, items: []}; + this.subgroupIndex++; + } + this.subgroups[item.data.subgroup].items.push(item); + } + this.orderSubgroups(); - // move - this.touchParams.itemProps.forEach(function (props) { - var newProps = {}; - var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); - var initial = me.body.util.toTime(props.initialX - xOffset); - var offset = current - initial; + if (this.visibleItems.indexOf(item) == -1) { + var range = this.itemSet.body.range; // TODO: not nice accessing the range like this + this._checkIfVisible(item, this.visibleItems, range); + } + }; - if ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start) : start; + Group.prototype.orderSubgroups = function() { + if (this.subgroupOrderer !== undefined) { + var sortArray = []; + if (typeof this.subgroupOrderer == 'string') { + for (var subgroup in this.subgroups) { + sortArray.push({subgroup: subgroup, sortField: this.subgroups[subgroup].items[0].data[this.subgroupOrderer]}) } - - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end) : end; + sortArray.sort(function (a, b) { + return a.sortField - b.sortField; + }) + } + else if (typeof this.subgroupOrderer == 'function') { + for (var subgroup in this.subgroups) { + sortArray.push(this.subgroups[subgroup].items[0].data); } + sortArray.sort(this.subgroupOrderer); + } - if ('group' in props) { - // drag from one group to another - var group = ItemSet.groupFromTarget(event); - newProps.group = group && group.groupId; + if (sortArray.length > 0) { + for (var i = 0; i < sortArray.length; i++) { + this.subgroups[sortArray[i].subgroup].index = i; } + } + } + }; - // confirm moving the item - var itemData = util.extend({}, props.item.data, newProps); - me.options.onMoving(itemData, function (itemData) { - if (itemData) { - me._updateItemProps(props.item, itemData); - } - }); - }); - - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); - - event.stopPropagation(); + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } } }; /** - * Update an items properties + * Remove an item from the group * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. - * @private */ - ItemSet.prototype._updateItemProps = function(item, props) { - // TODO: copy all properties from props to item? (also new ones) - if ('start' in props) item.data.start = props.start; - if ('end' in props) item.data.end = props.end; - if ('group' in props && item.data.group != props.group) { - this._moveToGroup(item, props.group) - } + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(null); + + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); + + // TODO: also remove from ordered items? }; + /** - * Move an item to another group + * Remove an item from the corresponding DataSet * @param {Item} item - * @param {String | Number} groupId - * @private */ - ItemSet.prototype._moveToGroup = function(item, groupId) { - var group = this.groups[groupId]; - if (group && group.groupId != item.data.group) { - var oldGroup = item.parent; - oldGroup.remove(item); - oldGroup.order(); - group.add(item); - group.order(); - - item.data.group = group.groupId; - } + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); }; + /** - * End of dragging selected items - * @param {Event} event - * @private + * Reorder the items */ - ItemSet.prototype._onDragEnd = function (event) { - event.preventDefault() - - if (this.touchParams.itemProps) { - // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); - - var itemProps = this.touchParams.itemProps ; - this.touchParams.itemProps = null; - itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); - - var changed = false; - if ('start' in props.item.data) { - changed = (props.start != props.item.data.start.valueOf()); - itemData.start = util.convert(props.item.data.start, - dataset._options.type && dataset._options.type.start || 'Date'); - } - if ('end' in props.item.data) { - changed = changed || (props.end != props.item.data.end.valueOf()); - itemData.end = util.convert(props.item.data.end, - dataset._options.type && dataset._options.type.end || 'Date'); - } - if ('group' in props.item.data) { - changed = changed || (props.group != props.item.data.group); - itemData.group = props.item.data.group; - } - - // only apply changes when start or end is actually changed - if (changed) { - me.options.onMove(itemData, function (itemData) { - if (itemData) { - // apply changes - itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) - changes.push(itemData); - } - else { - // restore original values - me._updateItemProps(props.item, props); - - me.stackDirty = true; // force re-stacking of all items next redraw - me.body.emitter.emit('change'); - } - }); - } - }); + Group.prototype.order = function() { + var array = util.toArray(this.items); + var startArray = []; + var endArray = []; - // apply the changes to the data (if there are changes) - if (changes.length) { - dataset.update(changes); + for (var i = 0; i < array.length; i++) { + if (array[i].data.end !== undefined) { + endArray.push(array[i]); } - - event.stopPropagation(); + startArray.push(array[i]); } + this.orderedItems = { + byStart: startArray, + byEnd: endArray + }; + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); }; + /** - * Handle selecting/deselecting an item when tapping it - * @param {Event} event + * Update the visible items + * @param {{byStart: Item[], byEnd: Item[]}} orderedItems All items ordered by start date and by end date + * @param {Item[]} visibleItems The previously visible items. + * @param {{start: number, end: number}} range Visible range + * @return {Item[]} visibleItems The new visible items. * @private */ - ItemSet.prototype._onSelectItem = function (event) { - if (!this.options.selectable) return; + Group.prototype._updateVisibleItems = function(orderedItems, oldVisibleItems, range) { + var visibleItems = []; + var visibleItemsLookup = {}; // we keep this to quickly look up if an item already exists in the list without using indexOf on visibleItems + var interval = (range.end - range.start) / 4; + var lowerBound = range.start - interval; + var upperBound = range.end + interval; + var item, i; - var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; - var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; - if (ctrlKey || shiftKey) { - this._onMultiSelectItem(event); - return; + // this function is used to do the binary search. + var searchFunction = function (value) { + if (value < lowerBound) {return -1;} + else if (value <= upperBound) {return 0;} + else {return 1;} } - var oldSelection = this.getSelection(); - - var item = ItemSet.itemFromTarget(event); - var selection = item ? [item.id] : []; - this.setSelection(selection); - - var newSelection = this.getSelection(); - - // emit a select event, - // except when old selection is empty and new selection is still empty - if (newSelection.length > 0 || oldSelection.length > 0) { - this.body.emitter.emit('select', { - items: newSelection - }); + // first check if the items that were in view previously are still in view. + // IMPORTANT: this handles the case for the items with startdate before the window and enddate after the window! + // also cleans up invisible items. + if (oldVisibleItems.length > 0) { + for (i = 0; i < oldVisibleItems.length; i++) { + this._checkIfVisibleWithReference(oldVisibleItems[i], visibleItems, visibleItemsLookup, range); + } } - }; - - /** - * Handle creation and updates of an item on double tap - * @param event - * @private - */ - ItemSet.prototype._onAddItem = function (event) { - if (!this.options.selectable) return; - if (!this.options.editable.add) return; - var me = this, - snap = this.body.util.snap || null, - item = ItemSet.itemFromTarget(event); + // we do a binary search for the items that have only start values. + var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); - if (item) { - // update item + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the start values. + this._traceVisible(initialPosByStart, orderedItems.byStart, visibleItems, visibleItemsLookup, function (item) { + return (item.data.start < lowerBound || item.data.start > upperBound); + }); - // execute async handler to update the item (or cancel it) - var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset - this.options.onUpdate(itemData, function (itemData) { - if (itemData) { - me.itemsData.getDataSet().update(itemData); - } - }); + // if the window has changed programmatically without overlapping the old window, the ranged items with start < lowerBound and end > upperbound are not shown. + // We therefore have to brute force check all items in the byEnd list + if (this.checkRangedItems == true) { + this.checkRangedItems = false; + for (i = 0; i < orderedItems.byEnd.length; i++) { + this._checkIfVisibleWithReference(orderedItems.byEnd[i], visibleItems, visibleItemsLookup, range); + } } else { - // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs; - var start = this.body.util.toTime(x); - var newItem = { - start: snap ? snap(start) : start, - content: 'new item' - }; - - // when default type is a range, add a default end date to the new item - if (this.options.type === 'range') { - var end = this.body.util.toTime(x + this.props.width / 5); - newItem.end = snap ? snap(end) : end; - } - - newItem[this.itemsData._fieldId] = util.randomUUID(); - - var group = ItemSet.groupFromTarget(event); - if (group) { - newItem.group = group.groupId; - } + // we do a binary search for the items that have defined end times. + var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); - // execute async handler to customize (or cancel) adding an item - this.options.onAdd(newItem, function (item) { - if (item) { - me.itemsData.getDataSet().add(item); - // TODO: need to trigger a redraw? - } + // trace the visible items from the inital start pos both ways until an invisible item is found, we only look at the end values. + this._traceVisible(initialPosByEnd, orderedItems.byEnd, visibleItems, visibleItemsLookup, function (item) { + return (item.data.end < lowerBound || item.data.end > upperBound); }); } - }; - - /** - * Handle selecting/deselecting multiple items when holding an item - * @param {Event} event - * @private - */ - ItemSet.prototype._onMultiSelectItem = function (event) { - if (!this.options.selectable) return; - var selection, - item = ItemSet.itemFromTarget(event); - if (item) { - // multi select items - selection = this.getSelection(); // current selection + // finally, we reposition all the visible items. + for (i = 0; i < visibleItems.length; i++) { + item = visibleItems[i]; + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + } - var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; - if (shiftKey) { - // select all items between the old selection and the tapped item + // debug + //console.log("new line") + //if (this.groupId == null) { + // for (i = 0; i < orderedItems.byStart.length; i++) { + // item = orderedItems.byStart[i].data; + // console.log('start',i,initialPosByStart, item.start.valueOf(), item.content, item.start >= lowerBound && item.start <= upperBound,i == initialPosByStart ? "<------------------- HEREEEE" : "") + // } + // for (i = 0; i < orderedItems.byEnd.length; i++) { + // item = orderedItems.byEnd[i].data; + // console.log('rangeEnd',i,initialPosByEnd, item.end.valueOf(), item.content, item.end >= range.start && item.end <= range.end,i == initialPosByEnd ? "<------------------- HEREEEE" : "") + // } + //} - // determine the selection range - selection.push(item.id); - var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + return visibleItems; + }; - // select all items within the selection range - selection = []; - for (var id in this.items) { - if (this.items.hasOwnProperty(id)) { - var _item = this.items[id]; - var start = _item.data.start; - var end = (_item.data.end !== undefined) ? _item.data.end : start; + Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { + var item; + var i; - if (start >= range.min && end <= range.max) { - selection.push(_item.id); // do not use id but item.id, id itself is stringified - } + if (initialPos != -1) { + for (i = initialPos; i >= 0; i--) { + item = items[i]; + if (breakCondition(item)) { + break; + } + else { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); } } } - else { - // add/remove this item from the current selection - var index = selection.indexOf(item.id); - if (index == -1) { - // item is not yet selected -> select it - selection.push(item.id); + + for (i = initialPos + 1; i < items.length; i++) { + item = items[i]; + if (breakCondition(item)) { + break; } else { - // item is already selected -> deselect it - selection.splice(index, 1); + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); + } } } - - this.setSelection(selection); - - this.body.emitter.emit('select', { - items: this.getSelection() - }); } - }; + } + /** - * Calculate the time range of a list of items - * @param {Array.} itemsData - * @return {{min: Date, max: Date}} Returns the range of the provided items + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range * @private */ - ItemSet._getItemRange = function(itemsData) { - var max = null; - var min = null; - - itemsData.forEach(function (data) { - if (min == null || data.start < min) { - min = data.start; - } - - if (data.end != undefined) { - if (max == null || data.end > max) { - max = data.end; - } + Group.prototype._checkIfVisible = function(item, visibleItems, range) { + if (item.isVisible(range)) { + if (!item.displayed) item.show(); + // reposition item horizontally + item.repositionX(); + visibleItems.push(item); } else { - if (max == null || data.start > max) { - max = data.start; - } + if (item.displayed) item.hide(); } - }); - - return { - min: min, - max: max - } }; - /** - * Find an item from an event target: - * searches for the attribute 'timeline-item' in the event target's element tree - * @param {Event} event - * @return {Item | null} item - */ - ItemSet.itemFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-item')) { - return target['timeline-item']; - } - target = target.parentNode; - } - - return null; - }; /** - * Find the Group from an event target: - * searches for the attribute 'timeline-group' in the event target's element tree - * @param {Event} event - * @return {Group | null} group + * this function is very similar to the _checkIfInvisible() but it does not + * return booleans, hides the item if it should not be seen and always adds to + * the visibleItems. + * this one is for brute forcing and hiding. + * + * @param {Item} item + * @param {Array} visibleItems + * @param {{start:number, end:number}} range + * @private */ - ItemSet.groupFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-group')) { - return target['timeline-group']; + Group.prototype._checkIfVisibleWithReference = function(item, visibleItems, visibleItemsLookup, range) { + if (item.isVisible(range)) { + if (visibleItemsLookup[item.id] === undefined) { + visibleItemsLookup[item.id] = true; + visibleItems.push(item); } - target = target.parentNode; } - - return null; + else { + if (item.displayed) item.hide(); + } }; - /** - * Find the ItemSet from an event target: - * searches for the attribute 'timeline-itemset' in the event target's element tree - * @param {Event} event - * @return {ItemSet | null} item - */ - ItemSet.itemSetFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-itemset')) { - return target['timeline-itemset']; - } - target = target.parentNode; - } - return null; - }; - module.exports = ItemSet; + module.exports = Group; /***/ }, -/* 28 */ +/* 31 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(20); + var Group = __webpack_require__(30); /** - * Legend for Graph2d + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet */ - function Legend(body, options, side, linegraphOptions) { - this.body = body; - this.defaultOptions = { - enabled: true, - icons: true, - iconSize: 20, - iconSpacing: 6, - left: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - }, - right: { - visible: true, - position: 'top-left' // top/bottom - left,center,right - } - } - this.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; - - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); - this.setOptions(options); + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; } - Legend.prototype = new Component(); + BackgroundGroup.prototype = Object.create(Group.prototype); - Legend.prototype.clear = function() { - this.groups = {}; - this.amountOfGroups = 0; - } + /** + * Repaint this group + * @param {{start: number, end: number}} range + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @param {boolean} [restack=false] Force restacking of all items + * @return {boolean} Returns true if the group is resized + */ + BackgroundGroup.prototype.redraw = function(range, margin, restack) { + var resized = false; - Legend.prototype.addGroup = function(label, graphOptions) { + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + // calculate actual size + this.width = this.dom.background.offsetWidth; + + // apply new height (just always zero for BackgroundGroup + this.dom.background.style.height = '0'; + + // update vertical position of items after they are re-stacked and the height of the group is calculated + for (var i = 0, ii = this.visibleItems.length; i < ii; i++) { + var item = this.visibleItems[i]; + item.repositionY(margin); } - this.amountOfGroups += 1; - }; - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; + return resized; }; - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + /** + * Show this group: attach to the DOM + */ + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); } }; - Legend.prototype._create = function() { - this.dom.frame = document.createElement('div'); - this.dom.frame.className = 'legend'; - this.dom.frame.style.position = "absolute"; - this.dom.frame.style.top = "10px"; - this.dom.frame.style.display = "block"; + module.exports = BackgroundGroup; - this.dom.textArea = document.createElement('div'); - this.dom.textArea.className = 'legendText'; - this.dom.textArea.style.position = "relative"; - this.dom.textArea.style.top = "0px"; - this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); - this.svg.style.position = 'absolute'; - this.svg.style.top = 0 +'px'; - this.svg.style.width = this.options.iconSize + 5 + 'px'; - this.svg.style.height = '100%'; +/***/ }, +/* 32 */ +/***/ function(module, exports, __webpack_require__) { - this.dom.frame.appendChild(this.svg); - this.dom.frame.appendChild(this.dom.textArea); - }; + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Component = __webpack_require__(25); + var Group = __webpack_require__(30); + var BackgroundGroup = __webpack_require__(31); + var BoxItem = __webpack_require__(22); + var PointItem = __webpack_require__(23); + var RangeItem = __webpack_require__(24); + var BackgroundItem = __webpack_require__(21); + + + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group /** - * Hide the component from the DOM - */ - Legend.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - }; - - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed - */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } - }; - - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); - }; - - Legend.prototype.redraw = function() { - var activeGroups = 0; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - activeGroups++; - } - } - } - - if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { - this.hide(); - } - else { - this.show(); - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { - this.dom.frame.style.left = '4px'; - this.dom.frame.style.textAlign = "left"; - this.dom.textArea.style.textAlign = "left"; - this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.right = ''; - this.svg.style.left = 0 +'px'; - this.svg.style.right = ''; - } - else { - this.dom.frame.style.right = '4px'; - this.dom.frame.style.textAlign = "right"; - this.dom.textArea.style.textAlign = "right"; - this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; - this.dom.textArea.style.left = ''; - this.svg.style.right = 0 +'px'; - this.svg.style.left = ''; - } - - if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { - this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.bottom = ''; - } - else { - var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; - this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; - this.dom.frame.style.top = ''; - } - - if (this.options.icons == false) { - this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; - this.dom.textArea.style.right = ''; - this.dom.textArea.style.left = ''; - this.svg.style.width = '0px'; - } - else { - this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); - } - - var content = ''; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - content += this.groups[groupId].content + '
'; - } - } - } - this.dom.textArea.innerHTML = content; - this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; - } - }; - - Legend.prototype.drawLegendIcons = function() { - if (this.dom.frame.parentNode) { - DOMutil.prepareElements(this.svgElements); - var padding = window.getComputedStyle(this.dom.frame).paddingTop; - var iconOffset = Number(padding.replace('px','')); - var x = iconOffset; - var iconWidth = this.options.iconSize; - var iconHeight = 0.75 * this.options.iconSize; - var y = iconOffset + 0.5 * iconHeight + 3; - - this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { - this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); - y += iconHeight + this.options.iconSpacing; - } - } - } - - DOMutil.cleanupElements(this.svgElements); - } - }; - - module.exports = Legend; - - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var Component = __webpack_require__(20); - var DataAxis = __webpack_require__(23); - var GraphGroup = __webpack_require__(24); - var Legend = __webpack_require__(28); - var BarGraphFunctions = __webpack_require__(52); - - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - - /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor + * An ItemSet holds a set of items and ranges which can be displayed in a + * range. The width is determined by the parent of the ItemSet, and the height + * is determined by the size of the items. + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See ItemSet.setOptions for the available options. + * @constructor ItemSet + * @extends Component */ - function LineGraph(body, options) { - this.id = util.randomUUID(); + function ItemSet(body, options) { this.body = body; this.defaultOptions = { - yAxisOrientation: 'left', - defaultGroup: 'default', - sort: true, - sampling: true, - graphHeight: '400px', - shaded: { - enabled: false, - orientation: 'bottom' // top, bottom + type: null, // 'box', 'point', 'range', 'background' + orientation: 'bottom', // 'top' or 'bottom' + align: 'auto', // alignment of box items + stack: true, + groupOrder: null, + + selectable: true, + editable: { + updateTime: false, + updateGroup: false, + add: false, + remove: false }, - style: 'line', // line, bar - barChart: { - width: 50, - handleOverlap: 'overlap', - align: 'center' // left, center, right + + onAdd: function (item, callback) { + callback(item); }, - catmullRom: { - enabled: true, - parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) - alpha: 0.5 + onUpdate: function (item, callback) { + callback(item); }, - drawPoints: { - enabled: true, - size: 6, - style: 'square' // square, circle + onMove: function (item, callback) { + callback(item); }, - dataAxis: { - showMinorLabels: true, - showMajorLabels: true, - icons: false, - width: '40px', - visible: true, - alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} - } - //, these options are not set by default, but this shows the format they will be in - //format: { - // left: {decimals: 2}, - // right: {decimals: 2} - //}, - //title: { - // left: { - // text: 'left', - // style: 'color:black;' - // }, - // right: { - // text: 'right', - // style: 'color:black;' - // } - //} + onRemove: function (item, callback) { + callback(item); }, - legend: { - enabled: false, - icons: true, - left: { - visible: true, - position: 'top-left' // top/bottom - left,right + onMoving: function (item, callback) { + callback(item); + }, + + margin: { + item: { + horizontal: 10, + vertical: 10 }, - right: { - visible: true, - position: 'top-right' // top/bottom - left,right - } + axis: 20 }, - groups: { - visibility: {} - } + padding: 5 }; // options is shared by this ItemSet and all its items this.options = util.extend({}, this.defaultOptions); + + // options for getting items from the DataSet with the correct type + this.itemOptions = { + type: {start: 'Date', end: 'Date'} + }; + + this.conversion = { + toScreen: body.util.toScreen, + toTime: body.util.toTime + }; this.dom = {}; this.props = {}; this.hammer = null; - this.groups = {}; - this.abortedGraphUpdate = false; - this.updateSVGheight = false; - this.updateSVGheightOnResize = false; var me = this; this.itemsData = null; // DataSet @@ -12887,154 +12326,516 @@ return /******/ (function(modules) { // webpackBootstrap }; this.items = {}; // object with an Item for every data item - this.selection = []; // list with the ids of all selected nodes - this.lastStart = this.body.range.start; - this.touchParams = {}; // stores properties while dragging + this.groups = {}; // Group object for every group + this.groupIds = []; - this.svgElements = {}; - this.setOptions(options); - this.groupsUsingDefaultStyles = [0]; - this.COUNTER = 0; - this.body.emitter.on('rangechanged', function() { - me.lastStart = me.body.range.start; - me.svg.style.left = util.option.asSize(-me.props.width); - me.redraw.call(me,true); - }); + this.selection = []; // list with the ids of all selected nodes + this.stackDirty = true; // if true, all items will be restacked on next redraw + this.touchParams = {}; // stores properties while dragging // create the HTML DOM + this._create(); - this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; - this.body.emitter.emit('change'); + this.setOptions(options); } - LineGraph.prototype = new Component(); + ItemSet.prototype = new Component(); + + // available item types will be registered here + ItemSet.types = { + background: BackgroundItem, + box: BoxItem, + range: RangeItem, + point: PointItem + }; /** * Create the HTML DOM for the ItemSet */ - LineGraph.prototype._create = function(){ + ItemSet.prototype._create = function(){ var frame = document.createElement('div'); - frame.className = 'LineGraph'; + frame.className = 'itemset'; + frame['timeline-itemset'] = this; this.dom.frame = frame; - // create svg element for graph drawing. - this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); - this.svg.style.position = 'relative'; - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - this.svg.style.display = 'block'; - frame.appendChild(this.svg); + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + // create axis panel + var axis = document.createElement('div'); + axis.className = 'axis'; + this.dom.axis = axis; - // legends - this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); - this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + // create labelset + var labelSet = document.createElement('div'); + labelSet.className = 'labelset'; + this.dom.labelSet = labelSet; + // create ungrouped Group + this._updateUngrouped(); + + // create background Group + var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); + backgroundGroup.show(); + this.groups[BACKGROUND] = backgroundGroup; + + // attach event listeners + // Note: we bind to the centerContainer for the case where the height + // of the center container is larger than of the ItemSet, so we + // can click in the empty area to create a new item or deselect an item. + this.hammer = Hammer(this.body.dom.centerContainer, { + preventDefault: true + }); + + // drag items when selected + this.hammer.on('touch', this._onTouch.bind(this)); + this.hammer.on('dragstart', this._onDragStart.bind(this)); + this.hammer.on('drag', this._onDrag.bind(this)); + this.hammer.on('dragend', this._onDragEnd.bind(this)); + + // single select (or unselect) when tapping an item + this.hammer.on('tap', this._onSelectItem.bind(this)); + + // multi select when holding mouse/touch, or on ctrl+click + this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + + // add item on doubletap + this.hammer.on('doubletap', this._onAddItem.bind(this)); + + // attach to the DOM this.show(); }; /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param {object} options + * Set options for the ItemSet. Existing options will be extended/overwritten. + * @param {Object} [options] The following options are available: + * {String} type + * Default type for the items. Choose from 'box' + * (default), 'point', 'range', or 'background'. + * The default style can be overwritten by + * individual items. + * {String} align + * Alignment for the items, only applicable for + * BoxItem. Choose 'center' (default), 'left', or + * 'right'. + * {String} orientation + * Orientation of the item set. Choose 'top' or + * 'bottom' (default). + * {Function} groupOrder + * A sorting function for ordering groups + * {Boolean} stack + * If true (deafult), items will be stacked on + * top of each other. + * {Number} margin.axis + * Margin between the axis and the items in pixels. + * Default is 20. + * {Number} margin.item.horizontal + * Horizontal margin between items in pixels. + * Default is 10. + * {Number} margin.item.vertical + * Vertical Margin between items in pixels. + * Default is 10. + * {Number} margin.item + * Margin between items in pixels in both horizontal + * and vertical direction. Default is 10. + * {Number} margin + * Set margin for both axis and items in pixels. + * {Number} padding + * Padding of the contents of an item in pixels. + * Must correspond with the items css. Default is 5. + * {Boolean} selectable + * If true (default), items can be selected. + * {Boolean} editable + * Set all editable options to true or false + * {Boolean} editable.updateTime + * Allow dragging an item to an other moment in time + * {Boolean} editable.updateGroup + * Allow dragging an item to an other group + * {Boolean} editable.add + * Allow creating new items on double tap + * {Boolean} editable.remove + * Allow removing items by clicking the delete button + * top right of a selected item. + * {Function(item: Item, callback: Function)} onAdd + * Callback function triggered when an item is about to be added: + * when the user double taps an empty space in the Timeline. + * {Function(item: Item, callback: Function)} onUpdate + * Callback function fired when an item is about to be updated. + * This function typically has to show a dialog where the user + * change the item. If not implemented, nothing happens. + * {Function(item: Item, callback: Function)} onMove + * Fired when an item has been moved. If not implemented, + * the move action will be accepted. + * {Function(item: Item, callback: Function)} onRemove + * Fired when an item is about to be deleted. + * If not implemented, the item will be always removed. */ - LineGraph.prototype.setOptions = function(options) { + ItemSet.prototype.setOptions = function(options) { if (options) { - var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; - if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { - this.updateSVGheight = true; - this.updateSVGheightOnResize = true; - } - else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { - if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { - this.updateSVGheight = true; - } - } - util.selectiveDeepExtend(fields, this.options, options); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); - util.mergeOptions(this.options, options,'legend'); + // copy all options that we know + var fields = ['type', 'align', 'orientation', 'padding', 'stack', 'selectable', 'groupOrder', 'dataAttributes', 'template','hide']; + util.selectiveExtend(fields, this.options, options); - if (options.catmullRom) { - if (typeof options.catmullRom == 'object') { - if (options.catmullRom.parametrization) { - if (options.catmullRom.parametrization == 'uniform') { - this.options.catmullRom.alpha = 0; - } - else if (options.catmullRom.parametrization == 'chordal') { - this.options.catmullRom.alpha = 1.0; + if ('margin' in options) { + if (typeof options.margin === 'number') { + this.options.margin.axis = options.margin; + this.options.margin.item.horizontal = options.margin; + this.options.margin.item.vertical = options.margin; + } + else if (typeof options.margin === 'object') { + util.selectiveExtend(['axis'], this.options.margin, options.margin); + if ('item' in options.margin) { + if (typeof options.margin.item === 'number') { + this.options.margin.item.horizontal = options.margin.item; + this.options.margin.item.vertical = options.margin.item; } - else { - this.options.catmullRom.parametrization = 'centripetal'; - this.options.catmullRom.alpha = 0.5; + else if (typeof options.margin.item === 'object') { + util.selectiveExtend(['horizontal', 'vertical'], this.options.margin.item, options.margin.item); } } } } - if (this.yAxisLeft) { - if (options.dataAxis !== undefined) { - this.yAxisLeft.setOptions(this.options.dataAxis); - this.yAxisRight.setOptions(this.options.dataAxis); + if ('editable' in options) { + if (typeof options.editable === 'boolean') { + this.options.editable.updateTime = options.editable; + this.options.editable.updateGroup = options.editable; + this.options.editable.add = options.editable; + this.options.editable.remove = options.editable; } - } - - if (this.legendLeft) { - if (options.legend !== undefined) { - this.legendLeft.setOptions(this.options.legend); - this.legendRight.setOptions(this.options.legend); + else if (typeof options.editable === 'object') { + util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); } } - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); - } - } + // callback functions + var addCallback = (function (name) { + var fn = options[name]; + if (fn) { + if (!(fn instanceof Function)) { + throw new Error('option ' + name + ' must be a function ' + name + '(item, callback)'); + } + this.options[name] = fn; + } + }).bind(this); + ['onAdd', 'onUpdate', 'onRemove', 'onMove', 'onMoving'].forEach(addCallback); - // this is used to redraw the graph if the visibility of the groups is changed. - if (this.dom.frame) { - this.redraw(true); + // force the itemSet to refresh: options like orientation and margins may be changed + this.markDirty(); } }; /** - * Hide the component from the DOM + * Mark the ItemSet dirty so it will refresh everything with next redraw */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } + ItemSet.prototype.markDirty = function() { + this.groupIds = []; + this.stackDirty = true; }; - /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Destroy the ItemSet */ - LineGraph.prototype.show = function() { + ItemSet.prototype.destroy = function() { + this.hide(); + this.setItems(null); + this.setGroups(null); + + this.hammer = null; + + this.body = null; + this.conversion = null; + }; + + /** + * Hide the component from the DOM + */ + ItemSet.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } + + // remove the axis with dots + if (this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); + } + + // remove the labelset containing all group labels + if (this.dom.labelSet.parentNode) { + this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); + } + }; + + /** + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed + */ + ItemSet.prototype.show = function() { // show frame containing the items if (!this.dom.frame.parentNode) { this.body.dom.center.appendChild(this.dom.frame); } + + // show axis with dots + if (!this.dom.axis.parentNode) { + this.body.dom.backgroundVertical.appendChild(this.dom.axis); + } + + // show labelset containing labels + if (!this.dom.labelSet.parentNode) { + this.body.dom.left.appendChild(this.dom.labelSet); + } + }; + + /** + * Set selected items by their id. Replaces the current selection + * Unknown id's are silently ignored. + * @param {string[] | string} [ids] An array with zero or more id's of the items to be + * selected, or a single item id. If ids is undefined + * or an empty array, all items will be unselected. + */ + ItemSet.prototype.setSelection = function(ids) { + var i, ii, id, item; + + if (ids == undefined) ids = []; + if (!Array.isArray(ids)) ids = [ids]; + + // unselect currently selected items + for (i = 0, ii = this.selection.length; i < ii; i++) { + id = this.selection[i]; + item = this.items[id]; + if (item) item.unselect(); + } + + // select items + this.selection = []; + for (i = 0, ii = ids.length; i < ii; i++) { + id = ids[i]; + item = this.items[id]; + if (item) { + this.selection.push(id); + item.select(); + } + } + }; + + /** + * Get the selected items by their id + * @return {Array} ids The ids of the selected items + */ + ItemSet.prototype.getSelection = function() { + return this.selection.concat([]); + }; + + /** + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items + */ + ItemSet.prototype.getVisibleItems = function() { + var range = this.body.range.getRange(); + var left = this.body.util.toScreen(range.start); + var right = this.body.util.toScreen(range.end); + + var ids = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + var group = this.groups[groupId]; + var rawVisibleItems = group.visibleItems; + + // filter the "raw" set with visibleItems into a set which is really + // visible by pixels + for (var i = 0; i < rawVisibleItems.length; i++) { + var item = rawVisibleItems[i]; + // TODO: also check whether visible vertically + if ((item.left < right) && (item.left + item.width > left)) { + ids.push(item.id); + } + } + } + } + + return ids; + }; + + /** + * Deselect a selected item + * @param {String | Number} id + * @private + */ + ItemSet.prototype._deselect = function(id) { + var selection = this.selection; + for (var i = 0, ii = selection.length; i < ii; i++) { + if (selection[i] == id) { // non-strict comparison! + selection.splice(i, 1); + break; + } + } + }; + + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + ItemSet.prototype.redraw = function() { + var margin = this.options.margin, + range = this.body.range, + asSize = util.option.asSize, + options = this.options, + orientation = options.orientation, + resized = false, + frame = this.dom.frame, + editable = options.editable.updateTime || options.editable.updateGroup; + + // recalculate absolute position (before redrawing groups) + this.props.top = this.body.domProps.top.height + this.body.domProps.border.top; + this.props.left = this.body.domProps.left.width + this.body.domProps.border.left; + + // update class name + frame.className = 'itemset' + (editable ? ' editable' : ''); + + // reorder the groups (if needed) + resized = this._orderGroups() || resized; + + // check whether zoomed (in that case we need to re-stack everything) + // TODO: would be nicer to get this as a trigger from Range + var visibleInterval = range.end - range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval) || (this.props.width != this.props.lastWidth); + if (zoomed) this.stackDirty = true; + this.lastVisibleInterval = visibleInterval; + this.props.lastWidth = this.props.width; + + var restack = this.stackDirty; + var firstGroup = this._firstGroup(); + var firstMargin = { + item: margin.item, + axis: margin.axis + }; + var nonFirstMargin = { + item: margin.item, + axis: margin.item.vertical / 2 + }; + var height = 0; + var minHeight = margin.axis + margin.item.vertical; + + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + + // redraw all regular groups + util.forEach(this.groups, function (group) { + var groupMargin = (group == firstGroup) ? firstMargin : nonFirstMargin; + var groupResized = group.redraw(range, groupMargin, restack); + resized = groupResized || resized; + height += group.height; + }); + height = Math.max(height, minHeight); + this.stackDirty = false; + + // update frame height + frame.style.height = asSize(height); + + // calculate actual size + this.props.width = frame.offsetWidth; + this.props.height = height; + + // reposition axis + this.dom.axis.style.top = asSize((orientation == 'top') ? + (this.body.domProps.top.height + this.body.domProps.border.top) : + (this.body.domProps.top.height + this.body.domProps.centerContainer.height)); + this.dom.axis.style.left = '0'; + + // check if this component is resized + resized = this._isResized() || resized; + + return resized; + }; + + /** + * Get the first group, aligned with the axis + * @return {Group | null} firstGroup + * @private + */ + ItemSet.prototype._firstGroup = function() { + var firstGroupIndex = (this.options.orientation == 'top') ? 0 : (this.groupIds.length - 1); + var firstGroupId = this.groupIds[firstGroupIndex]; + var firstGroup = this.groups[firstGroupId] || this.groups[UNGROUPED]; + + return firstGroup || null; + }; + + /** + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. + * @protected + */ + ItemSet.prototype._updateUngrouped = function() { + var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; + + if (this.groupsData) { + // remove the group holding all ungrouped items + if (ungrouped) { + ungrouped.hide(); + delete this.groups[UNGROUPED]; + + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + item.parent && item.parent.remove(item); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + group && group.add(item) || item.hide(); + } + } + } + } + else { + // create a group holding all (unfiltered) items + if (!ungrouped) { + var id = null; + var data = null; + ungrouped = new Group(id, data, this); + this.groups[UNGROUPED] = ungrouped; + + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + ungrouped.add(item); + } + } + + ungrouped.show(); + } + } }; + /** + * Get the element for the labelset + * @return {HTMLElement} labelSet + */ + ItemSet.prototype.getLabelSet = function() { + return this.dom.labelSet; + }; /** * Set items * @param {vis.DataSet | null} items */ - LineGraph.prototype.setItems = function(items) { + ItemSet.prototype.setItems = function(items) { var me = this, - ids, - oldItemsData = this.itemsData; + ids, + oldItemsData = this.itemsData; // replace the dataset if (!items) { @@ -13068,20 +12869,27 @@ return /******/ (function(modules) { // webpackBootstrap // add all new items ids = this.itemsData.getIds(); this._onAdd(ids); + + // update the group holding all ungrouped items + this._updateUngrouped(); } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); }; + /** + * Get the current items + * @returns {vis.DataSet | null} + */ + ItemSet.prototype.getItems = function() { + return this.itemsData; + }; /** * Set groups * @param {vis.DataSet} groups */ - LineGraph.prototype.setGroups = function(groups) { - var me = this; - var ids; + ItemSet.prototype.setGroups = function(groups) { + var me = this, + ids; // unsubscribe from current dataset if (this.groupsData) { @@ -13117,2289 +12925,2481 @@ return /******/ (function(modules) { // webpackBootstrap ids = this.groupsData.getIds(); this._onAddGroups(ids); } - this._onUpdate(); - }; + // update the group holding all ungrouped items + this._updateUngrouped(); + + // update the order of all items in each group + this._order(); + + this.body.emitter.emit('change', {queue: true}); + }; /** - * Update the data - * @param [ids] - * @private + * Get the current groups + * @returns {vis.DataSet | null} groups */ - LineGraph.prototype._onUpdate = function(ids) { - this._updateUngrouped(); - this._updateAllGroupData(); - //this._updateGraph(); - this.redraw(true); + ItemSet.prototype.getGroups = function() { + return this.groupsData; }; - LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; - LineGraph.prototype._onUpdateGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - var group = this.groupsData.get(groupIds[i]); - this._updateGroup(group, groupIds[i]); - } - //this._updateGraph(); - this.redraw(true); - }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; + /** + * Remove an item by its id + * @param {String | Number} id + */ + ItemSet.prototype.removeItem = function(id) { + var item = this.itemsData.get(id), + dataset = this.itemsData.getDataSet(); + if (item) { + // confirm deletion + this.options.onRemove(item, function (item) { + if (item) { + // remove by id here, it is possible that an item has no id defined + // itself, so better not delete by the item itself + dataset.remove(id); + } + }); + } + }; /** - * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph - * @param {Array} groupIds + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type * @private */ - LineGraph.prototype._onRemoveGroups = function (groupIds) { - for (var i = 0; i < groupIds.length; i++) { - if (this.groups.hasOwnProperty(groupIds[i])) { - if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { - this.yAxisRight.removeGroup(groupIds[i]); - this.legendRight.removeGroup(groupIds[i]); - this.legendRight.redraw(); - } - else { - this.yAxisLeft.removeGroup(groupIds[i]); - this.legendLeft.removeGroup(groupIds[i]); - this.legendLeft.redraw(); - } - delete this.groups[groupIds[i]]; - } - } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); }; /** - * update a group object with the group dataset entree - * - * @param group - * @param groupId + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId * @private */ - LineGraph.prototype._updateGroup = function (group, groupId) { - if (!this.groups.hasOwnProperty(groupId)) { - this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.addGroup(groupId, this.groups[groupId]); - this.legendRight.addGroup(groupId, this.groups[groupId]); - } - else { - this.yAxisLeft.addGroup(groupId, this.groups[groupId]); - this.legendLeft.addGroup(groupId, this.groups[groupId]); - } + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background' && itemData.group == undefined) { + return BACKGROUND; } else { - this.groups[groupId].update(group); - if (this.groups[groupId].options.yAxisOrientation == 'right') { - this.yAxisRight.updateGroup(groupId, this.groups[groupId]); - this.legendRight.updateGroup(groupId, this.groups[groupId]); - } - else { - this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); - this.legendLeft.updateGroup(groupId, this.groups[groupId]); - } + return this.groupsData ? itemData.group : UNGROUPED; } - this.legendLeft.redraw(); - this.legendRight.redraw(); }; - /** - * this updates all groups, it is used when there is an update the the itemset. - * - * @private + * Handle updated items + * @param {Number[]} ids + * @protected */ - LineGraph.prototype._updateAllGroupData = function () { - if (this.itemsData != null) { - var groupsContent = {}; - var groupId; - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - groupsContent[groupId] = []; + ItemSet.prototype._onUpdate = function(ids) { + var me = this; + + ids.forEach(function (id) { + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); + + var constructor = ItemSet.types[type]; + + if (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, delete the item and recreate it + me._removeItem(item); + item = null; } - } - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (groupsContent[item.group] === undefined) { - throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') - } - item.x = util.convert(item.x,'Date'); - groupsContent[item.group].push(item); + else { + me._updateItem(item, itemData); } } - for (groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - this.groups[groupId].setItems(groupsContent[groupId]); + + if (!item) { + // create item + if (constructor) { + item = new constructor(itemData, me.conversion, me.options); + item.id = id; // TODO: not so nice setting id afterwards + me._addItem(item); + } + else if (type == 'rangeoverflow') { + // TODO: deprecated since version 2.1.0 (or 3.0.0?). cleanup some day + throw new TypeError('Item type "rangeoverflow" is deprecated. Use css styling instead: ' + + '.vis.timeline .item.range .content {overflow: visible;}'); + } + else { + throw new TypeError('Unknown item type "' + type + '"'); } } - } - }; + }); + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); + }; /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. This anonymous group is called 'graph'. + * Handle added items + * @param {Number[]} ids * @protected */ - LineGraph.prototype._updateUngrouped = function() { - if (this.itemsData && this.itemsData != null) { - var ungroupedCounter = 0; - for (var itemId in this.itemsData._data) { - if (this.itemsData._data.hasOwnProperty(itemId)) { - var item = this.itemsData._data[itemId]; - if (item != undefined) { - if (item.hasOwnProperty('group')) { - if (item.group === undefined) { - item.group = UNGROUPED; - } - } - else { - item.group = UNGROUPED; - } - ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; - } - } - } - - if (ungroupedCounter == 0) { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } - else { - var group = {id: UNGROUPED, content: this.options.defaultGroup}; - this._updateGroup(group, UNGROUPED); - } - } - else { - delete this.groups[UNGROUPED]; - this.legendLeft.removeGroup(UNGROUPED); - this.legendRight.removeGroup(UNGROUPED); - this.yAxisLeft.removeGroup(UNGROUPED); - this.yAxisRight.removeGroup(UNGROUPED); - } - - this.legendLeft.redraw(); - this.legendRight.redraw(); - }; - + ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Handle removed items + * @param {Number[]} ids + * @protected */ - LineGraph.prototype.redraw = function(forceGraphUpdate) { - var resized = false; - - // calculate actual size and position - this.props.width = this.dom.frame.offsetWidth; - this.props.height = this.body.domProps.centerContainer.height; - - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; - } - - // check if this component is resized - resized = this._isResized() || resized; - - // check whether zoomed (in that case we need to re-stack everything) - var visibleInterval = this.body.range.end - this.body.range.start; - var zoomed = (visibleInterval != this.lastVisibleInterval); - this.lastVisibleInterval = visibleInterval; - - - // the svg element is three times as big as the width, this allows for fully dragging left and right - // without reloading the graph. the controls for this are bound to events in the constructor - if (resized == true) { - this.svg.style.width = util.option.asSize(3*this.props.width); - this.svg.style.left = util.option.asSize(-this.props.width); - - // if the height of the graph is set as proportional, change the height of the svg - if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { - this.updateSVGheight = true; - } - } - - // update the height of the graph on each redraw of the graph. - if (this.updateSVGheight == true) { - if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { - this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; - this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; + ItemSet.prototype._onRemove = function(ids) { + var count = 0; + var me = this; + ids.forEach(function (id) { + var item = me.items[id]; + if (item) { + count++; + me._removeItem(item); } - this.updateSVGheight = false; - } - else { - this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; - } + }); - // zoomed is here to ensure that animations are shown correctly. - if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { - resized = this._updateGraph() || resized; - } - else { - // move the whole svg while dragging - if (this.lastStart != 0) { - var offset = this.body.range.start - this.lastStart; - var range = this.body.range.end - this.body.range.start; - if (this.props.width != 0) { - var rangePerPixelInv = this.props.width/range; - var xOffset = offset * rangePerPixelInv; - this.svg.style.left = (-this.props.width - xOffset) + 'px'; - } - } + if (count) { + // update order + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); } - - this.legendLeft.redraw(); - this.legendRight.redraw(); - return resized; }; + /** + * Update the order of item in all groups + * @private + */ + ItemSet.prototype._order = function() { + // reorder the items in all groups + // TODO: optimization: only reorder groups affected by the changed items + util.forEach(this.groups, function (group) { + group.order(); + }); + }; /** - * Update and redraw the graph. - * + * Handle updated groups + * @param {Number[]} ids + * @private */ - LineGraph.prototype._updateGraph = function () { - // reset the svg elements - DOMutil.prepareElements(this.svgElements); - if (this.props.width != 0 && this.itemsData != null) { - var group, i; - var preprocessedGroupData = {}; - var processedGroupData = {}; - var groupRanges = {}; - var changeCalled = false; + ItemSet.prototype._onUpdateGroups = function(ids) { + this._onAddGroups(ids); + }; - // getting group Ids - var groupIds = []; - for (var groupId in this.groups) { - if (this.groups.hasOwnProperty(groupId)) { - group = this.groups[groupId]; - if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { - groupIds.push(groupId); - } - } - } - if (groupIds.length > 0) { - // this is the range of the SVG canvas - var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); - var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); - var groupsData = {}; - // fill groups data, this only loads the data we require based on the timewindow - this._getRelevantData(groupIds, groupsData, minDate, maxDate); + /** + * Handle changed groups (added or updated) + * @param {Number[]} ids + * @private + */ + ItemSet.prototype._onAddGroups = function(ids) { + var me = this; - // apply sampling, if disabled, it will pass through this function. - this._applySampling(groupIds, groupsData); + ids.forEach(function (id) { + var groupData = me.groupsData.get(id); + var group = me.groups[id]; - // we transform the X coordinates to detect collisions - for (i = 0; i < groupIds.length; i++) { - preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); + if (!group) { + // check for reserved ids + if (id == UNGROUPED || id == BACKGROUND) { + throw new Error('Illegal group id. ' + id + ' is a reserved id.'); } - // now all needed data has been collected we start the processing. - this._getYRanges(groupIds, preprocessedGroupData, groupRanges); - - // update the Y axis first, we use this data to draw at the correct Y points - // changeCalled is required to clean the SVG on a change emit. - changeCalled = this._updateYAxis(groupIds, groupRanges); - var MAX_CYCLES = 5; - if (changeCalled == true && this.COUNTER < MAX_CYCLES) { - DOMutil.cleanupElements(this.svgElements); - this.abortedGraphUpdate = true; - this.COUNTER++; - this.body.emitter.emit('change'); - return true; - } - else { - if (this.COUNTER > MAX_CYCLES) { - console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") - } - this.COUNTER = 0; - this.abortedGraphUpdate = false; + var groupOptions = Object.create(me.options); + util.extend(groupOptions, { + height: null + }); - // With the yAxis scaled correctly, use this to get the Y values of the points. - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); - } + group = new Group(id, groupData, me); + me.groups[id] = group; - // draw the groups - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.style != 'bar') { // bar needs to be drawn enmasse - group.draw(processedGroupData[groupIds[i]], group, this.framework); + // add items with this groupId to the new group + for (var itemId in me.items) { + if (me.items.hasOwnProperty(itemId)) { + var item = me.items[itemId]; + if (item.data.group == id) { + group.add(item); } } - BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); } + + group.order(); + group.show(); } - } + else { + // update group + group.setData(groupData); + } + }); - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); - return false; + this.body.emitter.emit('change', {queue: true}); }; - /** - * first select and preprocess the data from the datasets. - * the groups have their preselection of data, we now loop over this data to see - * what data we need to draw. Sorted data is much faster. - * more optimization is possible by doing the sampling before and using the binary search - * to find the end date to determine the increment. - * - * @param {array} groupIds - * @param {object} groupsData - * @param {date} minDate - * @param {date} maxDate + * Handle removed groups + * @param {Number[]} ids * @private */ - LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { - var group, i, j, item; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - groupsData[groupIds[i]] = []; - var dataContainer = groupsData[groupIds[i]]; - // optimization for sorted data - if (group.options.sort == true) { - var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); - for (j = guess; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > maxDate) { - dataContainer.push(item); - break; - } - else { - dataContainer.push(item); - } - } - } - } - else { - for (j = 0; j < group.itemsData.length; j++) { - item = group.itemsData[j]; - if (item !== undefined) { - if (item.x > minDate && item.x < maxDate) { - dataContainer.push(item); - } - } - } - } + ItemSet.prototype._onRemoveGroups = function(ids) { + var groups = this.groups; + ids.forEach(function (id) { + var group = groups[id]; + + if (group) { + group.hide(); + delete groups[id]; } - } - }; + }); + + this.markDirty(); + this.body.emitter.emit('change', {queue: true}); + }; /** - * - * @param groupIds - * @param groupsData + * Reorder the groups if needed + * @return {boolean} changed * @private */ - LineGraph.prototype._applySampling = function (groupIds, groupsData) { - var group; - if (groupIds.length > 0) { - for (var i = 0; i < groupIds.length; i++) { - group = this.groups[groupIds[i]]; - if (group.options.sampling == true) { - var dataContainer = groupsData[groupIds[i]]; - if (dataContainer.length > 0) { - var increment = 1; - var amountOfPoints = dataContainer.length; + ItemSet.prototype._orderGroups = function () { + if (this.groupsData) { + // reorder the groups + var groupIds = this.groupsData.getIds({ + order: this.options.groupOrder + }); - // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop - // of width changing of the yAxis. - var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); - var pointsPerPixel = amountOfPoints / xDistance; - increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); + var changed = !util.equalArray(groupIds, this.groupIds); + if (changed) { + // hide all groups, removes them from the DOM + var groups = this.groups; + groupIds.forEach(function (groupId) { + groups[groupId].hide(); + }); - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + // show the groups again, attach them to the DOM in correct order + groupIds.forEach(function (groupId) { + groups[groupId].show(); + }); - } - groupsData[groupIds[i]] = sampledData; - } - } + this.groupIds = groupIds; } + + return changed; + } + else { + return false; } }; - /** - * - * - * @param {array} groupIds - * @param {object} groupsData - * @param {object} groupRanges | this is being filled here + * Add a new item + * @param {Item} item * @private */ - LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { - var groupData, group, i; - var barCombinedDataLeft = []; - var barCombinedDataRight = []; - var options; - if (groupIds.length > 0) { - for (i = 0; i < groupIds.length; i++) { - groupData = groupsData[groupIds[i]]; - options = this.groups[groupIds[i]].options; - if (groupData.length > 0) { - group = this.groups[groupIds[i]]; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { - if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} - else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} - } - else { - groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); - } - } - } + ItemSet.prototype._addItem = function(item) { + this.items[item.id] = item; - // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. - BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); - BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); - } + // add to group + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); }; - /** - * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. - * @param {Array} groupIds - * @param {Object} groupRanges + * Update an existing item + * @param {Item} item + * @param {Object} itemData * @private */ - LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { - var resized = false; - var yAxisLeftUsed = false; - var yAxisRightUsed = false; - var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; - // if groups are present - if (groupIds.length > 0) { - // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. - for (var i = 0; i < groupIds.length; i++) { - var group = this.groups[groupIds[i]]; - if (group && group.options.yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = 0; - maxLeft = 0; - } - else if (group && group.options.yAxisOrientation) { - yAxisRightUsed = true; - minRight = 0; - maxRight = 0; - } - } + ItemSet.prototype._updateItem = function(item, itemData) { + var oldGroupId = item.data.group; - // if there are items: - for (var i = 0; i < groupIds.length; i++) { - if (groupRanges.hasOwnProperty(groupIds[i])) { - if (groupRanges[groupIds[i]].ignore !== true) { - minVal = groupRanges[groupIds[i]].min; - maxVal = groupRanges[groupIds[i]].max; + // update the items data (will redraw the item when displayed) + item.setData(itemData); - if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { - yAxisLeftUsed = true; - minLeft = minLeft > minVal ? minVal : minLeft; - maxLeft = maxLeft < maxVal ? maxVal : maxLeft; - } - else { - yAxisRightUsed = true; - minRight = minRight > minVal ? minVal : minRight; - maxRight = maxRight < maxVal ? maxVal : maxRight; - } - } - } - } + // update group + if (oldGroupId != item.data.group) { + var oldGroup = this.groups[oldGroupId]; + if (oldGroup) oldGroup.remove(item); - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); - } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); - } + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); } - resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; - resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; + }; - if (yAxisRightUsed == true && yAxisLeftUsed == true) { - this.yAxisLeft.drawIcons = true; - this.yAxisRight.drawIcons = true; - } - else { - this.yAxisLeft.drawIcons = false; - this.yAxisRight.drawIcons = false; - } - this.yAxisRight.master = !yAxisLeftUsed; - if (this.yAxisRight.master == false) { - if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} - else {this.yAxisLeft.lineOffset = 0;} + /** + * Delete an item from the ItemSet: remove it from the DOM, from the map + * with items, and from the map with visible items, and from the selection + * @param {Item} item + * @private + */ + ItemSet.prototype._removeItem = function(item) { + // remove from DOM + item.hide(); - resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - resized = this.yAxisRight.redraw() || resized; - } - else { - resized = this.yAxisRight.redraw() || resized; - } + // remove from items + delete this.items[item.id]; - // clean the accumulated lists - if (groupIds.indexOf('__barchartLeft') != -1) { - groupIds.splice(groupIds.indexOf('__barchartLeft'),1); - } - if (groupIds.indexOf('__barchartRight') != -1) { - groupIds.splice(groupIds.indexOf('__barchartRight'),1); - } + // remove from selection + var index = this.selection.indexOf(item.id); + if (index != -1) this.selection.splice(index, 1); - return resized; + // remove from group + item.parent && item.parent.remove(item); }; - /** - * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function - * - * @param {boolean} axisUsed - * @returns {boolean} + * Create an array containing all items being a range (having an end date) + * @param array + * @returns {Array} * @private - * @param axis */ - LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { - var changed = false; - if (axisUsed == false) { - if (axis.dom.frame.parentNode && axis.hidden == false) { - axis.hide() - changed = true; - } - } - else { - if (!axis.dom.frame.parentNode && axis.hidden == true) { - axis.show(); - changed = true; + ItemSet.prototype._constructByEndArray = function(array) { + var endArray = []; + + for (var i = 0; i < array.length; i++) { + if (array[i] instanceof RangeItem) { + endArray.push(array[i]); } } - return changed; + return endArray; }; - /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. + * Register the clicked item on touch, before dragStart is initiated. * - * @param datapoints - * @returns {Array} + * dragStart is initiated from a mousemove event, which can have left the item + * already resulting in an item == null + * + * @param {Event} event * @private */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; - - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = datapoints[i].y; - extractedData.push({x: xValue, y: yValue}); - } - - return extractedData; + ItemSet.prototype._onTouch = function (event) { + // store the touched item, used in _onDragStart + this.touchParams.item = ItemSet.itemFromTarget(event); }; - /** - * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the - * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for - * the yAxis. - * - * @param datapoints - * @param group - * @returns {Array} + * Start dragging the selected events + * @param {Event} event * @private */ - LineGraph.prototype._convertYcoordinates = function (datapoints, group) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; - var axis = this.yAxisLeft; - var svgHeight = Number(this.svg.style.height.replace('px','')); - if (group.options.yAxisOrientation == 'right') { - axis = this.yAxisRight; + ItemSet.prototype._onDragStart = function (event) { + if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { + return; } - for (var i = 0; i < datapoints.length; i++) { - xValue = toScreen(datapoints[i].x) + this.props.width; - yValue = Math.round(axis.convertValue(datapoints[i].y)); - extractedData.push({x: xValue, y: yValue}); - } + var item = this.touchParams.item || null; + var me = this; + var props; - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); + if (item && item.selected) { + var dragLeftItem = event.target.dragLeftItem; + var dragRightItem = event.target.dragRightItem; - return extractedData; - }; + if (dragLeftItem) { + props = { + item: dragLeftItem, + initialX: event.gesture.center.clientX + }; + if (me.options.editable.updateTime) { + props.start = item.data.start.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - module.exports = LineGraph; + this.touchParams.itemProps = [props]; + } + else if (dragRightItem) { + props = { + item: dragRightItem, + initialX: event.gesture.center.clientX + }; + if (me.options.editable.updateTime) { + props.end = item.data.end.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { + this.touchParams.itemProps = [props]; + } + else { + this.touchParams.itemProps = this.getSelection().map(function (id) { + var item = me.items[id]; + var props = { + item: item, + initialX: event.gesture.center.clientX + }; - var util = __webpack_require__(1); - var Component = __webpack_require__(20); - var TimeStep = __webpack_require__(19); - var DateUtil = __webpack_require__(15); - var moment = __webpack_require__(44); + if (me.options.editable.updateTime) { + if ('start' in item.data) props.start = item.data.start.valueOf(); + if ('end' in item.data) props.end = item.data.end.valueOf(); + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } - /** - * A horizontal time axis - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body - * @param {Object} [options] See TimeAxis.setOptions for the available - * options. - * @constructor TimeAxis - * @extends Component - */ - function TimeAxis (body, options) { - this.dom = { - foreground: null, - lines: [], - majorTexts: [], - minorTexts: [], - redundant: { - lines: [], - majorTexts: [], - minorTexts: [] + return props; + }); } - }; - this.props = { - range: { - start: 0, - end: 0, - minimumStep: 0 - }, - lineTop: 0 - }; - - this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' - showMinorLabels: true, - showMajorLabels: true, - format: null - }; - this.options = util.extend({}, this.defaultOptions); - this.body = body; + event.stopPropagation(); + } + }; - // create the HTML DOM - this._create(); + /** + * Drag selected items + * @param {Event} event + * @private + */ + ItemSet.prototype._onDrag = function (event) { + event.preventDefault() - this.setOptions(options); - } + if (this.touchParams.itemProps) { + var me = this; + var snap = this.body.util.snap || null; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; - TimeAxis.prototype = new Component(); + // move + this.touchParams.itemProps.forEach(function (props) { + var newProps = {}; + var current = me.body.util.toTime(event.gesture.center.clientX - xOffset); + var initial = me.body.util.toTime(props.initialX - xOffset); + var offset = current - initial; - /** - * Set options for the TimeAxis. - * Parameters will be merged in current options. - * @param {Object} options Available options: - * {string} [orientation] - * {boolean} [showMinorLabels] - * {boolean} [showMajorLabels] - */ - TimeAxis.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend([ - 'orientation', - 'showMinorLabels', - 'showMajorLabels', - 'hiddenDates', - 'format' - ], this.options, options); + if ('start' in props) { + var start = new Date(props.start + offset); + newProps.start = snap ? snap(start) : start; + } - // apply locale to moment.js - // TODO: not so nice, this is applied globally to moment.js - if ('locale' in options) { - if (typeof moment.locale === 'function') { - // moment.js 2.8.1+ - moment.locale(options.locale); + if ('end' in props) { + var end = new Date(props.end + offset); + newProps.end = snap ? snap(end) : end; } - else { - moment.lang(options.locale); + + if ('group' in props) { + // drag from one group to another + var group = ItemSet.groupFromTarget(event); + newProps.group = group && group.groupId; } - } + + // confirm moving the item + var itemData = util.extend({}, props.item.data, newProps); + me.options.onMoving(itemData, function (itemData) { + if (itemData) { + me._updateItemProps(props.item, itemData); + } + }); + }); + + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change'); + + event.stopPropagation(); } }; /** - * Create the HTML DOM for the TimeAxis + * Update an items properties + * @param {Item} item + * @param {Object} props Can contain properties start, end, and group. + * @private */ - TimeAxis.prototype._create = function() { - this.dom.foreground = document.createElement('div'); - this.dom.background = document.createElement('div'); - - this.dom.foreground.className = 'timeaxis foreground'; - this.dom.background.className = 'timeaxis background'; + ItemSet.prototype._updateItemProps = function(item, props) { + // TODO: copy all properties from props to item? (also new ones) + if ('start' in props) item.data.start = props.start; + if ('end' in props) item.data.end = props.end; + if ('group' in props && item.data.group != props.group) { + this._moveToGroup(item, props.group) + } }; /** - * Destroy the TimeAxis + * Move an item to another group + * @param {Item} item + * @param {String | Number} groupId + * @private */ - TimeAxis.prototype.destroy = function() { - // remove from DOM - if (this.dom.foreground.parentNode) { - this.dom.foreground.parentNode.removeChild(this.dom.foreground); - } - if (this.dom.background.parentNode) { - this.dom.background.parentNode.removeChild(this.dom.background); - } + ItemSet.prototype._moveToGroup = function(item, groupId) { + var group = this.groups[groupId]; + if (group && group.groupId != item.data.group) { + var oldGroup = item.parent; + oldGroup.remove(item); + oldGroup.order(); + group.add(item); + group.order(); - this.body = null; + item.data.group = group.groupId; + } }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * End of dragging selected items + * @param {Event} event + * @private */ - TimeAxis.prototype.redraw = function () { - var options = this.options; - var props = this.props; - var foreground = this.dom.foreground; - var background = this.dom.background; - - // determine the correct parent DOM element (depending on option orientation) - var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; - var parentChanged = (foreground.parentNode !== parent); - - // calculate character width and height - this._calculateCharSize(); + ItemSet.prototype._onDragEnd = function (event) { + event.preventDefault() - // TODO: recalculate sizes only needed when parent is resized or options is changed - var orientation = this.options.orientation, - showMinorLabels = this.options.showMinorLabels, - showMajorLabels = this.options.showMajorLabels; + if (this.touchParams.itemProps) { + // prepare a change set for the changed items + var changes = [], + me = this, + dataset = this.itemsData.getDataSet(); - // determine the width and height of the elemens for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - props.height = props.minorLabelHeight + props.majorLabelHeight; - props.width = foreground.offsetWidth; + var itemProps = this.touchParams.itemProps ; + this.touchParams.itemProps = null; + itemProps.forEach(function (props) { + var id = props.item.id, + itemData = me.itemsData.get(id, me.itemOptions); - props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - - (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); - props.minorLineWidth = 1; // TODO: really calculate width - props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; - props.majorLineWidth = 1; // TODO: really calculate width + var changed = false; + if ('start' in props.item.data) { + changed = (props.start != props.item.data.start.valueOf()); + itemData.start = util.convert(props.item.data.start, + dataset._options.type && dataset._options.type.start || 'Date'); + } + if ('end' in props.item.data) { + changed = changed || (props.end != props.item.data.end.valueOf()); + itemData.end = util.convert(props.item.data.end, + dataset._options.type && dataset._options.type.end || 'Date'); + } + if ('group' in props.item.data) { + changed = changed || (props.group != props.item.data.group); + itemData.group = props.item.data.group; + } - // take foreground and background offline while updating (is almost twice as fast) - var foregroundNextSibling = foreground.nextSibling; - var backgroundNextSibling = background.nextSibling; - foreground.parentNode && foreground.parentNode.removeChild(foreground); - background.parentNode && background.parentNode.removeChild(background); + // only apply changes when start or end is actually changed + if (changed) { + me.options.onMove(itemData, function (itemData) { + if (itemData) { + // apply changes + itemData[dataset._fieldId] = id; // ensure the item contains its id (can be undefined) + changes.push(itemData); + } + else { + // restore original values + me._updateItemProps(props.item, props); - foreground.style.height = this.props.height + 'px'; + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + }); - this._repaintLabels(); + // apply the changes to the data (if there are changes) + if (changes.length) { + dataset.update(changes); + } - // put DOM online again (at the same place) - if (foregroundNextSibling) { - parent.insertBefore(foreground, foregroundNextSibling); - } - else { - parent.appendChild(foreground) - } - if (backgroundNextSibling) { - this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); - } - else { - this.body.dom.backgroundVertical.appendChild(background) + event.stopPropagation(); } - - return this._isResized() || parentChanged; }; /** - * Repaint major and minor text labels and vertical grid lines + * Handle selecting/deselecting an item when tapping it + * @param {Event} event * @private */ - TimeAxis.prototype._repaintLabels = function () { - var orientation = this.options.orientation; - - // calculate range and step (step such that we have space for 7 characters per label) - var start = util.convert(this.body.range.start, 'Number'); - var end = util.convert(this.body.range.end, 'Number'); - var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); - var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); - minimumStep -= this.body.util.toTime(0).valueOf(); + ItemSet.prototype._onSelectItem = function (event) { + if (!this.options.selectable) return; - var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); - if (this.options.format) { - step.setFormat(this.options.format); + var ctrlKey = event.gesture.srcEvent && event.gesture.srcEvent.ctrlKey; + var shiftKey = event.gesture.srcEvent && event.gesture.srcEvent.shiftKey; + if (ctrlKey || shiftKey) { + this._onMultiSelectItem(event); + return; } - this.step = step; - // Move all DOM elements to a "redundant" list, where they - // can be picked for re-use, and clear the lists with lines and texts. - // At the end of the function _repaintLabels, left over elements will be cleaned up - var dom = this.dom; - dom.redundant.lines = dom.lines; - dom.redundant.majorTexts = dom.majorTexts; - dom.redundant.minorTexts = dom.minorTexts; - dom.lines = []; - dom.majorTexts = []; - dom.minorTexts = []; + var oldSelection = this.getSelection(); - var cur; - var x = 0; - var isMajor; - var xPrev = 0; - var width = 0; - var prevLine; - var xFirstMajorLabel = undefined; - var max = 0; - var className; + var item = ItemSet.itemFromTarget(event); + var selection = item ? [item.id] : []; + this.setSelection(selection); - step.first(); - while (step.hasNext() && max < 1000) { - max++; + var newSelection = this.getSelection(); - cur = step.getCurrent(); - isMajor = step.isMajor(); - className = step.getClassName(); + // emit a select event, + // except when old selection is empty and new selection is still empty + if (newSelection.length > 0 || oldSelection.length > 0) { + this.body.emitter.emit('select', { + items: newSelection + }); + } + }; - xPrev = x; - x = this.body.util.toScreen(cur); - width = x - xPrev; - if (prevLine) { - prevLine.style.width = width + 'px'; - } + /** + * Handle creation and updates of an item on double tap + * @param event + * @private + */ + ItemSet.prototype._onAddItem = function (event) { + if (!this.options.selectable) return; + if (!this.options.editable.add) return; - if (this.options.showMinorLabels) { - this._repaintMinorText(x, step.getLabelMinor(), orientation, className); - } + var me = this, + snap = this.body.util.snap || null, + item = ItemSet.itemFromTarget(event); - if (isMajor && this.options.showMajorLabels) { - if (x > 0) { - if (xFirstMajorLabel == undefined) { - xFirstMajorLabel = x; - } - this._repaintMajorText(x, step.getLabelMajor(), orientation, className); - } - prevLine = this._repaintMajorLine(x, orientation, className); - } - else { - prevLine = this._repaintMinorLine(x, orientation, className); - } + if (item) { + // update item - step.next(); + // execute async handler to update the item (or cancel it) + var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset + this.options.onUpdate(itemData, function (itemData) { + if (itemData) { + me.itemsData.getDataSet().update(itemData); + } + }); } + else { + // add item + var xAbs = util.getAbsoluteLeft(this.dom.frame); + var x = event.gesture.center.pageX - xAbs; + var start = this.body.util.toTime(x); + var newItem = { + start: snap ? snap(start) : start, + content: 'new item' + }; - // create a major label on the left when needed - if (this.options.showMajorLabels) { - var leftTime = this.body.util.toTime(0), - leftText = step.getLabelMajor(leftTime), - widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation + // when default type is a range, add a default end date to the new item + if (this.options.type === 'range') { + var end = this.body.util.toTime(x + this.props.width / 5); + newItem.end = snap ? snap(end) : end; + } - if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { - this._repaintMajorText(0, leftText, orientation, className); + newItem[this.itemsData._fieldId] = util.randomUUID(); + + var group = ItemSet.groupFromTarget(event); + if (group) { + newItem.group = group.groupId; } - } - // Cleanup leftover DOM elements from the redundant list - util.forEach(this.dom.redundant, function (arr) { - while (arr.length) { - var elem = arr.pop(); - if (elem && elem.parentNode) { - elem.parentNode.removeChild(elem); + // execute async handler to customize (or cancel) adding an item + this.options.onAdd(newItem, function (item) { + if (item) { + me.itemsData.getDataSet().add(item); + // TODO: need to trigger a redraw? } - } - }); + }); + } }; /** - * Create a minor label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className + * Handle selecting/deselecting multiple items when holding an item + * @param {Event} event * @private */ - TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.minorTexts.shift(); + ItemSet.prototype._onMultiSelectItem = function (event) { + if (!this.options.selectable) return; - if (!label) { - // create new label - var content = document.createTextNode(''); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.minorTexts.push(label); + var selection, + item = ItemSet.itemFromTarget(event); - label.childNodes[0].nodeValue = text; + if (item) { + // multi select items + selection = this.getSelection(); // current selection - label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; - label.style.left = x + 'px'; - label.className = 'text minor ' + className; - //label.title = title; // TODO: this is a heavy operation - }; + var shiftKey = event.gesture.touches[0] && event.gesture.touches[0].shiftKey || false; + if (shiftKey) { + // select all items between the old selection and the tapped item - /** - * Create a Major label for the axis at position x - * @param {Number} x - * @param {String} text - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @private - */ - TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { - // reuse redundant label - var label = this.dom.redundant.majorTexts.shift(); + // determine the selection range + selection.push(item.id); + var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); - if (!label) { - // create label - var content = document.createTextNode(text); - label = document.createElement('div'); - label.appendChild(content); - this.dom.foreground.appendChild(label); - } - this.dom.majorTexts.push(label); + // select all items within the selection range + selection = []; + for (var id in this.items) { + if (this.items.hasOwnProperty(id)) { + var _item = this.items[id]; + var start = _item.data.start; + var end = (_item.data.end !== undefined) ? _item.data.end : start; - label.childNodes[0].nodeValue = text; - label.className = 'text major ' + className; - //label.title = title; // TODO: this is a heavy operation + if (start >= range.min && end <= range.max) { + selection.push(_item.id); // do not use id but item.id, id itself is stringified + } + } + } + } + else { + // add/remove this item from the current selection + var index = selection.indexOf(item.id); + if (index == -1) { + // item is not yet selected -> select it + selection.push(item.id); + } + else { + // item is already selected -> deselect it + selection.splice(index, 1); + } + } - label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); - label.style.left = x + 'px'; + this.setSelection(selection); + + this.body.emitter.emit('select', { + items: this.getSelection() + }); + } }; /** - * Create a minor line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line + * Calculate the time range of a list of items + * @param {Array.} itemsData + * @return {{min: Date, max: Date}} Returns the range of the provided items * @private */ - TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); + ItemSet._getItemRange = function(itemsData) { + var max = null; + var min = null; - var props = this.props; - if (orientation == 'top') { - line.style.top = props.majorLabelHeight + 'px'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; - } - line.style.height = props.minorLineHeight + 'px'; - line.style.left = (x - props.minorLineWidth / 2) + 'px'; + itemsData.forEach(function (data) { + if (min == null || data.start < min) { + min = data.start; + } - line.className = 'grid vertical minor ' + className; + if (data.end != undefined) { + if (max == null || data.end > max) { + max = data.end; + } + } + else { + if (max == null || data.start > max) { + max = data.start; + } + } + }); - return line; + return { + min: min, + max: max + } }; /** - * Create a Major line for the axis at position x - * @param {Number} x - * @param {String} orientation "top" or "bottom" (default) - * @param {String} className - * @return {Element} Returns the created line - * @private + * Find an item from an event target: + * searches for the attribute 'timeline-item' in the event target's element tree + * @param {Event} event + * @return {Item | null} item */ - TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { - // reuse redundant line - var line = this.dom.redundant.lines.shift(); - if (!line) { - // create vertical line - line = document.createElement('div'); - this.dom.background.appendChild(line); - } - this.dom.lines.push(line); - - var props = this.props; - if (orientation == 'top') { - line.style.top = '0'; - } - else { - line.style.top = this.body.domProps.top.height + 'px'; + ItemSet.itemFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-item')) { + return target['timeline-item']; + } + target = target.parentNode; } - line.style.left = (x - props.majorLineWidth / 2) + 'px'; - line.style.height = props.majorLineHeight + 'px'; - - line.className = 'grid vertical major ' + className; - return line; + return null; }; /** - * Determine the size of text on the axis (both major and minor axis). - * The size is calculated only once and then cached in this.props. - * @private + * Find the Group from an event target: + * searches for the attribute 'timeline-group' in the event target's element tree + * @param {Event} event + * @return {Group | null} group */ - TimeAxis.prototype._calculateCharSize = function () { - // Note: We calculate char size with every redraw. Size may change, for - // example when any of the timelines parents had display:none for example. - - // determine the char width and height on the minor axis - if (!this.dom.measureCharMinor) { - this.dom.measureCharMinor = document.createElement('DIV'); - this.dom.measureCharMinor.className = 'text minor measure'; - this.dom.measureCharMinor.style.position = 'absolute'; - - this.dom.measureCharMinor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMinor); + ItemSet.groupFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-group')) { + return target['timeline-group']; + } + target = target.parentNode; } - this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; - this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - - // determine the char width and height on the major axis - if (!this.dom.measureCharMajor) { - this.dom.measureCharMajor = document.createElement('DIV'); - this.dom.measureCharMajor.className = 'text major measure'; - this.dom.measureCharMajor.style.position = 'absolute'; - this.dom.measureCharMajor.appendChild(document.createTextNode('0')); - this.dom.foreground.appendChild(this.dom.measureCharMajor); - } - this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; - this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; + return null; }; /** - * Snap a date to a rounded value. - * The snap intervals are dependent on the current scale and step. - * @param {Date} date the date to be snapped. - * @return {Date} snappedDate + * Find the ItemSet from an event target: + * searches for the attribute 'timeline-itemset' in the event target's element tree + * @param {Event} event + * @return {ItemSet | null} item */ - TimeAxis.prototype.snap = function(date) { - return this.step.snap(date); + ItemSet.itemSetFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-itemset')) { + return target['timeline-itemset']; + } + target = target.parentNode; + } + + return null; }; - module.exports = TimeAxis; + module.exports = ItemSet; /***/ }, -/* 31 */ +/* 33 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(45); var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(25); /** - * @constructor Item - * @param {Object} data Object containing (optional) parameters type, - * start, end, content, group, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} options Configuration options - * // TODO: describe available options + * Legend for Graph2d */ - function Item (data, conversion, options) { - this.id = null; - this.parent = null; - this.data = data; - this.dom = null; - this.conversion = conversion || {}; - this.options = options || {}; + function Legend(body, options, side, linegraphOptions) { + this.body = body; + this.defaultOptions = { + enabled: true, + icons: true, + iconSize: 20, + iconSpacing: 6, + left: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + }, + right: { + visible: true, + position: 'top-left' // top/bottom - left,center,right + } + } + this.side = side; + this.options = util.extend({},this.defaultOptions); + this.linegraphOptions = linegraphOptions; - this.selected = false; - this.displayed = false; - this.dirty = true; + this.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); - this.top = null; - this.left = null; - this.width = null; - this.height = null; + this.setOptions(options); } - Item.prototype.stack = true; + Legend.prototype = new Component(); - /** - * Select current item - */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); - }; + Legend.prototype.clear = function() { + this.groups = {}; + this.amountOfGroups = 0; + } - /** - * Unselect current item - */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); + Legend.prototype.addGroup = function(label, graphOptions) { + + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; }; - /** - * Set data for the item. Existing data will be updated. The id should not - * be changed. When the item is displayed, it will be redrawn immediately. - * @param {Object} data - */ - Item.prototype.setData = function(data) { - this.data = data; - this.dirty = true; - if (this.displayed) this.redraw(); + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; }; - /** - * Set a parent for the item - * @param {ItemSet | Group} parent - */ - Item.prototype.setParent = function(parent) { - if (this.displayed) { - this.hide(); - this.parent = parent; - if (this.parent) { - this.show(); - } - } - else { - this.parent = parent; + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; } }; - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - Item.prototype.isVisible = function(range) { - // Should be implemented by Item implementations - return false; - }; + Legend.prototype._create = function() { + this.dom.frame = document.createElement('div'); + this.dom.frame.className = 'legend'; + this.dom.frame.style.position = "absolute"; + this.dom.frame.style.top = "10px"; + this.dom.frame.style.display = "block"; - /** - * Show the Item in the DOM (when not already visible) - * @return {Boolean} changed - */ - Item.prototype.show = function() { - return false; - }; + this.dom.textArea = document.createElement('div'); + this.dom.textArea.className = 'legendText'; + this.dom.textArea.style.position = "relative"; + this.dom.textArea.style.top = "0px"; - /** - * Hide the Item from the DOM (when visible) - * @return {Boolean} changed - */ - Item.prototype.hide = function() { - return false; - }; + this.svg = document.createElementNS('http://www.w3.org/2000/svg',"svg"); + this.svg.style.position = 'absolute'; + this.svg.style.top = 0 +'px'; + this.svg.style.width = this.options.iconSize + 5 + 'px'; + this.svg.style.height = '100%'; - /** - * Repaint the item - */ - Item.prototype.redraw = function() { - // should be implemented by the item + this.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); }; /** - * Reposition the Item horizontally + * Hide the component from the DOM */ - Item.prototype.repositionX = function() { - // should be implemented by the item + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } }; /** - * Reposition the Item vertically + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - Item.prototype.repositionY = function() { - // should be implemented by the item + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } }; - /** - * Repaint a delete button on the top right of the item when the item is selected - * @param {HTMLElement} anchor - * @protected - */ - Item.prototype._repaintDeleteButton = function (anchor) { - if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { - // create and show button - var me = this; - - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; - - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); - }); + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); + }; - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; - } - else if (!this.selected && this.dom.deleteButton) { - // remove button - if (this.dom.deleteButton.parentNode) { - this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + Legend.prototype.redraw = function() { + var activeGroups = 0; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + activeGroups++; + } } - this.dom.deleteButton = null; } - }; - /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private - */ - Item.prototype._updateContents = function (element) { - var content; - if (this.options.template) { - var itemData = this.parent.itemSet.itemsData.get(this.id); // get a clone of the data from the dataset - content = this.options.template(itemData); + if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + this.hide(); } else { - content = this.data.content; - } + this.show(); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'bottom-left') { + this.dom.frame.style.left = '4px'; + this.dom.frame.style.textAlign = "left"; + this.dom.textArea.style.textAlign = "left"; + this.dom.textArea.style.left = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.right = ''; + this.svg.style.left = 0 +'px'; + this.svg.style.right = ''; + } + else { + this.dom.frame.style.right = '4px'; + this.dom.frame.style.textAlign = "right"; + this.dom.textArea.style.textAlign = "right"; + this.dom.textArea.style.right = (this.options.iconSize + 15) + 'px'; + this.dom.textArea.style.left = ''; + this.svg.style.right = 0 +'px'; + this.svg.style.left = ''; + } - if(content !== this.content) { - // only replace the content when changed - if (content instanceof Element) { - element.innerHTML = ''; - element.appendChild(content); + if (this.options[this.side].position == 'top-left' || this.options[this.side].position == 'top-right') { + this.dom.frame.style.top = 4 - Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.bottom = ''; } - else if (content != undefined) { - element.innerHTML = content; + else { + var scrollableHeight = this.body.domProps.center.height - this.body.domProps.centerContainer.height; + this.dom.frame.style.bottom = 4 + scrollableHeight + Number(this.body.dom.center.style.top.replace("px","")) + 'px'; + this.dom.frame.style.top = ''; + } + + if (this.options.icons == false) { + this.dom.frame.style.width = this.dom.textArea.offsetWidth + 10 + 'px'; + this.dom.textArea.style.right = ''; + this.dom.textArea.style.left = ''; + this.svg.style.width = '0px'; } else { - if (!(this.data.type == 'background' && this.data.content === undefined)) { - throw new Error('Property "content" missing in item ' + this.id); - } + this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' + this.drawLegendIcons(); } - this.content = content; - } - }; - - /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private - */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; - } - else { - element.removeAttribute('title'); + var content = ''; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + content += this.groups[groupId].content + '
'; + } + } + } + this.dom.textArea.innerHTML = content; + this.dom.textArea.style.lineHeight = ((0.75 * this.options.iconSize) + this.options.iconSpacing) + 'px'; } }; - /** - * Process dataAttributes timeline option and set as data- attributes on dom.content - * @param {Element} element HTML element to which the attributes will be attached - * @private - */ - Item.prototype._updateDataAttributes = function(element) { - if (this.options.dataAttributes && this.options.dataAttributes.length > 0) { - var attributes = []; - - if (Array.isArray(this.options.dataAttributes)) { - attributes = this.options.dataAttributes; - } - else if (this.options.dataAttributes == 'all') { - attributes = Object.keys(this.data); - } - else { - return; - } + Legend.prototype.drawLegendIcons = function() { + if (this.dom.frame.parentNode) { + DOMutil.prepareElements(this.svgElements); + var padding = window.getComputedStyle(this.dom.frame).paddingTop; + var iconOffset = Number(padding.replace('px','')); + var x = iconOffset; + var iconWidth = this.options.iconSize; + var iconHeight = 0.75 * this.options.iconSize; + var y = iconOffset + 0.5 * iconHeight + 3; - for (var i = 0; i < attributes.length; i++) { - var name = attributes[i]; - var value = this.data[name]; + this.svg.style.width = iconWidth + 5 + iconOffset + 'px'; - if (value != null) { - element.setAttribute('data-' + name, value); - } - else { - element.removeAttribute('data-' + name); + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + if (this.groups[groupId].visible == true && (this.linegraphOptions.visibility[groupId] === undefined || this.linegraphOptions.visibility[groupId] == true)) { + this.groups[groupId].drawIcon(x, y, this.svgElements, this.svg, iconWidth, iconHeight); + y += iconHeight + this.options.iconSpacing; + } } } - } - }; - - /** - * Update custom styles of the element - * @param element - * @private - */ - Item.prototype._updateStyle = function(element) { - // remove old styles - if (this.style) { - util.removeCssText(element, this.style); - this.style = null; - } - // append new styles - if (this.data.style) { - util.addCssText(element, this.data.style); - this.style = this.data.style; + DOMutil.cleanupElements(this.svgElements); } }; - module.exports = Item; + module.exports = Legend; /***/ }, -/* 32 */ +/* 34 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(45); - var Item = __webpack_require__(31); - var BackgroundGroup = __webpack_require__(26); - var RangeItem = __webpack_require__(35); + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var Component = __webpack_require__(25); + var DataAxis = __webpack_require__(28); + var GraphGroup = __webpack_require__(29); + var Legend = __webpack_require__(33); + var BarGraphFunctions = __webpack_require__(50); + + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items /** - * @constructor BackgroundItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor */ - // TODO: implement support for the BackgroundItem just having a start, then being displayed as a sort of an annotation - function BackgroundItem (data, conversion, options) { - this.props = { - content: { - width: 0 + function LineGraph(body, options) { + this.id = util.randomUUID(); + this.body = body; + + this.defaultOptions = { + yAxisOrientation: 'left', + defaultGroup: 'default', + sort: true, + sampling: true, + graphHeight: '400px', + shaded: { + enabled: false, + orientation: 'bottom' // top, bottom + }, + style: 'line', // line, bar + barChart: { + width: 50, + handleOverlap: 'overlap', + align: 'center' // left, center, right + }, + catmullRom: { + enabled: true, + parametrization: 'centripetal', // uniform (alpha = 0.0), chordal (alpha = 1.0), centripetal (alpha = 0.5) + alpha: 0.5 + }, + drawPoints: { + enabled: true, + size: 6, + style: 'square' // square, circle + }, + dataAxis: { + showMinorLabels: true, + showMajorLabels: true, + icons: false, + width: '40px', + visible: true, + alignZeros: true, + customRange: { + left: {min:undefined, max:undefined}, + right: {min:undefined, max:undefined} + } + //, these options are not set by default, but this shows the format they will be in + //format: { + // left: {decimals: 2}, + // right: {decimals: 2} + //}, + //title: { + // left: { + // text: 'left', + // style: 'color:black;' + // }, + // right: { + // text: 'right', + // style: 'color:black;' + // } + //} + }, + legend: { + enabled: false, + icons: true, + left: { + visible: true, + position: 'top-left' // top/bottom - left,right + }, + right: { + visible: true, + position: 'top-right' // top/bottom - left,right + } + }, + groups: { + visibility: {} } }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); + this.dom = {}; + this.props = {}; + this.hammer = null; + this.groups = {}; + this.abortedGraphUpdate = false; + this.updateSVGheight = false; + this.updateSVGheightOnResize = false; + + var me = this; + this.itemsData = null; // DataSet + this.groupsData = null; // DataSet + + // listeners for the DataSet of the items + this.itemListeners = { + 'add': function (event, params, senderId) { + me._onAdd(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdate(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemove(params.items); } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); + }; + + // listeners for the DataSet of the groups + this.groupListeners = { + 'add': function (event, params, senderId) { + me._onAddGroups(params.items); + }, + 'update': function (event, params, senderId) { + me._onUpdateGroups(params.items); + }, + 'remove': function (event, params, senderId) { + me._onRemoveGroups(params.items); } - } + }; - Item.call(this, data, conversion, options); + this.items = {}; // object with an Item for every data item + this.selection = []; // list with the ids of all selected nodes + this.lastStart = this.body.range.start; + this.touchParams = {}; // stores properties while dragging - this.emptyContent = false; - } + this.svgElements = {}; + this.setOptions(options); + this.groupsUsingDefaultStyles = [0]; + this.COUNTER = 0; + this.body.emitter.on('rangechanged', function() { + me.lastStart = me.body.range.start; + me.svg.style.left = util.option.asSize(-me.props.width); + me.redraw.call(me,true); + }); - BackgroundItem.prototype = new Item (null, null, null); + // create the HTML DOM + this._create(); + this.framework = {svg: this.svg, svgElements: this.svgElements, options: this.options, groups: this.groups}; + this.body.emitter.emit('change'); - BackgroundItem.prototype.baseClassName = 'item background'; - BackgroundItem.prototype.stack = false; + } + + LineGraph.prototype = new Component(); /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Create the HTML DOM for the ItemSet */ - BackgroundItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + LineGraph.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'LineGraph'; + this.dom.frame = frame; + + // create svg element for graph drawing. + this.svg = document.createElementNS('http://www.w3.org/2000/svg','svg'); + this.svg.style.position = 'relative'; + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + this.svg.style.display = 'block'; + frame.appendChild(this.svg); + + // data axis + this.options.dataAxis.orientation = 'left'; + this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + + this.options.dataAxis.orientation = 'right'; + this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + delete this.options.dataAxis.orientation; + + // legends + this.legendLeft = new Legend(this.body, this.options.legend, 'left', this.options.groups); + this.legendRight = new Legend(this.body, this.options.legend, 'right', this.options.groups); + + this.show(); }; /** - * Repaint the item + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param {object} options */ - BackgroundItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + LineGraph.prototype.setOptions = function(options) { + if (options) { + var fields = ['sampling','defaultGroup','height','graphHeight','yAxisOrientation','style','barChart','dataAxis','sort','groups']; + if (options.graphHeight === undefined && options.height !== undefined && this.body.domProps.centerContainer.height !== undefined) { + this.updateSVGheight = true; + this.updateSVGheightOnResize = true; + } + else if (this.body.domProps.centerContainer.height !== undefined && options.graphHeight !== undefined) { + if (parseInt((options.graphHeight + '').replace("px",'')) < this.body.domProps.centerContainer.height) { + this.updateSVGheight = true; + } + } + util.selectiveDeepExtend(fields, this.options, options); + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); + util.mergeOptions(this.options, options,'legend'); - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + if (options.catmullRom) { + if (typeof options.catmullRom == 'object') { + if (options.catmullRom.parametrization) { + if (options.catmullRom.parametrization == 'uniform') { + this.options.catmullRom.alpha = 0; + } + else if (options.catmullRom.parametrization == 'chordal') { + this.options.catmullRom.alpha = 1.0; + } + else { + this.options.catmullRom.parametrization = 'centripetal'; + this.options.catmullRom.alpha = 0.5; + } + } + } + } - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); + } + } - // Note: we do NOT attach this item as attribute to the DOM, - // such that background items cannot be selected - //dom.box['timeline-item'] = this; + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); + } + } - this.dirty = true; + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); + } } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + // this is used to redraw the graph if the visibility of the groups is changed. + if (this.dom.frame) { + this.redraw(true); } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); - } - background.appendChild(dom.box); + }; + + /** + * Hide the component from the DOM + */ + LineGraph.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - this.displayed = true; + }; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.content); - this._updateDataAttributes(this.dom.content); - this._updateStyle(this.dom.box); - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + /** + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed + */ + LineGraph.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } + }; - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; - // recalculate size - this.props.content.width = this.dom.content.offsetWidth; - this.height = 0; // set height zero, so this item will be ignored when stacking items + /** + * Set items + * @param {vis.DataSet | null} items + */ + LineGraph.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; - this.dirty = false; + // replace the dataset + if (!items) { + this.itemsData = null; + } + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); + + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); } + + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); + + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); }; - /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. - */ - BackgroundItem.prototype.show = RangeItem.prototype.show; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Set groups + * @param {vis.DataSet} groups */ - BackgroundItem.prototype.hide = RangeItem.prototype.hide; + LineGraph.prototype.setGroups = function(groups) { + var me = this; + var ids; + + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); + }); + + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw + } + + // replace the dataset + if (!groups) { + this.groupsData = null; + } + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); + } + + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); + + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); + } + this._onUpdate(); + }; + /** - * Reposition the item horizontally - * @Override + * Update the data + * @param [ids] + * @private */ - BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + LineGraph.prototype._onUpdate = function(ids) { + this._updateUngrouped(); + this._updateAllGroupData(); + //this._updateGraph(); + this.redraw(true); + }; + LineGraph.prototype._onAdd = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onRemove = function (ids) {this._onUpdate(ids);}; + LineGraph.prototype._onUpdateGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + var group = this.groupsData.get(groupIds[i]); + this._updateGroup(group, groupIds[i]); + } + + //this._updateGraph(); + this.redraw(true); + }; + LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; + /** - * Reposition the item vertically - * @Override + * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph + * @param {Array} groupIds + * @private */ - BackgroundItem.prototype.repositionY = function(margin) { - var onTop = this.options.orientation === 'top'; - this.dom.content.style.top = onTop ? '' : '0'; - this.dom.content.style.bottom = onTop ? '0' : ''; - var height; - - // special positioning for subgroups - if (this.data.subgroup !== undefined) { - var itemSubgroup = this.data.subgroup; - var subgroups = this.parent.subgroups; - var subgroupIndex = subgroups[itemSubgroup].index; - // if the orientation is top, we need to take the difference in height into account. - if (onTop == true) { - // the first subgroup will have to account for the distance from the top to the first item. - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - height += subgroupIndex == 0 ? margin.axis - 0.5*margin.item.vertical : 0; - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index < subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } + LineGraph.prototype._onRemoveGroups = function (groupIds) { + for (var i = 0; i < groupIds.length; i++) { + if (this.groups.hasOwnProperty(groupIds[i])) { + if (this.groups[groupIds[i]].options.yAxisOrientation == 'right') { + this.yAxisRight.removeGroup(groupIds[i]); + this.legendRight.removeGroup(groupIds[i]); + this.legendRight.redraw(); + } + else { + this.yAxisLeft.removeGroup(groupIds[i]); + this.legendLeft.removeGroup(groupIds[i]); + this.legendLeft.redraw(); } + delete this.groups[groupIds[i]]; + } + } + this._updateUngrouped(); + //this._updateGraph(); + this.redraw(true); + }; - // the others will have to be offset downwards with this same distance. - newTop += subgroupIndex != 0 ? margin.axis - 0.5 * margin.item.vertical : 0; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; + + /** + * update a group object with the group dataset entree + * + * @param group + * @param groupId + * @private + */ + LineGraph.prototype._updateGroup = function (group, groupId) { + if (!this.groups.hasOwnProperty(groupId)) { + this.groups[groupId] = new GraphGroup(group, groupId, this.options, this.groupsUsingDefaultStyles); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.addGroup(groupId, this.groups[groupId]); + this.legendRight.addGroup(groupId, this.groups[groupId]); } - // and when the orientation is bottom: else { - var newTop = this.parent.top; - for (var subgroup in subgroups) { - if (subgroups.hasOwnProperty(subgroup)) { - if (subgroups[subgroup].visible == true && subgroups[subgroup].index > subgroupIndex) { - newTop += subgroups[subgroup].height + margin.item.vertical; - } - } - } - height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; - this.dom.box.style.top = newTop + 'px'; - this.dom.box.style.bottom = ''; + this.yAxisLeft.addGroup(groupId, this.groups[groupId]); + this.legendLeft.addGroup(groupId, this.groups[groupId]); } } - // and in the case of no subgroups: else { - // we want backgrounds with groups to only show in groups. - if (this.parent instanceof BackgroundGroup) { - // if the item is not in a group: - height = Math.max(this.parent.height, - this.parent.itemSet.body.domProps.center.height, - this.parent.itemSet.body.domProps.centerContainer.height); - this.dom.box.style.top = onTop ? '0' : ''; - this.dom.box.style.bottom = onTop ? '' : '0'; + this.groups[groupId].update(group); + if (this.groups[groupId].options.yAxisOrientation == 'right') { + this.yAxisRight.updateGroup(groupId, this.groups[groupId]); + this.legendRight.updateGroup(groupId, this.groups[groupId]); } else { - height = this.parent.height; - // same alignment for items when orientation is top or bottom - this.dom.box.style.top = this.parent.top + 'px'; - this.dom.box.style.bottom = ''; + this.yAxisLeft.updateGroup(groupId, this.groups[groupId]); + this.legendLeft.updateGroup(groupId, this.groups[groupId]); } } - this.dom.box.style.height = height + 'px'; + this.legendLeft.redraw(); + this.legendRight.redraw(); }; - module.exports = BackgroundItem; - -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { + /** + * this updates all groups, it is used when there is an update the the itemset. + * + * @private + */ + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + groupsContent[groupId] = []; + } + } + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (groupsContent[item.group] === undefined) { + throw new Error('Cannot find referenced group. Possible reason: items added before groups? Groups need to be added before items, as items refer to groups.') + } + item.x = util.convert(item.x,'Date'); + groupsContent[item.group].push(item); + } + } + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + this.groups[groupId].setItems(groupsContent[groupId]); + } + } + } + }; - var Item = __webpack_require__(31); - var util = __webpack_require__(1); /** - * @constructor BoxItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. This anonymous group is called 'graph'. + * @protected */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 - }, - line: { - width: 0, - height: 0 + LineGraph.prototype._updateUngrouped = function() { + if (this.itemsData && this.itemsData != null) { + var ungroupedCounter = 0; + for (var itemId in this.itemsData._data) { + if (this.itemsData._data.hasOwnProperty(itemId)) { + var item = this.itemsData._data[itemId]; + if (item != undefined) { + if (item.hasOwnProperty('group')) { + if (item.group === undefined) { + item.group = UNGROUPED; + } + } + else { + item.group = UNGROUPED; + } + ungroupedCounter = item.group == UNGROUPED ? ungroupedCounter + 1 : ungroupedCounter; + } + } } - }; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); + if (ungroupedCounter == 0) { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); + } + else { + var group = {id: UNGROUPED, content: this.options.defaultGroup}; + this._updateGroup(group, UNGROUPED); } } + else { + delete this.groups[UNGROUPED]; + this.legendLeft.removeGroup(UNGROUPED); + this.legendRight.removeGroup(UNGROUPED); + this.yAxisLeft.removeGroup(UNGROUPED); + this.yAxisRight.removeGroup(UNGROUPED); + } - Item.call(this, data, conversion, options); - } + this.legendLeft.redraw(); + this.legendRight.redraw(); + }; - BoxItem.prototype = new Item (null, null, null); /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized */ - BoxItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); - }; + LineGraph.prototype.redraw = function(forceGraphUpdate) { + var resized = false; - /** - * Repaint the item - */ - BoxItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + // calculate actual size and position + this.props.width = this.dom.frame.offsetWidth; + this.props.height = this.body.domProps.centerContainer.height; - // create main box - dom.box = document.createElement('DIV'); + // update the graph if there is no lastWidth or with, used for the initial draw + if (this.lastWidth === undefined && this.props.width) { + forceGraphUpdate = true; + } - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + // check if this component is resized + resized = this._isResized() || resized; - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'line'; + // check whether zoomed (in that case we need to re-stack everything) + var visibleInterval = this.body.range.end - this.body.range.start; + var zoomed = (visibleInterval != this.lastVisibleInterval); + this.lastVisibleInterval = visibleInterval; - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'dot'; - // attach this item as attribute - dom.box['timeline-item'] = this; + // the svg element is three times as big as the width, this allows for fully dragging left and right + // without reloading the graph. the controls for this are bound to events in the constructor + if (resized == true) { + this.svg.style.width = util.option.asSize(3*this.props.width); + this.svg.style.left = util.option.asSize(-this.props.width); - this.dirty = true; + // if the height of the graph is set as proportional, change the height of the svg + if ((this.options.height + '').indexOf("%") != -1 || this.updateSVGheightOnResize == true) { + this.updateSVGheight = true; + } } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + // update the height of the graph on each redraw of the graph. + if (this.updateSVGheight == true) { + if (this.options.graphHeight != this.body.domProps.centerContainer.height + 'px') { + this.options.graphHeight = this.body.domProps.centerContainer.height + 'px'; + this.svg.style.height = this.body.domProps.centerContainer.height + 'px'; + } + this.updateSVGheight = false; } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) throw new Error('Cannot redraw item: parent has no foreground container element'); - foreground.appendChild(dom.box); + else { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; } - if (!dom.line.parentNode) { - var background = this.parent.dom.background; - if (!background) throw new Error('Cannot redraw item: parent has no background container element'); - background.appendChild(dom.line); + + // zoomed is here to ensure that animations are shown correctly. + if (resized == true || zoomed == true || this.abortedGraphUpdate == true || forceGraphUpdate == true) { + resized = this._updateGraph() || resized; } - if (!dom.dot.parentNode) { - var axis = this.parent.dom.axis; - if (!background) throw new Error('Cannot redraw item: parent has no axis container element'); - axis.appendChild(dom.dot); + else { + // move the whole svg while dragging + if (this.lastStart != 0) { + var offset = this.body.range.start - this.lastStart; + var range = this.body.range.end - this.body.range.start; + if (this.props.width != 0) { + var rangePerPixelInv = this.props.width/range; + var xOffset = offset * rangePerPixelInv; + this.svg.style.left = (-this.props.width - xOffset) + 'px'; + } + } } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); + this.legendLeft.redraw(); + this.legendRight.redraw(); + return resized; + }; + + + /** + * Update and redraw the graph. + * + */ + LineGraph.prototype._updateGraph = function () { + // reset the svg elements + DOMutil.prepareElements(this.svgElements); + if (this.props.width != 0 && this.itemsData != null) { + var group, i; + var preprocessedGroupData = {}; + var processedGroupData = {}; + var groupRanges = {}; + var changeCalled = false; + + // getting group Ids + var groupIds = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + group = this.groups[groupId]; + if (group.visible == true && (this.options.groups.visibility[groupId] === undefined || this.options.groups.visibility[groupId] == true)) { + groupIds.push(groupId); + } + } + } + if (groupIds.length > 0) { + // this is the range of the SVG canvas + var minDate = this.body.util.toGlobalTime(-this.body.domProps.root.width); + var maxDate = this.body.util.toGlobalTime(2 * this.body.domProps.root.width); + var groupsData = {}; + // fill groups data, this only loads the data we require based on the timewindow + this._getRelevantData(groupIds, groupsData, minDate, maxDate); + + // apply sampling, if disabled, it will pass through this function. + this._applySampling(groupIds, groupsData); + + // we transform the X coordinates to detect collisions + for (i = 0; i < groupIds.length; i++) { + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); + } + + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); + + // update the Y axis first, we use this data to draw at the correct Y points + // changeCalled is required to clean the SVG on a change emit. + changeCalled = this._updateYAxis(groupIds, groupRanges); + var MAX_CYCLES = 5; + if (changeCalled == true && this.COUNTER < MAX_CYCLES) { + DOMutil.cleanupElements(this.svgElements); + this.abortedGraphUpdate = true; + this.COUNTER++; + this.body.emitter.emit('change'); + return true; + } + else { + if (this.COUNTER > MAX_CYCLES) { + console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle.") + } + this.COUNTER = 0; + this.abortedGraphUpdate = false; + + // With the yAxis scaled correctly, use this to get the Y values of the points. + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + processedGroupData[groupIds[i]] = this._convertYcoordinates(groupsData[groupIds[i]], group); + } + + // draw the groups + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.style != 'bar') { // bar needs to be drawn enmasse + group.draw(processedGroupData[groupIds[i]], group, this.framework); + } + } + BarGraphFunctions.draw(groupIds, processedGroupData, this.framework); + } + } + } + + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + return false; + }; + + + /** + * first select and preprocess the data from the datasets. + * the groups have their preselection of data, we now loop over this data to see + * what data we need to draw. Sorted data is much faster. + * more optimization is possible by doing the sampling before and using the binary search + * to find the end date to determine the increment. + * + * @param {array} groupIds + * @param {object} groupsData + * @param {date} minDate + * @param {date} maxDate + * @private + */ + LineGraph.prototype._getRelevantData = function (groupIds, groupsData, minDate, maxDate) { + var group, i, j, item; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + groupsData[groupIds[i]] = []; + var dataContainer = groupsData[groupIds[i]]; + // optimization for sorted data + if (group.options.sort == true) { + var guess = Math.max(0, util.binarySearchValue(group.itemsData, minDate, 'x', 'before')); + for (j = guess; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > maxDate) { + dataContainer.push(item); + break; + } + else { + dataContainer.push(item); + } + } + } + } + else { + for (j = 0; j < group.itemsData.length; j++) { + item = group.itemsData[j]; + if (item !== undefined) { + if (item.x > minDate && item.x < maxDate) { + dataContainer.push(item); + } + } + } + } + } + } + }; + + + /** + * + * @param groupIds + * @param groupsData + * @private + */ + LineGraph.prototype._applySampling = function (groupIds, groupsData) { + var group; + if (groupIds.length > 0) { + for (var i = 0; i < groupIds.length; i++) { + group = this.groups[groupIds[i]]; + if (group.options.sampling == true) { + var dataContainer = groupsData[groupIds[i]]; + if (dataContainer.length > 0) { + var increment = 1; + var amountOfPoints = dataContainer.length; - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.box.className = 'item box' + className; - dom.line.className = 'item line' + className; - dom.dot.className = 'item dot' + className; + // the global screen is used because changing the width of the yAxis may affect the increment, resulting in an endless loop + // of width changing of the yAxis. + var xDistance = this.body.util.toGlobalScreen(dataContainer[dataContainer.length - 1].x) - this.body.util.toGlobalScreen(dataContainer[0].x); + var pointsPerPixel = amountOfPoints / xDistance; + increment = Math.min(Math.ceil(0.2 * amountOfPoints), Math.max(1, Math.round(pointsPerPixel))); - // recalculate size - this.props.dot.height = dom.dot.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.line.width = dom.line.offsetWidth; - this.width = dom.box.offsetWidth; - this.height = dom.box.offsetHeight; + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); - this.dirty = false; + } + groupsData[groupIds[i]] = sampledData; + } + } + } } - - this._repaintDeleteButton(dom.box); }; + /** - * Show the item in the DOM (when not already displayed). The items DOM will - * be created when needed. + * + * + * @param {array} groupIds + * @param {object} groupsData + * @param {object} groupRanges | this is being filled here + * @private */ - BoxItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + LineGraph.prototype._getYRanges = function (groupIds, groupsData, groupRanges) { + var groupData, group, i; + var barCombinedDataLeft = []; + var barCombinedDataRight = []; + var options; + if (groupIds.length > 0) { + for (i = 0; i < groupIds.length; i++) { + groupData = groupsData[groupIds[i]]; + options = this.groups[groupIds[i]].options; + if (groupData.length > 0) { + group = this.groups[groupIds[i]]; + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + if (options.barChart.handleOverlap == 'stack' && options.style == 'bar') { + if (options.yAxisOrientation == 'left') {barCombinedDataLeft = barCombinedDataLeft.concat(group.getYRange(groupData)) ;} + else {barCombinedDataRight = barCombinedDataRight.concat(group.getYRange(groupData));} + } + else { + groupRanges[groupIds[i]] = group.getYRange(groupData,groupIds[i]); + } + } + } + + // if bar graphs are stacked, their range need to be handled differently and accumulated over all groups. + BarGraphFunctions.getStackedBarYRange(barCombinedDataLeft , groupRanges, groupIds, '__barchartLeft' , 'left' ); + BarGraphFunctions.getStackedBarYRange(barCombinedDataRight, groupRanges, groupIds, '__barchartRight', 'right'); } }; + /** - * Hide the item from the DOM (when visible) + * this sets the Y ranges for the Y axis. It also determines which of the axis should be shown or hidden. + * @param {Array} groupIds + * @param {Object} groupRanges + * @private */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; + LineGraph.prototype._updateYAxis = function (groupIds, groupRanges) { + var resized = false; + var yAxisLeftUsed = false; + var yAxisRightUsed = false; + var minLeft = 1e9, minRight = 1e9, maxLeft = -1e9, maxRight = -1e9, minVal, maxVal; + // if groups are present + if (groupIds.length > 0) { + // this is here to make sure that if there are no items in the axis but there are groups, that there is no infinite draw/redraw loop. + for (var i = 0; i < groupIds.length; i++) { + var group = this.groups[groupIds[i]]; + if (group && group.options.yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = 0; + maxLeft = 0; + } + else if (group && group.options.yAxisOrientation) { + yAxisRightUsed = true; + minRight = 0; + maxRight = 0; + } + } - if (dom.box.parentNode) dom.box.parentNode.removeChild(dom.box); - if (dom.line.parentNode) dom.line.parentNode.removeChild(dom.line); - if (dom.dot.parentNode) dom.dot.parentNode.removeChild(dom.dot); + // if there are items: + for (var i = 0; i < groupIds.length; i++) { + if (groupRanges.hasOwnProperty(groupIds[i])) { + if (groupRanges[groupIds[i]].ignore !== true) { + minVal = groupRanges[groupIds[i]].min; + maxVal = groupRanges[groupIds[i]].max; - this.top = null; - this.left = null; + if (groupRanges[groupIds[i]].yAxisOrientation != 'right') { + yAxisLeftUsed = true; + minLeft = minLeft > minVal ? minVal : minLeft; + maxLeft = maxLeft < maxVal ? maxVal : maxLeft; + } + else { + yAxisRightUsed = true; + minRight = minRight > minVal ? minVal : minRight; + maxRight = maxRight < maxVal ? maxVal : maxRight; + } + } + } + } - this.displayed = false; + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); + } + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); + } } - }; - - /** - * Reposition the item horizontally - * @Override - */ - BoxItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - var align = this.options.align; - var left; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; + resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; + resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; - } - else if (align == 'left') { - this.left = start; + if (yAxisRightUsed == true && yAxisLeftUsed == true) { + this.yAxisLeft.drawIcons = true; + this.yAxisRight.drawIcons = true; } else { - // default or 'center' - this.left = start - this.width / 2; + this.yAxisLeft.drawIcons = false; + this.yAxisRight.drawIcons = false; } + this.yAxisRight.master = !yAxisLeftUsed; + if (this.yAxisRight.master == false) { + if (yAxisRightUsed == true) {this.yAxisLeft.lineOffset = this.yAxisRight.width;} + else {this.yAxisLeft.lineOffset = 0;} - // reposition box - box.style.left = this.left + 'px'; + resized = this.yAxisLeft.redraw() || resized; + this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; + this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; + resized = this.yAxisRight.redraw() || resized; + } + else { + resized = this.yAxisRight.redraw() || resized; + } - // reposition line - line.style.left = (start - this.props.line.width / 2) + 'px'; + // clean the accumulated lists + if (groupIds.indexOf('__barchartLeft') != -1) { + groupIds.splice(groupIds.indexOf('__barchartLeft'),1); + } + if (groupIds.indexOf('__barchartRight') != -1) { + groupIds.splice(groupIds.indexOf('__barchartRight'),1); + } - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + return resized; }; + /** - * Reposition the item vertically - * @Override + * This shows or hides the Y axis if needed. If there is a change, the changed event is emitted by the updateYAxis function + * + * @param {boolean} axisUsed + * @returns {boolean} + * @private + * @param axis */ - BoxItem.prototype.repositionY = function() { - var orientation = this.options.orientation; - var box = this.dom.box; - var line = this.dom.line; - var dot = this.dom.dot; - - if (orientation == 'top') { - box.style.top = (this.top || 0) + 'px'; - - line.style.top = '0'; - line.style.height = (this.parent.top + this.top + 1) + 'px'; - line.style.bottom = ''; + LineGraph.prototype._toggleAxisVisiblity = function (axisUsed, axis) { + var changed = false; + if (axisUsed == false) { + if (axis.dom.frame.parentNode && axis.hidden == false) { + axis.hide() + changed = true; + } } - else { // orientation 'bottom' - var itemSetHeight = this.parent.itemSet.props.height; // TODO: this is nasty - var lineHeight = itemSetHeight - this.parent.top - this.parent.height + this.top; - - box.style.top = (this.parent.height - this.top - this.height || 0) + 'px'; - line.style.top = (itemSetHeight - lineHeight) + 'px'; - line.style.bottom = '0'; + else { + if (!axis.dom.frame.parentNode && axis.hidden == true) { + axis.show(); + changed = true; + } } - - dot.style.top = (-this.props.dot.height / 2) + 'px'; + return changed; }; - module.exports = BoxItem; - - -/***/ }, -/* 34 */ -/***/ function(module, exports, __webpack_require__) { - - var Item = __webpack_require__(31); /** - * @constructor PointItem - * @extends Item - * @param {Object} data Object containing parameters start - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe available options + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @returns {Array} + * @private */ - function PointItem (data, conversion, options) { - this.props = { - dot: { - top: 0, - width: 0, - height: 0 - }, - content: { - height: 0, - marginLeft: 0 - } - }; + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = datapoints[i].y; + extractedData.push({x: xValue, y: yValue}); } - Item.call(this, data, conversion, options); - } + return extractedData; + }; - PointItem.prototype = new Item (null, null, null); /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible + * This uses the DataAxis object to generate the correct X coordinate on the SVG window. It uses the + * util function toScreen to get the x coordinate from the timestamp. It also pre-filters the data and get the minMax ranges for + * the yAxis. + * + * @param datapoints + * @param group + * @returns {Array} + * @private */ - PointItem.prototype.isVisible = function(range) { - // determine visibility - // TODO: account for the real width of the item. Right now we just add 1/4 to the window - var interval = (range.end - range.start) / 4; - return (this.data.start > range.start - interval) && (this.data.start < range.end + interval); - }; + LineGraph.prototype._convertYcoordinates = function (datapoints, group) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; + var axis = this.yAxisLeft; + var svgHeight = Number(this.svg.style.height.replace('px','')); + if (group.options.yAxisOrientation == 'right') { + axis = this.yAxisRight; + } - /** - * Repaint the item - */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + for (var i = 0; i < datapoints.length; i++) { + xValue = toScreen(datapoints[i].x) + this.props.width; + yValue = Math.round(axis.convertValue(datapoints[i].y)); + extractedData.push({x: xValue, y: yValue}); + } - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); + return extractedData; + }; - // dot at start - dom.dot = document.createElement('div'); - dom.point.appendChild(dom.dot); - // attach this item as attribute - dom.point['timeline-item'] = this; + module.exports = LineGraph; - this.dirty = true; - } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.point.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); - } - foreground.appendChild(dom.point); - } - this.displayed = true; +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.point); - this._updateDataAttributes(this.dom.point); - this._updateStyle(this.dom.point); + var util = __webpack_require__(1); + var Component = __webpack_require__(25); + var TimeStep = __webpack_require__(19); + var DateUtil = __webpack_require__(15); + var moment = __webpack_require__(44); - // update class - var className = (this.data.className? ' ' + this.data.className : '') + - (this.selected ? ' selected' : ''); - dom.point.className = 'item point' + className; - dom.dot.className = 'item dot' + className; + /** + * A horizontal time axis + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} body + * @param {Object} [options] See TimeAxis.setOptions for the available + * options. + * @constructor TimeAxis + * @extends Component + */ + function TimeAxis (body, options) { + this.dom = { + foreground: null, + lines: [], + majorTexts: [], + minorTexts: [], + redundant: { + lines: [], + majorTexts: [], + minorTexts: [] + } + }; + this.props = { + range: { + start: 0, + end: 0, + minimumStep: 0 + }, + lineTop: 0 + }; - // recalculate size - this.width = dom.point.offsetWidth; - this.height = dom.point.offsetHeight; - this.props.dot.width = dom.dot.offsetWidth; - this.props.dot.height = dom.dot.offsetHeight; - this.props.content.height = dom.content.offsetHeight; + this.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true, + format: null + }; + this.options = util.extend({}, this.defaultOptions); - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + this.body = body; - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + // create the HTML DOM + this._create(); - this.dirty = false; - } + this.setOptions(options); + } - this._repaintDeleteButton(dom.point); - }; + TimeAxis.prototype = new Component(); /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Set options for the TimeAxis. + * Parameters will be merged in current options. + * @param {Object} options Available options: + * {string} [orientation] + * {boolean} [showMinorLabels] + * {boolean} [showMajorLabels] */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } - }; + TimeAxis.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend([ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'hiddenDates', + 'format' + ], this.options, options); - /** - * Hide the item from the DOM (when visible) - */ - PointItem.prototype.hide = function() { - if (this.displayed) { - if (this.dom.point.parentNode) { - this.dom.point.parentNode.removeChild(this.dom.point); + // apply locale to moment.js + // TODO: not so nice, this is applied globally to moment.js + if ('locale' in options) { + if (typeof moment.locale === 'function') { + // moment.js 2.8.1+ + moment.locale(options.locale); + } + else { + moment.lang(options.locale); + } } - - this.top = null; - this.left = null; - - this.displayed = false; } }; /** - * Reposition the item horizontally - * @Override + * Create the HTML DOM for the TimeAxis */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - - this.left = start - this.props.dot.width; + TimeAxis.prototype._create = function() { + this.dom.foreground = document.createElement('div'); + this.dom.background = document.createElement('div'); - // reposition point - this.dom.point.style.left = this.left + 'px'; + this.dom.foreground.className = 'timeaxis foreground'; + this.dom.background.className = 'timeaxis background'; }; /** - * Reposition the item vertically - * @Override + * Destroy the TimeAxis */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; - - if (orientation == 'top') { - point.style.top = this.top + 'px'; + TimeAxis.prototype.destroy = function() { + // remove from DOM + if (this.dom.foreground.parentNode) { + this.dom.foreground.parentNode.removeChild(this.dom.foreground); } - else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; + if (this.dom.background.parentNode) { + this.dom.background.parentNode.removeChild(this.dom.background); } + + this.body = null; }; - module.exports = PointItem; + /** + * Repaint the component + * @return {boolean} Returns true if the component is resized + */ + TimeAxis.prototype.redraw = function () { + var options = this.options; + var props = this.props; + var foreground = this.dom.foreground; + var background = this.dom.background; + + // determine the correct parent DOM element (depending on option orientation) + var parent = (options.orientation == 'top') ? this.body.dom.top : this.body.dom.bottom; + var parentChanged = (foreground.parentNode !== parent); + // calculate character width and height + this._calculateCharSize(); -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { + // TODO: recalculate sizes only needed when parent is resized or options is changed + var orientation = this.options.orientation, + showMinorLabels = this.options.showMinorLabels, + showMajorLabels = this.options.showMajorLabels; - var Hammer = __webpack_require__(45); - var Item = __webpack_require__(31); + // determine the width and height of the elemens for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + props.height = props.minorLabelHeight + props.majorLabelHeight; + props.width = foreground.offsetWidth; - /** - * @constructor RangeItem - * @extends Item - * @param {Object} data Object containing parameters start, end - * content, className. - * @param {{toScreen: function, toTime: function}} conversion - * Conversion functions from time to screen and vice versa - * @param {Object} [options] Configuration options - * // TODO: describe options - */ - function RangeItem (data, conversion, options) { - this.props = { - content: { - width: 0 - } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + props.minorLineHeight = this.body.domProps.root.height - props.majorLabelHeight - + (options.orientation == 'top' ? this.body.domProps.bottom.height : this.body.domProps.top.height); + props.minorLineWidth = 1; // TODO: really calculate width + props.majorLineHeight = props.minorLineHeight + props.majorLabelHeight; + props.majorLineWidth = 1; // TODO: really calculate width - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data.id); - } - if (data.end == undefined) { - throw new Error('Property "end" missing in item ' + data.id); - } - } + // take foreground and background offline while updating (is almost twice as fast) + var foregroundNextSibling = foreground.nextSibling; + var backgroundNextSibling = background.nextSibling; + foreground.parentNode && foreground.parentNode.removeChild(foreground); + background.parentNode && background.parentNode.removeChild(background); - Item.call(this, data, conversion, options); - } + foreground.style.height = this.props.height + 'px'; - RangeItem.prototype = new Item (null, null, null); + this._repaintLabels(); - RangeItem.prototype.baseClassName = 'item range'; + // put DOM online again (at the same place) + if (foregroundNextSibling) { + parent.insertBefore(foreground, foregroundNextSibling); + } + else { + parent.appendChild(foreground) + } + if (backgroundNextSibling) { + this.body.dom.backgroundVertical.insertBefore(background, backgroundNextSibling); + } + else { + this.body.dom.backgroundVertical.appendChild(background) + } - /** - * Check whether this item is visible inside given range - * @returns {{start: Number, end: Number}} range with a timestamp for start and end - * @returns {boolean} True if visible - */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + return this._isResized() || parentChanged; }; /** - * Repaint the item + * Repaint major and minor text labels and vertical grid lines + * @private */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + TimeAxis.prototype._repaintLabels = function () { + var orientation = this.options.orientation; - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + // calculate range and step (step such that we have space for 7 characters per label) + var start = util.convert(this.body.range.start, 'Number'); + var end = util.convert(this.body.range.end, 'Number'); + var timeLabelsize = this.body.util.toTime((this.props.minorCharWidth || 10) * 7).valueOf(); + var minimumStep = timeLabelsize - DateUtil.getHiddenDurationBefore(this.body.hiddenDates, this.body.range, timeLabelsize); + minimumStep -= this.body.util.toTime(0).valueOf(); - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); + if (this.options.format) { + step.setFormat(this.options.format); + } + this.step = step; - // attach this item as attribute - dom.box['timeline-item'] = this; + // Move all DOM elements to a "redundant" list, where they + // can be picked for re-use, and clear the lists with lines and texts. + // At the end of the function _repaintLabels, left over elements will be cleaned up + var dom = this.dom; + dom.redundant.lines = dom.lines; + dom.redundant.majorTexts = dom.majorTexts; + dom.redundant.minorTexts = dom.minorTexts; + dom.lines = []; + dom.majorTexts = []; + dom.minorTexts = []; - this.dirty = true; - } + var cur; + var x = 0; + var isMajor; + var xPrev = 0; + var width = 0; + var prevLine; + var xFirstMajorLabel = undefined; + var max = 0; + var className; - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); - } - if (!dom.box.parentNode) { - var foreground = this.parent.dom.foreground; - if (!foreground) { - throw new Error('Cannot redraw item: parent has no foreground container element'); + step.first(); + while (step.hasNext() && max < 1000) { + max++; + + cur = step.getCurrent(); + isMajor = step.isMajor(); + className = step.getClassName(); + + xPrev = x; + x = this.body.util.toScreen(cur); + width = x - xPrev; + if (prevLine) { + prevLine.style.width = width + 'px'; } - foreground.appendChild(dom.box); - } - this.displayed = true; - // Update DOM when item is marked dirty. An item is marked dirty when: - // - the item is not yet rendered - // - the item's data is changed - // - the item is selected/deselected - if (this.dirty) { - this._updateContents(this.dom.content); - this._updateTitle(this.dom.box); - this._updateDataAttributes(this.dom.box); - this._updateStyle(this.dom.box); + if (this.options.showMinorLabels) { + this._repaintMinorText(x, step.getLabelMinor(), orientation, className); + } - // update class - var className = (this.data.className ? (' ' + this.data.className) : '') + - (this.selected ? ' selected' : ''); - dom.box.className = this.baseClassName + className; + if (isMajor && this.options.showMajorLabels) { + if (x > 0) { + if (xFirstMajorLabel == undefined) { + xFirstMajorLabel = x; + } + this._repaintMajorText(x, step.getLabelMajor(), orientation, className); + } + prevLine = this._repaintMajorLine(x, orientation, className); + } + else { + prevLine = this._repaintMinorLine(x, orientation, className); + } - // determine from css whether this box has overflow - this.overflow = window.getComputedStyle(dom.content).overflow !== 'hidden'; + step.next(); + } - // recalculate size - // turn off max-width to be able to calculate the real width - // this causes an extra browser repaint/reflow, but so be it - this.dom.content.style.maxWidth = 'none'; - this.props.content.width = this.dom.content.offsetWidth; - this.height = this.dom.box.offsetHeight; - this.dom.content.style.maxWidth = ''; + // create a major label on the left when needed + if (this.options.showMajorLabels) { + var leftTime = this.body.util.toTime(0), + leftText = step.getLabelMajor(leftTime), + widthText = leftText.length * (this.props.majorCharWidth || 10) + 10; // upper bound estimation - this.dirty = false; + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText, orientation, className); + } } - this._repaintDeleteButton(dom.box); - this._repaintDragLeft(); - this._repaintDragRight(); + // Cleanup leftover DOM elements from the redundant list + util.forEach(this.dom.redundant, function (arr) { + while (arr.length) { + var elem = arr.pop(); + if (elem && elem.parentNode) { + elem.parentNode.removeChild(elem); + } + } + }); }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Create a minor label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); + + if (!label) { + // create new label + var content = document.createTextNode(''); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); } + this.dom.minorTexts.push(label); + + label.childNodes[0].nodeValue = text; + + label.style.top = (orientation == 'top') ? (this.props.majorLabelHeight + 'px') : '0'; + label.style.left = x + 'px'; + label.className = 'text minor ' + className; + //label.title = title; // TODO: this is a heavy operation }; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Create a Major label for the axis at position x + * @param {Number} x + * @param {String} text + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @private */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; + TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); - if (box.parentNode) { - box.parentNode.removeChild(box); - } + if (!label) { + // create label + var content = document.createTextNode(text); + label = document.createElement('div'); + label.appendChild(content); + this.dom.foreground.appendChild(label); + } + this.dom.majorTexts.push(label); - this.top = null; - this.left = null; + label.childNodes[0].nodeValue = text; + label.className = 'text major ' + className; + //label.title = title; // TODO: this is a heavy operation - this.displayed = false; - } + label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); + label.style.left = x + 'px'; }; /** - * Reposition the item horizontally - * @Override + * Create a minor line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - RangeItem.prototype.repositionX = function() { - var parentWidth = this.parent.width; - var start = this.conversion.toScreen(this.data.start); - var end = this.conversion.toScreen(this.data.end); - var contentLeft; - var contentWidth; - - // limit the width of the this, as browsers cannot draw very wide divs - if (start < -parentWidth) { - start = -parentWidth; - } - if (end > 2 * parentWidth) { - end = 2 * parentWidth; + TimeAxis.prototype._repaintMinorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); } - var boxWidth = Math.max(end - start, 1); - - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; + this.dom.lines.push(line); - // Note: The calculation of width is an optimistic calculation, giving - // a width which will not change when moving the Timeline - // So no re-stacking needed, which is nicer for the eye; + var props = this.props; + if (orientation == 'top') { + line.style.top = props.majorLabelHeight + 'px'; } else { - this.left = start; - this.width = boxWidth; - contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); + line.style.top = this.body.domProps.top.height + 'px'; } + line.style.height = props.minorLineHeight + 'px'; + line.style.left = (x - props.minorLineWidth / 2) + 'px'; - this.dom.box.style.left = this.left + 'px'; - this.dom.box.style.width = boxWidth + 'px'; - - switch (this.options.align) { - case 'left': - this.dom.content.style.left = '0'; - break; - - case 'right': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding), 0) + 'px'; - break; - - case 'center': - this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; - break; + line.className = 'grid vertical minor ' + className; - default: // 'auto' - // when range exceeds left of the window, position the contents at the left of the visible area - if (this.overflow) { - if (end > 0) { - contentLeft = Math.max(-start, 0); - } - else { - contentLeft = -contentWidth; // ensure it's not visible anymore - } - } - else { - if (start < 0) { - contentLeft = Math.min(-start, - (end - start - contentWidth - 2 * this.options.padding)); - // TODO: remove the need for options.padding. it's terrible. - } - else { - contentLeft = 0; - } - } - this.dom.content.style.left = contentLeft + 'px'; - } + return line; }; /** - * Reposition the item vertically - * @Override + * Create a Major line for the axis at position x + * @param {Number} x + * @param {String} orientation "top" or "bottom" (default) + * @param {String} className + * @return {Element} Returns the created line + * @private */ - RangeItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; + TimeAxis.prototype._repaintMajorLine = function (x, orientation, className) { + // reuse redundant line + var line = this.dom.redundant.lines.shift(); + if (!line) { + // create vertical line + line = document.createElement('div'); + this.dom.background.appendChild(line); + } + this.dom.lines.push(line); + var props = this.props; if (orientation == 'top') { - box.style.top = this.top + 'px'; + line.style.top = '0'; } else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; + line.style.top = this.body.domProps.top.height + 'px'; } + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; + + line.className = 'grid vertical major ' + className; + + return line; }; /** - * Repaint a drag area on the left side of the range when the range is selected - * @protected + * Determine the size of text on the axis (both major and minor axis). + * The size is calculated only once and then cached in this.props. + * @private */ - RangeItem.prototype._repaintDragLeft = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragLeft) { - // create and show drag area - var dragLeft = document.createElement('div'); - dragLeft.className = 'drag-left'; - dragLeft.dragLeftItem = this; + TimeAxis.prototype._calculateCharSize = function () { + // Note: We calculate char size with every redraw. Size may change, for + // example when any of the timelines parents had display:none for example. - // TODO: this should be redundant? - Hammer(dragLeft, { - preventDefault: true - }).on('drag', function () { - //console.log('drag left') - }); + // determine the char width and height on the minor axis + if (!this.dom.measureCharMinor) { + this.dom.measureCharMinor = document.createElement('DIV'); + this.dom.measureCharMinor.className = 'text minor measure'; + this.dom.measureCharMinor.style.position = 'absolute'; - this.dom.box.appendChild(dragLeft); - this.dom.dragLeft = dragLeft; + this.dom.measureCharMinor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMinor); } - else if (!this.selected && this.dom.dragLeft) { - // delete drag area - if (this.dom.dragLeft.parentNode) { - this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft); - } - this.dom.dragLeft = null; + this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; + this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; + + // determine the char width and height on the major axis + if (!this.dom.measureCharMajor) { + this.dom.measureCharMajor = document.createElement('DIV'); + this.dom.measureCharMajor.className = 'text major measure'; + this.dom.measureCharMajor.style.position = 'absolute'; + + this.dom.measureCharMajor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMajor); } + this.props.majorCharHeight = this.dom.measureCharMajor.clientHeight; + this.props.majorCharWidth = this.dom.measureCharMajor.clientWidth; }; /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected + * Snap a date to a rounded value. + * The snap intervals are dependent on the current scale and step. + * @param {Date} date the date to be snapped. + * @return {Date} snappedDate */ - RangeItem.prototype._repaintDragRight = function () { - if (this.selected && this.options.editable.updateTime && !this.dom.dragRight) { - // create and show drag area - var dragRight = document.createElement('div'); - dragRight.className = 'drag-right'; - dragRight.dragRightItem = this; - - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); - - this.dom.box.appendChild(dragRight); - this.dom.dragRight = dragRight; - } - else if (!this.selected && this.dom.dragRight) { - // delete drag area - if (this.dom.dragRight.parentNode) { - this.dom.dragRight.parentNode.removeChild(this.dom.dragRight); - } - this.dom.dragRight = null; - } + TimeAxis.prototype.snap = function(date) { + return this.step.snap(date); }; - module.exports = RangeItem; + module.exports = TimeAxis; /***/ }, @@ -15420,12 +15420,12 @@ return /******/ (function(modules) { // webpackBootstrap var Node = __webpack_require__(40); var Edge = __webpack_require__(37); var Popup = __webpack_require__(41); - var MixinLoader = __webpack_require__(54); - var Activator = __webpack_require__(55); - var locales = __webpack_require__(49); + var MixinLoader = __webpack_require__(52); + var Activator = __webpack_require__(53); + var locales = __webpack_require__(54); // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(50); + __webpack_require__(55); /** * @constructor Network @@ -15453,7 +15453,7 @@ return /******/ (function(modules) { // webpackBootstrap this.renderRefreshRate = 60; // hz (fps) this.renderTimestep = 1000 / this.renderRefreshRate; // ms -- saves calculation later on this.renderTime = 0; // measured time it takes to render a frame - this.physicsTime = 0; // measured time it takes to render a frame + this.physicsTime = 0; // measured time it takes to render a frame this.runDoubleSpeed = false; this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation @@ -15637,6 +15637,7 @@ return /******/ (function(modules) { // webpackBootstrap // animation properties this.animationSpeed = 1/this.renderRefreshRate; this.animationEasingFunction = "easeInOutQuint"; + this.animating = false; this.easingTime = 0; this.sourceScale = 0; this.targetScale = 0; @@ -15818,8 +15819,8 @@ return /******/ (function(modules) { // webpackBootstrap node = this.nodes[nodeId]; if (minX > (node.boundingBox.left)) {minX = node.boundingBox.left;} if (maxX < (node.boundingBox.right)) {maxX = node.boundingBox.right;} - if (minY > (node.boundingBox.bottom)) {minY = node.boundingBox.bottom;} - if (maxY < (node.boundingBox.top)) {maxY = node.boundingBox.top;} + if (minY > (node.boundingBox.bottom)) {minY = node.boundingBox.top;} // top is negative, bottom is positive + if (maxY < (node.boundingBox.top)) {maxY = node.boundingBox.bottom;} // top is negative, bottom is positive } } if (minX == 1e9 && maxX == -1e9 && minY == 1e9 && maxY == -1e9) { @@ -15849,15 +15850,9 @@ return /******/ (function(modules) { // webpackBootstrap Network.prototype.zoomExtent = function(animationOptions, initialZoom, disableStart) { this._redraw(true); - if (initialZoom === undefined) { - initialZoom = false; - } - if (disableStart === undefined) { - disableStart = false; - } - if (animationOptions === undefined) { - animationOptions = false; - } + if (initialZoom === undefined) {initialZoom = false;} + if (disableStart === undefined) {disableStart = false;} + if (animationOptions === undefined) {animationOptions = false;} var range = this._getRange(); var zoomLevel; @@ -15893,7 +15888,6 @@ return /******/ (function(modules) { // webpackBootstrap var xZoomLevel = this.frame.canvas.clientWidth / xDistance; var yZoomLevel = this.frame.canvas.clientHeight / yDistance; - zoomLevel = (xZoomLevel <= yZoomLevel) ? xZoomLevel : yZoomLevel; } @@ -16138,10 +16132,13 @@ return /******/ (function(modules) { // webpackBootstrap // configure the smooth curves this._configureSmoothCurves(); + // bind hammer + this._bindHammer(); // bind keys. If disabled, this will not do anything; this._createKeyBinds(); + this.setSize(this.constants.width, this.constants.height); this.moving = true; this.start(); @@ -16194,10 +16191,19 @@ return /******/ (function(modules) { // webpackBootstrap this.frame.canvas.getContext("2d").setTransform(this.pixelRatio, 0, 0, this.pixelRatio, 0, 0); } - ////////////////////////////////////////////////////////////////// + this._bindHammer(); + }; + /** + * This function binds hammer, it can be repeated over and over due to the uniqueness check. + * @private + */ + Network.prototype._bindHammer = function() { var me = this; + if (this.hammer !== undefined) { + this.hammer.dispose(); + } this.drag = {}; this.pinch = {}; this.hammer = Hammer(this.frame.canvas, { @@ -16206,13 +16212,17 @@ return /******/ (function(modules) { // webpackBootstrap this.hammer.on('tap', me._onTap.bind(me) ); this.hammer.on('doubletap', me._onDoubleTap.bind(me) ); this.hammer.on('hold', me._onHold.bind(me) ); - this.hammer.on('pinch', me._onPinch.bind(me) ); this.hammer.on('touch', me._onTouch.bind(me) ); this.hammer.on('dragstart', me._onDragStart.bind(me) ); this.hammer.on('drag', me._onDrag.bind(me) ); this.hammer.on('dragend', me._onDragEnd.bind(me) ); - this.hammer.on('mousewheel',me._onMouseWheel.bind(me) ); - this.hammer.on('DOMMouseScroll',me._onMouseWheel.bind(me) ); // for FF + + if (this.constants.zoomable == true) { + this.hammer.on('mousewheel', me._onMouseWheel.bind(me)); + this.hammer.on('DOMMouseScroll', me._onMouseWheel.bind(me)); // for FF + this.hammer.on('pinch', me._onPinch.bind(me) ); + } + this.hammer.on('mousemove', me._onMouseMoveTitle.bind(me) ); this.hammerFrame = Hammer(this.frame, { @@ -16222,9 +16232,7 @@ return /******/ (function(modules) { // webpackBootstrap // add the frame to the container element this.containerElement.appendChild(this.frame); - - }; - + } /** * Binding the keys for keyboard navigation. These functions are defined in the NavigationMixin @@ -17654,17 +17662,20 @@ return /******/ (function(modules) { // webpackBootstrap // handle the keyboad movement this._handleNavigation(); - var startTime = Date.now(); - this._physicsTick(); - var physicsTime = Date.now() - startTime; - - // run double speed if it is a little graph - if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { + // check if the physics have settled + if (this.moving == true) { + var startTime = Date.now(); this._physicsTick(); + var physicsTime = Date.now() - startTime; + + // run double speed if it is a little graph + if ((this.renderTimestep - this.renderTime > 2 * physicsTime || this.runDoubleSpeed == true) && this.moving == true) { + this._physicsTick(); - // this makes sure there is no jitter. The decision is taken once to run it at double speed. - if (this.renderTime != 0) { - this.runDoubleSpeed = true + // this makes sure there is no jitter. The decision is taken once to run it at double speed. + if (this.renderTime != 0) { + this.runDoubleSpeed = true + } } } @@ -17685,7 +17696,7 @@ return /******/ (function(modules) { // webpackBootstrap * Schedule a animation step with the refreshrate interval. */ Network.prototype.start = function() { - if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0) { + if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { if (!this.timer) { if (this.requiresTimeout == true) { this.timer = window.setTimeout(this._animationStep.bind(this), this.renderTimestep); // wait this.renderTimeStep milliseconds and perform the animation step function @@ -18003,12 +18014,12 @@ return /******/ (function(modules) { // webpackBootstrap } } else { + this.animating = true; this.animationSpeed = 1 / (this.renderRefreshRate * options.animation.duration * 0.001) || 1 / this.renderRefreshRate; this.animationEasingFunction = options.animation.easingFunction; this._classicRedraw = this._redraw; this._redraw = this._transitionRedraw; this._redraw(); - this.moving = true; this.start(); } }; @@ -18060,10 +18071,10 @@ return /******/ (function(modules) { // webpackBootstrap ); this._classicRedraw(); - this.moving = true; // cleanup if (this.easingTime >= 1.0) { + this.animating = false; this.easingTime = 0; if (this.lockedOnNodeId != null) { this._redraw = this._lockedRedraw; @@ -19294,7 +19305,7 @@ return /******/ (function(modules) { // webpackBootstrap this.via.x = 0.5 * (this.from.x + this.to.x); this.via.y = 0.5 * (this.from.y + this.to.y); } - else { + else if (this.via !== null) { this.via.x = 0; this.via.y = 0; } @@ -19832,16 +19843,16 @@ return /******/ (function(modules) { // webpackBootstrap } // copy group properties - if (typeof this.options.group === 'number' || (typeof this.options.group === 'string' && this.options.group != '')) { - var groupObj = this.grouplist.get(this.options.group); + if (typeof properties.group === 'number' || (typeof properties.group === 'string' && properties.group != '')) { + var groupObj = this.grouplist.get(properties.group); util.deepExtend(this.options, groupObj); // the color object needs to be completely defined. Since groups can partially overwrite the colors, we parse it again, just in case. this.options.color = util.parseColor(this.options.color); } - // individual shape properties if (properties.radius !== undefined) {this.baseRadiusValue = this.options.radius;} if (properties.color !== undefined) {this.options.color = util.parseColor(properties.color);} + if (this.options.image !== undefined && this.options.image!= "") { if (this.imagelist) { this.imageObj = this.imagelist.load(this.options.image, this.options.brokenImage); @@ -21900,8 +21911,8 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); - var ItemSet = __webpack_require__(27); - var Activator = __webpack_require__(55); + var ItemSet = __webpack_require__(32); + var Activator = __webpack_require__(53); var DateUtil = __webpack_require__(15); /** @@ -22825,285 +22836,13 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 49 */ -/***/ function(module, exports, __webpack_require__) { - - // English - exports['en'] = { - edit: 'Edit', - del: 'Delete selected', - back: 'Back', - addNode: 'Add Node', - addEdge: 'Add Edge', - editNode: 'Edit Node', - editEdge: 'Edit Edge', - addDescription: 'Click in an empty space to place a new node.', - edgeDescription: 'Click on a node and drag the edge to another node to connect them.', - editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', - createEdgeError: 'Cannot link edges to a cluster.', - deleteClusterError: 'Clusters cannot be deleted.' - }; - exports['en_EN'] = exports['en']; - exports['en_US'] = exports['en']; - - // Dutch - exports['nl'] = { - edit: 'Wijzigen', - del: 'Selectie verwijderen', - back: 'Terug', - addNode: 'Node toevoegen', - addEdge: 'Link toevoegen', - editNode: 'Node wijzigen', - editEdge: 'Link wijzigen', - addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', - edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', - editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', - createEdgeError: 'Kan geen link maken naar een cluster.', - deleteClusterError: 'Clusters kunnen niet worden verwijderd.' - }; - exports['nl_NL'] = exports['nl']; - exports['nl_BE'] = exports['nl']; - - -/***/ }, -/* 50 */ -/***/ function(module, exports, __webpack_require__) { - - /** - * Canvas shapes used by Network - */ - if (typeof CanvasRenderingContext2D !== 'undefined') { - - /** - * Draw a circle shape - */ - CanvasRenderingContext2D.prototype.circle = function(x, y, r) { - this.beginPath(); - this.arc(x, y, r, 0, 2*Math.PI, false); - }; - - /** - * Draw a square shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r size, width and height of the square - */ - CanvasRenderingContext2D.prototype.square = function(x, y, r) { - this.beginPath(); - this.rect(x - r, y - r, r * 2, r * 2); - }; - - /** - * Draw a triangle shape - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y - (h - ir)); - this.lineTo(x + s2, y + ir); - this.lineTo(x - s2, y + ir); - this.lineTo(x, y - (h - ir)); - this.closePath(); - }; - - /** - * Draw a triangle shape in downward orientation - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius - */ - CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { - // http://en.wikipedia.org/wiki/Equilateral_triangle - this.beginPath(); - - var s = r * 2; - var s2 = s / 2; - var ir = Math.sqrt(3) / 6 * s; // radius of inner circle - var h = Math.sqrt(s * s - s2 * s2); // height - - this.moveTo(x, y + (h - ir)); - this.lineTo(x + s2, y - ir); - this.lineTo(x - s2, y - ir); - this.lineTo(x, y + (h - ir)); - this.closePath(); - }; - - /** - * Draw a star shape, a star with 5 points - * @param {Number} x horizontal center - * @param {Number} y vertical center - * @param {Number} r radius, half the length of the sides of the triangle - */ - CanvasRenderingContext2D.prototype.star = function(x, y, r) { - // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ - this.beginPath(); - - for (var n = 0; n < 10; n++) { - var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; - this.lineTo( - x + radius * Math.sin(n * 2 * Math.PI / 10), - y - radius * Math.cos(n * 2 * Math.PI / 10) - ); - } - - this.closePath(); - }; - - /** - * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas - */ - CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { - var r2d = Math.PI/180; - if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x - if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y - this.beginPath(); - this.moveTo(x+r,y); - this.lineTo(x+w-r,y); - this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); - this.lineTo(x+w,y+h-r); - this.arc(x+w-r,y+h-r,r,0,r2d*90,false); - this.lineTo(x+r,y+h); - this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); - this.lineTo(x,y+r); - this.arc(x+r,y+r,r,r2d*180,r2d*270,false); - }; - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { - var kappa = .5522848, - ox = (w / 2) * kappa, // control point offset horizontal - oy = (h / 2) * kappa, // control point offset vertical - xe = x + w, // x-end - ye = y + h, // y-end - xm = x + w / 2, // x-middle - ym = y + h / 2; // y-middle - - this.beginPath(); - this.moveTo(x, ym); - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - }; - - - - /** - * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas - */ - CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { - var f = 1/3; - var wEllipse = w; - var hEllipse = h * f; - - var kappa = .5522848, - ox = (wEllipse / 2) * kappa, // control point offset horizontal - oy = (hEllipse / 2) * kappa, // control point offset vertical - xe = x + wEllipse, // x-end - ye = y + hEllipse, // y-end - xm = x + wEllipse / 2, // x-middle - ym = y + hEllipse / 2, // y-middle - ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse - yeb = y + h; // y-end, bottom ellipse - - this.beginPath(); - this.moveTo(xe, ym); - - this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); - this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); - - this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); - this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); - - this.lineTo(xe, ymb); - - this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); - this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); - - this.lineTo(x, ym); - }; - - - /** - * Draw an arrow point (no line) - */ - CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { - // tail - var xt = x - length * Math.cos(angle); - var yt = y - length * Math.sin(angle); - - // inner tail - // TODO: allow to customize different shapes - var xi = x - length * 0.9 * Math.cos(angle); - var yi = y - length * 0.9 * Math.sin(angle); - - // left - var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); - var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); - - // right - var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); - var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); - - this.beginPath(); - this.moveTo(x, y); - this.lineTo(xl, yl); - this.lineTo(xi, yi); - this.lineTo(xr, yr); - this.closePath(); - }; - - /** - * Sets up the dashedLine functionality for drawing - * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas - * @author David Jordan - * @date 2012-08-08 - */ - CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ - if (!dashArray) dashArray=[10,5]; - if (dashLength==0) dashLength = 0.001; // Hack for Safari - var dashCount = dashArray.length; - this.moveTo(x, y); - var dx = (x2-x), dy = (y2-y); - var slope = dy/dx; - var distRemaining = Math.sqrt( dx*dx + dy*dy ); - var dashIndex=0, draw=true; - while (distRemaining>=0.1){ - var dashLength = dashArray[dashIndex++%dashCount]; - if (dashLength > distRemaining) dashLength = distRemaining; - var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); - if (dx<0) xStep = -xStep; - x += xStep; - y += slope*xStep; - this[draw ? 'lineTo' : 'moveTo'](x,y); - distRemaining -= dashLength; - draw = !draw; - } - }; - - // TODO: add diamond shape - } - - -/***/ }, -/* 51 */ /***/ function(module, exports, __webpack_require__) { /** * Created by Alex on 11/11/2014. */ var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(53); + var Points = __webpack_require__(51); function Line(groupId, options) { this.groupId = groupId; @@ -23320,14 +23059,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 52 */ +/* 50 */ /***/ function(module, exports, __webpack_require__) { /** * Created by Alex on 11/11/2014. */ var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(53); + var Points = __webpack_require__(51); function Bargraph(groupId, options) { this.groupId = groupId; @@ -23554,7 +23293,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 53 */ +/* 51 */ /***/ function(module, exports, __webpack_require__) { /** @@ -23602,16 +23341,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 54 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { - var PhysicsMixin = __webpack_require__(66); - var ClusterMixin = __webpack_require__(60); - var SectorsMixin = __webpack_require__(61); - var SelectionMixin = __webpack_require__(62); - var ManipulationMixin = __webpack_require__(63); - var NavigationMixin = __webpack_require__(64); - var HierarchicalLayoutMixin = __webpack_require__(65); + var PhysicsMixin = __webpack_require__(60); + var ClusterMixin = __webpack_require__(61); + var SectorsMixin = __webpack_require__(62); + var SelectionMixin = __webpack_require__(63); + var ManipulationMixin = __webpack_require__(64); + var NavigationMixin = __webpack_require__(65); + var HierarchicalLayoutMixin = __webpack_require__(66); /** * Load a mixin into the network object @@ -23806,7 +23545,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 55 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { var keycharm = __webpack_require__(57); @@ -23962,6 +23701,278 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Activator; +/***/ }, +/* 54 */ +/***/ function(module, exports, __webpack_require__) { + + // English + exports['en'] = { + edit: 'Edit', + del: 'Delete selected', + back: 'Back', + addNode: 'Add Node', + addEdge: 'Add Edge', + editNode: 'Edit Node', + editEdge: 'Edit Edge', + addDescription: 'Click in an empty space to place a new node.', + edgeDescription: 'Click on a node and drag the edge to another node to connect them.', + editEdgeDescription: 'Click on the control points and drag them to a node to connect to it.', + createEdgeError: 'Cannot link edges to a cluster.', + deleteClusterError: 'Clusters cannot be deleted.' + }; + exports['en_EN'] = exports['en']; + exports['en_US'] = exports['en']; + + // Dutch + exports['nl'] = { + edit: 'Wijzigen', + del: 'Selectie verwijderen', + back: 'Terug', + addNode: 'Node toevoegen', + addEdge: 'Link toevoegen', + editNode: 'Node wijzigen', + editEdge: 'Link wijzigen', + addDescription: 'Klik op een leeg gebied om een nieuwe node te maken.', + edgeDescription: 'Klik op een node en sleep de link naar een andere node om ze te verbinden.', + editEdgeDescription: 'Klik op de verbindingspunten en sleep ze naar een node om daarmee te verbinden.', + createEdgeError: 'Kan geen link maken naar een cluster.', + deleteClusterError: 'Clusters kunnen niet worden verwijderd.' + }; + exports['nl_NL'] = exports['nl']; + exports['nl_BE'] = exports['nl']; + + +/***/ }, +/* 55 */ +/***/ function(module, exports, __webpack_require__) { + + /** + * Canvas shapes used by Network + */ + if (typeof CanvasRenderingContext2D !== 'undefined') { + + /** + * Draw a circle shape + */ + CanvasRenderingContext2D.prototype.circle = function(x, y, r) { + this.beginPath(); + this.arc(x, y, r, 0, 2*Math.PI, false); + }; + + /** + * Draw a square shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r size, width and height of the square + */ + CanvasRenderingContext2D.prototype.square = function(x, y, r) { + this.beginPath(); + this.rect(x - r, y - r, r * 2, r * 2); + }; + + /** + * Draw a triangle shape + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.triangle = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); + + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height + + this.moveTo(x, y - (h - ir)); + this.lineTo(x + s2, y + ir); + this.lineTo(x - s2, y + ir); + this.lineTo(x, y - (h - ir)); + this.closePath(); + }; + + /** + * Draw a triangle shape in downward orientation + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius + */ + CanvasRenderingContext2D.prototype.triangleDown = function(x, y, r) { + // http://en.wikipedia.org/wiki/Equilateral_triangle + this.beginPath(); + + var s = r * 2; + var s2 = s / 2; + var ir = Math.sqrt(3) / 6 * s; // radius of inner circle + var h = Math.sqrt(s * s - s2 * s2); // height + + this.moveTo(x, y + (h - ir)); + this.lineTo(x + s2, y - ir); + this.lineTo(x - s2, y - ir); + this.lineTo(x, y + (h - ir)); + this.closePath(); + }; + + /** + * Draw a star shape, a star with 5 points + * @param {Number} x horizontal center + * @param {Number} y vertical center + * @param {Number} r radius, half the length of the sides of the triangle + */ + CanvasRenderingContext2D.prototype.star = function(x, y, r) { + // http://www.html5canvastutorials.com/labs/html5-canvas-star-spinner/ + this.beginPath(); + + for (var n = 0; n < 10; n++) { + var radius = (n % 2 === 0) ? r * 1.3 : r * 0.5; + this.lineTo( + x + radius * Math.sin(n * 2 * Math.PI / 10), + y - radius * Math.cos(n * 2 * Math.PI / 10) + ); + } + + this.closePath(); + }; + + /** + * http://stackoverflow.com/questions/1255512/how-to-draw-a-rounded-rectangle-on-html-canvas + */ + CanvasRenderingContext2D.prototype.roundRect = function(x, y, w, h, r) { + var r2d = Math.PI/180; + if( w - ( 2 * r ) < 0 ) { r = ( w / 2 ); } //ensure that the radius isn't too large for x + if( h - ( 2 * r ) < 0 ) { r = ( h / 2 ); } //ensure that the radius isn't too large for y + this.beginPath(); + this.moveTo(x+r,y); + this.lineTo(x+w-r,y); + this.arc(x+w-r,y+r,r,r2d*270,r2d*360,false); + this.lineTo(x+w,y+h-r); + this.arc(x+w-r,y+h-r,r,0,r2d*90,false); + this.lineTo(x+r,y+h); + this.arc(x+r,y+h-r,r,r2d*90,r2d*180,false); + this.lineTo(x,y+r); + this.arc(x+r,y+r,r,r2d*180,r2d*270,false); + }; + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.ellipse = function(x, y, w, h) { + var kappa = .5522848, + ox = (w / 2) * kappa, // control point offset horizontal + oy = (h / 2) * kappa, // control point offset vertical + xe = x + w, // x-end + ye = y + h, // y-end + xm = x + w / 2, // x-middle + ym = y + h / 2; // y-middle + + this.beginPath(); + this.moveTo(x, ym); + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + }; + + + + /** + * http://stackoverflow.com/questions/2172798/how-to-draw-an-oval-in-html5-canvas + */ + CanvasRenderingContext2D.prototype.database = function(x, y, w, h) { + var f = 1/3; + var wEllipse = w; + var hEllipse = h * f; + + var kappa = .5522848, + ox = (wEllipse / 2) * kappa, // control point offset horizontal + oy = (hEllipse / 2) * kappa, // control point offset vertical + xe = x + wEllipse, // x-end + ye = y + hEllipse, // y-end + xm = x + wEllipse / 2, // x-middle + ym = y + hEllipse / 2, // y-middle + ymb = y + (h - hEllipse/2), // y-midlle, bottom ellipse + yeb = y + h; // y-end, bottom ellipse + + this.beginPath(); + this.moveTo(xe, ym); + + this.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye); + this.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym); + + this.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y); + this.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym); + + this.lineTo(xe, ymb); + + this.bezierCurveTo(xe, ymb + oy, xm + ox, yeb, xm, yeb); + this.bezierCurveTo(xm - ox, yeb, x, ymb + oy, x, ymb); + + this.lineTo(x, ym); + }; + + + /** + * Draw an arrow point (no line) + */ + CanvasRenderingContext2D.prototype.arrow = function(x, y, angle, length) { + // tail + var xt = x - length * Math.cos(angle); + var yt = y - length * Math.sin(angle); + + // inner tail + // TODO: allow to customize different shapes + var xi = x - length * 0.9 * Math.cos(angle); + var yi = y - length * 0.9 * Math.sin(angle); + + // left + var xl = xt + length / 3 * Math.cos(angle + 0.5 * Math.PI); + var yl = yt + length / 3 * Math.sin(angle + 0.5 * Math.PI); + + // right + var xr = xt + length / 3 * Math.cos(angle - 0.5 * Math.PI); + var yr = yt + length / 3 * Math.sin(angle - 0.5 * Math.PI); + + this.beginPath(); + this.moveTo(x, y); + this.lineTo(xl, yl); + this.lineTo(xi, yi); + this.lineTo(xr, yr); + this.closePath(); + }; + + /** + * Sets up the dashedLine functionality for drawing + * Original code came from http://stackoverflow.com/questions/4576724/dotted-stroke-in-canvas + * @author David Jordan + * @date 2012-08-08 + */ + CanvasRenderingContext2D.prototype.dashedLine = function(x,y,x2,y2,dashArray){ + if (!dashArray) dashArray=[10,5]; + if (dashLength==0) dashLength = 0.001; // Hack for Safari + var dashCount = dashArray.length; + this.moveTo(x, y); + var dx = (x2-x), dy = (y2-y); + var slope = dy/dx; + var distRemaining = Math.sqrt( dx*dx + dy*dy ); + var dashIndex=0, draw=true; + while (distRemaining>=0.1){ + var dashLength = dashArray[dashIndex++%dashCount]; + if (dashLength > distRemaining) dashLength = distRemaining; + var xStep = Math.sqrt( dashLength*dashLength / (1 + slope*slope) ); + if (dx<0) xStep = -xStep; + x += xStep; + y += slope*xStep; + this[draw ? 'lineTo' : 'moveTo'](x,y); + distRemaining -= dashLength; + draw = !draw; + } + }; + + // TODO: add diamond shape + } + + /***/ }, /* 56 */ /***/ function(module, exports, __webpack_require__) { @@ -29552,4442 +29563,4429 @@ return /******/ (function(modules) { // webpackBootstrap /* 60 */ /***/ function(module, exports, __webpack_require__) { + var util = __webpack_require__(1); + var RepulsionMixin = __webpack_require__(67); + var HierarchialRepulsionMixin = __webpack_require__(68); + var BarnesHutMixin = __webpack_require__(69); + /** - * Creation of the ClusterMixin var. + * Toggling barnes Hut calculation on and off. * - * This contains all the functions the Network object can use to employ clustering + * @private */ + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); + }; + /** - * This is only called in the constructor of the network object - * - */ - exports.startWithClustering = function() { - // cluster if the data set is big - this.clusterToFit(this.constants.clustering.initialMaxNodes, true); + * This loads the node force solver based on the barnes hut or repulsion algorithm + * + * @private + */ + exports._loadSelectedForceSolver = function () { + // this overloads the this._calculateNodeForces + if (this.constants.physics.barnesHut.enabled == true) { + this._clearMixin(RepulsionMixin); + this._clearMixin(HierarchialRepulsionMixin); - // updates the lables after clustering - this.updateLabels(); + this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; + this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; + this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; + this.constants.physics.damping = this.constants.physics.barnesHut.damping; - // this is called here because if clusterin is disabled, the start and stabilize are called in - // the setData function. - if (this.stabilize) { - this._stabilize(); - } - this.start(); + this._loadMixin(BarnesHutMixin); + } + else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._clearMixin(BarnesHutMixin); + this._clearMixin(RepulsionMixin); + + this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; + this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; + + this._loadMixin(HierarchialRepulsionMixin); + } + else { + this._clearMixin(BarnesHutMixin); + this._clearMixin(HierarchialRepulsionMixin); + this.barnesHutTree = undefined; + + this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; + this.constants.physics.springLength = this.constants.physics.repulsion.springLength; + this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; + this.constants.physics.damping = this.constants.physics.repulsion.damping; + + this._loadMixin(RepulsionMixin); + } }; /** - * This function clusters until the initialMaxNodes has been reached + * Before calculating the forces, we check if we need to cluster to keep up performance and we check + * if there is more than one node. If it is just one node, we dont calculate anything. * - * @param {Number} maxNumberOfNodes - * @param {Boolean} reposition + * @private */ - exports.clusterToFit = function(maxNumberOfNodes, reposition) { - var numberOfNodes = this.nodeIndices.length; + exports._initializeForceCalculation = function () { + // stop calculation if there is only one node + if (this.nodeIndices.length == 1) { + this.nodes[this.nodeIndices[0]]._setForce(0, 0); + } + else { + // if there are too many nodes on screen, we cluster without repositioning + if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { + this.clusterToFit(this.constants.clustering.reduceToNodes, false); + } - var maxLevels = 50; - var level = 0; + // we now start the force calculation + this._calculateForces(); + } + }; - // we first cluster the hubs, then we pull in the outliers, repeat - while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { - if (level % 3 == 0) { - this.forceAggregateHubs(true); - this.normalizeClusterLevels(); + + /** + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity + * @private + */ + exports._calculateForces = function () { + // Gravity is required to keep separated groups from floating off + // the forces are reset to zero in this loop by using _setForce instead + // of _addForce + + this._calculateGravitationalForces(); + this._calculateNodeForces(); + + if (this.constants.physics.springConstant > 0) { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this._calculateSpringForcesWithSupport(); } else { - this.increaseClusterLevel(); // this also includes a cluster normalization + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } } - - numberOfNodes = this.nodeIndices.length; - level += 1; - } - - // after the clustering we reposition the nodes to reduce the initial chaos - if (level > 0 && reposition == true) { - this.repositionNodes(); } - this._updateCalculationNodes(); }; + /** - * This function can be called to open up a specific cluster. It is only called by - * It will unpack the cluster back one level. + * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also + * handled in the calculateForces function. We then use a quadratic curve with the center node as control. + * This function joins the datanodes and invisible (called support) nodes into one object. + * We do this so we do not contaminate this.nodes with the support nodes. * - * @param node | Node object: cluster to open. + * @private */ - exports.openCluster = function(node) { - var isMovingBeforeClustering = this.moving; - if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && - !(this._sector() == "default" && this.nodeIndices.length == 1)) { - // this loads a new sector, loads the nodes and edges and nodeIndices of it. - this._addSector(node); - var level = 0; + exports._updateCalculationNodes = function () { + if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { + this.calculationNodes = {}; + this.calculationNodeIndices = []; - // we decluster until we reach a decent number of nodes - while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { - this.decreaseClusterLevel(); - level += 1; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId] = this.nodes[nodeId]; + } + } + var supportNodes = this.sectors['support']['nodes']; + for (var supportNodeId in supportNodes) { + if (supportNodes.hasOwnProperty(supportNodeId)) { + if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { + this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + } + else { + supportNodes[supportNodeId]._setForce(0, 0); + } + } } + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } } else { - this._expandClusterNode(node,false,true); - - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this._updateCalculationNodes(); - this.updateLabels(); + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; } + }; - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); + + /** + * this function applies the central gravity effect to keep groups from floating off + * + * @private + */ + exports._calculateGravitationalForces = function () { + var dx, dy, distance, node, i; + var nodes = this.calculationNodes; + var gravity = this.constants.physics.centralGravity; + var gravityForce = 0; + + for (i = 0; i < this.calculationNodeIndices.length; i++) { + node = nodes[this.calculationNodeIndices[i]]; + node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. + // gravity does not apply when we are in a pocket sector + if (this._sector() == "default" && gravity != 0) { + dx = -node.x; + dy = -node.y; + distance = Math.sqrt(dx * dx + dy * dy); + + gravityForce = (distance == 0) ? 0 : (gravity / distance); + node.fx = dx * gravityForce; + node.fy = dy * gravityForce; + } + else { + node.fx = 0; + node.fy = 0; + } } }; + + /** - * This calls the updateClustes with default arguments + * this function calculates the effects of the springs in the case of unsmooth curves. + * + * @private */ - exports.updateClustersDefault = function() { - if (this.constants.clustering.enabled == true) { - this.updateClusters(0,false,false); + exports._calculateSpringForces = function () { + var edgeLength, edge, edgeId; + var dx, dy, fx, fy, springForce, distance; + var edges = this.edges; + + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + edgeLength = edge.physics.springLength; + // this implies that the edges between big clusters are longer + edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + + dx = (edge.from.x - edge.to.x); + dy = (edge.from.y - edge.to.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; + } + + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + edge.from.fx += fx; + edge.from.fy += fy; + edge.to.fx -= fx; + edge.to.fy -= fy; + } + } + } } }; + + /** - * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will - * be clustered with their connected node. This can be repeated as many times as needed. - * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. + * This function calculates the springforces on the nodes, accounting for the support nodes. + * + * @private */ - exports.increaseClusterLevel = function() { - this.updateClusters(-1,false,true); + exports._calculateSpringForcesWithSupport = function () { + var edgeLength, edge, edgeId, combinedClusterSize; + var edges = this.edges; + + // forces caused by the edges, modelled as springs + for (edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + edge = edges[edgeId]; + if (edge.connected) { + // only calculate forces if nodes are in the same sector + if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { + if (edge.via != null) { + var node1 = edge.to; + var node2 = edge.via; + var node3 = edge.from; + + edgeLength = edge.physics.springLength; + + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; + + // this implies that the edges between big clusters are longer + edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; + this._calculateSpringForce(node1, node2, 0.5 * edgeLength); + this._calculateSpringForce(node2, node3, 0.5 * edgeLength); + } + } + } + } + } }; /** - * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will - * be unpacked if they are a cluster. This can be repeated as many times as needed. - * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. + * + * @param node1 + * @param node2 + * @param edgeLength + * @private */ - exports.decreaseClusterLevel = function() { - this.updateClusters(1,false,true); + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; + + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); + + if (distance == 0) { + distance = 0.01; + } + + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + + fx = dx * springForce; + fy = dy * springForce; + + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; }; - /** - * This is the main clustering function. It clusters and declusters on zoom or forced - * This function clusters on zoom, it can be called with a predefined zoom direction - * If out, check if we can form clusters, if in, check if we can open clusters. - * This function is only called from _zoom() - * - * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn - * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} doNotStart | if true do not call start - * - */ - exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; + exports._cleanupPhysicsConfiguration = function() { + if (this.physicsConfiguration !== undefined) { + while (this.physicsConfiguration.hasChildNodes()) { + this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); + } + + this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); + this.physicsConfiguration = undefined; + } + } + + /** + * Load the HTML for the physics config and bind it + * @private + */ + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); + + var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; + this.physicsConfiguration = document.createElement('div'); + this.physicsConfiguration.className = "PhysicsConfiguration"; + this.physicsConfiguration.innerHTML = '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
Options:
' + this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); + this.optionsDiv = document.createElement("div"); + this.optionsDiv.style.fontSize = "14px"; + this.optionsDiv.style.fontFamily = "verdana"; + this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + + var rangeElement; + rangeElement = document.getElementById('graph_BH_gc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); + rangeElement = document.getElementById('graph_BH_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_BH_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_BH_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_BH_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + + rangeElement = document.getElementById('graph_R_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); + rangeElement = document.getElementById('graph_R_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_R_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_R_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_R_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); - // on zoom out collapse the sector if the scale is at the level the sector was made - if (this.previousScale > this.scale && zoomDirection == 0) { - this._collapseSector(); - } + rangeElement = document.getElementById('graph_H_nd'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + rangeElement = document.getElementById('graph_H_cg'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); + rangeElement = document.getElementById('graph_H_sc'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); + rangeElement = document.getElementById('graph_H_sl'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); + rangeElement = document.getElementById('graph_H_damp'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); + rangeElement = document.getElementById('graph_H_direction'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); + rangeElement = document.getElementById('graph_H_levsep'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); + rangeElement = document.getElementById('graph_H_nspac'); + rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); - // check if we zoom in or out - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - // forming clusters when forced pulls outliers in. When not forced, the edge length of the - // outer nodes determines if it is being clustered - this._formClusters(force); - } - else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in - if (force == true) { - // _openClusters checks for each node if the formationScale of the cluster is smaller than - // the current scale and if so, declusters. When forced, all clusters are reduced by one step - this._openClusters(recursive,force); + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + var radioButton3 = document.getElementById("graph_physicsMethod3"); + radioButton2.checked = true; + if (this.constants.physics.barnesHut.enabled) { + radioButton1.checked = true; } - else { - // if a cluster takes up a set percentage of the active window - this._openClustersBySize(); + if (this.constants.hierarchicalLayout.enabled) { + radioButton3.checked = true; } - } - this._updateNodeIndexList(); - - // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs - if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { - this._aggregateHubs(force); - this._updateNodeIndexList(); - } - - // we now reduce chains. - if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out - this.handleChains(); - this._updateNodeIndexList(); - } - - this.previousScale = this.scale; - - // rest of the update the index list, dynamic edges and labels - this._updateDynamicEdges(); - this.updateLabels(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place - this.clusterSession += 1; - // if clusters have been made, we normalize the cluster level - this.normalizeClusterLevels(); - } + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); + graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); + graph_repositionNodes.onclick = graphRepositionNodes.bind(this); + graph_generateOptions.onclick = graphGenerateOptions.bind(this); + if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { + graph_toggleSmooth.style.background = "#A4FF56"; + } + else { + graph_toggleSmooth.style.background = "#FF8532"; } - } - this._updateCalculationNodes(); - }; - /** - * This function handles the chains. It is called on every updateClusters(). - */ - exports.handleChains = function() { - // after clustering we check how many chains there are - var chainPercentage = this._getChainFraction(); - if (chainPercentage > this.constants.clustering.chainThreshold) { - this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) + switchConfigurations.apply(this); + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); } }; /** - * this functions starts clustering by hubs - * The minimum hub threshold is set globally + * This overwrites the this.constants. * + * @param constantsVariableName + * @param value * @private */ - exports._aggregateHubs = function(force) { - this._getHubSize(); - this._formClustersByHub(force,false); + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; + } + else if (nameArray.length == 2) { + this.constants[nameArray[0]][nameArray[1]] = value; + } + else if (nameArray.length == 3) { + this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + } }; /** - * This function is fired by keypress. It forces hubs to form. - * + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. */ - exports.forceAggregateHubs = function(doNotStart) { - var isMovingBeforeClustering = this.moving; - var amountOfNodes = this.nodeIndices.length; - - this._aggregateHubs(true); - - // update the index list, dynamic edges and labels - this._updateNodeIndexList(); - this._updateDynamicEdges(); - this.updateLabels(); - - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } + function graphToggleSmoothCurves () { + this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} - if (doNotStart == false || doNotStart === undefined) { - // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded - if (this.moving != isMovingBeforeClustering) { - this.start(); - } - } - }; + this._configureSmoothCurves(false); + } /** - * If a cluster takes up more than a set percentage of the screen, open the cluster + * this function is used to scramble the nodes * - * @private */ - exports._openClustersBySize = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.inView() == true) { - if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - this.openCluster(node); - } - } + function graphRepositionNodes () { + for (var nodeId in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(nodeId)) { + this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; + this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; } } - }; - - - /** - * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it - * has to be opened based on the current zoom level. - * - * @private - */ - exports._openClusters = function(recursive,force) { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - this._expandClusterNode(node,recursive,force); - this._updateCalculationNodes(); + if (this.constants.hierarchicalLayout.enabled == true) { + this._setupHierarchicalLayout(); + showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); + showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); + showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); + showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); + showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); } - }; + else { + this.repositionNodes(); + } + this.moving = true; + this.start(); + } /** - * This function checks if a node has to be opened. This is done by checking the zoom level. - * If the node contains child nodes, this function is recursively called on the child nodes as well. - * This recursive behaviour is optional and can be set by the recursive argument. - * - * @param {Node} parentNode | to check for cluster and expand - * @param {Boolean} recursive | enabled or disable recursive calling - * @param {Boolean} force | enabled or disable forcing - * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released - * @private + * this is used to generate an options file from the playing with physics system. */ - exports._expandClusterNode = function(parentNode, recursive, force, openAll) { - // first check if node is a cluster - if (parentNode.clusterSize > 1) { - // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 - if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { - openAll = true; + function graphGenerateOptions () { + var options = "No options are required, default values used."; + var optionsSpecific = []; + var radioButton1 = document.getElementById("graph_physicsMethod1"); + var radioButton2 = document.getElementById("graph_physicsMethod2"); + if (radioButton1.checked == true) { + if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options = "var options = {"; + options += "physics: {barnesHut: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}}' } - recursive = openAll ? true : recursive; - - // if the last child has been added on a smaller scale than current scale decluster - if (parentNode.formationScale < this.scale || force == true) { - // we will check if any of the contained child nodes should be removed from the cluster - for (var containedNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { - var childNode = parentNode.containedNodes[containedNodeId]; - - // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that - // the largest cluster is the one that comes from outside - if (force == true) { - if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] - || openAll) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } - else { - if (this._nodeInActiveArea(parentNode)) { - this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); - } - } + if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { + if (optionsSpecific.length == 0) {options = "var options = {";} + else {options += ", "} + options += "smoothCurves: " + this.constants.smoothCurves.enabled; + } + if (options != "No options are required, default values used.") { + options += '};' + } + } + else if (radioButton2.checked == true) { + options = "var options = {"; + options += "physics: {barnesHut: {enabled: false}"; + if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += ", repulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " } } + options += '}}' + } + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; } + options += '};' } - }; - - /** - * ONLY CALLED FROM _expandClusterNode - * - * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove - * the child node from the parent contained_node object and put it back into the global nodes object. - * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. - * - * @param {Node} parentNode | the parent node - * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node - * @param {Boolean} recursive | This will also check if the child needs to be expanded. - * With force and recursive both true, the entire cluster is unpacked - * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent - * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released - * @private - */ - exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { - var childNode = parentNode.containedNodes[containedNodeId]; - - // if child node has been added on smaller scale than current, kick out - if (childNode.formationScale < this.scale || force == true) { - // unselect all selected items - this._unselectAll(); - - // put the child node back in the global nodes object - this.nodes[containedNodeId] = childNode; - - // release the contained edges from this childNode back into the global edges - this._releaseContainedEdges(parentNode,childNode); - - // reconnect rerouted edges to the childNode - this._connectEdgeBackToChild(parentNode,childNode); - - // validate all edges in dynamicEdges - this._validateEdges(parentNode); - - // undo the changes from the clustering operation on the parent node - parentNode.options.mass -= childNode.options.mass; - parentNode.clusterSize -= childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); - parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; - - // place the child node near the parent, not at the exact same location to avoid chaos in the system - childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); - childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); - - // remove node from the list - delete parentNode.containedNodes[containedNodeId]; - - // check if there are other childs with this clusterSession in the parent. - var othersPresent = false; - for (var childNodeId in parentNode.containedNodes) { - if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { - if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { - othersPresent = true; - break; + else { + options = "var options = {"; + if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} + if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} + if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} + if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} + if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} + if (optionsSpecific.length != 0) { + options += "physics: {hierarchicalRepulsion: {"; + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", "; } } + options += '}},'; } - // if there are no others, remove the cluster session from the list - if (othersPresent == false) { - parentNode.clusterSessions.pop(); + options += 'hierarchicalLayout: {'; + optionsSpecific = []; + if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} + if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} + if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} + if (optionsSpecific.length != 0) { + for (var i = 0; i < optionsSpecific.length; i++) { + options += optionsSpecific[i]; + if (i < optionsSpecific.length - 1) { + options += ", " + } + } + options += '}' } - - this._repositionBezierNodes(childNode); - // this._repositionBezierNodes(parentNode); - - // remove the clusterSession from the child node - childNode.clusterSession = 0; - - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); - - // restart the simulation to reorganise all nodes - this.moving = true; + else { + options += "enabled:true}"; + } + options += '};' } - // check if a further expansion step is possible if recursivity is enabled - if (recursive == true) { - this._expandClusterNode(childNode,recursive,force,openAll); - } - }; + this.optionsDiv.innerHTML = options; + } /** - * position the bezier nodes at the center of the edges + * this is used to switch between barnesHut, repulsion and hierarchical. * - * @param node - * @private */ - exports._repositionBezierNodes = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - node.dynamicEdges[i].positionBezierNode(); + function switchConfigurations () { + var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; + var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; + var tableId = "graph_" + radioButton + "_table"; + var table = document.getElementById(tableId); + table.style.display = "block"; + for (var i = 0; i < ids.length; i++) { + if (ids[i] != tableId) { + table = document.getElementById(ids[i]); + table.style.display = "none"; + } } - }; + this._restoreNodes(); + if (radioButton == "R") { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = false; + } + else if (radioButton == "H") { + if (this.constants.hierarchicalLayout.enabled == false) { + this.constants.hierarchicalLayout.enabled = true; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this.constants.physics.barnesHut.enabled = false; + this.constants.smoothCurves.enabled = false; + this._setupHierarchicalLayout(); + } + } + else { + this.constants.hierarchicalLayout.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = false; + this.constants.physics.barnesHut.enabled = true; + } + this._loadSelectedForceSolver(); + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} + else {graph_toggleSmooth.style.background = "#FF8532";} + this.moving = true; + this.start(); + } /** - * This function checks if any nodes at the end of their trees have edges below a threshold length - * This function is called only from updateClusters() - * forceLevelCollapse ignores the length of the edge and collapses one level - * This means that a node with only one edge will be clustered with its connected node + * this generates the ranges depending on the iniital values. * - * @private - * @param {Boolean} force + * @param id + * @param map + * @param constantsVariableName */ - exports._formClusters = function(force) { - if (force == false) { - this._formClustersByZoom(); + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; + + if (Array.isArray(map)) { + document.getElementById(valueId).value = map[parseInt(rangeValue)]; + this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); } else { - this._forceClustersByZoom(); + document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); + this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); } - }; + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); + } + this.moving = true; + this.start(); + } + + + + +/***/ }, +/* 61 */ +/***/ function(module, exports, __webpack_require__) { /** - * This function handles the clustering by zooming out, this is based on a minimum edge distance + * Creation of the ClusterMixin var. * - * @private + * This contains all the functions the Network object can use to employ clustering */ - exports._formClustersByZoom = function() { - var dx,dy,length, - minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - - // check if any edges are shorter than minLength and start the clustering - // the clustering favours the node with the larger mass - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - var edge = this.edges[edgeId]; - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + /** + * This is only called in the constructor of the network object + * + */ + exports.startWithClustering = function() { + // cluster if the data set is big + this.clusterToFit(this.constants.clustering.initialMaxNodes, true); - if (length < minLength) { - // first check which node is larger - var parentNode = edge.from; - var childNode = edge.to; - if (edge.to.options.mass > edge.from.options.mass) { - parentNode = edge.to; - childNode = edge.from; - } + // updates the lables after clustering + this.updateLabels(); - if (childNode.dynamicEdgesLength == 1) { - this._addToCluster(parentNode,childNode,false); - } - else if (parentNode.dynamicEdgesLength == 1) { - this._addToCluster(childNode,parentNode,false); - } - } - } - } - } - } + // this is called here because if clusterin is disabled, the start and stabilize are called in + // the setData function. + if (this.stabilize) { + this._stabilize(); + } + this.start(); }; /** - * This function forces the network to cluster all nodes with only one connecting edge to their - * connected node. + * This function clusters until the initialMaxNodes has been reached * - * @private + * @param {Number} maxNumberOfNodes + * @param {Boolean} reposition */ - exports._forceClustersByZoom = function() { - for (var nodeId in this.nodes) { - // another node could have absorbed this child. - if (this.nodes.hasOwnProperty(nodeId)) { - var childNode = this.nodes[nodeId]; + exports.clusterToFit = function(maxNumberOfNodes, reposition) { + var numberOfNodes = this.nodeIndices.length; - // the edges can be swallowed by another decrease - if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { - var edge = childNode.dynamicEdges[0]; - var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + var maxLevels = 50; + var level = 0; - // group to the largest node - if (childNode.id != parentNode.id) { - if (parentNode.options.mass > childNode.options.mass) { - this._addToCluster(parentNode,childNode,true); - } - else { - this._addToCluster(childNode,parentNode,true); - } - } - } + // we first cluster the hubs, then we pull in the outliers, repeat + while (numberOfNodes > maxNumberOfNodes && level < maxLevels) { + if (level % 3 == 0) { + this.forceAggregateHubs(true); + this.normalizeClusterLevels(); } + else { + this.increaseClusterLevel(); // this also includes a cluster normalization + } + + numberOfNodes = this.nodeIndices.length; + level += 1; } - }; + // after the clustering we reposition the nodes to reduce the initial chaos + if (level > 0 && reposition == true) { + this.repositionNodes(); + } + this._updateCalculationNodes(); + }; /** - * To keep the nodes of roughly equal size we normalize the cluster levels. - * This function clusters a node to its smallest connected neighbour. + * This function can be called to open up a specific cluster. It is only called by + * It will unpack the cluster back one level. * - * @param node - * @private + * @param node | Node object: cluster to open. */ - exports._clusterToSmallestNeighbour = function(node) { - var smallestNeighbour = -1; - var smallestNeighbourNode = null; - for (var i = 0; i < node.dynamicEdges.length; i++) { - if (node.dynamicEdges[i] !== undefined) { - var neighbour = null; - if (node.dynamicEdges[i].fromId != node.id) { - neighbour = node.dynamicEdges[i].from; - } - else if (node.dynamicEdges[i].toId != node.id) { - neighbour = node.dynamicEdges[i].to; - } - + exports.openCluster = function(node) { + var isMovingBeforeClustering = this.moving; + if (node.clusterSize > this.constants.clustering.sectorThreshold && this._nodeInActiveArea(node) && + !(this._sector() == "default" && this.nodeIndices.length == 1)) { + // this loads a new sector, loads the nodes and edges and nodeIndices of it. + this._addSector(node); + var level = 0; - if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { - smallestNeighbour = neighbour.clusterSessions.length; - smallestNeighbourNode = neighbour; - } + // we decluster until we reach a decent number of nodes + while ((this.nodeIndices.length < this.constants.clustering.initialMaxNodes) && (level < 10)) { + this.decreaseClusterLevel(); + level += 1; } + } + else { + this._expandClusterNode(node,false,true); - if (neighbour != null && this.nodes[neighbour.id] !== undefined) { - this._addToCluster(neighbour, node, true); + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this._updateCalculationNodes(); + this.updateLabels(); + } + + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); } }; /** - * This function forms clusters from hubs, it loops over all nodes - * - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @private + * This calls the updateClustes with default arguments */ - exports._formClustersByHub = function(force, onlyEqual) { - // we loop over all nodes in the list - for (var nodeId in this.nodes) { - // we check if it is still available since it can be used by the clustering in this loop - if (this.nodes.hasOwnProperty(nodeId)) { - this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); - } + exports.updateClustersDefault = function() { + if (this.constants.clustering.enabled == true) { + this.updateClusters(0,false,false); } }; + /** - * This function forms a cluster from a specific preselected hub node - * - * @param {Node} hubNode | the node we will cluster as a hub - * @param {Boolean} force | Disregard zoom level - * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges - * @param {Number} [absorptionSizeOffset] | - * @private + * This function can be called to increase the cluster level. This means that the nodes with only one edge connection will + * be clustered with their connected node. This can be repeated as many times as needed. + * This can be called externally (by a keybind for instance) to reduce the complexity of big datasets. */ - exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { - if (absorptionSizeOffset === undefined) { - absorptionSizeOffset = 0; - } - // we decide if the node is a hub - if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || - (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { - // initialize variables - var dx,dy,length; - var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var allowCluster = false; - - // we create a list of edges because the dynamicEdges change over the course of this loop - var edgesIdarray = []; - var amountOfInitialEdges = hubNode.dynamicEdges.length; - for (var j = 0; j < amountOfInitialEdges; j++) { - edgesIdarray.push(hubNode.dynamicEdges[j].id); - } - - // if the hub clustering is not forces, we check if one of the edges connected - // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold - if (force == false) { - allowCluster = false; - for (j = 0; j < amountOfInitialEdges; j++) { - var edge = this.edges[edgesIdarray[j]]; - if (edge !== undefined) { - if (edge.connected) { - if (edge.toId != edge.fromId) { - dx = (edge.to.x - edge.from.x); - dy = (edge.to.y - edge.from.y); - length = Math.sqrt(dx * dx + dy * dy); + exports.increaseClusterLevel = function() { + this.updateClusters(-1,false,true); + }; - if (length < minLength) { - allowCluster = true; - break; - } - } - } - } - } - } - // start the clustering if allowed - if ((!force && allowCluster) || force) { - // we loop over all edges INITIALLY connected to this hub - for (j = 0; j < amountOfInitialEdges; j++) { - edge = this.edges[edgesIdarray[j]]; - // the edge can be clustered by this function in a previous loop - if (edge !== undefined) { - var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; - // we do not want hubs to merge with other hubs nor do we want to cluster itself. - if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && - (childNode.id != hubNode.id)) { - this._addToCluster(hubNode,childNode,force); - } - } - } - } - } + /** + * This function can be called to decrease the cluster level. This means that the nodes with only one edge connection will + * be unpacked if they are a cluster. This can be repeated as many times as needed. + * This can be called externally (by a key-bind for instance) to look into clusters without zooming. + */ + exports.decreaseClusterLevel = function() { + this.updateClusters(1,false,true); }; - /** - * This function adds the child node to the parent node, creating a cluster if it is not already. + * This is the main clustering function. It clusters and declusters on zoom or forced + * This function clusters on zoom, it can be called with a predefined zoom direction + * If out, check if we can form clusters, if in, check if we can open clusters. + * This function is only called from _zoom() + * + * @param {Number} zoomDirection | -1 / 0 / +1 for zoomOut / determineByZoom / zoomIn + * @param {Boolean} recursive | enabled or disable recursive calling of the opening of clusters + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} doNotStart | if true do not call start * - * @param {Node} parentNode | this is the node that will house the child node - * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node - * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse - * @private */ - exports._addToCluster = function(parentNode, childNode, force) { - // join child node in the parent node - parentNode.containedNodes[childNode.id] = childNode; + exports.updateClusters = function(zoomDirection,recursive,force,doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < childNode.dynamicEdges.length; i++) { - var edge = childNode.dynamicEdges[i]; - if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode - this._addToContainedEdges(parentNode,childNode,edge); + // on zoom out collapse the sector if the scale is at the level the sector was made + if (this.previousScale > this.scale && zoomDirection == 0) { + this._collapseSector(); + } + + // check if we zoom in or out + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + // forming clusters when forced pulls outliers in. When not forced, the edge length of the + // outer nodes determines if it is being clustered + this._formClusters(force); + } + else if (this.previousScale < this.scale || zoomDirection == 1) { // zoom in + if (force == true) { + // _openClusters checks for each node if the formationScale of the cluster is smaller than + // the current scale and if so, declusters. When forced, all clusters are reduced by one step + this._openClusters(recursive,force); } else { - this._connectEdgeToCluster(parentNode,childNode,edge); + // if a cluster takes up a set percentage of the active window + this._openClustersBySize(); } } - // a contained node has no dynamic edges. - childNode.dynamicEdges = []; - - // remove circular edges from clusters - this._containCircularEdgesFromNode(parentNode,childNode); - - - // remove the childNode from the global nodes object - delete this.nodes[childNode.id]; - - // update the properties of the child and parent - var massBefore = parentNode.options.mass; - childNode.clusterSession = this.clusterSession; - parentNode.options.mass += childNode.options.mass; - parentNode.clusterSize += childNode.clusterSize; - parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + this._updateNodeIndexList(); - // keep track of the clustersessions so we can open the cluster up as it has been formed. - if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { - parentNode.clusterSessions.push(this.clusterSession); + // if a cluster was NOT formed and the user zoomed out, we try clustering by hubs + if (this.nodeIndices.length == amountOfNodes && (this.previousScale > this.scale || zoomDirection == -1)) { + this._aggregateHubs(force); + this._updateNodeIndexList(); } - // forced clusters only open from screen size and double tap - if (force == true) { - // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); - parentNode.formationScale = 0; - } - else { - parentNode.formationScale = this.scale; // The latest child has been added on this scale + // we now reduce chains. + if (this.previousScale > this.scale || zoomDirection == -1) { // zoom out + this.handleChains(); + this._updateNodeIndexList(); } - // recalculate the size of the node on the next time the node is rendered - parentNode.clearSizeCache(); - - // set the pop-out scale for the childnode - parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; - - // nullify the movement velocity of the child, this is to avoid hectic behaviour - childNode.clearVelocity(); - - // the mass has altered, preservation of energy dictates the velocity to be updated - parentNode.updateVelocity(massBefore); - - // restart the simulation to reorganise all nodes - this.moving = true; - }; - - - /** - * This function will apply the changes made to the remainingEdges during the formation of the clusters. - * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. - * It has to be called if a level is collapsed. It is called by _formClusters(). - * @private - */ - exports._updateDynamicEdges = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - node.dynamicEdgesLength = node.dynamicEdges.length; - - // this corrects for multiple edges pointing at the same other node - var correction = 0; - if (node.dynamicEdgesLength > 1) { - for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { - var edgeToId = node.dynamicEdges[j].toId; - var edgeFromId = node.dynamicEdges[j].fromId; - for (var k = j+1; k < node.dynamicEdgesLength; k++) { - if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || - (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { - correction += 1; - } - } - } - } - node.dynamicEdgesLength -= correction; - } - }; + this.previousScale = this.scale; + // rest of the update the index list, dynamic edges and labels + this._updateDynamicEdges(); + this.updateLabels(); - /** - * This adds an edge from the childNode to the contained edges of the parent node - * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private - */ - exports._addToContainedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { - parentNode.containedEdges[childNode.id] = [] + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length < amountOfNodes) { // this means a clustering operation has taken place + this.clusterSession += 1; + // if clusters have been made, we normalize the cluster level + this.normalizeClusterLevels(); } - // add this edge to the list - parentNode.containedEdges[childNode.id].push(edge); - - // remove the edge from the global edges object - delete this.edges[edge.id]; - // remove the edge from the parent object - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - if (parentNode.dynamicEdges[i].id == edge.id) { - parentNode.dynamicEdges.splice(i,1); - break; + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); } } + + this._updateCalculationNodes(); }; /** - * This function connects an edge that was connected to a child node to the parent node. - * It keeps track of which nodes it has been connected to with the originalId array. - * - * @param {Node} parentNode | Node object - * @param {Node} childNode | Node object - * @param {Edge} edge | Edge object - * @private + * This function handles the chains. It is called on every updateClusters(). */ - exports._connectEdgeToCluster = function(parentNode, childNode, edge) { - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - else { - if (edge.toId == childNode.id) { // edge connected to other node on the "to" side - edge.originalToId.push(childNode.id); - edge.to = parentNode; - edge.toId = parentNode.id; - } - else { // edge connected to other node with the "from" side - - edge.originalFromId.push(childNode.id); - edge.from = parentNode; - edge.fromId = parentNode.id; - } + exports.handleChains = function() { + // after clustering we check how many chains there are + var chainPercentage = this._getChainFraction(); + if (chainPercentage > this.constants.clustering.chainThreshold) { + this._reduceAmountOfChains(1 - this.constants.clustering.chainThreshold / chainPercentage) - this._addToReroutedEdges(parentNode,childNode,edge); } }; - /** - * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain - * these edges inside of the cluster. + * this functions starts clustering by hubs + * The minimum hub threshold is set globally * - * @param parentNode - * @param childNode * @private */ - exports._containCircularEdgesFromNode = function(parentNode, childNode) { - // manage all the edges connected to the child and parent nodes - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - // handle circular edges - if (edge.toId == edge.fromId) { - this._addToContainedEdges(parentNode, childNode, edge); - } - } + exports._aggregateHubs = function(force) { + this._getHubSize(); + this._formClustersByHub(force,false); }; /** - * This adds an edge from the childNode to the rerouted edges of the parent node + * This function is fired by keypress. It forces hubs to form. * - * @param parentNode | Node object - * @param childNode | Node object - * @param edge | Edge object - * @private */ - exports._addToReroutedEdges = function(parentNode, childNode, edge) { - // create an array object if it does not yet exist for this childNode - // we store the edge in the rerouted edges so we can restore it when the cluster pops open - if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { - parentNode.reroutedEdges[childNode.id] = []; - } - parentNode.reroutedEdges[childNode.id].push(edge); - - // this edge becomes part of the dynamicEdges of the cluster node - parentNode.dynamicEdges.push(edge); - }; + exports.forceAggregateHubs = function(doNotStart) { + var isMovingBeforeClustering = this.moving; + var amountOfNodes = this.nodeIndices.length; + this._aggregateHubs(true); + // update the index list, dynamic edges and labels + this._updateNodeIndexList(); + this._updateDynamicEdges(); + this.updateLabels(); - /** - * This function connects an edge that was connected to a cluster node back to the child node. - * - * @param parentNode | Node object - * @param childNode | Node object - * @private - */ - exports._connectEdgeBackToChild = function(parentNode, childNode) { - if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { - for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { - var edge = parentNode.reroutedEdges[childNode.id][i]; - if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { - edge.originalFromId.pop(); - edge.fromId = childNode.id; - edge.from = childNode; - } - else { - edge.originalToId.pop(); - edge.toId = childNode.id; - edge.to = childNode; - } + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; + } - // append this edge to the list of edges connecting to the childnode - childNode.dynamicEdges.push(edge); + if (doNotStart == false || doNotStart === undefined) { + // if the simulation was settled, we restart the simulation if a cluster has been formed or expanded + if (this.moving != isMovingBeforeClustering) { + this.start(); + } + } + }; - // remove the edge from the parent object - for (var j = 0; j < parentNode.dynamicEdges.length; j++) { - if (parentNode.dynamicEdges[j].id == edge.id) { - parentNode.dynamicEdges.splice(j,1); - break; + /** + * If a cluster takes up more than a set percentage of the screen, open the cluster + * + * @private + */ + exports._openClustersBySize = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.inView() == true) { + if ((node.width*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (node.height*this.scale > this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + this.openCluster(node); } } } - // remove the entry from the rerouted edges - delete parentNode.reroutedEdges[childNode.id]; } }; /** - * When loops are clustered, an edge can be both in the rerouted array and the contained array. - * This function is called last to verify that all edges in dynamicEdges are in fact connected to the - * parentNode + * This function loops over all nodes in the nodeIndices list. For each node it checks if it is a cluster and if it + * has to be opened based on the current zoom level. * - * @param parentNode | Node object * @private */ - exports._validateEdges = function(parentNode) { - for (var i = 0; i < parentNode.dynamicEdges.length; i++) { - var edge = parentNode.dynamicEdges[i]; - if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { - parentNode.dynamicEdges.splice(i,1); - } + exports._openClusters = function(recursive,force) { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + this._expandClusterNode(node,recursive,force); + this._updateCalculationNodes(); } }; - /** - * This function released the contained edges back into the global domain and puts them back into the - * dynamic edges of both parent and child. + * This function checks if a node has to be opened. This is done by checking the zoom level. + * If the node contains child nodes, this function is recursively called on the child nodes as well. + * This recursive behaviour is optional and can be set by the recursive argument. * - * @param {Node} parentNode | - * @param {Node} childNode | + * @param {Node} parentNode | to check for cluster and expand + * @param {Boolean} recursive | enabled or disable recursive calling + * @param {Boolean} force | enabled or disable forcing + * @param {Boolean} [openAll] | This will recursively force all nodes in the parent to be released * @private */ - exports._releaseContainedEdges = function(parentNode, childNode) { - for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { - var edge = parentNode.containedEdges[childNode.id][i]; + exports._expandClusterNode = function(parentNode, recursive, force, openAll) { + // first check if node is a cluster + if (parentNode.clusterSize > 1) { + // this means that on a double tap event or a zoom event, the cluster fully unpacks if it is smaller than 20 + if (parentNode.clusterSize < this.constants.clustering.sectorThreshold) { + openAll = true; + } + recursive = openAll ? true : recursive; - // put the edge back in the global edges object - this.edges[edge.id] = edge; + // if the last child has been added on a smaller scale than current scale decluster + if (parentNode.formationScale < this.scale || force == true) { + // we will check if any of the contained child nodes should be removed from the cluster + for (var containedNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(containedNodeId)) { + var childNode = parentNode.containedNodes[containedNodeId]; - // put the edge back in the dynamic edges of the child and parent - childNode.dynamicEdges.push(edge); - parentNode.dynamicEdges.push(edge); + // force expand will expand the largest cluster size clusters. Since we cluster from outside in, we assume that + // the largest cluster is the one that comes from outside + if (force == true) { + if (childNode.clusterSession == parentNode.clusterSessions[parentNode.clusterSessions.length-1] + || openAll) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + else { + if (this._nodeInActiveArea(parentNode)) { + this._expelChildFromParent(parentNode,containedNodeId,recursive,force,openAll); + } + } + } + } + } } - // remove the entry from the contained edges - delete parentNode.containedEdges[childNode.id]; - }; + /** + * ONLY CALLED FROM _expandClusterNode + * + * This function will expel a child_node from a parent_node. This is to de-cluster the node. This function will remove + * the child node from the parent contained_node object and put it back into the global nodes object. + * The same holds for the edge that was connected to the child node. It is moved back into the global edges object. + * + * @param {Node} parentNode | the parent node + * @param {String} containedNodeId | child_node id as it is contained in the containedNodes object of the parent node + * @param {Boolean} recursive | This will also check if the child needs to be expanded. + * With force and recursive both true, the entire cluster is unpacked + * @param {Boolean} force | This will disregard the zoom level and will expel this child from the parent + * @param {Boolean} openAll | This will recursively force all nodes in the parent to be released + * @private + */ + exports._expelChildFromParent = function(parentNode, containedNodeId, recursive, force, openAll) { + var childNode = parentNode.containedNodes[containedNodeId]; + // if child node has been added on smaller scale than current, kick out + if (childNode.formationScale < this.scale || force == true) { + // unselect all selected items + this._unselectAll(); + // put the child node back in the global nodes object + this.nodes[containedNodeId] = childNode; - // ------------------- UTILITY FUNCTIONS ---------------------------- // + // release the contained edges from this childNode back into the global edges + this._releaseContainedEdges(parentNode,childNode); + // reconnect rerouted edges to the childNode + this._connectEdgeBackToChild(parentNode,childNode); - /** - * This updates the node labels for all nodes (for debugging purposes) - */ - exports.updateLabels = function() { - var nodeId; - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.clusterSize > 1) { - node.label = "[".concat(String(node.clusterSize),"]"); - } - } - } + // validate all edges in dynamicEdges + this._validateEdges(parentNode); - // update node labels - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.clusterSize == 1) { - if (node.originalLabel !== undefined) { - node.label = node.originalLabel; - } - else { - node.label = String(node.id); + // undo the changes from the clustering operation on the parent node + parentNode.options.mass -= childNode.options.mass; + parentNode.clusterSize -= childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*(parentNode.clusterSize-1)); + parentNode.dynamicEdgesLength = parentNode.dynamicEdges.length; + + // place the child node near the parent, not at the exact same location to avoid chaos in the system + childNode.x = parentNode.x + parentNode.growthIndicator * (0.5 - Math.random()); + childNode.y = parentNode.y + parentNode.growthIndicator * (0.5 - Math.random()); + + // remove node from the list + delete parentNode.containedNodes[containedNodeId]; + + // check if there are other childs with this clusterSession in the parent. + var othersPresent = false; + for (var childNodeId in parentNode.containedNodes) { + if (parentNode.containedNodes.hasOwnProperty(childNodeId)) { + if (parentNode.containedNodes[childNodeId].clusterSession == childNode.clusterSession) { + othersPresent = true; + break; } } } - } - - // /* Debug Override */ - // for (nodeId in this.nodes) { - // if (this.nodes.hasOwnProperty(nodeId)) { - // node = this.nodes[nodeId]; - // node.label = String(node.level); - // } - // } + // if there are no others, remove the cluster session from the list + if (othersPresent == false) { + parentNode.clusterSessions.pop(); + } - }; + this._repositionBezierNodes(childNode); + // this._repositionBezierNodes(parentNode); + // remove the clusterSession from the child node + childNode.clusterSession = 0; - /** - * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes - * if the rest of the nodes are already a few cluster levels in. - * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not - * clustered enough to the clusterToSmallestNeighbours function. - */ - exports.normalizeClusterLevels = function() { - var maxLevel = 0; - var minLevel = 1e9; - var clusterLevel = 0; - var nodeId; + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - clusterLevel = this.nodes[nodeId].clusterSessions.length; - if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} - if (minLevel > clusterLevel) {minLevel = clusterLevel;} - } + // restart the simulation to reorganise all nodes + this.moving = true; } - if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { - var amountOfNodes = this.nodeIndices.length; - var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; - // we loop over all nodes in the list - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].clusterSessions.length < targetLevel) { - this._clusterToSmallestNeighbour(this.nodes[nodeId]); - } - } - } - this._updateNodeIndexList(); - this._updateDynamicEdges(); - // if a cluster was formed, we increase the clusterSession - if (this.nodeIndices.length != amountOfNodes) { - this.clusterSession += 1; - } + // check if a further expansion step is possible if recursivity is enabled + if (recursive == true) { + this._expandClusterNode(childNode,recursive,force,openAll); } }; - /** - * This function determines if the cluster we want to decluster is in the active area - * this means around the zoom center + * position the bezier nodes at the center of the edges * - * @param {Node} node - * @returns {boolean} + * @param node * @private */ - exports._nodeInActiveArea = function(node) { - return ( - Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale - && - Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale - ) + exports._repositionBezierNodes = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + node.dynamicEdges[i].positionBezierNode(); + } }; /** - * This is an adaptation of the original repositioning function. This is called if the system is clustered initially - * It puts large clusters away from the center and randomizes the order. + * This function checks if any nodes at the end of their trees have edges below a threshold length + * This function is called only from updateClusters() + * forceLevelCollapse ignores the length of the edge and collapses one level + * This means that a node with only one edge will be clustered with its connected node * + * @private + * @param {Boolean} force */ - exports.repositionNodes = function() { - for (var i = 0; i < this.nodeIndices.length; i++) { - var node = this.nodes[this.nodeIndices[i]]; - if ((node.xFixed == false || node.yFixed == false)) { - var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); - var angle = 2 * Math.PI * Math.random(); - if (node.xFixed == false) {node.x = radius * Math.cos(angle);} - if (node.yFixed == false) {node.y = radius * Math.sin(angle);} - this._repositionBezierNodes(node); - } + exports._formClusters = function(force) { + if (force == false) { + this._formClustersByZoom(); + } + else { + this._forceClustersByZoom(); } }; /** - * We determine how many connections denote an important hub. - * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) + * This function handles the clustering by zooming out, this is based on a minimum edge distance * * @private */ - exports._getHubSize = function() { - var average = 0; - var averageSquared = 0; - var hubCounter = 0; - var largestHub = 0; - - for (var i = 0; i < this.nodeIndices.length; i++) { - - var node = this.nodes[this.nodeIndices[i]]; - if (node.dynamicEdgesLength > largestHub) { - largestHub = node.dynamicEdgesLength; - } - average += node.dynamicEdgesLength; - averageSquared += Math.pow(node.dynamicEdgesLength,2); - hubCounter += 1; - } - average = average / hubCounter; - averageSquared = averageSquared / hubCounter; + exports._formClustersByZoom = function() { + var dx,dy,length, + minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; - var variance = averageSquared - Math.pow(average,2); + // check if any edges are shorter than minLength and start the clustering + // the clustering favours the node with the larger mass + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + var edge = this.edges[edgeId]; + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); - var standardDeviation = Math.sqrt(variance); - this.hubThreshold = Math.floor(average + 2*standardDeviation); + if (length < minLength) { + // first check which node is larger + var parentNode = edge.from; + var childNode = edge.to; + if (edge.to.options.mass > edge.from.options.mass) { + parentNode = edge.to; + childNode = edge.from; + } - // always have at least one to cluster - if (this.hubThreshold > largestHub) { - this.hubThreshold = largestHub; + if (childNode.dynamicEdgesLength == 1) { + this._addToCluster(parentNode,childNode,false); + } + else if (parentNode.dynamicEdgesLength == 1) { + this._addToCluster(childNode,parentNode,false); + } + } + } + } + } } - - // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); - // console.log("hubThreshold:",this.hubThreshold); }; - /** - * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. + * This function forces the network to cluster all nodes with only one connecting edge to their + * connected node. * - * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce * @private */ - exports._reduceAmountOfChains = function(fraction) { - this.hubThreshold = 2; - var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + exports._forceClustersByZoom = function() { for (var nodeId in this.nodes) { + // another node could have absorbed this child. if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - if (reduceAmount > 0) { - this._formClusterFromHub(this.nodes[nodeId],true,true,1); - reduceAmount -= 1; + var childNode = this.nodes[nodeId]; + + // the edges can be swallowed by another decrease + if (childNode.dynamicEdgesLength == 1 && childNode.dynamicEdges.length != 0) { + var edge = childNode.dynamicEdges[0]; + var parentNode = (edge.toId == childNode.id) ? this.nodes[edge.fromId] : this.nodes[edge.toId]; + + // group to the largest node + if (childNode.id != parentNode.id) { + if (parentNode.options.mass > childNode.options.mass) { + this._addToCluster(parentNode,childNode,true); + } + else { + this._addToCluster(childNode,parentNode,true); + } } } } } }; + /** - * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods - * with this amount we can cluster specifically on these chains. + * To keep the nodes of roughly equal size we normalize the cluster levels. + * This function clusters a node to its smallest connected neighbour. * + * @param node * @private */ - exports._getChainFraction = function() { - var chains = 0; - var total = 0; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { - chains += 1; + exports._clusterToSmallestNeighbour = function(node) { + var smallestNeighbour = -1; + var smallestNeighbourNode = null; + for (var i = 0; i < node.dynamicEdges.length; i++) { + if (node.dynamicEdges[i] !== undefined) { + var neighbour = null; + if (node.dynamicEdges[i].fromId != node.id) { + neighbour = node.dynamicEdges[i].from; + } + else if (node.dynamicEdges[i].toId != node.id) { + neighbour = node.dynamicEdges[i].to; } - total += 1; - } - } - return chains/total; - }; -/***/ }, -/* 61 */ -/***/ function(module, exports, __webpack_require__) { + if (neighbour != null && smallestNeighbour > neighbour.clusterSessions.length) { + smallestNeighbour = neighbour.clusterSessions.length; + smallestNeighbourNode = neighbour; + } + } + } - var util = __webpack_require__(1); - var Node = __webpack_require__(40); + if (neighbour != null && this.nodes[neighbour.id] !== undefined) { + this._addToCluster(neighbour, node, true); + } + }; - /** - * Creation of the SectorMixin var. - * - * This contains all the functions the Network object can use to employ the sector system. - * The sector system is always used by Network, though the benefits only apply to the use of clustering. - * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. - */ /** - * This function is only called by the setData function of the Network object. - * This loads the global references into the active sector. This initializes the sector. + * This function forms clusters from hubs, it loops over all nodes * + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges * @private */ - exports._putDataInSector = function() { - this.sectors["active"][this._sector()].nodes = this.nodes; - this.sectors["active"][this._sector()].edges = this.edges; - this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; + exports._formClustersByHub = function(force, onlyEqual) { + // we loop over all nodes in the list + for (var nodeId in this.nodes) { + // we check if it is still available since it can be used by the clustering in this loop + if (this.nodes.hasOwnProperty(nodeId)) { + this._formClusterFromHub(this.nodes[nodeId],force,onlyEqual); + } + } }; - /** - * /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied (active) sector. If a type is defined, do the specific type + * This function forms a cluster from a specific preselected hub node * - * @param {String} sectorId - * @param {String} [sectorType] | "active" or "frozen" + * @param {Node} hubNode | the node we will cluster as a hub + * @param {Boolean} force | Disregard zoom level + * @param {Boolean} onlyEqual | This only clusters a hub with a specific number of edges + * @param {Number} [absorptionSizeOffset] | * @private */ - exports._switchToSector = function(sectorId, sectorType) { - if (sectorType === undefined || sectorType == "active") { - this._switchToActiveSector(sectorId); - } - else { - this._switchToFrozenSector(sectorId); + exports._formClusterFromHub = function(hubNode, force, onlyEqual, absorptionSizeOffset) { + if (absorptionSizeOffset === undefined) { + absorptionSizeOffset = 0; } - }; + // we decide if the node is a hub + if ((hubNode.dynamicEdgesLength >= this.hubThreshold && onlyEqual == false) || + (hubNode.dynamicEdgesLength == this.hubThreshold && onlyEqual == true)) { + // initialize variables + var dx,dy,length; + var minLength = this.constants.clustering.clusterEdgeThreshold/this.scale; + var allowCluster = false; + // we create a list of edges because the dynamicEdges change over the course of this loop + var edgesIdarray = []; + var amountOfInitialEdges = hubNode.dynamicEdges.length; + for (var j = 0; j < amountOfInitialEdges; j++) { + edgesIdarray.push(hubNode.dynamicEdges[j].id); + } - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @param sectorId - * @private - */ - exports._switchToActiveSector = function(sectorId) { - this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["active"][sectorId]["nodes"]; - this.edges = this.sectors["active"][sectorId]["edges"]; + // if the hub clustering is not forces, we check if one of the edges connected + // to a cluster is small enough based on the constants.clustering.clusterEdgeThreshold + if (force == false) { + allowCluster = false; + for (j = 0; j < amountOfInitialEdges; j++) { + var edge = this.edges[edgesIdarray[j]]; + if (edge !== undefined) { + if (edge.connected) { + if (edge.toId != edge.fromId) { + dx = (edge.to.x - edge.from.x); + dy = (edge.to.y - edge.from.y); + length = Math.sqrt(dx * dx + dy * dy); + + if (length < minLength) { + allowCluster = true; + break; + } + } + } + } + } + } + + // start the clustering if allowed + if ((!force && allowCluster) || force) { + // we loop over all edges INITIALLY connected to this hub + for (j = 0; j < amountOfInitialEdges; j++) { + edge = this.edges[edgesIdarray[j]]; + // the edge can be clustered by this function in a previous loop + if (edge !== undefined) { + var childNode = this.nodes[(edge.fromId == hubNode.id) ? edge.toId : edge.fromId]; + // we do not want hubs to merge with other hubs nor do we want to cluster itself. + if ((childNode.dynamicEdges.length <= (this.hubThreshold + absorptionSizeOffset)) && + (childNode.id != hubNode.id)) { + this._addToCluster(hubNode,childNode,force); + } + } + } + } + } }; - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied active sector. - * - * @private - */ - exports._switchToSupportSector = function() { - this.nodeIndices = this.sectors["support"]["nodeIndices"]; - this.nodes = this.sectors["support"]["nodes"]; - this.edges = this.sectors["support"]["edges"]; - }; - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the supplied frozen sector. + * This function adds the child node to the parent node, creating a cluster if it is not already. * - * @param sectorId + * @param {Node} parentNode | this is the node that will house the child node + * @param {Node} childNode | this node will be deleted from the global this.nodes and stored in the parent node + * @param {Boolean} force | true will only update the remainingEdges at the very end of the clustering, ensuring single level collapse * @private */ - exports._switchToFrozenSector = function(sectorId) { - this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; - this.nodes = this.sectors["frozen"][sectorId]["nodes"]; - this.edges = this.sectors["frozen"][sectorId]["edges"]; - }; + exports._addToCluster = function(parentNode, childNode, force) { + // join child node in the parent node + parentNode.containedNodes[childNode.id] = childNode; + + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < childNode.dynamicEdges.length; i++) { + var edge = childNode.dynamicEdges[i]; + if (edge.toId == parentNode.id || edge.fromId == parentNode.id) { // edge connected to parentNode + this._addToContainedEdges(parentNode,childNode,edge); + } + else { + this._connectEdgeToCluster(parentNode,childNode,edge); + } + } + // a contained node has no dynamic edges. + childNode.dynamicEdges = []; + // remove circular edges from clusters + this._containCircularEdgesFromNode(parentNode,childNode); - /** - * This function sets the global references to nodes, edges and nodeIndices back to - * those of the currently active sector. - * - * @private - */ - exports._loadLatestSector = function() { - this._switchToSector(this._sector()); - }; + // remove the childNode from the global nodes object + delete this.nodes[childNode.id]; - /** - * This function returns the currently active sector Id - * - * @returns {String} - * @private - */ - exports._sector = function() { - return this.activeSector[this.activeSector.length-1]; - }; + // update the properties of the child and parent + var massBefore = parentNode.options.mass; + childNode.clusterSession = this.clusterSession; + parentNode.options.mass += childNode.options.mass; + parentNode.clusterSize += childNode.clusterSize; + parentNode.options.fontSize = Math.min(this.constants.clustering.maxFontSize, this.constants.nodes.fontSize + this.constants.clustering.fontSizeMultiplier*parentNode.clusterSize); + // keep track of the clustersessions so we can open the cluster up as it has been formed. + if (parentNode.clusterSessions[parentNode.clusterSessions.length - 1] != this.clusterSession) { + parentNode.clusterSessions.push(this.clusterSession); + } - /** - * This function returns the previously active sector Id - * - * @returns {String} - * @private - */ - exports._previousSector = function() { - if (this.activeSector.length > 1) { - return this.activeSector[this.activeSector.length-2]; + // forced clusters only open from screen size and double tap + if (force == true) { + // parentNode.formationScale = Math.pow(1 - (1.0/11.0),this.clusterSession+3); + parentNode.formationScale = 0; } else { - throw new TypeError('there are not enough sectors in the this.activeSector array.'); + parentNode.formationScale = this.scale; // The latest child has been added on this scale } - }; - - - /** - * We add the active sector at the end of the this.activeSector array - * This ensures it is the currently active sector returned by _sector() and it reaches the top - * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. - * - * @param newId - * @private - */ - exports._setActiveSector = function(newId) { - this.activeSector.push(newId); - }; + // recalculate the size of the node on the next time the node is rendered + parentNode.clearSizeCache(); - /** - * We remove the currently active sector id from the active sector stack. This happens when - * we reactivate the previously active sector - * - * @private - */ - exports._forgetLastSector = function() { - this.activeSector.pop(); - }; + // set the pop-out scale for the childnode + parentNode.containedNodes[childNode.id].formationScale = parentNode.formationScale; + // nullify the movement velocity of the child, this is to avoid hectic behaviour + childNode.clearVelocity(); - /** - * This function creates a new active sector with the supplied newId. This newId - * is the expanding node id. - * - * @param {String} newId | Id of the new active sector - * @private - */ - exports._createNewSector = function(newId) { - // create the new sector - this.sectors["active"][newId] = {"nodes":{}, - "edges":{}, - "nodeIndices":[], - "formationScale": this.scale, - "drawingNode": undefined}; + // the mass has altered, preservation of energy dictates the velocity to be updated + parentNode.updateVelocity(massBefore); - // create the new sector render node. This gives visual feedback that you are in a new sector. - this.sectors["active"][newId]['drawingNode'] = new Node( - {id:newId, - color: { - background: "#eaefef", - border: "495c5e" - } - },{},{},this.constants); - this.sectors["active"][newId]['drawingNode'].clusterSize = 2; + // restart the simulation to reorganise all nodes + this.moving = true; }; /** - * This function removes the currently active sector. This is called when we create a new - * active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed + * This function will apply the changes made to the remainingEdges during the formation of the clusters. + * This is a seperate function to allow for level-wise collapsing of the node barnesHutTree. + * It has to be called if a level is collapsed. It is called by _formClusters(). * @private */ - exports._deleteActiveSector = function(sectorId) { - delete this.sectors["active"][sectorId]; - }; - + exports._updateDynamicEdges = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + node.dynamicEdgesLength = node.dynamicEdges.length; - /** - * This function removes the currently active sector. This is called when we reactivate - * the previously active sector. - * - * @param {String} sectorId | Id of the active sector that will be removed - * @private - */ - exports._deleteFrozenSector = function(sectorId) { - delete this.sectors["frozen"][sectorId]; + // this corrects for multiple edges pointing at the same other node + var correction = 0; + if (node.dynamicEdgesLength > 1) { + for (var j = 0; j < node.dynamicEdgesLength - 1; j++) { + var edgeToId = node.dynamicEdges[j].toId; + var edgeFromId = node.dynamicEdges[j].fromId; + for (var k = j+1; k < node.dynamicEdgesLength; k++) { + if ((node.dynamicEdges[k].toId == edgeToId && node.dynamicEdges[k].fromId == edgeFromId) || + (node.dynamicEdges[k].fromId == edgeToId && node.dynamicEdges[k].toId == edgeFromId)) { + correction += 1; + } + } + } + } + node.dynamicEdgesLength -= correction; + } }; /** - * Freezing an active sector means moving it from the "active" object to the "frozen" object. - * We copy the references, then delete the active entree. + * This adds an edge from the childNode to the contained edges of the parent node * - * @param sectorId + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object * @private */ - exports._freezeSector = function(sectorId) { - // we move the set references from the active to the frozen stack. - this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; - - // we have moved the sector data into the frozen set, we now remove it from the active set - this._deleteActiveSector(sectorId); - }; - + exports._addToContainedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + if (!(parentNode.containedEdges.hasOwnProperty(childNode.id))) { + parentNode.containedEdges[childNode.id] = [] + } + // add this edge to the list + parentNode.containedEdges[childNode.id].push(edge); - /** - * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" - * object to the "active" object. - * - * @param sectorId - * @private - */ - exports._activateSector = function(sectorId) { - // we move the set references from the frozen to the active stack. - this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + // remove the edge from the global edges object + delete this.edges[edge.id]; - // we have moved the sector data into the active set, we now remove it from the frozen stack - this._deleteFrozenSector(sectorId); + // remove the edge from the parent object + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + if (parentNode.dynamicEdges[i].id == edge.id) { + parentNode.dynamicEdges.splice(i,1); + break; + } + } }; - /** - * This function merges the data from the currently active sector with a frozen sector. This is used - * in the process of reverting back to the previously active sector. - * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it - * upon the creation of a new active sector. + * This function connects an edge that was connected to a child node to the parent node. + * It keeps track of which nodes it has been connected to with the originalId array. * - * @param sectorId + * @param {Node} parentNode | Node object + * @param {Node} childNode | Node object + * @param {Edge} edge | Edge object * @private */ - exports._mergeThisWithFrozen = function(sectorId) { - // copy all nodes - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; - } + exports._connectEdgeToCluster = function(parentNode, childNode, edge) { + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); } + else { + if (edge.toId == childNode.id) { // edge connected to other node on the "to" side + edge.originalToId.push(childNode.id); + edge.to = parentNode; + edge.toId = parentNode.id; + } + else { // edge connected to other node with the "from" side - // copy all edges (if not fully clustered, else there are no edges) - for (var edgeId in this.edges) { - if (this.edges.hasOwnProperty(edgeId)) { - this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; + edge.originalFromId.push(childNode.id); + edge.from = parentNode; + edge.fromId = parentNode.id; } - } - // merge the nodeIndices - for (var i = 0; i < this.nodeIndices.length; i++) { - this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); + this._addToReroutedEdges(parentNode,childNode,edge); } }; /** - * This clusters the sector to one cluster. It was a single cluster before this process started so - * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. + * If a node is connected to itself, a circular edge is drawn. When clustering we want to contain + * these edges inside of the cluster. * + * @param parentNode + * @param childNode * @private */ - exports._collapseThisToSingleCluster = function() { - this.clusterToFit(1,false); + exports._containCircularEdgesFromNode = function(parentNode, childNode) { + // manage all the edges connected to the child and parent nodes + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + // handle circular edges + if (edge.toId == edge.fromId) { + this._addToContainedEdges(parentNode, childNode, edge); + } + } }; /** - * We create a new active sector from the node that we want to open. + * This adds an edge from the childNode to the rerouted edges of the parent node * - * @param node + * @param parentNode | Node object + * @param childNode | Node object + * @param edge | Edge object * @private */ - exports._addSector = function(node) { - // this is the currently active sector - var sector = this._sector(); - - // // this should allow me to select nodes from a frozen set. - // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { - // console.log("the node is part of the active sector"); - // } - // else { - // console.log("I dont know what the fuck happened!!"); - // } - - // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. - delete this.nodes[node.id]; - - var unqiueIdentifier = util.randomUUID(); - - // we fully freeze the currently active sector - this._freezeSector(sector); - - // we create a new active sector. This sector has the Id of the node to ensure uniqueness - this._createNewSector(unqiueIdentifier); - - // we add the active sector to the sectors array to be able to revert these steps later on - this._setActiveSector(unqiueIdentifier); + exports._addToReroutedEdges = function(parentNode, childNode, edge) { + // create an array object if it does not yet exist for this childNode + // we store the edge in the rerouted edges so we can restore it when the cluster pops open + if (!(parentNode.reroutedEdges.hasOwnProperty(childNode.id))) { + parentNode.reroutedEdges[childNode.id] = []; + } + parentNode.reroutedEdges[childNode.id].push(edge); - // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier - this._switchToSector(this._sector()); + // this edge becomes part of the dynamicEdges of the cluster node + parentNode.dynamicEdges.push(edge); + }; - // finally we add the node we removed from our previous active sector to the new active sector - this.nodes[node.id] = node; - }; /** - * We close the sector that is currently open and revert back to the one before. - * If the active sector is the "default" sector, nothing happens. + * This function connects an edge that was connected to a cluster node back to the child node. * + * @param parentNode | Node object + * @param childNode | Node object * @private */ - exports._collapseSector = function() { - // the currently active sector - var sector = this._sector(); - - // we cannot collapse the default sector - if (sector != "default") { - if ((this.nodeIndices.length == 1) || - (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || - (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { - var previousSector = this._previousSector(); - - // we collapse the sector back to a single cluster - this._collapseThisToSingleCluster(); - - // we move the remaining nodes, edges and nodeIndices to the previous sector. - // This previous sector is the one we will reactivate - this._mergeThisWithFrozen(previousSector); - - // the previously active (frozen) sector now has all the data from the currently active sector. - // we can now delete the active sector. - this._deleteActiveSector(sector); - - // we activate the previously active (and currently frozen) sector. - this._activateSector(previousSector); - - // we load the references from the newly active sector into the global references - this._switchToSector(previousSector); - - // we forget the previously active sector because we reverted to the one before - this._forgetLastSector(); + exports._connectEdgeBackToChild = function(parentNode, childNode) { + if (parentNode.reroutedEdges.hasOwnProperty(childNode.id)) { + for (var i = 0; i < parentNode.reroutedEdges[childNode.id].length; i++) { + var edge = parentNode.reroutedEdges[childNode.id][i]; + if (edge.originalFromId[edge.originalFromId.length-1] == childNode.id) { + edge.originalFromId.pop(); + edge.fromId = childNode.id; + edge.from = childNode; + } + else { + edge.originalToId.pop(); + edge.toId = childNode.id; + edge.to = childNode; + } - // finally, we update the node index list. - this._updateNodeIndexList(); + // append this edge to the list of edges connecting to the childnode + childNode.dynamicEdges.push(edge); - // we refresh the list with calulation nodes and calculation node indices. - this._updateCalculationNodes(); + // remove the edge from the parent object + for (var j = 0; j < parentNode.dynamicEdges.length; j++) { + if (parentNode.dynamicEdges[j].id == edge.id) { + parentNode.dynamicEdges.splice(j,1); + break; + } + } } + // remove the entry from the rerouted edges + delete parentNode.reroutedEdges[childNode.id]; } }; /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * When loops are clustered, an edge can be both in the rerouted array and the contained array. + * This function is called last to verify that all edges in dynamicEdges are in fact connected to the + * parentNode * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @param parentNode | Node object * @private */ - exports._doInAllActiveSectors = function(runFunction,argument) { - var returnValues = []; - if (argument === undefined) { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - returnValues.push( this[runFunction]() ); - } - } - } - else { - for (var sector in this.sectors["active"]) { - if (this.sectors["active"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToActiveSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues.push( this[runFunction](args[0],args[1]) ); - } - else { - returnValues.push( this[runFunction](argument) ); - } - } + exports._validateEdges = function(parentNode) { + for (var i = 0; i < parentNode.dynamicEdges.length; i++) { + var edge = parentNode.dynamicEdges[i]; + if (parentNode.id != edge.toId && parentNode.id != edge.fromId) { + parentNode.dynamicEdges.splice(i,1); } } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; }; /** - * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). + * This function released the contained edges back into the global domain and puts them back into the + * dynamic edges of both parent and child. * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we dont pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @param {Node} parentNode | + * @param {Node} childNode | * @private */ - exports._doInSupportSector = function(runFunction,argument) { - var returnValues = false; - if (argument === undefined) { - this._switchToSupportSector(); - returnValues = this[runFunction](); - } - else { - this._switchToSupportSector(); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - returnValues = this[runFunction](args[0],args[1]); - } - else { - returnValues = this[runFunction](argument); - } + exports._releaseContainedEdges = function(parentNode, childNode) { + for (var i = 0; i < parentNode.containedEdges[childNode.id].length; i++) { + var edge = parentNode.containedEdges[childNode.id][i]; + + // put the edge back in the global edges object + this.edges[edge.id] = edge; + + // put the edge back in the dynamic edges of the child and parent + childNode.dynamicEdges.push(edge); + parentNode.dynamicEdges.push(edge); } - // we revert the global references back to our active sector - this._loadLatestSector(); - return returnValues; + // remove the entry from the contained edges + delete parentNode.containedEdges[childNode.id]; + }; + + + // ------------------- UTILITY FUNCTIONS ---------------------------- // + + /** - * This runs a function in all frozen sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private + * This updates the node labels for all nodes (for debugging purposes) */ - exports._doInAllFrozenSectors = function(runFunction,argument) { - if (argument === undefined) { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - this[runFunction](); - } - } - } - else { - for (var sector in this.sectors["frozen"]) { - if (this.sectors["frozen"].hasOwnProperty(sector)) { - // switch the global references to those of this sector - this._switchToFrozenSector(sector); - var args = Array.prototype.splice.call(arguments, 1); - if (args.length > 1) { - this[runFunction](args[0],args[1]); + exports.updateLabels = function() { + var nodeId; + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.clusterSize > 1) { + node.label = "[".concat(String(node.clusterSize),"]"); + } + } + } + + // update node labels + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.clusterSize == 1) { + if (node.originalLabel !== undefined) { + node.label = node.originalLabel; } else { - this[runFunction](argument); + node.label = String(node.id); } } } } - this._loadLatestSector(); + + // /* Debug Override */ + // for (nodeId in this.nodes) { + // if (this.nodes.hasOwnProperty(nodeId)) { + // node = this.nodes[nodeId]; + // node.label = String(node.level); + // } + // } + }; /** - * This runs a function in all sectors. This is used in the _redraw(). - * - * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors - * | we don't pass the function itself because then the "this" is the window object - * | instead of the Network object - * @param {*} [argument] | Optional: arguments to pass to the runFunction - * @private + * We want to keep the cluster level distribution rather small. This means we do not want unclustered nodes + * if the rest of the nodes are already a few cluster levels in. + * To fix this we use this function. It determines the min and max cluster level and sends nodes that have not + * clustered enough to the clusterToSmallestNeighbours function. */ - exports._doInAllSectors = function(runFunction,argument) { - var args = Array.prototype.splice.call(arguments, 1); - if (argument === undefined) { - this._doInAllActiveSectors(runFunction); - this._doInAllFrozenSectors(runFunction); + exports.normalizeClusterLevels = function() { + var maxLevel = 0; + var minLevel = 1e9; + var clusterLevel = 0; + var nodeId; + + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + clusterLevel = this.nodes[nodeId].clusterSessions.length; + if (maxLevel < clusterLevel) {maxLevel = clusterLevel;} + if (minLevel > clusterLevel) {minLevel = clusterLevel;} + } } - else { - if (args.length > 1) { - this._doInAllActiveSectors(runFunction,args[0],args[1]); - this._doInAllFrozenSectors(runFunction,args[0],args[1]); + + if (maxLevel - minLevel > this.constants.clustering.clusterLevelDifference) { + var amountOfNodes = this.nodeIndices.length; + var targetLevel = maxLevel - this.constants.clustering.clusterLevelDifference; + // we loop over all nodes in the list + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].clusterSessions.length < targetLevel) { + this._clusterToSmallestNeighbour(this.nodes[nodeId]); + } + } } - else { - this._doInAllActiveSectors(runFunction,argument); - this._doInAllFrozenSectors(runFunction,argument); + this._updateNodeIndexList(); + this._updateDynamicEdges(); + // if a cluster was formed, we increase the clusterSession + if (this.nodeIndices.length != amountOfNodes) { + this.clusterSession += 1; } } }; + /** - * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the - * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. + * This function determines if the cluster we want to decluster is in the active area + * this means around the zoom center * + * @param {Node} node + * @returns {boolean} * @private */ - exports._clearNodeIndexList = function() { - var sector = this._sector(); - this.sectors["active"][sector]["nodeIndices"] = []; - this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; + exports._nodeInActiveArea = function(node) { + return ( + Math.abs(node.x - this.areaCenter.x) <= this.constants.clustering.activeAreaBoxSize/this.scale + && + Math.abs(node.y - this.areaCenter.y) <= this.constants.clustering.activeAreaBoxSize/this.scale + ) }; /** - * Draw the encompassing sector node + * This is an adaptation of the original repositioning function. This is called if the system is clustered initially + * It puts large clusters away from the center and randomizes the order. * - * @param ctx - * @param sectorType - * @private */ - exports._drawSectorNodes = function(ctx,sectorType) { - var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; - for (var sector in this.sectors[sectorType]) { - if (this.sectors[sectorType].hasOwnProperty(sector)) { - if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { - - this._switchToSector(sector,sectorType); - - minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.resize(ctx); - if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} - if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} - if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} - if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} - } - } - node = this.sectors[sectorType][sector]["drawingNode"]; - node.x = 0.5 * (maxX + minX); - node.y = 0.5 * (maxY + minY); - node.width = 2 * (node.x - minX); - node.height = 2 * (node.y - minY); - node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); - node.setScale(this.scale); - node._drawCircle(ctx); - } + exports.repositionNodes = function() { + for (var i = 0; i < this.nodeIndices.length; i++) { + var node = this.nodes[this.nodeIndices[i]]; + if ((node.xFixed == false || node.yFixed == false)) { + var radius = 10 * 0.1*this.nodeIndices.length * Math.min(100,node.options.mass); + var angle = 2 * Math.PI * Math.random(); + if (node.xFixed == false) {node.x = radius * Math.cos(angle);} + if (node.yFixed == false) {node.y = radius * Math.sin(angle);} + this._repositionBezierNodes(node); } } }; - exports._drawAllSectorNodes = function(ctx) { - this._drawSectorNodes(ctx,"frozen"); - this._drawSectorNodes(ctx,"active"); - this._loadLatestSector(); - }; - - -/***/ }, -/* 62 */ -/***/ function(module, exports, __webpack_require__) { - - var Node = __webpack_require__(40); /** - * This function can be called from the _doInAllSectors function + * We determine how many connections denote an important hub. + * We take the mean + 2*std as the important hub size. (Assuming a normal distribution of data, ~2.2%) * - * @param object - * @param overlappingNodes * @private */ - exports._getNodesOverlappingWith = function(object, overlappingNodes) { - var nodes = this.nodes; - for (var nodeId in nodes) { - if (nodes.hasOwnProperty(nodeId)) { - if (nodes[nodeId].isOverlappingWith(object)) { - overlappingNodes.push(nodeId); - } + exports._getHubSize = function() { + var average = 0; + var averageSquared = 0; + var hubCounter = 0; + var largestHub = 0; + + for (var i = 0; i < this.nodeIndices.length; i++) { + + var node = this.nodes[this.nodeIndices[i]]; + if (node.dynamicEdgesLength > largestHub) { + largestHub = node.dynamicEdgesLength; } + average += node.dynamicEdgesLength; + averageSquared += Math.pow(node.dynamicEdgesLength,2); + hubCounter += 1; } - }; + average = average / hubCounter; + averageSquared = averageSquared / hubCounter; - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllNodesOverlappingWith = function (object) { - var overlappingNodes = []; - this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); - return overlappingNodes; - }; + var variance = averageSquared - Math.pow(average,2); + var standardDeviation = Math.sqrt(variance); - /** - * Return a position object in canvasspace from a single point in screenspace - * - * @param pointer - * @returns {{left: number, top: number, right: number, bottom: number}} - * @private - */ - exports._pointerToPositionObject = function(pointer) { - var x = this._XconvertDOMtoCanvas(pointer.x); - var y = this._YconvertDOMtoCanvas(pointer.y); + this.hubThreshold = Math.floor(average + 2*standardDeviation); - return { - left: x, - top: y, - right: x, - bottom: y - }; + // always have at least one to cluster + if (this.hubThreshold > largestHub) { + this.hubThreshold = largestHub; + } + + // console.log("average",average,"averageSQ",averageSquared,"var",variance,"std",standardDeviation); + // console.log("hubThreshold:",this.hubThreshold); }; /** - * Get the top node at the a specific point (like a click) + * We reduce the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. * - * @param {{x: Number, y: Number}} pointer - * @return {Node | null} node + * @param {Number} fraction | between 0 and 1, the percentage of chains to reduce * @private */ - exports._getNodeAt = function (pointer) { - // we first check if this is an navigation controls element - var positionObject = this._pointerToPositionObject(pointer); - var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - - // if there are overlapping nodes, select the last one, this is the - // one which is drawn on top of the others - if (overlappingNodes.length > 0) { - return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; - } - else { - return null; + exports._reduceAmountOfChains = function(fraction) { + this.hubThreshold = 2; + var reduceAmount = Math.floor(this.nodeIndices.length * fraction); + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + if (reduceAmount > 0) { + this._formClusterFromHub(this.nodes[nodeId],true,true,1); + reduceAmount -= 1; + } + } + } } }; - /** - * retrieve all edges overlapping with given object, selector is around center - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes + * We get the amount of "extension nodes" or chains. These are not quickly clustered with the outliers and hubs methods + * with this amount we can cluster specifically on these chains. + * * @private */ - exports._getEdgesOverlappingWith = function (object, overlappingEdges) { - var edges = this.edges; - for (var edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - if (edges[edgeId].isOverlappingWith(object)) { - overlappingEdges.push(edgeId); + exports._getChainFraction = function() { + var chains = 0; + var total = 0; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + if (this.nodes[nodeId].dynamicEdgesLength == 2 && this.nodes[nodeId].dynamicEdges.length >= 2) { + chains += 1; } + total += 1; } } + return chains/total; }; - /** - * retrieve all nodes overlapping with given object - * @param {Object} object An object with parameters left, top, right, bottom - * @return {Number[]} An array with id's of the overlapping nodes - * @private - */ - exports._getAllEdgesOverlappingWith = function (object) { - var overlappingEdges = []; - this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); - return overlappingEdges; - }; +/***/ }, +/* 62 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Node = __webpack_require__(40); /** - * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call - * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. + * Creation of the SectorMixin var. * - * @param pointer - * @returns {null} - * @private + * This contains all the functions the Network object can use to employ the sector system. + * The sector system is always used by Network, though the benefits only apply to the use of clustering. + * If clustering is not used, there is no overhead except for a duplicate object with references to nodes and edges. */ - exports._getEdgeAt = function(pointer) { - var positionObject = this._pointerToPositionObject(pointer); - var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - - if (overlappingEdges.length > 0) { - return this.edges[overlappingEdges[overlappingEdges.length - 1]]; - } - else { - return null; - } - }; - /** - * Add object to the selection array. + * This function is only called by the setData function of the Network object. + * This loads the global references into the active sector. This initializes the sector. * - * @param obj * @private */ - exports._addToSelection = function(obj) { - if (obj instanceof Node) { - this.selectionObj.nodes[obj.id] = obj; - } - else { - this.selectionObj.edges[obj.id] = obj; - } + exports._putDataInSector = function() { + this.sectors["active"][this._sector()].nodes = this.nodes; + this.sectors["active"][this._sector()].edges = this.edges; + this.sectors["active"][this._sector()].nodeIndices = this.nodeIndices; }; + /** - * Add object to the selection array. + * /** + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied (active) sector. If a type is defined, do the specific type * - * @param obj + * @param {String} sectorId + * @param {String} [sectorType] | "active" or "frozen" * @private */ - exports._addToHover = function(obj) { - if (obj instanceof Node) { - this.hoverObj.nodes[obj.id] = obj; + exports._switchToSector = function(sectorId, sectorType) { + if (sectorType === undefined || sectorType == "active") { + this._switchToActiveSector(sectorId); } else { - this.hoverObj.edges[obj.id] = obj; + this._switchToFrozenSector(sectorId); } }; /** - * Remove a single option from selection. + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. * - * @param {Object} obj + * @param sectorId * @private */ - exports._removeFromSelection = function(obj) { - if (obj instanceof Node) { - delete this.selectionObj.nodes[obj.id]; - } - else { - delete this.selectionObj.edges[obj.id]; - } + exports._switchToActiveSector = function(sectorId) { + this.nodeIndices = this.sectors["active"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["active"][sectorId]["nodes"]; + this.edges = this.sectors["active"][sectorId]["edges"]; }; + /** - * Unselect all. The selectionObj is useful for this. + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied active sector. * - * @param {Boolean} [doNotTrigger] | ignore trigger * @private */ - exports._unselectAll = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - this.selectionObj.nodes[nodeId].unselect(); - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - this.selectionObj.edges[edgeId].unselect(); - } - } - - this.selectionObj = {nodes:{},edges:{}}; - - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } + exports._switchToSupportSector = function() { + this.nodeIndices = this.sectors["support"]["nodeIndices"]; + this.nodes = this.sectors["support"]["nodes"]; + this.edges = this.sectors["support"]["edges"]; }; + /** - * Unselect all clusters. The selectionObj is useful for this. + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the supplied frozen sector. * - * @param {Boolean} [doNotTrigger] | ignore trigger + * @param sectorId * @private */ - exports._unselectClusters = function(doNotTrigger) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - this.selectionObj.nodes[nodeId].unselect(); - this._removeFromSelection(this.selectionObj.nodes[nodeId]); - } - } - } - - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); - } + exports._switchToFrozenSector = function(sectorId) { + this.nodeIndices = this.sectors["frozen"][sectorId]["nodeIndices"]; + this.nodes = this.sectors["frozen"][sectorId]["nodes"]; + this.edges = this.sectors["frozen"][sectorId]["edges"]; }; /** - * return the number of selected nodes + * This function sets the global references to nodes, edges and nodeIndices back to + * those of the currently active sector. * - * @returns {number} * @private */ - exports._getSelectedNodeCount = function() { - var count = 0; - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - return count; + exports._loadLatestSector = function() { + this._switchToSector(this._sector()); }; + /** - * return the selected node + * This function returns the currently active sector Id * - * @returns {number} + * @returns {String} * @private */ - exports._getSelectedNode = function() { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return this.selectionObj.nodes[nodeId]; - } - } - return null; + exports._sector = function() { + return this.activeSector[this.activeSector.length-1]; }; + /** - * return the selected edge + * This function returns the previously active sector Id * - * @returns {number} + * @returns {String} * @private */ - exports._getSelectedEdge = function() { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - return this.selectionObj.edges[edgeId]; - } + exports._previousSector = function() { + if (this.activeSector.length > 1) { + return this.activeSector[this.activeSector.length-2]; + } + else { + throw new TypeError('there are not enough sectors in the this.activeSector array.'); } - return null; }; /** - * return the number of selected edges + * We add the active sector at the end of the this.activeSector array + * This ensures it is the currently active sector returned by _sector() and it reaches the top + * of the activeSector stack. When we reverse our steps we move from the end to the beginning of this stack. * - * @returns {number} + * @param newId * @private */ - exports._getSelectedEdgeCount = function() { - var count = 0; - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; + exports._setActiveSector = function(newId) { + this.activeSector.push(newId); }; /** - * return the number of selected objects. + * We remove the currently active sector id from the active sector stack. This happens when + * we reactivate the previously active sector * - * @returns {number} * @private */ - exports._getSelectedObjectCount = function() { - var count = 0; - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - count += 1; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - count += 1; - } - } - return count; + exports._forgetLastSector = function() { + this.activeSector.pop(); }; + /** - * Check if anything is selected + * This function creates a new active sector with the supplied newId. This newId + * is the expanding node id. * - * @returns {boolean} + * @param {String} newId | Id of the new active sector * @private */ - exports._selectionIsEmpty = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - return false; - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - return false; - } - } - return true; + exports._createNewSector = function(newId) { + // create the new sector + this.sectors["active"][newId] = {"nodes":{}, + "edges":{}, + "nodeIndices":[], + "formationScale": this.scale, + "drawingNode": undefined}; + + // create the new sector render node. This gives visual feedback that you are in a new sector. + this.sectors["active"][newId]['drawingNode'] = new Node( + {id:newId, + color: { + background: "#eaefef", + border: "495c5e" + } + },{},{},this.constants); + this.sectors["active"][newId]['drawingNode'].clusterSize = 2; }; /** - * check if one of the selected nodes is a cluster. + * This function removes the currently active sector. This is called when we create a new + * active sector. * - * @returns {boolean} + * @param {String} sectorId | Id of the active sector that will be removed * @private */ - exports._clusterInSelection = function() { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (this.selectionObj.nodes[nodeId].clusterSize > 1) { - return true; - } - } - } - return false; + exports._deleteActiveSector = function(sectorId) { + delete this.sectors["active"][sectorId]; }; + /** - * select the edges connected to the node that is being selected + * This function removes the currently active sector. This is called when we reactivate + * the previously active sector. * - * @param {Node} node + * @param {String} sectorId | Id of the active sector that will be removed * @private */ - exports._selectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.select(); - this._addToSelection(edge); - } + exports._deleteFrozenSector = function(sectorId) { + delete this.sectors["frozen"][sectorId]; }; + /** - * select the edges connected to the node that is being selected + * Freezing an active sector means moving it from the "active" object to the "frozen" object. + * We copy the references, then delete the active entree. * - * @param {Node} node + * @param sectorId * @private */ - exports._hoverConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.hover = true; - this._addToHover(edge); - } + exports._freezeSector = function(sectorId) { + // we move the set references from the active to the frozen stack. + this.sectors["frozen"][sectorId] = this.sectors["active"][sectorId]; + + // we have moved the sector data into the frozen set, we now remove it from the active set + this._deleteActiveSector(sectorId); }; /** - * unselect the edges connected to the node that is being selected + * This is the reverse operation of _freezeSector. Activating means moving the sector from the "frozen" + * object to the "active" object. * - * @param {Node} node + * @param sectorId * @private */ - exports._unselectConnectedEdges = function(node) { - for (var i = 0; i < node.dynamicEdges.length; i++) { - var edge = node.dynamicEdges[i]; - edge.unselect(); - this._removeFromSelection(edge); - } - }; - + exports._activateSector = function(sectorId) { + // we move the set references from the frozen to the active stack. + this.sectors["active"][sectorId] = this.sectors["frozen"][sectorId]; + // we have moved the sector data into the active set, we now remove it from the frozen stack + this._deleteFrozenSector(sectorId); + }; /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection + * This function merges the data from the currently active sector with a frozen sector. This is used + * in the process of reverting back to the previously active sector. + * The data that is placed in the frozen (the previously active) sector is the node that has been removed from it + * upon the creation of a new active sector. * - * @param {Node || Edge} object - * @param {Boolean} append - * @param {Boolean} [doNotTrigger] | ignore trigger + * @param sectorId * @private */ - exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { - if (doNotTrigger === undefined) { - doNotTrigger = false; - } - if (highlightEdges === undefined) { - highlightEdges = true; - } - - if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { - this._unselectAll(true); + exports._mergeThisWithFrozen = function(sectorId) { + // copy all nodes + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.sectors["frozen"][sectorId]["nodes"][nodeId] = this.nodes[nodeId]; + } } - // selectable allows the object to be selected. Override can be used if needed to bypass this. - if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { - object.select(); - this._addToSelection(object); - if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { - this._selectConnectedEdges(object); + // copy all edges (if not fully clustered, else there are no edges) + for (var edgeId in this.edges) { + if (this.edges.hasOwnProperty(edgeId)) { + this.sectors["frozen"][sectorId]["edges"][edgeId] = this.edges[edgeId]; } } - // do not select the object if selectable is false, only add it to selection to allow drag to work - else if (object.selected == false) { - this._addToSelection(object); - doNotTrigger = true; - } - else { - object.unselect(); - this._removeFromSelection(object); - } - if (doNotTrigger == false) { - this.emit('select', this.getSelection()); + // merge the nodeIndices + for (var i = 0; i < this.nodeIndices.length; i++) { + this.sectors["frozen"][sectorId]["nodeIndices"].push(this.nodeIndices[i]); } }; /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection + * This clusters the sector to one cluster. It was a single cluster before this process started so + * we revert to that state. The clusterToFit function with a maximum size of 1 node does this. * - * @param {Node || Edge} object * @private */ - exports._blurObject = function(object) { - if (object.hover == true) { - object.hover = false; - this.emit("blurNode",{node:object.id}); - } + exports._collapseThisToSingleCluster = function() { + this.clusterToFit(1,false); }; + /** - * This is called when someone clicks on a node. either select or deselect it. - * If there is an existing selection and we don't want to append to it, clear the existing selection + * We create a new active sector from the node that we want to open. * - * @param {Node || Edge} object + * @param node * @private */ - exports._hoverObject = function(object) { - if (object.hover == false) { - object.hover = true; - this._addToHover(object); - if (object instanceof Node) { - this.emit("hoverNode",{node:object.id}); - } - } - if (object instanceof Node) { - this._hoverConnectedEdges(object); - } + exports._addSector = function(node) { + // this is the currently active sector + var sector = this._sector(); + + // // this should allow me to select nodes from a frozen set. + // if (this.sectors['active'][sector]["nodes"].hasOwnProperty(node.id)) { + // console.log("the node is part of the active sector"); + // } + // else { + // console.log("I dont know what the fuck happened!!"); + // } + + // when we switch to a new sector, we remove the node that will be expanded from the current nodes list. + delete this.nodes[node.id]; + + var unqiueIdentifier = util.randomUUID(); + + // we fully freeze the currently active sector + this._freezeSector(sector); + + // we create a new active sector. This sector has the Id of the node to ensure uniqueness + this._createNewSector(unqiueIdentifier); + + // we add the active sector to the sectors array to be able to revert these steps later on + this._setActiveSector(unqiueIdentifier); + + // we redirect the global references to the new sector's references. this._sector() now returns unqiueIdentifier + this._switchToSector(this._sector()); + + // finally we add the node we removed from our previous active sector to the new active sector + this.nodes[node.id] = node; }; /** - * handles the selection part of the touch, only for navigation controls elements; - * Touch is triggered before tap, also before hold. Hold triggers after a while. - * This is the most responsive solution + * We close the sector that is currently open and revert back to the one before. + * If the active sector is the "default" sector, nothing happens. * - * @param {Object} pointer * @private */ - exports._handleTouch = function(pointer) { + exports._collapseSector = function() { + // the currently active sector + var sector = this._sector(); + + // we cannot collapse the default sector + if (sector != "default") { + if ((this.nodeIndices.length == 1) || + (this.sectors["active"][sector]["drawingNode"].width*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientWidth) || + (this.sectors["active"][sector]["drawingNode"].height*this.scale < this.constants.clustering.screenSizeThreshold * this.frame.canvas.clientHeight)) { + var previousSector = this._previousSector(); + + // we collapse the sector back to a single cluster + this._collapseThisToSingleCluster(); + + // we move the remaining nodes, edges and nodeIndices to the previous sector. + // This previous sector is the one we will reactivate + this._mergeThisWithFrozen(previousSector); + + // the previously active (frozen) sector now has all the data from the currently active sector. + // we can now delete the active sector. + this._deleteActiveSector(sector); + + // we activate the previously active (and currently frozen) sector. + this._activateSector(previousSector); + + // we load the references from the newly active sector into the global references + this._switchToSector(previousSector); + + // we forget the previously active sector because we reverted to the one before + this._forgetLastSector(); + + // finally, we update the node index list. + this._updateNodeIndexList(); + + // we refresh the list with calulation nodes and calculation node indices. + this._updateCalculationNodes(); + } + } }; /** - * handles the selection part of the tap; + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). * - * @param {Object} pointer + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction * @private */ - exports._handleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node, false); + exports._doInAllActiveSectors = function(runFunction,argument) { + var returnValues = []; + if (argument === undefined) { + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + returnValues.push( this[runFunction]() ); + } + } } else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge, false); - } - else { - this._unselectAll(); + for (var sector in this.sectors["active"]) { + if (this.sectors["active"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToActiveSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues.push( this[runFunction](args[0],args[1]) ); + } + else { + returnValues.push( this[runFunction](argument) ); + } + } } } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} - } - this.emit("click", properties); - this._redraw(); + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; }; /** - * handles the selection part of the double tap and opens a cluster if needed + * This runs a function in all active sectors. This is used in _redraw() and the _initializeForceCalculation(). * - * @param {Object} pointer + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we dont pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction * @private */ - exports._handleDoubleTap = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null && node !== undefined) { - // we reset the areaCenter here so the opening of the node will occur - this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), - "y" : this._YconvertDOMtoCanvas(pointer.y)}; - this.openCluster(node); + exports._doInSupportSector = function(runFunction,argument) { + var returnValues = false; + if (argument === undefined) { + this._switchToSupportSector(); + returnValues = this[runFunction](); } - var properties = this.getSelection(); - properties['pointer'] = { - DOM: {x: pointer.x, y: pointer.y}, - canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + else { + this._switchToSupportSector(); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + returnValues = this[runFunction](args[0],args[1]); + } + else { + returnValues = this[runFunction](argument); + } } - this.emit("doubleClick", properties); + // we revert the global references back to our active sector + this._loadLatestSector(); + return returnValues; }; /** - * Handle the onHold selection part + * This runs a function in all frozen sectors. This is used in the _redraw(). * - * @param pointer + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction * @private */ - exports._handleOnHold = function(pointer) { - var node = this._getNodeAt(pointer); - if (node != null) { - this._selectObject(node,true); + exports._doInAllFrozenSectors = function(runFunction,argument) { + if (argument === undefined) { + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + this[runFunction](); + } + } } else { - var edge = this._getEdgeAt(pointer); - if (edge != null) { - this._selectObject(edge,true); + for (var sector in this.sectors["frozen"]) { + if (this.sectors["frozen"].hasOwnProperty(sector)) { + // switch the global references to those of this sector + this._switchToFrozenSector(sector); + var args = Array.prototype.splice.call(arguments, 1); + if (args.length > 1) { + this[runFunction](args[0],args[1]); + } + else { + this[runFunction](argument); + } + } } } - this._redraw(); + this._loadLatestSector(); }; /** - * handle the onRelease event. These functions are here for the navigation controls module - * and data manipulation module. + * This runs a function in all sectors. This is used in the _redraw(). * - * @private + * @param {String} runFunction | This is the NAME of a function we want to call in all active sectors + * | we don't pass the function itself because then the "this" is the window object + * | instead of the Network object + * @param {*} [argument] | Optional: arguments to pass to the runFunction + * @private */ - exports._handleOnRelease = function(pointer) { - this._manipulationReleaseOverload(pointer); - this._navigationReleaseOverload(pointer); + exports._doInAllSectors = function(runFunction,argument) { + var args = Array.prototype.splice.call(arguments, 1); + if (argument === undefined) { + this._doInAllActiveSectors(runFunction); + this._doInAllFrozenSectors(runFunction); + } + else { + if (args.length > 1) { + this._doInAllActiveSectors(runFunction,args[0],args[1]); + this._doInAllFrozenSectors(runFunction,args[0],args[1]); + } + else { + this._doInAllActiveSectors(runFunction,argument); + this._doInAllFrozenSectors(runFunction,argument); + } + } }; - exports._manipulationReleaseOverload = function (pointer) {}; - exports._navigationReleaseOverload = function (pointer) {}; /** + * This clears the nodeIndices list. We cannot use this.nodeIndices = [] because we would break the link with the + * active sector. Thus we clear the nodeIndices in the active sector, then reconnect the this.nodeIndices to it. * - * retrieve the currently selected objects - * @return {{nodes: Array., edges: Array.}} selection + * @private */ - exports.getSelection = function() { - var nodeIds = this.getSelectedNodes(); - var edgeIds = this.getSelectedEdges(); - return {nodes:nodeIds, edges:edgeIds}; + exports._clearNodeIndexList = function() { + var sector = this._sector(); + this.sectors["active"][sector]["nodeIndices"] = []; + this.nodeIndices = this.sectors["active"][sector]["nodeIndices"]; }; + /** + * Draw the encompassing sector node * - * retrieve the currently selected nodes - * @return {String[]} selection An array with the ids of the - * selected nodes. + * @param ctx + * @param sectorType + * @private */ - exports.getSelectedNodes = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var nodeId in this.selectionObj.nodes) { - if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { - idArray.push(nodeId); + exports._drawSectorNodes = function(ctx,sectorType) { + var minY = 1e9, maxY = -1e9, minX = 1e9, maxX = -1e9, node; + for (var sector in this.sectors[sectorType]) { + if (this.sectors[sectorType].hasOwnProperty(sector)) { + if (this.sectors[sectorType][sector]["drawingNode"] !== undefined) { + + this._switchToSector(sector,sectorType); + + minY = 1e9; maxY = -1e9; minX = 1e9; maxX = -1e9; + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.resize(ctx); + if (minX > node.x - 0.5 * node.width) {minX = node.x - 0.5 * node.width;} + if (maxX < node.x + 0.5 * node.width) {maxX = node.x + 0.5 * node.width;} + if (minY > node.y - 0.5 * node.height) {minY = node.y - 0.5 * node.height;} + if (maxY < node.y + 0.5 * node.height) {maxY = node.y + 0.5 * node.height;} + } + } + node = this.sectors[sectorType][sector]["drawingNode"]; + node.x = 0.5 * (maxX + minX); + node.y = 0.5 * (maxY + minY); + node.width = 2 * (node.x - minX); + node.height = 2 * (node.y - minY); + node.options.radius = Math.sqrt(Math.pow(0.5*node.width,2) + Math.pow(0.5*node.height,2)); + node.setScale(this.scale); + node._drawCircle(ctx); } } } - return idArray }; - /** - * - * retrieve the currently selected edges - * @return {Array} selection An array with the ids of the - * selected nodes. - */ - exports.getSelectedEdges = function() { - var idArray = []; - if (this.constants.selectable == true) { - for (var edgeId in this.selectionObj.edges) { - if (this.selectionObj.edges.hasOwnProperty(edgeId)) { - idArray.push(edgeId); - } - } - } - return idArray; + exports._drawAllSectorNodes = function(ctx) { + this._drawSectorNodes(ctx,"frozen"); + this._drawSectorNodes(ctx,"active"); + this._loadLatestSector(); }; - /** - * select zero or more nodes DEPRICATED - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - */ - exports.setSelection = function() { - console.log("setSelection is deprecated. Please use selectNodes instead.") - }; +/***/ }, +/* 63 */ +/***/ function(module, exports, __webpack_require__) { + var Node = __webpack_require__(40); /** - * select zero or more nodes with the option to highlight edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. - * @param {boolean} [highlightEdges] + * This function can be called from the _doInAllSectors function + * + * @param object + * @param overlappingNodes + * @private */ - exports.selectNodes = function(selection, highlightEdges) { - var i, iMax, id; - - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; - - // first unselect any selected node - this._unselectAll(true); - - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; - - var node = this.nodes[id]; - if (!node) { - throw new RangeError('Node with id "' + id + '" not found'); + exports._getNodesOverlappingWith = function(object, overlappingNodes) { + var nodes = this.nodes; + for (var nodeId in nodes) { + if (nodes.hasOwnProperty(nodeId)) { + if (nodes[nodeId].isOverlappingWith(object)) { + overlappingNodes.push(nodeId); + } } - this._selectObject(node,true,true,highlightEdges,true); } - this.redraw(); + }; + + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllNodesOverlappingWith = function (object) { + var overlappingNodes = []; + this._doInAllActiveSectors("_getNodesOverlappingWith",object,overlappingNodes); + return overlappingNodes; }; /** - * select zero or more edges - * @param {Number[] | String[]} selection An array with the ids of the - * selected nodes. + * Return a position object in canvasspace from a single point in screenspace + * + * @param pointer + * @returns {{left: number, top: number, right: number, bottom: number}} + * @private */ - exports.selectEdges = function(selection) { - var i, iMax, id; + exports._pointerToPositionObject = function(pointer) { + var x = this._XconvertDOMtoCanvas(pointer.x); + var y = this._YconvertDOMtoCanvas(pointer.y); - if (!selection || (selection.length == undefined)) - throw 'Selection must be an array with ids'; + return { + left: x, + top: y, + right: x, + bottom: y + }; + }; - // first unselect any selected node - this._unselectAll(true); - for (i = 0, iMax = selection.length; i < iMax; i++) { - id = selection[i]; + /** + * Get the top node at the a specific point (like a click) + * + * @param {{x: Number, y: Number}} pointer + * @return {Node | null} node + * @private + */ + exports._getNodeAt = function (pointer) { + // we first check if this is an navigation controls element + var positionObject = this._pointerToPositionObject(pointer); + var overlappingNodes = this._getAllNodesOverlappingWith(positionObject); - var edge = this.edges[id]; - if (!edge) { - throw new RangeError('Edge with id "' + id + '" not found'); - } - this._selectObject(edge,true,true,false,true); + // if there are overlapping nodes, select the last one, this is the + // one which is drawn on top of the others + if (overlappingNodes.length > 0) { + return this.nodes[overlappingNodes[overlappingNodes.length - 1]]; + } + else { + return null; } - this.redraw(); }; + /** - * Validate the selection: remove ids of nodes which no longer exist + * retrieve all edges overlapping with given object, selector is around center + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes * @private */ - exports._updateSelection = function () { - for(var nodeId in this.selectionObj.nodes) { - if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { - if (!this.nodes.hasOwnProperty(nodeId)) { - delete this.selectionObj.nodes[nodeId]; - } - } - } - for(var edgeId in this.selectionObj.edges) { - if(this.selectionObj.edges.hasOwnProperty(edgeId)) { - if (!this.edges.hasOwnProperty(edgeId)) { - delete this.selectionObj.edges[edgeId]; + exports._getEdgesOverlappingWith = function (object, overlappingEdges) { + var edges = this.edges; + for (var edgeId in edges) { + if (edges.hasOwnProperty(edgeId)) { + if (edges[edgeId].isOverlappingWith(object)) { + overlappingEdges.push(edgeId); } } } }; -/***/ }, -/* 63 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); + /** + * retrieve all nodes overlapping with given object + * @param {Object} object An object with parameters left, top, right, bottom + * @return {Number[]} An array with id's of the overlapping nodes + * @private + */ + exports._getAllEdgesOverlappingWith = function (object) { + var overlappingEdges = []; + this._doInAllActiveSectors("_getEdgesOverlappingWith",object,overlappingEdges); + return overlappingEdges; + }; /** - * clears the toolbar div element of children + * Place holder. To implement change the _getNodeAt to a _getObjectAt. Have the _getObjectAt call + * _getNodeAt and _getEdgesAt, then priortize the selection to user preferences. * + * @param pointer + * @returns {null} * @private */ - exports._clearManipulatorBar = function() { - this._recursiveDOMDelete(this.manipulationDiv); - this.manipulationDOM = {}; + exports._getEdgeAt = function(pointer) { + var positionObject = this._pointerToPositionObject(pointer); + var overlappingEdges = this._getAllEdgesOverlappingWith(positionObject); - this._manipulationReleaseOverload = function () {}; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; - this.controlNodesActive = false; - this.freezeSimulation = false; + if (overlappingEdges.length > 0) { + return this.edges[overlappingEdges[overlappingEdges.length - 1]]; + } + else { + return null; + } }; + /** - * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore - * these functions to their original functionality, we saved them in this.cachedFunctions. - * This function restores these functions to their original function. + * Add object to the selection array. * + * @param obj * @private */ - exports._restoreOverloadedFunctions = function() { - for (var functionName in this.cachedFunctions) { - if (this.cachedFunctions.hasOwnProperty(functionName)) { - this[functionName] = this.cachedFunctions[functionName]; - delete this.cachedFunctions[functionName]; - } + exports._addToSelection = function(obj) { + if (obj instanceof Node) { + this.selectionObj.nodes[obj.id] = obj; + } + else { + this.selectionObj.edges[obj.id] = obj; } }; /** - * Enable or disable edit-mode. + * Add object to the selection array. * + * @param obj * @private */ - exports._toggleEditMode = function() { - this.editMode = !this.editMode; - var toolbar = this.manipulationDiv; - var closeDiv = this.closeDiv; - var editModeDiv = this.editModeDiv; - if (this.editMode == true) { - toolbar.style.display="block"; - closeDiv.style.display="block"; - editModeDiv.style.display="none"; - closeDiv.onclick = this._toggleEditMode.bind(this); + exports._addToHover = function(obj) { + if (obj instanceof Node) { + this.hoverObj.nodes[obj.id] = obj; } else { - toolbar.style.display="none"; - closeDiv.style.display="none"; - editModeDiv.style.display="block"; - closeDiv.onclick = null; + this.hoverObj.edges[obj.id] = obj; } - this._createManipulatorBar() }; + /** - * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. + * Remove a single option from selection. * + * @param {Object} obj * @private */ - exports._createManipulatorBar = function() { - // remove bound functions - if (this.boundFunction) { - this.off('select', this.boundFunction); + exports._removeFromSelection = function(obj) { + if (obj instanceof Node) { + delete this.selectionObj.nodes[obj.id]; } - - var locale = this.constants.locales[this.constants.locale]; - - if (this.edgeBeingEdited !== undefined) { - this.edgeBeingEdited._disableControlNodes(); - this.edgeBeingEdited = undefined; - this.selectedControlNode = null; - this.controlNodesActive = false; - this._redraw(); + else { + delete this.selectionObj.edges[obj.id]; } + }; - // restore overloaded functions - this._restoreOverloadedFunctions(); - - // resume calculation - this.freezeSimulation = false; - - // reset global variables - this.blockConnectingEdgeSelection = false; - this.forceAppendSelection = false; - this.manipulationDOM = {}; - - if (this.editMode == true) { - while (this.manipulationDiv.hasChildNodes()) { - this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); - } - - this.manipulationDOM['addNodeSpan'] = document.createElement('span'); - this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; - this.manipulationDOM['addNodeLabelSpan'] = document.createElement('span'); - this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; - this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); - - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - - this.manipulationDOM['addEdgeSpan'] = document.createElement('span'); - this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; - this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('span'); - this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; - this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); - - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; - - this.manipulationDOM['editNodeSpan'] = document.createElement('span'); - this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit'; - this.manipulationDOM['editNodeLabelSpan'] = document.createElement('span'); - this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; - this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); - this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); + /** + * Unselect all. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectAll = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + this.selectionObj.nodes[nodeId].unselect(); } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; - - this.manipulationDOM['editEdgeSpan'] = document.createElement('span'); - this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit'; - this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('span'); - this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; - this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); - this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + this.selectionObj.edges[edgeId].unselect(); } - if (this._selectionIsEmpty() == false) { - this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; + } - this.manipulationDOM['deleteSpan'] = document.createElement('span'); - this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; - this.manipulationDOM['deleteLabelSpan'] = document.createElement('span'); - this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; - this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); + this.selectionObj = {nodes:{},edges:{}}; - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); - this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); - } + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; + /** + * Unselect all clusters. The selectionObj is useful for this. + * + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._unselectClusters = function(doNotTrigger) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } - // bind the icons - this.manipulationDOM['addNodeSpan'].onclick = this._createAddNodeToolbar.bind(this); - this.manipulationDOM['addEdgeSpan'].onclick = this._createAddEdgeToolbar.bind(this); - if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { - this.manipulationDOM['editNodeSpan'].onclick = this._editNode.bind(this); - } - else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { - this.manipulationDOM['editEdgeSpan'].onclick = this._createEditEdgeToolbar.bind(this); - } - if (this._selectionIsEmpty() == false) { - this.manipulationDOM['deleteSpan'].onclick = this._deleteSelected.bind(this); + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + this.selectionObj.nodes[nodeId].unselect(); + this._removeFromSelection(this.selectionObj.nodes[nodeId]); + } } - this.closeDiv.onclick = this._toggleEditMode.bind(this); - - var me = this; - this.boundFunction = me._createManipulatorBar; - this.on('select', this.boundFunction); } - else { - while (this.editModeDiv.hasChildNodes()) { - this.editModeDiv.removeChild(this.editModeDiv.firstChild); - } - - this.manipulationDOM['editModeSpan'] = document.createElement('span'); - this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; - this.manipulationDOM['editModeLabelSpan'] = document.createElement('span'); - this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; - this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); - - this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); - this.manipulationDOM['editModeSpan'].onclick = this._toggleEditMode.bind(this); + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); } }; - /** - * Create the toolbar for adding Nodes + * return the number of selected nodes * + * @returns {number} * @private */ - exports._createAddNodeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - if (this.boundFunction) { - this.off('select', this.boundFunction); + exports._getSelectedNodeCount = function() { + var count = 0; + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } } - - var locale = this.constants.locales[this.constants.locale]; - - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('span'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('span'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - - this.manipulationDOM['descriptionSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - - // bind the icon - this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); - - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._addNode; - this.on('select', this.boundFunction); + return count; }; - /** - * create the toolbar to connect nodes + * return the selected node * + * @returns {number} * @private */ - exports._createAddEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this._unselectAll(true); - this.freezeSimulation = true; - - if (this.boundFunction) { - this.off('select', this.boundFunction); + exports._getSelectedNode = function() { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return this.selectionObj.nodes[nodeId]; + } } - - var locale = this.constants.locales[this.constants.locale]; - - this._unselectAll(); - this.forceAppendSelection = false; - this.blockConnectingEdgeSelection = true; - - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('span'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('span'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - - this.manipulationDOM['descriptionSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - - // bind the icon - this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); - - // we use the boundFunction so we can reference it when we unbind it from the "select" event. - var me = this; - this.boundFunction = me._handleConnect; - this.on('select', this.boundFunction); - - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; - this._handleTouch = this._handleConnect; - this._manipulationReleaseOverload = function () {}; - this._handleDragStart = function () {}; - this._handleDragEnd = this._finishConnect; - - // redraw to show the unselect - this._redraw(); + return null; }; /** - * create the toolbar to edit edges + * return the selected edge * + * @returns {number} * @private */ - exports._createEditEdgeToolbar = function() { - // clear the toolbar - this._clearManipulatorBar(); - this.controlNodesActive = true; - - if (this.boundFunction) { - this.off('select', this.boundFunction); + exports._getSelectedEdge = function() { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + return this.selectionObj.edges[edgeId]; + } } + return null; + }; - this.edgeBeingEdited = this._getSelectedEdge(); - this.edgeBeingEdited._enableControlNodes(); - - var locale = this.constants.locales[this.constants.locale]; - - this.manipulationDOM = {}; - this.manipulationDOM['backSpan'] = document.createElement('span'); - this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; - this.manipulationDOM['backLabelSpan'] = document.createElement('span'); - this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; - this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - - this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); - this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - - this.manipulationDOM['descriptionSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; - this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); - this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; - this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; - this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - - this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); - this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); - this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - - // bind the icon - this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); - - // temporarily overload functions - this.cachedFunctions["_handleTouch"] = this._handleTouch; - this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; - this.cachedFunctions["_handleTap"] = this._handleTap; - this.cachedFunctions["_handleDragStart"] = this._handleDragStart; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleTouch = this._selectControlNode; - this._handleTap = function () {}; - this._handleOnDrag = this._controlNodeDrag; - this._handleDragStart = function () {} - this._manipulationReleaseOverload = this._releaseControlNode; - // redraw to show the unselect - this._redraw(); + /** + * return the number of selected edges + * + * @returns {number} + * @private + */ + exports._getSelectedEdgeCount = function() { + var count = 0; + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; }; /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. + * return the number of selected objects. * + * @returns {number} * @private */ - exports._selectControlNode = function(pointer) { - this.edgeBeingEdited.controlNodes.from.unselect(); - this.edgeBeingEdited.controlNodes.to.unselect(); - this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); - if (this.selectedControlNode !== null) { - this.selectedControlNode.select(); - this.freezeSimulation = true; + exports._getSelectedObjectCount = function() { + var count = 0; + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + count += 1; + } } - this._redraw(); + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + count += 1; + } + } + return count; }; - /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. + * Check if anything is selected * + * @returns {boolean} * @private */ - exports._controlNodeDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { - this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); - this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); + exports._selectionIsEmpty = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + return false; + } } - this._redraw(); + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + return false; + } + } + return true; }; /** + * check if one of the selected nodes is a cluster. * - * @param pointer + * @returns {boolean} * @private */ - exports._releaseControlNode = function(pointer) { - var newNode = this._getNodeAt(pointer); - if (newNode !== null) { - if (this.edgeBeingEdited.controlNodes.from.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(newNode.id, this.edgeBeingEdited.to.id); - this.edgeBeingEdited.controlNodes.from.unselect(); - } - if (this.edgeBeingEdited.controlNodes.to.selected == true) { - this.edgeBeingEdited._restoreControlNodes(); - this._editEdge(this.edgeBeingEdited.from.id, newNode.id); - this.edgeBeingEdited.controlNodes.to.unselect(); + exports._clusterInSelection = function() { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (this.selectionObj.nodes[nodeId].clusterSize > 1) { + return true; + } } } - else { - this.edgeBeingEdited._restoreControlNodes(); + return false; + }; + + /** + * select the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._selectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.select(); + this._addToSelection(edge); } - this.freezeSimulation = false; - this._redraw(); }; /** - * the function bound to the selection event. It checks if you want to connect a cluster and changes the description - * to walk the user through the process. + * select the edges connected to the node that is being selected * + * @param {Node} node * @private */ - exports._handleConnect = function(pointer) { - if (this._getSelectedNodeCount() == 0) { - var node = this._getNodeAt(pointer); + exports._hoverConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.hover = true; + this._addToHover(edge); + } + }; - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]['createEdgeError']) - } - else { - this._selectObject(node,false); - var supportNodes = this.sectors['support']['nodes']; - // create a node the temporary line can look at - supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); - var targetNode = supportNodes['targetNode']; - targetNode.x = node.x; - targetNode.y = node.y; + /** + * unselect the edges connected to the node that is being selected + * + * @param {Node} node + * @private + */ + exports._unselectConnectedEdges = function(node) { + for (var i = 0; i < node.dynamicEdges.length; i++) { + var edge = node.dynamicEdges[i]; + edge.unselect(); + this._removeFromSelection(edge); + } + }; - // create a temporary edge - this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); - var connectionEdge = this.edges['connectionEdge']; - connectionEdge.from = node; - connectionEdge.connected = true; - connectionEdge.options.smoothCurves = {enabled: true, - dynamic: false, - type: "continuous", - roundness: 0.5 - }; - connectionEdge.selected = true; - connectionEdge.to = targetNode; - this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; - this._handleOnDrag = function(event) { - var pointer = this._getPointer(event.gesture.center); - var connectionEdge = this.edges['connectionEdge']; - connectionEdge.to.x = this._XconvertDOMtoCanvas(pointer.x); - connectionEdge.to.y = this._YconvertDOMtoCanvas(pointer.y); - }; - this.moving = true; - this.start(); - } + + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @param {Boolean} append + * @param {Boolean} [doNotTrigger] | ignore trigger + * @private + */ + exports._selectObject = function(object, append, doNotTrigger, highlightEdges, overrideSelectable) { + if (doNotTrigger === undefined) { + doNotTrigger = false; + } + if (highlightEdges === undefined) { + highlightEdges = true; + } + + if (this._selectionIsEmpty() == false && append == false && this.forceAppendSelection == false) { + this._unselectAll(true); + } + + // selectable allows the object to be selected. Override can be used if needed to bypass this. + if (object.selected == false && (this.constants.selectable == true || overrideSelectable)) { + object.select(); + this._addToSelection(object); + if (object instanceof Node && this.blockConnectingEdgeSelection == false && highlightEdges == true) { + this._selectConnectedEdges(object); } } - }; + // do not select the object if selectable is false, only add it to selection to allow drag to work + else if (object.selected == false) { + this._addToSelection(object); + doNotTrigger = true; + } + else { + object.unselect(); + this._removeFromSelection(object); + } - exports._finishConnect = function(event) { - if (this._getSelectedNodeCount() == 1) { - var pointer = this._getPointer(event.gesture.center); - // restore the drag function - this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; - delete this.cachedFunctions["_handleOnDrag"]; + if (doNotTrigger == false) { + this.emit('select', this.getSelection()); + } + }; - // remember the edge id - var connectFromId = this.edges['connectionEdge'].fromId; - // remove the temporary nodes and edge - delete this.edges['connectionEdge']; - delete this.sectors['support']['nodes']['targetNode']; - delete this.sectors['support']['nodes']['targetViaNode']; + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._blurObject = function(object) { + if (object.hover == true) { + object.hover = false; + this.emit("blurNode",{node:object.id}); + } + }; - var node = this._getNodeAt(pointer); - if (node != null) { - if (node.clusterSize > 1) { - alert(this.constants.locales[this.constants.locale]["createEdgeError"]) - } - else { - this._createEdge(connectFromId,node.id); - this._createManipulatorBar(); - } + /** + * This is called when someone clicks on a node. either select or deselect it. + * If there is an existing selection and we don't want to append to it, clear the existing selection + * + * @param {Node || Edge} object + * @private + */ + exports._hoverObject = function(object) { + if (object.hover == false) { + object.hover = true; + this._addToHover(object); + if (object instanceof Node) { + this.emit("hoverNode",{node:object.id}); } - this._unselectAll(); + } + if (object instanceof Node) { + this._hoverConnectedEdges(object); } }; /** - * Adds a node on the specified location + * handles the selection part of the touch, only for navigation controls elements; + * Touch is triggered before tap, also before hold. Hold triggers after a while. + * This is the most responsive solution + * + * @param {Object} pointer + * @private */ - exports._addNode = function() { - if (this._selectionIsEmpty() && this.editMode == true) { - var positionObject = this._pointerToPositionObject(this.pointerPosition); - var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; - if (this.triggerFunctions.add) { - if (this.triggerFunctions.add.length == 2) { - var me = this; - this.triggerFunctions.add(defaultData, function(finalizedData) { - me.nodesData.add(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for add does not support two arguments (data,callback)'); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } - else { - this.nodesData.add(defaultData); - this._createManipulatorBar(); - this.moving = true; - this.start(); - } - } + exports._handleTouch = function(pointer) { }; /** - * connect two nodes with a new edge. + * handles the selection part of the tap; * + * @param {Object} pointer * @private */ - exports._createEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.connect) { - if (this.triggerFunctions.connect.length == 2) { - var me = this; - this.triggerFunctions.connect(defaultData, function(finalizedData) { - me.edgesData.add(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for connect does not support two arguments (data,callback)'); - this.moving = true; - this.start(); - } + exports._handleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node, false); + } + else { + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge, false); } else { - this.edgesData.add(defaultData); - this.moving = true; - this.start(); + this._unselectAll(); } } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} + } + this.emit("click", properties); + this._redraw(); }; + /** - * connect two nodes with a new edge. + * handles the selection part of the double tap and opens a cluster if needed * + * @param {Object} pointer * @private */ - exports._editEdge = function(sourceNodeId,targetNodeId) { - if (this.editMode == true) { - var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; - if (this.triggerFunctions.editEdge) { - if (this.triggerFunctions.editEdge.length == 2) { - var me = this; - this.triggerFunctions.editEdge(defaultData, function(finalizedData) { - me.edgesData.update(finalizedData); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - this.moving = true; - this.start(); - } - } - else { - this.edgesData.update(defaultData); - this.moving = true; - this.start(); - } + exports._handleDoubleTap = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null && node !== undefined) { + // we reset the areaCenter here so the opening of the node will occur + this.areaCenter = {"x" : this._XconvertDOMtoCanvas(pointer.x), + "y" : this._YconvertDOMtoCanvas(pointer.y)}; + this.openCluster(node); + } + var properties = this.getSelection(); + properties['pointer'] = { + DOM: {x: pointer.x, y: pointer.y}, + canvas: {x: this._XconvertDOMtoCanvas(pointer.x), y: this._YconvertDOMtoCanvas(pointer.y)} } + this.emit("doubleClick", properties); }; + /** - * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * Handle the onHold selection part * + * @param pointer * @private */ - exports._editNode = function() { - if (this.triggerFunctions.edit && this.editMode == true) { - var node = this._getSelectedNode(); - var data = {id:node.id, - label: node.label, - group: node.options.group, - shape: node.options.shape, - color: { - background:node.options.color.background, - border:node.options.color.border, - highlight: { - background:node.options.color.highlight.background, - border:node.options.color.highlight.border - } - }}; - if (this.triggerFunctions.edit.length == 2) { - var me = this; - this.triggerFunctions.edit(data, function (finalizedData) { - me.nodesData.update(finalizedData); - me._createManipulatorBar(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for edit does not support two arguments (data, callback)'); - } + exports._handleOnHold = function(pointer) { + var node = this._getNodeAt(pointer); + if (node != null) { + this._selectObject(node,true); } else { - throw new Error('No edit function has been bound to this button'); + var edge = this._getEdgeAt(pointer); + if (edge != null) { + this._selectObject(edge,true); + } } + this._redraw(); }; + /** + * handle the onRelease event. These functions are here for the navigation controls module + * and data manipulation module. + * + * @private + */ + exports._handleOnRelease = function(pointer) { + this._manipulationReleaseOverload(pointer); + this._navigationReleaseOverload(pointer); + }; + exports._manipulationReleaseOverload = function (pointer) {}; + exports._navigationReleaseOverload = function (pointer) {}; /** - * delete everything in the selection * - * @private + * retrieve the currently selected objects + * @return {{nodes: Array., edges: Array.}} selection */ - exports._deleteSelected = function() { - if (!this._selectionIsEmpty() && this.editMode == true) { - if (!this._clusterInSelection()) { - var selectedNodes = this.getSelectedNodes(); - var selectedEdges = this.getSelectedEdges(); - if (this.triggerFunctions.del) { - var me = this; - var data = {nodes: selectedNodes, edges: selectedEdges}; - if (this.triggerFunctions.del.length == 2) { - this.triggerFunctions.del(data, function (finalizedData) { - me.edgesData.remove(finalizedData.edges); - me.nodesData.remove(finalizedData.nodes); - me._unselectAll(); - me.moving = true; - me.start(); - }); - } - else { - throw new Error('The function for delete does not support two arguments (data, callback)') - } - } - else { - this.edgesData.remove(selectedEdges); - this.nodesData.remove(selectedNodes); - this._unselectAll(); - this.moving = true; - this.start(); + exports.getSelection = function() { + var nodeIds = this.getSelectedNodes(); + var edgeIds = this.getSelectedEdges(); + return {nodes:nodeIds, edges:edgeIds}; + }; + + /** + * + * retrieve the currently selected nodes + * @return {String[]} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedNodes = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var nodeId in this.selectionObj.nodes) { + if (this.selectionObj.nodes.hasOwnProperty(nodeId)) { + idArray.push(nodeId); } } - else { - alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); + } + return idArray + }; + + /** + * + * retrieve the currently selected edges + * @return {Array} selection An array with the ids of the + * selected nodes. + */ + exports.getSelectedEdges = function() { + var idArray = []; + if (this.constants.selectable == true) { + for (var edgeId in this.selectionObj.edges) { + if (this.selectionObj.edges.hasOwnProperty(edgeId)) { + idArray.push(edgeId); + } } } + return idArray; }; -/***/ }, -/* 64 */ -/***/ function(module, exports, __webpack_require__) { + /** + * select zero or more nodes DEPRICATED + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + */ + exports.setSelection = function() { + console.log("setSelection is deprecated. Please use selectNodes instead.") + }; - var util = __webpack_require__(1); - var Hammer = __webpack_require__(45); - exports._cleanNavigation = function() { - // clean hammer bindings - if (this.navigationHammers.existing.length != 0) { - for (var i = 0; i < this.navigationHammers.existing.length; i++) { - this.navigationHammers.existing[i].dispose(); - } - this.navigationHammers.existing = []; - } + /** + * select zero or more nodes with the option to highlight edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. + * @param {boolean} [highlightEdges] + */ + exports.selectNodes = function(selection, highlightEdges) { + var i, iMax, id; + + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - this._navigationReleaseOverload = function () {}; + // first unselect any selected node + this._unselectAll(true); - // clean up previous navigation items - if (this.navigationDivs && this.navigationDivs['wrapper'] && this.navigationDivs['wrapper'].parentNode) { - this.navigationDivs['wrapper'].parentNode.removeChild(this.navigationDivs['wrapper']); + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; + + var node = this.nodes[id]; + if (!node) { + throw new RangeError('Node with id "' + id + '" not found'); + } + this._selectObject(node,true,true,highlightEdges,true); } + this.redraw(); }; + /** - * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation - * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent - * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. - * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. - * - * @private + * select zero or more edges + * @param {Number[] | String[]} selection An array with the ids of the + * selected nodes. */ - exports._loadNavigationElements = function() { - this._cleanNavigation(); + exports.selectEdges = function(selection) { + var i, iMax, id; - this.navigationDivs = {}; - var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; - var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; + if (!selection || (selection.length == undefined)) + throw 'Selection must be an array with ids'; - this.navigationDivs['wrapper'] = document.createElement('div'); - this.frame.appendChild(this.navigationDivs['wrapper']); + // first unselect any selected node + this._unselectAll(true); - for (var i = 0; i < navigationDivs.length; i++) { - this.navigationDivs[navigationDivs[i]] = document.createElement('div'); - this.navigationDivs[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; - this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); + for (i = 0, iMax = selection.length; i < iMax; i++) { + id = selection[i]; - var hammer = Hammer(this.navigationDivs[navigationDivs[i]], {prevent_default: true}); - hammer.on('touch', this[navigationDivActions[i]].bind(this)); - this.navigationHammers._new.push(hammer); + var edge = this.edges[id]; + if (!edge) { + throw new RangeError('Edge with id "' + id + '" not found'); + } + this._selectObject(edge,true,true,false,true); } - - this._navigationReleaseOverload = this._stopMovement; - - this.navigationHammers.existing = this.navigationHammers._new; + this.redraw(); }; - /** - * this stops all movement induced by the navigation buttons - * + * Validate the selection: remove ids of nodes which no longer exist * @private */ - exports._zoomExtent = function(event) { - this.zoomExtent({duration:700}); - event.stopPropagation(); + exports._updateSelection = function () { + for(var nodeId in this.selectionObj.nodes) { + if(this.selectionObj.nodes.hasOwnProperty(nodeId)) { + if (!this.nodes.hasOwnProperty(nodeId)) { + delete this.selectionObj.nodes[nodeId]; + } + } + } + for(var edgeId in this.selectionObj.edges) { + if(this.selectionObj.edges.hasOwnProperty(edgeId)) { + if (!this.edges.hasOwnProperty(edgeId)) { + delete this.selectionObj.edges[edgeId]; + } + } + } }; + +/***/ }, +/* 64 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Node = __webpack_require__(40); + var Edge = __webpack_require__(37); + /** - * this stops all movement induced by the navigation buttons + * clears the toolbar div element of children * * @private */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); - }; + exports._clearManipulatorBar = function() { + this._recursiveDOMDelete(this.manipulationDiv); + this.manipulationDOM = {}; + this._manipulationReleaseOverload = function () {}; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; + this.controlNodesActive = false; + this.freezeSimulation = false; + }; /** - * move the screen up - * By using the increments, instead of adding a fixed number to the translation, we keep fluent and - * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently - * To avoid this behaviour, we do the translation in the start loop. + * Manipulation UI temporarily overloads certain functions to extend or replace them. To be able to restore + * these functions to their original functionality, we saved them in this.cachedFunctions. + * This function restores these functions to their original function. * * @private */ - exports._moveUp = function(event) { - this.yIncrement = this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + exports._restoreOverloadedFunctions = function() { + for (var functionName in this.cachedFunctions) { + if (this.cachedFunctions.hasOwnProperty(functionName)) { + this[functionName] = this.cachedFunctions[functionName]; + delete this.cachedFunctions[functionName]; + } + } }; - /** - * move the screen down + * Enable or disable edit-mode. + * * @private */ - exports._moveDown = function(event) { - this.yIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); + exports._toggleEditMode = function() { + this.editMode = !this.editMode; + var toolbar = this.manipulationDiv; + var closeDiv = this.closeDiv; + var editModeDiv = this.editModeDiv; + if (this.editMode == true) { + toolbar.style.display="block"; + closeDiv.style.display="block"; + editModeDiv.style.display="none"; + closeDiv.onclick = this._toggleEditMode.bind(this); + } + else { + toolbar.style.display="none"; + closeDiv.style.display="none"; + editModeDiv.style.display="block"; + closeDiv.onclick = null; + } + this._createManipulatorBar() }; - /** - * move the screen left + * main function, creates the main toolbar. Removes functions bound to the select event. Binds all the buttons of the toolbar. + * * @private */ - exports._moveLeft = function(event) { - this.xIncrement = this.constants.keyboard.speed.x; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + exports._createManipulatorBar = function() { + // remove bound functions + if (this.boundFunction) { + this.off('select', this.boundFunction); + } + var locale = this.constants.locales[this.constants.locale]; - /** - * move the screen right - * @private - */ - exports._moveRight = function(event) { - this.xIncrement = -this.constants.keyboard.speed.y; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + if (this.edgeBeingEdited !== undefined) { + this.edgeBeingEdited._disableControlNodes(); + this.edgeBeingEdited = undefined; + this.selectedControlNode = null; + this.controlNodesActive = false; + this._redraw(); + } + // restore overloaded functions + this._restoreOverloadedFunctions(); - /** - * Zoom in, using the same method as the movement. - * @private - */ - exports._zoomIn = function(event) { - this.zoomIncrement = this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + // resume calculation + this.freezeSimulation = false; + // reset global variables + this.blockConnectingEdgeSelection = false; + this.forceAppendSelection = false; + this.manipulationDOM = {}; - /** - * Zoom out - * @private - */ - exports._zoomOut = function(event) { - this.zoomIncrement = -this.constants.keyboard.speed.zoom; - this.start(); // if there is no node movement, the calculation wont be done - event.preventDefault(); - }; + if (this.editMode == true) { + while (this.manipulationDiv.hasChildNodes()) { + this.manipulationDiv.removeChild(this.manipulationDiv.firstChild); + } + this.manipulationDOM['addNodeSpan'] = document.createElement('span'); + this.manipulationDOM['addNodeSpan'].className = 'network-manipulationUI add'; + this.manipulationDOM['addNodeLabelSpan'] = document.createElement('span'); + this.manipulationDOM['addNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addNodeLabelSpan'].innerHTML = locale['addNode']; + this.manipulationDOM['addNodeSpan'].appendChild(this.manipulationDOM['addNodeLabelSpan']); - /** - * Stop zooming and unhighlight the zoom controls - * @private - */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); - }; + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + this.manipulationDOM['addEdgeSpan'] = document.createElement('span'); + this.manipulationDOM['addEdgeSpan'].className = 'network-manipulationUI connect'; + this.manipulationDOM['addEdgeLabelSpan'] = document.createElement('span'); + this.manipulationDOM['addEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['addEdgeLabelSpan'].innerHTML = locale['addEdge']; + this.manipulationDOM['addEdgeSpan'].appendChild(this.manipulationDOM['addEdgeLabelSpan']); - /** - * Stop moving in the Y direction and unHighlight the up and down - * @private - */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); - }; + this.manipulationDiv.appendChild(this.manipulationDOM['addNodeSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['addEdgeSpan']); + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDOM['seperatorLineDiv2'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv2'].className = 'network-seperatorLine'; - /** - * Stop moving in the X direction and unHighlight left and right. - * @private - */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; + this.manipulationDOM['editNodeSpan'] = document.createElement('span'); + this.manipulationDOM['editNodeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editNodeLabelSpan'] = document.createElement('span'); + this.manipulationDOM['editNodeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editNodeLabelSpan'].innerHTML = locale['editNode']; + this.manipulationDOM['editNodeSpan'].appendChild(this.manipulationDOM['editNodeLabelSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv2']); + this.manipulationDiv.appendChild(this.manipulationDOM['editNodeSpan']); + } + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDOM['seperatorLineDiv3'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv3'].className = 'network-seperatorLine'; -/***/ }, -/* 65 */ -/***/ function(module, exports, __webpack_require__) { + this.manipulationDOM['editEdgeSpan'] = document.createElement('span'); + this.manipulationDOM['editEdgeSpan'].className = 'network-manipulationUI edit'; + this.manipulationDOM['editEdgeLabelSpan'] = document.createElement('span'); + this.manipulationDOM['editEdgeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editEdgeLabelSpan'].innerHTML = locale['editEdge']; + this.manipulationDOM['editEdgeSpan'].appendChild(this.manipulationDOM['editEdgeLabelSpan']); - exports._resetLevels = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - var node = this.nodes[nodeId]; - if (node.preassignedLevel == false) { - node.level = -1; - node.hierarchyEnumerated = false; - } + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv3']); + this.manipulationDiv.appendChild(this.manipulationDOM['editEdgeSpan']); } - } - }; + if (this._selectionIsEmpty() == false) { + this.manipulationDOM['seperatorLineDiv4'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv4'].className = 'network-seperatorLine'; - /** - * This is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly - * - * @private - */ - exports._setupHierarchicalLayout = function() { - if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { - // get the size of the largest hubs and check if the user has defined a level for a node. - var hubsize = 0; - var node, nodeId; - var definedLevel = false; - var undefinedLevel = false; + this.manipulationDOM['deleteSpan'] = document.createElement('span'); + this.manipulationDOM['deleteSpan'].className = 'network-manipulationUI delete'; + this.manipulationDOM['deleteLabelSpan'] = document.createElement('span'); + this.manipulationDOM['deleteLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['deleteLabelSpan'].innerHTML = locale['del']; + this.manipulationDOM['deleteSpan'].appendChild(this.manipulationDOM['deleteLabelSpan']); - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level != -1) { - definedLevel = true; - } - else { - undefinedLevel = true; - } - if (hubsize < node.edges.length) { - hubsize = node.edges.length; - } - } + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv4']); + this.manipulationDiv.appendChild(this.manipulationDOM['deleteSpan']); } - // if the user defined some levels but not all, alert and run without hierarchical layout - if (undefinedLevel == true && definedLevel == true) { - throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); - this.zoomExtent(undefined,true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } + + // bind the icons + this.manipulationDOM['addNodeSpan'].onclick = this._createAddNodeToolbar.bind(this); + this.manipulationDOM['addEdgeSpan'].onclick = this._createAddEdgeToolbar.bind(this); + if (this._getSelectedNodeCount() == 1 && this.triggerFunctions.edit) { + this.manipulationDOM['editNodeSpan'].onclick = this._editNode.bind(this); } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + else if (this._getSelectedEdgeCount() == 1 && this._getSelectedNodeCount() == 0) { + this.manipulationDOM['editEdgeSpan'].onclick = this._createEditEdgeToolbar.bind(this); + } + if (this._selectionIsEmpty() == false) { + this.manipulationDOM['deleteSpan'].onclick = this._deleteSelected.bind(this); + } + this.closeDiv.onclick = this._toggleEditMode.bind(this); - // define levels if undefined by the users. Based on hubsize - if (undefinedLevel == true) { - if (this.constants.hierarchicalLayout.layout == "hubsize") { - this._determineLevels(hubsize); - } - else { - this._determineLevelsDirected(false); - } + var me = this; + this.boundFunction = me._createManipulatorBar; + this.on('select', this.boundFunction); + } + else { + while (this.editModeDiv.hasChildNodes()) { + this.editModeDiv.removeChild(this.editModeDiv.firstChild); + } - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); + this.manipulationDOM['editModeSpan'] = document.createElement('span'); + this.manipulationDOM['editModeSpan'].className = 'network-manipulationUI edit editmode'; + this.manipulationDOM['editModeLabelSpan'] = document.createElement('span'); + this.manipulationDOM['editModeLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['editModeLabelSpan'].innerHTML = locale['edit']; + this.manipulationDOM['editModeSpan'].appendChild(this.manipulationDOM['editModeLabelSpan']); - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); + this.editModeDiv.appendChild(this.manipulationDOM['editModeSpan']); - // start the simulation. - this.start(); - } + this.manipulationDOM['editModeSpan'].onclick = this._toggleEditMode.bind(this); } }; + /** - * This function places the nodes on the canvas based on the hierarchial distribution. + * Create the toolbar for adding Nodes * - * @param {Object} distribution | obtained by the function this._getDistribution() * @private */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + exports._createAddNodeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + if (this.boundFunction) { + this.off('select', this.boundFunction); + } - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + var locale = this.constants.locales[this.constants.locale]; - for (nodeId in distribution[level].nodes) { - if (distribution[level].nodes.hasOwnProperty(nodeId)) { - node = distribution[level].nodes[nodeId]; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (node.xFixed) { - node.x = distribution[level].minPos; - node.xFixed = false; + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('span'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('span'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } - } - } + this.manipulationDOM['descriptionSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['addDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); + + // bind the icon + this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); + + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._addNode; + this.on('select', this.boundFunction); }; /** - * This function get the distribution of levels based on hubsize + * create the toolbar to connect nodes * - * @returns {Object} * @private */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; + exports._createAddEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this._unselectAll(true); + this.freezeSimulation = true; - // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. - // the fix of X is removed after the x value has been set. - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.xFixed = true; - node.yFixed = true; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - else { - node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; - } - if (distribution[node.level] === undefined) { - distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; - } - distribution[node.level].amount += 1; - distribution[node.level].nodes[nodeId] = node; - } + if (this.boundFunction) { + this.off('select', this.boundFunction); } - // determine the largest amount of nodes of all levels - var maxCount = 0; - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - if (maxCount < distribution[level].amount) { - maxCount = distribution[level].amount; - } - } - } + var locale = this.constants.locales[this.constants.locale]; + + this._unselectAll(); + this.forceAppendSelection = false; + this.blockConnectingEdgeSelection = true; + + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('span'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('span'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + + this.manipulationDOM['descriptionSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['edgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); + + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - // set the initial position and spacing of each nodes accordingly - for (level in distribution) { - if (distribution.hasOwnProperty(level)) { - distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; - distribution[level].nodeSpacing /= (distribution[level].amount + 1); - distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); - } - } + // bind the icon + this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); - return distribution; - }; + // we use the boundFunction so we can reference it when we unbind it from the "select" event. + var me = this; + this.boundFunction = me._handleConnect; + this.on('select', this.boundFunction); + + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleDragEnd"] = this._handleDragEnd; + this._handleTouch = this._handleConnect; + this._manipulationReleaseOverload = function () {}; + this._handleDragStart = function () {}; + this._handleDragEnd = this._finishConnect; + // redraw to show the unselect + this._redraw(); + }; /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * create the toolbar to edit edges * - * @param hubsize * @private */ - exports._determineLevels = function(hubsize) { - var nodeId, node; + exports._createEditEdgeToolbar = function() { + // clear the toolbar + this._clearManipulatorBar(); + this.controlNodesActive = true; - // determine hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.edges.length == hubsize) { - node.level = 0; - } - } + if (this.boundFunction) { + this.off('select', this.boundFunction); } - // branch from hubs - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - if (node.level == 0) { - this._setLevel(1,node.edges,node.id); - } - } - } - }; + this.edgeBeingEdited = this._getSelectedEdge(); + this.edgeBeingEdited._enableControlNodes(); + + var locale = this.constants.locales[this.constants.locale]; + + this.manipulationDOM = {}; + this.manipulationDOM['backSpan'] = document.createElement('span'); + this.manipulationDOM['backSpan'].className = 'network-manipulationUI back'; + this.manipulationDOM['backLabelSpan'] = document.createElement('span'); + this.manipulationDOM['backLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['backLabelSpan'].innerHTML = locale['back']; + this.manipulationDOM['backSpan'].appendChild(this.manipulationDOM['backLabelSpan']); + this.manipulationDOM['seperatorLineDiv1'] = document.createElement('div'); + this.manipulationDOM['seperatorLineDiv1'].className = 'network-seperatorLine'; + this.manipulationDOM['descriptionSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionSpan'].className = 'network-manipulationUI none'; + this.manipulationDOM['descriptionLabelSpan'] = document.createElement('span'); + this.manipulationDOM['descriptionLabelSpan'].className = 'network-manipulationLabel'; + this.manipulationDOM['descriptionLabelSpan'].innerHTML = locale['editEdgeDescription']; + this.manipulationDOM['descriptionSpan'].appendChild(this.manipulationDOM['descriptionLabelSpan']); - /** - * this function allocates nodes in levels based on the direction of the edges - * - * @param hubsize - * @private - */ - exports._determineLevelsDirected = function() { - var nodeId, node, firstNode; - var minLevel = 10000; + this.manipulationDiv.appendChild(this.manipulationDOM['backSpan']); + this.manipulationDiv.appendChild(this.manipulationDOM['seperatorLineDiv1']); + this.manipulationDiv.appendChild(this.manipulationDOM['descriptionSpan']); - // set first node to source - firstNode = this.nodes[this.nodeIndices[0]]; - firstNode.level = minLevel; - this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + // bind the icon + this.manipulationDOM['backSpan'].onclick = this._createManipulatorBar.bind(this); - // get the minimum level - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - minLevel = node.level < minLevel ? node.level : minLevel; - } - } + // temporarily overload functions + this.cachedFunctions["_handleTouch"] = this._handleTouch; + this.cachedFunctions["_manipulationReleaseOverload"] = this._manipulationReleaseOverload; + this.cachedFunctions["_handleTap"] = this._handleTap; + this.cachedFunctions["_handleDragStart"] = this._handleDragStart; + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleTouch = this._selectControlNode; + this._handleTap = function () {}; + this._handleOnDrag = this._controlNodeDrag; + this._handleDragStart = function () {} + this._manipulationReleaseOverload = this._releaseControlNode; - // subtract the minimum from the set so we have a range starting from 0 - for (nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - node = this.nodes[nodeId]; - node.level -= minLevel; - } - } + // redraw to show the unselect + this._redraw(); }; /** - * Since hierarchical layout does not support: - * - smooth curves (based on the physics), - * - clustering (based on dynamic node counts) - * - * We disable both features so there will be no problems. + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. * * @private */ - exports._changeConstants = function() { - this.constants.clustering.enabled = false; - this.constants.physics.barnesHut.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this._loadSelectedForceSolver(); - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.dynamic = false; - } - this._configureSmoothCurves(); - - var config = this.constants.hierarchicalLayout; - config.levelSeparation = Math.abs(config.levelSeparation); - if (config.direction == "RL" || config.direction == "DU") { - config.levelSeparation *= -1; - } - - if (config.direction == "RL" || config.direction == "LR") { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "vertical"; - } - } - else { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } + exports._selectControlNode = function(pointer) { + this.edgeBeingEdited.controlNodes.from.unselect(); + this.edgeBeingEdited.controlNodes.to.unselect(); + this.selectedControlNode = this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(pointer.x),this._YconvertDOMtoCanvas(pointer.y)); + if (this.selectedControlNode !== null) { + this.selectedControlNode.select(); + this.freezeSimulation = true; } + this._redraw(); }; /** - * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes - * on a X position that ensures there will be no overlap. + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. * - * @param edges - * @param parentId - * @param distribution - * @param parentLevel * @private */ - exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; - } - - // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. - var nodeMoved = false; - if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { - if (childNode.xFixed && childNode.level > parentLevel) { - childNode.xFixed = false; - childNode.x = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; - } - } - - if (nodeMoved == true) { - distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; - if (childNode.edges.length > 1) { - this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); - } - } + exports._controlNodeDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + if (this.selectedControlNode !== null && this.selectedControlNode !== undefined) { + this.selectedControlNode.x = this._XconvertDOMtoCanvas(pointer.x); + this.selectedControlNode.y = this._YconvertDOMtoCanvas(pointer.y); } + this._redraw(); }; /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. * - * @param level - * @param edges - * @param parentId + * @param pointer * @private */ - exports._setLevel = function(level, edges, parentId) { - for (var i = 0; i < edges.length; i++) { - var childNode = null; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - } - else { - childNode = edges[i].to; + exports._releaseControlNode = function(pointer) { + var newNode = this._getNodeAt(pointer); + if (newNode !== null) { + if (this.edgeBeingEdited.controlNodes.from.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(newNode.id, this.edgeBeingEdited.to.id); + this.edgeBeingEdited.controlNodes.from.unselect(); } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } + if (this.edgeBeingEdited.controlNodes.to.selected == true) { + this.edgeBeingEdited._restoreControlNodes(); + this._editEdge(this.edgeBeingEdited.from.id, newNode.id); + this.edgeBeingEdited.controlNodes.to.unselect(); } } + else { + this.edgeBeingEdited._restoreControlNodes(); + } + this.freezeSimulation = false; + this._redraw(); }; - /** - * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * the function bound to the selection event. It checks if you want to connect a cluster and changes the description + * to walk the user through the process. * - * @param level - * @param edges - * @param parentId * @private */ - exports._setLevelDirected = function(level, edges, parentId) { - this.nodes[parentId].hierarchyEnumerated = true; - var childNode, direction; - for (var i = 0; i < edges.length; i++) { - direction = 1; - if (edges[i].toId == parentId) { - childNode = edges[i].from; - direction = -1; - } - else { - childNode = edges[i].to; - } - if (childNode.level == -1) { - childNode.level = level + direction; - } - } + exports._handleConnect = function(pointer) { + if (this._getSelectedNodeCount() == 0) { + var node = this._getNodeAt(pointer); - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]['createEdgeError']) + } + else { + this._selectObject(node,false); + var supportNodes = this.sectors['support']['nodes']; - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + // create a node the temporary line can look at + supportNodes['targetNode'] = new Node({id:'targetNode'},{},{},this.constants); + var targetNode = supportNodes['targetNode']; + targetNode.x = node.x; + targetNode.y = node.y; + + // create a temporary edge + this.edges['connectionEdge'] = new Edge({id:"connectionEdge",from:node.id,to:targetNode.id}, this, this.constants); + var connectionEdge = this.edges['connectionEdge']; + connectionEdge.from = node; + connectionEdge.connected = true; + connectionEdge.options.smoothCurves = {enabled: true, + dynamic: false, + type: "continuous", + roundness: 0.5 + }; + connectionEdge.selected = true; + connectionEdge.to = targetNode; + + this.cachedFunctions["_handleOnDrag"] = this._handleOnDrag; + this._handleOnDrag = function(event) { + var pointer = this._getPointer(event.gesture.center); + var connectionEdge = this.edges['connectionEdge']; + connectionEdge.to.x = this._XconvertDOMtoCanvas(pointer.x); + connectionEdge.to.y = this._YconvertDOMtoCanvas(pointer.y); + }; + + this.moving = true; + this.start(); + } } } }; + exports._finishConnect = function(event) { + if (this._getSelectedNodeCount() == 1) { + var pointer = this._getPointer(event.gesture.center); + // restore the drag function + this._handleOnDrag = this.cachedFunctions["_handleOnDrag"]; + delete this.cachedFunctions["_handleOnDrag"]; - /** - * Unfix nodes - * - * @private - */ - exports._restoreNodes = function() { - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.nodes[nodeId].xFixed = false; - this.nodes[nodeId].yFixed = false; + // remember the edge id + var connectFromId = this.edges['connectionEdge'].fromId; + + // remove the temporary nodes and edge + delete this.edges['connectionEdge']; + delete this.sectors['support']['nodes']['targetNode']; + delete this.sectors['support']['nodes']['targetViaNode']; + + var node = this._getNodeAt(pointer); + if (node != null) { + if (node.clusterSize > 1) { + alert(this.constants.locales[this.constants.locale]["createEdgeError"]) + } + else { + this._createEdge(connectFromId,node.id); + this._createManipulatorBar(); + } } + this._unselectAll(); } }; -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var RepulsionMixin = __webpack_require__(68); - var HierarchialRepulsionMixin = __webpack_require__(69); - var BarnesHutMixin = __webpack_require__(70); - /** - * Toggling barnes Hut calculation on and off. - * - * @private + * Adds a node on the specified location */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); + exports._addNode = function() { + if (this._selectionIsEmpty() && this.editMode == true) { + var positionObject = this._pointerToPositionObject(this.pointerPosition); + var defaultData = {id:util.randomUUID(),x:positionObject.left,y:positionObject.top,label:"new",allowedToMoveX:true,allowedToMoveY:true}; + if (this.triggerFunctions.add) { + if (this.triggerFunctions.add.length == 2) { + var me = this; + this.triggerFunctions.add(defaultData, function(finalizedData) { + me.nodesData.add(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for add does not support two arguments (data,callback)'); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } + else { + this.nodesData.add(defaultData); + this._createManipulatorBar(); + this.moving = true; + this.start(); + } + } }; /** - * This loads the node force solver based on the barnes hut or repulsion algorithm + * connect two nodes with a new edge. * * @private */ - exports._loadSelectedForceSolver = function () { - // this overloads the this._calculateNodeForces - if (this.constants.physics.barnesHut.enabled == true) { - this._clearMixin(RepulsionMixin); - this._clearMixin(HierarchialRepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.barnesHut.centralGravity; - this.constants.physics.springLength = this.constants.physics.barnesHut.springLength; - this.constants.physics.springConstant = this.constants.physics.barnesHut.springConstant; - this.constants.physics.damping = this.constants.physics.barnesHut.damping; - - this._loadMixin(BarnesHutMixin); - } - else if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._clearMixin(BarnesHutMixin); - this._clearMixin(RepulsionMixin); - - this.constants.physics.centralGravity = this.constants.physics.hierarchicalRepulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.hierarchicalRepulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.hierarchicalRepulsion.springConstant; - this.constants.physics.damping = this.constants.physics.hierarchicalRepulsion.damping; - - this._loadMixin(HierarchialRepulsionMixin); - } - else { - this._clearMixin(BarnesHutMixin); - this._clearMixin(HierarchialRepulsionMixin); - this.barnesHutTree = undefined; - - this.constants.physics.centralGravity = this.constants.physics.repulsion.centralGravity; - this.constants.physics.springLength = this.constants.physics.repulsion.springLength; - this.constants.physics.springConstant = this.constants.physics.repulsion.springConstant; - this.constants.physics.damping = this.constants.physics.repulsion.damping; - - this._loadMixin(RepulsionMixin); + exports._createEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.connect) { + if (this.triggerFunctions.connect.length == 2) { + var me = this; + this.triggerFunctions.connect(defaultData, function(finalizedData) { + me.edgesData.add(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for connect does not support two arguments (data,callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.add(defaultData); + this.moving = true; + this.start(); + } } }; /** - * Before calculating the forces, we check if we need to cluster to keep up performance and we check - * if there is more than one node. If it is just one node, we dont calculate anything. + * connect two nodes with a new edge. * * @private */ - exports._initializeForceCalculation = function () { - // stop calculation if there is only one node - if (this.nodeIndices.length == 1) { - this.nodes[this.nodeIndices[0]]._setForce(0, 0); - } - else { - // if there are too many nodes on screen, we cluster without repositioning - if (this.nodeIndices.length > this.constants.clustering.clusterThreshold && this.constants.clustering.enabled == true) { - this.clusterToFit(this.constants.clustering.reduceToNodes, false); + exports._editEdge = function(sourceNodeId,targetNodeId) { + if (this.editMode == true) { + var defaultData = {id: this.edgeBeingEdited.id, from:sourceNodeId, to:targetNodeId}; + if (this.triggerFunctions.editEdge) { + if (this.triggerFunctions.editEdge.length == 2) { + var me = this; + this.triggerFunctions.editEdge(defaultData, function(finalizedData) { + me.edgesData.update(finalizedData); + me.moving = true; + me.start(); + }); + } + else { + throw new Error('The function for edit does not support two arguments (data, callback)'); + this.moving = true; + this.start(); + } + } + else { + this.edgesData.update(defaultData); + this.moving = true; + this.start(); } - - // we now start the force calculation - this._calculateForces(); } }; - /** - * Calculate the external forces acting on the nodes - * Forces are caused by: edges, repulsing forces between nodes, gravity + * Create the toolbar to edit the selected node. The label and the color can be changed. Other colors are derived from the chosen color. + * * @private */ - exports._calculateForces = function () { - // Gravity is required to keep separated groups from floating off - // the forces are reset to zero in this loop by using _setForce instead - // of _addForce - - this._calculateGravitationalForces(); - this._calculateNodeForces(); - - if (this.constants.physics.springConstant > 0) { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this._calculateSpringForcesWithSupport(); + exports._editNode = function() { + if (this.triggerFunctions.edit && this.editMode == true) { + var node = this._getSelectedNode(); + var data = {id:node.id, + label: node.label, + group: node.options.group, + shape: node.options.shape, + color: { + background:node.options.color.background, + border:node.options.color.border, + highlight: { + background:node.options.color.highlight.background, + border:node.options.color.highlight.border + } + }}; + if (this.triggerFunctions.edit.length == 2) { + var me = this; + this.triggerFunctions.edit(data, function (finalizedData) { + me.nodesData.update(finalizedData); + me._createManipulatorBar(); + me.moving = true; + me.start(); + }); } else { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } + throw new Error('The function for edit does not support two arguments (data, callback)'); } } + else { + throw new Error('No edit function has been bound to this button'); + } }; + + /** - * Smooth curves are created by adding invisible nodes in the center of the edges. These nodes are also - * handled in the calculateForces function. We then use a quadratic curve with the center node as control. - * This function joins the datanodes and invisible (called support) nodes into one object. - * We do this so we do not contaminate this.nodes with the support nodes. + * delete everything in the selection * * @private */ - exports._updateCalculationNodes = function () { - if (this.constants.smoothCurves.enabled == true && this.constants.smoothCurves.dynamic == true) { - this.calculationNodes = {}; - this.calculationNodeIndices = []; - - for (var nodeId in this.nodes) { - if (this.nodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId] = this.nodes[nodeId]; - } - } - var supportNodes = this.sectors['support']['nodes']; - for (var supportNodeId in supportNodes) { - if (supportNodes.hasOwnProperty(supportNodeId)) { - if (this.edges.hasOwnProperty(supportNodes[supportNodeId].parentEdgeId)) { - this.calculationNodes[supportNodeId] = supportNodes[supportNodeId]; + exports._deleteSelected = function() { + if (!this._selectionIsEmpty() && this.editMode == true) { + if (!this._clusterInSelection()) { + var selectedNodes = this.getSelectedNodes(); + var selectedEdges = this.getSelectedEdges(); + if (this.triggerFunctions.del) { + var me = this; + var data = {nodes: selectedNodes, edges: selectedEdges}; + if (this.triggerFunctions.del.length == 2) { + this.triggerFunctions.del(data, function (finalizedData) { + me.edgesData.remove(finalizedData.edges); + me.nodesData.remove(finalizedData.nodes); + me._unselectAll(); + me.moving = true; + me.start(); + }); } else { - supportNodes[supportNodeId]._setForce(0, 0); + throw new Error('The function for delete does not support two arguments (data, callback)') } } + else { + this.edgesData.remove(selectedEdges); + this.nodesData.remove(selectedNodes); + this._unselectAll(); + this.moving = true; + this.start(); + } + } + else { + alert(this.constants.locales[this.constants.locale]["deleteClusterError"]); } + } + }; - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } + +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var Hammer = __webpack_require__(45); + + exports._cleanNavigation = function() { + // clean hammer bindings + if (this.navigationHammers.existing.length != 0) { + for (var i = 0; i < this.navigationHammers.existing.length; i++) { + this.navigationHammers.existing[i].dispose(); } + this.navigationHammers.existing = []; } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; + + this._navigationReleaseOverload = function () {}; + + // clean up previous navigation items + if (this.navigationDivs && this.navigationDivs['wrapper'] && this.navigationDivs['wrapper'].parentNode) { + this.navigationDivs['wrapper'].parentNode.removeChild(this.navigationDivs['wrapper']); } }; - /** - * this function applies the central gravity effect to keep groups from floating off + * Creation of the navigation controls nodes. They are drawn over the rest of the nodes and are not affected by scale and translation + * they have a triggerFunction which is called on click. If the position of the navigation controls is dependent + * on this.frame.canvas.clientWidth or this.frame.canvas.clientHeight, we flag horizontalAlignLeft and verticalAlignTop false. + * This means that the location will be corrected by the _relocateNavigation function on a size change of the canvas. * * @private */ - exports._calculateGravitationalForces = function () { - var dx, dy, distance, node, i; - var nodes = this.calculationNodes; - var gravity = this.constants.physics.centralGravity; - var gravityForce = 0; + exports._loadNavigationElements = function() { + this._cleanNavigation(); - for (i = 0; i < this.calculationNodeIndices.length; i++) { - node = nodes[this.calculationNodeIndices[i]]; - node.damping = this.constants.physics.damping; // possibly add function to alter damping properties of clusters. - // gravity does not apply when we are in a pocket sector - if (this._sector() == "default" && gravity != 0) { - dx = -node.x; - dy = -node.y; - distance = Math.sqrt(dx * dx + dy * dy); + this.navigationDivs = {}; + var navigationDivs = ['up','down','left','right','zoomIn','zoomOut','zoomExtends']; + var navigationDivActions = ['_moveUp','_moveDown','_moveLeft','_moveRight','_zoomIn','_zoomOut','_zoomExtent']; - gravityForce = (distance == 0) ? 0 : (gravity / distance); - node.fx = dx * gravityForce; - node.fy = dy * gravityForce; - } - else { - node.fx = 0; - node.fy = 0; - } + this.navigationDivs['wrapper'] = document.createElement('div'); + this.frame.appendChild(this.navigationDivs['wrapper']); + + for (var i = 0; i < navigationDivs.length; i++) { + this.navigationDivs[navigationDivs[i]] = document.createElement('div'); + this.navigationDivs[navigationDivs[i]].className = 'network-navigation ' + navigationDivs[i]; + this.navigationDivs['wrapper'].appendChild(this.navigationDivs[navigationDivs[i]]); + + var hammer = Hammer(this.navigationDivs[navigationDivs[i]], {prevent_default: true}); + hammer.on('touch', this[navigationDivActions[i]].bind(this)); + this.navigationHammers._new.push(hammer); } - }; + this._navigationReleaseOverload = this._stopMovement; + this.navigationHammers.existing = this.navigationHammers._new; + }; /** - * this function calculates the effects of the springs in the case of unsmooth curves. + * this stops all movement induced by the navigation buttons * * @private */ - exports._calculateSpringForces = function () { - var edgeLength, edge, edgeId; - var dx, dy, fx, fy, springForce, distance; - var edges = this.edges; - - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - edgeLength = edge.physics.springLength; - // this implies that the edges between big clusters are longer - edgeLength += (edge.to.clusterSize + edge.from.clusterSize - 2) * this.constants.clustering.edgeGrowth; + exports._zoomExtent = function(event) { + this.zoomExtent({duration:700}); + event.stopPropagation(); + }; - dx = (edge.from.x - edge.to.x); - dy = (edge.from.y - edge.to.y); - distance = Math.sqrt(dx * dx + dy * dy); + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; - if (distance == 0) { - distance = 0.01; - } - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + /** + * move the screen up + * By using the increments, instead of adding a fixed number to the translation, we keep fluent and + * instant movement. The onKeypress event triggers immediately, then pauses, then triggers frequently + * To avoid this behaviour, we do the translation in the start loop. + * + * @private + */ + exports._moveUp = function(event) { + this.yIncrement = this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - fx = dx * springForce; - fy = dy * springForce; - edge.from.fx += fx; - edge.from.fy += fy; - edge.to.fx -= fx; - edge.to.fy -= fy; - } - } - } - } + /** + * move the screen down + * @private + */ + exports._moveDown = function(event) { + this.yIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); }; + /** + * move the screen left + * @private + */ + exports._moveLeft = function(event) { + this.xIncrement = this.constants.keyboard.speed.x; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; /** - * This function calculates the springforces on the nodes, accounting for the support nodes. - * + * move the screen right * @private */ - exports._calculateSpringForcesWithSupport = function () { - var edgeLength, edge, edgeId, combinedClusterSize; - var edges = this.edges; + exports._moveRight = function(event) { + this.xIncrement = -this.constants.keyboard.speed.y; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - // forces caused by the edges, modelled as springs - for (edgeId in edges) { - if (edges.hasOwnProperty(edgeId)) { - edge = edges[edgeId]; - if (edge.connected) { - // only calculate forces if nodes are in the same sector - if (this.nodes.hasOwnProperty(edge.toId) && this.nodes.hasOwnProperty(edge.fromId)) { - if (edge.via != null) { - var node1 = edge.to; - var node2 = edge.via; - var node3 = edge.from; - edgeLength = edge.physics.springLength; + /** + * Zoom in, using the same method as the movement. + * @private + */ + exports._zoomIn = function(event) { + this.zoomIncrement = this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); + }; - combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - // this implies that the edges between big clusters are longer - edgeLength += combinedClusterSize * this.constants.clustering.edgeGrowth; - this._calculateSpringForce(node1, node2, 0.5 * edgeLength); - this._calculateSpringForce(node2, node3, 0.5 * edgeLength); - } - } - } - } - } + /** + * Zoom out + * @private + */ + exports._zoomOut = function(event) { + this.zoomIncrement = -this.constants.keyboard.speed.zoom; + this.start(); // if there is no node movement, the calculation wont be done + event.preventDefault(); }; /** - * This is the code actually performing the calculation for the function above. It is split out to avoid repetition. - * - * @param node1 - * @param node2 - * @param edgeLength + * Stop zooming and unhighlight the zoom controls * @private */ - exports._calculateSpringForce = function (node1, node2, edgeLength) { - var dx, dy, fx, fy, springForce, distance; - - dx = (node1.x - node2.x); - dy = (node1.y - node2.y); - distance = Math.sqrt(dx * dx + dy * dy); + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; - if (distance == 0) { - distance = 0.01; - } - // the 1/distance is so the fx and fy can be calculated without sine or cosine. - springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; - fx = dx * springForce; - fy = dy * springForce; - node1.fx += fx; - node1.fy += fy; - node2.fx -= fx; - node2.fy -= fy; + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); }; - exports._cleanupPhysicsConfiguration = function() { - if (this.physicsConfiguration !== undefined) { - while (this.physicsConfiguration.hasChildNodes()) { - this.physicsConfiguration.removeChild(this.physicsConfiguration.firstChild); - } +/***/ }, +/* 66 */ +/***/ function(module, exports, __webpack_require__) { - this.physicsConfiguration.parentNode.removeChild(this.physicsConfiguration); - this.physicsConfiguration = undefined; + exports._resetLevels = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + var node = this.nodes[nodeId]; + if (node.preassignedLevel == false) { + node.level = -1; + node.hierarchyEnumerated = false; + } + } } - } + }; /** - * Load the HTML for the physics config and bind it + * This is the main function to layout the nodes in a hierarchical way. + * It checks if the node details are supplied correctly + * * @private */ - exports._loadPhysicsConfiguration = function () { - if (this.physicsConfiguration === undefined) { - this.backupConstants = {}; - util.deepExtend(this.backupConstants,this.constants); - - var hierarchicalLayoutDirections = ["LR", "RL", "UD", "DU"]; - this.physicsConfiguration = document.createElement('div'); - this.physicsConfiguration.className = "PhysicsConfiguration"; - this.physicsConfiguration.innerHTML = '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Simulation Mode:
Barnes HutRepulsionHierarchical
' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '' + - '
Options:
' - this.containerElement.parentElement.insertBefore(this.physicsConfiguration, this.containerElement); - this.optionsDiv = document.createElement("div"); - this.optionsDiv.style.fontSize = "14px"; - this.optionsDiv.style.fontFamily = "verdana"; - this.containerElement.parentElement.insertBefore(this.optionsDiv, this.containerElement); + exports._setupHierarchicalLayout = function() { + if (this.constants.hierarchicalLayout.enabled == true && this.nodeIndices.length > 0) { + // get the size of the largest hubs and check if the user has defined a level for a node. + var hubsize = 0; + var node, nodeId; + var definedLevel = false; + var undefinedLevel = false; - var rangeElement; - rangeElement = document.getElementById('graph_BH_gc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_gc', -1, "physics_barnesHut_gravitationalConstant"); - rangeElement = document.getElementById('graph_BH_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_BH_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_BH_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_BH_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_BH_damp', 1, "physics_damping"); + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level != -1) { + definedLevel = true; + } + else { + undefinedLevel = true; + } + if (hubsize < node.edges.length) { + hubsize = node.edges.length; + } + } + } - rangeElement = document.getElementById('graph_R_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_nd', 1, "physics_repulsion_nodeDistance"); - rangeElement = document.getElementById('graph_R_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_R_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_R_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_R_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_R_damp', 1, "physics_damping"); + // if the user defined some levels but not all, alert and run without hierarchical layout + if (undefinedLevel == true && definedLevel == true) { + throw new Error("To use the hierarchical layout, nodes require either no predefined levels or levels have to be defined for all nodes."); + this.zoomExtent(undefined,true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); - rangeElement = document.getElementById('graph_H_nd'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - rangeElement = document.getElementById('graph_H_cg'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_cg', 1, "physics_centralGravity"); - rangeElement = document.getElementById('graph_H_sc'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sc', 1, "physics_springConstant"); - rangeElement = document.getElementById('graph_H_sl'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_sl', 1, "physics_springLength"); - rangeElement = document.getElementById('graph_H_damp'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_damp', 1, "physics_damping"); - rangeElement = document.getElementById('graph_H_direction'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_direction', hierarchicalLayoutDirections, "hierarchicalLayout_direction"); - rangeElement = document.getElementById('graph_H_levsep'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_levsep', 1, "hierarchicalLayout_levelSeparation"); - rangeElement = document.getElementById('graph_H_nspac'); - rangeElement.onchange = showValueOfRange.bind(this, 'graph_H_nspac', 1, "hierarchicalLayout_nodeSpacing"); + // define levels if undefined by the users. Based on hubsize + if (undefinedLevel == true) { + if (this.constants.hierarchicalLayout.layout == "hubsize") { + this._determineLevels(hubsize); + } + else { + this._determineLevelsDirected(false); + } - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - var radioButton3 = document.getElementById("graph_physicsMethod3"); - radioButton2.checked = true; - if (this.constants.physics.barnesHut.enabled) { - radioButton1.checked = true; - } - if (this.constants.hierarchicalLayout.enabled) { - radioButton3.checked = true; - } + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); - graph_toggleSmooth.onclick = graphToggleSmoothCurves.bind(this); - graph_repositionNodes.onclick = graphRepositionNodes.bind(this); - graph_generateOptions.onclick = graphGenerateOptions.bind(this); - if (this.constants.smoothCurves == true && this.constants.dynamicSmoothCurves == false) { - graph_toggleSmooth.style.background = "#A4FF56"; - } - else { - graph_toggleSmooth.style.background = "#FF8532"; + // start the simulation. + this.start(); } + } + }; - switchConfigurations.apply(this); + /** + * This function places the nodes on the canvas based on the hierarchial distribution. + * + * @param {Object} distribution | obtained by the function this._getDistribution() + * @private + */ + exports._placeNodesByHierarchy = function(distribution) { + var nodeId, node; - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); + // start placing all the level 0 nodes first. Then recursively position their branches. + for (var level in distribution) { + if (distribution.hasOwnProperty(level)) { + + for (nodeId in distribution[level].nodes) { + if (distribution[level].nodes.hasOwnProperty(nodeId)) { + node = distribution[level].nodes[nodeId]; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (node.xFixed) { + node.x = distribution[level].minPos; + node.xFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + else { + if (node.yFixed) { + node.y = distribution[level].minPos; + node.yFixed = false; + + distribution[level].minPos += distribution[level].nodeSpacing; + } + } + this._placeBranchNodes(node.edges,node.id,distribution,node.level); + } + } + } } + + // stabilize the system after positioning. This function calls zoomExtent. + this._stabilize(); }; + /** - * This overwrites the this.constants. + * This function get the distribution of levels based on hubsize * - * @param constantsVariableName - * @param value + * @returns {Object} * @private */ - exports._overWriteGraphConstants = function (constantsVariableName, value) { - var nameArray = constantsVariableName.split("_"); - if (nameArray.length == 1) { - this.constants[nameArray[0]] = value; + exports._getDistribution = function() { + var distribution = {}; + var nodeId, node, level; + + // we fix Y because the hierarchy is vertical, we fix X so we do not give a node an x position for a second time. + // the fix of X is removed after the x value has been set. + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.xFixed = true; + node.yFixed = true; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + node.y = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + else { + node.x = this.constants.hierarchicalLayout.levelSeparation*node.level; + } + if (distribution[node.level] === undefined) { + distribution[node.level] = {amount: 0, nodes: {}, minPos:0, nodeSpacing:0}; + } + distribution[node.level].amount += 1; + distribution[node.level].nodes[nodeId] = node; + } } - else if (nameArray.length == 2) { - this.constants[nameArray[0]][nameArray[1]] = value; + + // determine the largest amount of nodes of all levels + var maxCount = 0; + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + if (maxCount < distribution[level].amount) { + maxCount = distribution[level].amount; + } + } } - else if (nameArray.length == 3) { - this.constants[nameArray[0]][nameArray[1]][nameArray[2]] = value; + + // set the initial position and spacing of each nodes accordingly + for (level in distribution) { + if (distribution.hasOwnProperty(level)) { + distribution[level].nodeSpacing = (maxCount + 1) * this.constants.hierarchicalLayout.nodeSpacing; + distribution[level].nodeSpacing /= (distribution[level].amount + 1); + distribution[level].minPos = distribution[level].nodeSpacing - (0.5 * (distribution[level].amount + 1) * distribution[level].nodeSpacing); + } } + + return distribution; }; /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private */ - function graphToggleSmoothCurves () { - this.constants.smoothCurves.enabled = !this.constants.smoothCurves.enabled; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} + exports._determineLevels = function(hubsize) { + var nodeId, node; + + // determine hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.edges.length == hubsize) { + node.level = 0; + } + } + } + + // branch from hubs + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + if (node.level == 0) { + this._setLevel(1,node.edges,node.id); + } + } + } + }; + - this._configureSmoothCurves(false); - } /** - * this function is used to scramble the nodes + * this function allocates nodes in levels based on the direction of the edges * + * @param hubsize + * @private */ - function graphRepositionNodes () { - for (var nodeId in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(nodeId)) { - this.calculationNodes[nodeId].vx = 0; this.calculationNodes[nodeId].vy = 0; - this.calculationNodes[nodeId].fx = 0; this.calculationNodes[nodeId].fy = 0; + exports._determineLevelsDirected = function() { + var nodeId, node, firstNode; + var minLevel = 10000; + + // set first node to source + firstNode = this.nodes[this.nodeIndices[0]]; + firstNode.level = minLevel; + this._setLevelDirected(minLevel,firstNode.edges,firstNode.id); + + // get the minimum level + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + minLevel = node.level < minLevel ? node.level : minLevel; } } - if (this.constants.hierarchicalLayout.enabled == true) { - this._setupHierarchicalLayout(); - showValueOfRange.call(this, 'graph_H_nd', 1, "physics_hierarchicalRepulsion_nodeDistance"); - showValueOfRange.call(this, 'graph_H_cg', 1, "physics_centralGravity"); - showValueOfRange.call(this, 'graph_H_sc', 1, "physics_springConstant"); - showValueOfRange.call(this, 'graph_H_sl', 1, "physics_springLength"); - showValueOfRange.call(this, 'graph_H_damp', 1, "physics_damping"); - } - else { - this.repositionNodes(); + + // subtract the minimum from the set so we have a range starting from 0 + for (nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + node = this.nodes[nodeId]; + node.level -= minLevel; + } } - this.moving = true; - this.start(); - } + }; + /** - * this is used to generate an options file from the playing with physics system. + * Since hierarchical layout does not support: + * - smooth curves (based on the physics), + * - clustering (based on dynamic node counts) + * + * We disable both features so there will be no problems. + * + * @private */ - function graphGenerateOptions () { - var options = "No options are required, default values used."; - var optionsSpecific = []; - var radioButton1 = document.getElementById("graph_physicsMethod1"); - var radioButton2 = document.getElementById("graph_physicsMethod2"); - if (radioButton1.checked == true) { - if (this.constants.physics.barnesHut.gravitationalConstant != this.backupConstants.physics.barnesHut.gravitationalConstant) {optionsSpecific.push("gravitationalConstant: " + this.constants.physics.barnesHut.gravitationalConstant);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.barnesHut.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.barnesHut.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.barnesHut.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.barnesHut.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options = "var options = {"; - options += "physics: {barnesHut: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' - } - if (this.constants.smoothCurves.enabled != this.backupConstants.smoothCurves.enabled) { - if (optionsSpecific.length == 0) {options = "var options = {";} - else {options += ", "} - options += "smoothCurves: " + this.constants.smoothCurves.enabled; + exports._changeConstants = function() { + this.constants.clustering.enabled = false; + this.constants.physics.barnesHut.enabled = false; + this.constants.physics.hierarchicalRepulsion.enabled = true; + this._loadSelectedForceSolver(); + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.dynamic = false; + } + this._configureSmoothCurves(); + + var config = this.constants.hierarchicalLayout; + config.levelSeparation = Math.abs(config.levelSeparation); + if (config.direction == "RL" || config.direction == "DU") { + config.levelSeparation *= -1; + } + + if (config.direction == "RL" || config.direction == "LR") { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "vertical"; } - if (options != "No options are required, default values used.") { - options += '};' + } + else { + if (this.constants.smoothCurves.enabled == true) { + this.constants.smoothCurves.type = "horizontal"; } } - else if (radioButton2.checked == true) { - options = "var options = {"; - options += "physics: {barnesHut: {enabled: false}"; - if (this.constants.physics.repulsion.nodeDistance != this.backupConstants.physics.repulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.repulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.repulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.repulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.repulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.repulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += ", repulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } - } - options += '}}' + }; + + + /** + * This is a recursively called function to enumerate the branches from the largest hubs and place the nodes + * on a X position that ensures there will be no overlap. + * + * @param edges + * @param parentId + * @param distribution + * @param parentLevel + * @private + */ + exports._placeBranchNodes = function(edges, parentId, distribution, parentLevel) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; + else { + childNode = edges[i].to; } - options += '};' - } - else { - options = "var options = {"; - if (this.constants.physics.hierarchicalRepulsion.nodeDistance != this.backupConstants.physics.hierarchicalRepulsion.nodeDistance) {optionsSpecific.push("nodeDistance: " + this.constants.physics.hierarchicalRepulsion.nodeDistance);} - if (this.constants.physics.centralGravity != this.backupConstants.physics.hierarchicalRepulsion.centralGravity) {optionsSpecific.push("centralGravity: " + this.constants.physics.centralGravity);} - if (this.constants.physics.springLength != this.backupConstants.physics.hierarchicalRepulsion.springLength) {optionsSpecific.push("springLength: " + this.constants.physics.springLength);} - if (this.constants.physics.springConstant != this.backupConstants.physics.hierarchicalRepulsion.springConstant) {optionsSpecific.push("springConstant: " + this.constants.physics.springConstant);} - if (this.constants.physics.damping != this.backupConstants.physics.hierarchicalRepulsion.damping) {optionsSpecific.push("damping: " + this.constants.physics.damping);} - if (optionsSpecific.length != 0) { - options += "physics: {hierarchicalRepulsion: {"; - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", "; - } + + // if a node is conneceted to another node on the same level (or higher (means lower level))!, this is not handled here. + var nodeMoved = false; + if (this.constants.hierarchicalLayout.direction == "UD" || this.constants.hierarchicalLayout.direction == "DU") { + if (childNode.xFixed && childNode.level > parentLevel) { + childNode.xFixed = false; + childNode.x = distribution[childNode.level].minPos; + nodeMoved = true; } - options += '}},'; } - options += 'hierarchicalLayout: {'; - optionsSpecific = []; - if (this.constants.hierarchicalLayout.direction != this.backupConstants.hierarchicalLayout.direction) {optionsSpecific.push("direction: " + this.constants.hierarchicalLayout.direction);} - if (Math.abs(this.constants.hierarchicalLayout.levelSeparation) != this.backupConstants.hierarchicalLayout.levelSeparation) {optionsSpecific.push("levelSeparation: " + this.constants.hierarchicalLayout.levelSeparation);} - if (this.constants.hierarchicalLayout.nodeSpacing != this.backupConstants.hierarchicalLayout.nodeSpacing) {optionsSpecific.push("nodeSpacing: " + this.constants.hierarchicalLayout.nodeSpacing);} - if (optionsSpecific.length != 0) { - for (var i = 0; i < optionsSpecific.length; i++) { - options += optionsSpecific[i]; - if (i < optionsSpecific.length - 1) { - options += ", " - } + else { + if (childNode.yFixed && childNode.level > parentLevel) { + childNode.yFixed = false; + childNode.y = distribution[childNode.level].minPos; + nodeMoved = true; } - options += '}' } - else { - options += "enabled:true}"; + + if (nodeMoved == true) { + distribution[childNode.level].minPos += distribution[childNode.level].nodeSpacing; + if (childNode.edges.length > 1) { + this._placeBranchNodes(childNode.edges,childNode.id,distribution,childNode.level); + } } - options += '};' } + }; - this.optionsDiv.innerHTML = options; - } - /** - * this is used to switch between barnesHut, repulsion and hierarchical. + * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. * + * @param level + * @param edges + * @param parentId + * @private */ - function switchConfigurations () { - var ids = ["graph_BH_table", "graph_R_table", "graph_H_table"]; - var radioButton = document.querySelector('input[name="graph_physicsMethod"]:checked').value; - var tableId = "graph_" + radioButton + "_table"; - var table = document.getElementById(tableId); - table.style.display = "block"; - for (var i = 0; i < ids.length; i++) { - if (ids[i] != tableId) { - table = document.getElementById(ids[i]); - table.style.display = "none"; + exports._setLevel = function(level, edges, parentId) { + for (var i = 0; i < edges.length; i++) { + var childNode = null; + if (edges[i].toId == parentId) { + childNode = edges[i].from; } - } - this._restoreNodes(); - if (radioButton == "R") { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = false; - } - else if (radioButton == "H") { - if (this.constants.hierarchicalLayout.enabled == false) { - this.constants.hierarchicalLayout.enabled = true; - this.constants.physics.hierarchicalRepulsion.enabled = true; - this.constants.physics.barnesHut.enabled = false; - this.constants.smoothCurves.enabled = false; - this._setupHierarchicalLayout(); + else { + childNode = edges[i].to; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } } } - else { - this.constants.hierarchicalLayout.enabled = false; - this.constants.physics.hierarchicalRepulsion.enabled = false; - this.constants.physics.barnesHut.enabled = true; - } - this._loadSelectedForceSolver(); - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - if (this.constants.smoothCurves.enabled == true) {graph_toggleSmooth.style.background = "#A4FF56";} - else {graph_toggleSmooth.style.background = "#FF8532";} - this.moving = true; - this.start(); - } + }; /** - * this generates the ranges depending on the iniital values. + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction * - * @param id - * @param map - * @param constantsVariableName + * @param level + * @param edges + * @param parentId + * @private */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; - - if (Array.isArray(map)) { - document.getElementById(valueId).value = map[parseInt(rangeValue)]; - this._overWriteGraphConstants(constantsVariableName,map[parseInt(rangeValue)]); - } - else { - document.getElementById(valueId).value = parseInt(map) * parseFloat(rangeValue); - this._overWriteGraphConstants(constantsVariableName, parseInt(map) * parseFloat(rangeValue)); + exports._setLevelDirected = function(level, edges, parentId) { + this.nodes[parentId].hierarchyEnumerated = true; + var childNode, direction; + for (var i = 0; i < edges.length; i++) { + direction = 1; + if (edges[i].toId == parentId) { + childNode = edges[i].from; + direction = -1; + } + else { + childNode = edges[i].to; + } + if (childNode.level == -1) { + childNode.level = level + direction; + } } - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} + + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } } - this.moving = true; - this.start(); - } + }; + /** + * Unfix nodes + * + * @private + */ + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } + }; /***/ }, /* 67 */ -/***/ function(module, exports, __webpack_require__) { - - function webpackContext(req) { - throw new Error("Cannot find module '" + req + "'."); - } - webpackContext.keys = function() { return []; }; - webpackContext.resolve = webpackContext; - module.exports = webpackContext; - webpackContext.id = 67; - - -/***/ }, -/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -34057,7 +34055,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 69 */ +/* 68 */ /***/ function(module, exports, __webpack_require__) { /** @@ -34216,7 +34214,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 70 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -34620,6 +34618,19 @@ return /******/ (function(modules) { // webpackBootstrap }; +/***/ }, +/* 70 */ +/***/ function(module, exports, __webpack_require__) { + + function webpackContext(req) { + throw new Error("Cannot find module '" + req + "'."); + } + webpackContext.keys = function() { return []; }; + webpackContext.resolve = webpackContext; + module.exports = webpackContext; + webpackContext.id = 70; + + /***/ }, /* 71 */ /***/ function(module, exports, __webpack_require__) { diff --git a/dist/vis.map b/dist/vis.map index ea23db01..0052820a 100644 --- a/dist/vis.map +++ b/dist/vis.map @@ -1 +1 @@ -{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","RGBToHex","red","green","blue","slice","parseColor","color","isValidRGB","rgb","substr","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","max","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","parent","backgroundVertical","title","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","Hammer","drag","prevent_default","setCustomTime","getCustomTime","stopPropagation","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","hide","show","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupIndex","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","foreground","marker","Element","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","dirty","displayed","_calculateHeight","offsetTop","offsetLeft","ii","repositionY","resetSubgroups","labelSet","setParent","orderSubgroups","_checkIfVisible","sortArray","sortField","removeFromDataSet","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","repositionX","initialPos","breakCondition","isVisible","align","groupOrder","selectable","editable","updateTime","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","box","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","markDirty","unselect","select","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","selected","dragLeftItem","dragRightItem","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","getComputedStyle","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_repaintDeleteButton","anchor","deleteButton","_updateContents","template","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","onTop","itemSubgroup","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","dragLeft","dragRight","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","boundingBox","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","dispose","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","getBoundingBox","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","clusterToFit","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","repositionNodes","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_sector","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","supportNodes","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","_restoreNodes","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodeId","gravity","gravityForce","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"vis.map","sources":["./dist/vis.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","util","DOMutil","DataSet","DataView","Queue","Graph3d","graph3d","Camera","Filter","Point2d","Point3d","Slider","StepNumber","Timeline","Graph2d","timeline","DateUtil","DataStep","Range","stack","TimeStep","components","items","Item","BackgroundItem","BoxItem","PointItem","RangeItem","Component","CurrentTime","CustomTime","DataAxis","GraphGroup","Group","BackgroundGroup","ItemSet","Legend","LineGraph","TimeAxis","Network","network","Edge","Groups","Images","Node","Popup","dotparser","gephiParser","Graph","Error","moment","hammer","isNumber","object","Number","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","Math","floor","random","toString","extend","a","i","len","arguments","length","other","prop","hasOwnProperty","selectiveExtend","props","Array","isArray","selectiveDeepExtend","b","TypeError","constructor","Object","undefined","deepExtend","selectiveNotDeepExtend","indexOf","equalArray","convert","type","Boolean","valueOf","isMoment","toDate","getType","toISOString","value","getAbsoluteLeft","elem","getBoundingClientRect","left","window","pageXOffset","getAbsoluteTop","top","pageYOffset","addClassName","className","classes","split","push","join","removeClassName","index","splice","forEach","callback","toArray","array","updateProperty","key","addEventListener","element","action","listener","useCapture","navigator","userAgent","attachEvent","removeEventListener","detachEvent","preventDefault","event","returnValue","getTarget","target","srcElement","nodeType","parentNode","option","asBoolean","defaultValue","asNumber","asString","asSize","asElement","hexToRGB","hex","shorthandRegex","replace","r","g","result","parseInt","RGBToHex","red","green","blue","slice","parseColor","color","isValidRGB","rgb","substr","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","min","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","max","d","hue","saturation","cssUtil","cssText","styles","style","trim","parts","keys","map","addCssText","currentStyles","newStyles","removeCssText","removeStyles","HSVToRGB","f","q","t","isOk","test","selectiveBridgeObject","fields","referenceObject","objectTo","create","bridgeObject","mergeOptions","mergeTarget","options","enabled","binarySearchCustom","orderedItems","searchFunction","field","field2","maxIterations","iteration","low","high","middle","item","searchResult","binarySearchValue","sidePreference","prevValue","nextValue","easeInOutQuad","start","end","duration","change","easingFunctions","linear","easeInQuad","easeOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","prepareElements","JSONcontainer","elementType","redundant","used","cleanupElements","removeChild","getSVGElement","svgContainer","shift","document","createElementNS","appendChild","getDOMElement","DOMContainer","insertBefore","createElement","drawPoint","x","y","group","point","drawPoints","setAttributeNS","size","drawBar","width","height","rect","data","_options","_data","_fieldId","fieldId","_type","_subscribers","add","setOptions","prototype","queue","_queue","destroy","on","subscribers","subscribe","off","filter","unsubscribe","_trigger","params","senderId","concat","subscriber","addedIds","me","_addItem","columns","_getColumnNames","row","rows","getNumberOfRows","col","cols","getValue","update","updatedIds","updatedData","addOrUpdate","_updateItem","get","ids","firstType","returnType","allowedValues","itemId","_getItem","order","_sort","_filterFields","_appendRow","getIds","getDataSet","mappedItems","filteredItem","name","sort","av","bv","remove","removedId","removedIds","_remove","clear","maxField","itemField","minField","distinct","values","fieldType","count","exists","types","raw","converted","JSON","stringify","dataTable","getNumberOfColumns","getColumnId","getColumnLabel","addRow","setValue","_ids","_onEvent","apply","setData","viewOptions","getArguments","defaultFilter","dataSet","added","updated","removed","delay","Infinity","_timeout","_extended","_flushIfNeeded","flush","methods","original","method","args","fn","context","entry","clearTimeout","setTimeout","container","SyntaxError","containerElement","margin","defaultXCenter","defaultYCenter","xLabel","yLabel","zLabel","passValueFn","xValueLabel","yValueLabel","zValueLabel","filterLabel","legendLabel","STYLE","DOT","showPerspective","showGrid","keepAspectRatio","showShadow","showGrayBottom","showTooltip","verticalRatio","animationInterval","animationPreload","camera","eye","dataPoints","colX","colY","colZ","colValue","colFilter","xMin","xStep","xMax","yMin","yStep","yMax","zMin","zStep","zMax","valueMin","valueMax","xBarWidth","yBarWidth","colorAxis","colorGrid","colorDot","colorDotBorder","getMouseX","clientX","targetTouches","getMouseY","clientY","Emitter","_setScale","scale","z","xCenter","yCenter","zCenter","setArmLocation","_convert3Dto2D","point3d","translation","_convertPointToTranslation","_convertTranslationToScreen","ax","ay","az","cx","getCameraLocation","cy","cz","sinTx","sin","getCameraRotation","cosTx","cos","sinTy","cosTy","sinTz","cosTz","dx","dy","dz","bx","by","ex","ey","ez","getArmLength","xcenter","frame","canvas","clientWidth","ycenter","_setBackgroundColor","backgroundColor","fill","stroke","strokeWidth","borderColor","borderWidth","borderStyle","BAR","BARCOLOR","BARSIZE","DOTLINE","DOTCOLOR","DOTSIZE","GRID","LINE","SURFACE","_getStyleNumber","styleName","_determineColumnIndexes","counter","column","getDistinctValues","distinctValues","getColumnRange","minMax","_dataInitialize","rawData","_onChange","dataFilter","setOnLoadCallback","redraw","withBars","defaultXBarWidth","dataX","defaultYBarWidth","dataY","xRange","defaultXMin","defaultXMax","defaultXStep","yRange","defaultYMin","defaultYMax","defaultYStep","zRange","defaultZMin","defaultZMax","defaultZStep","valueRange","defaultValueMin","defaultValueMax","_getDataPoints","obj","sortNumber","dataMatrix","xIndex","yIndex","trans","screen","bottom","pointRight","pointTop","pointCross","hasChildNodes","firstChild","position","overflow","noCanvas","fontWeight","padding","innerHTML","onmousedown","_onMouseDown","ontouchstart","_onTouchStart","onmousewheel","_onWheel","ontooltip","_onTooltip","onkeydown","setSize","_resizeCanvas","clientHeight","animationStart","slider","play","animationStop","stop","_resizeCenter","charAt","parseFloat","setCameraPosition","pos","horizontal","vertical","setArmRotation","distance","setArmLength","getCameraPosition","getArmRotation","_readData","_redrawFilter","animationAutoStart","cameraPosition","styleNumber","tooltip","showAnimationControls","_redrawSlider","_redrawClear","_redrawAxis","_redrawDataGrid","_redrawDataLine","_redrawDataBar","_redrawDataDot","_redrawInfo","_redrawLegend","ctx","getContext","clearRect","widthMin","widthMax","dotSize","right","lineWidth","font","ymin","ymax","_hsv2rgb","strokeStyle","beginPath","moveTo","lineTo","strokeRect","fillStyle","closePath","gridLineLen","step","getCurrent","next","textAlign","textBaseline","fillText","label","visible","setValues","setPlayInterval","onchange","getIndex","selectValue","setOnChangeCallback","lineStyle","getLabel","getSelectedValue","from","to","prettyStep","text","xText","yText","zText","offset","xOffset","yOffset","xMin2d","xMax2d","gridLenX","gridLenY","textMargin","armAngle","H","S","V","R","G","B","C","Hi","X","abs","cross","topSideVisible","zAvg","transBottom","dist","sortDepth","aDiff","subtract","bDiff","crossproduct","crossProduct","radius","arc","PI","j","surface","corners","xWidth","yWidth","surfaces","center","avg","transCenter","diff","leftButtonDown","_onMouseUp","which","button","touchDown","startMouseX","startMouseY","startStart","startEnd","startArmRotation","cursor","onmousemove","_onMouseMove","onmouseup","diffX","diffY","horizontalNew","verticalNew","snapAngle","snapValue","round","parameters","emit","boundingRect","mouseX","mouseY","tooltipTimeout","_hideTooltip","dataPoint","_dataPointFromXY","_showTooltip","ontouchmove","_onTouchMove","ontouchend","_onTouchEnd","delta","wheelDelta","detail","oldLength","newLength","_insideTriangle","triangle","sign","as","bs","cs","distMax","closestDataPoint","closestDist","triangle1","triangle2","distX","distY","sqrt","content","line","dot","dom","borderRadius","boxShadow","borderLeft","contentWidth","offsetWidth","contentHeight","offsetHeight","lineHeight","dotWidth","dotHeight","armLocation","armRotation","armLength","cameraLocation","cameraRotation","calculateCameraOrientation","rot","graph","onLoadCallback","loadInBackground","isLoaded","getLoadedProgress","getColumn","getValues","dataView","progress","sub","sum","prev","bar","MozBorderRadius","slide","onclick","togglePlay","onChangeCallback","playTimeout","playInterval","playLoop","setIndex","playNext","interval","clearInterval","getPlayInterval","setPlayLoop","doLoop","onChange","indexToLeft","startClientX","startSlideX","leftToIndex","_start","_end","_step","precision","_current","setRange","setStep","calculatePrettyStep","log10","log","LN10","step1","pow","step2","step5","toPrecision","getStep","groups","forthArgument","defaultOptions","autoResize","orientation","maxHeight","minHeight","_create","body","domProps","emitter","bind","hiddenDates","snap","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","timeAxis","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","Core","newDataSet","initialLoad","dataRange","_getDataRange","setWindow","animate","fit","setSelection","focus","getSelection","itemData","e","getItemRange","dataset","minItem","maxStartItem","maxEndItem","linegraph","getLegend","groupId","isGroupVisible","visibility","convertHiddenOptions","repeat","dateItem","updateHiddenDates","centerContainer","totalRange","pixelTime","startDate","endDate","_d","runUntil","clone","day","dayOfYear","year","dayOffset","date","month","console","removeDuplicates","startHidden","isHidden","endHidden","rangeStart","rangeEnd","hidden","startToFront","endToFront","_applyRange","safeDates","printDates","dates","stepOverHiddenDates","timeStep","previousTime","stepInHidden","currentValue","current","newValue","switchedYear","switchedMonth","switchedDay","time","conversion","getHiddenDurationBetween","correctTimeForHidden","hiddenDuration","totalDuration","partialDuration","accumulatedHiddenDuration","getAccumulatedHiddenDuration","newTime","getHiddenDurationBefore","timeOffset","requiredDuration","previousPoint","snapAwayFromHidden","direction","correctionEnabled","minimumStep","containerHeight","customRange","alignZeros","autoScale","stepIndex","marginStart","marginEnd","deadSpace","majorSteps","minorSteps","setMinimumStep","setFirst","safeSize","minimumStepValue","orderOfMagnitude","minorStepIdx","magnitudefactor","solutionFound","stepSize","niceStart","niceEnd","roundToMinor","marginRange","rounded","hasNext","previous","decimals","exp","cnt","isMajor","now","hours","minutes","seconds","milliseconds","deltaDifference","scaleOffset","moveable","zoomable","zoomMin","zoomMax","touch","animateTimer","_onDragStart","_onDrag","_onDragEnd","_onHold","_onMouseWheel","_onTouch","_onPinch","validateDirection","getPointer","pageX","pageY","hammerUtil","byUser","_cancelAnimation","initStart","initEnd","initTime","anyChanged","dragging","done","changed","newStart","newEnd","getRange","totalHidden","previousDelta","allowDragging","gesture","deltaX","deltaY","diffRange","safeStart","safeEnd","fakeGesture","pointer","pointerDate","_pointerToDate","zoom","touches","centerDate","hiddenDurationBefore","hiddenDurationAfter","move","EPSILON","orderByStart","orderByEnd","aTime","bTime","force","iMax","axis","collidingItem","jj","collision","nostack","subgroups","newTop","subgroup","format","FORMAT","minorLabels","millisecond","second","minute","hour","weekday","majorLabels","setFormat","defaultFormat","first","setFullYear","getFullYear","setMonth","setDate","setHours","setMinutes","setSeconds","setMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getMonth","setScale","newScale","newStep","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","getLabelMinor","getLabelMajor","getClassName","even","today","isSame","currentWeek","currentMonth","currentYear","locale","lang","toLowerCase","parent","selected","displayed","dirty","Hammer","select","unselect","setParent","hide","show","isVisible","repositionX","repositionY","_repaintDeleteButton","anchor","editable","deleteButton","title","removeFromDataSet","stopPropagation","_updateContents","template","Element","_updateTitle","removeAttribute","_updateDataAttributes","dataAttributes","attributes","setAttribute","_updateStyle","emptyContent","baseClassName","box","getComputedStyle","onTop","itemSubgroup","subgroupIndex","foreground","align","itemSetHeight","marginLeft","maxWidth","_repaintDragLeft","_repaintDragRight","contentLeft","parentWidth","boxWidth","updateTime","dragLeft","dragLeftItem","dragRight","dragRightItem","_isResized","resized","_previousWidth","_previousHeight","showCurrentTime","locales","backgroundVertical","toUpperCase","substring","currentTimeTimer","setCurrentTime","getCurrentTime","showCustomTime","eventParams","drag","prevent_default","setCustomTime","getCustomTime","svg","linegraphOptions","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","linegraphSVG","DOMelements","lines","labels","conversionFactor","minWidth","stepPixels","stepPixelsForced","zeroCrossing","lineOffset","master","svgElements","iconsRemoved","amountOfGroups","lineContainer","scrollTop","addGroup","graphOptions","updateGroup","removeGroup","display","_redrawGroupIcons","iconHeight","iconOffset","drawIcon","_cleanupIcons","backgroundHorizontal","activeGroups","_calculateCharSize","minorLabelHeight","minorCharHeight","majorLabelHeight","majorCharHeight","minorLineWidth","minorLineHeight","majorLineWidth","majorLineHeight","_redrawLabels","_redrawTitle","amountOfSteps","stepDifference","zeroStepDifference","valueAtZero","marginStartPos","maxLabelSize","_redrawLabel","_redrawLine","titleWidth","titleCharHeight","convertValue","invertedValue","convertedValue","characterHeight","largestWidth","majorCharWidth","minorCharWidth","textMinor","createTextNode","measureCharMinor","textMajor","measureCharMajor","textTitle","measureCharTitle","titleCharWidth","groupsUsingDefaultStyles","usingDefaultStyle","zeroPosition","Line","Bar","Points","setZeroPosition","catmullRom","parametrization","alpha","SVGcontainer","path","fillPath","fillHeight","outline","shaded","barWidth","bar1Height","bar2Height","icon","yAxisOrientation","getYRange","groupData","draw","framework","subgroupOrderer","subgroupOrder","visibleItems","byStart","byEnd","checkRangedItems","inner","marker","getLabelWidth","restack","_updateVisibleItems","markerHeight","lastMarkerHeight","_calculateHeight","offsetTop","offsetLeft","ii","resetSubgroups","labelSet","orderSubgroups","_checkIfVisible","sortArray","sortField","removeItem","startArray","endArray","oldVisibleItems","visibleItemsLookup","lowerBound","upperBound","_checkIfVisibleWithReference","initialPosByStart","_traceVisible","initialPosByEnd","initialPos","breakCondition","groupOrder","selectable","onAdd","onUpdate","onMove","onRemove","onMoving","itemOptions","itemListeners","_onAdd","_onUpdate","_onRemove","groupListeners","_onAddGroups","_onUpdateGroups","_onRemoveGroups","groupIds","selection","stackDirty","touchParams","UNGROUPED","BACKGROUND","_updateUngrouped","backgroundGroup","_onSelectItem","_onMultiSelectItem","_onAddItem","addCallback","Function","markDirty","getVisibleItems","rawVisibleItems","_deselect","_orderGroups","visibleInterval","zoomed","lastVisibleInterval","lastWidth","firstGroup","_firstGroup","firstMargin","nonFirstMargin","groupMargin","groupResized","firstGroupIndex","firstGroupId","ungrouped","_getGroupId","getLabelSet","oldItemsData","getItems","_order","getGroups","_getType","_removeItem","groupOptions","oldGroupId","oldGroup","_constructByEndArray","itemFromTarget","initialX","itemProps","newProps","initial","groupFromTarget","_updateItemProps","_moveToGroup","changes","ctrlKey","srcEvent","shiftKey","oldSelection","newSelection","xAbs","newItem","_getItemRange","_item","itemSetFromTarget","side","iconSize","iconSpacing","textArea","scrollableHeight","drawLegendIcons","paddingTop","defaultGroup","sampling","graphHeight","barChart","handleOverlap","dataAxis","legend","abortedGraphUpdate","updateSVGheight","updateSVGheightOnResize","lastStart","COUNTER","BarGraphFunctions","yAxisLeft","yAxisRight","legendLeft","legendRight","_updateAllGroupData","_updateGroup","groupsContent","ungroupedCounter","forceGraphUpdate","_updateGraph","rangePerPixelInv","preprocessedGroupData","processedGroupData","groupRanges","changeCalled","minDate","maxDate","_getRelevantData","_applySampling","_convertXcoordinates","_getYRanges","_updateYAxis","MAX_CYCLES","_convertYcoordinates","dataContainer","guess","increment","amountOfPoints","xDistance","pointsPerPixel","ceil","sampledData","barCombinedDataLeft","barCombinedDataRight","getStackedBarYRange","minVal","maxVal","yAxisLeftUsed","yAxisRightUsed","minLeft","minRight","maxLeft","maxRight","ignore","_toggleAxisVisiblity","drawIcons","axisUsed","datapoints","xValue","yValue","extractedData","svgHeight","majorTexts","minorTexts","lineTop","parentChanged","foregroundNextSibling","nextSibling","backgroundNextSibling","_repaintLabels","timeLabelsize","cur","prevLine","xPrev","xFirstMajorLabel","_repaintMinorText","_repaintMajorText","_repaintMajorLine","_repaintMinorLine","leftTime","leftText","widthText","arr","pop","childNodes","nodeValue","_determineBrowserMethod","_initializeMixinLoaders","renderRefreshRate","renderTimestep","renderTime","physicsTime","runDoubleSpeed","physicsDiscreteStepsize","initializing","triggerFunctions","edit","editEdge","connect","del","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","level","borderWidthSelected","edges","widthSelectionMultiplier","hoverWidth","labelAlignment","arrowScaleFactor","dash","gap","altLength","inheritColor","configurePhysics","physics","barnesHut","thetaInverted","gravitationalConstant","centralGravity","springLength","springConstant","damping","repulsion","nodeDistance","hierarchicalRepulsion","clustering","initialMaxNodes","clusterThreshold","reduceToNodes","chainThreshold","clusterEdgeThreshold","sectorThreshold","screenSizeThreshold","fontSizeMultiplier","maxFontSize","forceAmplification","distanceAmplification","edgeGrowth","nodeScaling","maxNodeSizeIncrements","activeAreaBoxSize","clusterLevelDifference","navigation","keyboard","speed","dataManipulation","initiallyVisible","hierarchicalLayout","levelSeparation","nodeSpacing","layout","freezeForStabilization","smoothCurves","dynamic","roundness","maxVelocity","minVelocity","stabilize","stabilizationIterations","zoomExtentOnStabilize","dragNetwork","dragNodes","hideEdgesOnDrag","hideNodesOnDrag","constants","pixelRatio","hoverObj","controlNodesActive","navigationHammers","existing","_new","animationSpeed","animationEasingFunction","animating","easingTime","sourceScale","targetScale","sourceTranslation","targetTranslation","lockedOnNodeId","lockedOnNodeOffset","touchTime","images","setOnloadCallback","_redraw","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulation","cachedFunctions","startedStabilization","stabilized","draggingNodes","calculationNodes","calculationNodeIndices","nodeIndices","canvasTopLeft","canvasBottomRight","pointerPosition","areaCenter","previousScale","nodesData","edgesData","nodesListeners","_addNodes","_updateNodes","_removeNodes","edgesListeners","_addEdges","_updateEdges","_removeEdges","moving","timer","_setupHierarchicalLayout","zoomExtent","startWithClustering","keycharm","MixinLoader","Activator","browserType","requiresTimeout","_getScriptPath","scripts","getElementsByTagName","src","_getRange","node","minY","maxY","minX","maxX","nodeId","boundingBox","_findCenter","animationOptions","initialZoom","disableStart","zoomLevel","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_createManipulatorBar","dotData","DOTToGraph","gephi","gephiData","parseGephi","_setNodes","_setEdges","_putDataInSector","_resetLevels","_stabilize","onEdit","onEditEdge","onConnect","onDelete","editMode","newColorObj","groupname","clickToUse","activator","_createKeyBinds","_loadNavigationControls","_loadManipulationSystem","_configureSmoothCurves","_bindHammer","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","setTransform","dispose","pinch","_onTap","_onDoubleTap","_onMouseMoveTitle","hammerFrame","_onRelease","reset","isActive","_moveUp","_yStopMoving","_moveDown","_moveLeft","_xStopMoving","_moveRight","_zoomIn","_stopZoom","_zoomOut","_deleteSelected","_cleanupPhysicsConfiguration","_recursiveDOMDelete","DOMobject","_getPointer","pinched","_getScale","_handleTouch","_handleDragStart","_getNodeAt","_getTranslation","isSelected","_selectObject","nodeIds","objectId","selectionObj","xFixed","yFixed","_handleOnDrag","releaseNode","_XconvertDOMtoCanvas","_XconvertCanvasToDOM","_YconvertDOMtoCanvas","_YconvertCanvasToDOM","_handleDragEnd","_handleTap","_handleDoubleTap","_handleOnHold","_handleOnRelease","_zoom","scaleOld","preScaleDragPointer","DOMtoCanvas","scaleFrac","tx","ty","updateClustersDefault","postScaleDragPointer","canvasToDOM","popupObj","_checkHidePopup","checkShow","_checkShowPopup","popupTimer","edgeId","_getEdgeAt","_hoverObject","_blurObject","lastPopupNode","nodeUnderCursor","overlappingNodes","isOverlappingWith","getTitle","overlappingEdges","edge","connected","popup","setPosition","setText","emitEvent","oldWidth","oldHeight","oldNodesData","_updateSelection","angle","_updateCalculationNodes","_reconnectEdges","_updateValueRange","updateLabels","changedData","setProperties","properties","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","setValueRange","w","save","translate","_doInAllSectors","restore","offsetX","offsetY","_drawNodes","alwaysShow","setScaleAndPos","inArea","sMax","_drawEdges","_drawControlNodes","_freezeDefinedNodes","_physicsTick","_restoreFrozenNodes","fixedData","_isMoving","vmin","isMoving","_discreteStepNodes","nodesPresent","discreteStepLimited","discreteStep","vminCorrected","_revertPhysicsState","revertPosition","_revertPhysicsTick","_doInAllActiveSectors","_doInSupportSector","mainMovingStatus","supportMovingStatus","mainMoving","_animationStep","_handleNavigation","startTime","renderStartTime","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","iterations","toggleFreeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getScale","getCenterCoordinates","getBoundingBox","networkConstants","fromId","toId","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","xFrom","yFrom","xTo","yTo","xObj","yObj","_getDistanceToEdge","_getColor","colorObj","_getLineWidth","_line","midpointX","midpointY","_pointOnLine","_label","resize","_circle","_pointOnCircle","networkScaleInv","_getViaCoordinates","xVia","yVia","quadraticCurveTo","lineCount","measureText","_rotateForLabelAlignment","_drawLabelRect","_drawLabelText","angleInDegrees","atan2","rotate","lineMargin","fillRect","lineJoin","strokeText","setLineDash","pattern","lineDashOffset","lineCap","dashedLine","percentage","arrow","_pointOnBezier","_findBorderPosition","distanceToBorder","distanceToNodes","difference","threshold","arrowPos","guidePos","edgeSegmentLength","toBorderDist","toBorderPoint","x1","y1","x2","y2","x3","y3","lastX","lastY","minDistance","_getDistanceToLine","px","py","something","u","nodeIdFrom","nodeIdTo","getControlNodeFromPosition","getControlNodeToPosition","_enableControlNodes","_disableControlNodes","_getSelectedControlNode","fromDistance","toDistance","_restoreControlNodes","controlnodeFromPos","fromBorderDist","fromBorderPoint","controlnodeToPos","defaultIndex","DEFAULT","imageBroken","load","url","brokenUrl","img","Image","onload","onerror","error","imagelist","grouplist","reroutedEdges","fontDrawThreshold","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","dynamicEdgesLength","clusterSession","clusterSizeWidthFactor","clusterSizeHeightFactor","clusterSizeRadiusFactor","growthIndicator","networkScale","formationScale","clusterSize","containedNodes","containedEdges","clusterSessions","originalLabel","triggerFunction","groupObj","imageObj","brokenImage","_drawDatabase","_resizeDatabase","_drawBox","_resizeBox","_drawCircle","_resizeCircle","_drawEllipse","_resizeEllipse","_drawImage","_resizeImage","_drawCircularImage","_resizeCircularImage","_drawText","_resizeText","_drawDot","_resizeShape","_drawSquare","_drawTriangle","_drawTriangleDown","_drawStar","_reset","clearSizeCache","_setForce","_addForce","storeState","isFixed","velocity","getDistance","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","styleAttr","fontFamily","WebkitBorderRadius","whiteSpace","parseDOT","parseGraph","nextPreview","isAlphaNumeric","regexAlphaNumeric","merge","o","addNode","graphs","attr","addEdge","createEdge","getToken","tokenType","TOKENTYPE","NULL","token","isComment","DELIMITER","c2","DELIMITERS","IDENTIFIER","newSyntaxError","UNKNOWN","chop","strict","parseStatements","parseStatement","subgraph","parseSubgraph","parseEdge","parseAttributeStatement","parseNodeStatement","subgraphs","parseAttributeList","message","maxLength","forEach2","array1","array2","elem1","elem2","graphData","dotNode","graphNode","convertEdge","dotEdge","graphEdge","subEdge","{","}","[","]",";","=",",","->","--","gephiJSON","allowedToMove","gEdges","gNodes","gEdge","source","gNode","leftContainer","rightContainer","shadowTop","shadowBottom","shadowTopLeft","shadowBottomLeft","shadowTopRight","shadowBottomRight","_redrawTimer","listeners","events","scrollTopMin","redrawCount","_initAutoResize","component","_stopAutoResize","what","getWindow","borderRootHeight","borderRootWidth","autoHeight","centerWidth","_updateScrollTop","visibilityTop","visibilityBottom","MAX_REDRAWS","repaint","_startAutoResize","_onResize","lastHeight","watchTimer","setInterval","initialScrollTop","oldScrollTop","_getScrollTop","newScrollTop","_setScrollTop","eventType","getTouchList","collectEventData","custom","_catmullRom","_linear","dFill","_catmullRomUniform","p0","p1","p2","p3","bp1","bp2","normalization","d1","d2","d3","A","N","M","d3powA","d2powA","d3pow2A","d2pow2A","d1pow2A","d1powA","Bargraph","barCombinedData","coreDistance","drawData","combinedData","intersections","barPoints","_getDataIntersections","heightOffset","_getSafeDrawData","nextKey","amount","resolved","prevKey","accumulated","groupLabel","_getStackedBarYRange","xpos","PhysicsMixin","ClusterMixin","SectorsMixin","SelectionMixin","ManipulationMixin","NavigationMixin","HierarchicalLayoutMixin","_loadMixin","sourceVariable","mixinFunction","_clearMixin","_loadSelectedForceSolver","_loadPhysicsConfiguration","hubThreshold","activeSector","drawingNode","blockConnectingEdgeSelection","forceAppendSelection","manipulationDiv","editModeDiv","closeDiv","_cleanNavigation","_loadNavigationElements","overlay","_onTapOverlay","windowHammer","_hasParent","deactivate","escListener","activate","unbind","back","editNode","addDescription","edgeDescription","editEdgeDescription","createEdgeError","deleteClusterError","CanvasRenderingContext2D","square","s2","ir","triangleDown","star","n","r2d","kappa","ox","oy","xe","ye","xm","ym","bezierCurveTo","wEllipse","hEllipse","ymb","yeb","xt","yt","xi","yi","xl","yl","xr","yr","dashArray","dashLength","dashCount","slope","distRemaining","dashIndex","_callbacks","once","self","removeListener","removeAllListeners","callbacks","cb","hasListeners","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","_exportFunctions","_bound","keydown","keyup","_keys","fromCharCode","code","down","handleEvent","up","keyCode","bound","bindAll","getKey","newBindings","global","dfl","hasOwnProp","defaultParsingFlags","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidMonth","invalidFormat","userInvalidated","iso","printMsg","msg","suppressDeprecationWarnings","warn","deprecate","firstTime","deprecateSimple","deprecations","padToken","func","leftZeroFill","ordinalizeToken","period","localeData","ordinal","monthDiff","anchor2","adjust","wholeMonthDiff","meridiemFixWrap","meridiem","isPm","meridiemHour","isPM","Locale","Moment","config","skipOverflow","checkOverflow","copyConfig","updateInProgress","updateOffset","Duration","normalizedInput","normalizeObjectUnits","years","quarters","quarter","months","weeks","week","days","_milliseconds","_days","_months","_locale","_bubble","val","_isAMomentObject","_i","_f","_l","_strict","_tzm","_isUTC","_offset","_pf","momentProperties","absRound","number","targetLength","forceSign","output","positiveMomentsDifference","base","res","isAfter","momentsDifference","makeAs","isBefore","createAdder","dur","tmp","addOrSubtractDurationFromMoment","mom","isAdding","setTime","rawSetter","rawGetter","rawMonthSetter","input","compareArrays","dontConvert","lengthDiff","diffs","toInt","normalizeUnits","units","lowered","unitAliases","camelFunctions","inputObject","normalizedProp","makeList","setter","getter","results","utc","set","argumentForCoercion","coercedNumber","isFinite","daysInMonth","UTC","getUTCDate","weeksInYear","dow","doy","weekOfYear","daysInYear","isLeapYear","_a","MONTH","DATE","YEAR","HOUR","MINUTE","SECOND","MILLISECOND","_overflowDayOfYear","isValid","_isValid","getTime","bigHour","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","hasModule","model","local","removeFormattingTokens","makeFormatFunction","formattingTokens","formatTokenFunctions","formatMoment","expandFormat","formatFunctions","invalidDate","replaceLongDateFormatTokens","longDateFormat","localFormattingTokens","lastIndex","getParseRegexForToken","parseTokenOneDigit","parseTokenThreeDigits","parseTokenFourDigits","parseTokenOneToFourDigits","parseTokenSignedNumber","parseTokenSixDigits","parseTokenOneToSixDigits","parseTokenTwoDigits","parseTokenOneToThreeDigits","parseTokenWord","_meridiemParse","parseTokenOffsetMs","parseTokenTimestampMs","parseTokenTimezone","parseTokenT","parseTokenDigits","parseTokenOneOrTwoDigits","_ordinalParse","_ordinalParseLenient","RegExp","regexpEscape","unescapeFormat","utcOffsetFromString","string","possibleTzMatches","tzChunk","parseTimezoneChunker","addTimeToArrayFromToken","datePartArray","monthsParse","_dayOfYear","parseTwoDigitYear","_meridiem","_useUTC","weekdaysParse","_w","invalidWeekday","dayOfYearFromWeekInfo","weekYear","temp","GG","W","E","_week","gg","dayOfYearFromWeeks","dateFromConfig","currentDate","yearToUse","currentDateArray","makeUTCDate","getUTCMonth","_nextDay","makeDate","setUTCMinutes","getUTCMinutes","dateFromObject","getUTCFullYear","makeDateFromStringAndFormat","ISO_8601","parseISO","parsedInput","tokens","skipped","stringLength","totalParsedInputLength","matched","p4","makeDateFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","NaN","score","l","isoRegex","isoDates","isoTimes","makeDateFromString","createFromInputFallback","makeDateFromInput","aspNetJsonRegex","ms","setUTCFullYear","parseWeekday","substituteTimeAgo","withoutSuffix","isFuture","relativeTime","posNegDuration","relativeTimeThresholds","firstDayOfWeek","firstDayOfWeekOfYear","adjustedMoment","daysToDayOfWeek","daysToAdd","getUTCDay","makeMoment","invalid","preparse","pickBy","moments","dayOfMonth","unit","makeAccessor","keepTime","daysToYears","yearsToDays","makeDurationGetter","makeGlobal","shouldDeprecate","ender","oldGlobalMoment","globalScope","VERSION","aspNetTimeSpanJsonRegex","isoDurationRegex","isoFormat","unitMillisecondFactors","Milliseconds","Seconds","Minutes","Hours","Days","Months","Years","D","Q","DDD","dayofyear","isoweekday","isoweek","weekyear","isoweekyear","ordinalizeTokens","paddedTokens","MMM","monthsShort","MMMM","dd","weekdaysMin","ddd","weekdaysShort","dddd","weekdays","isoWeek","YY","YYYY","YYYYY","YYYYYY","gggg","ggggg","isoWeekYear","GGGG","GGGGG","isoWeekday","SS","SSS","SSSS","Z","utcOffset","ZZ","zoneAbbr","zz","zoneName","unix","lists","DDDD","_monthsShort","monthName","regex","_monthsParse","_longMonthsParse","_shortMonthsParse","_weekdays","_weekdaysShort","_weekdaysMin","weekdayName","_weekdaysParse","_longDateFormat","LTS","LT","L","LL","LLL","LLLL","isLower","_calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","_relativeTime","future","past","mm","hh","MM","yy","pastFuture","_ordinal","postformat","firstDayOfYear","_invalidDate","ret","parseIso","diffRes","isDuration","inp","version","relativeTimeThreshold","limit","defineLocale","_abbr","abbr","langData","flags","parseZone","isDSTShifted","parsingFlags","invalidAt","keepLocalTime","_dateUtcOffset","inputString","asFloat","that","zoneDiff","humanize","fromNow","sod","startOf","isDST","getDay","endOf","inputMs","isBetween","zone","localAdjust","_changeInProgress","isLocal","isUtcOffset","isUtc","hasAlignedHourOffset","isoWeeksInYear","weekInfo","newLocaleData","getTimezoneOffset","isoWeeks","toJSON","isUTC","withSuffix","toIsoString","asSeconds","asMilliseconds","asMinutes","asHours","asDays","asWeeks","asMonths","asYears","ordinalParse","require","noGlobal","setup","READY","Event","determineEventTypes","Utils","each","gestures","Detection","register","onTouch","DOCUMENT","EVENT_MOVE","detect","EVENT_END","Instance","defaults","behavior","userSelect","touchAction","touchCallout","contentZooming","userDrag","tapHighlightColor","HAS_POINTEREVENTS","pointerEnabled","msPointerEnabled","HAS_TOUCHEVENTS","IS_MOBILE","NO_MOUSEEVENTS","CALCULATE_INTERVAL","EVENT_TYPES","DIRECTION_DOWN","DIRECTION_LEFT","DIRECTION_UP","DIRECTION_RIGHT","POINTER_MOUSE","POINTER_TOUCH","POINTER_PEN","EVENT_START","EVENT_RELEASE","EVENT_TOUCH","plugins","utils","dest","handler","iterator","inStr","find","inArray","hasParent","getCenter","getVelocity","deltaTime","getAngle","touch1","touch2","getDirection","getRotation","isVertical","setPrefixedCss","toggle","prefixes","toCamelCase","toggleBehavior","falseFn","onselectstart","ondragstart","str","preventMouseEvents","started","shouldDetect","hook","onTouchHandler","ev","triggerType","srcType","isPointer","isMouse","buttons","PointerEvent","matchType","updatePointer","doDetect","touchList","touchListLength","triggerChange","trigger","changedLength","changedTouches","evData","identifiers","identifier","pointerType","timeStamp","preventManipulation","stopDetect","pointers","touchlist","pointerEvent","pointerId","pt","MSPOINTER_TYPE_MOUSE","MSPOINTER_TYPE_TOUCH","MSPOINTER_TYPE_PEN","detection","stopped","startDetect","inst","eventData","startEvent","lastEvent","lastCalcEvent","futureCalcEvent","lastCalcData","extendEventData","instOptions","getCalculatedData","recalc","calcEv","calcData","velocityX","velocityY","interimAngle","interimDirection","startEv","lastEv","rotation","eventStartHandler","eventHandlers","createEvent","initEvent","dispatchEvent","state","eh","dragGesture","dragMaxTouches","triggered","dragMinDistance","startCenter","dragDistanceCorrection","dragLockToAxis","dragLockMinDistance","lastDirection","dragBlockVertical","dragBlockHorizontal","Drag","Gesture","holdGesture","holdTimeout","holdThreshold","Hold","Release","Swipe","swipeMinTouches","swipeMaxTouches","swipeVelocityX","swipeVelocityY","tapGesture","sincePrev","didDoubleTap","hasMoved","tapMaxDistance","tapMaxTime","doubleTapInterval","doubleTapDistance","tapAlways","Tap","Touch","preventMouse","transformGesture","scaleThreshold","rotationThreshold","transformMinScale","transformMinRotation","Transform","graphToggleSmoothCurves","graph_toggleSmooth","getElementById","graphRepositionNodes","showValueOfRange","repositionNodes","graphGenerateOptions","optionsSpecific","radioButton1","radioButton2","checked","backupConstants","optionsDiv","switchConfigurations","radioButton","querySelector","tableId","table","_restoreNodes","constantsVariableName","valueId","rangeValue","_overWriteGraphConstants","RepulsionMixin","HierarchialRepulsionMixin","BarnesHutMixin","_toggleBarnesHut","barnesHutTree","_initializeForceCalculation","clusterToFit","_calculateForces","_calculateGravitationalForces","_calculateNodeForces","_calculateSpringForcesWithSupport","_calculateHierarchicalSpringForces","_calculateSpringForces","supportNodes","supportNodeId","gravity","gravityForce","_sector","edgeLength","springForce","combinedClusterSize","node1","node2","node3","_calculateSpringForce","physicsConfiguration","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","_updateDynamicEdges","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","_collapseSector","_formClusters","_openClusters","_openClustersBySize","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","openAll","containedNodeId","childNode","_expelChildFromParent","_unselectAll","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","correction","edgeToId","edgeFromId","k","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","total","_switchToSector","sectorId","sectorType","_switchToActiveSector","_switchToFrozenSector","_switchToSupportSector","_loadLatestSector","_previousSector","_setActiveSector","newId","_forgetLastSector","_createNewSector","_deleteActiveSector","_deleteFrozenSector","_freezeSector","_activateSector","_mergeThisWithFrozen","_collapseThisToSingleCluster","sector","unqiueIdentifier","previousSector","runFunction","argument","returnValues","_doInAllFrozenSectors","_drawSectorNodes","_drawAllSectorNodes","_getNodesOverlappingWith","_getAllNodesOverlappingWith","_pointerToPositionObject","positionObject","_getEdgesOverlappingWith","_getAllEdgesOverlappingWith","_addToSelection","_addToHover","_removeFromSelection","doNotTrigger","_unselectClusters","_getSelectedNodeCount","_getSelectedNode","_getSelectedEdge","_getSelectedEdgeCount","_getSelectedObjectCount","_selectionIsEmpty","_clusterInSelection","_selectConnectedEdges","_hoverConnectedEdges","_unselectConnectedEdges","append","highlightEdges","overrideSelectable","DOM","_manipulationReleaseOverload","_navigationReleaseOverload","getSelectedNodes","edgeIds","getSelectedEdges","idArray","selectNodes","RangeError","selectEdges","_clearManipulatorBar","manipulationDOM","_restoreOverloadedFunctions","functionName","_toggleEditMode","toolbar","boundFunction","edgeBeingEdited","selectedControlNode","_createAddNodeToolbar","_createAddEdgeToolbar","_editNode","_createEditEdgeToolbar","_addNode","_handleConnect","_finishConnect","_selectControlNode","_controlNodeDrag","_releaseControlNode","newNode","_editEdge","alert","targetNode","connectionEdge","connectFromId","_createEdge","defaultData","finalizedData","sourceNodeId","targetNodeId","selectedNodes","selectedEdges","navigationDivs","navigationDivActions","_stopMovement","_zoomExtent","hubsize","definedLevel","undefinedLevel","_changeConstants","_determineLevels","_determineLevelsDirected","distribution","_getDistribution","_placeNodesByHierarchy","minPos","_placeBranchNodes","maxCount","_setLevel","firstNode","_setLevelDirected","parentId","parentLevel","nodeMoved","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","children","NW","NE","SW","SE","parentBranch","childrenCount","centerOfMass","calcSize","MAX_VALUE","sizeDiff","minimumTreeSize","rootSize","halfRootSize","_splitBranch","_placeInTree","_updateBranchMass","totalMass","totalMassInv","biggestSize","skipMassUpdate","_placeInRegion","region","containedNode","_insertRegion","childSize","_drawTree","_drawBranch","branch","webpackContext","req","resolve","webpackPolyfill","paths"],"mappings":"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"} \ No newline at end of file diff --git a/dist/vis.min.js b/dist/vis.min.js index 3a4eff53..16108e0b 100644 --- a/dist/vis.min.js +++ b/dist/vis.min.js @@ -4,8 +4,8 @@ * * A dynamic, browser-based visualization library. * - * @version 3.9.0 - * @date 2015-01-16 + * @version 3.9.1 + * @date 2015-01-22 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -22,18 +22,18 @@ * * Vis.js may be distributed under either license. */ -"use strict";!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):"object"==typeof exports?exports.vis=e():t.vis=e()}(this,function(){return function(t){function e(s){if(i[s])return i[s].exports;var o=i[s]={exports:{},id:s,loaded:!1};return t[s].call(o.exports,o,o.exports,e),o.loaded=!0,o.exports}var i={};return e.m=t,e.c=i,e.p="",e(0)}([function(t,e,i){e.util=i(1),e.DOMutil=i(2),e.DataSet=i(3),e.DataView=i(4),e.Queue=i(5),e.Graph3d=i(6),e.graph3d={Camera:i(7),Filter:i(8),Point2d:i(9),Point3d:i(10),Slider:i(11),StepNumber:i(12)},e.Timeline=i(13),e.Graph2d=i(14),e.timeline={DateUtil:i(15),DataStep:i(16),Range:i(17),stack:i(18),TimeStep:i(19),components:{items:{Item:i(31),BackgroundItem:i(32),BoxItem:i(33),PointItem:i(34),RangeItem:i(35)},Component:i(20),CurrentTime:i(21),CustomTime:i(22),DataAxis:i(23),GraphGroup:i(24),Group:i(25),BackgroundGroup:i(26),ItemSet:i(27),Legend:i(28),LineGraph:i(29),TimeAxis:i(30)}},e.Network=i(36),e.network={Edge:i(37),Groups:i(38),Images:i(39),Node:i(40),Popup:i(41),dotparser:i(42),gephiParser:i(43)},e.Graph=function(){throw new Error("Graph is renamed to Network. Please create a graph as new vis.Network(...)")},e.moment=i(44),e.hammer=i(45)},function(t,e,i){var s=i(44);e.isNumber=function(t){return t instanceof Number||"number"==typeof t},e.isString=function(t){return t instanceof String||"string"==typeof t},e.isDate=function(t){if(t instanceof Date)return!0;if(e.isString(t)){var i=o.exec(t);if(i)return!0;if(!isNaN(Date.parse(t)))return!0}return!1},e.isDataTable=function(t){return"undefined"!=typeof google&&google.visualization&&google.visualization.DataTable&&t instanceof google.visualization.DataTable},e.randomUUID=function(){var t=function(){return Math.floor(65536*Math.random()).toString(16)};return t()+t()+"-"+t()+"-"+t()+"-"+t()+"-"+t()+t()+t()},e.extend=function(t){for(var e=1,i=arguments.length;i>e;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&r.setAttributeNS(null,"style",s.group.options.drawPoints.styles),r.setAttributeNS(null,"class",s.className+" point"),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxe;e++){var s=arguments[e];for(var o in s)s.hasOwnProperty(o)&&(t[o]=s[o])}return t},e.selectiveExtend=function(t,e){if(!Array.isArray(t))throw new Error("Array with property names expected as first argument");for(var i=2;ii;i++)if(t[i]!=e[i])return!1;return!0},e.convert=function(t,i){var n;if(void 0===t)return void 0;if(null===t)return null;if(!i)return t;if("string"!=typeof i&&!(i instanceof String))throw new Error("Type must be a string");switch(i){case"boolean":case"Boolean":return Boolean(t);case"number":case"Number":return Number(t.valueOf());case"string":case"String":return String(t);case"Date":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return new Date(t.valueOf());if(s.isMoment(t))return new Date(t.valueOf());if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])):s(t).toDate();throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"Moment":if(e.isNumber(t))return s(t);if(t instanceof Date)return s(t.valueOf());if(s.isMoment(t))return s(t);if(e.isString(t))return n=o.exec(t),s(n?Number(n[1]):t);throw new Error("Cannot convert object of type "+e.getType(t)+" to type Date");case"ISODate":if(e.isNumber(t))return new Date(t);if(t instanceof Date)return t.toISOString();if(s.isMoment(t))return t.toDate().toISOString();if(e.isString(t))return n=o.exec(t),n?new Date(Number(n[1])).toISOString():new Date(t).toISOString();throw new Error("Cannot convert object of type "+e.getType(t)+" to type ISODate");case"ASPDate":if(e.isNumber(t))return"/Date("+t+")/";if(t instanceof Date)return"/Date("+t.valueOf()+")/";if(e.isString(t)){n=o.exec(t);var r;return r=n?new Date(Number(n[1])).valueOf():new Date(t).valueOf(),"/Date("+r+")/"}throw new Error("Cannot convert object of type "+e.getType(t)+" to type ASPDate");default:throw new Error('Unknown type "'+i+'"')}};var o=/^\/?Date\((\-?\d+)/i;e.getType=function(t){var e=typeof t;return"object"==e?null==t?"null":t instanceof Boolean?"Boolean":t instanceof Number?"Number":t instanceof String?"String":Array.isArray(t)?"Array":t instanceof Date?"Date":"Object":"number"==e?"Number":"boolean"==e?"Boolean":"string"==e?"String":e},e.getAbsoluteLeft=function(t){return t.getBoundingClientRect().left+window.pageXOffset},e.getAbsoluteTop=function(t){return t.getBoundingClientRect().top+window.pageYOffset},e.addClassName=function(t,e){var i=t.className.split(" ");-1==i.indexOf(e)&&(i.push(e),t.className=i.join(" "))},e.removeClassName=function(t,e){var i=t.className.split(" "),s=i.indexOf(e);-1!=s&&(i.splice(s,1),t.className=i.join(" "))},e.forEach=function(t,e){var i,s;if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)e(t[i],i,t);else for(i in t)t.hasOwnProperty(i)&&e(t[i],i,t)},e.toArray=function(t){var e=[];for(var i in t)t.hasOwnProperty(i)&&e.push(t[i]);return e},e.updateProperty=function(t,e,i){return t[e]!==i?(t[e]=i,!0):!1},e.addEventListener=function(t,e,i,s){t.addEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.addEventListener(e,i,s)):t.attachEvent("on"+e,i)},e.removeEventListener=function(t,e,i,s){t.removeEventListener?(void 0===s&&(s=!1),"mousewheel"===e&&navigator.userAgent.indexOf("Firefox")>=0&&(e="DOMMouseScroll"),t.removeEventListener(e,i,s)):t.detachEvent("on"+e,i)},e.preventDefault=function(t){t||(t=window.event),t.preventDefault?t.preventDefault():t.returnValue=!1},e.getTarget=function(t){t||(t=window.event);var e;return t.target?e=t.target:t.srcElement&&(e=t.srcElement),void 0!=e.nodeType&&3==e.nodeType&&(e=e.parentNode),e},e.option={},e.option.asBoolean=function(t,e){return"function"==typeof t&&(t=t()),null!=t?0!=t:e||null},e.option.asNumber=function(t,e){return"function"==typeof t&&(t=t()),null!=t?Number(t)||e||null:e||null},e.option.asString=function(t,e){return"function"==typeof t&&(t=t()),null!=t?String(t):e||null},e.option.asSize=function(t,i){return"function"==typeof t&&(t=t()),e.isString(t)?t:e.isNumber(t)?t+"px":i||null},e.option.asElement=function(t,e){return"function"==typeof t&&(t=t()),t||e||null},e.hexToRGB=function(t){var e=/^#?([a-f\d])([a-f\d])([a-f\d])$/i;t=t.replace(e,function(t,e,i,s){return e+e+i+i+s+s});var i=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return i?{r:parseInt(i[1],16),g:parseInt(i[2],16),b:parseInt(i[3],16)}:null},e.RGBToHex=function(t,e,i){return"#"+((1<<24)+(t<<16)+(e<<8)+i).toString(16).slice(1)},e.parseColor=function(t){var i;if(e.isString(t)){if(e.isValidRGB(t)){var s=t.substr(4).substr(0,t.length-5).split(",");t=e.RGBToHex(s[0],s[1],s[2])}if(e.isValidHex(t)){var o=e.hexToHSV(t),n={h:o.h,s:.45*o.s,v:Math.min(1,1.05*o.v)},r={h:o.h,s:Math.min(1,1.25*o.v),v:.6*o.v},a=e.HSVToHex(r.h,r.h,r.v),h=e.HSVToHex(n.h,n.s,n.v);i={background:t,border:a,highlight:{background:h,border:a},hover:{background:h,border:a}}}else i={background:t,border:t,highlight:{background:t,border:t},hover:{background:t,border:t}}}else i={},i.background=t.background||"white",i.border=t.border||i.background,e.isString(t.highlight)?i.highlight={border:t.highlight,background:t.highlight}:(i.highlight={},i.highlight.background=t.highlight&&t.highlight.background||i.background,i.highlight.border=t.highlight&&t.highlight.border||i.border),e.isString(t.hover)?i.hover={border:t.hover,background:t.hover}:(i.hover={},i.hover.background=t.hover&&t.hover.background||i.background,i.hover.border=t.hover&&t.hover.border||i.border);return i},e.RGBToHSV=function(t,e,i){t/=255,e/=255,i/=255;var s=Math.min(t,Math.min(e,i)),o=Math.max(t,Math.max(e,i));if(s==o)return{h:0,s:0,v:s};var n=t==s?e-i:i==s?t-e:i-t,r=t==s?3:i==s?1:5,a=60*(r-n/(o-s))/360,h=(o-s)/o,d=o;return{h:a,s:h,v:d}};var n={split:function(t){var e={};return t.split(";").forEach(function(t){if(""!=t.trim()){var i=t.split(":"),s=i[0].trim(),o=i[1].trim();e[s]=o}}),e},join:function(t){return Object.keys(t).map(function(e){return e+": "+t[e]}).join("; ")}};e.addCssText=function(t,i){var s=n.split(t.style.cssText),o=n.split(i),r=e.extend(s,o);t.style.cssText=n.join(r)},e.removeCssText=function(t,e){var i=n.split(t.style.cssText),s=n.split(e);for(var o in s)s.hasOwnProperty(o)&&delete i[o];t.style.cssText=n.join(i)},e.HSVToRGB=function(t,e,i){var s,o,n,r=Math.floor(6*t),a=6*t-r,h=i*(1-e),d=i*(1-a*e),l=i*(1-(1-a)*e);switch(r%6){case 0:s=i,o=l,n=h;break;case 1:s=d,o=i,n=h;break;case 2:s=h,o=i,n=l;break;case 3:s=h,o=d,n=i;break;case 4:s=l,o=h,n=i;break;case 5:s=i,o=h,n=d}return{r:Math.floor(255*s),g:Math.floor(255*o),b:Math.floor(255*n)}},e.HSVToHex=function(t,i,s){var o=e.HSVToRGB(t,i,s);return e.RGBToHex(o.r,o.g,o.b)},e.hexToHSV=function(t){var i=e.hexToRGB(t);return e.RGBToHSV(i.r,i.g,i.b)},e.isValidHex=function(t){var e=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t);return e},e.isValidRGB=function(t){t=t.replace(" ","");var e=/rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)/i.test(t);return e},e.selectiveBridgeObject=function(t,i){if("object"==typeof i){for(var s=Object.create(i),o=0;o=r&&o>n;){var h=Math.floor((r+a)/2),d=t[h],l=void 0===s?d[i]:d[i][s],c=e(l);if(0==c)return h;-1==c?r=h+1:a=h-1,n++}return-1},e.binarySearchValue=function(t,e,i,s){for(var o,n,r,a,h=1e4,d=0,l=0,c=t.length-1;c>=l&&h>d;){if(a=Math.floor(.5*(c+l)),o=t[Math.max(0,a-1)][i],n=t[a][i],r=t[Math.min(t.length-1,a+1)][i],n==e)return a;if(e>o&&n>e)return"before"==s?Math.max(0,a-1):a;if(e>n&&r>e)return"before"==s?a:Math.min(t.length-1,a+1);e>n?l=a+1:c=a-1,d++}return-1},e.easeInOutQuad=function(t,e,i,s){var o=i-e;return t/=s/2,1>t?o/2*t*t+e:(t--,-o/2*(t*(t-2)-1)+e)},e.easingFunctions={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return t*(2-t)},easeInOutQuad:function(t){return.5>t?2*t*t:-1+(4-2*t)*t},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return--t*t*t+1},easeInOutCubic:function(t){return.5>t?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return 1- --t*t*t*t},easeInOutQuart:function(t){return.5>t?8*t*t*t*t:1-8*--t*t*t*t},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return 1+--t*t*t*t*t},easeInOutQuint:function(t){return.5>t?16*t*t*t*t*t:1+16*--t*t*t*t*t}}},function(t,e){e.prepareElements=function(t){for(var e in t)t.hasOwnProperty(e)&&(t[e].redundant=t[e].used,t[e].used=[])},e.cleanupElements=function(t){for(var e in t)if(t.hasOwnProperty(e)&&t[e].redundant){for(var i=0;i0?(s=e[t].redundant[0],e[t].redundant.shift()):(s=document.createElementNS("http://www.w3.org/2000/svg",t),i.appendChild(s)):(s=document.createElementNS("http://www.w3.org/2000/svg",t),e[t]={used:[],redundant:[]},i.appendChild(s)),e[t].used.push(s),s},e.getDOMElement=function(t,e,i,s){var o;return e.hasOwnProperty(t)?e[t].redundant.length>0?(o=e[t].redundant[0],e[t].redundant.shift()):(o=document.createElement(t),void 0!==s?i.insertBefore(o,s):i.appendChild(o)):(o=document.createElement(t),e[t]={used:[],redundant:[]},void 0!==s?i.insertBefore(o,s):i.appendChild(o)),e[t].used.push(o),o},e.drawPoint=function(t,i,s,o,n){var r;return"circle"==s.options.drawPoints.style?(r=e.getSVGElement("circle",o,n),r.setAttributeNS(null,"cx",t),r.setAttributeNS(null,"cy",i),r.setAttributeNS(null,"r",.5*s.options.drawPoints.size)):(r=e.getSVGElement("rect",o,n),r.setAttributeNS(null,"x",t-.5*s.options.drawPoints.size),r.setAttributeNS(null,"y",i-.5*s.options.drawPoints.size),r.setAttributeNS(null,"width",s.options.drawPoints.size),r.setAttributeNS(null,"height",s.options.drawPoints.size)),void 0!==s.options.drawPoints.styles&&r.setAttributeNS(null,"style",s.group.options.drawPoints.styles),r.setAttributeNS(null,"class",s.className+" point"),r},e.drawBar=function(t,i,s,o,n,r,a){if(0!=o){0>o&&(o*=-1,i-=o);var h=e.getSVGElement("rect",r,a);h.setAttributeNS(null,"x",t-.5*s),h.setAttributeNS(null,"y",i),h.setAttributeNS(null,"width",s),h.setAttributeNS(null,"height",o),h.setAttributeNS(null,"class",n)}}},function(t,e,i){function s(t,e){if(!t||Array.isArray(t)||o.isDataTable(t)||(e=t,t=null),this._options=e||{},this._data={},this._fieldId=this._options.fieldId||"id",this._type={},this._options.type)for(var i in this._options.type)if(this._options.type.hasOwnProperty(i)){var s=this._options.type[i];this._type[i]="Date"==s||"ISODate"==s||"ASPDate"==s?"Date":s}if(this._options.convert)throw new Error('Option "convert" is deprecated. Use "type" instead.');this._subscribers={},t&&this.add(t),this.setOptions(e)}var o=i(1),n=i(5);s.prototype.setOptions=function(t){t&&void 0!==t.queue&&(t.queue===!1?this._queue&&(this._queue.destroy(),delete this._queue):(this._queue||(this._queue=n.extend(this,{replace:["add","update","remove"]})),"object"==typeof t.queue&&this._queue.setOptions(t.queue)))},s.prototype.on=function(t,e){var i=this._subscribers[t];i||(i=[],this._subscribers[t]=i),i.push({callback:e})},s.prototype.subscribe=s.prototype.on,s.prototype.off=function(t,e){var i=this._subscribers[t];i&&(this._subscribers[t]=i.filter(function(t){return t.callback!=e}))},s.prototype.unsubscribe=s.prototype.off,s.prototype._trigger=function(t,e,i){if("*"==t)throw new Error("Cannot trigger event *");var s=[];t in this._subscribers&&(s=s.concat(this._subscribers[t])),"*"in this._subscribers&&(s=s.concat(this._subscribers["*"]));for(var o=0;or;r++)i=n._addItem(t[r]),s.push(i);else if(o.isDataTable(t))for(var h=this._getColumnNames(t),d=0,l=t.getNumberOfRows();l>d;d++){for(var c={},p=0,u=h.length;u>p;p++){var m=h[p];c[m]=t.getValue(d,p)}i=n._addItem(c),s.push(i)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");i=n._addItem(t),s.push(i)}return s.length&&this._trigger("add",{items:s},e),s},s.prototype.update=function(t,e){var i=[],s=[],n=[],r=this,a=r._fieldId,h=function(t){var e=t[a];r._data[e]?(e=r._updateItem(t),s.push(e),n.push(t)):(e=r._addItem(t),i.push(e))};if(Array.isArray(t))for(var d=0,l=t.length;l>d;d++)h(t[d]);else if(o.isDataTable(t))for(var c=this._getColumnNames(t),p=0,u=t.getNumberOfRows();u>p;p++){for(var m={},f=0,g=c.length;g>f;f++){var v=c[f];m[v]=t.getValue(p,f)}h(m)}else{if(!(t instanceof Object))throw new Error("Unknown dataType");h(t)}return i.length&&this._trigger("add",{items:i},e),s.length&&this._trigger("update",{items:s,data:n},e),i.concat(s)},s.prototype.get=function(){var t,e,i,s,n=this,r=o.getType(arguments[0]);"String"==r||"Number"==r?(t=arguments[0],i=arguments[1],s=arguments[2]):"Array"==r?(e=arguments[0],i=arguments[1],s=arguments[2]):(i=arguments[0],s=arguments[1]);var a;if(i&&i.returnType){var h=["DataTable","Array","Object"];if(a=-1==h.indexOf(i.returnType)?"Array":i.returnType,s&&a!=o.getType(s))throw new Error('Type of parameter "data" ('+o.getType(s)+") does not correspond with specified options.type ("+i.type+")");if("DataTable"==a&&!o.isDataTable(s))throw new Error('Parameter "data" must be a DataTable when options.type is "DataTable"')}else a=s&&"DataTable"==o.getType(s)?"DataTable":"Array";var d,l,c,p,u=i&&i.type||this._options.type,m=i&&i.filter,f=[];if(void 0!=t)d=n._getItem(t,u),m&&!m(d)&&(d=null);else if(void 0!=e)for(c=0,p=e.length;p>c;c++)d=n._getItem(e[c],u),(!m||m(d))&&f.push(d);else for(l in this._data)this._data.hasOwnProperty(l)&&(d=n._getItem(l,u),(!m||m(d))&&f.push(d));if(i&&i.order&&void 0==t&&this._sort(f,i.order),i&&i.fields){var g=i.fields;if(void 0!=t)d=this._filterFields(d,g);else for(c=0,p=f.length;p>c;c++)f[c]=this._filterFields(f[c],g)}if("DataTable"==a){var v=this._getColumnNames(s);if(void 0!=t)n._appendRow(s,v,d);else for(c=0;cc;c++)s.push(f[c]);return s}return f},s.prototype.getIds=function(t){var e,i,s,o,n,r=this._data,a=t&&t.filter,h=t&&t.order,d=t&&t.type||this._options.type,l=[];if(a)if(h){n=[];for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&n.push(o));for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=this._getItem(s,d),a(o)&&l.push(o[this._fieldId]));else if(h){n=[];for(s in r)r.hasOwnProperty(s)&&n.push(r[s]);for(this._sort(n,h),e=0,i=n.length;i>e;e++)l[e]=n[e][this._fieldId]}else for(s in r)r.hasOwnProperty(s)&&(o=r[s],l.push(o[this._fieldId]));return l},s.prototype.getDataSet=function(){return this},s.prototype.forEach=function(t,e){var i,s,o=e&&e.filter,n=e&&e.type||this._options.type,r=this._data;if(e&&e.order)for(var a=this.get(e),h=0,d=a.length;d>h;h++)i=a[h],s=i[this._fieldId],t(i,s);else for(s in r)r.hasOwnProperty(s)&&(i=this._getItem(s,n),(!o||o(i))&&t(i,s))},s.prototype.map=function(t,e){var i,s=e&&e.filter,o=e&&e.type||this._options.type,n=[],r=this._data;for(var a in r)r.hasOwnProperty(a)&&(i=this._getItem(a,o),(!s||s(i))&&n.push(t(i,a)));return e&&e.order&&this._sort(n,e.order),n},s.prototype._filterFields=function(t,e){var i={};for(var s in t)t.hasOwnProperty(s)&&-1!=e.indexOf(s)&&(i[s]=t[s]);return i},s.prototype._sort=function(t,e){if(o.isString(e)){var i=e;t.sort(function(t,e){var s=t[i],o=e[i];return s>o?1:o>s?-1:0})}else{if("function"!=typeof e)throw new TypeError("Order must be a function or a string");t.sort(e)}},s.prototype.remove=function(t,e){var i,s,o,n=[];if(Array.isArray(t))for(i=0,s=t.length;s>i;i++)o=this._remove(t[i]),null!=o&&n.push(o);else o=this._remove(t),null!=o&&n.push(o);return n.length&&this._trigger("remove",{items:n},e),n},s.prototype._remove=function(t){if(o.isNumber(t)||o.isString(t)){if(this._data[t])return delete this._data[t],t}else if(t instanceof Object){var e=t[this._fieldId];if(e&&this._data[e])return delete this._data[e],e}return null},s.prototype.clear=function(t){var e=Object.keys(this._data);return this._data={},this._trigger("remove",{items:e},t),e},s.prototype.max=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||r>s)&&(i=n,s=r)}return i},s.prototype.min=function(t){var e=this._data,i=null,s=null;for(var o in e)if(e.hasOwnProperty(o)){var n=e[o],r=n[t];null!=r&&(!i||s>r)&&(i=n,s=r)}return i},s.prototype.distinct=function(t){var e,i=this._data,s=[],n=this._options.type&&this._options.type[t]||null,r=0;for(var a in i)if(i.hasOwnProperty(a)){var h=i[a],d=h[t],l=!1;for(e=0;r>e;e++)if(s[e]==d){l=!0;break}l||void 0===d||(s[r]=d,r++)}if(n)for(e=0;ei;i++)e[i]=t.getColumnId(i)||t.getColumnLabel(i);return e},s.prototype._appendRow=function(t,e,i){for(var s=t.addRow(),o=0,n=e.length;n>o;o++){var r=e[o];t.setValue(s,o,i[r])}},t.exports=s},function(t,e,i){function s(t,e){this._data=null,this._ids={},this._options=e||{},this._fieldId="id",this._subscribers={};var i=this;this.listener=function(){i._onEvent.apply(i,arguments)},this.setData(t)}var o=i(1),n=i(3);s.prototype.setData=function(t){var e,i,s;if(this._data){this._data.unsubscribe&&this._data.unsubscribe("*",this.listener),e=[];for(var o in this._ids)this._ids.hasOwnProperty(o)&&e.push(o);this._ids={},this._trigger("remove",{items:e})}if(this._data=t,this._data){for(this._fieldId=this._options.fieldId||this._data&&this._data.options&&this._data.options.fieldId||"id",e=this._data.getIds({filter:this._options&&this._options.filter}),i=0,s=e.length;s>i;i++)o=e[i],this._ids[o]=!0;this._trigger("add",{items:e}),this._data.on&&this._data.on("*",this.listener)}},s.prototype.get=function(){var t,e,i,s=this,n=o.getType(arguments[0]);"String"==n||"Number"==n||"Array"==n?(t=arguments[0],e=arguments[1],i=arguments[2]):(e=arguments[0],i=arguments[1]);var r=o.extend({},this._options,e);this._options.filter&&e&&e.filter&&(r.filter=function(t){return s._options.filter(t)&&e.filter(t)});var a=[];return void 0!=t&&a.push(t),a.push(r),a.push(i),this._data&&this._data.get.apply(this._data,a)},s.prototype.getIds=function(t){var e;if(this._data){var i,s=this._options.filter;i=t&&t.filter?s?function(e){return s(e)&&t.filter(e)}:t.filter:s,e=this._data.getIds({filter:i,order:t&&t.order})}else e=[];return e},s.prototype.getDataSet=function(){for(var t=this;t instanceof s;)t=t._data;return t||null},s.prototype._onEvent=function(t,e,i){var s,o,n,r,a=e&&e.items,h=this._data,d=[],l=[],c=[];if(a&&h){switch(t){case"add":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r&&(this._ids[n]=!0,d.push(n));break;case"update":for(s=0,o=a.length;o>s;s++)n=a[s],r=this.get(n),r?this._ids[n]?l.push(n):(this._ids[n]=!0,d.push(n)):this._ids[n]&&(delete this._ids[n],c.push(n));break;case"remove":for(s=0,o=a.length;o>s;s++)n=a[s],this._ids[n]&&(delete this._ids[n],c.push(n))}d.length&&this._trigger("add",{items:d},i),l.length&&this._trigger("update",{items:l},i),c.length&&this._trigger("remove",{items:c},i)}},s.prototype.on=n.prototype.on,s.prototype.off=n.prototype.off,s.prototype._trigger=n.prototype._trigger,s.prototype.subscribe=s.prototype.on,s.prototype.unsubscribe=s.prototype.off,t.exports=s},function(t){function e(t){this.delay=null,this.max=1/0,this._queue=[],this._timeout=null,this._extended=null,this.setOptions(t)}e.prototype.setOptions=function(t){t&&"undefined"!=typeof t.delay&&(this.delay=t.delay),t&&"undefined"!=typeof t.max&&(this.max=t.max),this._flushIfNeeded()},e.extend=function(t,i){var s=new e(i);if(void 0!==t.flush)throw new Error("Target object already has a property flush");t.flush=function(){s.flush()};var o=[{name:"flush",original:void 0}];if(i&&i.replace)for(var n=0;nthis.max&&this.flush(),clearTimeout(this._timeout),this.queue.length>0&&"number"==typeof this.delay){var t=this;this._timeout=setTimeout(function(){t.flush()},this.delay)}},e.prototype.flush=function(){for(;this._queue.length>0;){var t=this._queue.shift();t.fn.apply(t.context||t.fn,t.args||[])}},t.exports=e},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this.containerElement=t,this.width="400px",this.height="400px",this.margin=10,this.defaultXCenter="55%",this.defaultYCenter="50%",this.xLabel="x",this.yLabel="y",this.zLabel="z";var o=function(t){return t};this.xValueLabel=o,this.yValueLabel=o,this.zValueLabel=o,this.filterLabel="time",this.legendLabel="value",this.style=s.STYLE.DOT,this.showPerspective=!0,this.showGrid=!0,this.keepAspectRatio=!0,this.showShadow=!1,this.showGrayBottom=!1,this.showTooltip=!1,this.verticalRatio=.5,this.animationInterval=1e3,this.animationPreload=!1,this.camera=new p,this.eye=new l(0,0,-1),this.dataTable=null,this.dataPoints=null,this.colX=void 0,this.colY=void 0,this.colZ=void 0,this.colValue=void 0,this.colFilter=void 0,this.xMin=0,this.xStep=void 0,this.xMax=1,this.yMin=0,this.yStep=void 0,this.yMax=1,this.zMin=0,this.zStep=void 0,this.zMax=1,this.valueMin=0,this.valueMax=1,this.xBarWidth=1,this.yBarWidth=1,this.colorAxis="#4D4D4D",this.colorGrid="#D3D3D3",this.colorDot="#7DC1FF",this.colorDotBorder="#3267D2",this.create(),this.setOptions(i),e&&this.setData(e)}function o(t){return"clientX"in t?t.clientX:t.targetTouches[0]&&t.targetTouches[0].clientX||0}function n(t){return"clientY"in t?t.clientY:t.targetTouches[0]&&t.targetTouches[0].clientY||0}var r=i(56),a=i(3),h=i(4),d=i(1),l=i(10),c=i(9),p=i(7),u=i(8),m=i(11),f=i(12);r(s.prototype),s.prototype._setScale=function(){this.scale=new l(1/(this.xMax-this.xMin),1/(this.yMax-this.yMin),1/(this.zMax-this.zMin)),this.keepAspectRatio&&(this.scale.x3&&(this.colFilter=3);else{if(this.style!==s.STYLE.DOTCOLOR&&this.style!==s.STYLE.DOTSIZE&&this.style!==s.STYLE.BARCOLOR&&this.style!==s.STYLE.BARSIZE)throw'Unknown style "'+this.style+'"';this.colX=0,this.colY=1,this.colZ=2,this.colValue=3,t.getNumberOfColumns()>4&&(this.colFilter=4)}},s.prototype.getNumberOfRows=function(t){return t.length},s.prototype.getNumberOfColumns=function(t){var e=0;for(var i in t[0])t[0].hasOwnProperty(i)&&e++;return e},s.prototype.getDistinctValues=function(t,e){for(var i=[],s=0;st[s][e]&&(i.min=t[s][e]),i.maxt;t++){var m=(t-p)/(u-p),g=240*m,v=this._hsv2rgb(g,1,1);c.strokeStyle=v,c.beginPath(),c.moveTo(h,r+t),c.lineTo(a,r+t),c.stroke()}c.strokeStyle=this.colorAxis,c.strokeRect(h,r,i,n)}if(this.style===s.STYLE.DOTSIZE&&(c.strokeStyle=this.colorAxis,c.fillStyle=this.colorDot,c.beginPath(),c.moveTo(h,r),c.lineTo(a,r),c.lineTo(a-i+e,d),c.lineTo(h,d),c.closePath(),c.fill(),c.stroke()),this.style===s.STYLE.DOTCOLOR||this.style===s.STYLE.DOTSIZE){var y=5,b=new f(this.valueMin,this.valueMax,(this.valueMax-this.valueMin)/5,!0);for(b.start(),b.getCurrent()0?this.yMin:this.yMax,o=this._convert3Dto2D(new l(x,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.xValueLabel(i.getCurrent())+" ",o.x,o.y),i.next()}for(g.lineWidth=1,s=void 0===this.defaultYStep,i=new f(this.yMin,this.yMax,this.yStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,o=this._convert3Dto2D(new l(n,i.getCurrent(),this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top",o.y+=b):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(" "+this.yValueLabel(i.getCurrent())+" ",o.x,o.y),i.next();for(g.lineWidth=1,s=void 0===this.defaultZStep,i=new f(this.zMin,this.zMax,this.zStep,s),i.start(),i.getCurrent()0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax;!i.end();)t=this._convert3Dto2D(new l(n,r,i.getCurrent())),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(t.x-b,t.y),g.stroke(),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(this.zValueLabel(i.getCurrent())+" ",t.x-5,t.y),i.next();g.lineWidth=1,t=this._convert3Dto2D(new l(n,r,this.zMin)),e=this._convert3Dto2D(new l(n,r,this.zMax)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),g.lineWidth=1,p=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),p=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),u=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(p.x,p.y),g.lineTo(u.x,u.y),g.stroke(),g.lineWidth=1,t=this._convert3Dto2D(new l(this.xMin,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMin,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke(),t=this._convert3Dto2D(new l(this.xMax,this.yMin,this.zMin)),e=this._convert3Dto2D(new l(this.xMax,this.yMax,this.zMin)),g.strokeStyle=this.colorAxis,g.beginPath(),g.moveTo(t.x,t.y),g.lineTo(e.x,e.y),g.stroke();var w=this.xLabel;w.length>0&&(c=.1/this.scale.y,n=(this.xMin+this.xMax)/2,r=Math.cos(_)>0?this.yMin-c:this.yMax+c,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)>0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)<0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(w,o.x,o.y));var M=this.yLabel;M.length>0&&(d=.1/this.scale.x,n=Math.sin(_)>0?this.xMin-d:this.xMax+d,r=(this.yMin+this.yMax)/2,o=this._convert3Dto2D(new l(n,r,this.zMin)),Math.cos(2*_)<0?(g.textAlign="center",g.textBaseline="top"):Math.sin(2*_)>0?(g.textAlign="right",g.textBaseline="middle"):(g.textAlign="left",g.textBaseline="middle"),g.fillStyle=this.colorAxis,g.fillText(M,o.x,o.y));var S=this.zLabel;S.length>0&&(h=30,n=Math.cos(_)>0?this.xMin:this.xMax,r=Math.sin(_)<0?this.yMin:this.yMax,a=(this.zMin+this.zMax)/2,o=this._convert3Dto2D(new l(n,r,a)),g.textAlign="right",g.textBaseline="middle",g.fillStyle=this.colorAxis,g.fillText(S,o.x-h,o.y))},s.prototype._hsv2rgb=function(t,e,i){var s,o,n,r,a,h;switch(r=i*e,a=Math.floor(t/60),h=r*(1-Math.abs(t/60%2-1)),a){case 0:s=r,o=h,n=0;break;case 1:s=h,o=r,n=0;break;case 2:s=0,o=r,n=h;break;case 3:s=0,o=h,n=r;break;case 4:s=h,o=0,n=r;break;case 5:s=r,o=0,n=h;break;default:s=0,o=0,n=0}return"RGB("+parseInt(255*s)+","+parseInt(255*o)+","+parseInt(255*n)+")"},s.prototype._redrawDataGrid=function(){var t,e,i,o,n,r,a,h,d,c,p,u,m,f=this.frame.canvas,g=f.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(n=0;n0}else r=!0;r?(m=(t.point.z+e.point.z+i.point.z+o.point.z)/4,c=240*(1-(m-this.zMin)*this.scale.z/this.verticalRatio),p=1,this.showShadow?(u=Math.min(1+M.x/S/2,1),a=this._hsv2rgb(c,p,u),h=a):(u=1,a=this._hsv2rgb(c,p,u),h=this.colorAxis)):(a="gray",h=this.colorAxis),d=.5,g.lineWidth=d,g.fillStyle=a,g.strokeStyle=h,g.beginPath(),g.moveTo(t.screen.x,t.screen.y),g.lineTo(e.screen.x,e.screen.y),g.lineTo(o.screen.x,o.screen.y),g.lineTo(i.screen.x,i.screen.y),g.closePath(),g.fill(),g.stroke()}}else for(n=0;np&&(p=0);var u,m,f;this.style===s.STYLE.DOTCOLOR?(u=240*(1-(d.point.value-this.valueMin)*this.scale.value),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)):this.style===s.STYLE.DOTSIZE?(m=this.colorDot,f=this.colorDotBorder):(u=240*(1-(d.point.z-this.zMin)*this.scale.z/this.verticalRatio),m=this._hsv2rgb(u,1,1),f=this._hsv2rgb(u,1,.8)),i.lineWidth=1,i.strokeStyle=f,i.fillStyle=m,i.beginPath(),i.arc(d.screen.x,d.screen.y,p,0,2*Math.PI,!0),i.fill(),i.stroke()}}},s.prototype._redrawDataBar=function(){var t,e,i,o,n=this.frame.canvas,r=n.getContext("2d");if(!(void 0===this.dataPoints||this.dataPoints.length<=0)){for(t=0;t0&&(t=this.dataPoints[0],s.lineWidth=1,s.strokeStyle="blue",s.beginPath(),s.moveTo(t.screen.x,t.screen.y)),e=1;e0&&s.stroke()}},s.prototype._onMouseDown=function(t){if(t=t||window.event,this.leftButtonDown&&this._onMouseUp(t),this.leftButtonDown=t.which?1===t.which:1===t.button,this.leftButtonDown||this.touchDown){this.startMouseX=o(t),this.startMouseY=n(t),this.startStart=new Date(this.start),this.startEnd=new Date(this.end),this.startArmRotation=this.camera.getArmRotation(),this.frame.style.cursor="move";var e=this;this.onmousemove=function(t){e._onMouseMove(t)},this.onmouseup=function(t){e._onMouseUp(t)},d.addEventListener(document,"mousemove",e.onmousemove),d.addEventListener(document,"mouseup",e.onmouseup),d.preventDefault(t)}},s.prototype._onMouseMove=function(t){t=t||window.event;var e=parseFloat(o(t))-this.startMouseX,i=parseFloat(n(t))-this.startMouseY,s=this.startArmRotation.horizontal+e/200,r=this.startArmRotation.vertical+i/200,a=4,h=Math.sin(a/360*2*Math.PI);Math.abs(Math.sin(s))0?1:0>t?-1:0}var s=e[0],o=e[1],n=e[2],r=i((o.x-s.x)*(t.y-s.y)-(o.y-s.y)*(t.x-s.x)),a=i((n.x-o.x)*(t.y-o.y)-(n.y-o.y)*(t.x-o.x)),h=i((s.x-n.x)*(t.y-n.y)-(s.y-n.y)*(t.x-n.x));return!(0!=r&&0!=a&&r!=a||0!=a&&0!=h&&a!=h||0!=r&&0!=h&&r!=h)},s.prototype._dataPointFromXY=function(t,e){var i,o=100,n=null,r=null,a=null,h=new c(t,e);if(this.style===s.STYLE.BAR||this.style===s.STYLE.BARCOLOR||this.style===s.STYLE.BARSIZE)for(i=this.dataPoints.length-1;i>=0;i--){n=this.dataPoints[i];var d=n.surfaces;if(d)for(var l=d.length-1;l>=0;l--){var p=d[l],u=p.corners,m=[u[0].screen,u[1].screen,u[2].screen],f=[u[2].screen,u[3].screen,u[0].screen];if(this._insideTriangle(h,m)||this._insideTriangle(h,f))return n}}else for(i=0;ib)&&o>b&&(a=b,r=n)}}return r},s.prototype._showTooltip=function(t){var e,i,s;this.tooltip?(e=this.tooltip.dom.content,i=this.tooltip.dom.line,s=this.tooltip.dom.dot):(e=document.createElement("div"),e.style.position="absolute",e.style.padding="10px",e.style.border="1px solid #4d4d4d",e.style.color="#1a1a1a",e.style.background="rgba(255,255,255,0.7)",e.style.borderRadius="2px",e.style.boxShadow="5px 5px 10px rgba(128,128,128,0.5)",i=document.createElement("div"),i.style.position="absolute",i.style.height="40px",i.style.width="0",i.style.borderLeft="1px solid #4d4d4d",s=document.createElement("div"),s.style.position="absolute",s.style.height="0",s.style.width="0",s.style.border="5px solid #4d4d4d",s.style.borderRadius="5px",this.tooltip={dataPoint:null,dom:{content:e,line:i,dot:s}}),this._hideTooltip(),this.tooltip.dataPoint=t,e.innerHTML="function"==typeof this.showTooltip?this.showTooltip(t.point):"
x:"+t.point.x+"
y:"+t.point.y+"
z:"+t.point.z+"
",e.style.left="0",e.style.top="0",this.frame.appendChild(e),this.frame.appendChild(i),this.frame.appendChild(s);var o=e.offsetWidth,n=e.offsetHeight,r=i.offsetHeight,a=s.offsetWidth,h=s.offsetHeight,d=t.screen.x-o/2;d=Math.min(Math.max(d,10),this.frame.clientWidth-10-o),i.style.left=t.screen.x+"px",i.style.top=t.screen.y-r+"px",e.style.left=d+"px",e.style.top=t.screen.y-r-n+"px",s.style.left=t.screen.x-a/2+"px",s.style.top=t.screen.y-h/2+"px"},s.prototype._hideTooltip=function(){if(this.tooltip){this.tooltip.dataPoint=null;for(var t in this.tooltip.dom)if(this.tooltip.dom.hasOwnProperty(t)){var e=this.tooltip.dom[t];e&&e.parentNode&&e.parentNode.removeChild(e)}}},t.exports=s},function(t,e,i){function s(){this.armLocation=new o,this.armRotation={},this.armRotation.horizontal=0,this.armRotation.vertical=0,this.armLength=1.7,this.cameraLocation=new o,this.cameraRotation=new o(.5*Math.PI,0,0),this.calculateCameraOrientation()}var o=i(10);s.prototype.setArmLocation=function(t,e,i){this.armLocation.x=t,this.armLocation.y=e,this.armLocation.z=i,this.calculateCameraOrientation()},s.prototype.setArmRotation=function(t,e){void 0!==t&&(this.armRotation.horizontal=t),void 0!==e&&(this.armRotation.vertical=e,this.armRotation.vertical<0&&(this.armRotation.vertical=0),this.armRotation.vertical>.5*Math.PI&&(this.armRotation.vertical=.5*Math.PI)),(void 0!==t||void 0!==e)&&this.calculateCameraOrientation()},s.prototype.getArmRotation=function(){var t={};return t.horizontal=this.armRotation.horizontal,t.vertical=this.armRotation.vertical,t},s.prototype.setArmLength=function(t){void 0!==t&&(this.armLength=t,this.armLength<.71&&(this.armLength=.71),this.armLength>5&&(this.armLength=5),this.calculateCameraOrientation())},s.prototype.getArmLength=function(){return this.armLength},s.prototype.getCameraLocation=function(){return this.cameraLocation},s.prototype.getCameraRotation=function(){return this.cameraRotation},s.prototype.calculateCameraOrientation=function(){this.cameraLocation.x=this.armLocation.x-this.armLength*Math.sin(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.y=this.armLocation.y-this.armLength*Math.cos(this.armRotation.horizontal)*Math.cos(this.armRotation.vertical),this.cameraLocation.z=this.armLocation.z+this.armLength*Math.sin(this.armRotation.vertical),this.cameraRotation.x=Math.PI/2-this.armRotation.vertical,this.cameraRotation.y=0,this.cameraRotation.z=-this.armRotation.horizontal},t.exports=s},function(t,e,i){function s(t,e,i){this.data=t,this.column=e,this.graph=i,this.index=void 0,this.value=void 0,this.values=i.getDistinctValues(t.get(),this.column),this.values.sort(function(t,e){return t>e?1:e>t?-1:0}),this.values.length>0&&this.selectValue(0),this.dataPoints=[],this.loaded=!1,this.onLoadCallback=void 0,i.animationPreload?(this.loaded=!1,this.loadInBackground()):this.loaded=!0}var o=i(4);s.prototype.isLoaded=function(){return this.loaded},s.prototype.getLoadedProgress=function(){for(var t=this.values.length,e=0;this.dataPoints[e];)e++;return Math.round(e/t*100)},s.prototype.getLabel=function(){return this.graph.filterLabel},s.prototype.getColumn=function(){return this.column},s.prototype.getSelectedValue=function(){return void 0===this.index?void 0:this.values[this.index]},s.prototype.getValues=function(){return this.values},s.prototype.getValue=function(t){if(t>=this.values.length)throw"Error: index out of range";return this.values[t]},s.prototype._getDataPoints=function(t){if(void 0===t&&(t=this.index),void 0===t)return[];var e;if(this.dataPoints[t])e=this.dataPoints[t];else{var i={};i.column=this.column,i.value=this.values[t];var s=new o(this.data,{filter:function(t){return t[i.column]==i.value}}).get();e=this.graph._getDataPoints(s),this.dataPoints[t]=e}return e},s.prototype.setOnLoadCallback=function(t){this.onLoadCallback=t},s.prototype.selectValue=function(t){if(t>=this.values.length)throw"Error: index out of range";this.index=t,this.value=this.values[t]},s.prototype.loadInBackground=function(t){void 0===t&&(t=0);var e=this.graph.frame;if(t0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(27);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(30),l=i(21),c=i(22),p=i(29);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(20),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step); -break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if("year"==this.scale){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("month"==this.scale)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if("day"==this.scale){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("weekday"==this.scale){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("hour"==this.scale){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if("minute"==this.scale){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if("second"==this.scale)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if("millisecond"==this.scale){var s=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/s)*s)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(20),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(20),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(20),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r);for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n)); -for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(20),d=i(25),l=i(26),c=i(33),p=i(34),u=i(35),m=i(32),f="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:m,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,v),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[f];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[f];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[f]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:f},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(20);s.prototype=new r,s.prototype.clear=function(){this.groups={},this.amountOfGroups=0},s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var i=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+i+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var s="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(s+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(20),d=i(23),l=i(24),c=i(28),p=i(52),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(31);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"white",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0;var o=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(54),b=i(55),_=i(49);i(50),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.boundingBox.left&&(s=t.boundingBox.left),ot.boundingBox.bottom&&(e=t.boundingBox.bottom),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1; -for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}var i=this;this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",i._onTap.bind(i)),this.hammer.on("doubletap",i._onDoubleTap.bind(i)),this.hammer.on("hold",i._onHold.bind(i)),this.hammer.on("pinch",i._onPinch.bind(i)),this.hammer.on("touch",i._onTouch.bind(i)),this.hammer.on("dragstart",i._onDragStart.bind(i)),this.hammer.on("drag",i._onDrag.bind(i)),this.hammer.on("dragend",i._onDragEnd.bind(i)),this.hammer.on("mousewheel",i._onMouseWheel.bind(i)),this.hammer.on("DOMMouseScroll",i._onMouseWheel.bind(i)),this.hammer.on("mousemove",i._onMouseMoveTitle.bind(i)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",i._onRelease.bind(i)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof f&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj,o=!1;if(void 0==this.popupObj){var n=this.nodes,r=[];for(e in n)if(n.hasOwnProperty(e)){var a=n[e];a.isOverlappingWith(i)&&void 0!==a.getTitle()&&r.push(e)}r.length>0&&(this.popupObj=this.nodes[r[r.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var h=this.edges,d=[];for(e in h)if(h.hasOwnProperty(e)){var l=h[e];l.connected&&void 0!==l.getTitle()&&l.isOverlappingWith(i)&&d.push(e)}d.length>0&&(this.popupObj=this.edges[d[d.length-1]])}if(this.popupObj){if(this.popupObj!=s){var c=this;c.popup||(c.popup=new v(c.frame,c.constants.tooltip)),c.popup.setPosition(t.x-3,t.y-3),c.popup.setText(c.popupObj.getTitle()),c.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(t){var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.width*this.pixelRatio,s=this.frame.canvas.height*this.pixelRatio;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth*this.pixelRatio),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight*this.pixelRatio)},1!=t&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),1!=t&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),1==t&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0));var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._redraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.fromBackup=null,this.toBackup=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(40);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","fontStrokeWidth","fontStrokeColor","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor","labelAlignment"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this))},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1 -},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof this.options.group||"string"==typeof this.options.group&&""!=this.options.group){var s=this.grouplist.get(this.options.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth; -t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize),l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var m=this.options.fontSize*h,f=i-c/2,g=s-m/2;"hanging"==n&&(g+=.5*d,g+=4,l+=4),this.labelDimensions={top:g,left:f,width:c,height:m,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(f,g,c,m)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var p=0;h>p;p++)this.options.fontStrokeWidth&&t.strokeText(a[p],i,l),t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i,lineCount:e.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=D.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=D.DELIMITER);var i=E+n();if(C[i])return N=D.DELIMITER,k=i,o(),void o();if(C[E])return N=D.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=D.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=D.IDENTIFIER)}for(N=D.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==D.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=D.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=D.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==D.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=D.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=D.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=D.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTops;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t,e,i){function s(t,e){this.groupId=t,this.options=e}var o=i(2),n=i(53);s.prototype.getYRange=function(t){for(var e=t[0].y,i=t[0].y,s=0;st[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" ";return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,S=0;M-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=M>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&F(t),_(this,t),this._d=new Date(+t._d),Di===!1&&(Di=!0,Ce.updateOffset(this),Di=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&I(t[s])!==I(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function I(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function P(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function A(t){return R(t)?366:365}function R(t){return t%4===0&&t%100!==0||t%400===0}function F(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Pe]<1||t._a[Pe]>z(t._a[Ie],t._a[ze])?Pe:t._a[Ae]<0||t._a[Ae]>24||24===t._a[Ae]&&(0!==t._a[Re]||0!==t._a[Fe]||0!==t._a[He])?Ae:t._a[Re]<0||t._a[Re]>59?Re:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Ie>e||e>Pe)&&(e=Pe),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+I(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(I(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=I(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Pe]=I(e));break;case"Do":null!=e&&(o[Pe]=I(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=I(e));break;case"YY":o[Ie]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Ie]=I(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Ae]=I(e);break;case"m":case"mm":o[Re]=I(e);break;case"s":case"ss":o[Fe]=I(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=I(1e3*("0."+e));break;case"x":i._d=new Date(I(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=I(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Ie],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Ie],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Ie]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Pe]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Ie],s[Ie]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Pe]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Ae]&&0===t._a[Re]&&0===t._a[Fe]&&0===t._a[He]&&(t._nextDay=!0,t._a[Ae]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Ae]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Ae]<=12&&(t._pf.bigHour=n),t._a[Ae]=f(t._locale,t._a[Ae],t._meridiem),$(t),F(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return I(this.milliseconds()/100)},SS:function(){return w(I(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+":"+w(I(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+w(I(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Di=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:I(h[Pe])*i,h:I(h[Ae])*i,m:I(h[Re])*i,s:I(h[Fe])*i,ms:I(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)L(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return I(t)+(I(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:D(1,"add"),subtract:D(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return R(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return P(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return P(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*I(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===I(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),De(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function D(t,e){return new D.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e)); -break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e}}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id)))},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this); -var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement); -var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=67},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); +},t.exports=s},function(t){function e(t,e){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0}t.exports=e},function(t){function e(t,e,i){this.x=void 0!==t?t:0,this.y=void 0!==e?e:0,this.z=void 0!==i?i:0}e.subtract=function(t,i){var s=new e;return s.x=t.x-i.x,s.y=t.y-i.y,s.z=t.z-i.z,s},e.add=function(t,i){var s=new e;return s.x=t.x+i.x,s.y=t.y+i.y,s.z=t.z+i.z,s},e.avg=function(t,i){return new e((t.x+i.x)/2,(t.y+i.y)/2,(t.z+i.z)/2)},e.crossProduct=function(t,i){var s=new e;return s.x=t.y*i.z-t.z*i.y,s.y=t.z*i.x-t.x*i.z,s.z=t.x*i.y-t.y*i.x,s},e.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.exports=e},function(t,e,i){function s(t,e){if(void 0===t)throw"Error: No container element defined";if(this.container=t,this.visible=e&&void 0!=e.visible?e.visible:!0,this.visible){this.frame=document.createElement("DIV"),this.frame.style.width="100%",this.frame.style.position="relative",this.container.appendChild(this.frame),this.frame.prev=document.createElement("INPUT"),this.frame.prev.type="BUTTON",this.frame.prev.value="Prev",this.frame.appendChild(this.frame.prev),this.frame.play=document.createElement("INPUT"),this.frame.play.type="BUTTON",this.frame.play.value="Play",this.frame.appendChild(this.frame.play),this.frame.next=document.createElement("INPUT"),this.frame.next.type="BUTTON",this.frame.next.value="Next",this.frame.appendChild(this.frame.next),this.frame.bar=document.createElement("INPUT"),this.frame.bar.type="BUTTON",this.frame.bar.style.position="absolute",this.frame.bar.style.border="1px solid red",this.frame.bar.style.width="100px",this.frame.bar.style.height="6px",this.frame.bar.style.borderRadius="2px",this.frame.bar.style.MozBorderRadius="2px",this.frame.bar.style.border="1px solid #7F7F7F",this.frame.bar.style.backgroundColor="#E5E5E5",this.frame.appendChild(this.frame.bar),this.frame.slide=document.createElement("INPUT"),this.frame.slide.type="BUTTON",this.frame.slide.style.margin="0px",this.frame.slide.value=" ",this.frame.slide.style.position="relative",this.frame.slide.style.left="-100px",this.frame.appendChild(this.frame.slide);var i=this;this.frame.slide.onmousedown=function(t){i._onMouseDown(t)},this.frame.prev.onclick=function(t){i.prev(t)},this.frame.play.onclick=function(t){i.togglePlay(t)},this.frame.next.onclick=function(t){i.next(t)}}this.onChangeCallback=void 0,this.values=[],this.index=void 0,this.playTimeout=void 0,this.playInterval=1e3,this.playLoop=!0}var o=i(1);s.prototype.prev=function(){var t=this.getIndex();t>0&&(t--,this.setIndex(t))},s.prototype.next=function(){var t=this.getIndex();t0?this.setIndex(0):this.index=void 0},s.prototype.setIndex=function(t){if(!(ts&&(s=0),s>this.values.length-1&&(s=this.values.length-1),s},s.prototype.indexToLeft=function(t){var e=parseFloat(this.frame.bar.style.width)-this.frame.slide.clientWidth-10,i=t/(this.values.length-1)*e,s=i+3;return s},s.prototype._onMouseMove=function(t){var e=t.clientX-this.startClientX,i=this.startSlideX+e,s=this.leftToIndex(i);this.setIndex(s),o.preventDefault()},s.prototype._onMouseUp=function(){this.frame.style.cursor="auto",o.removeEventListener(document,"mousemove",this.onmousemove),o.removeEventListener(document,"mouseup",this.onmouseup),o.preventDefault()},t.exports=s},function(t){function e(t,e,i,s){this._start=0,this._end=0,this._step=1,this.prettyStep=!0,this.precision=5,this._current=0,this.setRange(t,e,i,s)}e.prototype.setRange=function(t,e,i,s){this._start=t?t:0,this._end=e?e:0,this.setStep(i,s)},e.prototype.setStep=function(t,i){void 0===t||0>=t||(void 0!==i&&(this.prettyStep=i),this._step=this.prettyStep===!0?e.calculatePrettyStep(t):t)},e.calculatePrettyStep=function(t){var e=function(t){return Math.log(t)/Math.LN10},i=Math.pow(10,Math.round(e(t))),s=2*Math.pow(10,Math.round(e(t/2))),o=5*Math.pow(10,Math.round(e(t/5))),n=i;return Math.abs(s-t)<=Math.abs(n-t)&&(n=s),Math.abs(o-t)<=Math.abs(n-t)&&(n=o),0>=n&&(n=1),n},e.prototype.getCurrent=function(){return parseFloat(this._current.toPrecision(this.precision))},e.prototype.getStep=function(){return this._step},e.prototype.start=function(){this._current=this._start-this._start%this._step},e.prototype.next=function(){this._current+=this._step},e.prototype.end=function(){return this._current>this._end},t.exports=e},function(t,e,i){function s(t,e,i,r){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var h=r;r=i,i=h}var u=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:u._toScreen.bind(u),toGlobalScreen:u._toGlobalScreen.bind(u),toTime:u._toTime.bind(u),toGlobalTime:u._toGlobalTime.bind(u)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.itemSet=new p(this.body),this.components.push(this.itemSet),this.itemsData=null,this.groupsData=null,r&&this.setOptions(r),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(32);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.itemSet&&this.itemSet.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){if(void 0==this.options.start||void 0==this.options.end)var s=this._getDataRange();var o=void 0!=this.options.start?this.options.start:s.start,a=void 0!=this.options.end?this.options.end:s.end;this.setWindow(o,a,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.itemSet.setGroups(e)},s.prototype.setSelection=function(t,e){this.itemSet&&this.itemSet.setSelection(t),e&&e.focus&&this.focus(t,e)},s.prototype.getSelection=function(){return this.itemSet&&this.itemSet.getSelection()||[]},s.prototype.focus=function(t,e){if(this.itemsData&&void 0!=t){var i=Array.isArray(t)?t:[t],s=this.itemsData.getDataSet().get(i,{type:{start:"Date",end:"Date"}}),o=null,n=null;if(s.forEach(function(t){var e=t.start.valueOf(),i="end"in t?t.end.valueOf():t.start.valueOf();(null===o||o>e)&&(o=e),(null===n||i>n)&&(n=i)}),null!==o&&null!==n){var r=(o+n)/2,a=Math.max(this.range.end-this.range.start,1.1*(n-o)),h=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(r-a/2,r+a/2,h)}}},s.prototype.getItemRange=function(){var t=this.itemsData.getDataSet(),e=null,i=null;if(t){var s=t.min("start");e=s?o.convert(s.start,"Date").valueOf():null;var n=t.max("start");n&&(i=o.convert(n.start,"Date").valueOf());var r=t.max("end");r&&(i=null==i?o.convert(r.end,"Date").valueOf():Math.max(i,o.convert(r.end,"Date").valueOf()))}return{min:null!=e?new Date(e):null,max:null!=i?new Date(i):null}},t.exports=s},function(t,e,i){function s(t,e,i,s){if(!(Array.isArray(i)||i instanceof n)&&i instanceof Object){var r=s;s=i,i=r}var h=this;this.defaultOptions={start:null,end:null,autoResize:!0,orientation:"bottom",width:null,height:null,maxHeight:null,minHeight:null},this.options=o.deepExtend({},this.defaultOptions),this._create(t),this.components=[],this.body={dom:this.dom,domProps:this.props,emitter:{on:this.on.bind(this),off:this.off.bind(this),emit:this.emit.bind(this)},hiddenDates:[],util:{snap:null,toScreen:h._toScreen.bind(h),toGlobalScreen:h._toGlobalScreen.bind(h),toTime:h._toTime.bind(h),toGlobalTime:h._toGlobalTime.bind(h)}},this.range=new a(this.body),this.components.push(this.range),this.body.range=this.range,this.timeAxis=new d(this.body),this.components.push(this.timeAxis),this.body.util.snap=this.timeAxis.snap.bind(this.timeAxis),this.currentTime=new l(this.body),this.components.push(this.currentTime),this.customTime=new c(this.body),this.components.push(this.customTime),this.linegraph=new p(this.body),this.components.push(this.linegraph),this.itemsData=null,this.groupsData=null,s&&this.setOptions(s),i&&this.setGroups(i),e?this.setItems(e):this.redraw()}var o=(i(56),i(45),i(1)),n=i(3),r=i(4),a=i(17),h=i(46),d=i(35),l=i(26),c=i(27),p=i(34);s.prototype=new h,s.prototype.setItems=function(t){var e,i=null==this.itemsData;if(e=t?t instanceof n||t instanceof r?t:new n(t,{type:{start:"Date",end:"Date"}}):null,this.itemsData=e,this.linegraph&&this.linegraph.setItems(e),i)if(void 0!=this.options.start||void 0!=this.options.end){var s=void 0!=this.options.start?this.options.start:null,o=void 0!=this.options.end?this.options.end:null;this.setWindow(s,o,{animate:!1})}else this.fit({animate:!1})},s.prototype.setGroups=function(t){var e;e=t?t instanceof n||t instanceof r?t:new n(t):null,this.groupsData=e,this.linegraph.setGroups(e)},s.prototype.getLegend=function(t,e,i){return void 0===e&&(e=15),void 0===i&&(i=15),void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].getLegend(e,i):"cannot find group:"+t},s.prototype.isGroupVisible=function(t){return void 0!==this.linegraph.groups[t]?this.linegraph.groups[t].visible&&(void 0===this.linegraph.options.groups.visibility[t]||1==this.linegraph.options.groups.visibility[t]):!1},s.prototype.getItemRange=function(){var t=null,e=null;for(var i in this.linegraph.groups)if(this.linegraph.groups.hasOwnProperty(i)&&1==this.linegraph.groups[i].visible)for(var s=0;sr?r:t,e=null==e?r:r>e?r:e}return{min:null!=t?new Date(t):null,max:null!=e?new Date(e):null}},t.exports=s},function(t,e,i){var s=i(44);e.convertHiddenOptions=function(t,e){if(t.hiddenDates=[],e&&1==Array.isArray(e)){for(var i=0;i=4*a){var p=0,u=n.clone();switch(i[h].repeat){case"daily":d.day()!=l.day()&&(p=1),d.dayOfYear(o.dayOfYear()),d.year(o.year()),d.subtract(7,"days"),l.dayOfYear(o.dayOfYear()),l.year(o.year()),l.subtract(7-p,"days"),u.add(1,"weeks");break;case"weekly":var m=l.diff(d,"days"),f=d.day();d.date(o.date()),d.month(o.month()),d.year(o.year()),l=d.clone(),d.day(f),l.day(f),l.add(m,"days"),d.subtract(1,"weeks"),l.subtract(1,"weeks"),u.add(1,"weeks");break;case"monthly":d.month()!=l.month()&&(p=1),d.month(o.month()),d.year(o.year()),d.subtract(1,"months"),l.month(o.month()),l.year(o.year()),l.subtract(1,"months"),l.add(p,"months"),u.add(1,"months");break;case"yearly":d.year()!=l.year()&&(p=1),d.year(o.year()),d.subtract(1,"years"),l.year(o.year()),l.subtract(1,"years"),l.add(p,"years"),u.add(1,"years");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}for(;u>d;)switch(t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()}),i[h].repeat){case"daily":d.add(1,"days"),l.add(1,"days");break;case"weekly":d.add(1,"weeks"),l.add(1,"weeks");break;case"monthly":d.add(1,"months"),l.add(1,"months");break;case"yearly":d.add(1,"y"),l.add(1,"y");break;default:return void console.log("Wrong repeat format, allowed are: daily, weekly, monthly, yearly. Given:",i[h].repeat)}t.hiddenDates.push({start:d.valueOf(),end:l.valueOf()})}}e.removeDuplicates(t);var g=e.isHidden(t.range.start,t.hiddenDates),v=e.isHidden(t.range.end,t.hiddenDates),y=t.range.start,b=t.range.end;1==g.hidden&&(y=1==t.range.startToFront?g.startDate-1:g.endDate+1),1==v.hidden&&(b=1==t.range.endToFront?v.startDate-1:v.endDate+1),(1==g.hidden||1==v.hidden)&&t.range._applyRange(y,b)}},e.removeDuplicates=function(t){for(var e=t.hiddenDates,i=[],s=0;s=e[s].start&&e[o].end<=e[s].end?e[o].remove=!0:e[o].start>=e[s].start&&e[o].start<=e[s].end?(e[s].end=e[o].end,e[o].remove=!0):e[o].end>=e[s].start&&e[o].end<=e[s].end&&(e[s].start=e[o].start,e[o].remove=!0));for(var s=0;s=r&&a>o){i=!0;break}}if(1==i&&o=e&&i>r&&(s+=r-n)}return s},e.correctTimeForHidden=function(t,i,o){return o=s(o).toDate().valueOf(),o-=e.getHiddenDurationBefore(t,i,o)},e.getHiddenDurationBefore=function(t,e,i){var o=0;i=s(i).toDate().valueOf();for(var n=0;n=e.start&&a=a&&(o+=a-r)}return o},e.getAccumulatedHiddenDuration=function(t,e,i){for(var s=0,o=0,n=e.start,r=0;r=e.start&&h=i)break;s+=h-a}}return s},e.snapAwayFromHidden=function(t,i,s,o){var n=e.isHidden(i,t);return 1==n.hidden?0>s?1==o?n.startDate-(n.endDate-i)-1:n.startDate-1:1==o?n.endDate+(i-n.startDate)+1:n.endDate+1:i},e.isHidden=function(t,e){for(var i=0;i=s&&o>t)return{hidden:!0,startDate:s,endDate:o}}return{hidden:!1,startDate:s,endDate:o}}},function(t){function e(t,e,i,s,o,n){this.current=0,this.autoScale=!0,this.stepIndex=0,this.step=1,this.scale=1,this.marginStart,this.marginEnd,this.deadSpace=0,this.majorSteps=[1,2,5,10],this.minorSteps=[.25,.5,1,2],this.alignZeros=n,this.setRange(t,e,i,s,o)}e.prototype.setRange=function(t,e,i,s,o){this._start=void 0===o.min?t:o.min,this._end=void 0===o.max?e:o.max,this._start==this._end&&(this._start-=.75,this._end+=1),1==this.autoScale&&this.setMinimumStep(i,s),this.setFirst(o)},e.prototype.setMinimumStep=function(t,e){var i=this._end-this._start,s=1.2*i,o=t*(s/e),n=Math.round(Math.log(s)/Math.LN10),r=-1,a=Math.pow(10,n),h=0;0>n&&(h=n);for(var d=!1,l=h;Math.abs(l)<=Math.abs(n);l++){a=Math.pow(10,l);for(var c=0;c=o){d=!0,r=c;break}}if(1==d)break}this.stepIndex=r,this.scale=a,this.step=a*this.minorSteps[r]},e.prototype.setFirst=function(t){void 0===t&&(t={});var e=void 0===t.min?this._start-2*this.scale*this.minorSteps[this.stepIndex]:t.min,i=void 0===t.max?this._end+this.scale*this.minorSteps[this.stepIndex]:t.max;this.marginEnd=void 0===t.max?this.roundToMinor(i):t.max,this.marginStart=void 0===t.min?this.roundToMinor(e):t.min,1==this.alignZeros&&(this.marginEnd-this.marginStart)%this.step!=0&&(this.marginEnd+=this.marginEnd%this.step),this.deadSpace=this.roundToMinor(i)-i+this.roundToMinor(e)-e,this.marginRange=this.marginEnd-this.marginStart,this.current=this.marginEnd},e.prototype.roundToMinor=function(t){var e=t-t%(this.scale*this.minorSteps[this.stepIndex]);return t%(this.scale*this.minorSteps[this.stepIndex])>.5*this.scale*this.minorSteps[this.stepIndex]?e+this.scale*this.minorSteps[this.stepIndex]:e},e.prototype.hasNext=function(){return this.current>=this.marginStart},e.prototype.next=function(){var t=this.current;this.current-=this.step,this.current==t&&(this.current=this._end)},e.prototype.previous=function(){this.current+=this.step,this.marginEnd+=this.step,this.marginRange=this.marginEnd-this.marginStart},e.prototype.getCurrent=function(t){var e=Math.abs(this.current)0;s--){if("0"!=i[s]){if("."==i[s]||","==i[s]){i=i.slice(0,s);break}break}i=i.slice(0,s)}}else{var o="",n=i.indexOf("e");if(-1!=n&&(o=i.slice(n),i=i.slice(0,n)),n=Math.max(i.indexOf(","),i.indexOf(".")),-1===n?(0!==t&&(i+="."),n=i.length+t):0!==t&&(n+=t+1),n>i.length)for(var r=n-i.length;r>0;r--)i+="0";else i=i.slice(0,n);i+=o}return i},e.prototype.snap=function(){},e.prototype.isMajor=function(){return this.current%(this.scale*this.majorSteps[this.stepIndex])==0},t.exports=e},function(t,e,i){function s(t,e){var i=h().hours(0).minutes(0).seconds(0).milliseconds(0);this.start=i.clone().add(-3,"days").valueOf(),this.end=i.clone().add(4,"days").valueOf(),this.body=t,this.deltaDifference=0,this.scaleOffset=0,this.startToFront=!1,this.endToFront=!0,this.defaultOptions={start:null,end:null,direction:"horizontal",moveable:!0,zoomable:!0,min:null,max:null,zoomMin:10,zoomMax:31536e10},this.options=r.extend({},this.defaultOptions),this.props={touch:{}},this.animateTimer=null,this.body.emitter.on("dragstart",this._onDragStart.bind(this)),this.body.emitter.on("drag",this._onDrag.bind(this)),this.body.emitter.on("dragend",this._onDragEnd.bind(this)),this.body.emitter.on("hold",this._onHold.bind(this)),this.body.emitter.on("mousewheel",this._onMouseWheel.bind(this)),this.body.emitter.on("DOMMouseScroll",this._onMouseWheel.bind(this)),this.body.emitter.on("touch",this._onTouch.bind(this)),this.body.emitter.on("pinch",this._onPinch.bind(this)),this.setOptions(e)}function o(t){if("horizontal"!=t&&"vertical"!=t)throw new TypeError('Unknown direction "'+t+'". Choose "horizontal" or "vertical".')}function n(t,e){return{x:t.pageX-r.getAbsoluteLeft(e),y:t.pageY-r.getAbsoluteTop(e)}}var r=i(1),a=i(47),h=i(44),d=i(25),l=i(15);s.prototype=new d,s.prototype.setOptions=function(t){if(t){var e=["direction","min","max","zoomMin","zoomMax","moveable","zoomable","activate","hiddenDates"];r.selectiveExtend(e,this.options,t),("start"in t||"end"in t)&&this.setRange(t.start,t.end)}},s.prototype.setRange=function(t,e,i,s){s!==!0&&(s=!1);var o=void 0!=t?r.convert(t,"Date").valueOf():null,n=void 0!=e?r.convert(e,"Date").valueOf():null;if(this._cancelAnimation(),i){var a=this,h=this.start,d=this.end,c="number"==typeof i?i:500,p=(new Date).valueOf(),u=!1,m=function(){if(!a.props.touch.dragging){var t=(new Date).valueOf(),e=t-p,i=e>c,g=i||null===o?o:r.easeInOutQuad(e,h,o,c),v=i||null===n?n:r.easeInOutQuad(e,d,n,c);f=a._applyRange(g,v),l.updateHiddenDates(a.body,a.options.hiddenDates),u=u||f,f&&a.body.emitter.emit("rangechange",{start:new Date(a.start),end:new Date(a.end),byUser:s}),i?u&&a.body.emitter.emit("rangechanged",{start:new Date(a.start),end:new Date(a.end),byUser:s}):a.animateTimer=setTimeout(m,20)}};return m()}var f=this._applyRange(o,n);if(l.updateHiddenDates(this.body,this.options.hiddenDates),f){var g={start:new Date(this.start),end:new Date(this.end),byUser:s};this.body.emitter.emit("rangechange",g),this.body.emitter.emit("rangechanged",g)}},s.prototype._cancelAnimation=function(){this.animateTimer&&(clearTimeout(this.animateTimer),this.animateTimer=null)},s.prototype._applyRange=function(t,e){var i,s=null!=t?r.convert(t,"Date").valueOf():this.start,o=null!=e?r.convert(e,"Date").valueOf():this.end,n=null!=this.options.max?r.convert(this.options.max,"Date").valueOf():null,a=null!=this.options.min?r.convert(this.options.min,"Date").valueOf():null;if(isNaN(s)||null===s)throw new Error('Invalid start "'+t+'"');if(isNaN(o)||null===o)throw new Error('Invalid end "'+e+'"');if(s>o&&(o=s),null!==a&&a>s&&(i=a-s,s+=i,o+=i,null!=n&&o>n&&(o=n)),null!==n&&o>n&&(i=o-n,s-=i,o-=i,null!=a&&a>s&&(s=a)),null!==this.options.zoomMin){var h=parseFloat(this.options.zoomMin);0>h&&(h=0),h>o-s&&(this.end-this.start===h?(s=this.start,o=this.end):(i=h-(o-s),s-=i/2,o+=i/2))}if(null!==this.options.zoomMax){var d=parseFloat(this.options.zoomMax);0>d&&(d=0),o-s>d&&(this.end-this.start===d?(s=this.start,o=this.end):(i=o-s-d,s+=i/2,o-=i/2))}var l=this.start!=s||this.end!=o;return s>=this.start&&s<=this.end||o>=this.start&&o<=this.end||this.start>=s&&this.start<=o||this.end>=s&&this.end<=o||this.body.emitter.emit("checkRangedItems"),this.start=s,this.end=o,l},s.prototype.getRange=function(){return{start:this.start,end:this.end}},s.prototype.conversion=function(t,e){return s.conversion(this.start,this.end,t,e)},s.conversion=function(t,e,i,s){return void 0===s&&(s=0),0!=i&&e-t!=0?{offset:t,scale:i/(e-t-s)}:{offset:0,scale:1}},s.prototype._onDragStart=function(){this.deltaDifference=0,this.previousDelta=0,this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.dragging=!0,this.body.dom.root&&(this.body.dom.root.style.cursor="move"))},s.prototype._onDrag=function(t){if(this.options.moveable&&this.props.touch.allowDragging){var e=this.options.direction;o(e);var i="horizontal"==e?t.gesture.deltaX:t.gesture.deltaY;i-=this.deltaDifference;var s=this.props.touch.end-this.props.touch.start,n=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end);s-=n;var r="horizontal"==e?this.body.domProps.center.width:this.body.domProps.center.height,a=-i/r*s,h=this.props.touch.start+a,d=this.props.touch.end+a,c=l.snapAwayFromHidden(this.body.hiddenDates,h,this.previousDelta-i,!0),p=l.snapAwayFromHidden(this.body.hiddenDates,d,this.previousDelta-i,!0);if(c!=h||p!=d)return this.deltaDifference+=i,this.props.touch.start=c,this.props.touch.end=p,void this._onDrag(t);this.previousDelta=i,this._applyRange(h,d),this.body.emitter.emit("rangechange",{start:new Date(this.start),end:new Date(this.end),byUser:!0})}},s.prototype._onDragEnd=function(){this.options.moveable&&this.props.touch.allowDragging&&(this.props.touch.dragging=!1,this.body.dom.root&&(this.body.dom.root.style.cursor="auto"),this.body.emitter.emit("rangechanged",{start:new Date(this.start),end:new Date(this.end),byUser:!0}))},s.prototype._onMouseWheel=function(t){if(this.options.zoomable&&this.options.moveable){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i;i=0>e?1-e/5:1/(1+e/5);var s=a.fakeGesture(this,t),o=n(s.center,this.body.dom.center),r=this._pointerToDate(o);this.zoom(i,r,e)}t.preventDefault()}},s.prototype._onTouch=function(){this.props.touch.start=this.start,this.props.touch.end=this.end,this.props.touch.allowDragging=!0,this.props.touch.center=null,this.scaleOffset=0,this.deltaDifference=0},s.prototype._onHold=function(){this.props.touch.allowDragging=!1},s.prototype._onPinch=function(t){if(this.options.zoomable&&this.options.moveable&&(this.props.touch.allowDragging=!1,t.gesture.touches.length>1)){this.props.touch.center||(this.props.touch.center=n(t.gesture.center,this.body.dom.center));var e=1/(t.gesture.scale+this.scaleOffset),i=this._pointerToDate(this.props.touch.center),s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,i),r=s-o,a=i-o+(this.props.touch.start-(i-o))*e,h=i+r+(this.props.touch.end-(i+r))*e;this.startToFront=1-e>0?!1:!0,this.endToFront=e-1>0?!1:!0;var d=l.snapAwayFromHidden(this.body.hiddenDates,a,1-e,!0),c=l.snapAwayFromHidden(this.body.hiddenDates,h,e-1,!0);(d!=a||c!=h)&&(this.props.touch.start=d,this.props.touch.end=c,this.scaleOffset=1-t.gesture.scale,a=d,h=c),this.setRange(a,h,!1,!0),this.startToFront=!1,this.endToFront=!0}},s.prototype._pointerToDate=function(t){var e,i=this.options.direction;if(o(i),"horizontal"==i)return this.body.util.toTime(t.x).valueOf();var s=this.body.domProps.center.height;return e=this.conversion(s),t.y/e.scale+e.offset},s.prototype.zoom=function(t,e,i){null==e&&(e=(this.start+this.end)/2);var s=l.getHiddenDurationBetween(this.body.hiddenDates,this.start,this.end),o=l.getHiddenDurationBefore(this.body.hiddenDates,this,e),n=s-o,r=e-o+(this.start-(e-o))*t,a=e+n+(this.end-(e+n))*t;this.startToFront=i>0?!1:!0,this.endToFront=-i>0?!1:!0;var h=l.snapAwayFromHidden(this.body.hiddenDates,r,i,!0),d=l.snapAwayFromHidden(this.body.hiddenDates,a,-i,!0);(h!=r||d!=a)&&(r=h,a=d),this.setRange(r,a,!1,!0),this.startToFront=!1,this.endToFront=!0},s.prototype.move=function(t){var e=this.end-this.start,i=this.start+e*t,s=this.end+e*t;this.start=i,this.end=s},s.prototype.moveTo=function(t){var e=(this.start+this.end)/2,i=e-t,s=this.start-i,o=this.end-i;this.setRange(s,o)},t.exports=s},function(t,e){var i=.001;e.orderByStart=function(t){t.sort(function(t,e){return t.data.start-e.data.start})},e.orderByEnd=function(t){t.sort(function(t,e){var i="end"in t.data?t.data.end:t.data.start,s="end"in e.data?e.data.end:e.data.start;return i-s})},e.stack=function(t,i,s){var o,n;if(s)for(o=0,n=t.length;n>o;o++)t[o].top=null;for(o=0,n=t.length;n>o;o++){var r=t[o];if(r.stack&&null===r.top){r.top=i.axis;do{for(var a=null,h=0,d=t.length;d>h;h++){var l=t[h];if(null!==l.top&&l!==r&&l.stack&&e.collision(r,l,i.item)){a=l;break}}null!=a&&(r.top=a.top+a.height+i.item.vertical)}while(a)}}},e.nostack=function(t,e,i){var s,o,n;for(s=0,o=t.length;o>s;s++)if(void 0!==t[s].data.subgroup){n=e.axis;for(var r in i)i.hasOwnProperty(r)&&1==i[r].visible&&i[r].indexe.left&&t.top-s.vertical+ie.top}},function(t,e,i){function s(t,e,i,o){this.current=new Date,this._start=new Date,this._end=new Date,this.autoScale=!0,this.scale="day",this.step=1,this.setRange(t,e,i),this.switchedDay=!1,this.switchedMonth=!1,this.switchedYear=!1,this.hiddenDates=o,void 0===o&&(this.hiddenDates=[]),this.format=s.FORMAT}var o=i(44),n=i(15),r=i(1);s.FORMAT={minorLabels:{millisecond:"SSS",second:"s",minute:"HH:mm",hour:"HH:mm",weekday:"ddd D",day:"D",month:"MMM",year:"YYYY"},majorLabels:{millisecond:"HH:mm:ss",second:"D MMMM HH:mm",minute:"ddd D MMMM",hour:"ddd D MMMM",weekday:"MMMM YYYY",day:"MMMM YYYY",month:"YYYY",year:""}},s.prototype.setFormat=function(t){var e=r.deepExtend({},s.FORMAT);this.format=r.deepExtend(e,t)},s.prototype.setRange=function(t,e,i){if(!(t instanceof Date&&e instanceof Date))throw"No legal start or end date in method setRange";this._start=void 0!=t?new Date(t.valueOf()):new Date,this._end=void 0!=e?new Date(e.valueOf()):new Date,this.autoScale&&this.setMinimumStep(i)},s.prototype.first=function(){this.current=new Date(this._start.valueOf()),this.roundToMinor()},s.prototype.roundToMinor=function(){switch(this.scale){case"year":this.current.setFullYear(this.step*Math.floor(this.current.getFullYear()/this.step)),this.current.setMonth(0);case"month":this.current.setDate(1);case"day":case"weekday":this.current.setHours(0);case"hour":this.current.setMinutes(0);case"minute":this.current.setSeconds(0);case"second":this.current.setMilliseconds(0)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.setMilliseconds(this.current.getMilliseconds()-this.current.getMilliseconds()%this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()-this.current.getSeconds()%this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()-this.current.getMinutes()%this.step);break;case"hour":this.current.setHours(this.current.getHours()-this.current.getHours()%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()-1-(this.current.getDate()-1)%this.step+1);break;case"month":this.current.setMonth(this.current.getMonth()-this.current.getMonth()%this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()-this.current.getFullYear()%this.step)}},s.prototype.hasNext=function(){return this.current.valueOf()<=this._end.valueOf()},s.prototype.next=function(){var t=this.current.valueOf();if(this.current.getMonth()<6)switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current=new Date(this.current.valueOf()+1e3*this.step);break;case"minute":this.current=new Date(this.current.valueOf()+1e3*this.step*60);break;case"hour":this.current=new Date(this.current.valueOf()+1e3*this.step*60*60);var e=this.current.getHours();this.current.setHours(e-e%this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step); +break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}else switch(this.scale){case"millisecond":this.current=new Date(this.current.valueOf()+this.step);break;case"second":this.current.setSeconds(this.current.getSeconds()+this.step);break;case"minute":this.current.setMinutes(this.current.getMinutes()+this.step);break;case"hour":this.current.setHours(this.current.getHours()+this.step);break;case"weekday":case"day":this.current.setDate(this.current.getDate()+this.step);break;case"month":this.current.setMonth(this.current.getMonth()+this.step);break;case"year":this.current.setFullYear(this.current.getFullYear()+this.step)}if(1!=this.step)switch(this.scale){case"millisecond":this.current.getMilliseconds()0&&(this.step=e),this.autoScale=!1},s.prototype.setAutoScale=function(t){this.autoScale=t},s.prototype.setMinimumStep=function(t){if(void 0!=t){var e=31104e6,i=2592e6,s=864e5,o=36e5,n=6e4,r=1e3,a=1;1e3*e>t&&(this.scale="year",this.step=1e3),500*e>t&&(this.scale="year",this.step=500),100*e>t&&(this.scale="year",this.step=100),50*e>t&&(this.scale="year",this.step=50),10*e>t&&(this.scale="year",this.step=10),5*e>t&&(this.scale="year",this.step=5),e>t&&(this.scale="year",this.step=1),3*i>t&&(this.scale="month",this.step=3),i>t&&(this.scale="month",this.step=1),5*s>t&&(this.scale="day",this.step=5),2*s>t&&(this.scale="day",this.step=2),s>t&&(this.scale="day",this.step=1),s/2>t&&(this.scale="weekday",this.step=1),4*o>t&&(this.scale="hour",this.step=4),o>t&&(this.scale="hour",this.step=1),15*n>t&&(this.scale="minute",this.step=15),10*n>t&&(this.scale="minute",this.step=10),5*n>t&&(this.scale="minute",this.step=5),n>t&&(this.scale="minute",this.step=1),15*r>t&&(this.scale="second",this.step=15),10*r>t&&(this.scale="second",this.step=10),5*r>t&&(this.scale="second",this.step=5),r>t&&(this.scale="second",this.step=1),200*a>t&&(this.scale="millisecond",this.step=200),100*a>t&&(this.scale="millisecond",this.step=100),50*a>t&&(this.scale="millisecond",this.step=50),10*a>t&&(this.scale="millisecond",this.step=10),5*a>t&&(this.scale="millisecond",this.step=5),a>t&&(this.scale="millisecond",this.step=1)}},s.prototype.snap=function(t){var e=new Date(t.valueOf());if("year"==this.scale){var i=e.getFullYear()+Math.round(e.getMonth()/12);e.setFullYear(Math.round(i/this.step)*this.step),e.setMonth(0),e.setDate(0),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("month"==this.scale)e.getDate()>15?(e.setDate(1),e.setMonth(e.getMonth()+1)):e.setDate(1),e.setHours(0),e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0);else if("day"==this.scale){switch(this.step){case 5:case 2:e.setHours(24*Math.round(e.getHours()/24));break;default:e.setHours(12*Math.round(e.getHours()/12))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("weekday"==this.scale){switch(this.step){case 5:case 2:e.setHours(12*Math.round(e.getHours()/12));break;default:e.setHours(6*Math.round(e.getHours()/6))}e.setMinutes(0),e.setSeconds(0),e.setMilliseconds(0)}else if("hour"==this.scale){switch(this.step){case 4:e.setMinutes(60*Math.round(e.getMinutes()/60));break;default:e.setMinutes(30*Math.round(e.getMinutes()/30))}e.setSeconds(0),e.setMilliseconds(0)}else if("minute"==this.scale){switch(this.step){case 15:case 10:e.setMinutes(5*Math.round(e.getMinutes()/5)),e.setSeconds(0);break;case 5:e.setSeconds(60*Math.round(e.getSeconds()/60));break;default:e.setSeconds(30*Math.round(e.getSeconds()/30))}e.setMilliseconds(0)}else if("second"==this.scale)switch(this.step){case 15:case 10:e.setSeconds(5*Math.round(e.getSeconds()/5)),e.setMilliseconds(0);break;case 5:e.setMilliseconds(1e3*Math.round(e.getMilliseconds()/1e3));break;default:e.setMilliseconds(500*Math.round(e.getMilliseconds()/500))}else if("millisecond"==this.scale){var s=this.step>5?this.step/2:1;e.setMilliseconds(Math.round(e.getMilliseconds()/s)*s)}return e},s.prototype.isMajor=function(){if(1==this.switchedYear)switch(this.switchedYear=!1,this.scale){case"year":case"month":case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedMonth)switch(this.switchedMonth=!1,this.scale){case"weekday":case"day":case"hour":case"minute":case"second":case"millisecond":return!0;default:return!1}else if(1==this.switchedDay)switch(this.switchedDay=!1,this.scale){case"millisecond":case"second":case"minute":case"hour":return!0;default:return!1}switch(this.scale){case"millisecond":return 0==this.current.getMilliseconds();case"second":return 0==this.current.getSeconds();case"minute":return 0==this.current.getHours()&&0==this.current.getMinutes();case"hour":return 0==this.current.getHours();case"weekday":case"day":return 1==this.current.getDate();case"month":return 0==this.current.getMonth();case"year":return!1;default:return!1}},s.prototype.getLabelMinor=function(t){void 0==t&&(t=this.current);var e=this.format.minorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getLabelMajor=function(t){void 0==t&&(t=this.current);var e=this.format.majorLabels[this.scale];return e&&e.length>0?o(t).format(e):""},s.prototype.getClassName=function(){function t(t){return t/h%2==0?" even":" odd"}function e(t){return t.isSame(new Date,"day")?" today":t.isSame(o().add(1,"day"),"day")?" tomorrow":t.isSame(o().add(-1,"day"),"day")?" yesterday":""}function i(t){return t.isSame(new Date,"week")?" current-week":""}function s(t){return t.isSame(new Date,"month")?" current-month":""}function n(t){return t.isSame(new Date,"year")?" current-year":""}var r=o(this.current),a=r.locale?r.locale("en"):r.lang("en"),h=this.step;switch(this.scale){case"millisecond":return t(a.milliseconds()).trim();case"second":return t(a.seconds()).trim();case"minute":return t(a.minutes()).trim();case"hour":var d=a.hours();return 4==this.step&&(d=d+"-"+(d+4)),d+"h"+e(a)+t(a.hours());case"weekday":return a.format("dddd").toLowerCase()+e(a)+i(a)+t(a.date());case"day":var l=a.date(),c=a.format("MMMM").toLowerCase();return"day"+l+" "+c+s(a)+t(l-1);case"month":return a.format("MMMM").toLowerCase()+s(a)+t(a.month());case"year":var p=a.year();return"year"+p+n(a)+t(p);default:return""}},t.exports=s},function(t,e,i){function s(t,e,i){this.id=null,this.parent=null,this.data=t,this.dom=null,this.conversion=e||{},this.options=i||{},this.selected=!1,this.displayed=!1,this.dirty=!0,this.top=null,this.left=null,this.width=null,this.height=null}var o=i(45),n=i(1);s.prototype.stack=!0,s.prototype.select=function(){this.selected=!0,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.unselect=function(){this.selected=!1,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setData=function(t){this.data=t,this.dirty=!0,this.displayed&&this.redraw()},s.prototype.setParent=function(t){this.displayed?(this.hide(),this.parent=t,this.parent&&this.show()):this.parent=t},s.prototype.isVisible=function(){return!1},s.prototype.show=function(){return!1},s.prototype.hide=function(){return!1},s.prototype.redraw=function(){},s.prototype.repositionX=function(){},s.prototype.repositionY=function(){},s.prototype._repaintDeleteButton=function(t){if(this.selected&&this.options.editable.remove&&!this.dom.deleteButton){var e=this,i=document.createElement("div");i.className="delete",i.title="Delete this item",o(i,{preventDefault:!0}).on("tap",function(t){e.parent.removeFromDataSet(e),t.stopPropagation()}),t.appendChild(i),this.dom.deleteButton=i}else!this.selected&&this.dom.deleteButton&&(this.dom.deleteButton.parentNode&&this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton),this.dom.deleteButton=null)},s.prototype._updateContents=function(t){var e;if(this.options.template){var i=this.parent.itemSet.itemsData.get(this.id);e=this.options.template(i)}else e=this.data.content;if(e!==this.content){if(e instanceof Element)t.innerHTML="",t.appendChild(e);else if(void 0!=e)t.innerHTML=e;else if("background"!=this.data.type||void 0!==this.data.content)throw new Error('Property "content" missing in item '+this.id);this.content=e}},s.prototype._updateTitle=function(t){null!=this.data.title?t.title=this.data.title||"":t.removeAttribute("title")},s.prototype._updateDataAttributes=function(t){if(this.options.dataAttributes&&this.options.dataAttributes.length>0){var e=[];if(Array.isArray(this.options.dataAttributes))e=this.options.dataAttributes;else{if("all"!=this.options.dataAttributes)return;e=Object.keys(this.data)}for(var i=0;it.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.background;if(!e)throw new Error("Cannot redraw item: parent has no background container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.content),this._updateDataAttributes(this.dom.content),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.props.content.width=this.dom.content.offsetWidth,this.height=0,this.dirty=!1}},s.prototype.show=r.prototype.show,s.prototype.hide=r.prototype.hide,s.prototype.repositionX=r.prototype.repositionX,s.prototype.repositionY=function(t){var e="top"===this.options.orientation;this.dom.content.style.top=e?"":"0",this.dom.content.style.bottom=e?"0":"";var i;if(void 0!==this.data.subgroup){var s=this.data.subgroup,o=this.parent.subgroups,r=o[s].index;if(1==e){i=this.parent.subgroups[s].height+t.item.vertical,i+=0==r?t.axis-.5*t.item.vertical:0;var a=this.parent.top;for(var h in o)o.hasOwnProperty(h)&&1==o[h].visible&&o[h].indexr&&(a+=o[h].height+t.item.vertical);i=this.parent.subgroups[s].height+t.item.vertical,this.dom.box.style.top=a+"px",this.dom.box.style.bottom=""}}else this.parent instanceof n?(i=Math.max(this.parent.height,this.parent.itemSet.body.domProps.center.height,this.parent.itemSet.body.domProps.centerContainer.height),this.dom.box.style.top=e?"0":"",this.dom.box.style.bottom=e?"":"0"):(i=this.parent.height,this.dom.box.style.top=this.parent.top+"px",this.dom.box.style.bottom="");this.dom.box.style.height=i+"px"},t.exports=s},function(t,e,i){function s(t,e,i){if(this.props={dot:{width:0,height:0},line:{width:0,height:0}},t&&void 0==t.start)throw new Error('Property "start" missing in item '+t);o.call(this,t,e,i)}{var o=i(20);i(1)}s.prototype=new o(null,null,null),s.prototype.isVisible=function(t){var e=(t.end-t.start)/4;return this.data.start>t.start-e&&this.data.startt.start-e&&this.data.startt.start},s.prototype.redraw=function(){var t=this.dom;if(t||(this.dom={},t=this.dom,t.box=document.createElement("div"),t.content=document.createElement("div"),t.content.className="content",t.box.appendChild(t.content),t.box["timeline-item"]=this,this.dirty=!0),!this.parent)throw new Error("Cannot redraw item: no parent attached");if(!t.box.parentNode){var e=this.parent.dom.foreground;if(!e)throw new Error("Cannot redraw item: parent has no foreground container element");e.appendChild(t.box)}if(this.displayed=!0,this.dirty){this._updateContents(this.dom.content),this._updateTitle(this.dom.box),this._updateDataAttributes(this.dom.box),this._updateStyle(this.dom.box);var i=(this.data.className?" "+this.data.className:"")+(this.selected?" selected":"");t.box.className=this.baseClassName+i,this.overflow="hidden"!==window.getComputedStyle(t.content).overflow,this.dom.content.style.maxWidth="none",this.props.content.width=this.dom.content.offsetWidth,this.height=this.dom.box.offsetHeight,this.dom.content.style.maxWidth="",this.dirty=!1}this._repaintDeleteButton(t.box),this._repaintDragLeft(),this._repaintDragRight()},s.prototype.show=function(){this.displayed||this.redraw()},s.prototype.hide=function(){if(this.displayed){var t=this.dom.box;t.parentNode&&t.parentNode.removeChild(t),this.top=null,this.left=null,this.displayed=!1}},s.prototype.repositionX=function(){var t,e,i=this.parent.width,s=this.conversion.toScreen(this.data.start),o=this.conversion.toScreen(this.data.end);-i>s&&(s=-i),o>2*i&&(o=2*i);var n=Math.max(o-s,1);switch(this.overflow?(this.left=s,this.width=n+this.props.content.width,e=this.props.content.width):(this.left=s,this.width=n,e=Math.min(o-s-2*this.options.padding,this.props.content.width)),this.dom.box.style.left=this.left+"px",this.dom.box.style.width=n+"px",this.options.align){case"left":this.dom.content.style.left="0";break;case"right":this.dom.content.style.left=Math.max(n-e-2*this.options.padding,0)+"px";break;case"center":this.dom.content.style.left=Math.max((n-e-2*this.options.padding)/2,0)+"px";break;default:t=this.overflow?o>0?Math.max(-s,0):-e:0>s?Math.min(-s,o-s-e-2*this.options.padding):0,this.dom.content.style.left=t+"px"}},s.prototype.repositionY=function(){var t=this.options.orientation,e=this.dom.box;e.style.top="top"==t?this.top+"px":this.parent.height-this.top-this.height+"px"},s.prototype._repaintDragLeft=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragLeft){var t=document.createElement("div");t.className="drag-left",t.dragLeftItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragLeft=t}else!this.selected&&this.dom.dragLeft&&(this.dom.dragLeft.parentNode&&this.dom.dragLeft.parentNode.removeChild(this.dom.dragLeft),this.dom.dragLeft=null)},s.prototype._repaintDragRight=function(){if(this.selected&&this.options.editable.updateTime&&!this.dom.dragRight){var t=document.createElement("div");t.className="drag-right",t.dragRightItem=this,o(t,{preventDefault:!0}).on("drag",function(){}),this.dom.box.appendChild(t),this.dom.dragRight=t}else!this.selected&&this.dom.dragRight&&(this.dom.dragRight.parentNode&&this.dom.dragRight.parentNode.removeChild(this.dom.dragRight),this.dom.dragRight=null)},t.exports=s},function(t){function e(){this.options=null,this.props=null}e.prototype.setOptions=function(t){t&&util.extend(this.options,t)},e.prototype.redraw=function(){return!1},e.prototype.destroy=function(){},e.prototype._isResized=function(){var t=this.props._previousWidth!==this.props.width||this.props._previousHeight!==this.props.height;return this.props._previousWidth=this.props.width,this.props._previousHeight=this.props.height,t},t.exports=e},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCurrentTime:!0,locales:a,locale:"en"},this.options=o.extend({},this.defaultOptions),this.offset=0,this._create(),this.setOptions(e)}var o=i(1),n=i(25),r=i(44),a=i(48);s.prototype=new n,s.prototype._create=function(){var t=document.createElement("div");t.className="currenttime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t},s.prototype.destroy=function(){this.options.showCurrentTime=!1,this.redraw(),this.body=null},s.prototype.setOptions=function(t){t&&o.selectiveExtend(["showCurrentTime","locale","locales"],this.options,t)},s.prototype.redraw=function(){if(this.options.showCurrentTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar),this.start());var e=new Date((new Date).valueOf()+this.offset),i=this.body.util.toScreen(e),s=this.options.locales[this.options.locale],o=s.current+" "+s.time+": "+r(e).format("dddd, MMMM Do YYYY, H:mm:ss");o=o.charAt(0).toUpperCase()+o.substring(1),this.bar.style.left=i+"px",this.bar.title=o}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),this.stop();return!1},s.prototype.start=function(){function t(){e.stop();var i=e.body.range.conversion(e.body.domProps.center.width).scale,s=1/i/10;30>s&&(s=30),s>1e3&&(s=1e3),e.redraw(),e.currentTimeTimer=setTimeout(t,s)}var e=this;t()},s.prototype.stop=function(){void 0!==this.currentTimeTimer&&(clearTimeout(this.currentTimeTimer),delete this.currentTimeTimer)},s.prototype.setCurrentTime=function(t){var e=o.convert(t,"Date").valueOf(),i=(new Date).valueOf();this.offset=e-i,this.redraw()},s.prototype.getCurrentTime=function(){return new Date((new Date).valueOf()+this.offset)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={showCustomTime:!1,locales:h,locale:"en"},this.options=n.extend({},this.defaultOptions),this.customTime=new Date,this.eventParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(25),a=i(44),h=i(48);s.prototype=new r,s.prototype.setOptions=function(t){t&&n.selectiveExtend(["showCustomTime","locale","locales"],this.options,t)},s.prototype._create=function(){var t=document.createElement("div");t.className="customtime",t.style.position="absolute",t.style.top="0px",t.style.height="100%",this.bar=t;var e=document.createElement("div");e.style.position="relative",e.style.top="0px",e.style.left="-10px",e.style.height="100%",e.style.width="20px",t.appendChild(e),this.hammer=o(t,{prevent_default:!0}),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this))},s.prototype.destroy=function(){this.options.showCustomTime=!1,this.redraw(),this.hammer.enable(!1),this.hammer=null,this.body=null},s.prototype.redraw=function(){if(this.options.showCustomTime){var t=this.body.dom.backgroundVertical;this.bar.parentNode!=t&&(this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar),t.appendChild(this.bar));var e=this.body.util.toScreen(this.customTime),i=this.options.locales[this.options.locale],s=i.time+": "+a(this.customTime).format("dddd, MMMM Do YYYY, H:mm:ss");s=s.charAt(0).toUpperCase()+s.substring(1),this.bar.style.left=e+"px",this.bar.title=s}else this.bar.parentNode&&this.bar.parentNode.removeChild(this.bar);return!1},s.prototype.setCustomTime=function(t){this.customTime=n.convert(t,"Date"),this.redraw()},s.prototype.getCustomTime=function(){return new Date(this.customTime.valueOf())},s.prototype._onDragStart=function(t){this.eventParams.dragging=!0,this.eventParams.customTime=this.customTime,t.stopPropagation(),t.preventDefault()},s.prototype._onDrag=function(t){if(this.eventParams.dragging){var e=t.gesture.deltaX,i=this.body.util.toScreen(this.eventParams.customTime)+e,s=this.body.util.toTime(i);this.setCustomTime(s),this.body.emitter.emit("timechange",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault()}},s.prototype._onDragEnd=function(t){this.eventParams.dragging&&(this.body.emitter.emit("timechanged",{time:new Date(this.customTime.valueOf())}),t.stopPropagation(),t.preventDefault())},t.exports=s},function(t,e,i){function s(t,e,i,s){this.id=o.randomUUID(),this.body=t,this.defaultOptions={orientation:"left",showMinorLabels:!0,showMajorLabels:!0,icons:!0,majorLinesOffset:7,minorLinesOffset:4,labelOffsetX:10,labelOffsetY:2,iconWidth:20,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}},title:{left:{text:void 0},right:{text:void 0}},format:{left:{decimals:void 0},right:{decimals:void 0}}},this.linegraphOptions=s,this.linegraphSVG=i,this.props={},this.DOMelements={lines:{},labels:{},title:{}},this.dom={},this.range={start:0,end:0},this.options=o.extend({},this.defaultOptions),this.conversionFactor=1,this.setOptions(e),this.width=Number((""+this.options.width).replace("px","")),this.minWidth=this.width,this.height=this.linegraphSVG.offsetHeight,this.hidden=!1,this.stepPixels=25,this.stepPixelsForced=25,this.zeroCrossing=-1,this.lineOffset=0,this.master=!0,this.svgElements={},this.iconsRemoved=!1,this.groups={},this.amountOfGroups=0,this._create();var n=this;this.body.emitter.on("verticalDrag",function(){n.dom.lineContainer.style.top=n.body.domProps.scrollTop+"px"})}var o=i(1),n=i(2),r=i(25),a=i(16);s.prototype=new r,s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype.setOptions=function(t){if(t){var e=!1;this.options.orientation!=t.orientation&&void 0!==t.orientation&&(e=!0);var i=["orientation","showMinorLabels","showMajorLabels","icons","majorLinesOffset","minorLinesOffset","labelOffsetX","labelOffsetY","iconWidth","width","visible","customRange","title","format","alignZeros"];o.selectiveExtend(i,this.options,t),this.minWidth=Number((""+this.options.width).replace("px","")),1==e&&this.dom.frame&&(this.hide(),this.show())}},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.style.width=this.options.width,this.dom.frame.style.height=this.height,this.dom.lineContainer=document.createElement("div"),this.dom.lineContainer.style.width="100%",this.dom.lineContainer.style.height=this.height,this.dom.lineContainer.style.position="relative",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.height="100%",this.svg.style.width="100%",this.svg.style.display="block",this.dom.frame.appendChild(this.svg)},s.prototype._redrawGroupIcons=function(){n.prepareElements(this.svgElements);var t,e=this.options.iconWidth,i=15,s=4,o=s+.5*i;t="left"==this.options.orientation?s:this.width-e-s;for(var r in this.groups)this.groups.hasOwnProperty(r)&&(1!=this.groups[r].visible||void 0!==this.linegraphOptions.visibility[r]&&1!=this.linegraphOptions.visibility[r]||(this.groups[r].drawIcon(t,o,this.svgElements,this.svg,e,i),o+=i+s));n.cleanupElements(this.svgElements),this.iconsRemoved=!1},s.prototype._cleanupIcons=function(){0==this.iconsRemoved&&(n.prepareElements(this.svgElements),n.cleanupElements(this.svgElements),this.iconsRemoved=!0)},s.prototype.show=function(){this.hidden=!1,this.dom.frame.parentNode||("left"==this.options.orientation?this.body.dom.left.appendChild(this.dom.frame):this.body.dom.right.appendChild(this.dom.frame)),this.dom.lineContainer.parentNode||this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer)},s.prototype.hide=function(){this.hidden=!0,this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.lineContainer.parentNode&&this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer)},s.prototype.setRange=function(t,e){0==this.master&&1==this.options.alignZeros&&-1!=this.zeroCrossing&&t>0&&(t=0),this.range.start=t,this.range.end=e},s.prototype.redraw=function(){var t=!1,e=0;this.dom.lineContainer.style.top=this.body.domProps.scrollTop+"px";for(var i in this.groups)this.groups.hasOwnProperty(i)&&(1!=this.groups[i].visible||void 0!==this.linegraphOptions.visibility[i]&&1!=this.linegraphOptions.visibility[i]||e++);if(0==this.amountOfGroups||0==e)this.hide();else{this.show(),this.height=Number(this.linegraphSVG.style.height.replace("px","")),this.dom.lineContainer.style.height=this.height+"px",this.width=1==this.options.visible?Number((""+this.options.width).replace("px","")):0;var s=this.props,o=this.dom.frame;o.className="dataaxis",this._calculateCharSize();var n=this.options.orientation,r=this.options.showMinorLabels,a=this.options.showMajorLabels;s.minorLabelHeight=r?s.minorCharHeight:0,s.majorLabelHeight=a?s.majorCharHeight:0,s.minorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.minorLinesOffset,s.minorLineHeight=1,s.majorLineWidth=this.body.dom.backgroundHorizontal.offsetWidth-this.lineOffset-this.width+2*this.options.majorLinesOffset,s.majorLineHeight=1,"left"==n?(o.style.top="0",o.style.left="0",o.style.bottom="",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.left.width,this.props.height=this.body.domProps.left.height):(o.style.top="",o.style.bottom="0",o.style.left="0",o.style.width=this.width+"px",o.style.height=this.height+"px",this.props.width=this.body.domProps.right.width,this.props.height=this.body.domProps.right.height),t=this._redrawLabels(),t=this._isResized()||t,1==this.options.icons?this._redrawGroupIcons():this._cleanupIcons(),this._redrawTitle(n)}return t},s.prototype._redrawLabels=function(){var t=!1;n.prepareElements(this.DOMelements.lines),n.prepareElements(this.DOMelements.labels);var e=this.options.orientation,i=this.master?this.props.majorCharHeight||10:this.stepPixelsForced,s=new a(this.range.start,this.range.end,i,this.dom.frame.offsetHeight,this.options.customRange[this.options.orientation],0==this.master&&this.options.alignZeros);this.step=s;var o=(this.dom.frame.offsetHeight-s.deadSpace*(this.dom.frame.offsetHeight/s.marginRange))/((s.marginRange-s.deadSpace)/s.step);this.stepPixels=o;var r=this.height/o,h=0;if(0==this.master){o=this.stepPixelsForced,h=Math.round(this.dom.frame.offsetHeight/o-r); +for(var d=0;.5*h>d;d++)s.previous();if(r=this.height/o,-1!=this.zeroCrossing&&1==this.options.alignZeros){var l=s.marginEnd/s.step-this.zeroCrossing;if(l>0)for(var d=0;l>d;d++)s.next();else if(0>l)for(var d=0;-l>d;d++)s.previous()}}else r+=.25;this.valueAtZero=s.marginEnd;var c,p=0,u=1;void 0!==this.options.format[e]&&(c=this.options.format[e].decimals),this.maxLabelSize=0;for(var m=0;u=0&&this._redrawLabel(m-2,s.getCurrent(c),e,"yAxis major",this.props.majorCharHeight),this._redrawLine(m,e,"grid horizontal major",this.options.majorLinesOffset,this.props.majorLineWidth)):this._redrawLine(m,e,"grid horizontal minor",this.options.minorLinesOffset,this.props.minorLineWidth),1==this.master&&0==s.current&&(this.zeroCrossing=u),u++}this.conversionFactor=0==this.master?m/(this.valueAtZero-s.current):this.dom.frame.offsetHeight/s.marginRange;var g=0;void 0!==this.options.title[e]&&void 0!==this.options.title[e].text&&(g=this.props.titleCharHeight);var v=1==this.options.icons?Math.max(this.options.iconWidth,g)+this.options.labelOffsetX+15:g+this.options.labelOffsetX+15;return this.maxLabelSize>this.width-v&&1==this.options.visible?(this.width=this.maxLabelSize+v,this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):this.maxLabelSizethis.minWidth?(this.width=Math.max(this.minWidth,this.maxLabelSize+v),this.options.width=this.width+"px",n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),this.redraw(),t=!0):(n.cleanupElements(this.DOMelements.lines),n.cleanupElements(this.DOMelements.labels),t=!1),t},s.prototype.convertValue=function(t){var e=this.valueAtZero-t,i=e*this.conversionFactor;return i},s.prototype._redrawLabel=function(t,e,i,s,o){var r=n.getDOMElement("div",this.DOMelements.labels,this.dom.frame);r.className=s,r.innerHTML=e,"left"==i?(r.style.left="-"+this.options.labelOffsetX+"px",r.style.textAlign="right"):(r.style.right="-"+this.options.labelOffsetX+"px",r.style.textAlign="left"),r.style.top=t-.5*o+this.options.labelOffsetY+"px",e+="";var a=Math.max(this.props.majorCharWidth,this.props.minorCharWidth);this.maxLabelSized;d++){var c=this.visibleItems[d];c.repositionY(e)}return s},s.prototype._calculateHeight=function(t){var e,i=this.visibleItems;this.resetSubgroups();var s=this;if(i.length){var n=i[0].top,r=i[0].top+i[0].height;if(o.forEach(i,function(t){n=Math.min(n,t.top),r=Math.max(r,t.top+t.height),void 0!==t.data.subgroup&&(s.subgroups[t.data.subgroup].height=Math.max(s.subgroups[t.data.subgroup].height,t.height),s.subgroups[t.data.subgroup].visible=!0)}),n>t.axis){var a=n-t.axis;r-=a,o.forEach(i,function(t){t.top-=a})}e=r+t.item.vertical/2}else e=t.axis+t.item.vertical;return e=Math.max(e,this.props.label.height)},s.prototype.show=function(){this.dom.label.parentNode||this.itemSet.dom.labelSet.appendChild(this.dom.label),this.dom.foreground.parentNode||this.itemSet.dom.foreground.appendChild(this.dom.foreground),this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background),this.dom.axis.parentNode||this.itemSet.dom.axis.appendChild(this.dom.axis)},s.prototype.hide=function(){var t=this.dom.label;t.parentNode&&t.parentNode.removeChild(t);var e=this.dom.foreground;e.parentNode&&e.parentNode.removeChild(e);var i=this.dom.background;i.parentNode&&i.parentNode.removeChild(i);var s=this.dom.axis;s.parentNode&&s.parentNode.removeChild(s)},s.prototype.add=function(t){if(this.items[t.id]=t,t.setParent(this),void 0!==t.data.subgroup&&(void 0===this.subgroups[t.data.subgroup]&&(this.subgroups[t.data.subgroup]={height:0,visible:!1,index:this.subgroupIndex,items:[]},this.subgroupIndex++),this.subgroups[t.data.subgroup].items.push(t)),this.orderSubgroups(),-1==this.visibleItems.indexOf(t)){var e=this.itemSet.body.range;this._checkIfVisible(t,this.visibleItems,e)}},s.prototype.orderSubgroups=function(){if(void 0!==this.subgroupOrderer){var t=[];if("string"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push({subgroup:e,sortField:this.subgroups[e].items[0].data[this.subgroupOrderer]});t.sort(function(t,e){return t.sortField-e.sortField})}else if("function"==typeof this.subgroupOrderer){for(var e in this.subgroups)t.push(this.subgroups[e].items[0].data);t.sort(this.subgroupOrderer)}if(t.length>0)for(var i=0;it?-1:l>=t?0:1};if(e.length>0)for(n=0;nl}),1==this.checkRangedItems)for(this.checkRangedItems=!1,n=0;nl})}for(n=0;n=0&&(n=e[r],!o(n));r--)void 0===s[n.id]&&(s[n.id]=!0,i.push(n));for(r=t+1;rs;s++){var n=this.visibleItems[s];n.repositionY(e)}return i},s.prototype.show=function(){this.dom.background.parentNode||this.itemSet.dom.background.appendChild(this.dom.background)},t.exports=s},function(t,e,i){function s(t,e){this.body=t,this.defaultOptions={type:null,orientation:"bottom",align:"auto",stack:!0,groupOrder:null,selectable:!0,editable:{updateTime:!1,updateGroup:!1,add:!1,remove:!1},onAdd:function(t,e){e(t)},onUpdate:function(t,e){e(t)},onMove:function(t,e){e(t)},onRemove:function(t,e){e(t)},onMoving:function(t,e){e(t)},margin:{item:{horizontal:10,vertical:10},axis:20},padding:5},this.options=n.extend({},this.defaultOptions),this.itemOptions={type:{start:"Date",end:"Date"}},this.conversion={toScreen:t.util.toScreen,toTime:t.util.toTime},this.dom={},this.props={},this.hammer=null;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.groups={},this.groupIds=[],this.selection=[],this.stackDirty=!0,this.touchParams={},this._create(),this.setOptions(e)}var o=i(45),n=i(1),r=i(3),a=i(4),h=i(25),d=i(30),l=i(31),c=i(22),p=i(23),u=i(24),m=i(21),f="__ungrouped__",g="__background__";s.prototype=new h,s.types={background:m,box:c,range:u,point:p},s.prototype._create=function(){var t=document.createElement("div");t.className="itemset",t["timeline-itemset"]=this,this.dom.frame=t;var e=document.createElement("div");e.className="background",t.appendChild(e),this.dom.background=e;var i=document.createElement("div");i.className="foreground",t.appendChild(i),this.dom.foreground=i;var s=document.createElement("div");s.className="axis",this.dom.axis=s;var n=document.createElement("div");n.className="labelset",this.dom.labelSet=n,this._updateUngrouped();var r=new l(g,null,this);r.show(),this.groups[g]=r,this.hammer=o(this.body.dom.centerContainer,{preventDefault:!0}),this.hammer.on("touch",this._onTouch.bind(this)),this.hammer.on("dragstart",this._onDragStart.bind(this)),this.hammer.on("drag",this._onDrag.bind(this)),this.hammer.on("dragend",this._onDragEnd.bind(this)),this.hammer.on("tap",this._onSelectItem.bind(this)),this.hammer.on("hold",this._onMultiSelectItem.bind(this)),this.hammer.on("doubletap",this._onAddItem.bind(this)),this.show()},s.prototype.setOptions=function(t){if(t){var e=["type","align","orientation","padding","stack","selectable","groupOrder","dataAttributes","template","hide"];n.selectiveExtend(e,this.options,t),"margin"in t&&("number"==typeof t.margin?(this.options.margin.axis=t.margin,this.options.margin.item.horizontal=t.margin,this.options.margin.item.vertical=t.margin):"object"==typeof t.margin&&(n.selectiveExtend(["axis"],this.options.margin,t.margin),"item"in t.margin&&("number"==typeof t.margin.item?(this.options.margin.item.horizontal=t.margin.item,this.options.margin.item.vertical=t.margin.item):"object"==typeof t.margin.item&&n.selectiveExtend(["horizontal","vertical"],this.options.margin.item,t.margin.item)))),"editable"in t&&("boolean"==typeof t.editable?(this.options.editable.updateTime=t.editable,this.options.editable.updateGroup=t.editable,this.options.editable.add=t.editable,this.options.editable.remove=t.editable):"object"==typeof t.editable&&n.selectiveExtend(["updateTime","updateGroup","add","remove"],this.options.editable,t.editable));var i=function(e){var i=t[e];if(i){if(!(i instanceof Function))throw new Error("option "+e+" must be a function "+e+"(item, callback)");this.options[e]=i}}.bind(this);["onAdd","onUpdate","onRemove","onMove","onMoving"].forEach(i),this.markDirty()}},s.prototype.markDirty=function(){this.groupIds=[],this.stackDirty=!0},s.prototype.destroy=function(){this.hide(),this.setItems(null),this.setGroups(null),this.hammer=null,this.body=null,this.conversion=null},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame),this.dom.axis.parentNode&&this.dom.axis.parentNode.removeChild(this.dom.axis),this.dom.labelSet.parentNode&&this.dom.labelSet.parentNode.removeChild(this.dom.labelSet)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame),this.dom.axis.parentNode||this.body.dom.backgroundVertical.appendChild(this.dom.axis),this.dom.labelSet.parentNode||this.body.dom.left.appendChild(this.dom.labelSet)},s.prototype.setSelection=function(t){var e,i,s,o;for(void 0==t&&(t=[]),Array.isArray(t)||(t=[t]),e=0,i=this.selection.length;i>e;e++)s=this.selection[e],o=this.items[s],o&&o.unselect();for(this.selection=[],e=0,i=t.length;i>e;e++)s=t[e],o=this.items[s],o&&(this.selection.push(s),o.select())},s.prototype.getSelection=function(){return this.selection.concat([])},s.prototype.getVisibleItems=function(){var t=this.body.range.getRange(),e=this.body.util.toScreen(t.start),i=this.body.util.toScreen(t.end),s=[];for(var o in this.groups)if(this.groups.hasOwnProperty(o))for(var n=this.groups[o],r=n.visibleItems,a=0;ae&&s.push(h.id)}return s},s.prototype._deselect=function(t){for(var e=this.selection,i=0,s=e.length;s>i;i++)if(e[i]==t){e.splice(i,1);break}},s.prototype.redraw=function(){var t=this.options.margin,e=this.body.range,i=n.option.asSize,s=this.options,o=s.orientation,r=!1,a=this.dom.frame,h=s.editable.updateTime||s.editable.updateGroup;this.props.top=this.body.domProps.top.height+this.body.domProps.border.top,this.props.left=this.body.domProps.left.width+this.body.domProps.border.left,a.className="itemset"+(h?" editable":""),r=this._orderGroups()||r;var d=e.end-e.start,l=d!=this.lastVisibleInterval||this.props.width!=this.props.lastWidth;l&&(this.stackDirty=!0),this.lastVisibleInterval=d,this.props.lastWidth=this.props.width;var c=this.stackDirty,p=this._firstGroup(),u={item:t.item,axis:t.axis},m={item:t.item,axis:t.item.vertical/2},f=0,v=t.axis+t.item.vertical;return this.groups[g].redraw(e,m,c),n.forEach(this.groups,function(t){var i=t==p?u:m,s=t.redraw(e,i,c);r=s||r,f+=t.height}),f=Math.max(f,v),this.stackDirty=!1,a.style.height=i(f),this.props.width=a.offsetWidth,this.props.height=f,this.dom.axis.style.top=i("top"==o?this.body.domProps.top.height+this.body.domProps.border.top:this.body.domProps.top.height+this.body.domProps.centerContainer.height),this.dom.axis.style.left="0",r=this._isResized()||r},s.prototype._firstGroup=function(){var t="top"==this.options.orientation?0:this.groupIds.length-1,e=this.groupIds[t],i=this.groups[e]||this.groups[f];return i||null},s.prototype._updateUngrouped=function(){{var t,e,i=this.groups[f];this.groups[g]}if(this.groupsData){if(i){i.hide(),delete this.groups[f];for(e in this.items)if(this.items.hasOwnProperty(e)){t=this.items[e],t.parent&&t.parent.remove(t);var s=this._getGroupId(t.data),o=this.groups[s];o&&o.add(t)||t.hide()}}}else if(!i){var n=null,r=null;i=new d(n,r,this),this.groups[f]=i;for(e in this.items)this.items.hasOwnProperty(e)&&(t=this.items[e],i.add(t));i.show()}},s.prototype.getLabelSet=function(){return this.dom.labelSet},s.prototype.setItems=function(t){var e,i=this,s=this.itemsData;if(t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.itemsData=t}else this.itemsData=null;if(s&&(n.forEach(this.itemListeners,function(t,e){s.off(e,t)}),e=s.getIds(),this._onRemove(e)),this.itemsData){var o=this.id;n.forEach(this.itemListeners,function(t,e){i.itemsData.on(e,t,o)}),e=this.itemsData.getIds(),this._onAdd(e),this._updateUngrouped()}},s.prototype.getItems=function(){return this.itemsData},s.prototype.setGroups=function(t){var e,i=this;if(this.groupsData&&(n.forEach(this.groupListeners,function(t,e){i.groupsData.unsubscribe(e,t)}),e=this.groupsData.getIds(),this.groupsData=null,this._onRemoveGroups(e)),t){if(!(t instanceof r||t instanceof a))throw new TypeError("Data must be an instance of DataSet or DataView");this.groupsData=t}else this.groupsData=null;if(this.groupsData){var s=this.id;n.forEach(this.groupListeners,function(t,e){i.groupsData.on(e,t,s)}),e=this.groupsData.getIds(),this._onAddGroups(e)}this._updateUngrouped(),this._order(),this.body.emitter.emit("change",{queue:!0})},s.prototype.getGroups=function(){return this.groupsData},s.prototype.removeItem=function(t){var e=this.itemsData.get(t),i=this.itemsData.getDataSet();e&&this.options.onRemove(e,function(e){e&&i.remove(t)})},s.prototype._getType=function(t){return t.type||this.options.type||(t.end?"range":"box")},s.prototype._getGroupId=function(t){var e=this._getType(t);return"background"==e&&void 0==t.group?g:this.groupsData?t.group:f},s.prototype._onUpdate=function(t){var e=this;t.forEach(function(t){var i=e.itemsData.get(t,e.itemOptions),o=e.items[t],n=e._getType(i),r=s.types[n];if(o&&(r&&o instanceof r?e._updateItem(o,i):(e._removeItem(o),o=null)),!o){if(!r)throw new TypeError("rangeoverflow"==n?'Item type "rangeoverflow" is deprecated. Use css styling instead: .vis.timeline .item.range .content {overflow: visible;}':'Unknown item type "'+n+'"');o=new r(i,e.conversion,e.options),o.id=t,e._addItem(o)}}),this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0})},s.prototype._onAdd=s.prototype._onUpdate,s.prototype._onRemove=function(t){var e=0,i=this;t.forEach(function(t){var s=i.items[t];s&&(e++,i._removeItem(s))}),e&&(this._order(),this.stackDirty=!0,this.body.emitter.emit("change",{queue:!0}))},s.prototype._order=function(){n.forEach(this.groups,function(t){t.order()})},s.prototype._onUpdateGroups=function(t){this._onAddGroups(t)},s.prototype._onAddGroups=function(t){var e=this;t.forEach(function(t){var i=e.groupsData.get(t),s=e.groups[t];if(s)s.setData(i);else{if(t==f||t==g)throw new Error("Illegal group id. "+t+" is a reserved id.");var o=Object.create(e.options);n.extend(o,{height:null}),s=new d(t,i,e),e.groups[t]=s;for(var r in e.items)if(e.items.hasOwnProperty(r)){var a=e.items[r];a.data.group==t&&s.add(a)}s.order(),s.show()}}),this.body.emitter.emit("change",{queue:!0})},s.prototype._onRemoveGroups=function(t){var e=this.groups;t.forEach(function(t){var i=e[t];i&&(i.hide(),delete e[t])}),this.markDirty(),this.body.emitter.emit("change",{queue:!0})},s.prototype._orderGroups=function(){if(this.groupsData){var t=this.groupsData.getIds({order:this.options.groupOrder}),e=!n.equalArray(t,this.groupIds);if(e){var i=this.groups;t.forEach(function(t){i[t].hide()}),t.forEach(function(t){i[t].show()}),this.groupIds=t}return e}return!1},s.prototype._addItem=function(t){this.items[t.id]=t;var e=this._getGroupId(t.data),i=this.groups[e];i&&i.add(t)},s.prototype._updateItem=function(t,e){var i=t.data.group;if(t.setData(e),i!=t.data.group){var s=this.groups[i];s&&s.remove(t);var o=this._getGroupId(t.data),n=this.groups[o];n&&n.add(t)}},s.prototype._removeItem=function(t){t.hide(),delete this.items[t.id];var e=this.selection.indexOf(t.id);-1!=e&&this.selection.splice(e,1),t.parent&&t.parent.remove(t)},s.prototype._constructByEndArray=function(t){for(var e=[],i=0;i0||o.length>0)&&this.body.emitter.emit("select",{items:a})}},s.prototype._onAddItem=function(t){if(this.options.selectable&&this.options.editable.add){var e=this,i=this.body.util.snap||null,o=s.itemFromTarget(t);if(o){var r=e.itemsData.get(o.id);this.options.onUpdate(r,function(t){t&&e.itemsData.getDataSet().update(t)})}else{var a=n.getAbsoluteLeft(this.dom.frame),h=t.gesture.center.pageX-a,d=this.body.util.toTime(h),l={start:i?i(d):d,content:"new item"};if("range"===this.options.type){var c=this.body.util.toTime(h+this.props.width/5);l.end=i?i(c):c}l[this.itemsData._fieldId]=n.randomUUID();var p=s.groupFromTarget(t);p&&(l.group=p.groupId),this.options.onAdd(l,function(t){t&&e.itemsData.getDataSet().add(t)})}}},s.prototype._onMultiSelectItem=function(t){if(this.options.selectable){var e,i=s.itemFromTarget(t);if(i){e=this.getSelection();var o=t.gesture.touches[0]&&t.gesture.touches[0].shiftKey||!1;if(o){e.push(i.id);var n=s._getItemRange(this.itemsData.get(e,this.itemOptions));e=[];for(var r in this.items)if(this.items.hasOwnProperty(r)){var a=this.items[r],h=a.data.start,d=void 0!==a.data.end?a.data.end:h;h>=n.min&&d<=n.max&&e.push(a.id)}}else{var l=e.indexOf(i.id);-1==l?e.push(i.id):e.splice(l,1)}this.setSelection(e),this.body.emitter.emit("select",{items:this.getSelection()})}}},s._getItemRange=function(t){var e=null,i=null;return t.forEach(function(t){(null==i||t.starte)&&(e=t.end):(null==e||t.start>e)&&(e=t.start)}),{min:i,max:e}},s.itemFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-item"))return e["timeline-item"];e=e.parentNode}return null},s.groupFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-group"))return e["timeline-group"];e=e.parentNode}return null},s.itemSetFromTarget=function(t){for(var e=t.target;e;){if(e.hasOwnProperty("timeline-itemset"))return e["timeline-itemset"];e=e.parentNode}return null},t.exports=s},function(t,e,i){function s(t,e,i,s){this.body=t,this.defaultOptions={enabled:!0,icons:!0,iconSize:20,iconSpacing:6,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-left"}},this.side=i,this.options=o.extend({},this.defaultOptions),this.linegraphOptions=s,this.svgElements={},this.dom={},this.groups={},this.amountOfGroups=0,this._create(),this.setOptions(e)}var o=i(1),n=i(2),r=i(25);s.prototype=new r,s.prototype.clear=function(){this.groups={},this.amountOfGroups=0},s.prototype.addGroup=function(t,e){this.groups.hasOwnProperty(t)||(this.groups[t]=e),this.amountOfGroups+=1 +},s.prototype.updateGroup=function(t,e){this.groups[t]=e},s.prototype.removeGroup=function(t){this.groups.hasOwnProperty(t)&&(delete this.groups[t],this.amountOfGroups-=1)},s.prototype._create=function(){this.dom.frame=document.createElement("div"),this.dom.frame.className="legend",this.dom.frame.style.position="absolute",this.dom.frame.style.top="10px",this.dom.frame.style.display="block",this.dom.textArea=document.createElement("div"),this.dom.textArea.className="legendText",this.dom.textArea.style.position="relative",this.dom.textArea.style.top="0px",this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="absolute",this.svg.style.top="0px",this.svg.style.width=this.options.iconSize+5+"px",this.svg.style.height="100%",this.dom.frame.appendChild(this.svg),this.dom.frame.appendChild(this.dom.textArea)},s.prototype.hide=function(){this.dom.frame.parentNode&&this.dom.frame.parentNode.removeChild(this.dom.frame)},s.prototype.show=function(){this.dom.frame.parentNode||this.body.dom.center.appendChild(this.dom.frame)},s.prototype.setOptions=function(t){var e=["enabled","orientation","icons","left","right"];o.selectiveDeepExtend(e,this.options,t)},s.prototype.redraw=function(){var t=0;for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||t++);if(0==this.options[this.side].visible||0==this.amountOfGroups||0==this.options.enabled||0==t)this.hide();else{if(this.show(),"top-left"==this.options[this.side].position||"bottom-left"==this.options[this.side].position?(this.dom.frame.style.left="4px",this.dom.frame.style.textAlign="left",this.dom.textArea.style.textAlign="left",this.dom.textArea.style.left=this.options.iconSize+15+"px",this.dom.textArea.style.right="",this.svg.style.left="0px",this.svg.style.right=""):(this.dom.frame.style.right="4px",this.dom.frame.style.textAlign="right",this.dom.textArea.style.textAlign="right",this.dom.textArea.style.right=this.options.iconSize+15+"px",this.dom.textArea.style.left="",this.svg.style.right="0px",this.svg.style.left=""),"top-left"==this.options[this.side].position||"top-right"==this.options[this.side].position)this.dom.frame.style.top=4-Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.bottom="";else{var i=this.body.domProps.center.height-this.body.domProps.centerContainer.height;this.dom.frame.style.bottom=4+i+Number(this.body.dom.center.style.top.replace("px",""))+"px",this.dom.frame.style.top=""}0==this.options.icons?(this.dom.frame.style.width=this.dom.textArea.offsetWidth+10+"px",this.dom.textArea.style.right="",this.dom.textArea.style.left="",this.svg.style.width="0px"):(this.dom.frame.style.width=this.options.iconSize+15+this.dom.textArea.offsetWidth+10+"px",this.drawLegendIcons());var s="";for(var e in this.groups)this.groups.hasOwnProperty(e)&&(1!=this.groups[e].visible||void 0!==this.linegraphOptions.visibility[e]&&1!=this.linegraphOptions.visibility[e]||(s+=this.groups[e].content+"
"));this.dom.textArea.innerHTML=s,this.dom.textArea.style.lineHeight=.75*this.options.iconSize+this.options.iconSpacing+"px"}},s.prototype.drawLegendIcons=function(){if(this.dom.frame.parentNode){n.prepareElements(this.svgElements);var t=window.getComputedStyle(this.dom.frame).paddingTop,e=Number(t.replace("px","")),i=e,s=this.options.iconSize,o=.75*this.options.iconSize,r=e+.5*o+3;this.svg.style.width=s+5+e+"px";for(var a in this.groups)this.groups.hasOwnProperty(a)&&(1!=this.groups[a].visible||void 0!==this.linegraphOptions.visibility[a]&&1!=this.linegraphOptions.visibility[a]||(this.groups[a].drawIcon(i,r,this.svgElements,this.svg,s,o),r+=o+this.options.iconSpacing));n.cleanupElements(this.svgElements)}},t.exports=s},function(t,e,i){function s(t,e){this.id=o.randomUUID(),this.body=t,this.defaultOptions={yAxisOrientation:"left",defaultGroup:"default",sort:!0,sampling:!0,graphHeight:"400px",shaded:{enabled:!1,orientation:"bottom"},style:"line",barChart:{width:50,handleOverlap:"overlap",align:"center"},catmullRom:{enabled:!0,parametrization:"centripetal",alpha:.5},drawPoints:{enabled:!0,size:6,style:"square"},dataAxis:{showMinorLabels:!0,showMajorLabels:!0,icons:!1,width:"40px",visible:!0,alignZeros:!0,customRange:{left:{min:void 0,max:void 0},right:{min:void 0,max:void 0}}},legend:{enabled:!1,icons:!0,left:{visible:!0,position:"top-left"},right:{visible:!0,position:"top-right"}},groups:{visibility:{}}},this.options=o.extend({},this.defaultOptions),this.dom={},this.props={},this.hammer=null,this.groups={},this.abortedGraphUpdate=!1,this.updateSVGheight=!1,this.updateSVGheightOnResize=!1;var i=this;this.itemsData=null,this.groupsData=null,this.itemListeners={add:function(t,e){i._onAdd(e.items)},update:function(t,e){i._onUpdate(e.items)},remove:function(t,e){i._onRemove(e.items)}},this.groupListeners={add:function(t,e){i._onAddGroups(e.items)},update:function(t,e){i._onUpdateGroups(e.items)},remove:function(t,e){i._onRemoveGroups(e.items)}},this.items={},this.selection=[],this.lastStart=this.body.range.start,this.touchParams={},this.svgElements={},this.setOptions(e),this.groupsUsingDefaultStyles=[0],this.COUNTER=0,this.body.emitter.on("rangechanged",function(){i.lastStart=i.body.range.start,i.svg.style.left=o.option.asSize(-i.props.width),i.redraw.call(i,!0)}),this._create(),this.framework={svg:this.svg,svgElements:this.svgElements,options:this.options,groups:this.groups},this.body.emitter.emit("change")}var o=i(1),n=i(2),r=i(3),a=i(4),h=i(25),d=i(28),l=i(29),c=i(33),p=i(50),u="__ungrouped__";s.prototype=new h,s.prototype._create=function(){var t=document.createElement("div");t.className="LineGraph",this.dom.frame=t,this.svg=document.createElementNS("http://www.w3.org/2000/svg","svg"),this.svg.style.position="relative",this.svg.style.height=(""+this.options.graphHeight).replace("px","")+"px",this.svg.style.display="block",t.appendChild(this.svg),this.options.dataAxis.orientation="left",this.yAxisLeft=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),this.options.dataAxis.orientation="right",this.yAxisRight=new d(this.body,this.options.dataAxis,this.svg,this.options.groups),delete this.options.dataAxis.orientation,this.legendLeft=new c(this.body,this.options.legend,"left",this.options.groups),this.legendRight=new c(this.body,this.options.legend,"right",this.options.groups),this.show()},s.prototype.setOptions=function(t){if(t){var e=["sampling","defaultGroup","height","graphHeight","yAxisOrientation","style","barChart","dataAxis","sort","groups"];void 0===t.graphHeight&&void 0!==t.height&&void 0!==this.body.domProps.centerContainer.height?(this.updateSVGheight=!0,this.updateSVGheightOnResize=!0):void 0!==this.body.domProps.centerContainer.height&&void 0!==t.graphHeight&&parseInt((t.graphHeight+"").replace("px",""))0){var d=this.body.util.toGlobalTime(-this.body.domProps.root.width),l=this.body.util.toGlobalTime(2*this.body.domProps.root.width),c={};for(this._getRelevantData(a,c,d,l),this._applySampling(a,c),e=0;eu&&console.log("WARNING: there may be an infinite loop in the _updateGraph emitter cycle."),this.COUNTER=0,this.abortedGraphUpdate=!1,e=0;e0)for(r=0;rs){d.push(h);break}d.push(h)}}else for(a=0;ai&&h.x0)for(var s=0;s0){var n=1,r=o.length,a=this.body.util.toGlobalScreen(o[o.length-1].x)-this.body.util.toGlobalScreen(o[0].x),h=r/a;n=Math.min(Math.ceil(.2*r),Math.max(1,Math.round(h)));for(var d=[],l=0;r>l;l+=n)d.push(o[l]);e[t[s]]=d}}},s.prototype._getYRanges=function(t,e,i){var s,o,n,r,a=[],h=[];if(t.length>0){for(n=0;n0&&(o=this.groups[t[n]],"stack"==r.barChart.handleOverlap&&"bar"==r.style?"left"==r.yAxisOrientation?a=a.concat(o.getYRange(s)):h=h.concat(o.getYRange(s)):i[t[n]]=o.getYRange(s,t[n]));p.getStackedBarYRange(a,i,t,"__barchartLeft","left"),p.getStackedBarYRange(h,i,t,"__barchartRight","right")}},s.prototype._updateYAxis=function(t,e){var i,s,o=!1,n=!1,r=!1,a=1e9,h=1e9,d=-1e9,l=-1e9;if(t.length>0){for(var c=0;ci?i:a,d=s>d?s:d):(r=!0,h=h>i?i:h,l=s>l?s:l));1==n&&this.yAxisLeft.setRange(a,d),1==r&&this.yAxisRight.setRange(h,l)}return o=this._toggleAxisVisiblity(n,this.yAxisLeft)||o,o=this._toggleAxisVisiblity(r,this.yAxisRight)||o,1==r&&1==n?(this.yAxisLeft.drawIcons=!0,this.yAxisRight.drawIcons=!0):(this.yAxisLeft.drawIcons=!1,this.yAxisRight.drawIcons=!1),this.yAxisRight.master=!n,0==this.yAxisRight.master?(this.yAxisLeft.lineOffset=1==r?this.yAxisRight.width:0,o=this.yAxisLeft.redraw()||o,this.yAxisRight.stepPixelsForced=this.yAxisLeft.stepPixels,this.yAxisRight.zeroCrossing=this.yAxisLeft.zeroCrossing,o=this.yAxisRight.redraw()||o):o=this.yAxisRight.redraw()||o,-1!=t.indexOf("__barchartLeft")&&t.splice(t.indexOf("__barchartLeft"),1),-1!=t.indexOf("__barchartRight")&&t.splice(t.indexOf("__barchartRight"),1),o},s.prototype._toggleAxisVisiblity=function(t,e){var i=!1;return 0==t?e.dom.frame.parentNode&&0==e.hidden&&(e.hide(),i=!0):e.dom.frame.parentNode||1!=e.hidden||(e.show(),i=!0),i},s.prototype._convertXcoordinates=function(t){for(var e,i,s=[],o=this.body.util.toScreen,n=0;ny;)y++,l=h.getCurrent(),c=h.isMajor(),u=h.getClassName(),f=m,m=this.body.util.toScreen(l),g=m-f,p&&(p.style.width=g+"px"),this.options.showMinorLabels&&this._repaintMinorText(m,h.getLabelMinor(),t,u),c&&this.options.showMajorLabels?(m>0&&(void 0==v&&(v=m),this._repaintMajorText(m,h.getLabelMajor(),t,u)),p=this._repaintMajorLine(m,t,u)):p=this._repaintMinorLine(m,t,u),h.next();if(this.options.showMajorLabels){var b=this.body.util.toTime(0),_=h.getLabelMajor(b),x=_.length*(this.props.majorCharWidth||10)+10;(void 0==v||v>x)&&this._repaintMajorText(0,_,t,u)}o.forEach(this.dom.redundant,function(t){for(;t.length;){var e=t.pop();e&&e.parentNode&&e.parentNode.removeChild(e)}})},s.prototype._repaintMinorText=function(t,e,i,s){var o=this.dom.redundant.minorTexts.shift();if(!o){var n=document.createTextNode("");o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.minorTexts.push(o),o.childNodes[0].nodeValue=e,o.style.top="top"==i?this.props.majorLabelHeight+"px":"0",o.style.left=t+"px",o.className="text minor "+s},s.prototype._repaintMajorText=function(t,e,i,s){var o=this.dom.redundant.majorTexts.shift();if(!o){var n=document.createTextNode(e);o=document.createElement("div"),o.appendChild(n),this.dom.foreground.appendChild(o)}this.dom.majorTexts.push(o),o.childNodes[0].nodeValue=e,o.className="text major "+s,o.style.top="top"==i?"0":this.props.minorLabelHeight+"px",o.style.left=t+"px"},s.prototype._repaintMinorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?o.majorLabelHeight+"px":this.body.domProps.top.height+"px",s.style.height=o.minorLineHeight+"px",s.style.left=t-o.minorLineWidth/2+"px",s.className="grid vertical minor "+i,s},s.prototype._repaintMajorLine=function(t,e,i){var s=this.dom.redundant.lines.shift();s||(s=document.createElement("div"),this.dom.background.appendChild(s)),this.dom.lines.push(s);var o=this.props;return s.style.top="top"==e?"0":this.body.domProps.top.height+"px",s.style.left=t-o.majorLineWidth/2+"px",s.style.height=o.majorLineHeight+"px",s.className="grid vertical major "+i,s},s.prototype._calculateCharSize=function(){this.dom.measureCharMinor||(this.dom.measureCharMinor=document.createElement("DIV"),this.dom.measureCharMinor.className="text minor measure",this.dom.measureCharMinor.style.position="absolute",this.dom.measureCharMinor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMinor)),this.props.minorCharHeight=this.dom.measureCharMinor.clientHeight,this.props.minorCharWidth=this.dom.measureCharMinor.clientWidth,this.dom.measureCharMajor||(this.dom.measureCharMajor=document.createElement("DIV"),this.dom.measureCharMajor.className="text major measure",this.dom.measureCharMajor.style.position="absolute",this.dom.measureCharMajor.appendChild(document.createTextNode("0")),this.dom.foreground.appendChild(this.dom.measureCharMajor)),this.props.majorCharHeight=this.dom.measureCharMajor.clientHeight,this.props.majorCharWidth=this.dom.measureCharMajor.clientWidth},s.prototype.snap=function(t){return this.step.snap(t)},t.exports=s},function(t,e,i){function s(t,e,i){if(!(this instanceof s))throw new SyntaxError("Constructor must be called with the new operator");this._determineBrowserMethod(),this._initializeMixinLoaders(),this.containerElement=t,this.renderRefreshRate=60,this.renderTimestep=1e3/this.renderRefreshRate,this.renderTime=0,this.physicsTime=0,this.runDoubleSpeed=!1,this.physicsDiscreteStepsize=.5,this.initializing=!0,this.triggerFunctions={add:null,edit:null,editEdge:null,connect:null,del:null},this.defaultOptions={nodes:{mass:1,radiusMin:10,radiusMax:30,radius:10,shape:"ellipse",image:void 0,widthMin:16,widthMax:64,fontColor:"black",fontSize:14,fontFace:"verdana",fontFill:void 0,fontStrokeWidth:0,fontStrokeColor:"white",level:-1,color:{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},group:void 0,borderWidth:1,borderWidthSelected:void 0},edges:{widthMin:1,widthMax:15,width:1,widthSelectionMultiplier:2,hoverWidth:1.5,style:"line",color:{color:"#848484",highlight:"#848484",hover:"#848484"},fontColor:"#343434",fontSize:14,fontFace:"arial",fontFill:"white",fontStrokeWidth:0,fontStrokeColor:"white",labelAlignment:"horizontal",arrowScaleFactor:1,dash:{length:10,gap:5,altLength:void 0},inheritColor:"from"},configurePhysics:!1,physics:{barnesHut:{enabled:!0,thetaInverted:2,gravitationalConstant:-2e3,centralGravity:.3,springLength:95,springConstant:.04,damping:.09},repulsion:{centralGravity:0,springLength:200,springConstant:.05,nodeDistance:100,damping:.09},hierarchicalRepulsion:{enabled:!1,centralGravity:0,springLength:100,springConstant:.01,nodeDistance:150,damping:.09},damping:null,centralGravity:null,springLength:null,springConstant:null},clustering:{enabled:!1,initialMaxNodes:100,clusterThreshold:500,reduceToNodes:300,chainThreshold:.4,clusterEdgeThreshold:20,sectorThreshold:100,screenSizeThreshold:.2,fontSizeMultiplier:4,maxFontSize:1e3,forceAmplification:.1,distanceAmplification:.1,edgeGrowth:20,nodeScaling:{width:1,height:1,radius:1},maxNodeSizeIncrements:600,activeAreaBoxSize:80,clusterLevelDifference:2},navigation:{enabled:!1},keyboard:{enabled:!1,speed:{x:10,y:10,zoom:.02}},dataManipulation:{enabled:!1,initiallyVisible:!1},hierarchicalLayout:{enabled:!1,levelSeparation:150,nodeSpacing:100,direction:"UD",layout:"hubsize"},freezeForStabilization:!1,smoothCurves:{enabled:!0,dynamic:!0,type:"continuous",roundness:.5},maxVelocity:30,minVelocity:.1,stabilize:!0,stabilizationIterations:1e3,zoomExtentOnStabilize:!0,locale:"en",locales:_,tooltip:{delay:300,fontColor:"black",fontSize:14,fontFace:"verdana",color:{border:"#666",background:"#FFFFC6"}},dragNetwork:!0,dragNodes:!0,zoomable:!0,hover:!1,hideEdgesOnDrag:!1,hideNodesOnDrag:!1,width:"100%",height:"100%",selectable:!0},this.constants=a.extend({},this.defaultOptions),this.pixelRatio=1,this.hoverObj={nodes:{},edges:{}},this.controlNodesActive=!1,this.navigationHammers={existing:[],_new:[]},this.animationSpeed=1/this.renderRefreshRate,this.animationEasingFunction="easeInOutQuint",this.animating=!1,this.easingTime=0,this.sourceScale=0,this.targetScale=0,this.sourceTranslation=0,this.targetTranslation=0,this.lockedOnNodeId=null,this.lockedOnNodeOffset=null,this.touchTime=0;var o=this;this.groups=new u,this.images=new m,this.images.setOnloadCallback(function(){o._redraw()}),this.xIncrement=0,this.yIncrement=0,this.zoomIncrement=0,this._loadPhysicsSystem(),this._create(),this._loadSectorSystem(),this._loadClusterSystem(),this._loadSelectionSystem(),this._loadHierarchySystem(),this._setTranslation(this.frame.clientWidth/2,this.frame.clientHeight/2),this._setScale(1),this.setOptions(i),this.freezeSimulation=!1,this.cachedFunctions={},this.startedStabilization=!1,this.stabilized=!1,this.stabilizationIterations=null,this.draggingNodes=!1,this.calculationNodes={},this.calculationNodeIndices=[],this.nodeIndices=[],this.nodes={},this.edges={},this.canvasTopLeft={x:0,y:0},this.canvasBottomRight={x:0,y:0},this.pointerPosition={x:0,y:0},this.areaCenter={},this.scale=1,this.previousScale=this.scale,this.nodesData=null,this.edgesData=null,this.nodesListeners={add:function(t,e){o._addNodes(e.items),o.start()},update:function(t,e){o._updateNodes(e.items,e.data),o.start()},remove:function(t,e){o._removeNodes(e.items),o.start()}},this.edgesListeners={add:function(t,e){o._addEdges(e.items),o.start()},update:function(t,e){o._updateEdges(e.items),o.start()},remove:function(t,e){o._removeEdges(e.items),o.start()}},this.moving=!0,this.timer=void 0,this.setData(e,this.constants.clustering.enabled||this.constants.hierarchicalLayout.enabled),this.initializing=!1,1==this.constants.hierarchicalLayout.enabled?this._setupHierarchicalLayout():0==this.constants.stabilize&&this.zoomExtent(void 0,!0,this.constants.clustering.enabled),this.constants.clustering.enabled&&this.startWithClustering()}var o=i(56),n=i(45),r=i(57),a=i(1),h=i(47),d=i(3),l=i(4),c=i(42),p=i(43),u=i(38),m=i(39),f=i(40),g=i(37),v=i(41),y=i(52),b=i(53),_=i(54);i(55),o(s.prototype),s.prototype._determineBrowserMethod=function(){var t=navigator.userAgent.toLowerCase();this.requiresTimeout=!1,-1!=t.indexOf("msie 9.0")?this.requiresTimeout=!0:-1!=t.indexOf("safari")&&t.indexOf("chrome")<=-1&&(this.requiresTimeout=!0)},s.prototype._getScriptPath=function(){for(var t=document.getElementsByTagName("script"),e=0;et.boundingBox.left&&(s=t.boundingBox.left),ot.boundingBox.bottom&&(e=t.boundingBox.top),i=this.constants.clustering.initialMaxNodes?49.07548/(n+142.05338)+91444e-8:12.662/(n+7.4147)+.0964822:1==this.constants.clustering.enabled&&n>=this.constants.clustering.initialMaxNodes?77.5271985/(n+187.266146)+476710517e-13:30.5062972/(n+19.93597763)+.08413486;var r=Math.min(this.frame.canvas.clientWidth/600,this.frame.canvas.clientHeight/600);s*=r}else{var a=1.1*Math.abs(o.maxX-o.minX),h=1.1*Math.abs(o.maxY-o.minY),d=this.frame.canvas.clientWidth/a,l=this.frame.canvas.clientHeight/h;s=l>=d?d:l}s>1&&(s=1);var c=this._findCenter(o);if(0==i){var p={position:c,scale:s,animation:t};this.moveTo(p),this.moving=!0,this.start()}else c.x*=s,c.y*=s,c.x-=.5*this.frame.canvas.clientWidth,c.y-=.5*this.frame.canvas.clientHeight,this._setScale(s),this._setTranslation(-c.x,-c.y)},s.prototype._updateNodeIndexList=function(){this._clearNodeIndexList();for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodeIndices.push(t)},s.prototype.setData=function(t,e){if(void 0===e&&(e=!1),this.initializing=!0,t&&t.dot&&(t.nodes||t.edges))throw new SyntaxError('Data must contain either parameter "dot" or parameter pair "nodes" and "edges", but not both.');if(1==this.constants.dataManipulation.enabled&&this._createManipulatorBar(),this.setOptions(t&&t.options),t&&t.dot){if(t&&t.dot){var i=c.DOTToGraph(t.dot);return void this.setData(i)}}else if(t&&t.gephi){if(t&&t.gephi){var s=p.parseGephi(t.gephi);return void this.setData(s)}}else this._setNodes(t&&t.nodes),this._setEdges(t&&t.edges);this._putDataInSector(),0==e&&(1==this.constants.hierarchicalLayout.enabled?(this._resetLevels(),this._setupHierarchicalLayout()):this.constants.stabilize&&this._stabilize(),this.start()),this.initializing=!1},s.prototype.setOptions=function(t){if(t){var e,i=["nodes","edges","smoothCurves","hierarchicalLayout","clustering","navigation","keyboard","dataManipulation","onAdd","onEdit","onEditEdge","onConnect","onDelete","clickToUse"];if(a.selectiveNotDeepExtend(i,this.constants,t),a.selectiveNotDeepExtend(["color"],this.constants.nodes,t.nodes),a.selectiveNotDeepExtend(["color","length"],this.constants.edges,t.edges),t.physics&&(a.mergeOptions(this.constants.physics,t.physics,"barnesHut"),a.mergeOptions(this.constants.physics,t.physics,"repulsion"),t.physics.hierarchicalRepulsion)){this.constants.hierarchicalLayout.enabled=!0,this.constants.physics.hierarchicalRepulsion.enabled=!0,this.constants.physics.barnesHut.enabled=!1; +for(e in t.physics.hierarchicalRepulsion)t.physics.hierarchicalRepulsion.hasOwnProperty(e)&&(this.constants.physics.hierarchicalRepulsion[e]=t.physics.hierarchicalRepulsion[e])}if(t.onAdd&&(this.triggerFunctions.add=t.onAdd),t.onEdit&&(this.triggerFunctions.edit=t.onEdit),t.onEditEdge&&(this.triggerFunctions.editEdge=t.onEditEdge),t.onConnect&&(this.triggerFunctions.connect=t.onConnect),t.onDelete&&(this.triggerFunctions.del=t.onDelete),a.mergeOptions(this.constants,t,"smoothCurves"),a.mergeOptions(this.constants,t,"hierarchicalLayout"),a.mergeOptions(this.constants,t,"clustering"),a.mergeOptions(this.constants,t,"navigation"),a.mergeOptions(this.constants,t,"keyboard"),a.mergeOptions(this.constants,t,"dataManipulation"),t.dataManipulation&&(this.editMode=this.constants.dataManipulation.initiallyVisible),t.edges&&(void 0!==t.edges.color&&(a.isString(t.edges.color)?(this.constants.edges.color={},this.constants.edges.color.color=t.edges.color,this.constants.edges.color.highlight=t.edges.color,this.constants.edges.color.hover=t.edges.color):(void 0!==t.edges.color.color&&(this.constants.edges.color.color=t.edges.color.color),void 0!==t.edges.color.highlight&&(this.constants.edges.color.highlight=t.edges.color.highlight),void 0!==t.edges.color.hover&&(this.constants.edges.color.hover=t.edges.color.hover)),this.constants.edges.inheritColor=!1),t.edges.fontColor||void 0!==t.edges.color&&(a.isString(t.edges.color)?this.constants.edges.fontColor=t.edges.color:void 0!==t.edges.color.color&&(this.constants.edges.fontColor=t.edges.color.color))),t.nodes&&t.nodes.color){var s=a.parseColor(t.nodes.color);this.constants.nodes.color.background=s.background,this.constants.nodes.color.border=s.border,this.constants.nodes.color.highlight.background=s.highlight.background,this.constants.nodes.color.highlight.border=s.highlight.border,this.constants.nodes.color.hover.background=s.hover.background,this.constants.nodes.color.hover.border=s.hover.border}if(t.groups)for(var o in t.groups)if(t.groups.hasOwnProperty(o)){var n=t.groups[o];this.groups.add(o,n)}if(t.tooltip){for(e in t.tooltip)t.tooltip.hasOwnProperty(e)&&(this.constants.tooltip[e]=t.tooltip[e]);t.tooltip.color&&(this.constants.tooltip.color=a.parseColor(t.tooltip.color))}if("clickToUse"in t&&(t.clickToUse?this.activator||(this.activator=new b(this.frame),this.activator.on("change",this._createKeyBinds.bind(this))):this.activator&&(this.activator.destroy(),delete this.activator)),t.labels)throw new Error('Option "labels" is deprecated. Use options "locale" and "locales" instead.');this._loadPhysicsSystem(),this._loadNavigationControls(),this._loadManipulationSystem(),this._configureSmoothCurves(),this._bindHammer(),this._createKeyBinds(),this.setSize(this.constants.width,this.constants.height),this.moving=!0,this.start()}},s.prototype._create=function(){for(;this.containerElement.hasChildNodes();)this.containerElement.removeChild(this.containerElement.firstChild);if(this.frame=document.createElement("div"),this.frame.className="vis network-frame",this.frame.style.position="relative",this.frame.style.overflow="hidden",this.frame.canvas=document.createElement("canvas"),this.frame.canvas.style.position="relative",this.frame.appendChild(this.frame.canvas),this.frame.canvas.getContext){var t=this.frame.canvas.getContext("2d");this.pixelRatio=(window.devicePixelRatio||1)/(t.webkitBackingStorePixelRatio||t.mozBackingStorePixelRatio||t.msBackingStorePixelRatio||t.oBackingStorePixelRatio||t.backingStorePixelRatio||1),this.frame.canvas.getContext("2d").setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0)}else{var e=document.createElement("DIV");e.style.color="red",e.style.fontWeight="bold",e.style.padding="10px",e.innerHTML="Error: your browser does not support HTML canvas",this.frame.canvas.appendChild(e)}this._bindHammer()},s.prototype._bindHammer=function(){var t=this;void 0!==this.hammer&&this.hammer.dispose(),this.drag={},this.pinch={},this.hammer=n(this.frame.canvas,{prevent_default:!0}),this.hammer.on("tap",t._onTap.bind(t)),this.hammer.on("doubletap",t._onDoubleTap.bind(t)),this.hammer.on("hold",t._onHold.bind(t)),this.hammer.on("touch",t._onTouch.bind(t)),this.hammer.on("dragstart",t._onDragStart.bind(t)),this.hammer.on("drag",t._onDrag.bind(t)),this.hammer.on("dragend",t._onDragEnd.bind(t)),1==this.constants.zoomable&&(this.hammer.on("mousewheel",t._onMouseWheel.bind(t)),this.hammer.on("DOMMouseScroll",t._onMouseWheel.bind(t)),this.hammer.on("pinch",t._onPinch.bind(t))),this.hammer.on("mousemove",t._onMouseMoveTitle.bind(t)),this.hammerFrame=n(this.frame,{prevent_default:!0}),this.hammerFrame.on("release",t._onRelease.bind(t)),this.containerElement.appendChild(this.frame)},s.prototype._createKeyBinds=function(){var t=this;void 0!==this.keycharm&&this.keycharm.destroy(),this.keycharm=r(),this.keycharm.reset(),this.constants.keyboard.enabled&&this.isActive()&&(this.keycharm.bind("up",this._moveUp.bind(t),"keydown"),this.keycharm.bind("up",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("down",this._moveDown.bind(t),"keydown"),this.keycharm.bind("down",this._yStopMoving.bind(t),"keyup"),this.keycharm.bind("left",this._moveLeft.bind(t),"keydown"),this.keycharm.bind("left",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("right",this._moveRight.bind(t),"keydown"),this.keycharm.bind("right",this._xStopMoving.bind(t),"keyup"),this.keycharm.bind("=",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("=",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num+",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("num+",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("num-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("num-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("-",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("-",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("[",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("[",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("]",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("]",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pageup",this._zoomIn.bind(t),"keydown"),this.keycharm.bind("pageup",this._stopZoom.bind(t),"keyup"),this.keycharm.bind("pagedown",this._zoomOut.bind(t),"keydown"),this.keycharm.bind("pagedown",this._stopZoom.bind(t),"keyup")),1==this.constants.dataManipulation.enabled&&(this.keycharm.bind("esc",this._createManipulatorBar.bind(t)),this.keycharm.bind("delete",this._deleteSelected.bind(t)))},s.prototype.destroy=function(){this.start=function(){},this.redraw=function(){},this.timer=!1,this._cleanupPhysicsConfiguration(),this.keycharm.reset(),this.hammer.dispose(),this.off(),this._recursiveDOMDelete(this.containerElement)},s.prototype._recursiveDOMDelete=function(t){for(;1==t.hasChildNodes();)this._recursiveDOMDelete(t.firstChild),t.removeChild(t.firstChild)},s.prototype._getPointer=function(t){return{x:t.pageX-a.getAbsoluteLeft(this.frame.canvas),y:t.pageY-a.getAbsoluteTop(this.frame.canvas)}},s.prototype._onTouch=function(t){(new Date).valueOf()-this.touchTime>100&&(this.drag.pointer=this._getPointer(t.gesture.center),this.drag.pinched=!1,this.pinch.scale=this._getScale(),this.touchTime=(new Date).valueOf(),this._handleTouch(this.drag.pointer))},s.prototype._onDragStart=function(t){this._handleDragStart(t)},s.prototype._handleDragStart=function(t){void 0===this.drag.pointer&&this._onTouch(t);var e=this._getNodeAt(this.drag.pointer);if(this.drag.dragging=!0,this.drag.selection=[],this.drag.translation=this._getTranslation(),this.drag.nodeId=null,this.draggingNodes=!1,null!=e&&1==this.constants.dragNodes){this.draggingNodes=!0,this.drag.nodeId=e.id,e.isSelected()||this._selectObject(e,!1),this.emit("dragStart",{nodeIds:this.getSelection().nodes});for(var i in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(i)){var s=this.selectionObj.nodes[i],o={id:s.id,node:s,x:s.x,y:s.y,xFixed:s.xFixed,yFixed:s.yFixed};s.xFixed=!0,s.yFixed=!0,this.drag.selection.push(o)}}},s.prototype._onDrag=function(t){this._handleOnDrag(t)},s.prototype._handleOnDrag=function(t){if(!this.drag.pinched){this.releaseNode();var e=this._getPointer(t.gesture.center),i=this,s=this.drag,o=s.selection;if(o&&o.length&&1==this.constants.dragNodes){var n=e.x-s.pointer.x,r=e.y-s.pointer.y;o.forEach(function(t){var e=t.node;t.xFixed||(e.x=i._XconvertDOMtoCanvas(i._XconvertCanvasToDOM(t.x)+n)),t.yFixed||(e.y=i._YconvertDOMtoCanvas(i._YconvertCanvasToDOM(t.y)+r))}),this.moving||(this.moving=!0,this.start())}else if(1==this.constants.dragNetwork){if(void 0===this.drag.pointer)return void this._handleDragStart(t);var a=e.x-this.drag.pointer.x,h=e.y-this.drag.pointer.y;this._setTranslation(this.drag.translation.x+a,this.drag.translation.y+h),this._redraw()}}},s.prototype._onDragEnd=function(t){this._handleDragEnd(t)},s.prototype._handleDragEnd=function(){this.drag.dragging=!1;var t=this.drag.selection;t&&t.length?(t.forEach(function(t){t.node.xFixed=t.xFixed,t.node.yFixed=t.yFixed}),this.moving=!0,this.start()):this._redraw(),0==this.draggingNodes?this.emit("dragEnd",{nodeIds:[]}):this.emit("dragEnd",{nodeIds:this.getSelection().nodes})},s.prototype._onTap=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleTap(e)},s.prototype._onDoubleTap=function(t){var e=this._getPointer(t.gesture.center);this._handleDoubleTap(e)},s.prototype._onHold=function(t){var e=this._getPointer(t.gesture.center);this.pointerPosition=e,this._handleOnHold(e)},s.prototype._onRelease=function(t){var e=this._getPointer(t.gesture.center);this._handleOnRelease(e)},s.prototype._onPinch=function(t){var e=this._getPointer(t.gesture.center);this.drag.pinched=!0,"scale"in this.pinch||(this.pinch.scale=1);var i=this.pinch.scale*t.gesture.scale;this._zoom(i,e)},s.prototype._zoom=function(t,e){if(1==this.constants.zoomable){var i=this._getScale();1e-5>t&&(t=1e-5),t>10&&(t=10);var s=null;void 0!==this.drag&&1==this.drag.dragging&&(s=this.DOMtoCanvas(this.drag.pointer));var o=this._getTranslation(),n=t/i,r=(1-n)*e.x+o.x*n,a=(1-n)*e.y+o.y*n;if(this.areaCenter={x:this._XconvertDOMtoCanvas(e.x),y:this._YconvertDOMtoCanvas(e.y)},this._setScale(t),this._setTranslation(r,a),this.updateClustersDefault(),null!=s){var h=this.canvasToDOM(s);this.drag.pointer.x=h.x,this.drag.pointer.y=h.y}return this._redraw(),t>i?this.emit("zoom",{direction:"+"}):this.emit("zoom",{direction:"-"}),t}},s.prototype._onMouseWheel=function(t){var e=0;if(t.wheelDelta?e=t.wheelDelta/120:t.detail&&(e=-t.detail/3),e){var i=this._getScale(),s=e/10;0>e&&(s/=1-s),i*=1+s;var o=h.fakeGesture(this,t),n=this._getPointer(o.center);this._zoom(i,n)}t.preventDefault()},s.prototype._onMouseMoveTitle=function(t){var e=h.fakeGesture(this,t),i=this._getPointer(e.center);this.popupObj&&this._checkHidePopup(i);var s=this,o=function(){s._checkShowPopup(i)};if(this.popupTimer&&clearInterval(this.popupTimer),this.drag.dragging||(this.popupTimer=setTimeout(o,this.constants.tooltip.delay)),1==this.constants.hover){for(var n in this.hoverObj.edges)this.hoverObj.edges.hasOwnProperty(n)&&(this.hoverObj.edges[n].hover=!1,delete this.hoverObj.edges[n]);var r=this._getNodeAt(i);null==r&&(r=this._getEdgeAt(i)),null!=r&&this._hoverObject(r);for(var a in this.hoverObj.nodes)this.hoverObj.nodes.hasOwnProperty(a)&&(r instanceof f&&r.id!=a||r instanceof g||null==r)&&(this._blurObject(this.hoverObj.nodes[a]),delete this.hoverObj.nodes[a]);this.redraw()}},s.prototype._checkShowPopup=function(t){var e,i={left:this._XconvertDOMtoCanvas(t.x),top:this._YconvertDOMtoCanvas(t.y),right:this._XconvertDOMtoCanvas(t.x),bottom:this._YconvertDOMtoCanvas(t.y)},s=this.popupObj,o=!1;if(void 0==this.popupObj){var n=this.nodes,r=[];for(e in n)if(n.hasOwnProperty(e)){var a=n[e];a.isOverlappingWith(i)&&void 0!==a.getTitle()&&r.push(e)}r.length>0&&(this.popupObj=this.nodes[r[r.length-1]],o=!0)}if(void 0===this.popupObj&&0==o){var h=this.edges,d=[];for(e in h)if(h.hasOwnProperty(e)){var l=h[e];l.connected&&void 0!==l.getTitle()&&l.isOverlappingWith(i)&&d.push(e)}d.length>0&&(this.popupObj=this.edges[d[d.length-1]])}if(this.popupObj){if(this.popupObj!=s){var c=this;c.popup||(c.popup=new v(c.frame,c.constants.tooltip)),c.popup.setPosition(t.x-3,t.y-3),c.popup.setText(c.popupObj.getTitle()),c.popup.show()}}else this.popup&&this.popup.hide()},s.prototype._checkHidePopup=function(t){this.popupObj&&this._getNodeAt(t)||(this.popupObj=void 0,this.popup&&this.popup.hide())},s.prototype.setSize=function(t,e){var i=!1,s=this.frame.canvas.width,o=this.frame.canvas.height;t!=this.constants.width||e!=this.constants.height||this.frame.style.width!=t||this.frame.style.height!=e?(this.frame.style.width=t,this.frame.style.height=e,this.frame.canvas.style.width="100%",this.frame.canvas.style.height="100%",this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,this.constants.width=t,this.constants.height=e,i=!0):(this.frame.canvas.width!=this.frame.canvas.clientWidth*this.pixelRatio&&(this.frame.canvas.width=this.frame.canvas.clientWidth*this.pixelRatio,i=!0),this.frame.canvas.height!=this.frame.canvas.clientHeight*this.pixelRatio&&(this.frame.canvas.height=this.frame.canvas.clientHeight*this.pixelRatio,i=!0)),1==i&&this.emit("resize",{width:this.frame.canvas.width*this.pixelRatio,height:this.frame.canvas.height*this.pixelRatio,oldWidth:s*this.pixelRatio,oldHeight:o*this.pixelRatio})},s.prototype._setNodes=function(t){var e=this.nodesData;if(t instanceof d||t instanceof l)this.nodesData=t;else if(Array.isArray(t))this.nodesData=new d,this.nodesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.nodesData=new d}if(e&&a.forEach(this.nodesListeners,function(t,i){e.off(i,t)}),this.nodes={},this.nodesData){var i=this;a.forEach(this.nodesListeners,function(t,e){i.nodesData.on(e,t)});var s=this.nodesData.getIds();this._addNodes(s)}this._updateSelection()},s.prototype._addNodes=function(t){for(var e,i=0,s=t.length;s>i;i++){e=t[i];var o=this.nodesData.get(e),n=new f(o,this.images,this.groups,this.constants);if(this.nodes[e]=n,!(0!=n.xFixed&&0!=n.yFixed||null!==n.x&&null!==n.y)){var r=1*t.length+10,a=2*Math.PI*Math.random();0==n.xFixed&&(n.x=r*Math.cos(a)),0==n.yFixed&&(n.y=r*Math.sin(a))}this.moving=!0}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateValueRange(this.nodes),this.updateLabels()},s.prototype._updateNodes=function(t,e){for(var i=this.nodes,s=0,o=t.length;o>s;s++){var n=t[s],r=i[n],a=e[s];r?r.setProperties(a,this.constants):(r=new f(properties,this.images,this.groups,this.constants),i[n]=r)}this.moving=!0,1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateNodeIndexList(),this._updateValueRange(i)},s.prototype._removeNodes=function(t){for(var e=this.nodes,i=0,s=t.length;s>i;i++){var o=t[i];delete e[o]}this._updateNodeIndexList(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes(),this._reconnectEdges(),this._updateSelection(),this._updateValueRange(e)},s.prototype._setEdges=function(t){var e=this.edgesData;if(t instanceof d||t instanceof l)this.edgesData=t;else if(Array.isArray(t))this.edgesData=new d,this.edgesData.add(t);else{if(t)throw new TypeError("Array or DataSet expected");this.edgesData=new d}if(e&&a.forEach(this.edgesListeners,function(t,i){e.off(i,t)}),this.edges={},this.edgesData){var i=this;a.forEach(this.edgesListeners,function(t,e){i.edgesData.on(e,t)});var s=this.edgesData.getIds();this._addEdges(s)}this._reconnectEdges()},s.prototype._addEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=e[n];r&&r.disconnect();var a=i.get(n,{showInternalIds:!0});e[n]=new g(a,this,this.constants)}this.moving=!0,this._updateValueRange(e),this._createBezierNodes(),this._updateCalculationNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout())},s.prototype._updateEdges=function(t){for(var e=this.edges,i=this.edgesData,s=0,o=t.length;o>s;s++){var n=t[s],r=i.get(n),a=e[n];a?(a.disconnect(),a.setProperties(r,this.constants),a.connect()):(a=new g(r,this,this.constants),this.edges[n]=a)}this._createBezierNodes(),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this.moving=!0,this._updateValueRange(e)},s.prototype._removeEdges=function(t){for(var e=this.edges,i=0,s=t.length;s>i;i++){var o=t[i],n=e[o];n&&(null!=n.via&&delete this.sectors.support.nodes[n.via.id],n.disconnect(),delete e[o])}this.moving=!0,this._updateValueRange(e),1==this.constants.hierarchicalLayout.enabled&&0==this.initializing&&(this._resetLevels(),this._setupHierarchicalLayout()),this._updateCalculationNodes()},s.prototype._reconnectEdges=function(){var t,e=this.nodes,i=this.edges;for(t in e)e.hasOwnProperty(t)&&(e[t].edges=[],e[t].dynamicEdges=[]);for(t in i)if(i.hasOwnProperty(t)){var s=i[t];s.from=null,s.to=null,s.connect()}},s.prototype._updateValueRange=function(t){var e,i=void 0,s=void 0;for(e in t)if(t.hasOwnProperty(e)){var o=t[e].getValue();void 0!==o&&(i=void 0===i?o:Math.min(o,i),s=void 0===s?o:Math.max(o,s))}if(void 0!==i&&void 0!==s)for(e in t)t.hasOwnProperty(e)&&t[e].setValueRange(i,s)},s.prototype.redraw=function(){this.setSize(this.constants.width,this.constants.height),this._redraw()},s.prototype._redraw=function(t){var e=this.frame.canvas.getContext("2d");e.setTransform(this.pixelRatio,0,0,this.pixelRatio,0,0);var i=this.frame.canvas.width*this.pixelRatio,s=this.frame.canvas.height*this.pixelRatio;e.clearRect(0,0,i,s),e.save(),e.translate(this.translation.x,this.translation.y),e.scale(this.scale,this.scale),this.canvasTopLeft={x:this._XconvertDOMtoCanvas(0),y:this._YconvertDOMtoCanvas(0)},this.canvasBottomRight={x:this._XconvertDOMtoCanvas(this.frame.canvas.clientWidth*this.pixelRatio),y:this._YconvertDOMtoCanvas(this.frame.canvas.clientHeight*this.pixelRatio)},1!=t&&(this._doInAllSectors("_drawAllSectorNodes",e),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideEdgesOnDrag)&&this._doInAllSectors("_drawEdges",e)),(0==this.drag.dragging||void 0===this.drag.dragging||0==this.constants.hideNodesOnDrag)&&this._doInAllSectors("_drawNodes",e,!1),1!=t&&1==this.controlNodesActive&&this._doInAllSectors("_drawControlNodes",e),e.restore(),1==t&&e.clearRect(0,0,i,s)},s.prototype._setTranslation=function(t,e){void 0===this.translation&&(this.translation={x:0,y:0}),void 0!==t&&(this.translation.x=t),void 0!==e&&(this.translation.y=e),this.emit("viewChanged")},s.prototype._getTranslation=function(){return{x:this.translation.x,y:this.translation.y}},s.prototype._setScale=function(t){this.scale=t},s.prototype._getScale=function(){return this.scale},s.prototype._XconvertDOMtoCanvas=function(t){return(t-this.translation.x)/this.scale},s.prototype._XconvertCanvasToDOM=function(t){return t*this.scale+this.translation.x},s.prototype._YconvertDOMtoCanvas=function(t){return(t-this.translation.y)/this.scale},s.prototype._YconvertCanvasToDOM=function(t){return t*this.scale+this.translation.y},s.prototype.canvasToDOM=function(t){return{x:this._XconvertCanvasToDOM(t.x),y:this._YconvertCanvasToDOM(t.y)}},s.prototype.DOMtoCanvas=function(t){return{x:this._XconvertDOMtoCanvas(t.x),y:this._YconvertDOMtoCanvas(t.y)}},s.prototype._drawNodes=function(t,e){void 0===e&&(e=!1);var i=this.nodes,s=[];for(var o in i)i.hasOwnProperty(o)&&(i[o].setScaleAndPos(this.scale,this.canvasTopLeft,this.canvasBottomRight),i[o].isSelected()?s.push(o):(i[o].inArea()||e)&&i[o].draw(t));for(var n=0,r=s.length;r>n;n++)(i[s[n]].inArea()||e)&&i[s[n]].draw(t)},s.prototype._drawEdges=function(t){var e=this.edges;for(var i in e)if(e.hasOwnProperty(i)){var s=e[i];s.setScale(this.scale),s.connected&&e[i].draw(t)}},s.prototype._drawControlNodes=function(t){var e=this.edges;for(var i in e)e.hasOwnProperty(i)&&e[i]._drawControlNodes(t)},s.prototype._stabilize=function(){1==this.constants.freezeForStabilization&&this._freezeDefinedNodes();for(var t=0;this.moving&&t0)for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStepLimited(e,this.constants.maxVelocity),s=!0);else for(t in i)i.hasOwnProperty(t)&&(i[t].discreteStep(e),s=!0);if(1==s){var o=this.constants.minVelocity/Math.max(this.scale,.05);return o>.5*this.constants.maxVelocity?!0:this._isMoving(o)}return!1},s.prototype._revertPhysicsState=function(){var t=this.nodes;for(var e in t)t.hasOwnProperty(e)&&t[e].revertPosition()},s.prototype._revertPhysicsTick=function(){this._doInAllActiveSectors("_revertPhysicsState"),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&this._doInSupportSector("_revertPhysicsState")},s.prototype._physicsTick=function(){if(!this.freezeSimulation&&1==this.moving){var t=!1,e=!1;this._doInAllActiveSectors("_initializeForceCalculation");var i=this._doInAllActiveSectors("_discreteStepNodes");1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic&&(e=this._doInSupportSector("_discreteStepNodes"));for(var s=0;s2*e||1==this.runDoubleSpeed)&&1==this.moving&&(this._physicsTick(),0!=this.renderTime&&(this.runDoubleSpeed=!0))}var i=Date.now();this._redraw(),this.renderTime=Date.now()-i,this.start()},"undefined"!=typeof window&&(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame),s.prototype.start=function(){if(1==this.moving||0!=this.xIncrement||0!=this.yIncrement||0!=this.zoomIncrement||1==this.animating)this.timer||(this.timer=1==this.requiresTimeout?window.setTimeout(this._animationStep.bind(this),this.renderTimestep):window.requestAnimationFrame(this._animationStep.bind(this)));else if(this._redraw(),this.stabilizationIterations>1){var t=this,e={iterations:t.stabilizationIterations};this.stabilizationIterations=0,this.startedStabilization=!1,setTimeout(function(){t.emit("stabilized",e)},0)}else this.stabilizationIterations=0},s.prototype._handleNavigation=function(){if(0!=this.xIncrement||0!=this.yIncrement){var t=this._getTranslation();this._setTranslation(t.x+this.xIncrement,t.y+this.yIncrement)}if(0!=this.zoomIncrement){var e={x:this.frame.canvas.clientWidth/2,y:this.frame.canvas.clientHeight/2};this._zoom(this.scale*(1+this.zoomIncrement),e)}},s.prototype.toggleFreeze=function(){0==this.freezeSimulation?this.freezeSimulation=!0:(this.freezeSimulation=!1,this.start())},s.prototype._configureSmoothCurves=function(t){if(void 0===t&&(t=!0),1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this._createBezierNodes();for(var e in this.sectors.support.nodes)this.sectors.support.nodes.hasOwnProperty(e)&&void 0===this.edges[this.sectors.support.nodes[e].parentEdgeId]&&delete this.sectors.support.nodes[e]}else{this.sectors.support.nodes={};for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.edges[i].via=null)}this._updateCalculationNodes(),t||(this.moving=!0,this.start())},s.prototype._createBezierNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic)for(var t in this.edges)if(this.edges.hasOwnProperty(t)){var e=this.edges[t];if(null==e.via){var i="edgeId:".concat(e.id);this.sectors.support.nodes[i]=new f({id:i,mass:1,shape:"circle",image:"",internalMultiplier:1},{},{},this.constants),e.via=this.sectors.support.nodes[i],e.via.parentEdgeId=e.id,e.positionBezierNode()}}},s.prototype._initializeMixinLoaders=function(){for(var t in y)y.hasOwnProperty(t)&&(s.prototype[t]=y[t])},s.prototype.storePosition=function(){console.log("storePosition is depricated: use .storePositions() from now on."),this.storePositions()},s.prototype.storePositions=function(){var t=[];for(var e in this.nodes)if(this.nodes.hasOwnProperty(e)){var i=this.nodes[e],s=!this.nodes.xFixed,o=!this.nodes.yFixed;(this.nodesData._data[e].x!=Math.round(i.x)||this.nodesData._data[e].y!=Math.round(i.y))&&t.push({id:e,x:Math.round(i.x),y:Math.round(i.y),allowedToMoveX:s,allowedToMoveY:o})}this.nodesData.update(t)},s.prototype.getPositions=function(t){var e={};if(void 0!==t){if(1==Array.isArray(t)){for(var i=0;i=1&&(this.animating=!1,this.easingTime=0,this._redraw=null!=this.lockedOnNodeId?this._lockedRedraw:this._classicRedraw,this.emit("animationFinished"))},s.prototype._classicRedraw=function(){},s.prototype.isActive=function(){return!this.activator||this.activator.active},s.prototype.setScale=function(){return this._setScale()},s.prototype.getScale=function(){return this._getScale()},s.prototype.getCenterCoordinates=function(){return this.DOMtoCanvas({x:.5*this.frame.canvas.clientWidth,y:.5*this.frame.canvas.clientHeight})},s.prototype.getBoundingBox=function(t){return void 0!==this.nodes[t]?this.nodes[t].boundingBox:void 0},t.exports=s},function(t,e,i){function s(t,e,i){if(!e)throw"No network provided";var s=["edges","physics"],n=o.selectiveBridgeObject(s,i);this.options=n.edges,this.physics=n.physics,this.options.smoothCurves=i.smoothCurves,this.network=e,this.id=void 0,this.fromId=void 0,this.toId=void 0,this.title=void 0,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.value=void 0,this.selected=!1,this.hover=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.dirtyLabel=!0,this.from=null,this.to=null,this.via=null,this.fromBackup=null,this.toBackup=null,this.originalFromId=[],this.originalToId=[],this.connected=!1,this.widthFixed=!1,this.lengthFixed=!1,this.setProperties(t),this.controlNodesEnabled=!1,this.controlNodes={from:null,to:null,positions:{}},this.connectedNode=null}var o=i(1),n=i(40);s.prototype.setProperties=function(t){if(t){var e=["style","fontSize","fontFace","fontColor","fontFill","fontStrokeWidth","fontStrokeColor","width","widthSelectionMultiplier","hoverWidth","arrowScaleFactor","dash","inheritColor","labelAlignment"];switch(o.selectiveDeepExtend(e,this.options,t),void 0!==t.from&&(this.fromId=t.from),void 0!==t.to&&(this.toId=t.to),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.dirtyLabel=!0),void 0!==t.title&&(this.title=t.title),void 0!==t.value&&(this.value=t.value),void 0!==t.length&&(this.physics.springLength=t.length),void 0!==t.color&&(this.options.inheritColor=!1,o.isString(t.color)?(this.options.color.color=t.color,this.options.color.highlight=t.color):(void 0!==t.color.color&&(this.options.color.color=t.color.color),void 0!==t.color.highlight&&(this.options.color.highlight=t.color.highlight),void 0!==t.color.hover&&(this.options.color.hover=t.color.hover))),this.connect(),this.widthFixed=this.widthFixed||void 0!==t.width,this.lengthFixed=this.lengthFixed||void 0!==t.length,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier,this.options.style){case"line":this.draw=this._drawLine;break;case"arrow":this.draw=this._drawArrow;break;case"arrow-center":this.draw=this._drawArrowCenter;break;case"dash-line":this.draw=this._drawDashLine;break;default:this.draw=this._drawLine}}},s.prototype.connect=function(){this.disconnect(),this.from=this.network.nodes[this.fromId]||null,this.to=this.network.nodes[this.toId]||null,this.connected=this.from&&this.to,this.connected?(this.from.attachEdge(this),this.to.attachEdge(this)):(this.from&&this.from.detachEdge(this),this.to&&this.to.detachEdge(this)) +},s.prototype.disconnect=function(){this.from&&(this.from.detachEdge(this),this.from=null),this.to&&(this.to.detachEdge(this),this.to=null),this.connected=!1},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.getValue=function(){return this.value},s.prototype.setValueRange=function(t,e){if(!this.widthFixed&&void 0!==this.value){var i=(this.options.widthMax-this.options.widthMin)/(e-t);this.options.width=(this.value-t)*i+this.options.widthMin,this.widthSelected=this.options.width*this.options.widthSelectionMultiplier}},s.prototype.draw=function(){throw"Method draw not initialized in edge"},s.prototype.isOverlappingWith=function(t){if(this.connected){var e=10,i=this.from.x,s=this.from.y,o=this.to.x,n=this.to.y,r=t.left,a=t.top,h=this._getDistanceToEdge(i,s,o,n,r,a);return e>h}return!1},s.prototype._getColor=function(){var t=this.options.color;return"to"==this.options.inheritColor?t={highlight:this.to.options.color.highlight.border,hover:this.to.options.color.hover.border,color:this.to.options.color.border}:("from"==this.options.inheritColor||1==this.options.inheritColor)&&(t={highlight:this.from.options.color.highlight.border,hover:this.from.options.color.hover.border,color:this.from.options.color.border}),1==this.selected?t.highlight:1==this.hover?t.hover:t.color},s.prototype._drawLine=function(t){if(t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth(),this.from!=this.to){var e,i=this._line(t);if(this.label){if(1==this.options.smoothCurves.enabled&&null!=i){var s=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),o=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:s,y:o}}else e=this._pointOnLine(.5);this._label(t,this.label,e.x,e.y)}}else{var n,r,a=this.physics.springLength/4,h=this.from;h.width||h.resize(t),h.width>h.height?(n=h.x+h.width/2,r=h.y-a):(n=h.x+a,r=h.y-h.height/2),this._circle(t,n,r,a),e=this._pointOnCircle(n,r,a,.5),this._label(t,this.label,e.x,e.y)}},s.prototype._getLineWidth=function(){return 1==this.selected?Math.max(Math.min(this.widthSelected,this.options.widthMax),.3*this.networkScaleInv):1==this.hover?Math.max(Math.min(this.options.hoverWidth,this.options.widthMax),.3*this.networkScaleInv):Math.max(this.options.width,.3*this.networkScaleInv)},s.prototype._getViaCoordinates=function(){if(1==this.options.smoothCurves.dynamic&&1==this.options.smoothCurves.enabled)return this.via;if(0==this.options.smoothCurves.enabled)return{x:0,y:0};var t=null,e=null,i=this.options.smoothCurves.roundness,s=this.options.smoothCurves.type,o=Math.abs(this.from.x-this.to.x),n=Math.abs(this.from.y-this.to.y);return"discrete"==s||"diagonalCross"==s?Math.abs(this.from.x-this.to.x)this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n)),"discrete"==s&&(t=i*n>o?this.from.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xthis.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o)),"discrete"==s&&(e=i*o>n?this.from.y:e)):"straightCross"==s?Math.abs(this.from.x-this.to.x)Math.abs(this.from.y-this.to.y)&&(t=this.from.xthis.to.y?this.from.xthis.to.x&&(t=this.from.x-i*n,e=this.from.y-i*n,t=this.to.x>t?this.to.x:t):this.from.ythis.to.x&&(t=this.from.x-i*n,e=this.from.y+i*n,t=this.to.x>t?this.to.x:t)):Math.abs(this.from.x-this.to.x)>Math.abs(this.from.y-this.to.y)&&(this.from.y>this.to.y?this.from.xe?this.to.y:e):this.from.x>this.to.x&&(t=this.from.x-i*o,e=this.from.y-i*o,e=this.to.y>e?this.to.y:e):this.from.ythis.to.x&&(t=this.from.x-i*o,e=this.from.y+i*o,e=this.to.yd;d++){var l=t.measureText(n[d]).width;h=l>h?l:h}var c=this.options.fontSize*r,p=i-h/2,u=s-c/2;this.labelDimensions={top:u,left:p,width:h,height:c,yLine:o}}var o=this.labelDimensions.yLine;t.save(),"horizontal"!=this.options.labelAlignment&&(t.translate(i,o),this._rotateForLabelAlignment(t),i=0,o=0),this._drawLabelRect(t),this._drawLabelText(t,i,o,n,r,a),t.restore()}},s.prototype._rotateForLabelAlignment=function(t){var e=this.from.y-this.to.y,i=this.from.x-this.to.x,s=Math.atan2(e,i);(-1>s&&0>i||s>0&&0>i)&&(s+=Math.PI),t.rotate(s)},s.prototype._drawLabelRect=function(t){if(void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill){t.fillStyle=this.options.fontFill;var e=2;"line-center"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,.5*-this.labelDimensions.height,this.labelDimensions.width,this.labelDimensions.height):"line-above"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,-(this.labelDimensions.height+e),this.labelDimensions.width,this.labelDimensions.height):"line-below"==this.options.labelAlignment?t.fillRect(.5*-this.labelDimensions.width,e,this.labelDimensions.width,this.labelDimensions.height):t.fillRect(this.labelDimensions.left,this.labelDimensions.top,this.labelDimensions.width,this.labelDimensions.height)}},s.prototype._drawLabelText=function(t,e,i,s,o,n){if(t.fillStyle=this.options.fontColor||"black",t.textAlign="center","horizontal"!=this.options.labelAlignment){var r=2;"line-above"==this.options.labelAlignment?(t.textBaseline="alphabetic",i-=2*r):"line-below"==this.options.labelAlignment?(t.textBaseline="hanging",i+=2*r):t.textBaseline="middle"}else t.textBaseline="middle";this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var a=0;o>a;a++)this.options.fontStrokeWidth>0&&t.strokeText(s[a],e,i),t.fillText(s[a],e,i),i+=n},s.prototype._drawDashLine=function(t){t.strokeStyle=this._getColor(),t.lineWidth=this._getLineWidth();var e=null;if(void 0!==t.setLineDash){t.save();var i=[0];i=void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?[this.options.dash.length,this.options.dash.gap]:[5,5],t.setLineDash(i),t.lineDashOffset=0,e=this._line(t),t.setLineDash([0]),t.lineDashOffset=0,t.restore()}else t.beginPath(),t.lineCap="round",void 0!==this.options.dash.altLength?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap,this.options.dash.altLength,this.options.dash.gap]):void 0!==this.options.dash.length&&void 0!==this.options.dash.gap?t.dashedLine(this.from.x,this.from.y,this.to.x,this.to.y,[this.options.dash.length,this.options.dash.gap]):(t.moveTo(this.from.x,this.from.y),t.lineTo(this.to.x,this.to.y)),t.stroke();if(this.label){var s;if(1==this.options.smoothCurves.enabled&&null!=e){var o=.5*(.5*(this.from.x+e.x)+.5*(this.to.x+e.x)),n=.5*(.5*(this.from.y+e.y)+.5*(this.to.y+e.y));s={x:o,y:n}}else s=this._pointOnLine(.5);this._label(t,this.label,s.x,s.y)}},s.prototype._pointOnLine=function(t){return{x:(1-t)*this.from.x+t*this.to.x,y:(1-t)*this.from.y+t*this.to.y}},s.prototype._pointOnCircle=function(t,e,i,s){var o=2*(s-3/8)*Math.PI;return{x:t+i*Math.cos(o),y:e-i*Math.sin(o)}},s.prototype._drawArrowCenter=function(t){var e;if(t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth(),this.from!=this.to){var i=this._line(t),s=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),o=(10+5*this.options.width)*this.options.arrowScaleFactor;if(1==this.options.smoothCurves.enabled&&null!=i){var n=.5*(.5*(this.from.x+i.x)+.5*(this.to.x+i.x)),r=.5*(.5*(this.from.y+i.y)+.5*(this.to.y+i.y));e={x:n,y:r}}else e=this._pointOnLine(.5);t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&this._label(t,this.label,e.x,e.y)}else{var a,h,d=.25*Math.max(100,this.physics.springLength),l=this.from;l.width||l.resize(t),l.width>l.height?(a=l.x+.5*l.width,h=l.y-d):(a=l.x+d,h=l.y-.5*l.height),this._circle(t,a,h,d);var s=.2*Math.PI,o=(10+5*this.options.width)*this.options.arrowScaleFactor;e=this._pointOnCircle(a,h,d,.5),t.arrow(e.x,e.y,s,o),t.fill(),t.stroke(),this.label&&(e=this._pointOnCircle(a,h,d,.5),this._label(t,this.label,e.x,e.y))}},s.prototype._pointOnBezier=function(t){var e=this._getViaCoordinates(),i=Math.pow(1-t,2)*this.from.x+2*t*(1-t)*e.x+Math.pow(t,2)*this.to.x,s=Math.pow(1-t,2)*this.from.y+2*t*(1-t)*e.y+Math.pow(t,2)*this.to.y;return{x:i,y:s}},s.prototype._findBorderPosition=function(t,e){var i,s,o,n,r,a=10,h=0,d=0,l=1,c=.2,p=this.to;for(1==t&&(p=this.from);l>=d&&a>h;){var u=.5*(d+l);if(i=this._pointOnBezier(u),s=Math.atan2(p.y-i.y,p.x-i.x),o=p.distanceToBorder(e,s),n=Math.sqrt(Math.pow(i.x-p.x,2)+Math.pow(i.y-p.y,2)),r=o-n,Math.abs(r)r?0==t?d=u:l=u:0==t?l=u:d=u,h++}return i.t=u,i},s.prototype._drawArrow=function(t){t.strokeStyle=this._getColor(),t.fillStyle=t.strokeStyle,t.lineWidth=this._getLineWidth();var e,i,s;if(this.from!=this.to){if(this._line(t),1==this.options.smoothCurves.enabled){var o=this._getViaCoordinates();s=this._findBorderPosition(!1,t);var n=this._pointOnBezier(Math.max(0,s.t-.1));e=Math.atan2(s.y-n.y,s.x-n.x)}else{e=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x);var r=this.to.x-this.from.x,a=this.to.y-this.from.y,h=Math.sqrt(r*r+a*a),d=this.to.distanceToBorder(t,e),l=(h-d)/h;s={},s.x=(1-l)*this.from.x+l*this.to.x,s.y=(1-l)*this.from.y+l*this.to.y}if(i=(10+5*this.options.width)*this.options.arrowScaleFactor,t.arrow(s.x,s.y,e,i),t.fill(),t.stroke(),this.label){var c;c=1==this.options.smoothCurves.enabled&&null!=o?this._pointOnBezier(.5):this._pointOnLine(.5),this._label(t,this.label,c.x,c.y)}}else{var p,u,m,f=this.from,g=.25*Math.max(100,this.physics.springLength);f.width||f.resize(t),f.width>f.height?(p=f.x+.5*f.width,u=f.y-g,m={x:p,y:f.y,angle:.9*Math.PI}):(p=f.x+g,u=f.y-.5*f.height,m={x:f.x,y:u,angle:.6*Math.PI}),t.beginPath(),t.arc(p,u,g,0,2*Math.PI,!1),t.stroke();var i=(10+5*this.options.width)*this.options.arrowScaleFactor;t.arrow(m.x,m.y,m.angle,i),t.fill(),t.stroke(),this.label&&(c=this._pointOnCircle(p,u,g,.5),this._label(t,this.label,c.x,c.y))}},s.prototype._getDistanceToEdge=function(t,e,i,s,o,n){var r=0;if(this.from!=this.to)if(1==this.options.smoothCurves.enabled){var a,h;if(1==this.options.smoothCurves.enabled&&1==this.options.smoothCurves.dynamic)a=this.via.x,h=this.via.y;else{var d=this._getViaCoordinates();a=d.x,h=d.y}var l,c,p,u,m,f,g,v=1e9;for(c=0;10>c;c++)p=.1*c,u=Math.pow(1-p,2)*t+2*p*(1-p)*a+Math.pow(p,2)*i,m=Math.pow(1-p,2)*e+2*p*(1-p)*h+Math.pow(p,2)*s,c>0&&(l=this._getDistanceToLine(f,g,u,m,o,n),v=v>l?l:v),f=u,g=m;r=v}else r=this._getDistanceToLine(t,e,i,s,o,n);else{var u,m,y,b,_=.25*this.physics.springLength,x=this.from;x.width>x.height?(u=x.x+.5*x.width,m=x.y-_):(u=x.x+_,m=x.y-.5*x.height),y=u-o,b=m-n,r=Math.abs(Math.sqrt(y*y+b*b)-_)}return this.labelDimensions.lefto&&this.labelDimensions.topn?0:r},s.prototype._getDistanceToLine=function(t,e,i,s,o,n){var r=i-t,a=s-e,h=r*r+a*a,d=((o-t)*r+(n-e)*a)/h;d>1?d=1:0>d&&(d=0);var l=t+d*r,c=e+d*a,p=l-o,u=c-n;return Math.sqrt(p*p+u*u)},s.prototype.setScale=function(t){this.networkScaleInv=1/t},s.prototype.select=function(){this.selected=!0},s.prototype.unselect=function(){this.selected=!1},s.prototype.positionBezierNode=function(){null!==this.via&&null!==this.from&&null!==this.to?(this.via.x=.5*(this.from.x+this.to.x),this.via.y=.5*(this.from.y+this.to.y)):null!==this.via&&(this.via.x=0,this.via.y=0)},s.prototype._drawControlNodes=function(t){if(1==this.controlNodesEnabled){if(null===this.controlNodes.from&&null===this.controlNodes.to){var e="edgeIdFrom:".concat(this.id),i="edgeIdTo:".concat(this.id),s={nodes:{group:"",radius:7,borderWidth:2,borderWidthSelected:2},physics:{damping:0},clustering:{maxNodeSizeIncrements:0,nodeScaling:{width:0,height:0,radius:0}}};this.controlNodes.from=new n({id:e,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s),this.controlNodes.to=new n({id:i,shape:"dot",color:{background:"#ff0000",border:"#3c3c3c",highlight:{background:"#07f968"}}},{},{},s)}this.controlNodes.positions={},0==this.controlNodes.from.selected&&(this.controlNodes.positions.from=this.getControlNodeFromPosition(t),this.controlNodes.from.x=this.controlNodes.positions.from.x,this.controlNodes.from.y=this.controlNodes.positions.from.y),0==this.controlNodes.to.selected&&(this.controlNodes.positions.to=this.getControlNodeToPosition(t),this.controlNodes.to.x=this.controlNodes.positions.to.x,this.controlNodes.to.y=this.controlNodes.positions.to.y),this.controlNodes.from.draw(t),this.controlNodes.to.draw(t)}else this.controlNodes={from:null,to:null,positions:{}}},s.prototype._enableControlNodes=function(){this.fromBackup=this.from,this.toBackup=this.to,this.controlNodesEnabled=!0},s.prototype._disableControlNodes=function(){this.fromId=this.from.id,this.toId=this.to.id,this.fromId!=this.fromBackup.id?this.fromBackup.detachEdge(this):this.toId!=this.toBackup.id&&this.toBackup.detachEdge(this),this.fromBackup=null,this.toBackup=null,this.controlNodesEnabled=!1},s.prototype._getSelectedControlNode=function(t,e){var i=this.controlNodes.positions,s=Math.sqrt(Math.pow(t-i.from.x,2)+Math.pow(e-i.from.y,2)),o=Math.sqrt(Math.pow(t-i.to.x,2)+Math.pow(e-i.to.y,2));return 15>s?(this.connectedNode=this.from,this.from=this.controlNodes.from,this.controlNodes.from):15>o?(this.connectedNode=this.to,this.to=this.controlNodes.to,this.controlNodes.to):null},s.prototype._restoreControlNodes=function(){1==this.controlNodes.from.selected?(this.from=this.connectedNode,this.connectedNode=null,this.controlNodes.from.unselect()):1==this.controlNodes.to.selected&&(this.to=this.connectedNode,this.connectedNode=null,this.controlNodes.to.unselect())},s.prototype.getControlNodeFromPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!0,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.from.distanceToBorder(t,i+Math.PI),a=(n-r)/n;e={},e.x=a*this.from.x+(1-a)*this.to.x,e.y=a*this.from.y+(1-a)*this.to.y}return e},s.prototype.getControlNodeToPosition=function(t){var e;if(1==this.options.smoothCurves.enabled)e=this._findBorderPosition(!1,t);else{var i=Math.atan2(this.to.y-this.from.y,this.to.x-this.from.x),s=this.to.x-this.from.x,o=this.to.y-this.from.y,n=Math.sqrt(s*s+o*o),r=this.to.distanceToBorder(t,i),a=(n-r)/n;e={},e.x=(1-a)*this.from.x+a*this.to.x,e.y=(1-a)*this.from.y+a*this.to.y}return e},t.exports=s},function(t,e,i){function s(){this.clear(),this.defaultIndex=0}i(1);s.DEFAULT=[{border:"#2B7CE9",background:"#97C2FC",highlight:{border:"#2B7CE9",background:"#D2E5FF"},hover:{border:"#2B7CE9",background:"#D2E5FF"}},{border:"#FFA500",background:"#FFFF00",highlight:{border:"#FFA500",background:"#FFFFA3"},hover:{border:"#FFA500",background:"#FFFFA3"}},{border:"#FA0A10",background:"#FB7E81",highlight:{border:"#FA0A10",background:"#FFAFB1"},hover:{border:"#FA0A10",background:"#FFAFB1"}},{border:"#41A906",background:"#7BE141",highlight:{border:"#41A906",background:"#A1EC76"},hover:{border:"#41A906",background:"#A1EC76"}},{border:"#E129F0",background:"#EB7DF4",highlight:{border:"#E129F0",background:"#F0B3F5"},hover:{border:"#E129F0",background:"#F0B3F5"}},{border:"#7C29F0",background:"#AD85E4",highlight:{border:"#7C29F0",background:"#D3BDF0"},hover:{border:"#7C29F0",background:"#D3BDF0"}},{border:"#C37F00",background:"#FFA807",highlight:{border:"#C37F00",background:"#FFCA66"},hover:{border:"#C37F00",background:"#FFCA66"}},{border:"#4220FB",background:"#6E6EFD",highlight:{border:"#4220FB",background:"#9B9BFD"},hover:{border:"#4220FB",background:"#9B9BFD"}},{border:"#FD5A77",background:"#FFC0CB",highlight:{border:"#FD5A77",background:"#FFD1D9"},hover:{border:"#FD5A77",background:"#FFD1D9"}},{border:"#4AD63A",background:"#C2FABC",highlight:{border:"#4AD63A",background:"#E6FFE3"},hover:{border:"#4AD63A",background:"#E6FFE3"}}],s.prototype.clear=function(){this.groups={},this.groups.length=function(){var t=0;for(var e in this)this.hasOwnProperty(e)&&t++;return t}},s.prototype.get=function(t){var e=this.groups[t];if(void 0==e){var i=this.defaultIndex%s.DEFAULT.length;this.defaultIndex++,e={},e.color=s.DEFAULT[i],this.groups[t]=e}return e},s.prototype.add=function(t,e){return this.groups[t]=e,e},t.exports=s},function(t){function e(){this.images={},this.imageBroken={},this.callback=void 0}e.prototype.setOnloadCallback=function(t){this.callback=t},e.prototype.load=function(t,e){var i=this.images[t];if(void 0===i){var s=this;i=new Image,i.onload=function(){0==this.width&&(document.body.appendChild(this),this.width=this.offsetWidth,this.height=this.offsetHeight,document.body.removeChild(this)),s.callback&&(s.images[t]=i,s.callback(this))},i.onerror=function(){void 0===e?(console.error("Could not load image:",t),delete this.src,s.callback&&s.callback(this)):s.imageBroken[t]===!0?(console.error("Could not load brokenImage:",e),delete this.src,s.callback&&s.callback(this)):(this.src=e,s.imageBroken[t]=!0)},i.src=t}return i},t.exports=e},function(t,e,i){function s(t,e,i,s){var n=o.selectiveBridgeObject(["nodes"],s);this.options=n.nodes,this.selected=!1,this.hover=!1,this.edges=[],this.dynamicEdges=[],this.reroutedEdges={},this.fontDrawThreshold=3,this.id=void 0,this.allowedToMoveX=!1,this.allowedToMoveY=!1,this.xFixed=!1,this.yFixed=!1,this.horizontalAlignLeft=!0,this.verticalAlignTop=!0,this.baseRadiusValue=s.nodes.radius,this.radiusFixed=!1,this.level=-1,this.preassignedLevel=!1,this.hierarchyEnumerated=!1,this.labelDimensions={top:0,left:0,width:0,height:0,yLine:0},this.boundingBox={top:0,left:0,right:0,bottom:0},this.imagelist=e,this.grouplist=i,this.fx=0,this.fy=0,this.vx=0,this.vy=0,this.x=null,this.y=null,this.previousState={vx:0,vy:0,x:0,y:0},this.damping=s.physics.damping,this.fixedData={x:null,y:null},this.setProperties(t,n),this.resetCluster(),this.dynamicEdgesLength=0,this.clusterSession=0,this.clusterSizeWidthFactor=s.clustering.nodeScaling.width,this.clusterSizeHeightFactor=s.clustering.nodeScaling.height,this.clusterSizeRadiusFactor=s.clustering.nodeScaling.radius,this.maxNodeSizeIncrements=s.clustering.maxNodeSizeIncrements,this.growthIndicator=0,this.networkScaleInv=1,this.networkScale=1,this.canvasTopLeft={x:-300,y:-300},this.canvasBottomRight={x:300,y:300},this.parentEdgeId=null}var o=i(1);s.prototype.revertPosition=function(){this.x=this.previousState.x,this.y=this.previousState.y,this.vx=this.previousState.vx,this.vy=this.previousState.vy},s.prototype.resetCluster=function(){this.formationScale=void 0,this.clusterSize=1,this.containedNodes={},this.containedEdges={},this.clusterSessions=[]},s.prototype.attachEdge=function(t){-1==this.edges.indexOf(t)&&this.edges.push(t),-1==this.dynamicEdges.indexOf(t)&&this.dynamicEdges.push(t),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.detachEdge=function(t){var e=this.edges.indexOf(t);-1!=e&&this.edges.splice(e,1),e=this.dynamicEdges.indexOf(t),-1!=e&&this.dynamicEdges.splice(e,1),this.dynamicEdgesLength=this.dynamicEdges.length},s.prototype.setProperties=function(t,e){if(t){var i=["borderWidth","borderWidthSelected","shape","image","brokenImage","radius","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","group","mass"];if(o.selectiveDeepExtend(i,this.options,t),void 0!==t.id&&(this.id=t.id),void 0!==t.label&&(this.label=t.label,this.originalLabel=t.label),void 0!==t.title&&(this.title=t.title),void 0!==t.x&&(this.x=t.x),void 0!==t.y&&(this.y=t.y),void 0!==t.value&&(this.value=t.value),void 0!==t.level&&(this.level=t.level,this.preassignedLevel=!0),void 0!==t.horizontalAlignLeft&&(this.horizontalAlignLeft=t.horizontalAlignLeft),void 0!==t.verticalAlignTop&&(this.verticalAlignTop=t.verticalAlignTop),void 0!==t.triggerFunction&&(this.triggerFunction=t.triggerFunction),void 0===this.id)throw"Node must have an id";if("number"==typeof t.group||"string"==typeof t.group&&""!=t.group){var s=this.grouplist.get(t.group);o.deepExtend(this.options,s),this.options.color=o.parseColor(this.options.color)}if(void 0!==t.radius&&(this.baseRadiusValue=this.options.radius),void 0!==t.color&&(this.options.color=o.parseColor(t.color)),void 0!==this.options.image&&""!=this.options.image){if(!this.imagelist)throw"No imagelist provided";this.imageObj=this.imagelist.load(this.options.image,this.options.brokenImage)}switch(void 0!==t.allowedToMoveX?(this.xFixed=!t.allowedToMoveX,this.allowedToMoveX=t.allowedToMoveX):void 0!==t.x&&0==this.allowedToMoveX&&(this.xFixed=!0),void 0!==t.allowedToMoveY?(this.yFixed=!t.allowedToMoveY,this.allowedToMoveY=t.allowedToMoveY):void 0!==t.y&&0==this.allowedToMoveY&&(this.yFixed=!0),this.radiusFixed=this.radiusFixed||void 0!==t.radius,("image"===this.options.shape||"circularImage"===this.options.shape)&&(this.options.radiusMin=e.nodes.widthMin,this.options.radiusMax=e.nodes.widthMax),this.options.shape){case"database":this.draw=this._drawDatabase,this.resize=this._resizeDatabase;break;case"box":this.draw=this._drawBox,this.resize=this._resizeBox;break;case"circle":this.draw=this._drawCircle,this.resize=this._resizeCircle;break;case"ellipse":this.draw=this._drawEllipse,this.resize=this._resizeEllipse;break;case"image":this.draw=this._drawImage,this.resize=this._resizeImage;break;case"circularImage":this.draw=this._drawCircularImage,this.resize=this._resizeCircularImage;break;case"text":this.draw=this._drawText,this.resize=this._resizeText;break;case"dot":this.draw=this._drawDot,this.resize=this._resizeShape;break;case"square":this.draw=this._drawSquare,this.resize=this._resizeShape;break;case"triangle":this.draw=this._drawTriangle,this.resize=this._resizeShape;break;case"triangleDown":this.draw=this._drawTriangleDown,this.resize=this._resizeShape;break;case"star":this.draw=this._drawStar,this.resize=this._resizeShape;break;default:this.draw=this._drawEllipse,this.resize=this._resizeEllipse}this._reset()}},s.prototype.select=function(){this.selected=!0,this._reset()},s.prototype.unselect=function(){this.selected=!1,this._reset()},s.prototype.clearSizeCache=function(){this._reset()},s.prototype._reset=function(){this.width=void 0,this.height=void 0},s.prototype.getTitle=function(){return"function"==typeof this.title?this.title():this.title},s.prototype.distanceToBorder=function(t,e){var i=1;switch(this.width||this.resize(t),this.options.shape){case"circle":case"dot":return this.options.radius+i;case"ellipse":var s=this.width/2,o=this.height/2,n=Math.sin(e)*s,r=Math.cos(e)*o;return s*o/Math.sqrt(n*n+r*r);case"box":case"image":case"text":default:return this.width?Math.min(Math.abs(this.width/2/Math.cos(e)),Math.abs(this.height/2/Math.sin(e)))+i:0}},s.prototype._setForce=function(t,e){this.fx=t,this.fy=e},s.prototype._addForce=function(t,e){this.fx+=t,this.fy+=e},s.prototype.storeState=function(){this.previousState.x=this.x,this.previousState.y=this.y,this.previousState.vx=this.vx,this.previousState.vy=this.vy},s.prototype.discreteStep=function(t){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var e=this.damping*this.vx,i=(this.fx-e)/this.options.mass;this.vx+=i*t,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var s=this.damping*this.vy,o=(this.fy-s)/this.options.mass;this.vy+=o*t,this.y+=this.vy*t}},s.prototype.discreteStepLimited=function(t,e){if(this.storeState(),this.xFixed)this.fx=0,this.vx=0;else{var i=this.damping*this.vx,s=(this.fx-i)/this.options.mass;this.vx+=s*t,this.vx=Math.abs(this.vx)>e?this.vx>0?e:-e:this.vx,this.x+=this.vx*t}if(this.yFixed)this.fy=0,this.vy=0;else{var o=this.damping*this.vy,n=(this.fy-o)/this.options.mass;this.vy+=n*t,this.vy=Math.abs(this.vy)>e?this.vy>0?e:-e:this.vy,this.y+=this.vy*t}},s.prototype.isFixed=function(){return this.xFixed&&this.yFixed},s.prototype.isMoving=function(t){var e=Math.sqrt(Math.pow(this.vx,2)+Math.pow(this.vy,2));return e>t},s.prototype.isSelected=function(){return this.selected},s.prototype.getValue=function(){return this.value},s.prototype.getDistance=function(t,e){var i=this.x-t,s=this.y-e;return Math.sqrt(i*i+s*s)},s.prototype.setValueRange=function(t,e){if(!this.radiusFixed&&void 0!==this.value)if(e==t)this.options.radius=(this.options.radiusMin+this.options.radiusMax)/2;else{var i=(this.options.radiusMax-this.options.radiusMin)/(e-t);this.options.radius=(this.value-t)*i+this.options.radiusMin}this.baseRadiusValue=this.options.radius},s.prototype.draw=function(){throw"Draw method not initialized for node"},s.prototype.resize=function(){throw"Resize method not initialized for node"},s.prototype.isOverlappingWith=function(t){return this.leftt.left&&this.topt.top},s.prototype._resizeImage=function(){if(!this.width||!this.height){var t,e;if(this.value){this.options.radius=this.baseRadiusValue;var i=this.imageObj.height/this.imageObj.width;void 0!==i?(t=this.options.radius||this.imageObj.width,e=this.options.radius*i||this.imageObj.height):(t=0,e=0)}else t=this.imageObj.width,e=this.imageObj.height;this.width=t,this.height=e,this.growthIndicator=0,this.width>0&&this.height>0&&(this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t)}},s.prototype._drawImageAtPosition=function(t){if(0!=this.imageObj.width){if(this.clusterSize>1){var e=this.clusterSize>1?10:0;e*=this.networkScaleInv,e=Math.min(.2*this.width,e),t.globalAlpha=.5,t.drawImage(this.imageObj,this.left-e,this.top-e,this.width+2*e,this.height+2*e)}t.globalAlpha=1,t.drawImage(this.imageObj,this.left,this.top,this.width,this.height)}},s.prototype._drawImageLabel=function(t){var e,i=0;if(this.height){i=this.height/2;var s=this.getTextSize(t);s.lineCount>=1&&(i+=s.height/2,i+=3)}e=this.y+i,this._label(t,this.label,this.x,e,void 0)},s.prototype._drawImage=function(t){this._resizeImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawImageAtPosition(t),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeCircularImage=function(t){if(this.imageObj.src&&this.imageObj.width&&this.imageObj.height)this._swapToImageResizeWhenImageLoaded&&(this.width=0,this.height=0,delete this._swapToImageResizeWhenImageLoaded),this._resizeImage(t);else if(!this.width){var e=2*this.options.radius;this.width=e,this.height=e,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*e,this._swapToImageResizeWhenImageLoaded=!0}},s.prototype._drawCircularImage=function(t){this._resizeCircularImage(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=this.left+this.width/2,i=this.top+this.height/2,s=Math.abs(this.height/2);this._drawRawCircle(t,e,i,s),t.save(),t.circle(this.x,this.y,s),t.stroke(),t.clip(),this._drawImageAtPosition(t),t.restore(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._drawImageLabel(t),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height)},s.prototype._resizeBox=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawBox=function(t){this._resizeBox(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.roundRect(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth,this.options.radius),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.roundRect(this.left,this.top,this.width,this.height,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeDatabase=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=i.width+2*e;this.width=s,this.height=s,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-s}},s.prototype._drawDatabase=function(t){this._resizeDatabase(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2; +var e=2.5,i=this.options.borderWidth,s=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.database(this.x-this.width/2-2*t.lineWidth,this.y-.5*this.height-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.database(this.x-this.width/2,this.y-.5*this.height,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._resizeCircle=function(t){if(!this.width){var e=5,i=this.getTextSize(t),s=Math.max(i.width,i.height)+2*e;this.options.radius=s/2,this.width=s,this.height=s,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.options.radius-.5*s}},s.prototype._drawRawCircle=function(t,e,i,s){var o=2.5,n=this.options.borderWidth,r=this.options.borderWidthSelected||2*this.options.borderWidth;t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.circle(e,i,s+2*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?r:n)+(this.clusterSize>1?o:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.circle(this.x,this.y,s),t.fill(),t.stroke()},s.prototype._drawCircle=function(t){this._resizeCircle(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._drawRawCircle(t,this.x,this.y,this.options.radius),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this._label(t,this.label,this.x,this.y)},s.prototype._resizeEllipse=function(t){if(!this.width){var e=this.getTextSize(t);this.width=1.5*e.width,this.height=2*e.height,this.width1&&(t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.ellipse(this.left-2*t.lineWidth,this.top-2*t.lineWidth,this.width+4*t.lineWidth,this.height+4*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?s:i)+(this.clusterSize>1?e:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t.ellipse(this.left,this.top,this.width,this.height),t.fill(),t.stroke(),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height,this._label(t,this.label,this.x,this.y)},s.prototype._drawDot=function(t){this._drawShape(t,"circle")},s.prototype._drawTriangle=function(t){this._drawShape(t,"triangle")},s.prototype._drawTriangleDown=function(t){this._drawShape(t,"triangleDown")},s.prototype._drawSquare=function(t){this._drawShape(t,"square")},s.prototype._drawStar=function(t){this._drawShape(t,"star")},s.prototype._resizeShape=function(){if(!this.width){this.options.radius=this.baseRadiusValue;var t=2*this.options.radius;this.width=t,this.height=t,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=.5*Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-t}},s.prototype._drawShape=function(t,e){this._resizeShape(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2;var i=2.5,s=this.options.borderWidth,o=this.options.borderWidthSelected||2*this.options.borderWidth,n=2;switch(e){case"dot":n=2;break;case"square":n=2;break;case"triangle":n=3;break;case"triangleDown":n=3;break;case"star":n=4}t.strokeStyle=this.selected?this.options.color.highlight.border:this.hover?this.options.color.hover.border:this.options.color.border,this.clusterSize>1&&(t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t[e](this.x,this.y,this.options.radius+n*t.lineWidth),t.stroke()),t.lineWidth=(this.selected?o:s)+(this.clusterSize>1?i:0),t.lineWidth*=this.networkScaleInv,t.lineWidth=Math.min(this.width,t.lineWidth),t.fillStyle=this.selected?this.options.color.highlight.background:this.hover?this.options.color.hover.background:this.options.color.background,t[e](this.x,this.y,this.options.radius),t.fill(),t.stroke(),this.boundingBox.top=this.y-this.options.radius,this.boundingBox.left=this.x-this.options.radius,this.boundingBox.right=this.x+this.options.radius,this.boundingBox.bottom=this.y+this.options.radius,this.label&&(this._label(t,this.label,this.x,this.y+this.height/2,void 0,"hanging",!0),this.boundingBox.left=Math.min(this.boundingBox.left,this.labelDimensions.left),this.boundingBox.right=Math.max(this.boundingBox.right,this.labelDimensions.left+this.labelDimensions.width),this.boundingBox.bottom=Math.max(this.boundingBox.bottom,this.boundingBox.bottom+this.labelDimensions.height))},s.prototype._resizeText=function(t){if(!this.width){var e=5,i=this.getTextSize(t);this.width=i.width+2*e,this.height=i.height+2*e,this.width+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeWidthFactor,this.height+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeHeightFactor,this.options.radius+=Math.min(this.clusterSize-1,this.maxNodeSizeIncrements)*this.clusterSizeRadiusFactor,this.growthIndicator=this.width-(i.width+2*e)}},s.prototype._drawText=function(t){this._resizeText(t),this.left=this.x-this.width/2,this.top=this.y-this.height/2,this._label(t,this.label,this.x,this.y),this.boundingBox.top=this.top,this.boundingBox.left=this.left,this.boundingBox.right=this.left+this.width,this.boundingBox.bottom=this.top+this.height},s.prototype._label=function(t,e,i,s,o,n,r){if(e&&Number(this.options.fontSize)*this.networkScale>this.fontDrawThreshold){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;var a=e.split("\n"),h=a.length,d=Number(this.options.fontSize),l=s+(1-h)/2*d;1==r&&(l=s+(1-h)/(2*d));for(var c=t.measureText(a[0]).width,p=1;h>p;p++){var u=t.measureText(a[p]).width;c=u>c?u:c}var m=this.options.fontSize*h,f=i-c/2,g=s-m/2;"hanging"==n&&(g+=.5*d,g+=4,l+=4),this.labelDimensions={top:g,left:f,width:c,height:m,yLine:l},void 0!==this.options.fontFill&&null!==this.options.fontFill&&"none"!==this.options.fontFill&&(t.fillStyle=this.options.fontFill,t.fillRect(f,g,c,m)),t.fillStyle=this.options.fontColor||"black",t.textAlign=o||"center",t.textBaseline=n||"middle",this.options.fontStrokeWidth>0&&(t.lineWidth=this.options.fontStrokeWidth,t.strokeStyle=this.options.fontStrokeColor,t.lineJoin="round");for(var p=0;h>p;p++)this.options.fontStrokeWidth&&t.strokeText(a[p],i,l),t.fillText(a[p],i,l),l+=d}},s.prototype.getTextSize=function(t){if(void 0!==this.label){t.font=(this.selected?"bold ":"")+this.options.fontSize+"px "+this.options.fontFace;for(var e=this.label.split("\n"),i=(Number(this.options.fontSize)+4)*e.length,s=0,o=0,n=e.length;n>o;o++)s=Math.max(s,t.measureText(e[o]).width);return{width:s,height:i,lineCount:e.length}}return{width:0,height:0,lineCount:0}},s.prototype.inArea=function(){return void 0!==this.width?this.x+this.width*this.networkScaleInv>=this.canvasTopLeft.x&&this.x-this.width*this.networkScaleInv=this.canvasTopLeft.y&&this.y-this.height*this.networkScaleInv=this.canvasTopLeft.x&&this.x=this.canvasTopLeft.y&&this.ys&&(n=s-e-this.padding),no&&(r=o-i-this.padding),ri;i++)if(e.id===r.nodes[i].id){o=r.nodes[i];break}for(o||(o={id:e.id},t.node&&(o.attr=a(o.attr,t.node))),i=n.length-1;i>=0;i--){var h=n[i];h.nodes||(h.nodes=[]),-1==h.nodes.indexOf(o)&&h.nodes.push(o)}e.attr&&(o.attr=a(o.attr,e.attr))}function l(t,e){if(t.edges||(t.edges=[]),t.edges.push(e),t.edge){var i=a({},t.edge);e.attr=a(i,e.attr)}}function c(t,e,i,s,o){var n={from:e,to:i,type:s};return t.edge&&(n.attr=a({},t.edge)),n.attr=a(n.attr||{},o),n}function p(){for(N=D.NULL,k="";" "==E||" "==E||"\n"==E||"\r"==E;)o();do{var t=!1;if("#"==E){for(var e=O-1;" "==T.charAt(e)||" "==T.charAt(e);)e--;if("\n"==T.charAt(e)||""==T.charAt(e)){for(;""!=E&&"\n"!=E;)o();t=!0}}if("/"==E&&"/"==n()){for(;""!=E&&"\n"!=E;)o();t=!0}if("/"==E&&"*"==n()){for(;""!=E;){if("*"==E&&"/"==n()){o(),o();break}o()}t=!0}for(;" "==E||" "==E||"\n"==E||"\r"==E;)o()}while(t);if(""==E)return void(N=D.DELIMITER);var i=E+n();if(C[i])return N=D.DELIMITER,k=i,o(),void o();if(C[E])return N=D.DELIMITER,k=E,void o();if(r(E)||"-"==E){for(k+=E,o();r(E);)k+=E,o();return"false"==k?k=!1:"true"==k?k=!0:isNaN(Number(k))||(k=Number(k)),void(N=D.IDENTIFIER)}if('"'==E){for(o();""!=E&&('"'!=E||'"'==E&&'"'==n());)k+=E,'"'==E&&o(),o();if('"'!=E)throw x('End of string " expected');return o(),void(N=D.IDENTIFIER)}for(N=D.UNKNOWN;""!=E;)k+=E,o();throw new SyntaxError('Syntax error in part "'+w(k,30)+'"')}function u(){var t={};if(s(),p(),"strict"==k&&(t.strict=!0,p()),("graph"==k||"digraph"==k)&&(t.type=k,p()),N==D.IDENTIFIER&&(t.id=k,p()),"{"!=k)throw x("Angle bracket { expected");if(p(),m(t),"}"!=k)throw x("Angle bracket } expected");if(p(),""!==k)throw x("End of file expected");return p(),delete t.node,delete t.edge,delete t.graph,t}function m(t){for(;""!==k&&"}"!=k;)f(t),";"==k&&p()}function f(t){var e=g(t);if(e)return void b(t,e);var i=v(t);if(!i){if(N!=D.IDENTIFIER)throw x("Identifier expected");var s=k;if(p(),"="==k){if(p(),N!=D.IDENTIFIER)throw x("Identifier expected");t[s]=k,p()}else y(t,s)}}function g(t){var e=null;if("subgraph"==k&&(e={},e.type="subgraph",p(),N==D.IDENTIFIER&&(e.id=k,p())),"{"==k){if(p(),e||(e={}),e.parent=t,e.node=t.node,e.edge=t.edge,e.graph=t.graph,m(e),"}"!=k)throw x("Angle bracket } expected");p(),delete e.node,delete e.edge,delete e.graph,delete e.parent,t.subgraphs||(t.subgraphs=[]),t.subgraphs.push(e)}return e}function v(t){return"node"==k?(p(),t.node=_(),"node"):"edge"==k?(p(),t.edge=_(),"edge"):"graph"==k?(p(),t.graph=_(),"graph"):null}function y(t,e){var i={id:e},s=_();s&&(i.attr=s),d(t,i),b(t,e)}function b(t,e){for(;"->"==k||"--"==k;){var i,s=k;p();var o=g(t);if(o)i=o;else{if(N!=D.IDENTIFIER)throw x("Identifier or subgraph expected");i=k,d(t,{id:i}),p()}var n=_(),r=c(t,e,i,s,n);l(t,r),e=i}}function _(){for(var t=null;"["==k;){for(p(),t={};""!==k&&"]"!=k;){if(N!=D.IDENTIFIER)throw x("Attribute name expected");var e=k;if(p(),"="!=k)throw x("Equal sign = expected");if(p(),N!=D.IDENTIFIER)throw x("Attribute value expected");var i=k;h(t,e,i),p(),","==k&&p()}if("]"!=k)throw x("Bracket ] expected");p()}return t}function x(t){return new SyntaxError(t+', got "'+w(k,30)+'" (char '+O+")")}function w(t,e){return t.length<=e?t:t.substr(0,27)+"..."}function M(t,e,i){Array.isArray(t)?t.forEach(function(t){Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}):Array.isArray(e)?e.forEach(function(e){i(t,e)}):i(t,e)}function S(t){var e=i(t),s={nodes:[],edges:[],options:{}};if(e.nodes&&e.nodes.forEach(function(t){var e={id:t.id,label:String(t.label||t.id)};a(e,t.attr),e.image&&(e.shape="image"),s.nodes.push(e)}),e.edges){var o=function(t){var e={from:t.from,to:t.to};return a(e,t.attr),e.style="->"==t.type?"arrow":"line",e};e.edges.forEach(function(t){var e,i;e=t.from instanceof Object?t.from.nodes:{id:t.from},i=t.to instanceof Object?t.to.nodes:{id:t.to},t.from instanceof Object&&t.from.edges&&t.from.edges.forEach(function(t){var e=o(t);s.edges.push(e)}),M(e,i,function(e,i){var n=c(s,e.id,i.id,t.type,t.attr),r=o(n);s.edges.push(r)}),t.to instanceof Object&&t.to.edges&&t.to.edges.forEach(function(t){var e=o(t);s.edges.push(e)})})}return e.attr&&(s.options=e.attr),s}var D={NULL:0,DELIMITER:1,IDENTIFIER:2,UNKNOWN:3},C={"{":!0,"}":!0,"[":!0,"]":!0,";":!0,"=":!0,",":!0,"->":!0,"--":!0},T="",O=0,E="",k="",N=D.NULL,L=/[a-zA-Z_0-9.:#]/;e.parseDOT=i,e.DOTToGraph=S},function(t,e){function i(t,e){var i=[],s=[];this.options={edges:{inheritColor:!0},nodes:{allowedToMove:!1,parseColor:!1}},void 0!==e&&(this.options.nodes.allowedToMove=e.allowedToMove|!1,this.options.nodes.parseColor=e.parseColor|!1,this.options.edges.inheritColor=e.inheritColor|!0);for(var o=t.edges,n=t.nodes,r=0;r=s&&(s=864e5),e=new Date(e.valueOf()-.05*s),i=new Date(i.valueOf()+.05*s)}return{start:e,end:i}},s.prototype.setWindow=function(t,e,i){var s=i&&void 0!==i.animate?i.animate:!0;if(1==arguments.length){var o=arguments[0];this.range.setRange(o.start,o.end,s)}else this.range.setRange(t,e,s)},s.prototype.moveTo=function(t,e){var i=this.range.end-this.range.start,s=r.convert(t,"Date").valueOf(),o=s-i/2,n=s+i/2,a=e&&void 0!==e.animate?e.animate:!0;this.range.setRange(o,n,a)},s.prototype.getWindow=function(){var t=this.range.getRange();return{start:new Date(t.start),end:new Date(t.end)}},s.prototype.redraw=function(){var t=!1,e=this.options,i=this.props,s=this.dom;if(s){h.updateHiddenDates(this.body,this.options.hiddenDates),"top"==e.orientation?(r.addClassName(s.root,"top"),r.removeClassName(s.root,"bottom")):(r.removeClassName(s.root,"top"),r.addClassName(s.root,"bottom")),s.root.style.maxHeight=r.option.asSize(e.maxHeight,""),s.root.style.minHeight=r.option.asSize(e.minHeight,""),s.root.style.width=r.option.asSize(e.width,""),i.border.left=(s.centerContainer.offsetWidth-s.centerContainer.clientWidth)/2,i.border.right=i.border.left,i.border.top=(s.centerContainer.offsetHeight-s.centerContainer.clientHeight)/2,i.border.bottom=i.border.top;var o=s.root.offsetHeight-s.root.clientHeight,n=s.root.offsetWidth-s.root.clientWidth;0===s.centerContainer.clientHeight&&(i.border.left=i.border.top,i.border.right=i.border.left),0===s.root.clientHeight&&(n=o),i.center.height=s.center.offsetHeight,i.left.height=s.left.offsetHeight,i.right.height=s.right.offsetHeight,i.top.height=s.top.clientHeight||-i.border.top,i.bottom.height=s.bottom.clientHeight||-i.border.bottom;var a=Math.max(i.left.height,i.center.height,i.right.height),d=i.top.height+a+i.bottom.height+o+i.border.top+i.border.bottom;s.root.style.height=r.option.asSize(e.height,d+"px"),i.root.height=s.root.offsetHeight,i.background.height=i.root.height-o;var l=i.root.height-i.top.height-i.bottom.height-o;i.centerContainer.height=l,i.leftContainer.height=l,i.rightContainer.height=i.leftContainer.height,i.root.width=s.root.offsetWidth,i.background.width=i.root.width-n,i.left.width=s.leftContainer.clientWidth||-i.border.left,i.leftContainer.width=i.left.width,i.right.width=s.rightContainer.clientWidth||-i.border.right,i.rightContainer.width=i.right.width;var c=i.root.width-i.left.width-i.right.width-n;i.center.width=c,i.centerContainer.width=c,i.top.width=c,i.bottom.width=c,s.background.style.height=i.background.height+"px",s.backgroundVertical.style.height=i.background.height+"px",s.backgroundHorizontal.style.height=i.centerContainer.height+"px",s.centerContainer.style.height=i.centerContainer.height+"px",s.leftContainer.style.height=i.leftContainer.height+"px",s.rightContainer.style.height=i.rightContainer.height+"px",s.background.style.width=i.background.width+"px",s.backgroundVertical.style.width=i.centerContainer.width+"px",s.backgroundHorizontal.style.width=i.background.width+"px",s.centerContainer.style.width=i.center.width+"px",s.top.style.width=i.top.width+"px",s.bottom.style.width=i.bottom.width+"px",s.background.style.left="0",s.background.style.top="0",s.backgroundVertical.style.left=i.left.width+i.border.left+"px",s.backgroundVertical.style.top="0",s.backgroundHorizontal.style.left="0",s.backgroundHorizontal.style.top=i.top.height+"px",s.centerContainer.style.left=i.left.width+"px",s.centerContainer.style.top=i.top.height+"px",s.leftContainer.style.left="0",s.leftContainer.style.top=i.top.height+"px",s.rightContainer.style.left=i.left.width+i.center.width+"px",s.rightContainer.style.top=i.top.height+"px",s.top.style.left=i.left.width+"px",s.top.style.top="0",s.bottom.style.left=i.left.width+"px",s.bottom.style.top=i.top.height+i.centerContainer.height+"px",this._updateScrollTop();var p=this.props.scrollTop;"bottom"==e.orientation&&(p+=Math.max(this.props.centerContainer.height-this.props.center.height-this.props.border.top-this.props.border.bottom,0)),s.center.style.left="0",s.center.style.top=p+"px",s.left.style.left="0",s.left.style.top=p+"px",s.right.style.left="0",s.right.style.top=p+"px";var u=0==this.props.scrollTop?"hidden":"",m=this.props.scrollTop==this.props.scrollTopMin?"hidden":"";if(s.shadowTop.style.visibility=u,s.shadowBottom.style.visibility=m,s.shadowTopLeft.style.visibility=u,s.shadowBottomLeft.style.visibility=m,s.shadowTopRight.style.visibility=u,s.shadowBottomRight.style.visibility=m,this.components.forEach(function(e){t=e.redraw()||t}),t){var f=3;this.redrawCount0&&(this.props.scrollTop=0),this.props.scrollTopt[s].y?t[s].y:e,i=i0){var r,a,h=Number(i.svg.style.height.replace("px",""));if(r=o.getSVGElement("path",i.svgElements,i.svg),r.setAttributeNS(null,"class",e.className),void 0!==e.style&&r.setAttributeNS(null,"style",e.style),a=1==e.options.catmullRom.enabled?s._catmullRom(t,e):s._linear(t),1==e.options.shaded.enabled){var d,l=o.getSVGElement("path",i.svgElements,i.svg);d="top"==e.options.shaded.orientation?"M"+t[0].x+",0 "+a+"L"+t[t.length-1].x+",0":"M"+t[0].x+","+h+" "+a+"L"+t[t.length-1].x+","+h,l.setAttributeNS(null,"class",e.className+" fill"),void 0!==e.options.shaded.style&&l.setAttributeNS(null,"style",e.options.shaded.style),l.setAttributeNS(null,"d",d)}r.setAttributeNS(null,"d","M"+a),1==e.options.drawPoints.enabled&&n.draw(t,e,i)}},s._catmullRomUniform=function(t){for(var e,i,s,o,n,r,a=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",h=1/6,d=t.length,l=0;d-1>l;l++)e=0==l?t[0]:t[l-1],i=t[l],s=t[l+1],o=d>l+2?t[l+2]:s,n={x:(-e.x+6*i.x+s.x)*h,y:(-e.y+6*i.y+s.y)*h},r={x:(i.x+6*s.x-o.x)*h,y:(i.y+6*s.y-o.y)*h},a+="C"+n.x+","+n.y+" "+r.x+","+r.y+" "+s.x+","+s.y+" "; +return a},s._catmullRom=function(t,e){var i=e.options.catmullRom.alpha;if(0==i||void 0===i)return this._catmullRomUniform(t);for(var s,o,n,r,a,h,d,l,c,p,u,m,f,g,v,y,b,_,x,w=Math.round(t[0].x)+","+Math.round(t[0].y)+" ",M=t.length,S=0;M-1>S;S++)s=0==S?t[0]:t[S-1],o=t[S],n=t[S+1],r=M>S+2?t[S+2]:n,d=Math.sqrt(Math.pow(s.x-o.x,2)+Math.pow(s.y-o.y,2)),l=Math.sqrt(Math.pow(o.x-n.x,2)+Math.pow(o.y-n.y,2)),c=Math.sqrt(Math.pow(n.x-r.x,2)+Math.pow(n.y-r.y,2)),g=Math.pow(c,i),y=Math.pow(c,2*i),v=Math.pow(l,i),b=Math.pow(l,2*i),x=Math.pow(d,i),_=Math.pow(d,2*i),p=2*_+3*x*v+b,u=2*y+3*g*v+b,m=3*x*(x+v),m>0&&(m=1/m),f=3*g*(g+v),f>0&&(f=1/f),a={x:(-b*s.x+p*o.x+_*n.x)*m,y:(-b*s.y+p*o.y+_*n.y)*m},h={x:(y*o.x+u*n.x-b*r.x)*f,y:(y*o.y+u*n.y-b*r.y)*f},0==a.x&&0==a.y&&(a=o),0==h.x&&0==h.y&&(h=n),w+="C"+a.x+","+a.y+" "+h.x+","+h.y+" "+n.x+","+n.y+" ";return w},s._linear=function(t){for(var e="",i=0;it[s].y?t[s].y:e,i=i0&&(n=Math.min(n,Math.abs(c[d-1].x-r))),a=s._getSafeDrawData(n,h,m);else{var g=d+(p[r].amount-p[r].resolved),v=d-(p[r].resolved+1);g0&&(n=Math.min(n,Math.abs(c[v].x-r))),a=s._getSafeDrawData(n,h,m),p[r].resolved+=1,"stack"==h.options.barChart.handleOverlap?(f=p[r].accumulated,p[r].accumulated+=h.zeroPosition-c[d].y):"sideBySide"==h.options.barChart.handleOverlap&&(a.width=a.width/p[r].amount,a.offset+=p[r].resolved*a.width-.5*a.width*(p[r].amount+1),"left"==h.options.barChart.align?a.offset-=.5*a.width:"right"==h.options.barChart.align&&(a.offset+=.5*a.width))}o.drawBar(c[d].x+a.offset,c[d].y-f,a.width,h.zeroPosition-c[d].y,h.className+" bar",i.svgElements,i.svg),1==h.options.drawPoints.enabled&&o.drawPoint(c[d].x+a.offset,c[d].y,h,i.svgElements,i.svg)}},s._getDataIntersections=function(t,e){for(var i,s=0;s0&&(i=Math.min(i,Math.abs(e[s-1].x-e[s].x))),0==i&&(void 0===t[e[s].x]&&(t[e[s].x]={amount:0,resolved:0,accumulated:0}),t[e[s].x].amount+=1)},s._getSafeDrawData=function(t,e,i){var s,o;return t0?(s=i>t?i:t,o=0,"left"==e.options.barChart.align?o-=.5*t:"right"==e.options.barChart.align&&(o+=.5*t)):(s=e.options.barChart.width,o=0,"left"==e.options.barChart.align?o-=.5*e.options.barChart.width:"right"==e.options.barChart.align&&(o+=.5*e.options.barChart.width)),{width:s,offset:o}},s.getStackedBarYRange=function(t,e,i,o,n){if(t.length>0){t.sort(function(t,e){return t.x==e.x?t.groupId-e.groupId:t.x-e.x});var r={};s._getDataIntersections(r,t),e[o]=s._getStackedBarYRange(r,t),e[o].yAxisOrientation=n,i.push(o)}},s._getStackedBarYRange=function(t,e){for(var i,s=e[0].y,o=e[0].y,n=0;ne[n].y?e[n].y:s,o=ot[r].accumulated?t[r].accumulated:s,o=ot[s].y?t[s].y:e,i=is;s++){var o=s%2===0?1.3*i:.5*i;this.lineTo(t+o*Math.sin(2*s*Math.PI/10),e-o*Math.cos(2*s*Math.PI/10))}this.closePath()},CanvasRenderingContext2D.prototype.roundRect=function(t,e,i,s,o){var n=Math.PI/180;0>i-2*o&&(o=i/2),0>s-2*o&&(o=s/2),this.beginPath(),this.moveTo(t+o,e),this.lineTo(t+i-o,e),this.arc(t+i-o,e+o,o,270*n,360*n,!1),this.lineTo(t+i,e+s-o),this.arc(t+i-o,e+s-o,o,0,90*n,!1),this.lineTo(t+o,e+s),this.arc(t+o,e+s-o,o,90*n,180*n,!1),this.lineTo(t,e+o),this.arc(t+o,e+o,o,180*n,270*n,!1)},CanvasRenderingContext2D.prototype.ellipse=function(t,e,i,s){var o=.5522848,n=i/2*o,r=s/2*o,a=t+i,h=e+s,d=t+i/2,l=e+s/2;this.beginPath(),this.moveTo(t,l),this.bezierCurveTo(t,l-r,d-n,e,d,e),this.bezierCurveTo(d+n,e,a,l-r,a,l),this.bezierCurveTo(a,l+r,d+n,h,d,h),this.bezierCurveTo(d-n,h,t,l+r,t,l)},CanvasRenderingContext2D.prototype.database=function(t,e,i,s){var o=1/3,n=i,r=s*o,a=.5522848,h=n/2*a,d=r/2*a,l=t+n,c=e+r,p=t+n/2,u=e+r/2,m=e+(s-r/2),f=e+s;this.beginPath(),this.moveTo(l,u),this.bezierCurveTo(l,u+d,p+h,c,p,c),this.bezierCurveTo(p-h,c,t,u+d,t,u),this.bezierCurveTo(t,u-d,p-h,e,p,e),this.bezierCurveTo(p+h,e,l,u-d,l,u),this.lineTo(l,m),this.bezierCurveTo(l,m+d,p+h,f,p,f),this.bezierCurveTo(p-h,f,t,m+d,t,m),this.lineTo(t,u)},CanvasRenderingContext2D.prototype.arrow=function(t,e,i,s){var o=t-s*Math.cos(i),n=e-s*Math.sin(i),r=t-.9*s*Math.cos(i),a=e-.9*s*Math.sin(i),h=o+s/3*Math.cos(i+.5*Math.PI),d=n+s/3*Math.sin(i+.5*Math.PI),l=o+s/3*Math.cos(i-.5*Math.PI),c=n+s/3*Math.sin(i-.5*Math.PI);this.beginPath(),this.moveTo(t,e),this.lineTo(h,d),this.lineTo(r,a),this.lineTo(l,c),this.closePath()},CanvasRenderingContext2D.prototype.dashedLine=function(t,e,i,s,o){o||(o=[10,5]),0==p&&(p=.001);var n=o.length;this.moveTo(t,e);for(var r=i-t,a=s-e,h=a/r,d=Math.sqrt(r*r+a*a),l=0,c=!0;d>=.1;){var p=o[l++%n];p>d&&(p=d);var u=Math.sqrt(p*p/(1+h*h));0>r&&(u=-u),t+=u,e+=h*u,this[c?"lineTo":"moveTo"](t,e),d-=p,c=!c}})},function(t){function e(t){return t?i(t):void 0}function i(t){for(var i in e.prototype)t[i]=e.prototype[i];return t}t.exports=e,e.prototype.on=e.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks[t]=this._callbacks[t]||[]).push(e),this},e.prototype.once=function(t,e){function i(){s.off(t,i),e.apply(this,arguments)}var s=this;return this._callbacks=this._callbacks||{},i.fn=e,this.on(t,i),this},e.prototype.off=e.prototype.removeListener=e.prototype.removeAllListeners=e.prototype.removeEventListener=function(t,e){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[t];if(!i)return this;if(1==arguments.length)return delete this._callbacks[t],this;for(var s,o=0;os;++s)i[s].apply(this,e)}return this},e.prototype.listeners=function(t){return this._callbacks=this._callbacks||{},this._callbacks[t]||[]},e.prototype.hasListeners=function(t){return!!this.listeners(t).length}},function(t,e){var i,s,o;!function(n,r){s=[],i=r,o="function"==typeof i?i.apply(e,s):i,!(void 0!==o&&(t.exports=o))}(this,function(){function t(t){var e,i=t&&t.preventDefault||!1,s=t&&t.container||window,o={},n={keydown:{},keyup:{}},r={};for(e=97;122>=e;e++)r[String.fromCharCode(e)]={code:65+(e-97),shift:!1};for(e=65;90>=e;e++)r[String.fromCharCode(e)]={code:e,shift:!0};for(e=0;9>=e;e++)r[""+e]={code:48+e,shift:!1};for(e=1;12>=e;e++)r["F"+e]={code:111+e,shift:!1};for(e=0;9>=e;e++)r["num"+e]={code:96+e,shift:!1};r["num*"]={code:106,shift:!1},r["num+"]={code:107,shift:!1},r["num-"]={code:109,shift:!1},r["num/"]={code:111,shift:!1},r["num."]={code:110,shift:!1},r.left={code:37,shift:!1},r.up={code:38,shift:!1},r.right={code:39,shift:!1},r.down={code:40,shift:!1},r.space={code:32,shift:!1},r.enter={code:13,shift:!1},r.shift={code:16,shift:void 0},r.esc={code:27,shift:!1},r.backspace={code:8,shift:!1},r.tab={code:9,shift:!1},r.ctrl={code:17,shift:!1},r.alt={code:18,shift:!1},r["delete"]={code:46,shift:!1},r.pageup={code:33,shift:!1},r.pagedown={code:34,shift:!1},r["="]={code:187,shift:!1},r["-"]={code:189,shift:!1},r["]"]={code:221,shift:!1},r["["]={code:219,shift:!1};var a=function(t){d(t,"keydown")},h=function(t){d(t,"keyup")},d=function(t,e){if(void 0!==n[e][t.keyCode]){for(var s=n[e][t.keyCode],o=0;oe-n?(i=t.clone().add(o-1,"months"),s=(e-n)/(n-i)):(i=t.clone().add(o+1,"months"),s=(e-n)/(i-n)),-(o+s)}function f(t,e,i){var s;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):null!=t.isPM?(s=t.isPM(i),s&&12>e&&(e+=12),s||12!==e||(e=0),e):e}function g(){}function v(t,e){e!==!1&&F(t),_(this,t),this._d=new Date(+t._d),Di===!1&&(Di=!0,Ce.updateOffset(this),Di=!1)}function y(t){var e=N(t),i=e.year||0,s=e.quarter||0,o=e.month||0,n=e.week||0,r=e.day||0,a=e.hour||0,h=e.minute||0,d=e.second||0,l=e.millisecond||0;this._milliseconds=+l+1e3*d+6e4*h+36e5*a,this._days=+r+7*n,this._months=+o+3*s+12*i,this._data={},this._locale=Ce.localeData(),this._bubble()}function b(t,e){for(var i in e)a(e,i)&&(t[i]=e[i]);return a(e,"toString")&&(t.toString=e.toString),a(e,"valueOf")&&(t.valueOf=e.valueOf),t}function _(t,e){var i,s,o;if("undefined"!=typeof e._isAMomentObject&&(t._isAMomentObject=e._isAMomentObject),"undefined"!=typeof e._i&&(t._i=e._i),"undefined"!=typeof e._f&&(t._f=e._f),"undefined"!=typeof e._l&&(t._l=e._l),"undefined"!=typeof e._strict&&(t._strict=e._strict),"undefined"!=typeof e._tzm&&(t._tzm=e._tzm),"undefined"!=typeof e._isUTC&&(t._isUTC=e._isUTC),"undefined"!=typeof e._offset&&(t._offset=e._offset),"undefined"!=typeof e._pf&&(t._pf=e._pf),"undefined"!=typeof e._locale&&(t._locale=e._locale),Ye.length>0)for(i in Ye)s=Ye[i],o=e[s],"undefined"!=typeof o&&(t[s]=o);return t}function x(t){return 0>t?Math.ceil(t):Math.floor(t)}function w(t,e,i){for(var s=""+Math.abs(t),o=t>=0;s.lengths;s++)(i&&t[s]!==e[s]||!i&&I(t[s])!==I(e[s]))&&r++;return r+n}function k(t){if(t){var e=t.toLowerCase().replace(/(.)s$/,"$1");t=gi[t]||vi[e]||e}return t}function N(t){var e,i,s={};for(i in t)a(t,i)&&(e=k(i),e&&(s[e]=t[i]));return s}function L(t){var e,i;if(0===t.indexOf("week"))e=7,i="day";else{if(0!==t.indexOf("month"))return;e=12,i="month"}Ce[t]=function(s,o){var r,a,h=Ce._locale[t],d=[];if("number"==typeof s&&(o=s,s=n),a=function(t){var e=Ce().utc().set(i,t);return h.call(Ce._locale,e,s||"")},null!=o)return a(o);for(r=0;e>r;r++)d.push(a(r));return d}}function I(t){var e=+t,i=0;return 0!==e&&isFinite(e)&&(i=e>=0?Math.floor(e):Math.ceil(e)),i}function z(t,e){return new Date(Date.UTC(t,e+1,0)).getUTCDate()}function P(t,e,i){return me(Ce([t,11,31+e-i]),e,i).week}function A(t){return R(t)?366:365}function R(t){return t%4===0&&t%100!==0||t%400===0}function F(t){var e;t._a&&-2===t._pf.overflow&&(e=t._a[ze]<0||t._a[ze]>11?ze:t._a[Pe]<1||t._a[Pe]>z(t._a[Ie],t._a[ze])?Pe:t._a[Ae]<0||t._a[Ae]>24||24===t._a[Ae]&&(0!==t._a[Re]||0!==t._a[Fe]||0!==t._a[He])?Ae:t._a[Re]<0||t._a[Re]>59?Re:t._a[Fe]<0||t._a[Fe]>59?Fe:t._a[He]<0||t._a[He]>999?He:-1,t._pf._overflowDayOfYear&&(Ie>e||e>Pe)&&(e=Pe),t._pf.overflow=e)}function H(t){return null==t._isValid&&(t._isValid=!isNaN(t._d.getTime())&&t._pf.overflow<0&&!t._pf.empty&&!t._pf.invalidMonth&&!t._pf.nullInput&&!t._pf.invalidFormat&&!t._pf.userInvalidated,t._strict&&(t._isValid=t._isValid&&0===t._pf.charsLeftOver&&0===t._pf.unusedTokens.length&&t._pf.bigHour===n)),t._isValid}function B(t){return t?t.toLowerCase().replace("_","-"):t}function Y(t){for(var e,i,s,o,n=0;n0;){if(s=W(o.slice(0,e).join("-")))return s;if(i&&i.length>=e&&E(o,i,!0)>=e-1)break;e--}n++}return null}function W(t){var e=null;if(!Be[t]&&We)try{e=Ce.locale(),!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),Ce.locale(e)}catch(i){}return Be[t]}function G(t,e){var i,s;return e._isUTC?(i=e.clone(),s=(Ce.isMoment(t)||O(t)?+t:+Ce(t))-+i,i._d.setTime(+i._d+s),Ce.updateOffset(i,!1),i):Ce(t).local()}function j(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function V(t){var e,i,s=t.match(Ue);for(e=0,i=s.length;i>e;e++)s[e]=wi[s[e]]?wi[s[e]]:j(s[e]);return function(o){var n="";for(e=0;i>e;e++)n+=s[e]instanceof Function?s[e].call(o,t):s[e];return n}}function U(t,e){return t.isValid()?(e=X(e,t.localeData()),yi[e]||(yi[e]=V(e)),yi[e](t)):t.localeData().invalidDate()}function X(t,e){function i(t){return e.longDateFormat(t)||t}var s=5;for(Xe.lastIndex=0;s>=0&&Xe.test(t);)t=t.replace(Xe,i),Xe.lastIndex=0,s-=1;return t}function q(t,e){var i,s=e._strict;switch(t){case"Q":return oi;case"DDDD":return ri;case"YYYY":case"GGGG":case"gggg":return s?ai:Qe;case"Y":case"G":case"g":return di;case"YYYYYY":case"YYYYY":case"GGGGG":case"ggggg":return s?hi:Ke;case"S":if(s)return oi;case"SS":if(s)return ni;case"SSS":if(s)return ri;case"DDD":return Ze;case"MMM":case"MMMM":case"dd":case"ddd":case"dddd":return Je;case"a":case"A":return e._locale._meridiemParse;case"x":return ii;case"X":return si;case"Z":case"ZZ":return ti;case"T":return ei;case"SSSS":return $e;case"MM":case"DD":case"YY":case"GG":case"gg":case"HH":case"hh":case"mm":case"ss":case"ww":case"WW":return s?ni:qe;case"M":case"D":case"d":case"H":case"h":case"m":case"s":case"w":case"W":case"e":case"E":return qe;case"Do":return s?e._locale._ordinalParse:e._locale._ordinalParseLenient;default:return i=new RegExp(se(ie(t.replace("\\","")),"i"))}}function Z(t){t=t||"";var e=t.match(ti)||[],i=e[e.length-1]||[],s=(i+"").match(mi)||["-",0,0],o=+(60*s[1])+I(s[2]);return"+"===s[0]?o:-o}function Q(t,e,i){var s,o=i._a;switch(t){case"Q":null!=e&&(o[ze]=3*(I(e)-1));break;case"M":case"MM":null!=e&&(o[ze]=I(e)-1);break;case"MMM":case"MMMM":s=i._locale.monthsParse(e,t,i._strict),null!=s?o[ze]=s:i._pf.invalidMonth=e;break;case"D":case"DD":null!=e&&(o[Pe]=I(e));break;case"Do":null!=e&&(o[Pe]=I(parseInt(e.match(/\d{1,2}/)[0],10)));break;case"DDD":case"DDDD":null!=e&&(i._dayOfYear=I(e));break;case"YY":o[Ie]=Ce.parseTwoDigitYear(e);break;case"YYYY":case"YYYYY":case"YYYYYY":o[Ie]=I(e);break;case"a":case"A":i._meridiem=e;break;case"h":case"hh":i._pf.bigHour=!0;case"H":case"HH":o[Ae]=I(e);break;case"m":case"mm":o[Re]=I(e);break;case"s":case"ss":o[Fe]=I(e);break;case"S":case"SS":case"SSS":case"SSSS":o[He]=I(1e3*("0."+e));break;case"x":i._d=new Date(I(e));break;case"X":i._d=new Date(1e3*parseFloat(e));break;case"Z":case"ZZ":i._useUTC=!0,i._tzm=Z(e);break;case"dd":case"ddd":case"dddd":s=i._locale.weekdaysParse(e),null!=s?(i._w=i._w||{},i._w.d=s):i._pf.invalidWeekday=e;break;case"w":case"ww":case"W":case"WW":case"d":case"e":case"E":t=t.substr(0,1);case"gggg":case"GGGG":case"GGGGG":t=t.substr(0,2),e&&(i._w=i._w||{},i._w[t]=I(e));break;case"gg":case"GG":i._w=i._w||{},i._w[t]=Ce.parseTwoDigitYear(e)}}function K(t){var e,i,s,o,n,a,h;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(n=1,a=4,i=r(e.GG,t._a[Ie],me(Ce(),1,4).year),s=r(e.W,1),o=r(e.E,1)):(n=t._locale._week.dow,a=t._locale._week.doy,i=r(e.gg,t._a[Ie],me(Ce(),n,a).year),s=r(e.w,1),null!=e.d?(o=e.d,n>o&&++s):o=null!=e.e?e.e+n:n),h=fe(i,s,o,a,n),t._a[Ie]=h.year,t._dayOfYear=h.dayOfYear}function $(t){var e,i,s,o,n=[];if(!t._d){for(s=te(t),t._w&&null==t._a[Pe]&&null==t._a[ze]&&K(t),t._dayOfYear&&(o=r(t._a[Ie],s[Ie]),t._dayOfYear>A(o)&&(t._pf._overflowDayOfYear=!0),i=le(o,0,t._dayOfYear),t._a[ze]=i.getUTCMonth(),t._a[Pe]=i.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=n[e]=s[e];for(;7>e;e++)t._a[e]=n[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[Ae]&&0===t._a[Re]&&0===t._a[Fe]&&0===t._a[He]&&(t._nextDay=!0,t._a[Ae]=0),t._d=(t._useUTC?le:de).apply(null,n),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[Ae]=24)}}function J(t){var e;t._d||(e=N(t._i),t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],$(t))}function te(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function ee(t){if(t._f===Ce.ISO_8601)return void ne(t);t._a=[],t._pf.empty=!0;var e,i,s,o,r,a=""+t._i,h=a.length,d=0;for(s=X(t._f,t._locale).match(Ue)||[],e=0;e0&&t._pf.unusedInput.push(r),a=a.slice(a.indexOf(i)+i.length),d+=i.length),wi[o]?(i?t._pf.empty=!1:t._pf.unusedTokens.push(o),Q(o,i,t)):t._strict&&!i&&t._pf.unusedTokens.push(o);t._pf.charsLeftOver=h-d,a.length>0&&t._pf.unusedInput.push(a),t._pf.bigHour===!0&&t._a[Ae]<=12&&(t._pf.bigHour=n),t._a[Ae]=f(t._locale,t._a[Ae],t._meridiem),$(t),F(t)}function ie(t){return t.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,s,o){return e||i||s||o})}function se(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function oe(t){var e,i,s,o,n;if(0===t._f.length)return t._pf.invalidFormat=!0,void(t._d=new Date(0/0));for(o=0;on)&&(s=n,i=e));b(t,i||e)}function ne(t){var e,i,s=t._i,o=li.exec(s);if(o){for(t._pf.iso=!0,e=0,i=pi.length;i>e;e++)if(pi[e][1].exec(s)){t._f=pi[e][0]+(o[6]||" ");break}for(e=0,i=ui.length;i>e;e++)if(ui[e][1].exec(s)){t._f+=ui[e][0];break}s.match(ti)&&(t._f+="Z"),ee(t)}else t._isValid=!1}function re(t){ne(t),t._isValid===!1&&(delete t._isValid,Ce.createFromInputFallback(t))}function ae(t,e){var i,s=[];for(i=0;it&&a.setFullYear(t),a}function le(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function ce(t,e){if("string"==typeof t)if(isNaN(t)){if(t=e.weekdaysParse(t),"number"!=typeof t)return null}else t=parseInt(t,10);return t}function pe(t,e,i,s,o){return o.relativeTime(e||1,!!i,t,s)}function ue(t,e,i){var s=Ce.duration(t).abs(),o=Ne(s.as("s")),n=Ne(s.as("m")),r=Ne(s.as("h")),a=Ne(s.as("d")),h=Ne(s.as("M")),d=Ne(s.as("y")),l=o0,l[4]=i,pe.apply({},l)}function me(t,e,i){var s,o=i-e,n=i-t.day();return n>o&&(n-=7),o-7>n&&(n+=7),s=Ce(t).add(n,"d"),{week:Math.ceil(s.dayOfYear()/7),year:s.year()}}function fe(t,e,i,s,o){var n,r,a=le(t,0,1).getUTCDay();return a=0===a?7:a,i=null!=i?i:o,n=o-a+(a>s?7:0)-(o>a?7:0),r=7*(e-1)+(i-o)+n+1,{year:r>0?t:t-1,dayOfYear:r>0?r:A(t-1)+r}}function ge(t){var e,i=t._i,s=t._f;return t._locale=t._locale||Ce.localeData(t._l),null===i||s===n&&""===i?Ce.invalid({nullInput:!0}):("string"==typeof i&&(t._i=i=t._locale.preparse(i)),Ce.isMoment(i)?new v(i,!0):(s?T(s)?oe(t):ee(t):he(t),e=new v(t),e._nextDay&&(e.add(1,"d"),e._nextDay=n),e))}function ve(t,e){var i,s;if(1===e.length&&T(e[0])&&(e=e[0]),!e.length)return Ce();for(i=e[0],s=1;s=0?"+":"-";return e+w(Math.abs(t),6)},gg:function(){return w(this.weekYear()%100,2)},gggg:function(){return w(this.weekYear(),4)},ggggg:function(){return w(this.weekYear(),5)},GG:function(){return w(this.isoWeekYear()%100,2)},GGGG:function(){return w(this.isoWeekYear(),4)},GGGGG:function(){return w(this.isoWeekYear(),5)},e:function(){return this.weekday()},E:function(){return this.isoWeekday()},a:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!0)},A:function(){return this.localeData().meridiem(this.hours(),this.minutes(),!1)},H:function(){return this.hours()},h:function(){return this.hours()%12||12},m:function(){return this.minutes()},s:function(){return this.seconds()},S:function(){return I(this.milliseconds()/100)},SS:function(){return w(I(this.milliseconds()/10),2)},SSS:function(){return w(this.milliseconds(),3)},SSSS:function(){return w(this.milliseconds(),3)},Z:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+":"+w(I(t)%60,2)},ZZ:function(){var t=this.utcOffset(),e="+";return 0>t&&(t=-t,e="-"),e+w(I(t/60),2)+w(I(t)%60,2)},z:function(){return this.zoneAbbr()},zz:function(){return this.zoneName()},x:function(){return this.valueOf()},X:function(){return this.unix()},Q:function(){return this.quarter()}},Mi={},Si=["months","monthsShort","weekdays","weekdaysShort","weekdaysMin"],Di=!1;_i.length;)Oe=_i.pop(),wi[Oe+"o"]=u(wi[Oe],Oe);for(;xi.length;)Oe=xi.pop(),wi[Oe+Oe]=p(wi[Oe],2);wi.DDDD=p(wi.DDD,3),b(g.prototype,{set:function(t){var e,i;for(i in t)e=t[i],"function"==typeof e?this[i]=e:this["_"+i]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)},_months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),months:function(t){return this._months[t.month()]},_monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsShort:function(t){return this._monthsShort[t.month()]},monthsParse:function(t,e,i){var s,o,n;for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;12>s;s++){if(o=Ce.utc([2e3,s]),i&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(o,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(o,"").replace(".","")+"$","i")),i||this._monthsParse[s]||(n="^"+this.months(o,"")+"|^"+this.monthsShort(o,""),this._monthsParse[s]=new RegExp(n.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[s].test(t))return s;if(i&&"MMM"===e&&this._shortMonthsParse[s].test(t))return s;if(!i&&this._monthsParse[s].test(t))return s}},_weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdays:function(t){return this._weekdays[t.day()]},_weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysShort:function(t){return this._weekdaysShort[t.day()]},_weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),weekdaysMin:function(t){return this._weekdaysMin[t.day()]},weekdaysParse:function(t){var e,i,s;for(this._weekdaysParse||(this._weekdaysParse=[]),e=0;7>e;e++)if(this._weekdaysParse[e]||(i=Ce([2e3,1]).day(e),s="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[e]=new RegExp(s.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e},_longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY LT",LLLL:"dddd, MMMM D, YYYY LT"},longDateFormat:function(t){var e=this._longDateFormat[t];return!e&&this._longDateFormat[t.toUpperCase()]&&(e=this._longDateFormat[t.toUpperCase()].replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t]=e),e},isPM:function(t){return"p"===(t+"").toLowerCase().charAt(0)},_meridiemParse:/[ap]\.?m?\.?/i,meridiem:function(t,e,i){return t>11?i?"pm":"PM":i?"am":"AM"},_calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},calendar:function(t,e,i){var s=this._calendar[t];return"function"==typeof s?s.apply(e,[i]):s},_relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},relativeTime:function(t,e,i,s){var o=this._relativeTime[i];return"function"==typeof o?o(t,e,i,s):o.replace(/%d/i,t)},pastFuture:function(t,e){var i=this._relativeTime[t>0?"future":"past"];return"function"==typeof i?i(e):i.replace(/%s/i,e)},ordinal:function(t){return this._ordinal.replace("%d",t)},_ordinal:"%d",_ordinalParse:/\d{1,2}/,preparse:function(t){return t},postformat:function(t){return t},week:function(t){return me(t,this._week.dow,this._week.doy).week},_week:{dow:0,doy:6},firstDayOfWeek:function(){return this._week.dow},firstDayOfYear:function(){return this._week.doy},_invalidDate:"Invalid date",invalidDate:function(){return this._invalidDate}}),Ce=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._i=t,o._f=e,o._l=i,o._strict=s,o._isUTC=!1,o._pf=h(),ge(o)},Ce.suppressDeprecationWarnings=!1,Ce.createFromInputFallback=l("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),Ce.min=function(){var t=[].slice.call(arguments,0);return ve("isBefore",t)},Ce.max=function(){var t=[].slice.call(arguments,0);return ve("isAfter",t)},Ce.utc=function(t,e,i,s){var o;return"boolean"==typeof i&&(s=i,i=n),o={},o._isAMomentObject=!0,o._useUTC=!0,o._isUTC=!0,o._l=i,o._i=t,o._f=e,o._strict=s,o._pf=h(),ge(o).utc()},Ce.unix=function(t){return Ce(1e3*t)},Ce.duration=function(t,e){var i,s,o,n,r=t,h=null;return Ce.isDuration(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(r={},e?r[e]=t:r.milliseconds=t):(h=je.exec(t))?(i="-"===h[1]?-1:1,r={y:0,d:I(h[Pe])*i,h:I(h[Ae])*i,m:I(h[Re])*i,s:I(h[Fe])*i,ms:I(h[He])*i}):(h=Ve.exec(t))?(i="-"===h[1]?-1:1,o=function(t){var e=t&&parseFloat(t.replace(",","."));return(isNaN(e)?0:e)*i},r={y:o(h[2]),M:o(h[3]),d:o(h[4]),h:o(h[5]),m:o(h[6]),s:o(h[7]),w:o(h[8])}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(n=S(Ce(r.from),Ce(r.to)),r={},r.ms=n.milliseconds,r.M=n.months),s=new y(r),Ce.isDuration(t)&&a(t,"_locale")&&(s._locale=t._locale),s},Ce.version=Ee,Ce.defaultFormat=ci,Ce.ISO_8601=function(){},Ce.momentProperties=Ye,Ce.updateOffset=function(){},Ce.relativeTimeThreshold=function(t,e){return bi[t]===n?!1:e===n?bi[t]:(bi[t]=e,!0)},Ce.lang=l("moment.lang is deprecated. Use moment.locale instead.",function(t,e){return Ce.locale(t,e)}),Ce.locale=function(t,e){var i;return t&&(i="undefined"!=typeof e?Ce.defineLocale(t,e):Ce.localeData(t),i&&(Ce.duration._locale=Ce._locale=i)),Ce._locale._abbr},Ce.defineLocale=function(t,e){return null!==e?(e.abbr=t,Be[t]||(Be[t]=new g),Be[t].set(e),Ce.locale(t),Be[t]):(delete Be[t],null)},Ce.langData=l("moment.langData is deprecated. Use moment.localeData instead.",function(t){return Ce.localeData(t)}),Ce.localeData=function(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Ce._locale;if(!T(t)){if(e=W(t))return e;t=[t]}return Y(t)},Ce.isMoment=function(t){return t instanceof v||null!=t&&a(t,"_isAMomentObject")},Ce.isDuration=function(t){return t instanceof y};for(Oe=Si.length-1;Oe>=0;--Oe)L(Si[Oe]);Ce.normalizeUnits=function(t){return k(t)},Ce.invalid=function(t){var e=Ce.utc(0/0);return null!=t?b(e._pf,t):e._pf.userInvalidated=!0,e},Ce.parseZone=function(){return Ce.apply(null,arguments).parseZone()},Ce.parseTwoDigitYear=function(t){return I(t)+(I(t)>68?1900:2e3)},Ce.isDate=O,b(Ce.fn=v.prototype,{clone:function(){return Ce(this)},valueOf:function(){return+this._d-6e4*(this._offset||0)},unix:function(){return Math.floor(+this/1e3)},toString:function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},toDate:function(){return this._offset?new Date(+this):this._d},toISOString:function(){var t=Ce(this).utc();return 00:!1},parsingFlags:function(){return b({},this._pf)},invalidAt:function(){return this._pf.overflow},utc:function(t){return this.utcOffset(0,t)},local:function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(this._dateUtcOffset(),"m")),this},format:function(t){var e=U(this,t||Ce.defaultFormat);return this.localeData().postformat(e)},add:D(1,"add"),subtract:D(-1,"subtract"),diff:function(t,e,i){var s,o,n=G(t,this),r=6e4*(n.utcOffset()-this.utcOffset());return e=k(e),"year"===e||"month"===e||"quarter"===e?(o=m(this,n),"quarter"===e?o/=3:"year"===e&&(o/=12)):(s=this-n,o="second"===e?s/1e3:"minute"===e?s/6e4:"hour"===e?s/36e5:"day"===e?(s-r)/864e5:"week"===e?(s-r)/6048e5:s),i?o:x(o)},from:function(t,e){return Ce.duration({to:this,from:t}).locale(this.locale()).humanize(!e)},fromNow:function(t){return this.from(Ce(),t)},calendar:function(t){var e=t||Ce(),i=G(e,this).startOf("day"),s=this.diff(i,"days",!0),o=-6>s?"sameElse":-1>s?"lastWeek":0>s?"lastDay":1>s?"sameDay":2>s?"nextDay":7>s?"nextWeek":"sameElse";return this.format(this.localeData().calendar(o,this,Ce(e)))},isLeapYear:function(){return R(this.year())},isDST:function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},day:function(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=ce(t,this.localeData()),this.add(t-e,"d")):e},month:xe("Month",!0),startOf:function(t){switch(t=k(t)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===t?this.weekday(0):"isoWeek"===t&&this.isoWeekday(1),"quarter"===t&&this.month(3*Math.floor(this.month()/3)),this},endOf:function(t){return t=k(t),t===n||"millisecond"===t?this:this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms")},isAfter:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+this>+t):(i=Ce.isMoment(t)?+t:+Ce(t),i<+this.clone().startOf(e))},isBefore:function(t,e){var i;return e=k("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=Ce.isMoment(t)?t:Ce(t),+t>+this):(i=Ce.isMoment(t)?+t:+Ce(t),+this.clone().endOf(e)t?this:t}),max:l("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(t){return t=Ce.apply(null,arguments),t>this?this:t}),zone:l("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),utcOffset:function(t,e){var i,s=this._offset||0;return null!=t?("string"==typeof t&&(t=Z(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&e&&(i=this._dateUtcOffset()),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),s!==t&&(!e||this._changeInProgress?C(this,Ce.duration(t-s,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,Ce.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?s:this._dateUtcOffset()},isLocal:function(){return!this._isUTC},isUtcOffset:function(){return this._isUTC},isUtc:function(){return this._isUTC&&0===this._offset},zoneAbbr:function(){return this._isUTC?"UTC":""},zoneName:function(){return this._isUTC?"Coordinated Universal Time":""},parseZone:function(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Z(this._i)),this},hasAlignedHourOffset:function(t){return t=t?Ce(t).utcOffset():0,(this.utcOffset()-t)%60===0},daysInMonth:function(){return z(this.year(),this.month())},dayOfYear:function(t){var e=Ne((Ce(this).startOf("day")-Ce(this).startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},quarter:function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},weekYear:function(t){var e=me(this,this.localeData()._week.dow,this.localeData()._week.doy).year;return null==t?e:this.add(t-e,"y")},isoWeekYear:function(t){var e=me(this,1,4).year;return null==t?e:this.add(t-e,"y")},week:function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},isoWeek:function(t){var e=me(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},weekday:function(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},isoWeekday:function(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)},isoWeeksInYear:function(){return P(this.year(),1,4)},weeksInYear:function(){var t=this.localeData()._week;return P(this.year(),t.dow,t.doy)},get:function(t){return t=k(t),this[t]()},set:function(t,e){var i;if("object"==typeof t)for(i in t)this.set(i,t[i]);else t=k(t),"function"==typeof this[t]&&this[t](e);return this},locale:function(t){var e;return t===n?this._locale._abbr:(e=Ce.localeData(t),null!=e&&(this._locale=e),this)},lang:l("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return t===n?this.localeData():this.locale(t)}),localeData:function(){return this._locale},_dateUtcOffset:function(){return 15*-Math.round(this._d.getTimezoneOffset()/15)}}),Ce.fn.millisecond=Ce.fn.milliseconds=xe("Milliseconds",!1),Ce.fn.second=Ce.fn.seconds=xe("Seconds",!1),Ce.fn.minute=Ce.fn.minutes=xe("Minutes",!1),Ce.fn.hour=Ce.fn.hours=xe("Hours",!0),Ce.fn.date=xe("Date",!0),Ce.fn.dates=l("dates accessor is deprecated. Use date instead.",xe("Date",!0)),Ce.fn.year=xe("FullYear",!0),Ce.fn.years=l("years accessor is deprecated. Use year instead.",xe("FullYear",!0)),Ce.fn.days=Ce.fn.day,Ce.fn.months=Ce.fn.month,Ce.fn.weeks=Ce.fn.week,Ce.fn.isoWeeks=Ce.fn.isoWeek,Ce.fn.quarters=Ce.fn.quarter,Ce.fn.toJSON=Ce.fn.toISOString,Ce.fn.isUTC=Ce.fn.isUtc,b(Ce.duration.fn=y.prototype,{_bubble:function(){var t,e,i,s=this._milliseconds,o=this._days,n=this._months,r=this._data,a=0;r.milliseconds=s%1e3,t=x(s/1e3),r.seconds=t%60,e=x(t/60),r.minutes=e%60,i=x(e/60),r.hours=i%24,o+=x(i/24),a=x(we(o)),o-=x(Me(a)),n+=x(o/30),o%=30,a+=x(n/12),n%=12,r.days=o,r.months=n,r.years=a},abs:function(){return this._milliseconds=Math.abs(this._milliseconds),this._days=Math.abs(this._days),this._months=Math.abs(this._months),this._data.milliseconds=Math.abs(this._data.milliseconds),this._data.seconds=Math.abs(this._data.seconds),this._data.minutes=Math.abs(this._data.minutes),this._data.hours=Math.abs(this._data.hours),this._data.months=Math.abs(this._data.months),this._data.years=Math.abs(this._data.years),this},weeks:function(){return x(this.days()/7)},valueOf:function(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*I(this._months/12)},humanize:function(t){var e=ue(this,!t,this.localeData());return t&&(e=this.localeData().pastFuture(+this,e)),this.localeData().postformat(e)},add:function(t,e){var i=Ce.duration(t,e);return this._milliseconds+=i._milliseconds,this._days+=i._days,this._months+=i._months,this._bubble(),this},subtract:function(t,e){var i=Ce.duration(t,e);return this._milliseconds-=i._milliseconds,this._days-=i._days,this._months-=i._months,this._bubble(),this},get:function(t){return t=k(t),this[t.toLowerCase()+"s"]()},as:function(t){var e,i;if(t=k(t),"month"===t||"year"===t)return e=this._days+this._milliseconds/864e5,i=this._months+12*we(e),"month"===t?i:i/12;switch(e=this._days+Math.round(Me(this._months/12)),t){case"week":return e/7+this._milliseconds/6048e5;case"day":return e+this._milliseconds/864e5;case"hour":return 24*e+this._milliseconds/36e5;case"minute":return 24*e*60+this._milliseconds/6e4;case"second":return 24*e*60*60+this._milliseconds/1e3;case"millisecond":return Math.floor(24*e*60*60*1e3)+this._milliseconds;default:throw new Error("Unknown unit "+t)}},lang:Ce.fn.lang,locale:Ce.fn.locale,toIsoString:l("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",function(){return this.toISOString()}),toISOString:function(){var t=Math.abs(this.years()),e=Math.abs(this.months()),i=Math.abs(this.days()),s=Math.abs(this.hours()),o=Math.abs(this.minutes()),n=Math.abs(this.seconds()+this.milliseconds()/1e3);return this.asSeconds()?(this.asSeconds()<0?"-":"")+"P"+(t?t+"Y":"")+(e?e+"M":"")+(i?i+"D":"")+(s||o||n?"T":"")+(s?s+"H":"")+(o?o+"M":"")+(n?n+"S":""):"P0D"},localeData:function(){return this._locale},toJSON:function(){return this.toISOString()}}),Ce.duration.fn.toString=Ce.duration.fn.toISOString;for(Oe in fi)a(fi,Oe)&&Se(Oe.toLowerCase());Ce.duration.fn.asMilliseconds=function(){return this.as("ms")},Ce.duration.fn.asSeconds=function(){return this.as("s")},Ce.duration.fn.asMinutes=function(){return this.as("m")},Ce.duration.fn.asHours=function(){return this.as("h")},Ce.duration.fn.asDays=function(){return this.as("d")},Ce.duration.fn.asWeeks=function(){return this.as("weeks")},Ce.duration.fn.asMonths=function(){return this.as("M")},Ce.duration.fn.asYears=function(){return this.as("y")},Ce.locale("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,i=1===I(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+i}}),We?o.exports=Ce:(s=function(t,e,i){return i.config&&i.config()&&i.config().noGlobal===!0&&(ke.moment=Te),Ce}.call(e,i,e,o),!(s!==n&&(o.exports=s)),De(!0))}).call(this)}).call(e,function(){return this}(),i(71)(t))},function(t,e,i){var s;!function(o,n){function r(){a.READY||(w.determineEventTypes(),x.each(a.gestures,function(t){S.register(t)}),w.onTouch(a.DOCUMENT,v,S.detect),w.onTouch(a.DOCUMENT,y,S.detect),a.READY=!0)}var a=function D(t,e){return new D.Instance(t,e||{})};a.VERSION="1.1.3",a.defaults={behavior:{userSelect:"none",touchAction:"pan-y",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}},a.DOCUMENT=document,a.HAS_POINTEREVENTS=navigator.pointerEnabled||navigator.msPointerEnabled,a.HAS_TOUCHEVENTS="ontouchstart"in o,a.IS_MOBILE=/mobile|tablet|ip(ad|hone|od)|android|silk/i.test(navigator.userAgent),a.NO_MOUSEEVENTS=a.HAS_TOUCHEVENTS&&a.IS_MOBILE||a.HAS_POINTEREVENTS,a.CALCULATE_INTERVAL=25;var h={},d=a.DIRECTION_DOWN="down",l=a.DIRECTION_LEFT="left",c=a.DIRECTION_UP="up",p=a.DIRECTION_RIGHT="right",u=a.POINTER_MOUSE="mouse",m=a.POINTER_TOUCH="touch",f=a.POINTER_PEN="pen",g=a.EVENT_START="start",v=a.EVENT_MOVE="move",y=a.EVENT_END="end",b=a.EVENT_RELEASE="release",_=a.EVENT_TOUCH="touch";a.READY=!1,a.plugins=a.plugins||{},a.gestures=a.gestures||{};var x=a.utils={extend:function(t,e,i){for(var s in e)!e.hasOwnProperty(s)||t[s]!==n&&i||(t[s]=e[s]);return t},on:function(t,e,i){t.addEventListener(e,i,!1)},off:function(t,e,i){t.removeEventListener(e,i,!1)},each:function(t,e,i){var s,o;if("forEach"in t)t.forEach(e,i);else if(t.length!==n){for(s=0,o=t.length;o>s;s++)if(e.call(i,t[s],s,t)===!1)return}else for(s in t)if(t.hasOwnProperty(s)&&e.call(i,t[s],s,t)===!1)return},inStr:function(t,e){return t.indexOf(e)>-1},inArray:function(t,e){if(t.indexOf){var i=t.indexOf(e);return-1===i?!1:i}for(var s=0,o=t.length;o>s;s++)if(t[s]===e)return s;return!1},toArray:function(t){return Array.prototype.slice.call(t,0)},hasParent:function(t,e){for(;t;){if(t==e)return!0;t=t.parentNode}return!1},getCenter:function(t){var e=[],i=[],s=[],o=[],n=Math.min,r=Math.max;return 1===t.length?{pageX:t[0].pageX,pageY:t[0].pageY,clientX:t[0].clientX,clientY:t[0].clientY}:(x.each(t,function(t){e.push(t.pageX),i.push(t.pageY),s.push(t.clientX),o.push(t.clientY)}),{pageX:(n.apply(Math,e)+r.apply(Math,e))/2,pageY:(n.apply(Math,i)+r.apply(Math,i))/2,clientX:(n.apply(Math,s)+r.apply(Math,s))/2,clientY:(n.apply(Math,o)+r.apply(Math,o))/2})},getVelocity:function(t,e,i){return{x:Math.abs(e/t)||0,y:Math.abs(i/t)||0}},getAngle:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return 180*Math.atan2(s,i)/Math.PI},getDirection:function(t,e){var i=Math.abs(t.clientX-e.clientX),s=Math.abs(t.clientY-e.clientY);return i>=s?t.clientX-e.clientX>0?l:p:t.clientY-e.clientY>0?c:d},getDistance:function(t,e){var i=e.clientX-t.clientX,s=e.clientY-t.clientY;return Math.sqrt(i*i+s*s)},getScale:function(t,e){return t.length>=2&&e.length>=2?this.getDistance(e[0],e[1])/this.getDistance(t[0],t[1]):1},getRotation:function(t,e){return t.length>=2&&e.length>=2?this.getAngle(e[1],e[0])-this.getAngle(t[1],t[0]):0},isVertical:function(t){return t==c||t==d},setPrefixedCss:function(t,e,i,s){var o=["","Webkit","Moz","O","ms"];e=x.toCamelCase(e);for(var n=0;n0&&this.started&&(r=v),this.started=!0;var d=this.collectEventData(i,r,o,t);return e!=y&&s.call(S,d),a&&(d.changedLength=h,d.eventType=a,s.call(S,d),d.eventType=r,delete d.changedLength),r==y&&(s.call(S,d),this.started=!1),r},determineEventTypes:function(){var t;return t=a.HAS_POINTEREVENTS?o.PointerEvent?["pointerdown","pointermove","pointerup pointercancel lostpointercapture"]:["MSPointerDown","MSPointerMove","MSPointerUp MSPointerCancel MSLostPointerCapture"]:a.NO_MOUSEEVENTS?["touchstart","touchmove","touchend touchcancel"]:["touchstart mousedown","touchmove mousemove","touchend touchcancel mouseup"],h[g]=t[0],h[v]=t[1],h[y]=t[2],h},getTouchList:function(t,e){if(a.HAS_POINTEREVENTS)return M.getTouchList();if(t.touches){if(e==v)return t.touches;var i=[],s=[].concat(x.toArray(t.touches),x.toArray(t.changedTouches)),o=[];return x.each(s,function(t){x.inArray(i,t.identifier)===!1&&o.push(t),i.push(t.identifier)}),o}return t.identifier=1,[t]},collectEventData:function(t,e,i,s){var o=m;return x.inStr(s.type,"mouse")||M.matchType(u,s)?o=u:M.matchType(f,s)&&(o=f),{center:x.getCenter(i),timeStamp:Date.now(),target:s.target,touches:i,eventType:e,pointerType:o,srcEvent:s,preventDefault:function(){var t=this.srcEvent;t.preventManipulation&&t.preventManipulation(),t.preventDefault&&t.preventDefault()},stopPropagation:function(){this.srcEvent.stopPropagation()},stopDetect:function(){return S.stopDetect()}}}},M=a.PointerEvent={pointers:{},getTouchList:function(){var t=[];return x.each(this.pointers,function(e){t.push(e)}),t},updatePointer:function(t,e){t==y||t!=y&&1!==e.buttons?delete this.pointers[e.pointerId]:(e.identifier=e.pointerId,this.pointers[e.pointerId]=e)},matchType:function(t,e){if(!e.pointerType)return!1;var i=e.pointerType,s={};return s[u]=i===(e.MSPOINTER_TYPE_MOUSE||u),s[m]=i===(e.MSPOINTER_TYPE_TOUCH||m),s[f]=i===(e.MSPOINTER_TYPE_PEN||f),s[t]},reset:function(){this.pointers={}}},S=a.detection={gestures:[],current:null,previous:null,stopped:!1,startDetect:function(t,e){this.current||(this.stopped=!1,this.current={inst:t,startEvent:x.extend({},e),lastEvent:!1,lastCalcEvent:!1,futureCalcEvent:!1,lastCalcData:{},name:""},this.detect(e))},detect:function(t){if(this.current&&!this.stopped){t=this.extendEventData(t);var e=this.current.inst,i=e.options;return x.each(this.gestures,function(s){!this.stopped&&e.enabled&&i[s.name]&&s.handler.call(s,t,e)},this),this.current&&(this.current.lastEvent=t),t.eventType==y&&this.stopDetect(),t}},stopDetect:function(){this.previous=x.extend({},this.current),this.current=null,this.stopped=!0},getCalculatedData:function(t,e,i,s,o){var n=this.current,r=!1,h=n.lastCalcEvent,d=n.lastCalcData;h&&t.timeStamp-h.timeStamp>a.CALCULATE_INTERVAL&&(e=h.center,i=t.timeStamp-h.timeStamp,s=t.center.clientX-h.center.clientX,o=t.center.clientY-h.center.clientY,r=!0),(t.eventType==_||t.eventType==b)&&(n.futureCalcEvent=t),(!n.lastCalcEvent||r)&&(d.velocity=x.getVelocity(i,s,o),d.angle=x.getAngle(e,t.center),d.direction=x.getDirection(e,t.center),n.lastCalcEvent=n.futureCalcEvent||t,n.futureCalcEvent=t),t.velocityX=d.velocity.x,t.velocityY=d.velocity.y,t.interimAngle=d.angle,t.interimDirection=d.direction},extendEventData:function(t){var e=this.current,i=e.startEvent,s=e.lastEvent||i;(t.eventType==_||t.eventType==b)&&(i.touches=[],x.each(t.touches,function(t){i.touches.push({clientX:t.clientX,clientY:t.clientY})}));var o=t.timeStamp-i.timeStamp,n=t.center.clientX-i.center.clientX,r=t.center.clientY-i.center.clientY;return this.getCalculatedData(t,s.center,o,n,r),x.extend(t,{startEvent:i,deltaTime:o,deltaX:n,deltaY:r,distance:x.getDistance(i.center,t.center),angle:x.getAngle(i.center,t.center),direction:x.getDirection(i.center,t.center),scale:x.getScale(i.touches,t.touches),rotation:x.getRotation(i.touches,t.touches)}),t},register:function(t){var e=t.defaults||{};return e[t.name]===n&&(e[t.name]=!0),x.extend(a.defaults,e,!0),t.index=t.index||1e3,this.gestures.push(t),this.gestures.sort(function(t,e){return t.indexe.index?1:0}),this.gestures}};a.Instance=function(t,e){var i=this;r(),this.element=t,this.enabled=!0,x.each(e,function(t,i){delete e[i],e[x.toCamelCase(i)]=t}),this.options=x.extend(x.extend({},a.defaults),e||{}),this.options.behavior&&x.toggleBehavior(this.element,this.options.behavior,!0),this.eventStartHandler=w.onTouch(t,g,function(t){i.enabled&&t.eventType==g?S.startDetect(i,t):t.eventType==_&&S.detect(t)}),this.eventHandlers=[]},a.Instance.prototype={on:function(t,e){var i=this;return w.on(i.element,t,e,function(t){i.eventHandlers.push({gesture:t,handler:e})}),i},off:function(t,e){var i=this;return w.off(i.element,t,e,function(t){var s=x.inArray({gesture:t,handler:e});s!==!1&&i.eventHandlers.splice(s,1)}),i},trigger:function(t,e){e||(e={});var i=a.DOCUMENT.createEvent("Event");i.initEvent(t,!0,!0),i.gesture=e;var s=this.element;return x.hasParent(e.target,s)&&(s=e.target),s.dispatchEvent(i),this},enable:function(t){return this.enabled=t,this},dispose:function(){var t,e;for(x.toggleBehavior(this.element,this.options.behavior,!1),t=-1;e=this.eventHandlers[++t];)x.off(this.element,e.gesture,e.handler);return this.eventHandlers=[],w.off(this.element,h[g],this.eventStartHandler),null}},function(t){function e(e,s){var o=S.current;if(!(s.options.dragMaxTouches>0&&e.touches.length>s.options.dragMaxTouches))switch(e.eventType){case g:i=!1;break;case v:if(e.distance0)){var r=Math.abs(s.options.dragMinDistance/e.distance);n.pageX+=e.deltaX*r,n.pageY+=e.deltaY*r,n.clientX+=e.deltaX*r,n.clientY+=e.deltaY*r,e=S.extendEventData(e)}(o.lastEvent.dragLockToAxis||s.options.dragLockToAxis&&s.options.dragLockMinDistance<=e.distance)&&(e.dragLockToAxis=!0);var a=o.lastEvent.direction;e.dragLockToAxis&&a!==e.direction&&(e.direction=x.isVertical(a)?e.deltaY<0?c:d:e.deltaX<0?l:p),i||(s.trigger(t+"start",e),i=!0),s.trigger(t,e),s.trigger(t+e.direction,e);var h=x.isVertical(e.direction);(s.options.dragBlockVertical&&h||s.options.dragBlockHorizontal&&!h)&&e.preventDefault();break;case b:i&&e.changedLength<=s.options.dragMaxTouches&&(s.trigger(t+"end",e),i=!1);break;case y:i=!1}}var i=!1;a.gestures.Drag={name:t,index:50,handler:e,defaults:{dragMinDistance:10,dragDistanceCorrection:!0,dragMaxTouches:1,dragBlockHorizontal:!1,dragBlockVertical:!1,dragLockToAxis:!1,dragLockMinDistance:25}}}("drag"),a.gestures.Gesture={name:"gesture",index:1337,handler:function(t,e){e.trigger(this.name,t)}},function(t){function e(e,s){var o=s.options,n=S.current;switch(e.eventType){case g:clearTimeout(i),n.name=t,i=setTimeout(function(){n&&n.name==t&&s.trigger(t,e)},o.holdTimeout);break;case v:e.distance>o.holdThreshold&&clearTimeout(i);break;case b:clearTimeout(i)}}var i;a.gestures.Hold={name:t,index:10,defaults:{holdTimeout:500,holdThreshold:2},handler:e}}("hold"),a.gestures.Release={name:"release",index:1/0,handler:function(t,e){t.eventType==b&&e.trigger(this.name,t)}},a.gestures.Swipe={name:"swipe",index:40,defaults:{swipeMinTouches:1,swipeMaxTouches:1,swipeVelocityX:.6,swipeVelocityY:.6},handler:function(t,e){if(t.eventType==b){var i=t.touches.length,s=e.options;if(is.swipeMaxTouches)return;(t.velocityX>s.swipeVelocityX||t.velocityY>s.swipeVelocityY)&&(e.trigger(this.name,t),e.trigger(this.name+t.direction,t))}}},function(t){function e(e,s){var o,n,r=s.options,a=S.current,h=S.previous;switch(e.eventType){case g:i=!1;break;case v:i=i||e.distance>r.tapMaxDistance;break;case y:!x.inStr(e.srcEvent.type,"cancel")&&e.deltaTimes.options.transformMinRotation&&s.trigger("rotate",e),o>s.options.transformMinScale&&(s.trigger("pinch",e),s.trigger("pinch"+(e.scale<1?"in":"out"),e));break;case b:i&&e.changedLength<2&&(s.trigger(t+"end",e),i=!1)}}var i=!1;a.gestures.Transform={name:t,index:45,defaults:{transformMinScale:.01,transformMinRotation:1},handler:e} +}("transform"),s=function(){return a}.call(e,i,e,t),!(s!==n&&(t.exports=s))}(window)},function(t,e,i){function s(){this.constants.smoothCurves.enabled=!this.constants.smoothCurves.enabled;var t=document.getElementById("graph_toggleSmooth");t.style.background=1==this.constants.smoothCurves.enabled?"#A4FF56":"#FF8532",this._configureSmoothCurves(!1)}function o(){for(var t in this.calculationNodes)this.calculationNodes.hasOwnProperty(t)&&(this.calculationNodes[t].vx=0,this.calculationNodes[t].vy=0,this.calculationNodes[t].fx=0,this.calculationNodes[t].fy=0);1==this.constants.hierarchicalLayout.enabled?(this._setupHierarchicalLayout(),a.call(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),a.call(this,"graph_H_cg",1,"physics_centralGravity"),a.call(this,"graph_H_sc",1,"physics_springConstant"),a.call(this,"graph_H_sl",1,"physics_springLength"),a.call(this,"graph_H_damp",1,"physics_damping")):this.repositionNodes(),this.moving=!0,this.start()}function n(){var t="No options are required, default values used.",e=[],i=document.getElementById("graph_physicsMethod1"),s=document.getElementById("graph_physicsMethod2");if(1==i.checked){if(this.constants.physics.barnesHut.gravitationalConstant!=this.backupConstants.physics.barnesHut.gravitationalConstant&&e.push("gravitationalConstant: "+this.constants.physics.barnesHut.gravitationalConstant),this.constants.physics.centralGravity!=this.backupConstants.physics.barnesHut.centralGravity&&e.push("centralGravity: "+this.constants.physics.centralGravity),this.constants.physics.springLength!=this.backupConstants.physics.barnesHut.springLength&&e.push("springLength: "+this.constants.physics.springLength),this.constants.physics.springConstant!=this.backupConstants.physics.barnesHut.springConstant&&e.push("springConstant: "+this.constants.physics.springConstant),this.constants.physics.damping!=this.backupConstants.physics.barnesHut.damping&&e.push("damping: "+this.constants.physics.damping),0!=e.length){t="var options = {",t+="physics: {barnesHut: {";for(var o=0;othis.constants.clustering.clusterThreshold&&1==this.constants.clustering.enabled&&this.clusterToFit(this.constants.clustering.reduceToNodes,!1),this._calculateForces())},e._calculateForces=function(){this._calculateGravitationalForces(),this._calculateNodeForces(),this.constants.physics.springConstant>0&&(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic?this._calculateSpringForcesWithSupport():1==this.constants.physics.hierarchicalRepulsion.enabled?this._calculateHierarchicalSpringForces():this._calculateSpringForces())},e._updateCalculationNodes=function(){if(1==this.constants.smoothCurves.enabled&&1==this.constants.smoothCurves.dynamic){this.calculationNodes={},this.calculationNodeIndices=[];for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.calculationNodes[t]=this.nodes[t]);var e=this.sectors.support.nodes;for(var i in e)e.hasOwnProperty(i)&&(this.edges.hasOwnProperty(e[i].parentEdgeId)?this.calculationNodes[i]=e[i]:e[i]._setForce(0,0));for(var s in this.calculationNodes)this.calculationNodes.hasOwnProperty(s)&&this.calculationNodeIndices.push(s)}else this.calculationNodes=this.nodes,this.calculationNodeIndices=this.nodeIndices},e._calculateGravitationalForces=function(){var t,e,i,s,o,n=this.calculationNodes,r=this.constants.physics.centralGravity,a=0;for(o=0;oSimulation Mode:Barnes HutRepulsionHierarchical
Options:
',this.containerElement.parentElement.insertBefore(this.physicsConfiguration,this.containerElement),this.optionsDiv=document.createElement("div"),this.optionsDiv.style.fontSize="14px",this.optionsDiv.style.fontFamily="verdana",this.containerElement.parentElement.insertBefore(this.optionsDiv,this.containerElement);var e;e=document.getElementById("graph_BH_gc"),e.onchange=a.bind(this,"graph_BH_gc",-1,"physics_barnesHut_gravitationalConstant"),e=document.getElementById("graph_BH_cg"),e.onchange=a.bind(this,"graph_BH_cg",1,"physics_centralGravity"),e=document.getElementById("graph_BH_sc"),e.onchange=a.bind(this,"graph_BH_sc",1,"physics_springConstant"),e=document.getElementById("graph_BH_sl"),e.onchange=a.bind(this,"graph_BH_sl",1,"physics_springLength"),e=document.getElementById("graph_BH_damp"),e.onchange=a.bind(this,"graph_BH_damp",1,"physics_damping"),e=document.getElementById("graph_R_nd"),e.onchange=a.bind(this,"graph_R_nd",1,"physics_repulsion_nodeDistance"),e=document.getElementById("graph_R_cg"),e.onchange=a.bind(this,"graph_R_cg",1,"physics_centralGravity"),e=document.getElementById("graph_R_sc"),e.onchange=a.bind(this,"graph_R_sc",1,"physics_springConstant"),e=document.getElementById("graph_R_sl"),e.onchange=a.bind(this,"graph_R_sl",1,"physics_springLength"),e=document.getElementById("graph_R_damp"),e.onchange=a.bind(this,"graph_R_damp",1,"physics_damping"),e=document.getElementById("graph_H_nd"),e.onchange=a.bind(this,"graph_H_nd",1,"physics_hierarchicalRepulsion_nodeDistance"),e=document.getElementById("graph_H_cg"),e.onchange=a.bind(this,"graph_H_cg",1,"physics_centralGravity"),e=document.getElementById("graph_H_sc"),e.onchange=a.bind(this,"graph_H_sc",1,"physics_springConstant"),e=document.getElementById("graph_H_sl"),e.onchange=a.bind(this,"graph_H_sl",1,"physics_springLength"),e=document.getElementById("graph_H_damp"),e.onchange=a.bind(this,"graph_H_damp",1,"physics_damping"),e=document.getElementById("graph_H_direction"),e.onchange=a.bind(this,"graph_H_direction",t,"hierarchicalLayout_direction"),e=document.getElementById("graph_H_levsep"),e.onchange=a.bind(this,"graph_H_levsep",1,"hierarchicalLayout_levelSeparation"),e=document.getElementById("graph_H_nspac"),e.onchange=a.bind(this,"graph_H_nspac",1,"hierarchicalLayout_nodeSpacing");var i=document.getElementById("graph_physicsMethod1"),d=document.getElementById("graph_physicsMethod2"),l=document.getElementById("graph_physicsMethod3");d.checked=!0,this.constants.physics.barnesHut.enabled&&(i.checked=!0),this.constants.hierarchicalLayout.enabled&&(l.checked=!0);var c=document.getElementById("graph_toggleSmooth"),p=document.getElementById("graph_repositionNodes"),u=document.getElementById("graph_generateOptions");c.onclick=s.bind(this),p.onclick=o.bind(this),u.onclick=n.bind(this),c.style.background=1==this.constants.smoothCurves&&0==this.constants.dynamicSmoothCurves?"#A4FF56":"#FF8532",r.apply(this),i.onchange=r.bind(this),d.onchange=r.bind(this),l.onchange=r.bind(this)}},e._overWriteGraphConstants=function(t,e){var i=t.split("_");1==i.length?this.constants[i[0]]=e:2==i.length?this.constants[i[0]][i[1]]=e:3==i.length&&(this.constants[i[0]][i[1]][i[2]]=e)}},function(t,e){e.startWithClustering=function(){this.clusterToFit(this.constants.clustering.initialMaxNodes,!0),this.updateLabels(),this.stabilize&&this._stabilize(),this.start()},e.clusterToFit=function(t,e){for(var i=this.nodeIndices.length,s=50,o=0;i>t&&s>o;)o%3==0?(this.forceAggregateHubs(!0),this.normalizeClusterLevels()):this.increaseClusterLevel(),i=this.nodeIndices.length,o+=1;o>0&&1==e&&this.repositionNodes(),this._updateCalculationNodes()},e.openCluster=function(t){var e=this.moving;if(t.clusterSize>this.constants.clustering.sectorThreshold&&this._nodeInActiveArea(t)&&("default"!=this._sector()||1!=this.nodeIndices.length)){this._addSector(t);for(var i=0;this.nodeIndices.lengthi;)this.decreaseClusterLevel(),i+=1}else this._expandClusterNode(t,!1,!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this._updateCalculationNodes(),this.updateLabels();this.moving!=e&&this.start()},e.updateClustersDefault=function(){1==this.constants.clustering.enabled&&this.updateClusters(0,!1,!1)},e.increaseClusterLevel=function(){this.updateClusters(-1,!1,!0)},e.decreaseClusterLevel=function(){this.updateClusters(1,!1,!0)},e.updateClusters=function(t,e,i,s){var o=this.moving,n=this.nodeIndices.length;this.previousScale>this.scale&&0==t&&this._collapseSector(),this.previousScale>this.scale||-1==t?this._formClusters(i):(this.previousScalethis.scale||-1==t)&&(this._aggregateHubs(i),this._updateNodeIndexList()),(this.previousScale>this.scale||-1==t)&&(this.handleChains(),this._updateNodeIndexList()),this.previousScale=this.scale,this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.lengththis.constants.clustering.chainThreshold&&this._reduceAmountOfChains(1-this.constants.clustering.chainThreshold/t)},e._aggregateHubs=function(t){this._getHubSize(),this._formClustersByHub(t,!1)},e.forceAggregateHubs=function(t){var e=this.moving,i=this.nodeIndices.length;this._aggregateHubs(!0),this._updateNodeIndexList(),this._updateDynamicEdges(),this.updateLabels(),this.nodeIndices.length!=i&&(this.clusterSession+=1),(0==t||void 0===t)&&this.moving!=e&&this.start()},e._openClustersBySize=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];1==e.inView()&&(e.width*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientWidth||e.height*this.scale>this.constants.clustering.screenSizeThreshold*this.frame.canvas.clientHeight)&&this.openCluster(e)}},e._openClusters=function(t,e){for(var i=0;i1&&(t.clusterSizei)){var r=n.from,a=n.to;n.to.options.mass>n.from.options.mass&&(r=n.to,a=n.from),1==a.dynamicEdgesLength?this._addToCluster(r,a,!1):1==r.dynamicEdgesLength&&this._addToCluster(a,r,!1)}}},e._forceClustersByZoom=function(){for(var t in this.nodes)if(this.nodes.hasOwnProperty(t)){var e=this.nodes[t];if(1==e.dynamicEdgesLength&&0!=e.dynamicEdges.length){var i=e.dynamicEdges[0],s=i.toId==e.id?this.nodes[i.fromId]:this.nodes[i.toId];e.id!=s.id&&(s.options.mass>e.options.mass?this._addToCluster(s,e,!0):this._addToCluster(e,s,!0))}}},e._clusterToSmallestNeighbour=function(t){for(var e=-1,i=null,s=0;so.clusterSessions.length&&(e=o.clusterSessions.length,i=o)}null!=o&&void 0!==this.nodes[o.id]&&this._addToCluster(o,t,!0)},e._formClustersByHub=function(t,e){for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&this._formClusterFromHub(this.nodes[i],t,e)},e._formClusterFromHub=function(t,e,i,s){if(void 0===s&&(s=0),t.dynamicEdgesLength>=this.hubThreshold&&0==i||t.dynamicEdgesLength==this.hubThreshold&&1==i){for(var o,n,r,a=this.constants.clustering.clusterEdgeThreshold/this.scale,h=!1,d=[],l=t.dynamicEdges.length,c=0;l>c;c++)d.push(t.dynamicEdges[c].id);if(0==e)for(h=!1,c=0;l>c;c++){var p=this.edges[d[c]];if(void 0!==p&&p.connected&&p.toId!=p.fromId&&(o=p.to.x-p.from.x,n=p.to.y-p.from.y,r=Math.sqrt(o*o+n*n),a>r)){h=!0;break}}if(!e&&h||e)for(c=0;l>c;c++)if(p=this.edges[d[c]],void 0!==p){var u=this.nodes[p.fromId==t.id?p.toId:p.fromId];u.dynamicEdges.length<=this.hubThreshold+s&&u.id!=t.id&&this._addToCluster(t,u,e)}}},e._addToCluster=function(t,e,i){t.containedNodes[e.id]=e;for(var s=0;s1)for(var s=0;s1&&(e.label="[".concat(String(e.clusterSize),"]"))}for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(e=this.nodes[t],1==e.clusterSize&&(e.label=void 0!==e.originalLabel?e.originalLabel:String(e.id))) +},e.normalizeClusterLevels=function(){var t,e=0,i=1e9,s=0;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&(s=this.nodes[t].clusterSessions.length,s>e&&(e=s),i>s&&(i=s));if(e-i>this.constants.clustering.clusterLevelDifference){var o=this.nodeIndices.length,n=e-this.constants.clustering.clusterLevelDifference;for(t in this.nodes)this.nodes.hasOwnProperty(t)&&this.nodes[t].clusterSessions.lengths&&(s=n.dynamicEdgesLength),t+=n.dynamicEdgesLength,e+=Math.pow(n.dynamicEdgesLength,2),i+=1}t/=i,e/=i;var r=e-Math.pow(t,2),a=Math.sqrt(r);this.hubThreshold=Math.floor(t+2*a),this.hubThreshold>s&&(this.hubThreshold=s)},e._reduceAmountOfChains=function(t){this.hubThreshold=2;var e=Math.floor(this.nodeIndices.length*t);for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&e>0&&(this._formClusterFromHub(this.nodes[i],!0,!0,1),e-=1)},e._getChainFraction=function(){var t=0,e=0;for(var i in this.nodes)this.nodes.hasOwnProperty(i)&&(2==this.nodes[i].dynamicEdgesLength&&this.nodes[i].dynamicEdges.length>=2&&(t+=1),e+=1);return t/e}},function(t,e,i){var s=i(1),o=i(40);e._putDataInSector=function(){this.sectors.active[this._sector()].nodes=this.nodes,this.sectors.active[this._sector()].edges=this.edges,this.sectors.active[this._sector()].nodeIndices=this.nodeIndices},e._switchToSector=function(t,e){void 0===e||"active"==e?this._switchToActiveSector(t):this._switchToFrozenSector(t)},e._switchToActiveSector=function(t){this.nodeIndices=this.sectors.active[t].nodeIndices,this.nodes=this.sectors.active[t].nodes,this.edges=this.sectors.active[t].edges},e._switchToSupportSector=function(){this.nodeIndices=this.sectors.support.nodeIndices,this.nodes=this.sectors.support.nodes,this.edges=this.sectors.support.edges},e._switchToFrozenSector=function(t){this.nodeIndices=this.sectors.frozen[t].nodeIndices,this.nodes=this.sectors.frozen[t].nodes,this.edges=this.sectors.frozen[t].edges},e._loadLatestSector=function(){this._switchToSector(this._sector())},e._sector=function(){return this.activeSector[this.activeSector.length-1]},e._previousSector=function(){if(this.activeSector.length>1)return this.activeSector[this.activeSector.length-2];throw new TypeError("there are not enough sectors in the this.activeSector array.")},e._setActiveSector=function(t){this.activeSector.push(t)},e._forgetLastSector=function(){this.activeSector.pop()},e._createNewSector=function(t){this.sectors.active[t]={nodes:{},edges:{},nodeIndices:[],formationScale:this.scale,drawingNode:void 0},this.sectors.active[t].drawingNode=new o({id:t,color:{background:"#eaefef",border:"495c5e"}},{},{},this.constants),this.sectors.active[t].drawingNode.clusterSize=2},e._deleteActiveSector=function(t){delete this.sectors.active[t]},e._deleteFrozenSector=function(t){delete this.sectors.frozen[t]},e._freezeSector=function(t){this.sectors.frozen[t]=this.sectors.active[t],this._deleteActiveSector(t)},e._activateSector=function(t){this.sectors.active[t]=this.sectors.frozen[t],this._deleteFrozenSector(t)},e._mergeThisWithFrozen=function(t){for(var e in this.nodes)this.nodes.hasOwnProperty(e)&&(this.sectors.frozen[t].nodes[e]=this.nodes[e]);for(var i in this.edges)this.edges.hasOwnProperty(i)&&(this.sectors.frozen[t].edges[i]=this.edges[i]);for(var s=0;s1?this[t](o[0],o[1]):this[t](e))}return this._loadLatestSector(),i},e._doInSupportSector=function(t,e){var i=!1;if(void 0===e)this._switchToSupportSector(),i=this[t]();else{this._switchToSupportSector();var s=Array.prototype.splice.call(arguments,1);i=s.length>1?this[t](s[0],s[1]):this[t](e)}return this._loadLatestSector(),i},e._doInAllFrozenSectors=function(t,e){if(void 0===e)for(var i in this.sectors.frozen)this.sectors.frozen.hasOwnProperty(i)&&(this._switchToFrozenSector(i),this[t]());else for(var i in this.sectors.frozen)if(this.sectors.frozen.hasOwnProperty(i)){this._switchToFrozenSector(i);var s=Array.prototype.splice.call(arguments,1);s.length>1?this[t](s[0],s[1]):this[t](e)}this._loadLatestSector()},e._doInAllSectors=function(t,e){var i=Array.prototype.splice.call(arguments,1);void 0===e?(this._doInAllActiveSectors(t),this._doInAllFrozenSectors(t)):i.length>1?(this._doInAllActiveSectors(t,i[0],i[1]),this._doInAllFrozenSectors(t,i[0],i[1])):(this._doInAllActiveSectors(t,e),this._doInAllFrozenSectors(t,e))},e._clearNodeIndexList=function(){var t=this._sector();this.sectors.active[t].nodeIndices=[],this.nodeIndices=this.sectors.active[t].nodeIndices},e._drawSectorNodes=function(t,e){var i,s=1e9,o=-1e9,n=1e9,r=-1e9;for(var a in this.sectors[e])if(this.sectors[e].hasOwnProperty(a)&&void 0!==this.sectors[e][a].drawingNode){this._switchToSector(a,e),s=1e9,o=-1e9,n=1e9,r=-1e9;for(var h in this.nodes)this.nodes.hasOwnProperty(h)&&(i=this.nodes[h],i.resize(t),n>i.x-.5*i.width&&(n=i.x-.5*i.width),ri.y-.5*i.height&&(s=i.y-.5*i.height),o0?this.nodes[i[i.length-1]]:null},e._getEdgesOverlappingWith=function(t,e){var i=this.edges;for(var s in i)i.hasOwnProperty(s)&&i[s].isOverlappingWith(t)&&e.push(s)},e._getAllEdgesOverlappingWith=function(t){var e=[];return this._doInAllActiveSectors("_getEdgesOverlappingWith",t,e),e},e._getEdgeAt=function(t){var e=this._pointerToPositionObject(t),i=this._getAllEdgesOverlappingWith(e);return i.length>0?this.edges[i[i.length-1]]:null},e._addToSelection=function(t){t instanceof s?this.selectionObj.nodes[t.id]=t:this.selectionObj.edges[t.id]=t},e._addToHover=function(t){t instanceof s?this.hoverObj.nodes[t.id]=t:this.hoverObj.edges[t.id]=t},e._removeFromSelection=function(t){t instanceof s?delete this.selectionObj.nodes[t.id]:delete this.selectionObj.edges[t.id]},e._unselectAll=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].unselect();for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&this.selectionObj.edges[i].unselect();this.selectionObj={nodes:{},edges:{}},0==t&&this.emit("select",this.getSelection())},e._unselectClusters=function(t){void 0===t&&(t=!1);for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&this.selectionObj.nodes[e].clusterSize>1&&(this.selectionObj.nodes[e].unselect(),this._removeFromSelection(this.selectionObj.nodes[e]));0==t&&this.emit("select",this.getSelection())},e._getSelectedNodeCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedNode=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return this.selectionObj.nodes[t];return null},e._getSelectedEdge=function(){for(var t in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(t))return this.selectionObj.edges[t];return null},e._getSelectedEdgeCount=function(){var t=0;for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(t+=1);return t},e._getSelectedObjectCount=function(){var t=0;for(var e in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(e)&&(t+=1);for(var i in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(i)&&(t+=1);return t},e._selectionIsEmpty=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t))return!1;for(var e in this.selectionObj.edges)if(this.selectionObj.edges.hasOwnProperty(e))return!1;return!0},e._clusterInSelection=function(){for(var t in this.selectionObj.nodes)if(this.selectionObj.nodes.hasOwnProperty(t)&&this.selectionObj.nodes[t].clusterSize>1)return!0;return!1},e._selectConnectedEdges=function(t){for(var e=0;ei;i++){o=t[i];var n=this.nodes[o];if(!n)throw new RangeError('Node with id "'+o+'" not found');this._selectObject(n,!0,!0,e,!0)}this.redraw()},e.selectEdges=function(t){var e,i,s;if(!t||void 0==t.length)throw"Selection must be an array with ids";for(this._unselectAll(!0),e=0,i=t.length;i>e;e++){s=t[e];var o=this.edges[s];if(!o)throw new RangeError('Edge with id "'+s+'" not found');this._selectObject(o,!0,!0,!1,!0)}this.redraw()},e._updateSelection=function(){for(var t in this.selectionObj.nodes)this.selectionObj.nodes.hasOwnProperty(t)&&(this.nodes.hasOwnProperty(t)||delete this.selectionObj.nodes[t]);for(var e in this.selectionObj.edges)this.selectionObj.edges.hasOwnProperty(e)&&(this.edges.hasOwnProperty(e)||delete this.selectionObj.edges[e])}},function(t,e,i){var s=i(1),o=i(40),n=i(37);e._clearManipulatorBar=function(){this._recursiveDOMDelete(this.manipulationDiv),this.manipulationDOM={},this._manipulationReleaseOverload=function(){},delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode,this.controlNodesActive=!1,this.freezeSimulation=!1},e._restoreOverloadedFunctions=function(){for(var t in this.cachedFunctions)this.cachedFunctions.hasOwnProperty(t)&&(this[t]=this.cachedFunctions[t],delete this.cachedFunctions[t])},e._toggleEditMode=function(){this.editMode=!this.editMode;var t=this.manipulationDiv,e=this.closeDiv,i=this.editModeDiv;1==this.editMode?(t.style.display="block",e.style.display="block",i.style.display="none",e.onclick=this._toggleEditMode.bind(this)):(t.style.display="none",e.style.display="none",i.style.display="block",e.onclick=null),this._createManipulatorBar()},e._createManipulatorBar=function(){this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];if(void 0!==this.edgeBeingEdited&&(this.edgeBeingEdited._disableControlNodes(),this.edgeBeingEdited=void 0,this.selectedControlNode=null,this.controlNodesActive=!1,this._redraw()),this._restoreOverloadedFunctions(),this.freezeSimulation=!1,this.blockConnectingEdgeSelection=!1,this.forceAppendSelection=!1,this.manipulationDOM={},1==this.editMode){for(;this.manipulationDiv.hasChildNodes();)this.manipulationDiv.removeChild(this.manipulationDiv.firstChild);this.manipulationDOM.addNodeSpan=document.createElement("span"),this.manipulationDOM.addNodeSpan.className="network-manipulationUI add",this.manipulationDOM.addNodeLabelSpan=document.createElement("span"),this.manipulationDOM.addNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addNodeLabelSpan.innerHTML=t.addNode,this.manipulationDOM.addNodeSpan.appendChild(this.manipulationDOM.addNodeLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.addEdgeSpan=document.createElement("span"),this.manipulationDOM.addEdgeSpan.className="network-manipulationUI connect",this.manipulationDOM.addEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.addEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.addEdgeLabelSpan.innerHTML=t.addEdge,this.manipulationDOM.addEdgeSpan.appendChild(this.manipulationDOM.addEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.addNodeSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.addEdgeSpan),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?(this.manipulationDOM.seperatorLineDiv2=document.createElement("div"),this.manipulationDOM.seperatorLineDiv2.className="network-seperatorLine",this.manipulationDOM.editNodeSpan=document.createElement("span"),this.manipulationDOM.editNodeSpan.className="network-manipulationUI edit",this.manipulationDOM.editNodeLabelSpan=document.createElement("span"),this.manipulationDOM.editNodeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editNodeLabelSpan.innerHTML=t.editNode,this.manipulationDOM.editNodeSpan.appendChild(this.manipulationDOM.editNodeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv2),this.manipulationDiv.appendChild(this.manipulationDOM.editNodeSpan)):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.seperatorLineDiv3=document.createElement("div"),this.manipulationDOM.seperatorLineDiv3.className="network-seperatorLine",this.manipulationDOM.editEdgeSpan=document.createElement("span"),this.manipulationDOM.editEdgeSpan.className="network-manipulationUI edit",this.manipulationDOM.editEdgeLabelSpan=document.createElement("span"),this.manipulationDOM.editEdgeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editEdgeLabelSpan.innerHTML=t.editEdge,this.manipulationDOM.editEdgeSpan.appendChild(this.manipulationDOM.editEdgeLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv3),this.manipulationDiv.appendChild(this.manipulationDOM.editEdgeSpan)),0==this._selectionIsEmpty()&&(this.manipulationDOM.seperatorLineDiv4=document.createElement("div"),this.manipulationDOM.seperatorLineDiv4.className="network-seperatorLine",this.manipulationDOM.deleteSpan=document.createElement("span"),this.manipulationDOM.deleteSpan.className="network-manipulationUI delete",this.manipulationDOM.deleteLabelSpan=document.createElement("span"),this.manipulationDOM.deleteLabelSpan.className="network-manipulationLabel",this.manipulationDOM.deleteLabelSpan.innerHTML=t.del,this.manipulationDOM.deleteSpan.appendChild(this.manipulationDOM.deleteLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv4),this.manipulationDiv.appendChild(this.manipulationDOM.deleteSpan)),this.manipulationDOM.addNodeSpan.onclick=this._createAddNodeToolbar.bind(this),this.manipulationDOM.addEdgeSpan.onclick=this._createAddEdgeToolbar.bind(this),1==this._getSelectedNodeCount()&&this.triggerFunctions.edit?this.manipulationDOM.editNodeSpan.onclick=this._editNode.bind(this):1==this._getSelectedEdgeCount()&&0==this._getSelectedNodeCount()&&(this.manipulationDOM.editEdgeSpan.onclick=this._createEditEdgeToolbar.bind(this)),0==this._selectionIsEmpty()&&(this.manipulationDOM.deleteSpan.onclick=this._deleteSelected.bind(this)),this.closeDiv.onclick=this._toggleEditMode.bind(this);var e=this;this.boundFunction=e._createManipulatorBar,this.on("select",this.boundFunction)}else{for(;this.editModeDiv.hasChildNodes();)this.editModeDiv.removeChild(this.editModeDiv.firstChild);this.manipulationDOM.editModeSpan=document.createElement("span"),this.manipulationDOM.editModeSpan.className="network-manipulationUI edit editmode",this.manipulationDOM.editModeLabelSpan=document.createElement("span"),this.manipulationDOM.editModeLabelSpan.className="network-manipulationLabel",this.manipulationDOM.editModeLabelSpan.innerHTML=t.edit,this.manipulationDOM.editModeSpan.appendChild(this.manipulationDOM.editModeLabelSpan),this.editModeDiv.appendChild(this.manipulationDOM.editModeSpan),this.manipulationDOM.editModeSpan.onclick=this._toggleEditMode.bind(this)}},e._createAddNodeToolbar=function(){this._clearManipulatorBar(),this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.addDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._addNode,this.on("select",this.boundFunction)},e._createAddEdgeToolbar=function(){this._clearManipulatorBar(),this._unselectAll(!0),this.freezeSimulation=!0,this.boundFunction&&this.off("select",this.boundFunction);var t=this.constants.locales[this.constants.locale];this._unselectAll(),this.forceAppendSelection=!1,this.blockConnectingEdgeSelection=!0,this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.edgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this);var e=this;this.boundFunction=e._handleConnect,this.on("select",this.boundFunction),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleDragEnd=this._handleDragEnd,this._handleTouch=this._handleConnect,this._manipulationReleaseOverload=function(){},this._handleDragStart=function(){},this._handleDragEnd=this._finishConnect,this._redraw()},e._createEditEdgeToolbar=function(){this._clearManipulatorBar(),this.controlNodesActive=!0,this.boundFunction&&this.off("select",this.boundFunction),this.edgeBeingEdited=this._getSelectedEdge(),this.edgeBeingEdited._enableControlNodes();var t=this.constants.locales[this.constants.locale];this.manipulationDOM={},this.manipulationDOM.backSpan=document.createElement("span"),this.manipulationDOM.backSpan.className="network-manipulationUI back",this.manipulationDOM.backLabelSpan=document.createElement("span"),this.manipulationDOM.backLabelSpan.className="network-manipulationLabel",this.manipulationDOM.backLabelSpan.innerHTML=t.back,this.manipulationDOM.backSpan.appendChild(this.manipulationDOM.backLabelSpan),this.manipulationDOM.seperatorLineDiv1=document.createElement("div"),this.manipulationDOM.seperatorLineDiv1.className="network-seperatorLine",this.manipulationDOM.descriptionSpan=document.createElement("span"),this.manipulationDOM.descriptionSpan.className="network-manipulationUI none",this.manipulationDOM.descriptionLabelSpan=document.createElement("span"),this.manipulationDOM.descriptionLabelSpan.className="network-manipulationLabel",this.manipulationDOM.descriptionLabelSpan.innerHTML=t.editEdgeDescription,this.manipulationDOM.descriptionSpan.appendChild(this.manipulationDOM.descriptionLabelSpan),this.manipulationDiv.appendChild(this.manipulationDOM.backSpan),this.manipulationDiv.appendChild(this.manipulationDOM.seperatorLineDiv1),this.manipulationDiv.appendChild(this.manipulationDOM.descriptionSpan),this.manipulationDOM.backSpan.onclick=this._createManipulatorBar.bind(this),this.cachedFunctions._handleTouch=this._handleTouch,this.cachedFunctions._manipulationReleaseOverload=this._manipulationReleaseOverload,this.cachedFunctions._handleTap=this._handleTap,this.cachedFunctions._handleDragStart=this._handleDragStart,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleTouch=this._selectControlNode,this._handleTap=function(){},this._handleOnDrag=this._controlNodeDrag,this._handleDragStart=function(){},this._manipulationReleaseOverload=this._releaseControlNode,this._redraw()},e._selectControlNode=function(t){this.edgeBeingEdited.controlNodes.from.unselect(),this.edgeBeingEdited.controlNodes.to.unselect(),this.selectedControlNode=this.edgeBeingEdited._getSelectedControlNode(this._XconvertDOMtoCanvas(t.x),this._YconvertDOMtoCanvas(t.y)),null!==this.selectedControlNode&&(this.selectedControlNode.select(),this.freezeSimulation=!0),this._redraw()},e._controlNodeDrag=function(t){var e=this._getPointer(t.gesture.center);null!==this.selectedControlNode&&void 0!==this.selectedControlNode&&(this.selectedControlNode.x=this._XconvertDOMtoCanvas(e.x),this.selectedControlNode.y=this._YconvertDOMtoCanvas(e.y)),this._redraw()},e._releaseControlNode=function(t){var e=this._getNodeAt(t);null!==e?(1==this.edgeBeingEdited.controlNodes.from.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(e.id,this.edgeBeingEdited.to.id),this.edgeBeingEdited.controlNodes.from.unselect()),1==this.edgeBeingEdited.controlNodes.to.selected&&(this.edgeBeingEdited._restoreControlNodes(),this._editEdge(this.edgeBeingEdited.from.id,e.id),this.edgeBeingEdited.controlNodes.to.unselect())):this.edgeBeingEdited._restoreControlNodes(),this.freezeSimulation=!1,this._redraw()},e._handleConnect=function(t){if(0==this._getSelectedNodeCount()){var e=this._getNodeAt(t);if(null!=e)if(e.clusterSize>1)alert(this.constants.locales[this.constants.locale].createEdgeError);else{this._selectObject(e,!1);var i=this.sectors.support.nodes;i.targetNode=new o({id:"targetNode"},{},{},this.constants);var s=i.targetNode;s.x=e.x,s.y=e.y,this.edges.connectionEdge=new n({id:"connectionEdge",from:e.id,to:s.id},this,this.constants);var r=this.edges.connectionEdge;r.from=e,r.connected=!0,r.options.smoothCurves={enabled:!0,dynamic:!1,type:"continuous",roundness:.5},r.selected=!0,r.to=s,this.cachedFunctions._handleOnDrag=this._handleOnDrag,this._handleOnDrag=function(t){var e=this._getPointer(t.gesture.center),i=this.edges.connectionEdge;i.to.x=this._XconvertDOMtoCanvas(e.x),i.to.y=this._YconvertDOMtoCanvas(e.y)},this.moving=!0,this.start()}}},e._finishConnect=function(t){if(1==this._getSelectedNodeCount()){var e=this._getPointer(t.gesture.center);this._handleOnDrag=this.cachedFunctions._handleOnDrag,delete this.cachedFunctions._handleOnDrag;var i=this.edges.connectionEdge.fromId;delete this.edges.connectionEdge,delete this.sectors.support.nodes.targetNode,delete this.sectors.support.nodes.targetViaNode;var s=this._getNodeAt(e);null!=s&&(s.clusterSize>1?alert(this.constants.locales[this.constants.locale].createEdgeError):(this._createEdge(i,s.id),this._createManipulatorBar())),this._unselectAll()}},e._addNode=function(){if(this._selectionIsEmpty()&&1==this.editMode){var t=this._pointerToPositionObject(this.pointerPosition),e={id:s.randomUUID(),x:t.left,y:t.top,label:"new",allowedToMoveX:!0,allowedToMoveY:!0};if(this.triggerFunctions.add){if(2!=this.triggerFunctions.add.length)throw new Error("The function for add does not support two arguments (data,callback)");var i=this;this.triggerFunctions.add(e,function(t){i.nodesData.add(t),i._createManipulatorBar(),i.moving=!0,i.start()})}else this.nodesData.add(e),this._createManipulatorBar(),this.moving=!0,this.start()}},e._createEdge=function(t,e){if(1==this.editMode){var i={from:t,to:e};if(this.triggerFunctions.connect){if(2!=this.triggerFunctions.connect.length)throw new Error("The function for connect does not support two arguments (data,callback)");var s=this;this.triggerFunctions.connect(i,function(t){s.edgesData.add(t),s.moving=!0,s.start()})}else this.edgesData.add(i),this.moving=!0,this.start()}},e._editEdge=function(t,e){if(1==this.editMode){var i={id:this.edgeBeingEdited.id,from:t,to:e};if(this.triggerFunctions.editEdge){if(2!=this.triggerFunctions.editEdge.length)throw new Error("The function for edit does not support two arguments (data, callback)");var s=this;this.triggerFunctions.editEdge(i,function(t){s.edgesData.update(t),s.moving=!0,s.start()})}else this.edgesData.update(i),this.moving=!0,this.start()}},e._editNode=function(){if(!this.triggerFunctions.edit||1!=this.editMode)throw new Error("No edit function has been bound to this button");var t=this._getSelectedNode(),e={id:t.id,label:t.label,group:t.options.group,shape:t.options.shape,color:{background:t.options.color.background,border:t.options.color.border,highlight:{background:t.options.color.highlight.background,border:t.options.color.highlight.border}}};if(2!=this.triggerFunctions.edit.length)throw new Error("The function for edit does not support two arguments (data, callback)");var i=this;this.triggerFunctions.edit(e,function(t){i.nodesData.update(t),i._createManipulatorBar(),i.moving=!0,i.start()})},e._deleteSelected=function(){if(!this._selectionIsEmpty()&&1==this.editMode)if(this._clusterInSelection())alert(this.constants.locales[this.constants.locale].deleteClusterError);else{var t=this.getSelectedNodes(),e=this.getSelectedEdges();if(this.triggerFunctions.del){var i=this,s={nodes:t,edges:e};if(2!=this.triggerFunctions.del.length)throw new Error("The function for delete does not support two arguments (data, callback)");this.triggerFunctions.del(s,function(t){i.edgesData.remove(t.edges),i.nodesData.remove(t.nodes),i._unselectAll(),i.moving=!0,i.start()})}else this.edgesData.remove(e),this.nodesData.remove(t),this._unselectAll(),this.moving=!0,this.start()}}},function(t,e,i){var s=(i(1),i(45));e._cleanNavigation=function(){if(0!=this.navigationHammers.existing.length){for(var t=0;t0){var t,e,i=0,s=!1,o=!1;for(e in this.nodes)this.nodes.hasOwnProperty(e)&&(t=this.nodes[e],-1!=t.level?s=!0:o=!0,is&&(n.xFixed=!1,n.x=i[n.level].minPos,r=!0):n.yFixed&&n.level>s&&(n.yFixed=!1,n.y=i[n.level].minPos,r=!0),1==r&&(i[n.level].minPos+=i[n.level].nodeSpacing,n.edges.length>1&&this._placeBranchNodes(n.edges,n.id,i,n.level))}},e._setLevel=function(t,e,i){for(var s=0;st)&&(o.level=t,o.edges.length>1&&this._setLevel(t+1,o.edges,o.id))}},e._setLevelDirected=function(t,e,i){this.nodes[i].hierarchyEnumerated=!0;for(var s,o,n=0;n1&&s.hierarchyEnumerated===!1&&this._setLevelDirected(s.level,s.edges,s.id)},e._restoreNodes=function(){for(var t in this.nodes)this.nodes.hasOwnProperty(t)&&(this.nodes[t].xFixed=!1,this.nodes[t].yFixed=!1)}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l,c=this.calculationNodes,p=this.calculationNodeIndices,u=-2/3,m=4/3,f=this.constants.physics.repulsion.nodeDistance,g=f;for(d=0;di&&(r=.5*g>i?1:v*i+m,r*=0==n?1:1+n*this.constants.clustering.forceAmplification,r/=Math.max(i,.01*g),s=t*r,o=e*r,a.fx-=s,a.fy-=o,h.fx+=s,h.fy+=o)}}},function(t,e){e._calculateNodeForces=function(){var t,e,i,s,o,n,r,a,h,d,l=this.calculationNodes,c=this.calculationNodeIndices,p=this.constants.physics.hierarchicalRepulsion.nodeDistance;for(h=0;hi?-Math.pow(u*i,2)+Math.pow(u*p,2):0,0==i?i=.01:n/=i,s=t*n,o=e*n,r.fx-=s,r.fy-=o,a.fx+=s,a.fy+=o}},e._calculateHierarchicalSpringForces=function(){for(var t,e,i,s,o,n,r,a,h,d=this.edges,l=this.calculationNodes,c=this.calculationNodeIndices,p=0;pn;n++)t=e[i[n]],t.options.mass>0&&(this._getForceContribution(o.root.children.NW,t),this._getForceContribution(o.root.children.NE,t),this._getForceContribution(o.root.children.SW,t),this._getForceContribution(o.root.children.SE,t))}},e._getForceContribution=function(t,e){if(t.childrenCount>0){var i,s,o;if(i=t.centerOfMass.x-e.x,s=t.centerOfMass.y-e.y,o=Math.sqrt(i*i+s*s),o*t.calcSize>this.constants.physics.barnesHut.thetaInverted){0==o&&(o=.1*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}else if(4==t.childrenCount)this._getForceContribution(t.children.NW,e),this._getForceContribution(t.children.NE,e),this._getForceContribution(t.children.SW,e),this._getForceContribution(t.children.SE,e);else if(t.children.data.id!=e.id){0==o&&(o=.5*Math.random(),i=o);var n=this.constants.physics.barnesHut.gravitationalConstant*t.mass*e.options.mass/(o*o*o),r=i*n,a=s*n;e.fx+=r,e.fy+=a}}},e._formBarnesHutTree=function(t,e){for(var i,s=e.length,o=Number.MAX_VALUE,n=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=-Number.MAX_VALUE,h=0;s>h;h++){var d=t[e[h]].x,l=t[e[h]].y;t[e[h]].options.mass>0&&(o>d&&(o=d),d>r&&(r=d),n>l&&(n=l),l>a&&(a=l))}var c=Math.abs(r-o)-Math.abs(a-n);c>0?(n-=.5*c,a+=.5*c):(o+=.5*c,r-=.5*c);var p=1e-5,u=Math.max(p,Math.abs(r-o)),m=.5*u,f=.5*(o+r),g=.5*(n+a),v={root:{centerOfMass:{x:0,y:0},mass:0,range:{minX:f-m,maxX:f+m,minY:g-m,maxY:g+m},size:u,calcSize:1/u,children:{data:null},maxWidth:0,level:0,childrenCount:4}};for(this._splitBranch(v.root),h=0;s>h;h++)i=t[e[h]],i.options.mass>0&&this._placeInTree(v.root,i);this.barnesHutTree=v},e._updateBranchMass=function(t,e){var i=t.mass+e.options.mass,s=1/i;t.centerOfMass.x=t.centerOfMass.x*t.mass+e.x*e.options.mass,t.centerOfMass.x*=s,t.centerOfMass.y=t.centerOfMass.y*t.mass+e.y*e.options.mass,t.centerOfMass.y*=s,t.mass=i;var o=Math.max(Math.max(e.height,e.radius),e.width);t.maxWidth=t.maxWidthe.x?t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NW"):this._placeInRegion(t,e,"SW"):t.children.NW.range.maxY>e.y?this._placeInRegion(t,e,"NE"):this._placeInRegion(t,e,"SE")},e._placeInRegion=function(t,e,i){switch(t.children[i].childrenCount){case 0:t.children[i].children.data=e,t.children[i].childrenCount=1,this._updateBranchMass(t.children[i],e);break;case 1:t.children[i].children.data.x==e.x&&t.children[i].children.data.y==e.y?(e.x+=Math.random(),e.y+=Math.random()):(this._splitBranch(t.children[i]),this._placeInTree(t.children[i],e));break;case 4:this._placeInTree(t.children[i],e)}},e._splitBranch=function(t){var e=null;1==t.childrenCount&&(e=t.children.data,t.mass=0,t.centerOfMass.x=0,t.centerOfMass.y=0),t.childrenCount=4,t.children.data=null,this._insertRegion(t,"NW"),this._insertRegion(t,"NE"),this._insertRegion(t,"SW"),this._insertRegion(t,"SE"),null!=e&&this._placeInTree(t,e)},e._insertRegion=function(t,e){var i,s,o,n,r=.5*t.size;switch(e){case"NW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY,n=t.range.minY+r;break;case"NE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY,n=t.range.minY+r;break;case"SW":i=t.range.minX,s=t.range.minX+r,o=t.range.minY+r,n=t.range.maxY;break;case"SE":i=t.range.minX+r,s=t.range.maxX,o=t.range.minY+r,n=t.range.maxY}t.children[e]={centerOfMass:{x:0,y:0},mass:0,range:{minX:i,maxX:s,minY:o,maxY:n},size:.5*t.size,calcSize:2*t.calcSize,children:{data:null},maxWidth:0,level:t.level+1,childrenCount:0}},e._drawTree=function(t,e){void 0!==this.barnesHutTree&&(t.lineWidth=1,this._drawBranch(this.barnesHutTree.root,t,e))},e._drawBranch=function(t,e,i){void 0===i&&(i="#FF0000"),4==t.childrenCount&&(this._drawBranch(t.children.NW,e),this._drawBranch(t.children.NE,e),this._drawBranch(t.children.SE,e),this._drawBranch(t.children.SW,e)),e.strokeStyle=i,e.beginPath(),e.moveTo(t.range.minX,t.range.minY),e.lineTo(t.range.maxX,t.range.minY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.minY),e.lineTo(t.range.maxX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.maxX,t.range.maxY),e.lineTo(t.range.minX,t.range.maxY),e.stroke(),e.beginPath(),e.moveTo(t.range.minX,t.range.maxY),e.lineTo(t.range.minX,t.range.minY),e.stroke()}},function(t){function e(t){throw new Error("Cannot find module '"+t+"'.")}e.keys=function(){return[]},e.resolve=e,t.exports=e,e.id=70},function(t){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children=[],t.webpackPolyfill=1),t}}])}); //# sourceMappingURL=vis.map diff --git a/docs/network.html b/docs/network.html index 28cfcd83..e4775b41 100644 --- a/docs/network.html +++ b/docs/network.html @@ -303,7 +303,8 @@ When using a DataSet, the network is automatically updating to changes in the Da level number no - This level is used in the hierarchical layout. If this is not selected, the level does not do anything. + This level is used in the hierarchical layout. If this is not selected, the level does not do anything. This must be a postive number (min value: 0). + Fractions are possible but only integers are supported. @@ -342,7 +343,7 @@ When using a DataSet, the network is automatically updating to changes in the Da no Horizontal position in pixels. The horizontal position of the node will be fixed unless combined with the allowedToMoveX:true option. - The vertical position y may remain undefined. + The vertical position y may remain undefined. This does not work with hierarchical layout. y @@ -350,7 +351,7 @@ When using a DataSet, the network is automatically updating to changes in the Da no Vertical position in pixels. The vertical position of the node will be fixed unless combined with the allowedToMoveY:true option. - The horizontal position x may remain undefined. + The horizontal position x may remain undefined. This does not work with hierarchical layout. @@ -1000,13 +1001,13 @@ All options defined per-node override these global settings. widthMin Number 16 - The minimum width for a scaled image. Only applicable to shape image. + The minimum width for a scaled image. Only applicable to shape image. This only does something if you supply a value. widthMax Number 64 - The maximum width for a scaled image. Only applicable to shape image. + The maximum width for a scaled image. Only applicable to shape image. This only does something if you supply a value. @@ -1021,14 +1022,14 @@ All options defined per-node override these global settings. Number 10 The minimum radius for a scaled node. Only applicable to shapes dot, - star, triangle, triangleDown, and square. + star, triangle, triangleDown, and square. This only does something if you supply a value. radiusMax Number 30 The maximum radius for a scaled node. Only applicable to shapes dot, - star, triangle, triangleDown, and square. + star, triangle, triangleDown, and square. This only does something if you supply a value. @@ -1224,13 +1225,13 @@ var options = { widthMin Number 1 - The minimum thickness of the line when using per-edge defined values. + The minimum thickness of the line when using per-edge defined values. This does nothing if you have not defined a value. widthMax Number 15 - The maximum thickness of the line when using per-edge defined values. + The maximum thickness of the line when using per-edge defined values. This does nothing if you have not defined a value. diff --git a/download/vis.zip b/download/vis.zip index f32a23694e87e8706df4e31e41460d044ce47dcd..bbb266b2976a3b433ed1faaea8b5ef20311b8cc7 100644 GIT binary patch delta 527980 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

~=(1Y#kb@)W4TNq34hWN3!gO|Z?VdPym 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�={GsDk2WsMJeP9 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%0ASiXCS?b;ViZNm{?Mz`wSWK{mkG6iif9=YB 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%0DgCjwZc3a#+IF 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 delta 535736 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±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

nIbLHHzM6Pg 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

u$;YyC~DfqlUhg(8#tFK*`kNaX-z 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 KGbpnFhH%kep*S574y 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

- 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 install vis

installing with bower

bower install vis
-

download zip (version 3.9.0)

+

download zip (version 3.9.1)