diff --git a/dist/vis.js b/dist/vis.js index f798bf3e..2ed5fff0 100644 --- a/dist/vis.js +++ b/dist/vis.js @@ -162,9 +162,11 @@ 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. + 'use strict'; var moment = __webpack_require__(40); + var uuid = __webpack_require__(109); /** * Test whether given object is a number @@ -245,12 +247,7 @@ return /******/ (function(modules) { // webpackBootstrap * @return {String} uuid */ exports.randomUUID = function () { - var S4 = function S4() { - return Math.floor(Math.random() * 65536 /* 65536 */ - ).toString(16); - }; - - return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4(); + return uuid.v4(); }; /** @@ -10983,17 +10980,15 @@ return /******/ (function(modules) { // webpackBootstrap width: '40px', visible: true, alignZeros: true, - customRange: { - left: { min: undefined, max: undefined }, - right: { min: undefined, max: undefined } - }, - title: { - left: { text: undefined }, - right: { text: undefined } + left: { + range: { min: undefined, max: undefined }, + format: { decimals: undefined }, + title: { text: undefined, style: undefined } }, - format: { - left: { decimals: undefined }, - right: { decimals: undefined } + right: { + range: { min: undefined, max: undefined }, + format: { decimals: undefined }, + title: { text: undefined, style: undefined } } }; @@ -11020,7 +11015,6 @@ return /******/ (function(modules) { // webpackBootstrap this.hidden = false; this.stepPixels = 25; - this.stepPixelsForced = 25; this.zeroCrossing = -1; this.amountOfSteps = -1; @@ -11067,7 +11061,7 @@ return /******/ (function(modules) { // webpackBootstrap 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']; + var fields = ['orientation', 'showMinorLabels', 'showMajorLabels', 'icons', 'majorLinesOffset', 'minorLinesOffset', 'labelOffsetX', 'labelOffsetY', 'iconWidth', 'width', 'visible', 'left', 'right', 'alignZeros']; util.selectiveExtend(fields, this.options, options); this.minWidth = Number(('' + this.options.width).replace('px', '')); @@ -11311,7 +11305,7 @@ return /******/ (function(modules) { // webpackBootstrap rangeEnd = this.range.end; } - this.step = step = new DataStep(rangeStart, rangeEnd, minimumStep, this.dom.frame.offsetHeight, this.options.customRange[this.options.orientation], this.master === false && this.options.alignZeros // does the step have to align zeros? only if not master and the options is on + this.step = step = new DataStep(rangeStart, rangeEnd, minimumStep, this.dom.frame.offsetHeight, this.options[this.options.orientation].range, this.master === false && this.options.alignZeros // does the step have to align zeros? only if not master and the options is on ); // the slave axis needs to use the same horizontal lines as the master axis. @@ -11332,8 +11326,8 @@ return /******/ (function(modules) { // webpackBootstrap // Get the number of decimal places var decimals; - if (this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; + if (this.options[orientation].format !== undefined) { + decimals = this.options[orientation].format.decimals; } this.maxLabelSize = 0; @@ -11377,7 +11371,7 @@ return /******/ (function(modules) { // webpackBootstrap // 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) { + if (this.options[orientation].title !== undefined && this.options[orientation].title.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; @@ -11484,14 +11478,14 @@ return /******/ (function(modules) { // webpackBootstrap 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) { + if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) { var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); title.className = 'vis-y-axis vis-title vis-' + orientation; - title.innerHTML = this.options.title[orientation].text; + title.innerHTML = this.options[orientation].title.text; // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); + if (this.options[orientation].title.style !== undefined) { + util.addCssText(title, this.options[orientation].title.style); } if (orientation === 'left') { @@ -14270,25 +14264,16 @@ return /******/ (function(modules) { // webpackBootstrap 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;' - // } - //} + left: { + range: { min: undefined, max: undefined }, + format: { decimals: undefined }, + title: { text: undefined, style: undefined } + }, + right: { + range: { min: undefined, max: undefined }, + format: { decimals: undefined }, + title: { text: undefined, style: undefined } + } }, legend: { enabled: false, @@ -39184,6 +39169,221 @@ return /******/ (function(modules) { // webpackBootstrap exports['default'] = EdgeBase; module.exports = exports['default']; +/***/ }, +/* 109 */ +/***/ function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(global) {'use strict'; + + var _rng; + + var globalVar = window !== undefined ? window : global; + if (globalVar.crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + _rng = function whatwgRNG() { + crypto.getRandomValues(_rnds8); + return _rnds8; + }; + } + + if (!_rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var _rnds = new Array(16); + _rng = function () { + for (var i = 0, r; i < 16; i++) { + if ((i & 3) === 0) r = Math.random() * 4294967296; + _rnds[i] = r >>> ((i & 3) << 3) & 255; + } + + return _rnds; + }; + } + + // uuid.js + // + // Copyright (c) 2010-2012 Robert Kieffer + // MIT License - http://opensource.org/licenses/mit-license.php + + // Unique ID creation requires a high quality random # generator. We feature + // detect to determine the best RNG source, normalizing to a function that + // returns 128-bits of randomness, since that's what's usually required + + //var _rng = require('./rng'); + + // Maps for number <-> hex string conversion + var _byteToHex = []; + var _hexToByte = {}; + for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 256).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; + } + + // **`parse()` - Parse a UUID into it's component bytes** + function parse(s, buf, offset) { + var i = buf && offset || 0, + ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function (oct) { + if (ii < 16) { + // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; + } + + // **`unparse()` - Convert UUID byte array (ala parse()) into a string** + function unparse(buf, offset) { + var i = offset || 0, + bth = _byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + '-' + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]] + bth[buf[i++]]; + } + + // **`v1()` - Generate time-based UUID** + // + // Inspired by https://github.com/LiosK/UUID.js + // and http://docs.python.org/library/uuid.html + + // random #'s we need to init node and clockseq + var _seedBytes = _rng(); + + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + var _nodeId = [_seedBytes[0] | 1, _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5]]; + + // Per 4.2.2, randomize (14 bit) clockseq + var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 16383; + + // Previous uuid creation time + var _lastMSecs = 0, + _lastNSecs = 0; + + // See https://github.com/broofa/node-uuid for API details + function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 16383; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 268435455) * 10000 + nsecs) % 4294967296; + b[i++] = tl >>> 24 & 255; + b[i++] = tl >>> 16 & 255; + b[i++] = tl >>> 8 & 255; + b[i++] = tl & 255; + + // `time_mid` + var tmh = msecs / 4294967296 * 10000 & 268435455; + b[i++] = tmh >>> 8 & 255; + b[i++] = tmh & 255; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 15 | 16; // include version + b[i++] = tmh >>> 16 & 255; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 128; + + // `clock_seq_low` + b[i++] = clockseq & 255; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; n++) { + b[i + n] = node[n]; + } + + return buf ? buf : unparse(b); + } + + // **`v4()` - Generate random UUID** + + // See https://github.com/broofa/node-uuid for API details + function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + var i = buf && offset || 0; + + if (typeof options == 'string') { + buf = options == 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || _rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ii++) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || unparse(rnds); + } + + // Export public API + var uuid = v4; + uuid.v1 = v1; + uuid.v4 = v4; + uuid.parse = parse; + uuid.unparse = unparse; + + module.exports = uuid; + /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) + /***/ } /******/ ]) }); diff --git a/docs/network/edges.html b/docs/network/edges.html index ac98d30e..bdcc6333 100644 --- a/docs/network/edges.html +++ b/docs/network/edges.html @@ -40,6 +40,7 @@ ================================================== --> + - diff --git a/docs/network/groups.html b/docs/network/groups.html index e2a36675..cd564c9f 100644 --- a/docs/network/groups.html +++ b/docs/network/groups.html @@ -38,6 +38,7 @@ ================================================== --> + - diff --git a/docs/network/interaction.html b/docs/network/interaction.html index c467f7a8..4a379e75 100644 --- a/docs/network/interaction.html +++ b/docs/network/interaction.html @@ -32,12 +32,14 @@ + diff --git a/docs/network/layout.html b/docs/network/layout.html index 2c7aa854..46ab4887 100644 --- a/docs/network/layout.html +++ b/docs/network/layout.html @@ -33,12 +33,14 @@ ================================================== --> + diff --git a/docs/network/manipulation.html b/docs/network/manipulation.html index 2978259d..b5db3941 100644 --- a/docs/network/manipulation.html +++ b/docs/network/manipulation.html @@ -32,12 +32,14 @@ + diff --git a/docs/network/new_network.html b/docs/network/new_network.html index 4d5360ac..00960874 100644 --- a/docs/network/new_network.html +++ b/docs/network/new_network.html @@ -50,21 +50,20 @@ - diff --git a/docs/network/nodes.html b/docs/network/nodes.html index 83636d41..44ee3a67 100644 --- a/docs/network/nodes.html +++ b/docs/network/nodes.html @@ -49,21 +49,20 @@ - diff --git a/docs/network/physics.html b/docs/network/physics.html index c0456b57..71c978ef 100644 --- a/docs/network/physics.html +++ b/docs/network/physics.html @@ -33,12 +33,14 @@ + diff --git a/docs/network/rendering.html b/docs/network/rendering.html index 1ead9c28..22c25419 100644 --- a/docs/network/rendering.html +++ b/docs/network/rendering.html @@ -32,12 +32,14 @@ + diff --git a/docs/network/selection.html b/docs/network/selection.html index 109522a6..b0b3aa91 100644 --- a/docs/network/selection.html +++ b/docs/network/selection.html @@ -33,12 +33,14 @@ + diff --git a/docs/network/view.html b/docs/network/view.html index 9a8784e7..b15c38e0 100644 --- a/docs/network/view.html +++ b/docs/network/view.html @@ -32,12 +32,14 @@ + diff --git a/examples/graph2d/05_bothAxis.html b/examples/graph2d/05_bothAxis.html index 526cb71c..dafc7189 100644 --- a/examples/graph2d/05_bothAxis.html +++ b/examples/graph2d/05_bothAxis.html @@ -2,7 +2,6 @@ Graph2d | Both Axis Example - - + + diff --git a/lib/module/uuid.js b/lib/module/uuid.js new file mode 100644 index 00000000..eedbd934 --- /dev/null +++ b/lib/module/uuid.js @@ -0,0 +1,214 @@ + +var _rng; + +var globalVar = window !== undefined ? window : global; +if (globalVar.crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + _rng = function whatwgRNG() { + crypto.getRandomValues(_rnds8); + return _rnds8; + }; +} + +if (!_rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var _rnds = new Array(16); + _rng = function() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return _rnds; + }; +} + +// uuid.js +// +// Copyright (c) 2010-2012 Robert Kieffer +// MIT License - http://opensource.org/licenses/mit-license.php + +// Unique ID creation requires a high quality random # generator. We feature +// detect to determine the best RNG source, normalizing to a function that +// returns 128-bits of randomness, since that's what's usually required + +//var _rng = require('./rng'); + +// Maps for number <-> hex string conversion +var _byteToHex = []; +var _hexToByte = {}; +for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; +} + +// **`parse()` - Parse a UUID into it's component bytes** +function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; +} + +// **`unparse()` - Convert UUID byte array (ala parse()) into a string** +function unparse(buf, offset) { + var i = offset || 0, bth = _byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; +} + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +// random #'s we need to init node and clockseq +var _seedBytes = _rng(); + +// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) +var _nodeId = [ + _seedBytes[0] | 0x01, + _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] +]; + +// Per 4.2.2, randomize (14 bit) clockseq +var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; + +// Previous uuid creation time +var _lastMSecs = 0, _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; n++) { + b[i + n] = node[n]; + } + + return buf ? buf : unparse(b); +} + +// **`v4()` - Generate random UUID** + +// See https://github.com/broofa/node-uuid for API details +function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options == 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || _rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ii++) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || unparse(rnds); +} + +// Export public API +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; +uuid.parse = parse; +uuid.unparse = unparse; + +module.exports = uuid; diff --git a/lib/timeline/component/DataAxis.js b/lib/timeline/component/DataAxis.js index 1d6c2154..b5080564 100644 --- a/lib/timeline/component/DataAxis.js +++ b/lib/timeline/component/DataAxis.js @@ -28,17 +28,15 @@ function DataAxis (body, options, svg, linegraphOptions) { width: '40px', visible: true, alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} + left:{ + range: {min:undefined,max:undefined}, + format: {decimals:undefined}, + title: {text:undefined,style:undefined} }, - title: { - left: {text:undefined}, - right: {text:undefined} - }, - format: { - left: {decimals: undefined}, - right: {decimals: undefined} + right:{ + range: {min:undefined,max:undefined}, + format: {decimals:undefined}, + title: {text:undefined,style:undefined} } }; @@ -65,7 +63,6 @@ function DataAxis (body, options, svg, linegraphOptions) { this.hidden = false; this.stepPixels = 25; - this.stepPixelsForced = 25; this.zeroCrossing = -1; this.amountOfSteps = -1; @@ -127,9 +124,8 @@ DataAxis.prototype.setOptions = function (options) { 'iconWidth', 'width', 'visible', - 'customRange', - 'title', - 'format', + 'left', + 'right', 'alignZeros' ]; util.selectiveExtend(fields, this.options, options); @@ -388,7 +384,7 @@ DataAxis.prototype._redrawLabels = function () { rangeEnd, minimumStep, this.dom.frame.offsetHeight, - this.options.customRange[this.options.orientation], + this.options[this.options.orientation].range, this.master === false && this.options.alignZeros // does the step have to align zeros? only if not master and the options is on ); @@ -412,8 +408,8 @@ DataAxis.prototype._redrawLabels = function () { // Get the number of decimal places var decimals; - if(this.options.format[orientation] !== undefined) { - decimals = this.options.format[orientation].decimals; + if(this.options[orientation].format !== undefined) { + decimals = this.options[orientation].format.decimals; } this.maxLabelSize = 0; @@ -459,7 +455,7 @@ DataAxis.prototype._redrawLabels = function () { // 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) { + if (this.options[orientation].title !== undefined && this.options[orientation].title.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; @@ -569,14 +565,14 @@ 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) { + if (this.options[orientation].title !== undefined && this.options[orientation].title.text !== undefined) { var title = DOMutil.getDOMElement('div', this.DOMelements.title, this.dom.frame); title.className = 'vis-y-axis vis-title vis-' + orientation; - title.innerHTML = this.options.title[orientation].text; + title.innerHTML = this.options[orientation].title.text; // Add style - if provided - if (this.options.title[orientation].style !== undefined) { - util.addCssText(title, this.options.title[orientation].style); + if (this.options[orientation].title.style !== undefined) { + util.addCssText(title, this.options[orientation].title.style); } if (orientation === 'left') { diff --git a/lib/timeline/component/LineGraph.js b/lib/timeline/component/LineGraph.js index 45bf9b6c..8e2cc573 100644 --- a/lib/timeline/component/LineGraph.js +++ b/lib/timeline/component/LineGraph.js @@ -54,25 +54,16 @@ function LineGraph(body, options) { width: '40px', visible: true, alignZeros: true, - customRange: { - left: {min:undefined, max:undefined}, - right: {min:undefined, max:undefined} + left:{ + range: {min:undefined,max:undefined}, + format: {decimals:undefined}, + title: {text:undefined,style:undefined} + }, + right:{ + range: {min:undefined,max:undefined}, + format: {decimals:undefined}, + title: {text:undefined,style: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, diff --git a/lib/util.js b/lib/util.js index 62ec00c6..3e3c2649 100644 --- a/lib/util.js +++ b/lib/util.js @@ -2,7 +2,10 @@ // first check if moment.js is already loaded in the browser window, if so, // use this instance. Else, load via commonjs. + + var moment = require('./module/moment'); +var uuid = require('./module/uuid'); /** * Test whether given object is a number @@ -90,19 +93,7 @@ exports.isDataTable = function(object) { * @return {String} uuid */ exports.randomUUID = function() { - var S4 = function () { - return Math.floor( - Math.random() * 0x10000 /* 65536 */ - ).toString(16); - }; - - return ( - S4() + S4() + '-' + - S4() + '-' + - S4() + '-' + - S4() + '-' + - S4() + S4() + S4() - ); + return uuid.v4(); }; diff --git a/package.json b/package.json index 3c94643d..9cb0e4ec 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "emitter-component": "^1.1.1", "hammerjs": "^2.0.4", "keycharm": "^0.2.0", + "uuid": "^2.0.1", "moment": "^2.10.2", "propagating-hammerjs": "^1.4.1" },