From f91e2bfab6463464a830d0a8818f8af0fd46df5f Mon Sep 17 00:00:00 2001 From: Alex de Mulder Date: Mon, 16 Feb 2015 16:18:40 +0100 Subject: [PATCH] made sure frozensimulation stays frozen when doing setOptions or the like --- dist/vis.js | 13864 +++++++++++++++++++-------------------- dist/vis.map | 2 +- dist/vis.min.css | 2 +- lib/network/Network.js | 7 +- 4 files changed, 6936 insertions(+), 6939 deletions(-) diff --git a/dist/vis.js b/dist/vis.js index 4566798e..95aaf603 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -5,7 +5,7 @@ * A dynamic, browser-based visualization library. * * @version 3.10.1-SNAPSHOT - * @date 2015-02-11 + * @date 2015-02-16 * * @license * Copyright (C) 2011-2014 Almende B.V, http://almende.com @@ -113,24 +113,24 @@ return /******/ (function(modules) { // webpackBootstrap components: { items: { - Item: __webpack_require__(20), - BackgroundItem: __webpack_require__(21), - BoxItem: __webpack_require__(22), - PointItem: __webpack_require__(23), - RangeItem: __webpack_require__(24) + Item: __webpack_require__(31), + BackgroundItem: __webpack_require__(32), + BoxItem: __webpack_require__(33), + PointItem: __webpack_require__(34), + RangeItem: __webpack_require__(35) }, - 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) + 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) } }; @@ -6446,16 +6446,16 @@ return /******/ (function(modules) { // webpackBootstrap var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(26); - var CustomTime = __webpack_require__(27); - var ItemSet = __webpack_require__(32); + var TimeAxis = __webpack_require__(30); + var CurrentTime = __webpack_require__(21); + var CustomTime = __webpack_require__(22); + var ItemSet = __webpack_require__(27); /** * Create a timeline visualization * @param {HTMLElement} container - * @param {vis.DataSet | Array | google.visualization.DataTable} [items] - * @param {vis.DataSet | Array | google.visualization.DataTable} [groups] + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [items] + * @param {vis.DataSet | vis.DataView | Array | google.visualization.DataTable} [groups] * @param {Object} [options] See Timeline.setOptions for the available options. * @constructor * @extends Core @@ -6466,7 +6466,7 @@ return /******/ (function(modules) { // webpackBootstrap } // if the third element is options, the forth is groups (optionally); - if (!(Array.isArray(groups) || groups instanceof DataSet) && groups instanceof Object) { + if (!(Array.isArray(groups) || groups instanceof DataSet || groups instanceof DataView) && groups instanceof Object) { var forthArgument = options; options = groups; groups = forthArgument; @@ -6781,10 +6781,10 @@ return /******/ (function(modules) { // webpackBootstrap var DataView = __webpack_require__(4); var Range = __webpack_require__(17); var Core = __webpack_require__(46); - var TimeAxis = __webpack_require__(35); - var CurrentTime = __webpack_require__(26); - var CustomTime = __webpack_require__(27); - var LineGraph = __webpack_require__(34); + var TimeAxis = __webpack_require__(30); + var CurrentTime = __webpack_require__(21); + var CustomTime = __webpack_require__(22); + var LineGraph = __webpack_require__(29); /** * Create a timeline visualization @@ -7765,7 +7765,7 @@ return /******/ (function(modules) { // webpackBootstrap var util = __webpack_require__(1); var hammerUtil = __webpack_require__(47); var moment = __webpack_require__(44); - var Component = __webpack_require__(25); + var Component = __webpack_require__(20); var DateUtil = __webpack_require__(15); /** @@ -9190,3758 +9190,3996 @@ return /******/ (function(modules) { // webpackBootstrap /* 20 */ /***/ function(module, exports, __webpack_require__) { - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - /** - * @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 + * Prototype for visual components + * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] + * @param {Object} [options] */ - 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; + function Component (body, options) { + this.options = null; + this.props = null; } - Item.prototype.stack = true; - /** - * Select current item + * Set options for the component. The new options will be merged into the + * current options. + * @param {Object} options */ - Item.prototype.select = function() { - this.selected = true; - this.dirty = true; - if (this.displayed) this.redraw(); + Component.prototype.setOptions = function(options) { + if (options) { + util.extend(this.options, options); + } }; /** - * Unselect current item + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - Item.prototype.unselect = function() { - this.selected = false; - this.dirty = true; - if (this.displayed) this.redraw(); + Component.prototype.redraw = function() { + // should be implemented by the component + return false; }; /** - * 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 + * Destroy the component. Cleanup DOM and event listeners */ - Item.prototype.setData = function(data) { - this.data = data; - this.dirty = true; - if (this.displayed) this.redraw(); + Component.prototype.destroy = function() { + // should be implemented by the component }; /** - * Set a parent for the item - * @param {ItemSet | Group} parent + * Test whether the component is resized since the last time _isResized() was + * called. + * @return {Boolean} Returns true if the component is resized + * @protected */ - Item.prototype.setParent = function(parent) { - if (this.displayed) { - this.hide(); - this.parent = parent; - if (this.parent) { - this.show(); - } - } - else { - this.parent = parent; - } - }; + Component.prototype._isResized = function() { + var resized = (this.props._previousWidth !== this.props.width || + this.props._previousHeight !== this.props.height); - /** - * 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; - }; + this.props._previousWidth = this.props.width; + this.props._previousHeight = this.props.height; - /** - * Show the Item in the DOM (when not already visible) - * @return {Boolean} changed - */ - Item.prototype.show = function() { - return false; + return resized; }; + 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); + /** - * Hide the Item from the DOM (when visible) - * @return {Boolean} changed + * A current time bar + * @param {{range: Range, dom: Object, domProps: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCurrentTime] + * @constructor CurrentTime + * @extends Component */ - Item.prototype.hide = function() { - return false; - }; + 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(); /** - * Repaint the item + * Create the HTML DOM for the current time bar + * @private */ - Item.prototype.redraw = function() { - // should be implemented by the item + 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; }; /** - * Reposition the Item horizontally + * Destroy the CurrentTime bar */ - Item.prototype.repositionX = function() { - // should be implemented by the item + CurrentTime.prototype.destroy = function () { + this.options.showCurrentTime = false; + this.redraw(); // will remove the bar from the DOM and stop refreshing + + this.body = null; }; /** - * Reposition the Item vertically + * Set options for the component. Options will be merged in current options. + * @param {Object} options Available parameters: + * {boolean} [showCurrentTime] */ - Item.prototype.repositionY = function() { - // should be implemented by the item + CurrentTime.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); + } }; /** - * Repaint a delete button on the top right of the item when the item is selected - * @param {HTMLElement} anchor - * @protected + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - Item.prototype._repaintDeleteButton = function (anchor) { - if (this.selected && this.options.editable.remove && !this.dom.deleteButton) { - // create and show button - var me = this; + 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); - var deleteButton = document.createElement('div'); - deleteButton.className = 'delete'; - deleteButton.title = 'Delete this item'; + this.start(); + } - Hammer(deleteButton, { - preventDefault: true - }).on('tap', function (event) { - me.parent.removeFromDataSet(me); - event.stopPropagation(); - }); + var now = new Date(new Date().valueOf() + this.offset); + var x = this.body.util.toScreen(now); - anchor.appendChild(deleteButton); - this.dom.deleteButton = deleteButton; + 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; } - else if (!this.selected && this.dom.deleteButton) { - // remove button - if (this.dom.deleteButton.parentNode) { - this.dom.deleteButton.parentNode.removeChild(this.dom.deleteButton); + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } - this.dom.deleteButton = null; + this.stop(); } + + return false; }; /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private + * Start auto refreshing the current time bar */ - 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; - } + CurrentTime.prototype.start = function() { + var me = this; - 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); - } - } + function update () { + me.stop(); - this.content = content; + // 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; + + me.redraw(); + + // start a timer to adjust for the new time + me.currentTimeTimer = setTimeout(update, interval); } + + update(); }; /** - * Set HTML contents for the item - * @param {Element} element HTML element to fill with the contents - * @private + * Stop auto refreshing the current time bar */ - Item.prototype._updateTitle = function (element) { - if (this.data.title != null) { - element.title = this.data.title || ''; - } - else { - element.removeAttribute('title'); + CurrentTime.prototype.stop = function() { + if (this.currentTimeTimer !== undefined) { + clearTimeout(this.currentTimeTimer); + delete this.currentTimeTimer; } }; /** - * 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 + * 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. */ - 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); - } - } - } + CurrentTime.prototype.setCurrentTime = function(time) { + var t = util.convert(time, 'Date').valueOf(); + var now = new Date().valueOf(); + this.offset = t - now; + this.redraw(); }; /** - * Update custom styles of the element - * @param element - * @private + * Get the current time. + * @return {Date} Returns the current time. */ - 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; - } + CurrentTime.prototype.getCurrentTime = function() { + return new Date(new Date().valueOf() + this.offset); }; - module.exports = Item; + module.exports = CurrentTime; /***/ }, -/* 21 */ +/* 22 */ /***/ function(module, exports, __webpack_require__) { var Hammer = __webpack_require__(45); - var Item = __webpack_require__(20); - var BackgroundGroup = __webpack_require__(31); - var RangeItem = __webpack_require__(24); + var util = __webpack_require__(1); + var Component = __webpack_require__(20); + var moment = __webpack_require__(44); + var locales = __webpack_require__(48); /** - * @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 + * A custom time bar + * @param {{range: Range, dom: Object}} body + * @param {Object} [options] Available parameters: + * {Boolean} [showCustomTime] + * @constructor CustomTime + * @extends Component */ - // 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 CustomTime (body, options) { + this.body = body; + + // default options + this.defaultOptions = { + showCustomTime: false, + locales: locales, + locale: 'en' }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + this.options = util.extend({}, this.defaultOptions); - // 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); - } - } + this.customTime = new Date(); + this.eventParams = {}; // stores state parameters while dragging the bar - Item.call(this, data, conversion, options); + // create the DOM + this._create(); - this.emptyContent = false; + this.setOptions(options); } - BackgroundItem.prototype = new Item (null, null, null); + CustomTime.prototype = new Component(); - BackgroundItem.prototype.baseClassName = 'item background'; - BackgroundItem.prototype.stack = false; + /** + * 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); + } + }; /** - * 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 DOM for the custom time + * @private */ - BackgroundItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); + 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)); }; /** - * Repaint the item + * Destroy the CustomTime bar */ - BackgroundItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + CustomTime.prototype.destroy = function () { + this.options.showCustomTime = false; + this.redraw(); // will remove the bar from the DOM - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + this.hammer.enable(false); + this.hammer = null; - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + this.body = null; + }; - // Note: we do NOT attach this item as attribute to the DOM, - // such that background items cannot be selected - //dom.box['timeline-item'] = this; + /** + * 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); + } - this.dirty = true; - } + var x = this.body.util.toScreen(this.customTime); - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + 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; } - if (!dom.box.parentNode) { - var background = this.parent.dom.background; - if (!background) { - throw new Error('Cannot redraw item: parent has no background container element'); + else { + // remove the line from the DOM + if (this.bar.parentNode) { + this.bar.parentNode.removeChild(this.bar); } - background.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.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 + return false; + }; - this.dirty = false; - } + /** + * Set custom time. + * @param {Date | number | string} time + */ + CustomTime.prototype.setCustomTime = function(time) { + this.customTime = util.convert(time, 'Date'); + this.redraw(); }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Retrieve the current custom time. + * @return {Date} customTime */ - BackgroundItem.prototype.show = RangeItem.prototype.show; + CustomTime.prototype.getCustomTime = function() { + return new Date(this.customTime.valueOf()); + }; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Start moving horizontally + * @param {Event} event + * @private */ - BackgroundItem.prototype.hide = RangeItem.prototype.hide; + CustomTime.prototype._onDragStart = function(event) { + this.eventParams.dragging = true; + this.eventParams.customTime = this.customTime; + + event.stopPropagation(); + event.preventDefault(); + }; /** - * Reposition the item horizontally - * @Override + * Perform moving operating. + * @param {Event} event + * @private */ - BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + 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(); + }; /** - * Reposition the item vertically - * @Override + * Stop moving operating. + * @param {event} event + * @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; + CustomTime.prototype._onDragEnd = function (event) { + if (!this.eventParams.dragging) return; - // 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; - } - } - } + // fire a timechanged event + this.body.emitter.emit('timechanged', { + time: new Date(this.customTime.valueOf()) + }); - // 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'; + event.stopPropagation(); + event.preventDefault(); }; - module.exports = BackgroundItem; + module.exports = CustomTime; /***/ }, -/* 22 */ +/* 23 */ /***/ 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); /** - * @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 + * A horizontal time axis + * @param {Object} [options] See DataAxis.setOptions for the available + * options. + * @constructor DataAxis + * @extends Component + * @param body */ - function BoxItem (data, conversion, options) { - this.props = { - dot: { - width: 0, - height: 0 + 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} }, - line: { - width: 0, - height: 0 + title: { + left: {text:undefined}, + right: {text:undefined} + }, + format: { + left: {decimals: undefined}, + right: {decimals: undefined} } }; - // validate data - if (data) { - if (data.start == undefined) { - throw new Error('Property "start" missing in item ' + data); - } - } - - Item.call(this, data, conversion, options); - } - - BoxItem.prototype = new Item (null, null, null); + this.linegraphOptions = linegraphOptions; + this.linegraphSVG = svg; + this.props = {}; + this.DOMelements = { // dynamic elements + lines: {}, + labels: {}, + title: {} + }; - /** - * 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.dom = {}; - /** - * Repaint the item - */ - BoxItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + this.range = {start:0, end:0}; - // create main box - dom.box = document.createElement('DIV'); + this.options = util.extend({}, this.defaultOptions); + this.conversionFactor = 1; - // contents box (inside the background box). used for making margins - dom.content = document.createElement('DIV'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + this.setOptions(options); + this.width = Number(('' + this.options.width).replace("px","")); + this.minWidth = this.width; + this.height = this.linegraphSVG.offsetHeight; + this.hidden = false; - // line to axis - dom.line = document.createElement('DIV'); - dom.line.className = 'line'; + this.stepPixels = 25; + this.stepPixelsForced = 25; + this.zeroCrossing = -1; - // dot on axis - dom.dot = document.createElement('DIV'); - dom.dot.className = 'dot'; + this.lineOffset = 0; + this.master = true; + this.svgElements = {}; + this.iconsRemoved = false; - // attach this item as attribute - dom.box['timeline-item'] = this; - this.dirty = true; - } + this.groups = {}; + this.amountOfGroups = 0; - // 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; + // create the HTML DOM + this._create(); - // 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); + var me = this; + this.body.emitter.on("verticalDrag", function() { + me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; + }); + } - // 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 = new Component(); - // 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; + DataAxis.prototype.addGroup = function(label, graphOptions) { + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; } + this.amountOfGroups += 1; + }; - this._repaintDeleteButton(dom.box); + DataAxis.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; }; - /** - * 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(); + DataAxis.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; } }; - /** - * Hide the item from the DOM (when visible) - */ - BoxItem.prototype.hide = function() { - if (this.displayed) { - var dom = this.dom; - 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); + 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); - this.top = null; - this.left = null; + this.minWidth = Number(('' + this.options.width).replace("px","")); - this.displayed = false; + if (redraw == true && this.dom.frame) { + this.hide(); + this.show(); + } } }; + /** - * Reposition the item horizontally - * @Override + * Create the HTML DOM for the DataAxis */ - 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; + 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; - // calculate left position of the box - if (align == 'right') { - this.left = start - this.width; - } - else if (align == 'left') { - this.left = start; + 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; + + if (this.options.orientation == 'left') { + x = iconOffset; } else { - // default or 'center' - this.left = start - this.width / 2; + x = this.width - iconWidth - iconOffset; } - // reposition box - box.style.left = this.left + 'px'; - - // reposition line - line.style.left = (start - this.props.line.width / 2) + '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 + iconOffset; + } + } + } - // reposition dot - dot.style.left = (start - this.props.dot.width / 2) + 'px'; + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = false; }; + DataAxis.prototype._cleanupIcons = function() { + if (this.iconsRemoved == false) { + DOMutil.prepareElements(this.svgElements); + DOMutil.cleanupElements(this.svgElements); + this.iconsRemoved = true; + } + } + /** - * Reposition the item vertically - * @Override + * Create the HTML DOM for the DataAxis */ - 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 = ''; + 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); + } } - 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'; + if (!this.dom.lineContainer.parentNode) { + this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); } - - dot.style.top = (-this.props.dot.height / 2) + 'px'; }; - module.exports = BoxItem; - - -/***/ }, -/* 23 */ -/***/ function(module, exports, __webpack_require__) { + /** + * 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); + } - var Item = __webpack_require__(20); + if (this.dom.lineContainer.parentNode) { + this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); + } + }; /** - * @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 + * Set a range (start and end) + * @param end + * @param start + * @param end */ - 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); + DataAxis.prototype.setRange = function (start, end) { + if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { + if (start > 0) { + start = 0; } } - - 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); + this.range.start = start; + this.range.end = end; }; /** - * Repaint the item + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - PointItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; - - // background box - dom.point = document.createElement('div'); - // className is updated in redraw() - - // contents box, right from the dot - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.point.appendChild(dom.content); - - // dot at start - dom.dot = document.createElement('div'); - dom.point.appendChild(dom.dot); - - // attach this item as attribute - dom.point['timeline-item'] = this; - - this.dirty = true; - } + 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'; - // 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'); + 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++; + } } - foreground.appendChild(dom.point); } - 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.point); - this._updateDataAttributes(this.dom.point); - this._updateStyle(this.dom.point); + if (this.amountOfGroups == 0 || activeGroups == 0) { + this.hide(); + } + else { + this.show(); + this.height = Number(this.linegraphSVG.style.height.replace("px","")); - // 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; + // 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; - // 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; + var props = this.props; + var frame = this.dom.frame; - // resize contents - dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; - //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + // update classname + frame.className = 'dataaxis'; - dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; - dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + // calculate character width and height + this._calculateCharSize(); - this.dirty = false; - } + var orientation = this.options.orientation; + var showMinorLabels = this.options.showMinorLabels; + var showMajorLabels = this.options.showMajorLabels; - this._repaintDeleteButton(dom.point); - }; + // determine the width and height of the elements for the axis + props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; + props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; - /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. - */ - PointItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); - } - }; + 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; - /** - * 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); + // 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; } - this.top = null; - this.left = null; + resized = this._redrawLabels(); + resized = this._isResized() || resized; - this.displayed = false; + if (this.options.icons == true) { + this._redrawGroupIcons(); + } + else { + this._cleanupIcons(); + } + + this._redrawTitle(orientation); } + return resized; }; /** - * Reposition the item horizontally - * @Override + * Repaint major and minor text labels and vertical grid lines + * @private */ - PointItem.prototype.repositionX = function() { - var start = this.conversion.toScreen(this.data.start); - - this.left = start - this.props.dot.width; - - // reposition point - this.dom.point.style.left = this.left + 'px'; - }; + DataAxis.prototype._redrawLabels = function () { + var resized = false; + DOMutil.prepareElements(this.DOMelements.lines); + DOMutil.prepareElements(this.DOMelements.labels); - /** - * Reposition the item vertically - * @Override - */ - PointItem.prototype.repositionY = function() { - var orientation = this.options.orientation, - point = this.dom.point; + var orientation = this.options['orientation']; - if (orientation == 'top') { - point.style.top = this.top + 'px'; - } - else { - point.style.top = (this.parent.height - this.top - this.height) + 'px'; - } - }; + // 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; - module.exports = PointItem; + 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)); -/***/ }, -/* 24 */ -/***/ function(module, exports, __webpack_require__) { + this.stepPixels = stepPixels; - var Hammer = __webpack_require__(45); - var Item = __webpack_require__(20); + var amountOfSteps = this.height / stepPixels; + var stepDifference = 0; - /** - * @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 + // 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(); } - }; - this.overflow = false; // if contents can overflow (css styling), this flag is set to true + amountOfSteps = this.height / stepPixels; - // 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); + 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();} + } } } + else { + amountOfSteps += 0.25; + } - Item.call(this, data, conversion, options); - } - RangeItem.prototype = new Item (null, null, null); + this.valueAtZero = step.marginEnd; + var marginStartPos = 0; - RangeItem.prototype.baseClassName = 'item range'; + // do not draw the first label + var max = 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 - */ - RangeItem.prototype.isVisible = function(range) { - // determine visibility - return (this.data.start < range.end) && (this.data.end > range.start); - }; + // Get the number of decimal places + var decimals; + if(this.options.format[orientation] !== undefined) { + decimals = this.options.format[orientation].decimals; + } - /** - * Repaint the item - */ - RangeItem.prototype.redraw = function() { - var dom = this.dom; - if (!dom) { - // create DOM - this.dom = {}; - dom = this.dom; + 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(); - // background box - dom.box = document.createElement('div'); - // className is updated in redraw() + 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); + } - // contents box - dom.content = document.createElement('div'); - dom.content.className = 'content'; - dom.box.appendChild(dom.content); + 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); + } - // attach this item as attribute - dom.box['timeline-item'] = this; + if (this.master == true && step.current == 0) { + this.zeroCrossing = max; + } - this.dirty = true; + max++; } - // append DOM to parent DOM - if (!this.parent) { - throw new Error('Cannot redraw item: no parent attached'); + if (this.master == false) { + this.conversionFactor = y / (this.valueAtZero - step.current); } - 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.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; } - 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 = this.baseClassName + className; - - // 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 = ''; + // 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; - this.dirty = false; + // 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; } - this._repaintDeleteButton(dom.box); - this._repaintDragLeft(); - this._repaintDragRight(); + return resized; + }; + + DataAxis.prototype.convertValue = function (value) { + var invertedValue = this.valueAtZero - value; + var convertedValue = invertedValue * this.conversionFactor; + return convertedValue; }; /** - * Show the item in the DOM (when not already visible). The items DOM will - * be created when needed. + * Create a label for the axis at position x + * @private + * @param y + * @param text + * @param orientation + * @param className + * @param characterHeight */ - RangeItem.prototype.show = function() { - if (!this.displayed) { - this.redraw(); + 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"; + } + + label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + + text += ''; + + var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); + if (this.maxLabelSize < text.length * largestWidth) { + this.maxLabelSize = text.length * largestWidth; } }; /** - * Hide the item from the DOM (when visible) - * @return {Boolean} changed + * Create a minor line for the axis at position y + * @param y + * @param orientation + * @param className + * @param offset + * @param width */ - RangeItem.prototype.hide = function() { - if (this.displayed) { - var box = this.dom.box; + 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 (box.parentNode) { - box.parentNode.removeChild(box); + if (orientation == 'left') { + line.style.left = (this.width - offset) + 'px'; + } + else { + line.style.right = (this.width - offset) + 'px'; } - this.top = null; - this.left = null; - - this.displayed = false; + line.style.width = width + 'px'; + line.style.top = y + 'px'; } }; /** - * Reposition the item horizontally - * @Override + * Create a title for the axis + * @private + * @param orientation */ - 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; + DataAxis.prototype._redrawTitle = function (orientation) { + DOMutil.prepareElements(this.DOMelements.title); - // 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; - } - var boxWidth = Math.max(end - start, 1); + // 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; - if (this.overflow) { - this.left = start; - this.width = boxWidth + this.props.content.width; - contentWidth = this.props.content.width; + // Add style - if provided + if (this.options.title[orientation].style !== undefined) { + util.addCssText(title, this.options.title[orientation].style); + } - // 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); - } + if (orientation == 'left') { + title.style.left = this.props.titleCharHeight + 'px'; + } + else { + title.style.right = this.props.titleCharHeight + 'px'; + } - this.dom.box.style.left = this.left + 'px'; - this.dom.box.style.width = boxWidth + 'px'; + title.style.width = this.height + 'px'; + } - switch (this.options.align) { - case 'left': - this.dom.content.style.left = '0'; - break; + // we need to clean up in case we did not use all elements. + DOMutil.cleanupElements(this.DOMelements.title); + }; - 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; - 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'; - } - }; /** - * Reposition the item vertically - * @Override + * 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.repositionY = function() { - var orientation = this.options.orientation, - box = this.dom.box; + 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); - if (orientation == 'top') { - box.style.top = this.top + 'px'; - } - else { - box.style.top = (this.parent.height - this.top - this.height) + 'px'; + this.props.minorCharHeight = measureCharMinor.clientHeight; + this.props.minorCharWidth = measureCharMinor.clientWidth; + + this.dom.frame.removeChild(measureCharMinor); } - }; - /** - * Repaint a drag area on the left side of the range when the range is selected - * @protected - */ - 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; + 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); - // TODO: this should be redundant? - Hammer(dragLeft, { - preventDefault: true - }).on('drag', function () { - //console.log('drag left') - }); + this.props.majorCharHeight = measureCharMajor.clientHeight; + this.props.majorCharWidth = measureCharMajor.clientWidth; - 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; + this.dom.frame.removeChild(measureCharMajor); } - }; - /** - * Repaint a drag area on the right side of the range when the range is selected - * @protected - */ - 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 (!('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); - // TODO: this should be redundant? - Hammer(dragRight, { - preventDefault: true - }).on('drag', function () { - //console.log('drag right') - }); + this.props.titleCharHeight = measureCharTitle.clientHeight; + this.props.titleCharWidth = measureCharTitle.clientWidth; - 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; + this.dom.frame.removeChild(measureCharTitle); } }; - module.exports = RangeItem; + module.exports = DataAxis; /***/ }, -/* 25 */ +/* 24 */ /***/ function(module, exports, __webpack_require__) { - /** - * Prototype for visual components - * @param {{dom: Object, domProps: Object, emitter: Emitter, range: Range}} [body] - * @param {Object} [options] - */ - function Component (body, options) { - this.options = null; - this.props = null; - } + 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); /** - * Set options for the component. The new options will be merged into the - * current options. - * @param {Object} options + * /** + * @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 */ - Component.prototype.setOptions = function(options) { - if (options) { - util.extend(this.options, options); + 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; + } - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - Component.prototype.redraw = function() { - // should be implemented by the component - return false; - }; /** - * Destroy the component. Cleanup DOM and event listeners + * this loads a reference to all items in this group into this group. + * @param {array} items */ - Component.prototype.destroy = function() { - // should be implemented by the component + 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 { + this.itemsData = []; + } }; + /** - * Test whether the component is resized since the last time _isResized() was - * called. - * @return {Boolean} Returns true if the component is resized - * @protected + * this is used for plotting barcharts, this way, we only have to calculate it once. + * @param pos */ - 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; + GraphGroup.prototype.setZeroPosition = function(pos) { + this.zeroPosition = pos; }; - module.exports = Component; - - -/***/ }, -/* 26 */ -/***/ function(module, exports, __webpack_require__) { - - var util = __webpack_require__(1); - var Component = __webpack_require__(25); - 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 + * set the options of the graph group over the default options. + * @param options */ - function CurrentTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCurrentTime: true, + GraphGroup.prototype.setOptions = function(options) { + if (options !== undefined) { + var fields = ['sampling','style','sort','yAxisOrientation','barChart']; + util.selectiveDeepExtend(fields, this.options, options); - locales: locales, - locale: 'en' - }; - this.options = util.extend({}, this.defaultOptions); - this.offset = 0; + util.mergeOptions(this.options, options,'catmullRom'); + util.mergeOptions(this.options, options,'drawPoints'); + util.mergeOptions(this.options, options,'shaded'); - this._create(); + 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; + } + } + } + } + } - this.setOptions(options); - } + 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); + } + else if (this.options.style == 'points') { + this.type = new Points(this.id, this.options); + } + }; - CurrentTime.prototype = new Component(); /** - * Create the HTML DOM for the current time bar - * @private + * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph + * @param 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%'; - - this.bar = bar; + 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); }; - /** - * Destroy the CurrentTime bar - */ - CurrentTime.prototype.destroy = function () { - this.options.showCurrentTime = false; - this.redraw(); // will remove the bar from the DOM and stop refreshing - - this.body = null; - }; /** - * Set options for the component. Options will be merged in current options. - * @param {Object} options Available parameters: - * {boolean} [showCurrentTime] + * draw the icon for the legend. + * + * @param x + * @param y + * @param JSONcontainer + * @param SVGcontainer + * @param iconWidth + * @param iconHeight */ - CurrentTime.prototype.setOptions = function(options) { - if (options) { - // copy all options that we know - util.selectiveExtend(['showCurrentTime', 'locale', 'locales'], this.options, options); - } - }; + GraphGroup.prototype.drawIcon = function(x, y, JSONcontainer, SVGcontainer, iconWidth, iconHeight) { + var fillHeight = iconHeight * 0.5; + var path, fillPath; - /** - * 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); + 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"); - this.start(); + 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); } - 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); + 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"); + } - 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); + if (this.options.drawPoints.enabled == true) { + DOMutil.drawPoint(x + 0.5 * iconWidth,y, this, JSONcontainer, SVGcontainer); } - this.stop(); } + else { + var barWidth = Math.round(0.3 * iconWidth); + var bar1Height = Math.round(0.4 * iconHeight); + var bar2Height = Math.round(0.75 * iconHeight); - return false; - }; - - /** - * Start auto refreshing the current time bar - */ - 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; - - me.redraw(); + var offset = Math.round((iconWidth - (2 * barWidth))/3); - // start a timer to adjust for the new time - me.currentTimeTimer = setTimeout(update, interval); + 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(); }; - /** - * Stop auto refreshing the current time bar - */ - CurrentTime.prototype.stop = function() { - if (this.currentTimeTimer !== undefined) { - clearTimeout(this.currentTimeTimer); - delete this.currentTimeTimer; - } - }; /** - * 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. + * return the legend entree for this group. + * + * @param iconWidth + * @param iconHeight + * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} */ - CurrentTime.prototype.setCurrentTime = function(time) { - var t = util.convert(time, 'Date').valueOf(); - var now = new Date().valueOf(); - this.offset = t - now; - this.redraw(); - }; + 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}; + } - /** - * Get the current time. - * @return {Date} Returns the current time. - */ - CurrentTime.prototype.getCurrentTime = function() { - return new Date(new Date().valueOf() + this.offset); - }; + GraphGroup.prototype.getYRange = function(groupData) { + return this.type.getYRange(groupData); + } - module.exports = CurrentTime; + GraphGroup.prototype.draw = function(dataset, group, framework) { + this.type.draw(dataset, group, framework); + } + + + module.exports = GraphGroup; /***/ }, -/* 27 */ +/* 25 */ /***/ function(module, exports, __webpack_require__) { - 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); + var stack = __webpack_require__(18); + var RangeItem = __webpack_require__(35); /** - * A custom time bar - * @param {{range: Range, dom: Object}} body - * @param {Object} [options] Available parameters: - * {Boolean} [showCustomTime] - * @constructor CustomTime - * @extends Component + * @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; - function CustomTime (body, options) { - this.body = body; - - // default options - this.defaultOptions = { - showCustomTime: false, - locales: locales, - locale: 'en' + this.dom = {}; + this.props = { + label: { + width: 0, + height: 0 + } }; - this.options = util.extend({}, this.defaultOptions); + this.className = null; - this.customTime = new Date(); - this.eventParams = {}; // stores state parameters while dragging the bar + 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; + }) - // create the DOM this._create(); - this.setOptions(options); + this.setData(data); } - CustomTime.prototype = new Component(); - /** - * 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); - } - }; - - /** - * Create the DOM for the custom time + * Create DOM elements for the group * @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; + Group.prototype._create = function() { + var label = document.createElement('div'); + label.className = 'vlabel'; + this.dom.label = label; - 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 inner = document.createElement('div'); + inner.className = 'inner'; + label.appendChild(inner); + this.dom.inner = inner; - // 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)); - }; + var foreground = document.createElement('div'); + foreground.className = 'group'; + foreground['timeline-group'] = this; + this.dom.foreground = foreground; - /** - * Destroy the CustomTime bar - */ - CustomTime.prototype.destroy = function () { - this.options.showCustomTime = false; - this.redraw(); // will remove the bar from the DOM + this.dom.background = document.createElement('div'); + this.dom.background.className = 'group'; - this.hammer.enable(false); - this.hammer = null; + this.dom.axis = document.createElement('div'); + this.dom.axis.className = 'group'; - this.body = null; + // 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); }; /** - * Repaint the component - * @return {boolean} Returns true if the component is resized + * Set the group data for this group + * @param {Object} data Group data, can contain properties content and className */ - 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); - } - - var x = this.body.util.toScreen(this.customTime); + 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 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); + // update title + this.dom.label.title = data && data.title || ''; - this.bar.style.left = x + 'px'; - this.bar.title = title; + if (!this.dom.inner.firstChild) { + util.addClassName(this.dom.inner, 'hidden'); } else { - // remove the line from the DOM - if (this.bar.parentNode) { - this.bar.parentNode.removeChild(this.bar); - } + util.removeClassName(this.dom.inner, 'hidden'); } - return false; - }; + // 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; + } - /** - * Set custom time. - * @param {Date | number | string} time - */ - CustomTime.prototype.setCustomTime = function(time) { - this.customTime = util.convert(time, 'Date'); - this.redraw(); + // update style + if (this.style) { + util.removeCssText(this.dom.label, this.style); + this.style = null; + } + if (data && data.style) { + util.addCssText(this.dom.label, data.style); + this.style = data.style; + } }; /** - * Retrieve the current custom time. - * @return {Date} customTime + * Get the width of the group label + * @return {number} width */ - CustomTime.prototype.getCustomTime = function() { - return new Date(this.customTime.valueOf()); + Group.prototype.getLabelWidth = function() { + return this.props.label.width; }; - /** - * Start moving horizontally - * @param {Event} event - * @private - */ - CustomTime.prototype._onDragStart = function(event) { - this.eventParams.dragging = true; - this.eventParams.customTime = this.customTime; - - event.stopPropagation(); - event.preventDefault(); - }; /** - * Perform moving operating. - * @param {Event} event - * @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 */ - CustomTime.prototype._onDrag = function (event) { - if (!this.eventParams.dragging) return; + Group.prototype.redraw = function(range, margin, restack) { + var resized = false; - var deltaX = event.gesture.deltaX, - x = this.body.util.toScreen(this.eventParams.customTime) + deltaX, - time = this.body.util.toTime(x); + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - this.setCustomTime(time); + // 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; - // fire a timechange event - this.body.emitter.emit('timechange', { - time: new Date(this.customTime.valueOf()) - }); + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); - event.stopPropagation(); - event.preventDefault(); - }; + restack = true; + } - /** - * Stop moving operating. - * @param {event} event - * @private - */ - CustomTime.prototype._onDragEnd = function (event) { - if (!this.eventParams.dragging) return; + // 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); + } - // fire a timechanged event - this.body.emitter.emit('timechanged', { - time: new Date(this.customTime.valueOf()) - }); + // recalculate the height of the group + var height = this._calculateHeight(margin); - event.stopPropagation(); - event.preventDefault(); - }; + // 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; - module.exports = CustomTime; + // 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; + // apply new height + this.dom.background.style.height = height + 'px'; + this.dom.foreground.style.height = height + 'px'; + this.dom.label.style.height = height + 'px'; -/***/ }, -/* 28 */ -/***/ function(module, exports, __webpack_require__) { + // 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); + } - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(25); - var DataStep = __webpack_require__(16); + return resized; + }; /** - * A horizontal time axis - * @param {Object} [options] See DataAxis.setOptions for the available - * options. - * @constructor DataAxis - * @extends Component - * @param body + * recalculate the height of the group + * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin + * @returns {number} Returns the height + * @private */ - 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} - }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} + 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; + }); } - }; - - this.linegraphOptions = linegraphOptions; - this.linegraphSVG = svg; - this.props = {}; - this.DOMelements = { // dynamic elements - lines: {}, - labels: {}, - title: {} - }; - - this.dom = {}; + height = max + margin.item.vertical / 2; + } + else { + height = margin.axis + margin.item.vertical; + } + height = Math.max(height, this.props.label.height); - this.range = {start:0, end:0}; + return height; + }; - this.options = util.extend({}, this.defaultOptions); - this.conversionFactor = 1; + /** + * Show this group: attach to the DOM + */ + Group.prototype.show = function() { + if (!this.dom.label.parentNode) { + this.itemSet.dom.labelSet.appendChild(this.dom.label); + } - this.setOptions(options); - this.width = Number(('' + this.options.width).replace("px","")); - this.minWidth = this.width; - this.height = this.linegraphSVG.offsetHeight; - this.hidden = false; + if (!this.dom.foreground.parentNode) { + this.itemSet.dom.foreground.appendChild(this.dom.foreground); + } - this.stepPixels = 25; - this.stepPixelsForced = 25; - this.zeroCrossing = -1; + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } - this.lineOffset = 0; - this.master = true; - this.svgElements = {}; - this.iconsRemoved = false; + if (!this.dom.axis.parentNode) { + this.itemSet.dom.axis.appendChild(this.dom.axis); + } + }; + /** + * Hide this group: remove from the DOM + */ + Group.prototype.hide = function() { + var label = this.dom.label; + if (label.parentNode) { + label.parentNode.removeChild(label); + } - this.groups = {}; - this.amountOfGroups = 0; + var foreground = this.dom.foreground; + if (foreground.parentNode) { + foreground.parentNode.removeChild(foreground); + } - // create the HTML DOM - this._create(); + var background = this.dom.background; + if (background.parentNode) { + background.parentNode.removeChild(background); + } - var me = this; - this.body.emitter.on("verticalDrag", function() { - me.dom.lineContainer.style.top = me.body.domProps.scrollTop + 'px'; - }); - } + var axis = this.dom.axis; + if (axis.parentNode) { + axis.parentNode.removeChild(axis); + } + }; - DataAxis.prototype = new Component(); + /** + * Add an item to the group + * @param {Item} item + */ + Group.prototype.add = function(item) { + this.items[item.id] = item; + item.setParent(this); + // 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(); - DataAxis.prototype.addGroup = function(label, graphOptions) { - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + 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.amountOfGroups += 1; }; - DataAxis.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; + 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); + } + sortArray.sort(this.subgroupOrderer); + } + + if (sortArray.length > 0) { + for (var i = 0; i < sortArray.length; i++) { + this.subgroups[sortArray[i].subgroup].index = i; + } + } + } }; - DataAxis.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + Group.prototype.resetSubgroups = function() { + for (var subgroup in this.subgroups) { + if (this.subgroups.hasOwnProperty(subgroup)) { + this.subgroups[subgroup].visible = false; + } } }; + /** + * Remove an item from the group + * @param {Item} item + */ + Group.prototype.remove = function(item) { + delete this.items[item.id]; + item.setParent(null); - 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); + // remove from visible items + var index = this.visibleItems.indexOf(item); + if (index != -1) this.visibleItems.splice(index, 1); - this.minWidth = Number(('' + this.options.width).replace("px","")); + // TODO: also remove from ordered items? + }; - if (redraw == true && this.dom.frame) { - this.hide(); - this.show(); + + /** + * Remove an item from the corresponding DataSet + * @param {Item} item + */ + Group.prototype.removeFromDataSet = function(item) { + this.itemSet.removeItem(item.id); + }; + + + /** + * Reorder the items + */ + 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 + }; + + stack.orderByStart(this.orderedItems.byStart); + stack.orderByEnd(this.orderedItems.byEnd); }; /** - * Create the HTML DOM for the DataAxis + * 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 */ - 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; + 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; - 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 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;} + } - // 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); - }; + // 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); + } + } - DataAxis.prototype._redrawGroupIcons = function () { - DOMutil.prepareElements(this.svgElements); + // we do a binary search for the items that have only start values. + var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); - var x; - var iconWidth = this.options.iconWidth; - var iconHeight = 15; - var iconOffset = 4; - var y = iconOffset + 0.5 * iconHeight; + // 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); + }); - if (this.options.orientation == 'left') { - x = iconOffset; + // 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 { - x = this.width - iconWidth - iconOffset; + // we do a binary search for the items that have defined end times. + var initialPosByEnd = util.binarySearchCustom(orderedItems.byEnd, searchFunction, 'data','end'); + + // 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); + }); } - 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; - } - } + + // 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(); } - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = false; + // 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; }; - DataAxis.prototype._cleanupIcons = function() { - if (this.iconsRemoved == false) { - DOMutil.prepareElements(this.svgElements); - DOMutil.cleanupElements(this.svgElements); - this.iconsRemoved = true; + 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); + } + } + } } } + /** - * Create the HTML DOM for the DataAxis + * 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 */ - 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); + 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 { - this.body.dom.right.appendChild(this.dom.frame); + if (item.displayed) item.hide(); } - } - - if (!this.dom.lineContainer.parentNode) { - this.body.dom.backgroundHorizontal.appendChild(this.dom.lineContainer); - } }; - /** - * 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); - } - - if (this.dom.lineContainer.parentNode) { - this.dom.lineContainer.parentNode.removeChild(this.dom.lineContainer); - } - }; /** - * Set a range (start and end) - * @param end - * @param start - * @param end + * 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 */ - DataAxis.prototype.setRange = function (start, end) { - if (this.master == false && this.options.alignZeros == true && this.zeroCrossing != -1) { - if (start > 0) { - start = 0; + 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.range.start = start; - this.range.end = end; + else { + if (item.displayed) item.hide(); + } }; - /** - * Repaint the component - * @return {boolean} Returns true if the component is resized - */ - 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'; - 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","")); - // 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; + module.exports = Group; - var props = this.props; - var frame = this.dom.frame; - // update classname - frame.className = 'dataaxis'; +/***/ }, +/* 26 */ +/***/ function(module, exports, __webpack_require__) { - // calculate character width and height - this._calculateCharSize(); + var util = __webpack_require__(1); + var Group = __webpack_require__(25); - var orientation = this.options.orientation; - var showMinorLabels = this.options.showMinorLabels; - var showMajorLabels = this.options.showMajorLabels; + /** + * @constructor BackgroundGroup + * @param {Number | String} groupId + * @param {Object} data + * @param {ItemSet} itemSet + */ + function BackgroundGroup (groupId, data, itemSet) { + Group.call(this, groupId, data, itemSet); - // determine the width and height of the elements for the axis - props.minorLabelHeight = showMinorLabels ? props.minorCharHeight : 0; - props.majorLabelHeight = showMajorLabels ? props.majorCharHeight : 0; + this.width = 0; + this.height = 0; + this.top = 0; + this.left = 0; + } - 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; + BackgroundGroup.prototype = Object.create(Group.prototype); - // 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; - } + /** + * 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; - resized = this._redrawLabels(); - resized = this._isResized() || resized; + this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - if (this.options.icons == true) { - this._redrawGroupIcons(); - } - else { - this._cleanupIcons(); - } + // calculate actual size + this.width = this.dom.background.offsetWidth; - this._redrawTitle(orientation); + // 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); } + return resized; }; /** - * Repaint major and minor text labels and vertical grid lines - * @private + * Show this group: attach to the DOM */ - DataAxis.prototype._redrawLabels = function () { - var resized = false; - DOMutil.prepareElements(this.DOMelements.lines); - DOMutil.prepareElements(this.DOMelements.labels); + BackgroundGroup.prototype.show = function() { + if (!this.dom.background.parentNode) { + this.itemSet.dom.background.appendChild(this.dom.background); + } + }; - var orientation = this.options['orientation']; + module.exports = BackgroundGroup; - // 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 - ); +/***/ }, +/* 27 */ +/***/ function(module, exports, __webpack_require__) { - 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)); + var Hammer = __webpack_require__(45); + var util = __webpack_require__(1); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var TimeStep = __webpack_require__(19); + 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.stepPixels = stepPixels; - var amountOfSteps = this.height / stepPixels; - var stepDifference = 0; + var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items + var BACKGROUND = '__background__'; // reserved group id for background items without group - // 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; + /** + * 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 ItemSet(body, options) { + this.body = body; - 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();} - } - } - } - else { - amountOfSteps += 0.25; - } + this.defaultOptions = { + 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 + }, - this.valueAtZero = step.marginEnd; - var marginStartPos = 0; + snap: TimeStep.snap, - // do not draw the first label - var max = 1; + 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); + }, - // Get the number of decimal places - var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; - } + margin: { + item: { + horizontal: 10, + vertical: 10 + }, + axis: 20 + }, + padding: 5 + }; - 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(); + // options is shared by this ItemSet and all its items + this.options = util.extend({}, this.defaultOptions); - 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); - } + // options for getting items from the DataSet with the correct type + this.itemOptions = { + type: {start: 'Date', end: 'Date'} + }; - 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.conversion = { + toScreen: body.util.toScreen, + toTime: body.util.toTime + }; + this.dom = {}; + this.props = {}; + this.hammer = null; + + 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 (this.master == true && step.current == 0) { - this.zeroCrossing = max; + // 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); } + }; - max++; - } + this.items = {}; // object with an Item for every data item + this.groups = {}; // Group object for every group + this.groupIds = []; - if (this.master == false) { - this.conversionFactor = y / (this.valueAtZero - step.current); - } - else { - this.conversionFactor = this.dom.frame.offsetHeight / step.marginRange; - } + this.selection = []; // list with the ids of all selected nodes + this.stackDirty = true; // if true, all items will be restacked on next redraw - // 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; + this.touchParams = {}; // stores properties while dragging + // create the HTML DOM - // 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; - } + this._create(); - return resized; - }; + this.setOptions(options); + } - DataAxis.prototype.convertValue = function (value) { - var invertedValue = this.valueAtZero - value; - var convertedValue = invertedValue * this.conversionFactor; - return convertedValue; + ItemSet.prototype = new Component(); + + // available item types will be registered here + ItemSet.types = { + background: BackgroundItem, + box: BoxItem, + range: RangeItem, + point: PointItem }; /** - * Create a label for the axis at position x - * @private - * @param y - * @param text - * @param orientation - * @param className - * @param characterHeight + * Create the HTML DOM for the ItemSet */ - 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"; - } + ItemSet.prototype._create = function(){ + var frame = document.createElement('div'); + frame.className = 'itemset'; + frame['timeline-itemset'] = this; + this.dom.frame = frame; - label.style.top = y - 0.5 * characterHeight + this.options.labelOffsetY + 'px'; + // create background panel + var background = document.createElement('div'); + background.className = 'background'; + frame.appendChild(background); + this.dom.background = background; - text += ''; + // create foreground panel + var foreground = document.createElement('div'); + foreground.className = 'foreground'; + frame.appendChild(foreground); + this.dom.foreground = foreground; - var largestWidth = Math.max(this.props.majorCharWidth,this.props.minorCharWidth); - if (this.maxLabelSize < text.length * largestWidth) { - this.maxLabelSize = text.length * largestWidth; - } + // create axis panel + var axis = document.createElement('div'); + axis.className = 'axis'; + this.dom.axis = axis; + + // 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(); }; /** - * Create a minor line for the axis at position y - * @param y - * @param orientation - * @param className - * @param offset - * @param width + * 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. */ - 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 = ''; + 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', 'snap']; + util.selectiveExtend(fields, this.options, options); - if (orientation == 'left') { - line.style.left = (this.width - offset) + 'px'; + 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); + } + } + } } - else { - line.style.right = (this.width - offset) + 'px'; + + 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; + } + else if (typeof options.editable === 'object') { + util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + } } - line.style.width = width + 'px'; - line.style.top = y + 'px'; + // 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(); } }; /** - * Create a title for the axis - * @private - * @param orientation + * Mark the ItemSet dirty so it will refresh everything with next redraw. + * Optionally, all items can be marked as dirty and be refreshed. + * @param {{refreshItems: boolean}} [options] */ - 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; - - // 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'; - } + ItemSet.prototype.markDirty = function(options) { + this.groupIds = []; + this.stackDirty = true; - title.style.width = this.height + 'px'; + if (options && options.refreshItems) { + util.forEach(this.items, function (item) { + item.dirty = true; + if (item.displayed) item.redraw(); + }); } - - // we need to clean up in case we did not use all elements. - DOMutil.cleanupElements(this.DOMelements.title); }; + /** + * Destroy the ItemSet + */ + ItemSet.prototype.destroy = function() { + this.hide(); + this.setItems(null); + this.setGroups(null); + this.hammer = null; + this.body = null; + this.conversion = 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 + * Hide the component from the DOM */ - 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; - - this.dom.frame.removeChild(measureCharMinor); + ItemSet.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); } - 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); + // remove the axis with dots + if (this.dom.axis.parentNode) { + this.dom.axis.parentNode.removeChild(this.dom.axis); } - 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; - - this.dom.frame.removeChild(measureCharTitle); + // remove the labelset containing all group labels + if (this.dom.labelSet.parentNode) { + this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); } }; - module.exports = DataAxis; - - -/***/ }, -/* 29 */ -/***/ function(module, exports, __webpack_require__) { - - 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); - /** - * /** - * @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 + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - 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; + 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); } - this.itemsData = []; - this.visible = group.visible === undefined ? true : group.visible; - } + // show labelset containing labels + if (!this.dom.labelSet.parentNode) { + this.body.dom.left.appendChild(this.dom.labelSet); + } + }; /** - * this loads a reference to all items in this group into this group. - * @param {array} items + * 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. */ - 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;}) - } + 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(); } - else { - this.itemsData = []; + + // 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(); + } } }; - /** - * this is used for plotting barcharts, this way, we only have to calculate it once. - * @param pos + * Get the selected items by their id + * @return {Array} ids The ids of the selected items */ - GraphGroup.prototype.setZeroPosition = function(pos) { - this.zeroPosition = pos; + ItemSet.prototype.getSelection = function() { + return this.selection.concat([]); }; - /** - * set the options of the graph group over the default options. - * @param options + * Get the id's of the currently visible items. + * @returns {Array} The ids of the visible items */ - GraphGroup.prototype.setOptions = function(options) { - if (options !== undefined) { - var fields = ['sampling','style','sort','yAxisOrientation','barChart']; - util.selectiveDeepExtend(fields, this.options, options); + 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); - util.mergeOptions(this.options, options,'catmullRom'); - util.mergeOptions(this.options, options,'drawPoints'); - util.mergeOptions(this.options, options,'shaded'); + var ids = []; + for (var groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + var group = this.groups[groupId]; + var rawVisibleItems = group.visibleItems; - 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; - } + // 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); } } } } - 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); - } - else if (this.options.style == 'points') { - this.type = new Points(this.id, this.options); - } + return ids; }; - /** - * this updates the current group class with the latest group dataset entree, used in _updateGroup in linegraph - * @param group + * Deselect a selected item + * @param {String | Number} id + * @private */ - 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); + 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; + } + } }; - /** - * draw the icon for the legend. - * - * @param x - * @param y - * @param JSONcontainer - * @param SVGcontainer - * @param iconWidth - * @param iconHeight + * Repaint the component + * @return {boolean} Returns true if the component is resized */ - 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"); - } + 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; - 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); + // 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; - var offset = Math.round((iconWidth - (2 * barWidth))/3); + // update class name + frame.className = 'itemset' + (editable ? ' editable' : ''); - 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); - } - }; + // 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; - /** - * return the legend entree for this group. - * - * @param iconWidth - * @param iconHeight - * @returns {{icon: HTMLElement, label: (group.content|*|string), orientation: (.options.yAxisOrientation|*)}} - */ - 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}; - } + 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; - GraphGroup.prototype.getYRange = function(groupData) { - return this.type.getYRange(groupData); - } + // redraw the background group + this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); - GraphGroup.prototype.draw = function(dataset, group, framework) { - this.type.draw(dataset, group, framework); - } + // 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); - module.exports = GraphGroup; + // 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'; -/***/ }, -/* 30 */ -/***/ function(module, exports, __webpack_require__) { + // check if this component is resized + resized = this._isResized() || resized; - var util = __webpack_require__(1); - var stack = __webpack_require__(18); - var RangeItem = __webpack_require__(24); + return resized; + }; /** - * @constructor Group - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * Get the first group, aligned with the axis + * @return {Group | null} firstGroup + * @private */ - 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.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(); + 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]; - this.setData(data); - } + return firstGroup || null; + }; /** - * Create DOM elements for the group - * @private + * Create or delete the group holding all ungrouped items. This group is used when + * there are no groups specified. + * @protected */ - Group.prototype._create = function() { - var label = document.createElement('div'); - label.className = 'vlabel'; - this.dom.label = label; + ItemSet.prototype._updateUngrouped = function() { + var ungrouped = this.groups[UNGROUPED]; + var background = this.groups[BACKGROUND]; + var item, itemId; - var inner = document.createElement('div'); - inner.className = 'inner'; - label.appendChild(inner); - this.dom.inner = inner; + if (this.groupsData) { + // remove the group holding all ungrouped items + if (ungrouped) { + ungrouped.hide(); + delete this.groups[UNGROUPED]; - var foreground = document.createElement('div'); - foreground.className = 'group'; - foreground['timeline-group'] = this; - this.dom.foreground = foreground; + 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; - this.dom.background = document.createElement('div'); - this.dom.background.className = 'group'; + for (itemId in this.items) { + if (this.items.hasOwnProperty(itemId)) { + item = this.items[itemId]; + ungrouped.add(item); + } + } - this.dom.axis = document.createElement('div'); - this.dom.axis.className = 'group'; + ungrouped.show(); + } + } + }; - // 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); + /** + * Get the element for the labelset + * @return {HTMLElement} labelSet + */ + ItemSet.prototype.getLabelSet = function() { + return this.dom.labelSet; }; /** - * Set the group data for this group - * @param {Object} data Group data, can contain properties content and className + * Set items + * @param {vis.DataSet | null} items */ - Group.prototype.setData = function(data) { - // update contents - var content = data && data.content; - if (content instanceof Element) { - this.dom.inner.appendChild(content); + ItemSet.prototype.setItems = function(items) { + var me = this, + ids, + oldItemsData = this.itemsData; + + // replace the dataset + if (!items) { + this.itemsData = null; } - else if (content !== undefined && content !== null) { - this.dom.inner.innerHTML = content; + else if (items instanceof DataSet || items instanceof DataView) { + this.itemsData = items; } else { - this.dom.inner.innerHTML = this.groupId || ''; // groupId can be null + throw new TypeError('Data must be an instance of DataSet or DataView'); } - // update title - this.dom.label.title = data && data.title || ''; + if (oldItemsData) { + // unsubscribe from old dataset + util.forEach(this.itemListeners, function (callback, event) { + oldItemsData.off(event, callback); + }); - if (!this.dom.inner.firstChild) { - util.addClassName(this.dom.inner, 'hidden'); - } - else { - util.removeClassName(this.dom.inner, 'hidden'); + // remove all drawn items + ids = oldItemsData.getIds(); + this._onRemove(ids); } - // 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; - } + if (this.itemsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.itemListeners, function (callback, event) { + me.itemsData.on(event, callback, id); + }); - // update style - if (this.style) { - util.removeCssText(this.dom.label, this.style); - this.style = null; - } - if (data && data.style) { - util.addCssText(this.dom.label, data.style); - this.style = data.style; + // add all new items + ids = this.itemsData.getIds(); + this._onAdd(ids); + + // update the group holding all ungrouped items + this._updateUngrouped(); } }; /** - * Get the width of the group label - * @return {number} width + * Get the current items + * @returns {vis.DataSet | null} */ - Group.prototype.getLabelWidth = function() { - return this.props.label.width; + ItemSet.prototype.getItems = function() { + return this.itemsData; }; - /** - * 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 + * Set groups + * @param {vis.DataSet} groups */ - Group.prototype.redraw = function(range, margin, restack) { - var resized = false; - - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - - // 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; + ItemSet.prototype.setGroups = function(groups) { + var me = this, + ids; - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); + // unsubscribe from current dataset + if (this.groupsData) { + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.unsubscribe(event, callback); }); - restack = true; + // remove all drawn groups + ids = this.groupsData.getIds(); + this.groupsData = null; + this._onRemoveGroups(ids); // note: this will cause a redraw } - // reposition visible items vertically - if (this.itemSet.options.stack) { // TODO: ugly way to access options... - stack.stack(this.visibleItems, margin, restack); + // replace the dataset + if (!groups) { + this.groupsData = null; } - else { // no stacking - stack.nostack(this.visibleItems, margin, this.subgroups); + else if (groups instanceof DataSet || groups instanceof DataView) { + this.groupsData = groups; + } + else { + throw new TypeError('Data must be an instance of DataSet or DataView'); } - // recalculate the height of the group - var height = this._calculateHeight(margin); + if (this.groupsData) { + // subscribe to new dataset + var id = this.id; + util.forEach(this.groupListeners, function (callback, event) { + me.groupsData.on(event, callback, id); + }); - // 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; + // draw all ms + ids = this.groupsData.getIds(); + this._onAddGroups(ids); + } - // 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; + // update the group holding all ungrouped items + this._updateUngrouped(); - // 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 the order of all items in each group + this._order(); - // 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.body.emitter.emit('change', {queue: true}); + }; - return resized; + /** + * Get the current groups + * @returns {vis.DataSet | null} groups + */ + ItemSet.prototype.getGroups = function() { + return this.groupsData; }; /** - * recalculate the height of the group - * @param {{item: {horizontal: number, vertical: number}, axis: number}} margin - * @returns {number} Returns the height - * @private + * Remove an item by its id + * @param {String | Number} id */ - 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; - //} + 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); } }); - 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; }; /** - * Show this group: attach to the DOM + * Get the time of an item based on it's data and options.type + * @param {Object} itemData + * @returns {string} Returns the type + * @private */ - Group.prototype.show = function() { - if (!this.dom.label.parentNode) { - this.itemSet.dom.labelSet.appendChild(this.dom.label); - } - - if (!this.dom.foreground.parentNode) { - this.itemSet.dom.foreground.appendChild(this.dom.foreground); - } - - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); - } - - if (!this.dom.axis.parentNode) { - this.itemSet.dom.axis.appendChild(this.dom.axis); - } + ItemSet.prototype._getType = function (itemData) { + return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); }; + /** - * Hide this group: remove from the DOM + * Get the group id for an item + * @param {Object} itemData + * @returns {string} Returns the groupId + * @private */ - Group.prototype.hide = function() { - var label = this.dom.label; - if (label.parentNode) { - label.parentNode.removeChild(label); - } - - var foreground = this.dom.foreground; - if (foreground.parentNode) { - foreground.parentNode.removeChild(foreground); - } - - var background = this.dom.background; - if (background.parentNode) { - background.parentNode.removeChild(background); + ItemSet.prototype._getGroupId = function (itemData) { + var type = this._getType(itemData); + if (type == 'background' && itemData.group == undefined) { + return BACKGROUND; } - - var axis = this.dom.axis; - if (axis.parentNode) { - axis.parentNode.removeChild(axis); + else { + return this.groupsData ? itemData.group : UNGROUPED; } }; /** - * Add an item to the group - * @param {Item} item + * Handle updated items + * @param {Number[]} ids + * @protected */ - Group.prototype.add = function(item) { - this.items[item.id] = item; - item.setParent(this); + ItemSet.prototype._onUpdate = function(ids) { + var me = this; - // 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(); + ids.forEach(function (id) { + var itemData = me.itemsData.get(id, me.itemOptions); + var item = me.items[id]; + var type = me._getType(itemData); - 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); - } - }; + var constructor = ItemSet.types[type]; - 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 (item) { + // update item + if (!constructor || !(item instanceof constructor)) { + // item type has changed, delete the item and recreate it + me._removeItem(item); + item = null; } - 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); + else { + me._updateItem(item, itemData); } - sortArray.sort(this.subgroupOrderer); } - if (sortArray.length > 0) { - for (var i = 0; i < sortArray.length; i++) { - this.subgroups[sortArray[i].subgroup].index = i; + 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 + '"'); } } - } - }; + }); - Group.prototype.resetSubgroups = function() { - for (var subgroup in this.subgroups) { - if (this.subgroups.hasOwnProperty(subgroup)) { - this.subgroups[subgroup].visible = false; - } - } + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); }; /** - * Remove an item from the group - * @param {Item} item + * Handle added items + * @param {Number[]} ids + * @protected */ - Group.prototype.remove = function(item) { - delete this.items[item.id]; - item.setParent(null); + ItemSet.prototype._onAdd = ItemSet.prototype._onUpdate; - // remove from visible items - var index = this.visibleItems.indexOf(item); - if (index != -1) this.visibleItems.splice(index, 1); + /** + * 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); + } + }); - // TODO: also remove from ordered items? + if (count) { + // update order + this._order(); + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change', {queue: true}); + } }; - /** - * Remove an item from the corresponding DataSet - * @param {Item} item + * Update the order of item in all groups + * @private */ - Group.prototype.removeFromDataSet = function(item) { - this.itemSet.removeItem(item.id); + 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(); + }); }; - /** - * Reorder the items + * Handle updated groups + * @param {Number[]} ids + * @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 - }; - - stack.orderByStart(this.orderedItems.byStart); - stack.orderByEnd(this.orderedItems.byEnd); + ItemSet.prototype._onUpdateGroups = function(ids) { + this._onAddGroups(ids); }; - /** - * 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. + * Handle changed groups (added or updated) + * @param {Number[]} ids * @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; - - // 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;} - } - - // 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); - } - } - - // we do a binary search for the items that have only start values. - var initialPosByStart = util.binarySearchCustom(orderedItems.byStart, searchFunction, 'data','start'); - - // 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); - }); - - // 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'); - - // 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); - }); - } - + ItemSet.prototype._onAddGroups = function(ids) { + var me = this; - // 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(); - } + ids.forEach(function (id) { + var groupData = me.groupsData.get(id); + var group = me.groups[id]; - // 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" : "") - // } - //} + if (!group) { + // check for reserved ids + if (id == UNGROUPED || id == BACKGROUND) { + throw new Error('Illegal group id. ' + id + ' is a reserved id.'); + } - return visibleItems; - }; + var groupOptions = Object.create(me.options); + util.extend(groupOptions, { + height: null + }); - Group.prototype._traceVisible = function (initialPos, items, visibleItems, visibleItemsLookup, breakCondition) { - var item; - var i; + group = new Group(id, groupData, me); + me.groups[id] = group; - 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); + // 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); + } } } - } - 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); - } - } + group.order(); + group.show(); } - } - } + else { + // update group + group.setData(groupData); + } + }); + this.body.emitter.emit('change', {queue: true}); + }; /** - * 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 + * Handle removed groups + * @param {Number[]} ids * @private */ - 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(); + 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}); + }; /** - * 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 + * Reorder the groups if needed + * @return {boolean} changed * @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); + ItemSet.prototype._orderGroups = function () { + if (this.groupsData) { + // reorder the groups + var groupIds = this.groupsData.getIds({ + order: this.options.groupOrder + }); + + 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(); + }); + + // show the groups again, attach them to the DOM in correct order + groupIds.forEach(function (groupId) { + groups[groupId].show(); + }); + + this.groupIds = groupIds; } + + return changed; } else { - if (item.displayed) item.hide(); + return false; } }; + /** + * Add a new item + * @param {Item} item + * @private + */ + 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); + }; - module.exports = Group; + /** + * Update an existing item + * @param {Item} item + * @param {Object} itemData + * @private + */ + ItemSet.prototype._updateItem = function(item, itemData) { + var oldGroupId = item.data.group; + // update the items data (will redraw the item when displayed) + item.setData(itemData); -/***/ }, -/* 31 */ -/***/ function(module, exports, __webpack_require__) { + // update group + if (oldGroupId != item.data.group) { + var oldGroup = this.groups[oldGroupId]; + if (oldGroup) oldGroup.remove(item); - var util = __webpack_require__(1); - var Group = __webpack_require__(30); + var groupId = this._getGroupId(item.data); + var group = this.groups[groupId]; + if (group) group.add(item); + } + }; /** - * @constructor BackgroundGroup - * @param {Number | String} groupId - * @param {Object} data - * @param {ItemSet} itemSet + * 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 */ - function BackgroundGroup (groupId, data, itemSet) { - Group.call(this, groupId, data, itemSet); + ItemSet.prototype._removeItem = function(item) { + // remove from DOM + item.hide(); - this.width = 0; - this.height = 0; - this.top = 0; - this.left = 0; - } + // remove from items + delete this.items[item.id]; - BackgroundGroup.prototype = Object.create(Group.prototype); + // remove from selection + var index = this.selection.indexOf(item.id); + if (index != -1) this.selection.splice(index, 1); + + // remove from group + item.parent && item.parent.remove(item); + }; /** - * 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 + * Create an array containing all items being a range (having an end date) + * @param array + * @returns {Array} + * @private */ - BackgroundGroup.prototype.redraw = function(range, margin, restack) { - var resized = false; - - this.visibleItems = this._updateVisibleItems(this.orderedItems, this.visibleItems, range); - - // calculate actual size - this.width = this.dom.background.offsetWidth; - - // apply new height (just always zero for BackgroundGroup - this.dom.background.style.height = '0'; + ItemSet.prototype._constructByEndArray = function(array) { + var endArray = []; - // 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); + for (var i = 0; i < array.length; i++) { + if (array[i] instanceof RangeItem) { + endArray.push(array[i]); + } } + 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 + * @private + */ + ItemSet.prototype._onTouch = function (event) { + // store the touched item, used in _onDragStart + this.touchParams.item = ItemSet.itemFromTarget(event); }; /** - * Show this group: attach to the DOM + * Start dragging the selected events + * @param {Event} event + * @private */ - BackgroundGroup.prototype.show = function() { - if (!this.dom.background.parentNode) { - this.itemSet.dom.background.appendChild(this.dom.background); + ItemSet.prototype._onDragStart = function (event) { + if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { + return; } - }; - module.exports = BackgroundGroup; + 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; -/***/ }, -/* 32 */ -/***/ function(module, exports, __webpack_require__) { + if (dragLeftItem) { + props = { + item: dragLeftItem, + initialX: event.gesture.center.clientX + }; - var Hammer = __webpack_require__(45); - var util = __webpack_require__(1); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var TimeStep = __webpack_require__(19); - 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); + 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; + } + this.touchParams.itemProps = [props]; + } + else if (dragRightItem) { + props = { + item: dragRightItem, + initialX: event.gesture.center.clientX + }; - var UNGROUPED = '__ungrouped__'; // reserved group id for ungrouped items - var BACKGROUND = '__background__'; // reserved group id for background items without group + 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; + } + + 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 + }; + + if (me.options.editable.updateTime) { + if ('start' in item.data) { + props.start = item.data.start.valueOf(); + + if ('end' in item.data) { + // we store a duration here in order not to change the width + // of the item when moving it. + props.duration = item.data.end.valueOf() - props.start; + } + } + } + if (me.options.editable.updateGroup) { + if ('group' in item.data) props.group = item.data.group; + } + + return props; + }); + } + + event.stopPropagation(); + } + }; /** - * 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 + * Drag selected items + * @param {Event} event + * @private */ - function ItemSet(body, options) { - this.body = body; + ItemSet.prototype._onDrag = function (event) { + event.preventDefault(); - this.defaultOptions = { - type: null, // 'box', 'point', 'range', 'background' - orientation: 'bottom', // 'top' or 'bottom' - align: 'auto', // alignment of box items - stack: true, - groupOrder: null, + if (this.touchParams.itemProps) { + var me = this; + var snap = this.options.snap || null; + var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; + var scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - selectable: true, - editable: { - updateTime: false, - updateGroup: false, - add: false, - remove: false - }, + // 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; - snap: TimeStep.snap, + if ('start' in props) { + var start = new Date(props.start + offset); + newProps.start = snap ? snap(start, scale, step) : start; + } - 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); - }, + if ('end' in props) { + var end = new Date(props.end + offset); + newProps.end = snap ? snap(end, scale, step) : end; + } + else if ('duration' in props) { + newProps.end = new Date(newProps.start.valueOf() + props.duration); + } - margin: { - item: { - horizontal: 10, - vertical: 10 - }, - axis: 20 - }, - padding: 5 - }; + if ('group' in props) { + // drag from one group to another + var group = me.groupFromTarget(event); + newProps.group = group && group.groupId; + } - // options is shared by this ItemSet and all its items - this.options = util.extend({}, this.defaultOptions); + // 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); + } + }); + }); - // options for getting items from the DataSet with the correct type - this.itemOptions = { - type: {start: 'Date', end: 'Date'} - }; + this.stackDirty = true; // force re-stacking of all items next redraw + this.body.emitter.emit('change'); - this.conversion = { - toScreen: body.util.toScreen, - toTime: body.util.toTime - }; - this.dom = {}; - this.props = {}; - this.hammer = null; + event.stopPropagation(); + } + }; - var me = this; - this.itemsData = null; // DataSet - this.groupsData = null; // DataSet + /** + * Update an items properties + * @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) + } + }; - // 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); - } - }; + /** + * Move an item to another group + * @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(); - // 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.data.group = group.groupId; + } + }; - this.items = {}; // object with an Item for every data item - this.groups = {}; // Group object for every group - this.groupIds = []; + /** + * End of dragging selected items + * @param {Event} event + * @private + */ + ItemSet.prototype._onDragEnd = function (event) { + event.preventDefault() - this.selection = []; // list with the ids of all selected nodes - this.stackDirty = true; // if true, all items will be restacked on next redraw + if (this.touchParams.itemProps) { + // prepare a change set for the changed items + var changes = [], + me = this, + dataset = this.itemsData.getDataSet(); - this.touchParams = {}; // stores properties while dragging - // create the HTML DOM + 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); - this._create(); + 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; + } - this.setOptions(options); - } + // 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); - ItemSet.prototype = new Component(); + me.stackDirty = true; // force re-stacking of all items next redraw + me.body.emitter.emit('change'); + } + }); + } + }); - // available item types will be registered here - ItemSet.types = { - background: BackgroundItem, - box: BoxItem, - range: RangeItem, - point: PointItem + // apply the changes to the data (if there are changes) + if (changes.length) { + dataset.update(changes); + } + + event.stopPropagation(); + } }; /** - * Create the HTML DOM for the ItemSet + * Handle selecting/deselecting an item when tapping it + * @param {Event} event + * @private */ - ItemSet.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'itemset'; - frame['timeline-itemset'] = this; - this.dom.frame = frame; + ItemSet.prototype._onSelectItem = function (event) { + if (!this.options.selectable) return; - // create background panel - var background = document.createElement('div'); - background.className = 'background'; - frame.appendChild(background); - this.dom.background = background; + 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; + } - // create foreground panel - var foreground = document.createElement('div'); - foreground.className = 'foreground'; - frame.appendChild(foreground); - this.dom.foreground = foreground; + var oldSelection = this.getSelection(); - // create axis panel - var axis = document.createElement('div'); - axis.className = 'axis'; - this.dom.axis = axis; + var item = ItemSet.itemFromTarget(event); + var selection = item ? [item.id] : []; + this.setSelection(selection); - // create labelset - var labelSet = document.createElement('div'); - labelSet.className = 'labelset'; - this.dom.labelSet = labelSet; + var newSelection = this.getSelection(); - // create ungrouped Group - this._updateUngrouped(); + // 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 + }); + } + }; - // create background Group - var backgroundGroup = new BackgroundGroup(BACKGROUND, null, this); - backgroundGroup.show(); - this.groups[BACKGROUND] = backgroundGroup; + /** + * 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; - // 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 - }); + var me = this, + snap = this.options.snap || null, + item = ItemSet.itemFromTarget(event); - // 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)); + if (item) { + // update item - // single select (or unselect) when tapping an item - this.hammer.on('tap', this._onSelectItem.bind(this)); + // 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 scale = this.body.util.getScale(); + var step = this.body.util.getStep(); - // multi select when holding mouse/touch, or on ctrl+click - this.hammer.on('hold', this._onMultiSelectItem.bind(this)); + var newItem = { + start: snap ? snap(start, scale, step) : start, + content: 'new item' + }; - // add item on doubletap - this.hammer.on('doubletap', this._onAddItem.bind(this)); + // 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, scale, step) : end; + } - // attach to the DOM - this.show(); + newItem[this.itemsData._fieldId] = util.randomUUID(); + + var group = this.groupFromTarget(event); + if (group) { + newItem.group = group.groupId; + } + + // 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? + } + }); + } }; /** - * 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. + * Handle selecting/deselecting multiple items when holding an item + * @param {Event} event + * @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', 'snap']; - util.selectiveExtend(fields, this.options, options); + ItemSet.prototype._onMultiSelectItem = function (event) { + if (!this.options.selectable) return; - 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 selection, + item = ItemSet.itemFromTarget(event); + + if (item) { + // multi select items + selection = this.getSelection(); // current selection + + 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 + + // determine the selection range + selection.push(item.id); + var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + + // 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; + + if (start >= range.min && end <= range.max) { + selection.push(_item.id); // do not use id but item.id, id itself is stringified } } } } - - 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; + 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 if (typeof options.editable === 'object') { - util.selectiveExtend(['updateTime', 'updateGroup', 'add', 'remove'], this.options.editable, options.editable); + else { + // item is already selected -> deselect it + selection.splice(index, 1); } } - // 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(); - } - }; - - /** - * Mark the ItemSet dirty so it will refresh everything with next redraw. - * Optionally, all items can be marked as dirty and be refreshed. - * @param {{refreshItems: boolean}} [options] - */ - ItemSet.prototype.markDirty = function(options) { - this.groupIds = []; - this.stackDirty = true; + this.setSelection(selection); - if (options && options.refreshItems) { - util.forEach(this.items, function (item) { - item.dirty = true; - if (item.displayed) item.redraw(); + this.body.emitter.emit('select', { + items: this.getSelection() }); } }; /** - * Destroy the ItemSet + * 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 */ - ItemSet.prototype.destroy = function() { - this.hide(); - this.setItems(null); - this.setGroups(null); - - this.hammer = null; - - this.body = null; - this.conversion = null; - }; + ItemSet._getItemRange = function(itemsData) { + var max = null; + var min = 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); - } + itemsData.forEach(function (data) { + if (min == null || data.start < min) { + min = data.start; + } - // remove the axis with dots - if (this.dom.axis.parentNode) { - this.dom.axis.parentNode.removeChild(this.dom.axis); - } + if (data.end != undefined) { + if (max == null || data.end > max) { + max = data.end; + } + } + else { + if (max == null || data.start > max) { + max = data.start; + } + } + }); - // remove the labelset containing all group labels - if (this.dom.labelSet.parentNode) { - this.dom.labelSet.parentNode.removeChild(this.dom.labelSet); + return { + min: min, + max: max } }; /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * 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.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); + ItemSet.itemFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-item')) { + return target['timeline-item']; + } + target = target.parentNode; } - // show labelset containing labels - if (!this.dom.labelSet.parentNode) { - this.body.dom.left.appendChild(this.dom.labelSet); - } + return null; }; /** - * 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. + * 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 */ - ItemSet.prototype.setSelection = function(ids) { - var i, ii, id, item; - - if (ids == undefined) ids = []; - if (!Array.isArray(ids)) ids = [ids]; + ItemSet.prototype.groupFromTarget = function(event) { + // TODO: cleanup when the new solution is stable (also on mobile) + //var target = event.target; + //while (target) { + // if (target.hasOwnProperty('timeline-group')) { + // return target['timeline-group']; + // } + // target = target.parentNode; + //} + // - // 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(); - } + var clientY = event.gesture.center.clientY; + for (var i = 0; i < this.groupIds.length; i++) { + var groupId = this.groupIds[i]; + var group = this.groups[groupId]; + var foreground = group.dom.foreground; + var top = util.getAbsoluteTop(foreground); + if (clientY > top && clientY < top + foreground.offsetHeight) { + return group; + } - // 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(); + if (this.options.orientation === 'top') { + if (i === this.groupIds.length - 1 && clientY > top) { + return group; + } + } + else { + if (i === 0 && clientY < top + foreground.offset) { + return group; + } } } - }; - /** - * Get the selected items by their id - * @return {Array} ids The ids of the selected items - */ - ItemSet.prototype.getSelection = function() { - return this.selection.concat([]); + return null; }; /** - * Get the id's of the currently visible items. - * @returns {Array} The ids of the visible items + * 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.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); - } - } + ItemSet.itemSetFromTarget = function(event) { + var target = event.target; + while (target) { + if (target.hasOwnProperty('timeline-itemset')) { + return target['timeline-itemset']; } + target = target.parentNode; } - return ids; + return null; }; + module.exports = ItemSet; + + +/***/ }, +/* 28 */ +/***/ function(module, exports, __webpack_require__) { + + var util = __webpack_require__(1); + var DOMutil = __webpack_require__(2); + var Component = __webpack_require__(20); + /** - * Deselect a selected item - * @param {String | Number} id - * @private + * Legend for Graph2d */ - 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; + 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 } } - }; - - /** - * 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.side = side; + this.options = util.extend({},this.defaultOptions); + this.linegraphOptions = linegraphOptions; - // 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.svgElements = {}; + this.dom = {}; + this.groups = {}; + this.amountOfGroups = 0; + this._create(); - // update class name - frame.className = 'itemset' + (editable ? ' editable' : ''); + this.setOptions(options); + } - // reorder the groups (if needed) - resized = this._orderGroups() || resized; + Legend.prototype = new Component(); - // 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; + Legend.prototype.clear = function() { + this.groups = {}; + this.amountOfGroups = 0; + } - 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; + Legend.prototype.addGroup = function(label, graphOptions) { - // redraw the background group - this.groups[BACKGROUND].redraw(range, nonFirstMargin, restack); + if (!this.groups.hasOwnProperty(label)) { + this.groups[label] = graphOptions; + } + this.amountOfGroups += 1; + }; - // 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; + Legend.prototype.updateGroup = function(label, graphOptions) { + this.groups[label] = graphOptions; + }; - // update frame height - frame.style.height = asSize(height); + Legend.prototype.removeGroup = function(label) { + if (this.groups.hasOwnProperty(label)) { + delete this.groups[label]; + this.amountOfGroups -= 1; + } + }; - // calculate actual size - this.props.width = frame.offsetWidth; - this.props.height = height; + 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"; - // 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'; + this.dom.textArea = document.createElement('div'); + this.dom.textArea.className = 'legendText'; + this.dom.textArea.style.position = "relative"; + this.dom.textArea.style.top = "0px"; - // check if this component is resized - resized = this._isResized() || resized; + 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%'; - return resized; + this.dom.frame.appendChild(this.svg); + this.dom.frame.appendChild(this.dom.textArea); }; /** - * Get the first group, aligned with the axis - * @return {Group | null} firstGroup - * @private + * Hide the component from the DOM */ - 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; + Legend.prototype.hide = function() { + // remove the frame containing the items + if (this.dom.frame.parentNode) { + this.dom.frame.parentNode.removeChild(this.dom.frame); + } }; /** - * Create or delete the group holding all ungrouped items. This group is used when - * there are no groups specified. - * @protected + * Show the component in the DOM (when not already visible). + * @return {Boolean} changed */ - ItemSet.prototype._updateUngrouped = function() { - var ungrouped = this.groups[UNGROUPED]; - var background = this.groups[BACKGROUND]; - var item, itemId; + Legend.prototype.show = function() { + // show frame containing the items + if (!this.dom.frame.parentNode) { + this.body.dom.center.appendChild(this.dom.frame); + } + }; - if (this.groupsData) { - // remove the group holding all ungrouped items - if (ungrouped) { - ungrouped.hide(); - delete this.groups[UNGROUPED]; + Legend.prototype.setOptions = function(options) { + var fields = ['enabled','orientation','icons','left','right']; + util.selectiveDeepExtend(fields, this.options, options); + }; - 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(); - } + 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 { - // 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; + 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 = ''; + } - for (itemId in this.items) { - if (this.items.hasOwnProperty(itemId)) { - item = this.items[itemId]; - ungrouped.add(item); + 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'; + } + }; - ungrouped.show(); + 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 + /** - * Get the element for the labelset - * @return {HTMLElement} labelSet + * This is the constructor of the LineGraph. It requires a Timeline body and options. + * + * @param body + * @param options + * @constructor */ - ItemSet.prototype.getLabelSet = function() { - return this.dom.labelSet; + 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: {} + } + }; + + // 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); + } + }; + + // 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); + } + }; + + 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.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); + }); + + // 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'); + + } + + LineGraph.prototype = new Component(); + + /** + * Create the HTML DOM for the ItemSet + */ + 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(); + }; + + /** + * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. + * @param {object} options + */ + 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'); + + 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; + } + } + } + } + + if (this.yAxisLeft) { + if (options.dataAxis !== undefined) { + this.yAxisLeft.setOptions(this.options.dataAxis); + this.yAxisRight.setOptions(this.options.dataAxis); + } + } + + if (this.legendLeft) { + if (options.legend !== undefined) { + this.legendLeft.setOptions(this.options.legend); + this.legendRight.setOptions(this.options.legend); + } + } + + if (this.groups.hasOwnProperty(UNGROUPED)) { + this.groups[UNGROUPED].setOptions(options); + } + } + + // this is used to redraw the graph if the visibility of the groups is changed. + if (this.dom.frame) { + this.redraw(true); + } + }; + + /** + * 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); + } + }; + + + /** + * 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); + } }; + /** * Set items * @param {vis.DataSet | null} items */ - ItemSet.prototype.setItems = function(items) { + LineGraph.prototype.setItems = function(items) { var me = this, - ids, - oldItemsData = this.itemsData; + ids, + oldItemsData = this.itemsData; // replace the dataset if (!items) { @@ -12975,27 +13213,20 @@ 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 */ - ItemSet.prototype.setGroups = function(groups) { - var me = this, - ids; + LineGraph.prototype.setGroups = function(groups) { + var me = this; + var ids; // unsubscribe from current dataset if (this.groupsData) { @@ -13031,2575 +13262,2344 @@ return /******/ (function(modules) { // webpackBootstrap ids = this.groupsData.getIds(); this._onAddGroups(ids); } - - // 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}); + this._onUpdate(); }; - /** - * 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 + * Update the data + * @param [ids] + * @private */ - 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); - } - }); + 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);}; + /** - * Get the time of an item based on it's data and options.type - * @param {Object} itemData - * @returns {string} Returns the type + * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph + * @param {Array} groupIds * @private */ - ItemSet.prototype._getType = function (itemData) { - return itemData.type || this.options.type || (itemData.end ? 'range' : 'box'); + 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); }; /** - * Get the group id for an item - * @param {Object} itemData - * @returns {string} Returns the groupId + * update a group object with the group dataset entree + * + * @param group + * @param groupId * @private */ - ItemSet.prototype._getGroupId = function (itemData) { - var type = this._getType(itemData); - if (type == 'background' && itemData.group == undefined) { - return BACKGROUND; + 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]); + } } else { - return this.groupsData ? itemData.group : UNGROUPED; + 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]); + } } + this.legendLeft.redraw(); + this.legendRight.redraw(); }; + /** - * Handle updated items - * @param {Number[]} ids - * @protected + * this updates all groups, it is used when there is an update the the itemset. + * + * @private */ - 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; - } - else { - me._updateItem(item, itemData); + LineGraph.prototype._updateAllGroupData = function () { + if (this.itemsData != null) { + var groupsContent = {}; + var groupId; + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + 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;}'); + 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 { - throw new TypeError('Unknown item type "' + type + '"'); + } + for (groupId in this.groups) { + if (this.groups.hasOwnProperty(groupId)) { + this.groups[groupId].setItems(groupsContent[groupId]); } } - }); - - 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 + * 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 */ - 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); + 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 (count) { - // update order - this._order(); - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change', {queue: true}); + 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); } - }; - /** - * 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(); - }); + this.legendLeft.redraw(); + this.legendRight.redraw(); }; - /** - * Handle updated groups - * @param {Number[]} ids - * @private - */ - ItemSet.prototype._onUpdateGroups = function(ids) { - this._onAddGroups(ids); - }; /** - * Handle changed groups (added or updated) - * @param {Number[]} ids - * @private + * Redraw the component, mandatory function + * @return {boolean} Returns true if the component is resized */ - ItemSet.prototype._onAddGroups = function(ids) { - var me = this; + LineGraph.prototype.redraw = function(forceGraphUpdate) { + var resized = false; - ids.forEach(function (id) { - var groupData = me.groupsData.get(id); - var group = me.groups[id]; + // calculate actual size and position + this.props.width = this.dom.frame.offsetWidth; + this.props.height = this.body.domProps.centerContainer.height; - if (!group) { - // check for reserved ids - if (id == UNGROUPED || id == BACKGROUND) { - throw new Error('Illegal group id. ' + id + ' is a reserved id.'); - } + // update the graph if there is no lastWidth or with, used for the initial draw + if (this.lastWidth === undefined && this.props.width) { + forceGraphUpdate = true; + } - var groupOptions = Object.create(me.options); - util.extend(groupOptions, { - height: null - }); + // check if this component is resized + resized = this._isResized() || resized; - group = new Group(id, groupData, me); - me.groups[id] = group; + // 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; - // 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); - } - } - } - group.order(); - group.show(); + // 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; } - else { - // update group - group.setData(groupData); + } + + // 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; + } + else { + this.svg.style.height = ('' + this.options.graphHeight).replace('px','') + 'px'; + } - this.body.emitter.emit('change', {queue: true}); + // 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'; + } + } + } + + this.legendLeft.redraw(); + this.legendRight.redraw(); + return resized; }; + /** - * Handle removed groups - * @param {Number[]} ids - * @private + * Update and redraw the graph. + * */ - ItemSet.prototype._onRemoveGroups = function(ids) { - var groups = this.groups; - ids.forEach(function (id) { - var group = groups[id]; + 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; - if (group) { - group.hide(); - delete groups[id]; + // 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); - this.markDirty(); + // apply sampling, if disabled, it will pass through this function. + this._applySampling(groupIds, groupsData); - this.body.emitter.emit('change', {queue: true}); - }; + // we transform the X coordinates to detect collisions + for (i = 0; i < groupIds.length; i++) { + preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); + } - /** - * Reorder the groups if needed - * @return {boolean} changed - * @private - */ - ItemSet.prototype._orderGroups = function () { - if (this.groupsData) { - // reorder the groups - var groupIds = this.groupsData.getIds({ - order: this.options.groupOrder - }); + // now all needed data has been collected we start the processing. + this._getYRanges(groupIds, preprocessedGroupData, groupRanges); - 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 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; - // show the groups again, attach them to the DOM in correct order - groupIds.forEach(function (groupId) { - groups[groupId].show(); - }); + // 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); + } - this.groupIds = groupIds; + // 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); + } } - - return changed; - } - else { - return false; } - }; - - /** - * Add a new item - * @param {Item} item - * @private - */ - 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); + // cleanup unused svg elements + DOMutil.cleanupElements(this.svgElements); + return false; }; + /** - * Update an existing item - * @param {Item} item - * @param {Object} itemData + * 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 */ - ItemSet.prototype._updateItem = function(item, itemData) { - var oldGroupId = item.data.group; - - // update the items data (will redraw the item when displayed) - item.setData(itemData); - - // update group - if (oldGroupId != item.data.group) { - var oldGroup = this.groups[oldGroupId]; - if (oldGroup) oldGroup.remove(item); - - var groupId = this._getGroupId(item.data); - var group = this.groups[groupId]; - if (group) group.add(item); + 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); + } + } + } + } + } } }; + /** - * 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 + * + * @param groupIds + * @param groupsData * @private */ - ItemSet.prototype._removeItem = function(item) { - // remove from DOM - item.hide(); - - // remove from items - delete this.items[item.id]; - - // remove from selection - var index = this.selection.indexOf(item.id); - if (index != -1) this.selection.splice(index, 1); + 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; - // remove from group - item.parent && item.parent.remove(item); - }; + // 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))); - /** - * 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 = []; + var sampledData = []; + for (var j = 0; j < amountOfPoints; j += increment) { + sampledData.push(dataContainer[j]); - for (var i = 0; i < array.length; i++) { - if (array[i] instanceof RangeItem) { - endArray.push(array[i]); + } + groupsData[groupIds[i]] = sampledData; + } + } } } - return endArray; }; + /** - * 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 + * @param {array} groupIds + * @param {object} groupsData + * @param {object} groupRanges | this is being filled here * @private */ - ItemSet.prototype._onTouch = function (event) { - // store the touched item, used in _onDragStart - this.touchParams.item = ItemSet.itemFromTarget(event); - }; + 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]); + } + } + } - /** - * Start dragging the selected events - * @param {Event} event - * @private - */ - ItemSet.prototype._onDragStart = function (event) { - if (!this.options.editable.updateTime && !this.options.editable.updateGroup) { - return; + // 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'); } + }; - 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; - } - - 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(); + /** + * 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 + */ + 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; } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; + else if (group && group.options.yAxisOrientation) { + yAxisRightUsed = true; + minRight = 0; + maxRight = 0; } - - 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 - }; - if (me.options.editable.updateTime) { - if ('start' in item.data) { - props.start = item.data.start.valueOf(); + // 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; - if ('end' in item.data) { - // we store a duration here in order not to change the width - // of the item when moving it. - props.duration = item.data.end.valueOf() - props.start; - } + 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; } } - if (me.options.editable.updateGroup) { - if ('group' in item.data) props.group = item.data.group; - } - - return props; - }); + } } - event.stopPropagation(); + if (yAxisLeftUsed == true) { + this.yAxisLeft.setRange(minLeft, maxLeft); + } + if (yAxisRightUsed == true) { + this.yAxisRight.setRange(minRight, maxRight); + } } - }; - - /** - * Drag selected items - * @param {Event} event - * @private - */ - ItemSet.prototype._onDrag = function (event) { - event.preventDefault(); - - if (this.touchParams.itemProps) { - var me = this; - var snap = this.options.snap || null; - var xOffset = this.body.dom.root.offsetLeft + this.body.domProps.left.width; - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - - // 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 ('start' in props) { - var start = new Date(props.start + offset); - newProps.start = snap ? snap(start, scale, step) : start; - } - - if ('end' in props) { - var end = new Date(props.end + offset); - newProps.end = snap ? snap(end, scale, step) : end; - } - else if ('duration' in props) { - newProps.end = new Date(newProps.start.valueOf() + props.duration); - } - - if ('group' in props) { - // drag from one group to another - var group = me.groupFromTarget(event); - newProps.group = group && group.groupId; - } + resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; + resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; - // 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); - } - }); - }); + 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;} - this.stackDirty = true; // force re-stacking of all items next redraw - this.body.emitter.emit('change'); + 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; + } - event.stopPropagation(); + // 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); } + + return resized; }; + /** - * Update an items properties - * @param {Item} item - * @param {Object} props Can contain properties start, end, and group. + * 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 */ - 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) + 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; + } } + return changed; }; + /** - * Move an item to another group - * @param {Item} item - * @param {String | Number} groupId + * 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 */ - 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(); + LineGraph.prototype._convertXcoordinates = function (datapoints) { + var extractedData = []; + var xValue, yValue; + var toScreen = this.body.util.toScreen; - item.data.group = group.groupId; + 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; }; + /** - * End of dragging selected items - * @param {Event} 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} * @private */ - ItemSet.prototype._onDragEnd = function (event) { - event.preventDefault() + 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; + } - if (this.touchParams.itemProps) { - // prepare a change set for the changed items - var changes = [], - me = this, - dataset = this.itemsData.getDataSet(); + 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 itemProps = this.touchParams.itemProps ; - this.touchParams.itemProps = null; - itemProps.forEach(function (props) { - var id = props.item.id, - itemData = me.itemsData.get(id, me.itemOptions); + group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - 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; - } + return extractedData; + }; - // 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'); - } - }); - } - }); + module.exports = LineGraph; - // apply the changes to the data (if there are changes) - if (changes.length) { - dataset.update(changes); - } - event.stopPropagation(); - } - }; +/***/ }, +/* 30 */ +/***/ function(module, exports, __webpack_require__) { + + 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); /** - * Handle selecting/deselecting an item when tapping it - * @param {Event} event - * @private + * 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 */ - ItemSet.prototype._onSelectItem = function (event) { - if (!this.options.selectable) return; + 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 + }; - 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.defaultOptions = { + orientation: 'bottom', // supported: 'top', 'bottom' + // TODO: implement timeaxis orientations 'left' and 'right' + showMinorLabels: true, + showMajorLabels: true, + format: null, + timeAxis: null + }; + this.options = util.extend({}, this.defaultOptions); - var oldSelection = this.getSelection(); + this.body = body; - var item = ItemSet.itemFromTarget(event); - var selection = item ? [item.id] : []; - this.setSelection(selection); + // create the HTML DOM + this._create(); - var newSelection = this.getSelection(); + this.setOptions(options); + } - // 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 - }); - } - }; + TimeAxis.prototype = new Component(); /** - * Handle creation and updates of an item on double tap - * @param event - * @private + * Set options for the TimeAxis. + * Parameters will be merged in current options. + * @param {Object} options Available options: + * {string} [orientation] + * {boolean} [showMinorLabels] + * {boolean} [showMajorLabels] */ - ItemSet.prototype._onAddItem = function (event) { - if (!this.options.selectable) return; - if (!this.options.editable.add) return; - - var me = this, - snap = this.options.snap || null, - item = ItemSet.itemFromTarget(event); - - if (item) { - // update item + TimeAxis.prototype.setOptions = function(options) { + if (options) { + // copy all options that we know + util.selectiveExtend([ + 'orientation', + 'showMinorLabels', + 'showMajorLabels', + 'hiddenDates', + 'format', + 'timeAxis' + ], this.options, options); - // 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); + // 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 { - // add item - var xAbs = util.getAbsoluteLeft(this.dom.frame); - var x = event.gesture.center.pageX - xAbs; - var start = this.body.util.toTime(x); - var scale = this.body.util.getScale(); - var step = this.body.util.getStep(); - - var newItem = { - start: snap ? snap(start, scale, step) : 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, scale, step) : end; - } - - newItem[this.itemsData._fieldId] = util.randomUUID(); - - var group = this.groupFromTarget(event); - if (group) { - newItem.group = group.groupId; - } - - // 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? + else { + moment.lang(options.locale); } - }); + } } }; /** - * Handle selecting/deselecting multiple items when holding an item - * @param {Event} event - * @private + * Create the HTML DOM for the TimeAxis */ - ItemSet.prototype._onMultiSelectItem = function (event) { - if (!this.options.selectable) return; + TimeAxis.prototype._create = function() { + this.dom.foreground = document.createElement('div'); + this.dom.background = document.createElement('div'); - var selection, - item = ItemSet.itemFromTarget(event); + this.dom.foreground.className = 'timeaxis foreground'; + this.dom.background.className = 'timeaxis background'; + }; - if (item) { - // multi select items - selection = this.getSelection(); // current selection + /** + * Destroy the TimeAxis + */ + 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); + } - 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 + this.body = null; + }; - // determine the selection range - selection.push(item.id); - var range = ItemSet._getItemRange(this.itemsData.get(selection, this.itemOptions)); + /** + * 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; - // 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; + // 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); - 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); - } - } + // calculate character width and height + this._calculateCharSize(); - this.setSelection(selection); + // 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; - this.body.emitter.emit('select', { - items: this.getSelection() - }); + // 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; + + 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 + + // 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); + + foreground.style.height = this.props.height + 'px'; + + this._repaintLabels(); + + // 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) + } + + return this._isResized() || parentChanged; }; /** - * Calculate the time range of a list of items - * @param {Array.} itemsData - * @return {{min: Date, max: Date}} Returns the range of the provided items + * Repaint major and minor text labels and vertical grid lines * @private */ - ItemSet._getItemRange = function(itemsData) { - var max = null; - var min = null; + TimeAxis.prototype._repaintLabels = function () { + var orientation = this.options.orientation; - itemsData.forEach(function (data) { - if (min == null || data.start < min) { - min = data.start; + // 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(); + + var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); + if (this.options.format) { + step.setFormat(this.options.format); + } + if (this.options.timeAxis) { + step.setScale(this.options.timeAxis); + } + 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 cur; + var x = 0; + var isMajor; + var xPrev = 0; + var width = 0; + var prevLine; + var xFirstMajorLabel = undefined; + var max = 0; + var className; + + 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'; } - if (data.end != undefined) { - if (max == null || data.end > max) { - max = data.end; + if (this.options.showMinorLabels) { + this._repaintMinorText(x, step.getLabelMinor(), orientation, 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 { - if (max == null || data.start > max) { - max = data.start; - } + prevLine = this._repaintMinorLine(x, orientation, className); } - }); - return { - min: min, - max: max + step.next(); } - }; - /** - * 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']; + // 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 + + if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { + this._repaintMajorText(0, leftText, orientation, className); } - target = target.parentNode; } - return null; + // 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); + } + } + }); }; /** - * 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 + * 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 */ - ItemSet.prototype.groupFromTarget = function(event) { - // TODO: cleanup when the new solution is stable (also on mobile) - //var target = event.target; - //while (target) { - // if (target.hasOwnProperty('timeline-group')) { - // return target['timeline-group']; - // } - // target = target.parentNode; - //} - // - - var clientY = event.gesture.center.clientY; - for (var i = 0; i < this.groupIds.length; i++) { - var groupId = this.groupIds[i]; - var group = this.groups[groupId]; - var foreground = group.dom.foreground; - var top = util.getAbsoluteTop(foreground); - if (clientY > top && clientY < top + foreground.offsetHeight) { - return group; - } + TimeAxis.prototype._repaintMinorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.minorTexts.shift(); - if (this.options.orientation === 'top') { - if (i === this.groupIds.length - 1 && clientY > top) { - return group; - } - } - else { - if (i === 0 && clientY < top + foreground.offset) { - return group; - } - } + 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); - return null; + 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 }; /** - * 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 + * 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 */ - ItemSet.itemSetFromTarget = function(event) { - var target = event.target; - while (target) { - if (target.hasOwnProperty('timeline-itemset')) { - return target['timeline-itemset']; - } - target = target.parentNode; + TimeAxis.prototype._repaintMajorText = function (x, text, orientation, className) { + // reuse redundant label + var label = this.dom.redundant.majorTexts.shift(); + + 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); - return null; + label.childNodes[0].nodeValue = text; + label.className = 'text major ' + className; + //label.title = title; // TODO: this is a heavy operation + + label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); + label.style.left = x + 'px'; }; - module.exports = ItemSet; + /** + * 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 + */ + 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); + 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'; -/***/ }, -/* 33 */ -/***/ function(module, exports, __webpack_require__) { + line.className = 'grid vertical minor ' + className; - var util = __webpack_require__(1); - var DOMutil = __webpack_require__(2); - var Component = __webpack_require__(25); + return line; + }; /** - * Legend for Graph2d + * 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 */ - 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 - } + 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.side = side; - this.options = util.extend({},this.defaultOptions); - this.linegraphOptions = linegraphOptions; + this.dom.lines.push(line); - this.svgElements = {}; - this.dom = {}; - this.groups = {}; - this.amountOfGroups = 0; - this._create(); + var props = this.props; + if (orientation == 'top') { + line.style.top = '0'; + } + else { + line.style.top = this.body.domProps.top.height + 'px'; + } + line.style.left = (x - props.majorLineWidth / 2) + 'px'; + line.style.height = props.majorLineHeight + 'px'; - this.setOptions(options); - } + line.className = 'grid vertical major ' + className; - Legend.prototype = new Component(); + return line; + }; - Legend.prototype.clear = function() { - this.groups = {}; - this.amountOfGroups = 0; - } + /** + * 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 + */ + 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. - Legend.prototype.addGroup = function(label, graphOptions) { + // 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'; - if (!this.groups.hasOwnProperty(label)) { - this.groups[label] = graphOptions; + this.dom.measureCharMinor.appendChild(document.createTextNode('0')); + this.dom.foreground.appendChild(this.dom.measureCharMinor); } - this.amountOfGroups += 1; - }; + this.props.minorCharHeight = this.dom.measureCharMinor.clientHeight; + this.props.minorCharWidth = this.dom.measureCharMinor.clientWidth; - Legend.prototype.updateGroup = function(label, graphOptions) { - this.groups[label] = graphOptions; - }; + // 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'; - Legend.prototype.removeGroup = function(label) { - if (this.groups.hasOwnProperty(label)) { - delete this.groups[label]; - this.amountOfGroups -= 1; + 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; }; - 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 = TimeAxis; - 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%'; +/***/ }, +/* 31 */ +/***/ 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); /** - * Hide the component from the DOM + * @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.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); - } - }; + 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; /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * Select current item */ - Legend.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + Item.prototype.select = function() { + this.selected = true; + this.dirty = true; + if (this.displayed) this.redraw(); }; - Legend.prototype.setOptions = function(options) { - var fields = ['enabled','orientation','icons','left','right']; - util.selectiveDeepExtend(fields, this.options, options); + /** + * Unselect current item + */ + Item.prototype.unselect = function() { + this.selected = false; + this.dirty = true; + if (this.displayed) this.redraw(); }; - 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++; - } - } - } + /** + * 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(); + }; - if (this.options[this.side].visible == false || this.amountOfGroups == 0 || this.options.enabled == false || activeGroups == 0) { + /** + * 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.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 = ''; + this.parent = parent; + } + }; + + /** + * 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; + }; + + /** + * Show the Item in the DOM (when not already visible) + * @return {Boolean} changed + */ + Item.prototype.show = function() { + return false; + }; + + /** + * Hide the Item from the DOM (when visible) + * @return {Boolean} changed + */ + Item.prototype.hide = function() { + return false; + }; + + /** + * Repaint the item + */ + Item.prototype.redraw = function() { + // should be implemented by the item + }; + + /** + * Reposition the Item horizontally + */ + Item.prototype.repositionX = function() { + // should be implemented by the item + }; + + /** + * Reposition the Item vertically + */ + Item.prototype.repositionY = function() { + // should be implemented by the item + }; + + /** + * 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(); + }); + + 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); } + this.dom.deleteButton = null; + } + }; - 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 = ''; + /** + * 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); + } + else { + content = this.data.content; + } + + 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 { - 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.data.type == 'background' && this.data.content === undefined)) { + throw new Error('Property "content" missing in item ' + this.id); + } } - 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'; + 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'); + } + }; + + /** + * 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 { - this.dom.frame.style.width = this.options.iconSize + 15 + this.dom.textArea.offsetWidth + 10 + 'px' - this.drawLegendIcons(); + return; } - 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 + '
'; - } + 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); } } - 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; - } - } - } + /** + * 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; + } - DOMutil.cleanupElements(this.svgElements); + // append new styles + if (this.data.style) { + util.addCssText(element, this.data.style); + this.style = this.data.style; } }; - module.exports = Legend; + module.exports = Item; /***/ }, -/* 34 */ +/* 32 */ /***/ 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__(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 + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(31); + var BackgroundGroup = __webpack_require__(26); + var RangeItem = __webpack_require__(35); /** - * This is the constructor of the LineGraph. It requires a Timeline body and options. - * - * @param body - * @param options - * @constructor + * @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 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: {} + // 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.overflow = false; // if contents can overflow (css styling), this flag is set to true - // 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); + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" 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); + if (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); } - }; + } - 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 + Item.call(this, data, conversion, options); - 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.emptyContent = false; + } - // 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 = new Item (null, null, null); - } + 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 + */ + BackgroundItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); + }; /** - * Create the HTML DOM for the ItemSet + * Repaint the item */ - LineGraph.prototype._create = function(){ - var frame = document.createElement('div'); - frame.className = 'LineGraph'; - this.dom.frame = frame; + BackgroundItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // 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); + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - // data axis - this.options.dataAxis.orientation = 'left'; - this.yAxisLeft = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - this.options.dataAxis.orientation = 'right'; - this.yAxisRight = new DataAxis(this.body, this.options.dataAxis, this.svg, this.options.groups); - delete this.options.dataAxis.orientation; + // Note: we do NOT attach this item as attribute to the DOM, + // such that background items cannot be selected + //dom.box['timeline-item'] = this; - // 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.dirty = true; + } - this.show(); + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); + } + 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; + + // 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; + } }; /** - * set the options of the LineGraph. the mergeOptions is used for subObjects that have an enabled element. - * @param {object} options + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - 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'); + BackgroundItem.prototype.show = RangeItem.prototype.show; - 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; + /** + * Hide the item from the DOM (when visible) + * @return {Boolean} changed + */ + BackgroundItem.prototype.hide = RangeItem.prototype.hide; + + /** + * Reposition the item horizontally + * @Override + */ + BackgroundItem.prototype.repositionX = RangeItem.prototype.repositionX; + + /** + * Reposition the item vertically + * @Override + */ + 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; } } } - } - if (this.yAxisLeft) { - if (options.dataAxis !== undefined) { - this.yAxisLeft.setOptions(this.options.dataAxis); - this.yAxisRight.setOptions(this.options.dataAxis); - } + // 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 = ''; } - - if (this.legendLeft) { - if (options.legend !== undefined) { - this.legendLeft.setOptions(this.options.legend); - this.legendRight.setOptions(this.options.legend); + // 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; + } + } } - } - - if (this.groups.hasOwnProperty(UNGROUPED)) { - this.groups[UNGROUPED].setOptions(options); + height = this.parent.subgroups[itemSubgroup].height + margin.item.vertical; + this.dom.box.style.top = newTop + 'px'; + this.dom.box.style.bottom = ''; } } - - // this is used to redraw the graph if the visibility of the groups is changed. - if (this.dom.frame) { - this.redraw(true); + // 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 = BackgroundItem; + + +/***/ }, +/* 33 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(31); + var util = __webpack_require__(1); + /** - * Hide the component from the DOM + * @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 */ - LineGraph.prototype.hide = function() { - // remove the frame containing the items - if (this.dom.frame.parentNode) { - this.dom.frame.parentNode.removeChild(this.dom.frame); + function BoxItem (data, conversion, options) { + this.props = { + dot: { + width: 0, + height: 0 + }, + line: { + width: 0, + height: 0 + } + }; + + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data); + } } - }; + Item.call(this, data, conversion, options); + } + + BoxItem.prototype = new Item (null, null, null); /** - * Show the component in the DOM (when not already visible). - * @return {Boolean} changed + * 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 */ - LineGraph.prototype.show = function() { - // show frame containing the items - if (!this.dom.frame.parentNode) { - this.body.dom.center.appendChild(this.dom.frame); - } + 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); }; - /** - * Set items - * @param {vis.DataSet | null} items + * Repaint the item */ - LineGraph.prototype.setItems = function(items) { - var me = this, - ids, - oldItemsData = this.itemsData; + BoxItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // replace the dataset - if (!items) { - this.itemsData = null; + // create main box + dom.box = document.createElement('DIV'); + + // 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'; + + // dot on axis + dom.dot = document.createElement('DIV'); + dom.dot.className = 'dot'; + + // attach this item as attribute + dom.box['timeline-item'] = this; + + this.dirty = true; } - else if (items instanceof DataSet || items instanceof DataView) { - this.itemsData = items; + + // append DOM to parent DOM + if (!this.parent) { + throw new Error('Cannot redraw item: no parent attached'); } - else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + 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; - if (oldItemsData) { - // unsubscribe from old dataset - util.forEach(this.itemListeners, function (callback, event) { - oldItemsData.off(event, callback); - }); + // 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); - // remove all drawn items - ids = oldItemsData.getIds(); - this._onRemove(ids); - } + // 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; - if (this.itemsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.itemListeners, function (callback, event) { - me.itemsData.on(event, callback, id); - }); + // 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; - // add all new items - ids = this.itemsData.getIds(); - this._onAdd(ids); + this.dirty = false; } - this._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); + + this._repaintDeleteButton(dom.box); }; + /** + * 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(); + } + }; /** - * Set groups - * @param {vis.DataSet} groups + * Hide the item from the DOM (when visible) */ - LineGraph.prototype.setGroups = function(groups) { - var me = this; - var ids; + BoxItem.prototype.hide = function() { + if (this.displayed) { + var dom = this.dom; - // unsubscribe from current dataset - if (this.groupsData) { - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.unsubscribe(event, callback); - }); + 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); - // remove all drawn groups - ids = this.groupsData.getIds(); - this.groupsData = null; - this._onRemoveGroups(ids); // note: this will cause a redraw + this.top = null; + this.left = null; + + this.displayed = false; } + }; - // replace the dataset - if (!groups) { - this.groupsData = null; + /** + * 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; + + // calculate left position of the box + if (align == 'right') { + this.left = start - this.width; } - else if (groups instanceof DataSet || groups instanceof DataView) { - this.groupsData = groups; + else if (align == 'left') { + this.left = start; } else { - throw new TypeError('Data must be an instance of DataSet or DataView'); + // default or 'center' + this.left = start - this.width / 2; } - if (this.groupsData) { - // subscribe to new dataset - var id = this.id; - util.forEach(this.groupListeners, function (callback, event) { - me.groupsData.on(event, callback, id); - }); + // reposition box + box.style.left = this.left + 'px'; - // draw all ms - ids = this.groupsData.getIds(); - this._onAddGroups(ids); - } - this._onUpdate(); - }; + // reposition line + line.style.left = (start - this.props.line.width / 2) + 'px'; + // reposition dot + dot.style.left = (start - this.props.dot.width / 2) + 'px'; + }; /** - * Update the data - * @param [ids] - * @private + * Reposition the item vertically + * @Override */ - 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]); + 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 = ''; } + 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; - //this._updateGraph(); - this.redraw(true); + 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'; }; - LineGraph.prototype._onAddGroups = function (groupIds) {this._onUpdateGroups(groupIds);}; + module.exports = BoxItem; + + +/***/ }, +/* 34 */ +/***/ function(module, exports, __webpack_require__) { + + var Item = __webpack_require__(31); /** - * this cleans the group out off the legends and the dataaxis, updates the ungrouped and updates the graph - * @param {Array} groupIds - * @private + * @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 */ - 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]]; + 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._updateUngrouped(); - //this._updateGraph(); - this.redraw(true); - }; + Item.call(this, data, conversion, options); + } + + PointItem.prototype = new Item (null, null, null); /** - * update a group object with the group dataset entree - * - * @param group - * @param groupId - * @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 */ - 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]); - } - } - 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]); - } - } - this.legendLeft.redraw(); - this.legendRight.redraw(); + 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); }; - /** - * this updates all groups, it is used when there is an update the the itemset. - * - * @private + * Repaint the item */ - 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]); - } + PointItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; + + // background box + dom.point = document.createElement('div'); + // className is updated in redraw() + + // contents box, right from the dot + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.point.appendChild(dom.content); + + // dot at start + dom.dot = document.createElement('div'); + dom.point.appendChild(dom.dot); + + // attach this item as attribute + dom.point['timeline-item'] = this; + + 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; + + // 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); + + // 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; + + // 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; + + // resize contents + dom.content.style.marginLeft = 2 * this.props.dot.width + 'px'; + //dom.content.style.marginRight = ... + 'px'; // TODO: margin right + + dom.dot.style.top = ((this.height - this.props.dot.height) / 2) + 'px'; + dom.dot.style.left = (this.props.dot.width / 2) + 'px'; + + this.dirty = false; } + + this._repaintDeleteButton(dom.point); }; + /** + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. + */ + PointItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); + } + }; /** - * 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 + * Hide the item from the DOM (when visible) */ - 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; - } - } + PointItem.prototype.hide = function() { + if (this.displayed) { + if (this.dom.point.parentNode) { + this.dom.point.parentNode.removeChild(this.dom.point); } - 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.top = null; + this.left = null; - this.legendLeft.redraw(); - this.legendRight.redraw(); + this.displayed = false; + } }; - /** - * Redraw the component, mandatory function - * @return {boolean} Returns true if the component is resized + * Reposition the item horizontally + * @Override */ - LineGraph.prototype.redraw = function(forceGraphUpdate) { - var resized = false; + PointItem.prototype.repositionX = function() { + var start = this.conversion.toScreen(this.data.start); - // calculate actual size and position - this.props.width = this.dom.frame.offsetWidth; - this.props.height = this.body.domProps.centerContainer.height; + this.left = start - this.props.dot.width; - // update the graph if there is no lastWidth or with, used for the initial draw - if (this.lastWidth === undefined && this.props.width) { - forceGraphUpdate = true; + // reposition point + this.dom.point.style.left = this.left + 'px'; + }; + + /** + * Reposition the item vertically + * @Override + */ + PointItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + point = this.dom.point; + + if (orientation == 'top') { + point.style.top = this.top + 'px'; + } + else { + point.style.top = (this.parent.height - this.top - this.height) + 'px'; } + }; - // check if this component is resized - resized = this._isResized() || resized; + module.exports = PointItem; - // 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; +/***/ }, +/* 35 */ +/***/ function(module, exports, __webpack_require__) { - // 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); + var Hammer = __webpack_require__(45); + var Item = __webpack_require__(31); - // 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; + /** + * @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 - // 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'; + // validate data + if (data) { + if (data.start == undefined) { + throw new Error('Property "start" missing in item ' + data.id); } - 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 (data.end == undefined) { + throw new Error('Property "end" missing in item ' + data.id); } } - this.legendLeft.redraw(); - this.legendRight.redraw(); - return resized; - }; + Item.call(this, data, conversion, options); + } + RangeItem.prototype = new Item (null, null, null); + + RangeItem.prototype.baseClassName = 'item range'; /** - * Update and redraw the graph. - * + * 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 */ - 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); + RangeItem.prototype.isVisible = function(range) { + // determine visibility + return (this.data.start < range.end) && (this.data.end > range.start); + }; - // apply sampling, if disabled, it will pass through this function. - this._applySampling(groupIds, groupsData); + /** + * Repaint the item + */ + RangeItem.prototype.redraw = function() { + var dom = this.dom; + if (!dom) { + // create DOM + this.dom = {}; + dom = this.dom; - // we transform the X coordinates to detect collisions - for (i = 0; i < groupIds.length; i++) { - preprocessedGroupData[groupIds[i]] = this._convertXcoordinates(groupsData[groupIds[i]]); - } + // background box + dom.box = document.createElement('div'); + // className is updated in redraw() - // now all needed data has been collected we start the processing. - this._getYRanges(groupIds, preprocessedGroupData, groupRanges); + // contents box + dom.content = document.createElement('div'); + dom.content.className = 'content'; + dom.box.appendChild(dom.content); - // 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; + // attach this item as attribute + dom.box['timeline-item'] = this; - // 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); - } + this.dirty = true; + } - // 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); - } + // 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; - // cleanup unused svg elements - DOMutil.cleanupElements(this.svgElements); - return false; - }; + // 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 = this.baseClassName + className; + + // 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(); + }; /** - * 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 + * Show the item in the DOM (when not already visible). The items DOM will + * be created when needed. */ - 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); - } - } - } - } - } + RangeItem.prototype.show = function() { + if (!this.displayed) { + this.redraw(); } }; - /** - * - * @param groupIds - * @param groupsData - * @private + * Hide the item from the DOM (when visible) + * @return {Boolean} changed */ - 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; + RangeItem.prototype.hide = function() { + if (this.displayed) { + var box = this.dom.box; - // 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))); + if (box.parentNode) { + box.parentNode.removeChild(box); + } - var sampledData = []; - for (var j = 0; j < amountOfPoints; j += increment) { - sampledData.push(dataContainer[j]); + this.top = null; + this.left = null; - } - groupsData[groupIds[i]] = sampledData; - } - } - } + this.displayed = false; } }; - /** - * - * - * @param {array} groupIds - * @param {object} groupsData - * @param {object} groupRanges | this is being filled here - * @private + * Reposition the item horizontally + * @Override */ - 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]); - } - } - } + 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; - // 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'); + // limit the width of the this, as browsers cannot draw very wide divs + if (start < -parentWidth) { + start = -parentWidth; } - }; - - - /** - * 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 - */ - 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 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; - - 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; - } - } - } - } - - if (yAxisLeftUsed == true) { - this.yAxisLeft.setRange(minLeft, maxLeft); - } - if (yAxisRightUsed == true) { - this.yAxisRight.setRange(minRight, maxRight); - } + if (end > 2 * parentWidth) { + end = 2 * parentWidth; } - resized = this._toggleAxisVisiblity(yAxisLeftUsed , this.yAxisLeft) || resized; - resized = this._toggleAxisVisiblity(yAxisRightUsed, this.yAxisRight) || resized; + var boxWidth = Math.max(end - start, 1); - 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;} + if (this.overflow) { + this.left = start; + this.width = boxWidth + this.props.content.width; + contentWidth = this.props.content.width; - resized = this.yAxisLeft.redraw() || resized; - this.yAxisRight.stepPixelsForced = this.yAxisLeft.stepPixels; - this.yAxisRight.zeroCrossing = this.yAxisLeft.zeroCrossing; - resized = this.yAxisRight.redraw() || resized; + // 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 { - resized = this.yAxisRight.redraw() || resized; - } - - // 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); + this.left = start; + this.width = boxWidth; + contentWidth = Math.min(end - start - 2 * this.options.padding, this.props.content.width); } - return resized; - }; - + this.dom.box.style.left = this.left + 'px'; + this.dom.box.style.width = boxWidth + 'px'; - /** - * 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 - */ - 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; - } - } - return changed; - }; + 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; - /** - * 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 - */ - LineGraph.prototype._convertXcoordinates = function (datapoints) { - var extractedData = []; - var xValue, yValue; - var toScreen = this.body.util.toScreen; + case 'center': + this.dom.content.style.left = Math.max((boxWidth - contentWidth - 2 * this.options.padding) / 2, 0) + 'px'; + break; - 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}); + 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 extractedData; }; - /** - * 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 + * Reposition the item vertically + * @Override */ - 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; - } + RangeItem.prototype.repositionY = function() { + var orientation = this.options.orientation, + box = this.dom.box; - 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}); + if (orientation == 'top') { + box.style.top = this.top + 'px'; + } + else { + box.style.top = (this.parent.height - this.top - this.height) + 'px'; } - - group.setZeroPosition(Math.min(svgHeight, axis.convertValue(0))); - - return extractedData; }; - - module.exports = LineGraph; - - -/***/ }, -/* 35 */ -/***/ function(module, exports, __webpack_require__) { - - 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); - /** - * 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 + * Repaint a drag area on the left side of the range when the range is selected + * @protected */ - 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 - }; - - this.defaultOptions = { - orientation: 'bottom', // supported: 'top', 'bottom' - // TODO: implement timeaxis orientations 'left' and 'right' - showMinorLabels: true, - showMajorLabels: true, - format: null, - timeAxis: null - }; - this.options = util.extend({}, this.defaultOptions); - - this.body = body; - - // create the HTML DOM - this._create(); - - this.setOptions(options); - } - - TimeAxis.prototype = new Component(); + 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; - /** - * 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', - 'timeAxis' - ], this.options, options); + // TODO: this should be redundant? + Hammer(dragLeft, { + preventDefault: true + }).on('drag', function () { + //console.log('drag left') + }); - // 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.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; } }; /** - * Create the HTML DOM for the TimeAxis + * Repaint a drag area on the right side of the range when the range is selected + * @protected */ - TimeAxis.prototype._create = function() { - this.dom.foreground = document.createElement('div'); - this.dom.background = document.createElement('div'); + 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; - this.dom.foreground.className = 'timeaxis foreground'; - this.dom.background.className = 'timeaxis background'; - }; + // TODO: this should be redundant? + Hammer(dragRight, { + preventDefault: true + }).on('drag', function () { + //console.log('drag right') + }); - /** - * Destroy the TimeAxis - */ - TimeAxis.prototype.destroy = function() { - // remove from DOM - if (this.dom.foreground.parentNode) { - this.dom.foreground.parentNode.removeChild(this.dom.foreground); + this.dom.box.appendChild(dragRight); + this.dom.dragRight = dragRight; } - if (this.dom.background.parentNode) { - this.dom.background.parentNode.removeChild(this.dom.background); + 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; } - - this.body = null; }; - /** - * 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(); - - // 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; - - // 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; + module.exports = RangeItem; - 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 - // 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); +/***/ }, +/* 36 */ +/***/ function(module, exports, __webpack_require__) { - foreground.style.height = this.props.height + 'px'; + var Emitter = __webpack_require__(56); + var Hammer = __webpack_require__(45); + var keycharm = __webpack_require__(58); + var util = __webpack_require__(1); + var hammerUtil = __webpack_require__(47); + var DataSet = __webpack_require__(3); + var DataView = __webpack_require__(4); + var dotparser = __webpack_require__(42); + var gephiParser = __webpack_require__(43); + var Groups = __webpack_require__(38); + var Images = __webpack_require__(39); + 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); - this._repaintLabels(); + // Load custom shapes into CanvasRenderingContext2D + __webpack_require__(50); - // 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) + /** + * @constructor Network + * Create a network visualization, displaying nodes and edges. + * + * @param {Element} container The DOM element in which the Network will + * be created. Normally a div element. + * @param {Object} data An object containing parameters + * {Array} nodes + * {Array} edges + * @param {Object} options Options + */ + function Network (container, data, options) { + if (!(this instanceof Network)) { + throw new SyntaxError('Constructor must be called with the new operator'); } - return this._isResized() || parentChanged; - }; + this._determineBrowserMethod(); + this._initializeMixinLoaders(); - /** - * Repaint major and minor text labels and vertical grid lines - * @private - */ - TimeAxis.prototype._repaintLabels = function () { - var orientation = this.options.orientation; + // create variables and set default values + this.containerElement = container; - // 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(); + // render and calculation settings + 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.runDoubleSpeed = false; + this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation - var step = new TimeStep(new Date(start), new Date(end), minimumStep, this.body.hiddenDates); - if (this.options.format) { - step.setFormat(this.options.format); - } - if (this.options.timeAxis) { - step.setScale(this.options.timeAxis); - } - this.step = step; + this.initializing = true; - // 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 cur; - var x = 0; - var isMajor; - var xPrev = 0; - var width = 0; - var prevLine; - var xFirstMajorLabel = undefined; - var max = 0; - var className; - - 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'; - } - - if (this.options.showMinorLabels) { - this._repaintMinorText(x, step.getLabelMinor(), orientation, 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); - } - - step.next(); - } - - // 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 - - if (xFirstMajorLabel == undefined || widthText < xFirstMajorLabel) { - this._repaintMajorText(0, leftText, orientation, className); - } - } - - // 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); - } - } - }); - }; - - /** - * 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 - */ - 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 - }; - - /** - * 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(); - - 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); - - label.childNodes[0].nodeValue = text; - label.className = 'text major ' + className; - //label.title = title; // TODO: this is a heavy operation - - label.style.top = (orientation == 'top') ? '0' : (this.props.minorLabelHeight + 'px'); - label.style.left = x + 'px'; - }; - - /** - * 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 - */ - 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); - - 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'; - - line.className = 'grid vertical minor ' + className; - - return line; - }; - - /** - * 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 - */ - 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'; - } - line.style.left = (x - props.majorLineWidth / 2) + 'px'; - line.style.height = props.majorLineHeight + 'px'; - - line.className = 'grid vertical major ' + className; - - return line; - }; - - /** - * 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 - */ - 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); - } - 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; - }; - - module.exports = TimeAxis; - - -/***/ }, -/* 36 */ -/***/ function(module, exports, __webpack_require__) { - - var Emitter = __webpack_require__(56); - var Hammer = __webpack_require__(45); - var keycharm = __webpack_require__(57); - var util = __webpack_require__(1); - var hammerUtil = __webpack_require__(47); - var DataSet = __webpack_require__(3); - var DataView = __webpack_require__(4); - var dotparser = __webpack_require__(42); - var gephiParser = __webpack_require__(43); - var Groups = __webpack_require__(38); - var Images = __webpack_require__(39); - var Node = __webpack_require__(40); - var Edge = __webpack_require__(37); - var Popup = __webpack_require__(41); - var MixinLoader = __webpack_require__(52); - var Activator = __webpack_require__(53); - var locales = __webpack_require__(54); - - // Load custom shapes into CanvasRenderingContext2D - __webpack_require__(55); - - /** - * @constructor Network - * Create a network visualization, displaying nodes and edges. - * - * @param {Element} container The DOM element in which the Network will - * be created. Normally a div element. - * @param {Object} data An object containing parameters - * {Array} nodes - * {Array} edges - * @param {Object} options Options - */ - function Network (container, data, options) { - if (!(this instanceof Network)) { - throw new SyntaxError('Constructor must be called with the new operator'); - } - - this._determineBrowserMethod(); - this._initializeMixinLoaders(); - - // create variables and set default values - this.containerElement = container; - - // render and calculation settings - 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.runDoubleSpeed = false; - this.physicsDiscreteStepsize = 0.50; // discrete stepsize of the simulation - - this.initializing = true; - - this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; + this.triggerFunctions = {add:null,edit:null,editEdge:null,connect:null,del:null}; var customScalingFunction = function (min,max,total,value) { if (max == min) { @@ -16493,10 +16493,6 @@ return /******/ (function(modules) { // webpackBootstrap this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); } - //this.keycharm.bind("1",this.increaseClusterLevel.bind(me), "keydown"); - //this.keycharm.bind("2",this.decreaseClusterLevel.bind(me), "keydown"); - //this.keycharm.bind("3",this.forceAggregateHubs.bind(me,true),"keydown"); - //this.keycharm.bind("4",this.normalizeClusterLevels.bind(me), "keydown"); if (this.constants.dataManipulation.enabled == true) { this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); @@ -17966,6 +17962,9 @@ return /******/ (function(modules) { // webpackBootstrap * Schedule a animation step with the refreshrate interval. */ Network.prototype.start = function() { + if (this.freezeSimulationEnabled == true) { + this.moving = false; + } if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { if (!this.timer) { if (this.requiresTimeout == true) { @@ -22208,7 +22207,7 @@ return /******/ (function(modules) { // webpackBootstrap // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. - module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(58); + module.exports = (typeof window !== 'undefined') && window['moment'] || __webpack_require__(57); /***/ }, @@ -22237,8 +22236,8 @@ return /******/ (function(modules) { // webpackBootstrap var DataSet = __webpack_require__(3); var DataView = __webpack_require__(4); var Range = __webpack_require__(17); - var ItemSet = __webpack_require__(32); - var Activator = __webpack_require__(53); + var ItemSet = __webpack_require__(27); + var Activator = __webpack_require__(55); var DateUtil = __webpack_require__(15); /** @@ -23173,13 +23172,285 @@ 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__(51); + var Points = __webpack_require__(53); function Line(groupId, options) { this.groupId = groupId; @@ -23396,14 +23667,14 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 50 */ +/* 52 */ /***/ function(module, exports, __webpack_require__) { /** * Created by Alex on 11/11/2014. */ var DOMutil = __webpack_require__(2); - var Points = __webpack_require__(51); + var Points = __webpack_require__(53); function Bargraph(groupId, options) { this.groupId = groupId; @@ -23630,7 +23901,7 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Bargraph; /***/ }, -/* 51 */ +/* 53 */ /***/ function(module, exports, __webpack_require__) { /** @@ -23678,16 +23949,16 @@ return /******/ (function(modules) { // webpackBootstrap module.exports = Points; /***/ }, -/* 52 */ +/* 54 */ /***/ function(module, exports, __webpack_require__) { - 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); + 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); /** * Load a mixin into the network object @@ -23882,10 +24153,10 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 53 */ +/* 55 */ /***/ function(module, exports, __webpack_require__) { - var keycharm = __webpack_require__(57); + var keycharm = __webpack_require__(58); var Emitter = __webpack_require__(56); var Hammer = __webpack_require__(45); var util = __webpack_require__(1); @@ -24038,278 +24309,6 @@ 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__) { @@ -24482,205 +24481,6 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, /* 57 */ -/***/ function(module, exports, __webpack_require__) { - - var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; - /** - * Created by Alex on 11/6/2014. - */ - - // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 - // if the module has no dependencies, the above pattern can be simplified to - (function (root, factory) { - if (true) { - // AMD. Register as an anonymous module. - !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - } else if (typeof exports === 'object') { - // Node. Does not work with strict CommonJS, but - // only CommonJS-like environments that support module.exports, - // like Node. - module.exports = factory(); - } else { - // Browser globals (root is window) - root.keycharm = factory(); - } - }(this, function () { - - function keycharm(options) { - var preventDefault = options && options.preventDefault || false; - - var container = options && options.container || window; - - var _exportFunctions = {}; - var _bound = {keydown:{}, keyup:{}}; - var _keys = {}; - var i; - - // a - z - for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} - // A - Z - for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} - // 0 - 9 - for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} - // F1 - F12 - for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} - // num0 - num9 - for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} - - // numpad misc - _keys['num*'] = {code:106, shift: false}; - _keys['num+'] = {code:107, shift: false}; - _keys['num-'] = {code:109, shift: false}; - _keys['num/'] = {code:111, shift: false}; - _keys['num.'] = {code:110, shift: false}; - // arrows - _keys['left'] = {code:37, shift: false}; - _keys['up'] = {code:38, shift: false}; - _keys['right'] = {code:39, shift: false}; - _keys['down'] = {code:40, shift: false}; - // extra keys - _keys['space'] = {code:32, shift: false}; - _keys['enter'] = {code:13, shift: false}; - _keys['shift'] = {code:16, shift: undefined}; - _keys['esc'] = {code:27, shift: false}; - _keys['backspace'] = {code:8, shift: false}; - _keys['tab'] = {code:9, shift: false}; - _keys['ctrl'] = {code:17, shift: false}; - _keys['alt'] = {code:18, shift: false}; - _keys['delete'] = {code:46, shift: false}; - _keys['pageup'] = {code:33, shift: false}; - _keys['pagedown'] = {code:34, shift: false}; - // symbols - _keys['='] = {code:187, shift: false}; - _keys['-'] = {code:189, shift: false}; - _keys[']'] = {code:221, shift: false}; - _keys['['] = {code:219, shift: false}; - - - - var down = function(event) {handleEvent(event,'keydown');}; - var up = function(event) {handleEvent(event,'keyup');}; - - // handle the actualy bound key with the event - var handleEvent = function(event,type) { - if (_bound[type][event.keyCode] !== undefined) { - var bound = _bound[type][event.keyCode]; - for (var i = 0; i < bound.length; i++) { - if (bound[i].shift === undefined) { - bound[i].fn(event); - } - else if (bound[i].shift == true && event.shiftKey == true) { - bound[i].fn(event); - } - else if (bound[i].shift == false && event.shiftKey == false) { - bound[i].fn(event); - } - } - - if (preventDefault == true) { - event.preventDefault(); - } - } - }; - - // bind a key to a callback - _exportFunctions.bind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (_bound[type][_keys[key].code] === undefined) { - _bound[type][_keys[key].code] = []; - } - _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); - }; - - - // bind all keys to a call back (demo purposes) - _exportFunctions.bindAll = function(callback, type) { - if (type === undefined) { - type = 'keydown'; - } - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - _exportFunctions.bind(key,callback,type); - } - } - }; - - // get the key label from an event - _exportFunctions.getKey = function(event) { - for (var key in _keys) { - if (_keys.hasOwnProperty(key)) { - if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { - return key; - } - else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { - return key; - } - else if (event.keyCode == _keys[key].code && key == 'shift') { - return key; - } - } - } - return "unknown key, currently not supported"; - }; - - // unbind either a specific callback from a key or all of them (by leaving callback undefined) - _exportFunctions.unbind = function(key, callback, type) { - if (type === undefined) { - type = 'keydown'; - } - if (_keys[key] === undefined) { - throw new Error("unsupported key: " + key); - } - if (callback !== undefined) { - var newBindings = []; - var bound = _bound[type][_keys[key].code]; - if (bound !== undefined) { - for (var i = 0; i < bound.length; i++) { - if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { - newBindings.push(_bound[type][_keys[key].code][i]); - } - } - } - _bound[type][_keys[key].code] = newBindings; - } - else { - _bound[type][_keys[key].code] = []; - } - }; - - // reset all bound variables. - _exportFunctions.reset = function() { - _bound = {keydown:{}, keyup:{}}; - }; - - // unbind all listeners and reset all variables. - _exportFunctions.destroy = function() { - _bound = {keydown:{}, keyup:{}}; - container.removeEventListener('keydown', down, true); - container.removeEventListener('keyup', up, true); - }; - - // create listeners. - container.addEventListener('keydown',down,true); - container.addEventListener('keyup',up,true); - - // return the public functions. - return _exportFunctions; - } - - return keycharm; - })); - - - - -/***/ }, -/* 58 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global, module) {//! moment.js @@ -27729,6 +27529,204 @@ return /******/ (function(modules) { // webpackBootstrap /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(71)(module))) +/***/ }, +/* 58 */ +/***/ function(module, exports, __webpack_require__) { + + var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;"use strict"; + /** + * Created by Alex on 11/6/2014. + */ + + // https://github.com/umdjs/umd/blob/master/returnExports.js#L40-L60 + // if the module has no dependencies, the above pattern can be simplified to + (function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else if (typeof exports === 'object') { + // Node. Does not work with strict CommonJS, but + // only CommonJS-like environments that support module.exports, + // like Node. + module.exports = factory(); + } else { + // Browser globals (root is window) + root.keycharm = factory(); + } + }(this, function () { + + function keycharm(options) { + var preventDefault = options && options.preventDefault || false; + + var container = options && options.container || window; + var _exportFunctions = {}; + var _bound = {keydown:{}, keyup:{}}; + var _keys = {}; + var i; + + // a - z + for (i = 97; i <= 122; i++) {_keys[String.fromCharCode(i)] = {code:65 + (i - 97), shift: false};} + // A - Z + for (i = 65; i <= 90; i++) {_keys[String.fromCharCode(i)] = {code:i, shift: true};} + // 0 - 9 + for (i = 0; i <= 9; i++) {_keys['' + i] = {code:48 + i, shift: false};} + // F1 - F12 + for (i = 1; i <= 12; i++) {_keys['F' + i] = {code:111 + i, shift: false};} + // num0 - num9 + for (i = 0; i <= 9; i++) {_keys['num' + i] = {code:96 + i, shift: false};} + + // numpad misc + _keys['num*'] = {code:106, shift: false}; + _keys['num+'] = {code:107, shift: false}; + _keys['num-'] = {code:109, shift: false}; + _keys['num/'] = {code:111, shift: false}; + _keys['num.'] = {code:110, shift: false}; + // arrows + _keys['left'] = {code:37, shift: false}; + _keys['up'] = {code:38, shift: false}; + _keys['right'] = {code:39, shift: false}; + _keys['down'] = {code:40, shift: false}; + // extra keys + _keys['space'] = {code:32, shift: false}; + _keys['enter'] = {code:13, shift: false}; + _keys['shift'] = {code:16, shift: undefined}; + _keys['esc'] = {code:27, shift: false}; + _keys['backspace'] = {code:8, shift: false}; + _keys['tab'] = {code:9, shift: false}; + _keys['ctrl'] = {code:17, shift: false}; + _keys['alt'] = {code:18, shift: false}; + _keys['delete'] = {code:46, shift: false}; + _keys['pageup'] = {code:33, shift: false}; + _keys['pagedown'] = {code:34, shift: false}; + // symbols + _keys['='] = {code:187, shift: false}; + _keys['-'] = {code:189, shift: false}; + _keys[']'] = {code:221, shift: false}; + _keys['['] = {code:219, shift: false}; + + + + var down = function(event) {handleEvent(event,'keydown');}; + var up = function(event) {handleEvent(event,'keyup');}; + + // handle the actualy bound key with the event + var handleEvent = function(event,type) { + if (_bound[type][event.keyCode] !== undefined) { + var bound = _bound[type][event.keyCode]; + for (var i = 0; i < bound.length; i++) { + if (bound[i].shift === undefined) { + bound[i].fn(event); + } + else if (bound[i].shift == true && event.shiftKey == true) { + bound[i].fn(event); + } + else if (bound[i].shift == false && event.shiftKey == false) { + bound[i].fn(event); + } + } + + if (preventDefault == true) { + event.preventDefault(); + } + } + }; + + // bind a key to a callback + _exportFunctions.bind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (_bound[type][_keys[key].code] === undefined) { + _bound[type][_keys[key].code] = []; + } + _bound[type][_keys[key].code].push({fn:callback, shift:_keys[key].shift}); + }; + + + // bind all keys to a call back (demo purposes) + _exportFunctions.bindAll = function(callback, type) { + if (type === undefined) { + type = 'keydown'; + } + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + _exportFunctions.bind(key,callback,type); + } + } + }; + + // get the key label from an event + _exportFunctions.getKey = function(event) { + for (var key in _keys) { + if (_keys.hasOwnProperty(key)) { + if (event.shiftKey == true && _keys[key].shift == true && event.keyCode == _keys[key].code) { + return key; + } + else if (event.shiftKey == false && _keys[key].shift == false && event.keyCode == _keys[key].code) { + return key; + } + else if (event.keyCode == _keys[key].code && key == 'shift') { + return key; + } + } + } + return "unknown key, currently not supported"; + }; + + // unbind either a specific callback from a key or all of them (by leaving callback undefined) + _exportFunctions.unbind = function(key, callback, type) { + if (type === undefined) { + type = 'keydown'; + } + if (_keys[key] === undefined) { + throw new Error("unsupported key: " + key); + } + if (callback !== undefined) { + var newBindings = []; + var bound = _bound[type][_keys[key].code]; + if (bound !== undefined) { + for (var i = 0; i < bound.length; i++) { + if (!(bound[i].fn == callback && bound[i].shift == _keys[key].shift)) { + newBindings.push(_bound[type][_keys[key].code][i]); + } + } + } + _bound[type][_keys[key].code] = newBindings; + } + else { + _bound[type][_keys[key].code] = []; + } + }; + + // reset all bound variables. + _exportFunctions.reset = function() { + _bound = {keydown:{}, keyup:{}}; + }; + + // unbind all listeners and reset all variables. + _exportFunctions.destroy = function() { + _bound = {keydown:{}, keyup:{}}; + container.removeEventListener('keydown', down, true); + container.removeEventListener('keyup', up, true); + }; + + // create listeners. + container.addEventListener('keydown',down,true); + container.addEventListener('keyup',up,true); + + // return the public functions. + return _exportFunctions; + } + + return keycharm; + })); + + + + /***/ }, /* 59 */ /***/ function(module, exports, __webpack_require__) { @@ -29617,1017 +29615,287 @@ return /******/ (function(modules) { // webpackBootstrap (function(name) { var hasMoved = false; - function tapGesture(ev, inst) { - var options = inst.options, - current = Detection.current, - prev = Detection.previous, - sincePrev, - didDoubleTap; - - switch(ev.eventType) { - case EVENT_START: - hasMoved = false; - break; - - case EVENT_MOVE: - hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); - break; - - case EVENT_END: - if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { - // previous gesture, for the double tap since these are two different gesture detections - sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; - didDoubleTap = false; - - // check if double tap - if(prev && prev.name == name && - (sincePrev && sincePrev < options.doubleTapInterval) && - ev.distance < options.doubleTapDistance) { - inst.trigger('doubletap', ev); - didDoubleTap = true; - } - - // do a single tap - if(!didDoubleTap || options.tapAlways) { - current.name = name; - inst.trigger(current.name, ev); - } - } - break; - } - } - - Hammer.gestures.Tap = { - name: name, - index: 100, - handler: tapGesture, - defaults: { - /** - * max time of a tap, this is for the slow tappers - * @property tapMaxTime - * @type {Number} - * @default 250 - */ - tapMaxTime: 250, - - /** - * max distance of movement of a tap, this is for the slow tappers - * @property tapMaxDistance - * @type {Number} - * @default 10 - */ - tapMaxDistance: 10, - - /** - * always trigger the `tap` event, even while double-tapping - * @property tapAlways - * @type {Boolean} - * @default true - */ - tapAlways: true, - - /** - * max distance between two taps - * @property doubleTapDistance - * @type {Number} - * @default 20 - */ - doubleTapDistance: 20, - - /** - * max time between two taps - * @property doubleTapInterval - * @type {Number} - * @default 300 - */ - doubleTapInterval: 300 - } - }; - })('tap'); - - /** - * @module gestures - */ - /** - * when a touch is being touched at the page - * - * @class Touch - * @static - */ - /** - * @event touch - * @param {Object} ev - */ - Hammer.gestures.Touch = { - name: 'touch', - index: -Infinity, - defaults: { - /** - * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, - * but it improves gestures like transforming and dragging. - * be careful with using this, it can be very annoying for users to be stuck on the page - * @property preventDefault - * @type {Boolean} - * @default false - */ - preventDefault: false, - - /** - * disable mouse events, so only touch (or pen!) input triggers events - * @property preventMouse - * @type {Boolean} - * @default false - */ - preventMouse: false - }, - handler: function touchGesture(ev, inst) { - if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { - ev.stopDetect(); - return; - } - - if(inst.options.preventDefault) { - ev.preventDefault(); - } - - if(ev.eventType == EVENT_TOUCH) { - inst.trigger('touch', ev); - } - } - }; - - /** - * @module gestures - */ - /** - * User want to scale or rotate with 2 fingers - * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the - * `preventDefault` option. - * - * @class Transform - * @static - */ - /** - * @event transform - * @param {Object} ev - */ - /** - * @event transformstart - * @param {Object} ev - */ - /** - * @event transformend - * @param {Object} ev - */ - /** - * @event pinchin - * @param {Object} ev - */ - /** - * @event pinchout - * @param {Object} ev - */ - /** - * @event rotate - * @param {Object} ev - */ - - /** - * @param {String} name - */ - (function(name) { - var triggered = false; - - function transformGesture(ev, inst) { - switch(ev.eventType) { - case EVENT_START: - triggered = false; - break; - - case EVENT_MOVE: - // at least multitouch - if(ev.touches.length < 2) { - return; - } - - var scaleThreshold = Math.abs(1 - ev.scale); - var rotationThreshold = Math.abs(ev.rotation); - - // when the distance we moved is too small we skip this gesture - // or we can be already in dragging - if(scaleThreshold < inst.options.transformMinScale && - rotationThreshold < inst.options.transformMinRotation) { - return; - } - - // we are transforming! - Detection.current.name = name; - - // first time, trigger dragstart event - if(!triggered) { - inst.trigger(name + 'start', ev); - triggered = true; - } - - inst.trigger(name, ev); // basic transform event - - // trigger rotate event - if(rotationThreshold > inst.options.transformMinRotation) { - inst.trigger('rotate', ev); - } - - // trigger pinch event - if(scaleThreshold > inst.options.transformMinScale) { - inst.trigger('pinch', ev); - inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); - } - break; - - case EVENT_RELEASE: - if(triggered && ev.changedLength < 2) { - inst.trigger(name + 'end', ev); - triggered = false; - } - break; - } - } - - Hammer.gestures.Transform = { - name: name, - index: 45, - defaults: { - /** - * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 - * @property transformMinScale - * @type {Number} - * @default 0.01 - */ - transformMinScale: 0.01, - - /** - * rotation in degrees - * @property transformMinRotation - * @type {Number} - * @default 1 - */ - transformMinRotation: 1 - }, - - handler: transformGesture - }; - })('transform'); - - /** - * @module hammer - */ - - // AMD export - if(true) { - !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { - return Hammer; - }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); - // commonjs export - } else if(typeof module !== 'undefined' && module.exports) { - module.exports = Hammer; - // browser export - } else { - window.Hammer = Hammer; - } - - })(window); - -/***/ }, -/* 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); - - /** - * Toggling barnes Hut calculation on and off. - * - * @private - */ - exports._toggleBarnesHut = function () { - this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; - this._loadSelectedForceSolver(); - this.moving = true; - this.start(); - }; - - - /** - * 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); - - 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); - } - }; - - /** - * 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. - * - * @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); - } - - // 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 - * @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 { - if (this.constants.physics.hierarchicalRepulsion.enabled == true) { - this._calculateHierarchicalSpringForces(); - } - else { - this._calculateSpringForces(); - } - } - } - }; - - - /** - * 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. - * - * @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]; - } - else { - supportNodes[supportNodeId]._setForce(0, 0); - } - } - } - - for (var idx in this.calculationNodes) { - if (this.calculationNodes.hasOwnProperty(idx)) { - this.calculationNodeIndices.push(idx); - } - } - } - else { - this.calculationNodes = this.nodes; - this.calculationNodeIndices = this.nodeIndices; - } - }; - - - /** - * 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 function calculates the effects of the springs in the case of unsmooth curves. - * - * @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; - - 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 calculates the springforces on the nodes, accounting for the support nodes. - * - * @private - */ - 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 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._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; - }; - - - 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 maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); - var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) - - 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"); + function tapGesture(ev, inst) { + var options = inst.options, + current = Detection.current, + prev = Detection.previous, + sincePrev, + didDoubleTap; - 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"); + switch(ev.eventType) { + case EVENT_START: + hasMoved = false; + break; - 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; - } + case EVENT_MOVE: + hasMoved = hasMoved || (ev.distance > options.tapMaxDistance); + break; - var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); - var graph_repositionNodes = document.getElementById("graph_repositionNodes"); - var graph_generateOptions = document.getElementById("graph_generateOptions"); + case EVENT_END: + if(!Utils.inStr(ev.srcEvent.type, 'cancel') && ev.deltaTime < options.tapMaxTime && !hasMoved) { + // previous gesture, for the double tap since these are two different gesture detections + sincePrev = prev && prev.lastEvent && ev.timeStamp - prev.lastEvent.timeStamp; + didDoubleTap = false; - 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"; + // check if double tap + if(prev && prev.name == name && + (sincePrev && sincePrev < options.doubleTapInterval) && + ev.distance < options.doubleTapDistance) { + inst.trigger('doubletap', ev); + didDoubleTap = true; + } + + // do a single tap + if(!didDoubleTap || options.tapAlways) { + current.name = name; + inst.trigger(current.name, ev); + } + } + break; + } } + Hammer.gestures.Tap = { + name: name, + index: 100, + handler: tapGesture, + defaults: { + /** + * max time of a tap, this is for the slow tappers + * @property tapMaxTime + * @type {Number} + * @default 250 + */ + tapMaxTime: 250, - switchConfigurations.apply(this); + /** + * max distance of movement of a tap, this is for the slow tappers + * @property tapMaxDistance + * @type {Number} + * @default 10 + */ + tapMaxDistance: 10, - radioButton1.onchange = switchConfigurations.bind(this); - radioButton2.onchange = switchConfigurations.bind(this); - radioButton3.onchange = switchConfigurations.bind(this); - } - }; + /** + * always trigger the `tap` event, even while double-tapping + * @property tapAlways + * @type {Boolean} + * @default true + */ + tapAlways: true, - /** - * This overwrites the this.constants. - * - * @param constantsVariableName - * @param value - * @private - */ - 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; - } - }; + /** + * max distance between two taps + * @property doubleTapDistance + * @type {Number} + * @default 20 + */ + doubleTapDistance: 20, + /** + * max time between two taps + * @property doubleTapInterval + * @type {Number} + * @default 300 + */ + doubleTapInterval: 300 + } + }; + })('tap'); /** - * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. + * @module gestures */ - 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";} - - this._configureSmoothCurves(false); - } - /** - * this function is used to scramble the nodes + * when a touch is being touched at the page * + * @class Touch + * @static */ - 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; - } - } - 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 is used to generate an options file from the playing with physics system. + * @event touch + * @param {Object} ev */ - 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; - } - 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 += ", " + Hammer.gestures.Touch = { + name: 'touch', + index: -Infinity, + defaults: { + /** + * call preventDefault at touchstart, and makes the element blocking by disabling the scrolling of the page, + * but it improves gestures like transforming and dragging. + * be careful with using this, it can be very annoying for users to be stuck on the page + * @property preventDefault + * @type {Boolean} + * @default false + */ + preventDefault: false, + + /** + * disable mouse events, so only touch (or pen!) input triggers events + * @property preventMouse + * @type {Boolean} + * @default false + */ + preventMouse: false + }, + handler: function touchGesture(ev, inst) { + if(inst.options.preventMouse && ev.pointerType == POINTER_MOUSE) { + ev.stopDetect(); + return; } - } - options += '}}' - } - if (optionsSpecific.length == 0) {options += "}"} - if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { - options += ", smoothCurves: " + this.constants.smoothCurves; - } - 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(inst.options.preventDefault) { + ev.preventDefault(); } - } - 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 += ", " + + if(ev.eventType == EVENT_TOUCH) { + inst.trigger('touch', ev); } - } - options += '}' - } - else { - options += "enabled:true}"; } - options += '};' - } - - - this.optionsDiv.innerHTML = options; - } + }; /** - * this is used to switch between barnesHut, repulsion and hierarchical. + * @module gestures + */ + /** + * User want to scale or rotate with 2 fingers + * Preventing the default browser behavior is a good way to improve feel and working. This can be done with the + * `preventDefault` option. * + * @class Transform + * @static + */ + /** + * @event transform + * @param {Object} ev + */ + /** + * @event transformstart + * @param {Object} ev + */ + /** + * @event transformend + * @param {Object} ev + */ + /** + * @event pinchin + * @param {Object} ev + */ + /** + * @event pinchout + * @param {Object} ev + */ + /** + * @event rotate + * @param {Object} ev */ - 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 generates the ranges depending on the iniital values. - * - * @param id - * @param map - * @param constantsVariableName + * @param {String} name */ - function showValueOfRange (id,map,constantsVariableName) { - var valueId = id + "_value"; - var rangeValue = document.getElementById(id).value; + (function(name) { + var triggered = false; - 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)); - } + function transformGesture(ev, inst) { + switch(ev.eventType) { + case EVENT_START: + triggered = false; + break; - if (constantsVariableName == "hierarchicalLayout_direction" || - constantsVariableName == "hierarchicalLayout_levelSeparation" || - constantsVariableName == "hierarchicalLayout_nodeSpacing") { - this._setupHierarchicalLayout(); - } - this.moving = true; - this.start(); - } + case EVENT_MOVE: + // at least multitouch + if(ev.touches.length < 2) { + return; + } + + var scaleThreshold = Math.abs(1 - ev.scale); + var rotationThreshold = Math.abs(ev.rotation); + + // when the distance we moved is too small we skip this gesture + // or we can be already in dragging + if(scaleThreshold < inst.options.transformMinScale && + rotationThreshold < inst.options.transformMinRotation) { + return; + } + + // we are transforming! + Detection.current.name = name; + + // first time, trigger dragstart event + if(!triggered) { + inst.trigger(name + 'start', ev); + triggered = true; + } + + inst.trigger(name, ev); // basic transform event + + // trigger rotate event + if(rotationThreshold > inst.options.transformMinRotation) { + inst.trigger('rotate', ev); + } + + // trigger pinch event + if(scaleThreshold > inst.options.transformMinScale) { + inst.trigger('pinch', ev); + inst.trigger('pinch' + (ev.scale < 1 ? 'in' : 'out'), ev); + } + break; + + case EVENT_RELEASE: + if(triggered && ev.changedLength < 2) { + inst.trigger(name + 'end', ev); + triggered = false; + } + break; + } + } + + Hammer.gestures.Transform = { + name: name, + index: 45, + defaults: { + /** + * minimal scale factor, no scale is 1, zoomin is to 0 and zoomout until higher then 1 + * @property transformMinScale + * @type {Number} + * @default 0.01 + */ + transformMinScale: 0.01, + + /** + * rotation in degrees + * @property transformMinRotation + * @type {Number} + * @default 1 + */ + transformMinRotation: 1 + }, + + handler: transformGesture + }; + })('transform'); + /** + * @module hammer + */ + // AMD export + if(true) { + !(__WEBPACK_AMD_DEFINE_RESULT__ = function() { + return Hammer; + }.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + // commonjs export + } else if(typeof module !== 'undefined' && module.exports) { + module.exports = Hammer; + // browser export + } else { + window.Hammer = Hammer; + } + })(window); /***/ }, -/* 61 */ +/* 60 */ /***/ function(module, exports, __webpack_require__) { /** @@ -31762,7 +31030,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 62 */ +/* 61 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -32321,7 +31589,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 63 */ +/* 62 */ /***/ function(module, exports, __webpack_require__) { var Node = __webpack_require__(40); @@ -33035,7 +32303,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 64 */ +/* 63 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -33734,7 +33002,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 65 */ +/* 64 */ /***/ function(module, exports, __webpack_require__) { var util = __webpack_require__(1); @@ -33785,541 +33053,1284 @@ return /******/ (function(modules) { // webpackBootstrap this.navigationHammers._new.push(hammer); } - this._navigationReleaseOverload = this._stopMovement; + this._navigationReleaseOverload = this._stopMovement; + + this.navigationHammers.existing = this.navigationHammers._new; + }; + + + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._zoomExtent = function(event) { + this.zoomExtent({duration:700}); + event.stopPropagation(); + }; + + /** + * this stops all movement induced by the navigation buttons + * + * @private + */ + exports._stopMovement = function() { + this._xStopMoving(); + this._yStopMoving(); + this._stopZoom(); + }; + + + /** + * 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(); + }; + + + /** + * 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(); + }; + + + /** + * 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(); + }; + + + /** + * 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(); + }; + + + /** + * 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(); + }; + + + /** + * Stop zooming and unhighlight the zoom controls + * @private + */ + exports._stopZoom = function(event) { + this.zoomIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the Y direction and unHighlight the up and down + * @private + */ + exports._yStopMoving = function(event) { + this.yIncrement = 0; + event && event.preventDefault(); + }; + + + /** + * Stop moving in the X direction and unHighlight left and right. + * @private + */ + exports._xStopMoving = function(event) { + this.xIncrement = 0; + event && event.preventDefault(); + }; + + +/***/ }, +/* 65 */ +/***/ function(module, exports, __webpack_require__) { + + 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 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; + + 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; + } + } + } + + // 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({duration:0},true,this.constants.clustering.enabled); + if (!this.constants.clustering.enabled) { + this.start(); + } + } + else { + // setup the system to use hierarchical method. + this._changeConstants(); + + // 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); + } + + } + // check the distribution of the nodes per level. + var distribution = this._getDistribution(); + + // place the nodes on the canvas. This also stablilizes the system. + this._placeNodesByHierarchy(distribution); + + // start the simulation. + this.start(); + } + } + }; + + + /** + * 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; + + // 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 function get the distribution of levels based on hubsize + * + * @returns {Object} + * @private + */ + 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; + } + } + + // 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; + } + } + } + + // 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 allocates nodes in levels based on the recursive branching from the largest hubs. + * + * @param hubsize + * @private + */ + 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 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; + + // 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; + } + } + + // 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; + } + } + }; + + + /** + * 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 + */ + 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"; + } + } + }; + + + /** + * 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; + } + 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); + } + } + } + }; + + + /** + * 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 + */ + 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; + } + if (childNode.level == -1 || childNode.level > level) { + childNode.level = level; + if (childNode.edges.length > 1) { + this._setLevel(level+1, childNode.edges, childNode.id); + } + } + } + }; + + + /** + * this function is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * + * @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; + } + } + + for (var i = 0; i < edges.length; i++) { + if (edges[i].toId == parentId) {childNode = edges[i].from;} + else {childNode = edges[i].to;} - this.navigationHammers.existing = this.navigationHammers._new; + if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { + this._setLevelDirected(childNode.level, childNode.edges, childNode.id); + } + } }; /** - * this stops all movement induced by the navigation buttons + * Unfix nodes * * @private */ - exports._zoomExtent = function(event) { - this.zoomExtent({duration:700}); - event.stopPropagation(); + exports._restoreNodes = function() { + for (var nodeId in this.nodes) { + if (this.nodes.hasOwnProperty(nodeId)) { + this.nodes[nodeId].xFixed = false; + this.nodes[nodeId].yFixed = false; + } + } }; + +/***/ }, +/* 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); + /** - * this stops all movement induced by the navigation buttons + * Toggling barnes Hut calculation on and off. * * @private */ - exports._stopMovement = function() { - this._xStopMoving(); - this._yStopMoving(); - this._stopZoom(); + exports._toggleBarnesHut = function () { + this.constants.physics.barnesHut.enabled = !this.constants.physics.barnesHut.enabled; + this._loadSelectedForceSolver(); + this.moving = true; + this.start(); }; /** - * 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. + * This loads the node force solver based on the barnes hut or repulsion algorithm * * @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._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); - /** - * 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(); - }; + 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; - /** - * 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.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); + } + }; /** - * move the screen right + * 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. + * * @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(); + 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); + } + + // we now start the force calculation + this._calculateForces(); + } }; /** - * Zoom in, using the same method as the movement. + * Calculate the external forces acting on the nodes + * Forces are caused by: edges, repulsing forces between nodes, gravity * @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(); + 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 { + if (this.constants.physics.hierarchicalRepulsion.enabled == true) { + this._calculateHierarchicalSpringForces(); + } + else { + this._calculateSpringForces(); + } + } + } }; /** - * Zoom out + * 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. + * * @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(); + 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]; + } + else { + supportNodes[supportNodeId]._setForce(0, 0); + } + } + } + + for (var idx in this.calculationNodes) { + if (this.calculationNodes.hasOwnProperty(idx)) { + this.calculationNodeIndices.push(idx); + } + } + } + else { + this.calculationNodes = this.nodes; + this.calculationNodeIndices = this.nodeIndices; + } }; /** - * Stop zooming and unhighlight the zoom controls + * this function applies the central gravity effect to keep groups from floating off + * * @private */ - exports._stopZoom = function(event) { - this.zoomIncrement = 0; - event && event.preventDefault(); + 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; + } + } }; + + /** - * Stop moving in the Y direction and unHighlight the up and down + * this function calculates the effects of the springs in the case of unsmooth curves. + * * @private */ - exports._yStopMoving = function(event) { - this.yIncrement = 0; - event && event.preventDefault(); + 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; + } + } + } + } }; + + /** - * Stop moving in the X direction and unHighlight left and right. + * This function calculates the springforces on the nodes, accounting for the support nodes. + * * @private */ - exports._xStopMoving = function(event) { - this.xIncrement = 0; - event && event.preventDefault(); - }; + 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; -/***/ }, -/* 66 */ -/***/ function(module, exports, __webpack_require__) { + combinedClusterSize = node1.clusterSize + node3.clusterSize - 2; - 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 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 is the main function to layout the nodes in a hierarchical way. - * It checks if the node details are supplied correctly + * 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._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; + exports._calculateSpringForce = function (node1, node2, edgeLength) { + var dx, dy, fx, fy, springForce, distance; - 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; - } - } - } + dx = (node1.x - node2.x); + dy = (node1.y - node2.y); + distance = Math.sqrt(dx * dx + dy * dy); - // 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({duration:0},true,this.constants.clustering.enabled); - if (!this.constants.clustering.enabled) { - this.start(); - } - } - else { - // setup the system to use hierarchical method. - this._changeConstants(); + if (distance == 0) { + distance = 0.01; + } - // 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); - } + // the 1/distance is so the fx and fy can be calculated without sine or cosine. + springForce = this.constants.physics.springConstant * (edgeLength - distance) / distance; - } - // check the distribution of the nodes per level. - var distribution = this._getDistribution(); + fx = dx * springForce; + fy = dy * springForce; - // place the nodes on the canvas. This also stablilizes the system. - this._placeNodesByHierarchy(distribution); + node1.fx += fx; + node1.fy += fy; + node2.fx -= fx; + node2.fy -= fy; + }; - // start the simulation. - this.start(); + + 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; + } + } /** - * This function places the nodes on the canvas based on the hierarchial distribution. - * - * @param {Object} distribution | obtained by the function this._getDistribution() + * Load the HTML for the physics config and bind it * @private */ - exports._placeNodesByHierarchy = function(distribution) { - var nodeId, node; + exports._loadPhysicsConfiguration = function () { + if (this.physicsConfiguration === undefined) { + this.backupConstants = {}; + util.deepExtend(this.backupConstants,this.constants); - // start placing all the level 0 nodes first. Then recursively position their branches. - for (var level in distribution) { - if (distribution.hasOwnProperty(level)) { + var maxGravitational = Math.max(20000, (-1 * this.constants.physics.barnesHut.gravitationalConstant) * 10); + var maxSpring = Math.min(0.05, this.constants.physics.barnesHut.springConstant * 10) + + 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"); - 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; + 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"); - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - else { - if (node.yFixed) { - node.y = distribution[level].minPos; - node.yFixed = false; + 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"); - distribution[level].minPos += distribution[level].nodeSpacing; - } - } - this._placeBranchNodes(node.edges,node.id,distribution,node.level); - } - } + 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; } - } - - // stabilize the system after positioning. This function calls zoomExtent. - this._stabilize(); - }; - - /** - * This function get the distribution of levels based on hubsize - * - * @returns {Object} - * @private - */ - exports._getDistribution = function() { - var distribution = {}; - var nodeId, node, level; + var graph_toggleSmooth = document.getElementById("graph_toggleSmooth"); + var graph_repositionNodes = document.getElementById("graph_repositionNodes"); + var graph_generateOptions = document.getElementById("graph_generateOptions"); - // 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; + 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"; } - } - - // 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 { + graph_toggleSmooth.style.background = "#FF8532"; } - } - // 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; - }; + switchConfigurations.apply(this); + radioButton1.onchange = switchConfigurations.bind(this); + radioButton2.onchange = switchConfigurations.bind(this); + radioButton3.onchange = switchConfigurations.bind(this); + } + }; /** - * this function allocates nodes in levels based on the recursive branching from the largest hubs. + * This overwrites the this.constants. * - * @param hubsize + * @param constantsVariableName + * @param value * @private */ - 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; - } - } + exports._overWriteGraphConstants = function (constantsVariableName, value) { + var nameArray = constantsVariableName.split("_"); + if (nameArray.length == 1) { + this.constants[nameArray[0]] = value; } - - // 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); - } - } + 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 allocates nodes in levels based on the direction of the edges - * - * @param hubsize - * @private + * this function is bound to the toggle smooth curves button. That is also why it is not in the prototype. */ - 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; - } - } - - // 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; - } - } - }; + 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";} + this._configureSmoothCurves(false); + } /** - * 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. + * this function is used to scramble the nodes * - * @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"; + 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; } } + 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 { - if (this.constants.smoothCurves.enabled == true) { - this.constants.smoothCurves.type = "horizontal"; - } + this.repositionNodes(); } - }; - + this.moving = true; + this.start(); + } /** - * 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 + * this is used to generate an options file from the playing with physics system. */ - 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; + 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 += '}}' } - else { - childNode = edges[i].to; + 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 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; + 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 += '}}' } - else { - if (childNode.yFixed && childNode.level > parentLevel) { - childNode.yFixed = false; - childNode.y = distribution[childNode.level].minPos; - nodeMoved = true; + if (optionsSpecific.length == 0) {options += "}"} + if (this.constants.smoothCurves != this.backupConstants.smoothCurves) { + options += ", smoothCurves: " + this.constants.smoothCurves; + } + 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 += ", "; + } } + options += '}},'; } - - 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 += '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 += '}' + } + else { + options += "enabled:true}"; } + options += '};' } - }; + this.optionsDiv.innerHTML = options; + } + /** - * this function is called recursively to enumerate the barnches of the largest hubs and give each node a level. + * this is used to switch between barnesHut, repulsion and hierarchical. * - * @param level - * @param edges - * @param parentId - * @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; + 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"; } - if (childNode.level == -1 || childNode.level > level) { - childNode.level = level; - if (childNode.edges.length > 1) { - this._setLevel(level+1, childNode.edges, childNode.id); - } + } + 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 is called recursively to enumerate the branched of the first node and give each node a level based on edge direction + * this generates the ranges depending on the iniital values. * - * @param level - * @param edges - * @param parentId - * @private + * @param id + * @param map + * @param constantsVariableName */ - 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; - } - } + function showValueOfRange (id,map,constantsVariableName) { + var valueId = id + "_value"; + var rangeValue = document.getElementById(id).value; - for (var i = 0; i < edges.length; i++) { - if (edges[i].toId == parentId) {childNode = edges[i].from;} - else {childNode = edges[i].to;} + 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)); + } - if (childNode.edges.length > 1 && childNode.hierarchyEnumerated === false) { - this._setLevelDirected(childNode.level, childNode.edges, childNode.id); - } + if (constantsVariableName == "hierarchicalLayout_direction" || + constantsVariableName == "hierarchicalLayout_levelSeparation" || + constantsVariableName == "hierarchicalLayout_nodeSpacing") { + this._setupHierarchicalLayout(); } - }; + 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__) { /** @@ -34389,7 +34400,7 @@ return /******/ (function(modules) { // webpackBootstrap /***/ }, -/* 68 */ +/* 69 */ /***/ function(module, exports, __webpack_require__) { /** @@ -34548,7 +34559,7 @@ return /******/ (function(modules) { // webpackBootstrap }; /***/ }, -/* 69 */ +/* 70 */ /***/ function(module, exports, __webpack_require__) { /** @@ -34952,19 +34963,6 @@ 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 6ab987ea..ff704cf5 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","giveRange","min","max","total","value","scale","Math","isString","String","isDate","Date","match","ASPDateRegex","exec","isNaN","parse","isDataTable","google","visualization","DataTable","randomUUID","S4","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","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","overrideOpacity","color","opacity","rgb","substr","RGBToHex","red","green","blue","slice","parseColor","isValidRGB","isValidHex","hsv","hexToHSV","lighterColorHSV","h","s","v","darkerColorHSV","darkerColorHex","HSVToHex","lighterColorHex","background","border","highlight","hover","RGBToHSV","minRGB","maxRGB","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","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","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","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","getScale","timeAxis","toScreen","_toScreen","toGlobalScreen","_toGlobalScreen","toTime","_toTime","toGlobalTime","_toGlobalTime","range","currentTime","customTime","itemSet","itemsData","groupsData","setGroups","setItems","_redraw","Core","markDirty","refreshItems","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","setAutoScale","enable","stepYear","stepMonth","stepDay","stepHour","stepMinute","stepSecond","stepMillisecond","snap","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","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","customScalingFunction","nodes","mass","radiusMin","radiusMax","shape","image","fontColor","fontSize","fontFace","fontFill","fontStrokeWidth","fontStrokeColor","fontDrawThreshold","scaleFontWithValue","fontSizeMin","fontSizeMax","fontSizeMaxVisible","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","clusterByZoom","navigation","keyboard","speed","bindToWindow","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","xIncrement","yIncrement","zoomIncrement","_loadPhysicsSystem","_loadSectorSystem","_loadClusterSystem","_loadSelectionSystem","_loadHierarchySystem","_setTranslation","freezeSimulationEnabled","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","specificNodes","node","minY","maxY","minX","maxX","boundingBox","nodeId","_findCenter","initialZoom","disableStart","zoomLevel","positionDefined","predefinedPosition","numberOfNodes","factor","yDistance","xZoomLevel","yZoomLevel","animation","_updateNodeIndexList","_clearNodeIndexList","idx","_unselectAll","_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","_markAllEdgesAsDirty","tabIndex","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","colorDirty","_removeFromSelection","oldEdgesData","oldEdge","disconnect","showInternalIds","_createBezierNodes","via","sectors","dynamicEdges","valueTotal","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","freezeSimulation","freeze","parentEdgeId","internalMultiplier","positionBezierNode","mixin","storePosition","storePositions","dataArray","allowedToMoveX","allowedToMoveY","getPositions","focusOnNode","nodePosition","lockedOnNode","easingFunction","animateView","locked","_transitionRedraw","viewCenter","distanceFromCenter","_classicRedraw","_lockedRedraw","active","getCenterCoordinates","getBoundingBox","getConnectedNodes","nodeList","nodeObj","toId","fromId","networkConstants","widthSelected","labelDimensions","yLine","dirtyLabel","fromBackup","toBackup","originalFromId","originalToId","widthFixed","lengthFixed","controlNodesEnabled","controlNodes","positions","connectedNode","_drawLine","_drawArrow","_drawArrowCenter","_drawDashLine","attachEdge","detachEdge","widthDiff","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","horizontalAlignLeft","verticalAlignTop","baseRadiusValue","radiusFixed","preassignedLevel","hierarchyEnumerated","fx","fy","vx","vy","previousState","resetCluster","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","radiusDiff","fontDiff","_drawImageAtPosition","globalAlpha","drawImage","_drawImageLabel","getTextSize","_swapToImageResizeWhenImageLoaded","diameter","centerX","centerY","_drawRawCircle","circle","clip","textSize","clusterLineWidth","selectionLineWidth","roundRect","database","defaultSize","ellipse","_drawShape","radiusMultiplier","baseline","labelUnderNode","relativeFontSize","strokecolor","inView","clearVelocity","updateVelocity","massBeforeClustering","energyBefore","fontFamily","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","maxGravitational","maxSpring","hierarchicalLayoutDirections","parentElement","rangeElement","radioButton3","graph_repositionNodes","graph_generateOptions","dynamicSmoothCurves","nameArray","maxNumberOfNodes","reposition","maxLevels","forceAggregateHubs","normalizeClusterLevels","increaseClusterLevel","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","decreaseClusterLevel","_expandClusterNode","updateClusters","zoomDirection","recursive","doNotStart","amountOfNodes","detectedZoomingIn","detectedZoomingOut","_collapseSector","_formClusters","_openClusters","_aggregateHubs","handleChains","chainPercentage","_getChainFraction","_reduceAmountOfChains","_getHubSize","_formClustersByHub","_openClustersBySize","openAll","containedNodeId","childNode","_expelChildFromParent","_releaseContainedEdges","_connectEdgeBackToChild","_validateEdges","othersPresent","childNodeId","_repositionBezierNodes","_formClustersByZoom","_forceClustersByZoom","minLength","_addToCluster","_clusterToSmallestNeighbour","smallestNeighbour","smallestNeighbourNode","neighbour","onlyEqual","_formClusterFromHub","hubNode","absorptionSizeOffset","allowCluster","edgesIdarray","amountOfInitialEdges","children","childrenIds","_addToContainedEdges","_connectEdgeToCluster","_containCircularEdgesFromNode","massBefore","_addToReroutedEdges","maxLevel","minLevel","clusterLevel","targetLevel","average","averageSquared","hubCounter","largestHub","variance","standardDeviation","fraction","reduceAmount","chains","_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","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","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 +{"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","refresh","newIds","added","removed","viewOptions","getArguments","defaultFilter","dataSet","updated","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","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","clusterByZoom","navigation","keyboard","speed","bindToWindow","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","tabIndex","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","increaseClusterLevel","decreaseClusterLevel","forceAggregateHubs","normalizeClusterLevels","_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","openCluster","isMovingBeforeClustering","_nodeInActiveArea","_addSector","_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","children","childrenIds","_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","webpackContext","req","resolve","repulsingForce","a_base","minimumDistance","steepness","springFx","springFy","totalFx","totalFy","correctionFx","correctionFy","nodeCount","_formBarnesHutTree","_getForceContribution","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 diff --git a/dist/vis.min.css b/dist/vis.min.css index 338598a3..6a943d70 100644 --- a/dist/vis.min.css +++ b/dist/vis.min.css @@ -1 +1 @@ -.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;max-width:100%;overflow:hidden}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;border-left:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid;box-shadow:3px 3px 10px rgba(128,128,128,.5)} \ No newline at end of file +.vis .overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10}.vis-active{box-shadow:0 0 10px #86d5f8}.vis [class*=span]{min-height:0;width:auto}.vis.timeline.root{position:relative;border:1px solid #bfbfbf;overflow:hidden;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel{position:absolute;padding:0;margin:0;box-sizing:border-box}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right,.vis.timeline .vispanel.top{border:1px #bfbfbf}.vis.timeline .vispanel.center,.vis.timeline .vispanel.left,.vis.timeline .vispanel.right{border-top-style:solid;border-bottom-style:solid;overflow:hidden}.vis.timeline .vispanel.bottom,.vis.timeline .vispanel.center,.vis.timeline .vispanel.top{border-left-style:solid;border-right-style:solid}.vis.timeline .background{overflow:hidden}.vis.timeline .vispanel>.content{position:relative}.vis.timeline .vispanel .shadow{position:absolute;width:100%;height:1px;box-shadow:0 0 10px rgba(0,0,0,.8)}.vis.timeline .vispanel .shadow.top{top:-1px;left:0}.vis.timeline .vispanel .shadow.bottom{bottom:-1px;left:0}.vis.timeline .labelset{position:relative;overflow:hidden;box-sizing:border-box}.vis.timeline .labelset .vlabel{position:relative;left:0;top:0;width:100%;color:#4d4d4d;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .labelset .vlabel:last-child{border-bottom:none}.vis.timeline .labelset .vlabel .inner{display:inline-block;padding:5px}.vis.timeline .labelset .vlabel .inner.hidden{padding:0}.vis.timeline .itemset{position:relative;padding:0;margin:0;box-sizing:border-box}.vis.timeline .itemset .background,.vis.timeline .itemset .foreground{position:absolute;width:100%;height:100%;overflow:visible}.vis.timeline .axis{position:absolute;width:100%;height:0;left:0;z-index:1}.vis.timeline .foreground .group{position:relative;box-sizing:border-box;border-bottom:1px solid #bfbfbf}.vis.timeline .foreground .group:last-child{border-bottom:none}.vis.timeline .item{position:absolute;color:#1A1A1A;border-color:#97B0F8;border-width:1px;background-color:#D5DDF6;display:inline-block;padding:5px}.vis.timeline .item.selected{border-color:#FFC200;background-color:#FFF785;z-index:2}.vis.timeline .editable .item.selected{cursor:move}.vis.timeline .item.point.selected{background-color:#FFF785}.vis.timeline .item.box{text-align:center;border-style:solid;border-radius:2px}.vis.timeline .item.point{background:0 0}.vis.timeline .item.dot{position:absolute;padding:0;border-width:4px;border-style:solid;border-radius:4px}.vis.timeline .item.range{border-style:solid;border-radius:2px;box-sizing:border-box}.vis.timeline .item.background{overflow:hidden;border:none;background-color:rgba(213,221,246,.4);box-sizing:border-box;padding:0;margin:0}.vis.timeline .item.range .content{position:relative;display:inline-block;max-width:100%;overflow:hidden}.vis.timeline .item.background .content{position:absolute;display:inline-block;overflow:hidden;max-width:100%;margin:5px}.vis.timeline .item.line{padding:0;position:absolute;width:0;border-left-width:1px;border-left-style:solid}.vis.timeline .item .content{white-space:nowrap;overflow:hidden}.vis.timeline .item .delete{background:url(img/timeline/delete.png) top center no-repeat;position:absolute;width:24px;height:24px;top:0;right:-24px;cursor:pointer}.vis.timeline .item.range .drag-left{position:absolute;width:24px;height:100%;top:0;left:-4px;cursor:w-resize}.vis.timeline .item.range .drag-right{position:absolute;width:24px;height:100%;top:0;right:-4px;cursor:e-resize}.vis.timeline .timeaxis{position:relative;overflow:hidden}.vis.timeline .timeaxis.foreground{top:0;left:0;width:100%}.vis.timeline .timeaxis.background{position:absolute;top:0;left:0;width:100%;height:100%}.vis.timeline .timeaxis .text{position:absolute;color:#4d4d4d;padding:3px;white-space:nowrap}.vis.timeline .timeaxis .text.measure{position:absolute;padding-left:0;padding-right:0;margin-left:0;margin-right:0;visibility:hidden}.vis.timeline .timeaxis .grid.vertical{position:absolute;border-left:1px solid}.vis.timeline .timeaxis .grid.minor{border-color:#e5e5e5}.vis.timeline .timeaxis .grid.major{border-color:#bfbfbf}.vis.timeline .currenttime{background-color:#FF7F6E;width:2px;z-index:1}.vis.timeline .customtime{background-color:#6E94FF;width:2px;cursor:move;z-index:1}.vis.timeline .vispanel.background.horizontal .grid.horizontal{position:absolute;width:100%;height:0;border-bottom:1px solid}.vis.timeline .vispanel.background.horizontal .grid.minor{border-color:#e5e5e5}.vis.timeline .vispanel.background.horizontal .grid.major{border-color:#bfbfbf}.vis.timeline .dataaxis .yAxis.major{width:100%;position:absolute;color:#4d4d4d;white-space:nowrap}.vis.timeline .dataaxis .yAxis.major.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.minor{position:absolute;width:100%;color:#bebebe;white-space:nowrap}.vis.timeline .dataaxis .yAxis.minor.measure{padding:0;margin:0;border:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title{position:absolute;color:#4d4d4d;white-space:nowrap;bottom:20px;text-align:center}.vis.timeline .dataaxis .yAxis.title.measure{padding:0;margin:0;visibility:hidden;width:auto}.vis.timeline .dataaxis .yAxis.title.left{bottom:0;-webkit-transform-origin:left top;-moz-transform-origin:left top;-ms-transform-origin:left top;-o-transform-origin:left top;transform-origin:left bottom;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-ms-transform:rotate(-90deg);-o-transform:rotate(-90deg);transform:rotate(-90deg)}.vis.timeline .dataaxis .yAxis.title.right{bottom:0;-webkit-transform-origin:right bottom;-moz-transform-origin:right bottom;-ms-transform-origin:right bottom;-o-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg)}.vis.timeline .legend{background-color:rgba(247,252,255,.65);padding:5px;border-color:#b3b3b3;border-style:solid;border-width:1px;box-shadow:2px 2px 10px rgba(154,154,154,.55)}.vis.timeline .legendText{white-space:nowrap;display:inline-block}.vis.timeline .graphGroup0{fill:#4f81bd;fill-opacity:0;stroke-width:2px;stroke:#4f81bd}.vis.timeline .graphGroup1{fill:#f79646;fill-opacity:0;stroke-width:2px;stroke:#f79646}.vis.timeline .graphGroup2{fill:#8c51cf;fill-opacity:0;stroke-width:2px;stroke:#8c51cf}.vis.timeline .graphGroup3{fill:#75c841;fill-opacity:0;stroke-width:2px;stroke:#75c841}.vis.timeline .graphGroup4{fill:#ff0100;fill-opacity:0;stroke-width:2px;stroke:#ff0100}.vis.timeline .graphGroup5{fill:#37d8e6;fill-opacity:0;stroke-width:2px;stroke:#37d8e6}.vis.timeline .graphGroup6{fill:#042662;fill-opacity:0;stroke-width:2px;stroke:#042662}.vis.timeline .graphGroup7{fill:#00ff26;fill-opacity:0;stroke-width:2px;stroke:#00ff26}.vis.timeline .graphGroup8{fill:#f0f;fill-opacity:0;stroke-width:2px;stroke:#f0f}.vis.timeline .graphGroup9{fill:#8f3938;fill-opacity:0;stroke-width:2px;stroke:#8f3938}.vis.timeline .fill{fill-opacity:.1;stroke:none}.vis.timeline .bar{fill-opacity:.5;stroke-width:1px}.vis.timeline .point{stroke-width:2px;fill-opacity:1}.vis.timeline .legendBackground{stroke-width:1px;fill-opacity:.9;fill:#fff;stroke:#c2c2c2}.vis.timeline .outline{stroke-width:1px;fill-opacity:1;fill:#fff;stroke:#e5e5e5}.vis.timeline .iconFill{fill-opacity:.3;stroke:none}div.network-manipulationDiv{border-width:0;border-bottom:1px;border-style:solid;border-color:#d6d9d8;background:#fff;background:-moz-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#fff),color-stop(48%,#fcfcfc),color-stop(50%,#fafafa),color-stop(100%,#fcfcfc));background:-webkit-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-o-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:-ms-linear-gradient(top,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);background:linear-gradient(to bottom,#fff 0,#fcfcfc 48%,#fafafa 50%,#fcfcfc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#fcfcfc', GradientType=0);position:absolute;left:0;top:0;width:100%;height:30px}div.network-manipulation-editMode{position:absolute;left:0;top:0;height:30px;margin-top:20px}div.network-manipulation-closeDiv{position:absolute;right:0;top:0;width:30px;height:30px;background-position:20px 3px;background-repeat:no-repeat;background-image:url(img/network/cross.png);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-manipulation-closeDiv:hover{opacity:.6}span.network-manipulationUI{font-family:verdana;font-size:12px;-moz-border-radius:15px;border-radius:15px;display:inline-block;background-position:0 0;background-repeat:no-repeat;height:24px;margin:-14px 0 0 10px;vertical-align:middle;cursor:pointer;padding:0 8px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}span.network-manipulationUI:hover{box-shadow:1px 1px 8px rgba(0,0,0,.2)}span.network-manipulationUI:active{box-shadow:1px 1px 8px rgba(0,0,0,.5)}span.network-manipulationUI.back{background-image:url(img/network/backIcon.png)}span.network-manipulationUI.none:hover{box-shadow:1px 1px 8px transparent;cursor:default}span.network-manipulationUI.none:active{box-shadow:1px 1px 8px transparent}span.network-manipulationUI.none{padding:0}span.network-manipulationUI.notification{margin:2px;font-weight:700}span.network-manipulationUI.add{background-image:url(img/network/addNodeIcon.png)}span.network-manipulationUI.edit{background-image:url(img/network/editIcon.png)}span.network-manipulationUI.edit.editmode{background-color:#fcfcfc;border-style:solid;border-width:1px;border-color:#ccc}span.network-manipulationUI.connect{background-image:url(img/network/connectIcon.png)}span.network-manipulationUI.delete{background-image:url(img/network/deleteIcon.png)}span.network-manipulationLabel{margin:0 0 0 23px;line-height:25px}div.network-seperatorLine{display:inline-block;width:1px;height:20px;background-color:#bdbdbd;margin:5px 7px 0 15px}div.network-navigation_wrapper{position:absolute;left:0;top:0;width:100%;height:100%}div.network-navigation{width:34px;height:34px;-moz-border-radius:17px;border-radius:17px;position:absolute;display:inline-block;background-position:2px 2px;background-repeat:no-repeat;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}div.network-navigation:hover{box-shadow:0 0 3px 3px rgba(56,207,21,.3)}div.network-navigation:active{box-shadow:0 0 1px 3px rgba(56,207,21,.95)}div.network-navigation.up{background-image:url(img/network/upArrow.png);bottom:50px;left:55px}div.network-navigation.down{background-image:url(img/network/downArrow.png);bottom:10px;left:55px}div.network-navigation.left{background-image:url(img/network/leftArrow.png);bottom:10px;left:15px}div.network-navigation.right{background-image:url(img/network/rightArrow.png);bottom:10px;left:95px}div.network-navigation.zoomIn{background-image:url(img/network/plus.png);bottom:10px;right:15px}div.network-navigation.zoomOut{background-image:url(img/network/minus.png);bottom:10px;right:55px}div.network-navigation.zoomExtends{background-image:url(img/network/zoomExtends.png);bottom:50px;right:15px}div.network-tooltip{position:absolute;visibility:hidden;padding:5px;white-space:nowrap;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;border:1px solid;box-shadow:3px 3px 10px rgba(128,128,128,.5)} \ No newline at end of file diff --git a/lib/network/Network.js b/lib/network/Network.js index 397fffc5..0280b2df 100644 --- a/lib/network/Network.js +++ b/lib/network/Network.js @@ -945,10 +945,6 @@ Network.prototype._createKeyBinds = function() { this.keycharm.bind("pagedown",this._zoomOut.bind(me),"keydown"); this.keycharm.bind("pagedown",this._stopZoom.bind(me), "keyup"); } - //this.keycharm.bind("1",this.increaseClusterLevel.bind(me), "keydown"); - //this.keycharm.bind("2",this.decreaseClusterLevel.bind(me), "keydown"); - //this.keycharm.bind("3",this.forceAggregateHubs.bind(me,true),"keydown"); - //this.keycharm.bind("4",this.normalizeClusterLevels.bind(me), "keydown"); if (this.constants.dataManipulation.enabled == true) { this.keycharm.bind("esc",this._createManipulatorBar.bind(me)); @@ -2418,6 +2414,9 @@ if (typeof window !== 'undefined') { * Schedule a animation step with the refreshrate interval. */ Network.prototype.start = function() { + if (this.freezeSimulationEnabled == true) { + this.moving = false; + } if (this.moving == true || this.xIncrement != 0 || this.yIncrement != 0 || this.zoomIncrement != 0 || this.animating == true) { if (!this.timer) { if (this.requiresTimeout == true) {