Move documentation
This commit is contained in:
14
documentation/frontend/js/compodoc.js
Normal file
14
documentation/frontend/js/compodoc.js
Normal file
@@ -0,0 +1,14 @@
|
||||
var compodoc = {
|
||||
EVENTS: {
|
||||
READY: 'compodoc.ready',
|
||||
SEARCH_READY: 'compodoc.search.ready'
|
||||
}
|
||||
};
|
||||
|
||||
Object.assign( compodoc, EventDispatcher.prototype );
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
compodoc.dispatchEvent({
|
||||
type: compodoc.EVENTS.READY
|
||||
});
|
||||
});
|
44
documentation/frontend/js/lazy-load-graphs.js
Normal file
44
documentation/frontend/js/lazy-load-graphs.js
Normal file
@@ -0,0 +1,44 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var lazyGraphs = [].slice.call(document.querySelectorAll('[lazy]'));
|
||||
var active = false;
|
||||
|
||||
var lazyLoad = function() {
|
||||
if (active === false) {
|
||||
active = true;
|
||||
|
||||
setTimeout(function() {
|
||||
lazyGraphs.forEach(function(lazyGraph) {
|
||||
if (
|
||||
lazyGraph.getBoundingClientRect().top <= window.innerHeight &&
|
||||
lazyGraph.getBoundingClientRect().bottom >= 0 &&
|
||||
getComputedStyle(lazyGraph).display !== 'none'
|
||||
) {
|
||||
lazyGraph.data = lazyGraph.getAttribute('lazy');
|
||||
lazyGraph.removeAttribute('lazy');
|
||||
|
||||
lazyGraphs = lazyGraphs.filter(function(image) { return image !== lazyGraph});
|
||||
|
||||
if (lazyGraphs.length === 0) {
|
||||
document.removeEventListener('scroll', lazyLoad);
|
||||
window.removeEventListener('resize', lazyLoad);
|
||||
window.removeEventListener('orientationchange', lazyLoad);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
active = false;
|
||||
}, 200);
|
||||
}
|
||||
};
|
||||
|
||||
// initial load
|
||||
lazyLoad();
|
||||
|
||||
var container = document.querySelector('.container-fluid.modules');
|
||||
if (container) {
|
||||
container.addEventListener('scroll', lazyLoad);
|
||||
window.addEventListener('resize', lazyLoad);
|
||||
window.addEventListener('orientationchange', lazyLoad);
|
||||
}
|
||||
|
||||
});
|
96
documentation/frontend/js/libs/EventDispatcher.js
Normal file
96
documentation/frontend/js/libs/EventDispatcher.js
Normal file
@@ -0,0 +1,96 @@
|
||||
/**
|
||||
* @author mrdoob / http://mrdoob.com/
|
||||
*/
|
||||
|
||||
var EventDispatcher = function () {};
|
||||
|
||||
Object.assign( EventDispatcher.prototype, {
|
||||
|
||||
addEventListener: function ( type, listener ) {
|
||||
|
||||
if ( this._listeners === undefined ) this._listeners = {};
|
||||
|
||||
var listeners = this._listeners;
|
||||
|
||||
if ( listeners[ type ] === undefined ) {
|
||||
|
||||
listeners[ type ] = [];
|
||||
|
||||
}
|
||||
|
||||
if ( listeners[ type ].indexOf( listener ) === - 1 ) {
|
||||
|
||||
listeners[ type ].push( listener );
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
hasEventListener: function ( type, listener ) {
|
||||
|
||||
if ( this._listeners === undefined ) return false;
|
||||
|
||||
var listeners = this._listeners;
|
||||
|
||||
if ( listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1 ) {
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
},
|
||||
|
||||
removeEventListener: function ( type, listener ) {
|
||||
|
||||
if ( this._listeners === undefined ) return;
|
||||
|
||||
var listeners = this._listeners;
|
||||
var listenerArray = listeners[ type ];
|
||||
|
||||
if ( listenerArray !== undefined ) {
|
||||
|
||||
var index = listenerArray.indexOf( listener );
|
||||
|
||||
if ( index !== - 1 ) {
|
||||
|
||||
listenerArray.splice( index, 1 );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
dispatchEvent: function ( event ) {
|
||||
|
||||
if ( this._listeners === undefined ) return;
|
||||
|
||||
var listeners = this._listeners;
|
||||
var listenerArray = listeners[ event.type ];
|
||||
|
||||
if ( listenerArray !== undefined ) {
|
||||
|
||||
event.target = this;
|
||||
|
||||
var array = [], i = 0;
|
||||
var length = listenerArray.length;
|
||||
|
||||
for ( i = 0; i < length; i ++ ) {
|
||||
|
||||
array[ i ] = listenerArray[ i ];
|
||||
|
||||
}
|
||||
|
||||
for ( i = 0; i < length; i ++ ) {
|
||||
|
||||
array[ i ].call( this, event );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} );
|
292
documentation/frontend/js/libs/bootstrap-native.js
vendored
Normal file
292
documentation/frontend/js/libs/bootstrap-native.js
vendored
Normal file
@@ -0,0 +1,292 @@
|
||||
// Native Javascript for Bootstrap 3 v1.1.0 | © dnp_theme | MIT-License
|
||||
(function(root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD support:
|
||||
define([], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// CommonJS-like:
|
||||
module.exports = factory();
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
var bsn = factory();
|
||||
root.Affix = bsn.Affix;
|
||||
root.Alert = bsn.Alert;
|
||||
root.Button = bsn.Button;
|
||||
root.Carousel = bsn.Carousel;
|
||||
root.Collapse = bsn.Collapse;
|
||||
root.Dropdown = bsn.Dropdown;
|
||||
root.Modal = bsn.Modal;
|
||||
root.Popover = bsn.Popover;
|
||||
root.ScrollSpy = bsn.ScrollSpy;
|
||||
root.Tab = bsn.Tab;
|
||||
root.Tooltip = bsn.Tooltip;
|
||||
}
|
||||
}(this, function() {
|
||||
// Native Javascript for Bootstrap 3 | Internal Utility Functions
|
||||
// by dnp_theme
|
||||
var addClass = function(el, c) { // where modern browsers fail, use classList
|
||||
if (el.classList) {
|
||||
el.classList.add(c);
|
||||
} else {
|
||||
el.className += ' ' + c;
|
||||
el.offsetWidth;
|
||||
}
|
||||
},
|
||||
removeClass = function(el, c) {
|
||||
if (el.classList) {
|
||||
el.classList.remove(c);
|
||||
} else {
|
||||
el.className = el.className.replace(c, '').replace(/^\s+|\s+$/g, '');
|
||||
}
|
||||
},
|
||||
isIE = (new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})").exec(navigator.userAgent) != null) ? parseFloat(RegExp.$1) : false,
|
||||
getClosest = function(el, s) { //el is the element and s the selector of the closest item to find
|
||||
// source http://gomakethings.com/climbing-up-and-down-the-dom-tree-with-vanilla-javascript/
|
||||
var f = s.charAt(0);
|
||||
for (; el && el !== document; el = el.parentNode) { // Get closest match
|
||||
if (f === '.') { // If selector is a class
|
||||
if (document.querySelector(s) !== undefined) {
|
||||
return el;
|
||||
}
|
||||
}
|
||||
if (f === '#') { // If selector is an ID
|
||||
if (el.id === s.substr(1)) {
|
||||
return el;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
|
||||
// tooltip / popover stuff
|
||||
isElementInViewport = function(t) { // check if this.tooltip is in viewport
|
||||
var r = t.getBoundingClientRect();
|
||||
return (
|
||||
r.top >= 0 && r.left >= 0 && r.bottom <= (window.innerHeight || document.documentElement.clientHeight) && r.right <= (window.innerWidth || document.documentElement.clientWidth))
|
||||
},
|
||||
getScroll = function() { // also Affix and scrollSpy uses it
|
||||
return {
|
||||
y: window.pageYOffset || document.documentElement.scrollTop,
|
||||
x: window.pageXOffset || document.documentElement.scrollLeft
|
||||
}
|
||||
},
|
||||
mouseHover = ('onmouseleave' in document) ? ['mouseenter', 'mouseleave'] : ['mouseover', 'mouseout'],
|
||||
tipPositions = /\b(top|bottom|left|top)+/;
|
||||
|
||||
|
||||
// Native Javascript for Bootstrap 3 | Collapse
|
||||
// by dnp_theme
|
||||
// COLLAPSE DEFINITION
|
||||
// ===================
|
||||
var Collapse = function(element, options) {
|
||||
options = options || {};
|
||||
|
||||
this.btn = typeof element === 'object' ? element : document.querySelector(element);
|
||||
this.accordion = null;
|
||||
this.collapse = null;
|
||||
this.duration = 300; // default collapse transition duration
|
||||
this.options = {};
|
||||
this.options.duration = (isIE && isIE < 10) ? 0 : (options.duration || this.duration);
|
||||
var self = this;
|
||||
var getOuterHeight = function(el) {
|
||||
var s = el && (el.currentStyle || window.getComputedStyle(el)),
|
||||
// the getComputedStyle polyfill would do this for us, but we want to make sure it does
|
||||
btp = /px/.test(s.borderTopWidth) ? Math.round(s.borderTopWidth.replace('px', '')) : 0,
|
||||
mtp = /px/.test(s.marginTop) ? Math.round(s.marginTop.replace('px', '')) : 0,
|
||||
mbp = /px/.test(s.marginBottom) ? Math.round(s.marginBottom.replace('px', '')) : 0,
|
||||
mte = /em/.test(s.marginTop) ? Math.round(s.marginTop.replace('em', '') * parseInt(s.fontSize)) : 0,
|
||||
mbe = /em/.test(s.marginBottom) ? Math.round(s.marginBottom.replace('em', '') * parseInt(s.fontSize)) : 0;
|
||||
return el.clientHeight + parseInt(btp) + parseInt(mtp) + parseInt(mbp) + parseInt(mte) + parseInt(mbe); //we need an accurate margin value
|
||||
};
|
||||
|
||||
this.toggle = function(e) {
|
||||
e.preventDefault();
|
||||
|
||||
if (!/\bin/.test(self.collapse.className)) {
|
||||
self.open();
|
||||
} else {
|
||||
self.close();
|
||||
}
|
||||
};
|
||||
this.close = function() {
|
||||
this._close(this.collapse);
|
||||
addClass(this.btn, 'collapsed');
|
||||
};
|
||||
this.open = function() {
|
||||
this._open(this.collapse);
|
||||
removeClass(this.btn, 'collapsed');
|
||||
|
||||
if (this.accordion !== null) {
|
||||
var active = this.accordion.querySelectorAll('.collapse.in'),
|
||||
al = active.length,
|
||||
i = 0;
|
||||
for (i; i < al; i++) {
|
||||
if (active[i] !== this.collapse) this._close(active[i]);
|
||||
}
|
||||
}
|
||||
};
|
||||
this._open = function(c) {
|
||||
this.removeEvent();
|
||||
addClass(c, 'in');
|
||||
c.setAttribute('aria-expanded', 'true');
|
||||
addClass(c, 'collapsing');
|
||||
setTimeout(function() {
|
||||
c.style.height = self.getMaxHeight(c) + 'px'
|
||||
c.style.overflowY = 'hidden';
|
||||
}, 0);
|
||||
setTimeout(function() {
|
||||
c.style.height = '';
|
||||
c.style.overflowY = '';
|
||||
removeClass(c, 'collapsing');
|
||||
self.addEvent();
|
||||
}, this.options.duration);
|
||||
};
|
||||
this._close = function(c) {
|
||||
this.removeEvent();
|
||||
c.setAttribute('aria-expanded', 'false');
|
||||
c.style.height = this.getMaxHeight(c) + 'px'
|
||||
setTimeout(function() {
|
||||
c.style.height = '0px';
|
||||
c.style.overflowY = 'hidden';
|
||||
addClass(c, 'collapsing');
|
||||
}, 0);
|
||||
|
||||
setTimeout(function() {
|
||||
removeClass(c, 'collapsing');
|
||||
removeClass(c, 'in');
|
||||
c.style.overflowY = '';
|
||||
c.style.height = '';
|
||||
self.addEvent();
|
||||
}, this.options.duration);
|
||||
};
|
||||
this.getMaxHeight = function(l) { // get collapse trueHeight and border
|
||||
var h = 0;
|
||||
for (var k = 0, ll = l.children.length; k < ll; k++) {
|
||||
h += getOuterHeight(l.children[k]);
|
||||
}
|
||||
return h;
|
||||
};
|
||||
this.removeEvent = function() {
|
||||
this.btn.removeEventListener('click', this.toggle, false);
|
||||
};
|
||||
this.addEvent = function() {
|
||||
this.btn.addEventListener('click', this.toggle, false);
|
||||
};
|
||||
this.getTarget = function() {
|
||||
var t = this.btn,
|
||||
h = t.href && t.getAttribute('href').replace('#', ''),
|
||||
d = t.getAttribute('data-target') && (t.getAttribute('data-target')),
|
||||
id = h || (d && /#/.test(d)) && d.replace('#', ''),
|
||||
cl = (d && d.charAt(0) === '.') && d,
|
||||
//the navbar collapse trigger targets a class
|
||||
c = id && document.getElementById(id) || cl && document.querySelector(cl);
|
||||
return c;
|
||||
};
|
||||
|
||||
// init
|
||||
this.addEvent();
|
||||
this.collapse = this.getTarget();
|
||||
this.accordion = this.btn.getAttribute('data-parent') && getClosest(this.btn, this.btn.getAttribute('data-parent'));
|
||||
};
|
||||
|
||||
// COLLAPSE DATA API
|
||||
// =================
|
||||
var Collapses = document.querySelectorAll('[data-toggle="collapse"]');
|
||||
for (var o = 0, cll = Collapses.length; o < cll; o++) {
|
||||
var collapse = Collapses[o],
|
||||
options = {};
|
||||
options.duration = collapse.getAttribute('data-duration');
|
||||
new Collapse(collapse, options);
|
||||
}
|
||||
|
||||
// Native Javascript for Bootstrap 3 | Tab
|
||||
// by dnp_theme
|
||||
|
||||
// TAB DEFINITION
|
||||
// ===================
|
||||
var Tab = function( element,options ) {
|
||||
options = options || {};
|
||||
this.tab = typeof element === 'object' ? element : document.querySelector(element);
|
||||
this.tabs = this.tab.parentNode.parentNode;
|
||||
this.dropdown = this.tabs.querySelector('.dropdown');
|
||||
if ( /\bdropdown-menu/.test(this.tabs.className) ) {
|
||||
this.dropdown = this.tabs.parentNode;
|
||||
this.tabs = this.tabs.parentNode.parentNode;
|
||||
}
|
||||
this.options = options;
|
||||
|
||||
// default tab transition duration
|
||||
this.duration = 150;
|
||||
this.options.duration = (isIE && isIE < 10) ? 0 : (options.duration || this.duration);
|
||||
|
||||
var self = this;
|
||||
|
||||
this.handle = function(e) {
|
||||
e = e || window.e; e.preventDefault();
|
||||
var next = e.target; //the tab we clicked is now the next tab
|
||||
var nextContent = document.getElementById(next.getAttribute('href').replace('#','')); //this is the actual object, the next tab content to activate
|
||||
|
||||
// get current active tab and content
|
||||
var activeTab = self.getActiveTab();
|
||||
var activeContent = self.getActiveContent();
|
||||
|
||||
if ( !/\bactive/.test(next.parentNode.className) ) {
|
||||
// toggle "active" class name
|
||||
removeClass(activeTab,'active');
|
||||
addClass(next.parentNode,'active');
|
||||
|
||||
// handle dropdown menu "active" class name
|
||||
if ( self.dropdown ) {
|
||||
if ( !(/\bdropdown-menu/.test(self.tab.parentNode.parentNode.className)) ) {
|
||||
if (/\bactive/.test(self.dropdown.className)) removeClass(self.dropdown,'active');
|
||||
} else {
|
||||
if (!/\bactive/.test(self.dropdown.className)) addClass(self.dropdown,'active');
|
||||
}
|
||||
}
|
||||
|
||||
//1. hide current active content first
|
||||
removeClass(activeContent,'in');
|
||||
|
||||
setTimeout(function() {
|
||||
//2. toggle current active content from view
|
||||
removeClass(activeContent,'active');
|
||||
addClass(nextContent,'active');
|
||||
}, self.options.duration);
|
||||
setTimeout(function() {
|
||||
//3. show next active content
|
||||
addClass(nextContent,'in');
|
||||
}, self.options.duration*2);
|
||||
}
|
||||
};
|
||||
this.getActiveTab = function() {
|
||||
var activeTabs = this.tabs.querySelectorAll('.active');
|
||||
if ( activeTabs.length === 1 && !/\bdropdown/.test(activeTabs[0].className) ) {
|
||||
return activeTabs[0]
|
||||
} else if ( activeTabs.length > 1 ) {
|
||||
return activeTabs[activeTabs.length-1]
|
||||
}
|
||||
};
|
||||
this.getActiveContent = function() {
|
||||
var active = this.getActiveTab().getElementsByTagName('A')[0].getAttribute('href').replace('#','');
|
||||
return active && document.getElementById(active)
|
||||
};
|
||||
|
||||
// init
|
||||
this.tab.addEventListener('click', this.handle, false);
|
||||
};
|
||||
|
||||
// TAB DATA API
|
||||
// =================
|
||||
var Tabs = document.querySelectorAll("[data-toggle='tab'], [data-toggle='pill']");
|
||||
for ( var tb = 0, tbl = Tabs.length; tb<tbl; tb++ ) {
|
||||
var tab = Tabs[tb], options = {};
|
||||
options.duration = tab.getAttribute('data-duration') && tab.getAttribute('data-duration') || false;
|
||||
new Tab(tab,options);
|
||||
}
|
||||
|
||||
return {
|
||||
Tab: Tab,
|
||||
Collapse: Collapse
|
||||
};
|
||||
}));
|
7
documentation/frontend/js/libs/clipboard.min.js
vendored
Normal file
7
documentation/frontend/js/libs/clipboard.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,15 @@
|
||||
/**
|
||||
@license @nocompile
|
||||
Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
|
||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||
Code distributed by Google as part of the polymer project is also
|
||||
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
||||
*/
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
(function(){if(void 0===window.Reflect||void 0===window.customElements||window.customElements.hasOwnProperty('polyfillWrapFlushCallback'))return;const a=HTMLElement;window.HTMLElement=function(){return Reflect.construct(a,[],this.constructor)},HTMLElement.prototype=a.prototype,HTMLElement.prototype.constructor=HTMLElement,Object.setPrototypeOf(HTMLElement,a);})();
|
||||
|
||||
}());
|
38
documentation/frontend/js/libs/custom-elements.min.js
vendored
Normal file
38
documentation/frontend/js/libs/custom-elements.min.js
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
(function(){
|
||||
'use strict';var h=new function(){};var aa=new Set("annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" "));function m(b){var a=aa.has(b);b=/^[a-z][.0-9_a-z]*-[\-.0-9_a-z]*$/.test(b);return!a&&b}function n(b){var a=b.isConnected;if(void 0!==a)return a;for(;b&&!(b.__CE_isImportDocument||b instanceof Document);)b=b.parentNode||(window.ShadowRoot&&b instanceof ShadowRoot?b.host:void 0);return!(!b||!(b.__CE_isImportDocument||b instanceof Document))}
|
||||
function p(b,a){for(;a&&a!==b&&!a.nextSibling;)a=a.parentNode;return a&&a!==b?a.nextSibling:null}
|
||||
function t(b,a,c){c=c?c:new Set;for(var d=b;d;){if(d.nodeType===Node.ELEMENT_NODE){var e=d;a(e);var f=e.localName;if("link"===f&&"import"===e.getAttribute("rel")){d=e.import;if(d instanceof Node&&!c.has(d))for(c.add(d),d=d.firstChild;d;d=d.nextSibling)t(d,a,c);d=p(b,e);continue}else if("template"===f){d=p(b,e);continue}if(e=e.__CE_shadowRoot)for(e=e.firstChild;e;e=e.nextSibling)t(e,a,c)}d=d.firstChild?d.firstChild:p(b,d)}}function u(b,a,c){b[a]=c};function v(){this.a=new Map;this.s=new Map;this.f=[];this.b=!1}function ba(b,a,c){b.a.set(a,c);b.s.set(c.constructor,c)}function w(b,a){b.b=!0;b.f.push(a)}function x(b,a){b.b&&t(a,function(a){return y(b,a)})}function y(b,a){if(b.b&&!a.__CE_patched){a.__CE_patched=!0;for(var c=0;c<b.f.length;c++)b.f[c](a)}}function z(b,a){var c=[];t(a,function(b){return c.push(b)});for(a=0;a<c.length;a++){var d=c[a];1===d.__CE_state?b.connectedCallback(d):A(b,d)}}
|
||||
function B(b,a){var c=[];t(a,function(b){return c.push(b)});for(a=0;a<c.length;a++){var d=c[a];1===d.__CE_state&&b.disconnectedCallback(d)}}
|
||||
function C(b,a,c){c=c?c:{};var d=c.w||new Set,e=c.i||function(a){return A(b,a)},f=[];t(a,function(a){if("link"===a.localName&&"import"===a.getAttribute("rel")){var c=a.import;c instanceof Node&&(c.__CE_isImportDocument=!0,c.__CE_hasRegistry=!0);c&&"complete"===c.readyState?c.__CE_documentLoadHandled=!0:a.addEventListener("load",function(){var c=a.import;if(!c.__CE_documentLoadHandled){c.__CE_documentLoadHandled=!0;var f=new Set(d);f.delete(c);C(b,c,{w:f,i:e})}})}else f.push(a)},d);if(b.b)for(a=0;a<
|
||||
f.length;a++)y(b,f[a]);for(a=0;a<f.length;a++)e(f[a])}
|
||||
function A(b,a){if(void 0===a.__CE_state){var c=a.ownerDocument;if(c.defaultView||c.__CE_isImportDocument&&c.__CE_hasRegistry)if(c=b.a.get(a.localName)){c.constructionStack.push(a);var d=c.constructor;try{try{if(new d!==a)throw Error("The custom element constructor did not produce the element being upgraded.");}finally{c.constructionStack.pop()}}catch(r){throw a.__CE_state=2,r;}a.__CE_state=1;a.__CE_definition=c;if(c.attributeChangedCallback)for(c=c.observedAttributes,d=0;d<c.length;d++){var e=c[d],
|
||||
f=a.getAttribute(e);null!==f&&b.attributeChangedCallback(a,e,null,f,null)}n(a)&&b.connectedCallback(a)}}}v.prototype.connectedCallback=function(b){var a=b.__CE_definition;a.connectedCallback&&a.connectedCallback.call(b)};v.prototype.disconnectedCallback=function(b){var a=b.__CE_definition;a.disconnectedCallback&&a.disconnectedCallback.call(b)};
|
||||
v.prototype.attributeChangedCallback=function(b,a,c,d,e){var f=b.__CE_definition;f.attributeChangedCallback&&-1<f.observedAttributes.indexOf(a)&&f.attributeChangedCallback.call(b,a,c,d,e)};function D(b,a){this.c=b;this.a=a;this.b=void 0;C(this.c,this.a);"loading"===this.a.readyState&&(this.b=new MutationObserver(this.f.bind(this)),this.b.observe(this.a,{childList:!0,subtree:!0}))}function E(b){b.b&&b.b.disconnect()}D.prototype.f=function(b){var a=this.a.readyState;"interactive"!==a&&"complete"!==a||E(this);for(a=0;a<b.length;a++)for(var c=b[a].addedNodes,d=0;d<c.length;d++)C(this.c,c[d])};function ca(){var b=this;this.b=this.a=void 0;this.f=new Promise(function(a){b.b=a;b.a&&a(b.a)})}function F(b){if(b.a)throw Error("Already resolved.");b.a=void 0;b.b&&b.b(void 0)};function G(b){this.j=!1;this.c=b;this.o=new Map;this.l=function(b){return b()};this.g=!1;this.m=[];this.u=new D(b,document)}
|
||||
G.prototype.define=function(b,a){var c=this;if(!(a instanceof Function))throw new TypeError("Custom element constructors must be functions.");if(!m(b))throw new SyntaxError("The element name '"+b+"' is not valid.");if(this.c.a.get(b))throw Error("A custom element with name '"+b+"' has already been defined.");if(this.j)throw Error("A custom element is already being defined.");this.j=!0;var d,e,f,r,k;try{var g=function(b){var a=l[b];if(void 0!==a&&!(a instanceof Function))throw Error("The '"+b+"' callback must be a function.");
|
||||
return a},l=a.prototype;if(!(l instanceof Object))throw new TypeError("The custom element constructor's prototype is not an object.");d=g("connectedCallback");e=g("disconnectedCallback");f=g("adoptedCallback");r=g("attributeChangedCallback");k=a.observedAttributes||[]}catch(q){return}finally{this.j=!1}a={localName:b,constructor:a,connectedCallback:d,disconnectedCallback:e,adoptedCallback:f,attributeChangedCallback:r,observedAttributes:k,constructionStack:[]};ba(this.c,b,a);this.m.push(a);this.g||
|
||||
(this.g=!0,this.l(function(){return da(c)}))};G.prototype.i=function(b){C(this.c,b)};function da(b){if(!1!==b.g){b.g=!1;for(var a=b.m,c=[],d=new Map,e=0;e<a.length;e++)d.set(a[e].localName,[]);C(b.c,document,{i:function(a){if(void 0===a.__CE_state){var e=a.localName,f=d.get(e);f?f.push(a):b.c.a.get(e)&&c.push(a)}}});for(e=0;e<c.length;e++)A(b.c,c[e]);for(;0<a.length;){for(var f=a.shift(),e=f.localName,f=d.get(f.localName),r=0;r<f.length;r++)A(b.c,f[r]);(e=b.o.get(e))&&F(e)}}}
|
||||
G.prototype.get=function(b){if(b=this.c.a.get(b))return b.constructor};G.prototype.whenDefined=function(b){if(!m(b))return Promise.reject(new SyntaxError("'"+b+"' is not a valid custom element name."));var a=this.o.get(b);if(a)return a.f;a=new ca;this.o.set(b,a);this.c.a.get(b)&&!this.m.some(function(a){return a.localName===b})&&F(a);return a.f};G.prototype.v=function(b){E(this.u);var a=this.l;this.l=function(c){return b(function(){return a(c)})}};window.CustomElementRegistry=G;
|
||||
G.prototype.define=G.prototype.define;G.prototype.upgrade=G.prototype.i;G.prototype.get=G.prototype.get;G.prototype.whenDefined=G.prototype.whenDefined;G.prototype.polyfillWrapFlushCallback=G.prototype.v;var H=window.Document.prototype.createElement,I=window.Document.prototype.createElementNS,ea=window.Document.prototype.importNode,fa=window.Document.prototype.prepend,ga=window.Document.prototype.append,ha=window.DocumentFragment.prototype.prepend,ia=window.DocumentFragment.prototype.append,J=window.Node.prototype.cloneNode,K=window.Node.prototype.appendChild,L=window.Node.prototype.insertBefore,M=window.Node.prototype.removeChild,N=window.Node.prototype.replaceChild,O=Object.getOwnPropertyDescriptor(window.Node.prototype,
|
||||
"textContent"),P=window.Element.prototype.attachShadow,Q=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),R=window.Element.prototype.getAttribute,S=window.Element.prototype.setAttribute,T=window.Element.prototype.removeAttribute,U=window.Element.prototype.getAttributeNS,ja=window.Element.prototype.setAttributeNS,ka=window.Element.prototype.removeAttributeNS,la=window.Element.prototype.insertAdjacentElement,ma=window.Element.prototype.insertAdjacentHTML,na=window.Element.prototype.prepend,
|
||||
oa=window.Element.prototype.append,V=window.Element.prototype.before,pa=window.Element.prototype.after,qa=window.Element.prototype.replaceWith,ra=window.Element.prototype.remove,sa=window.HTMLElement,W=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),ta=window.HTMLElement.prototype.insertAdjacentElement,ua=window.HTMLElement.prototype.insertAdjacentHTML;function va(){var b=X;window.HTMLElement=function(){function a(){var a=this.constructor,d=b.s.get(a);if(!d)throw Error("The custom element being constructed was not registered with `customElements`.");var e=d.constructionStack;if(!e.length)return e=H.call(document,d.localName),Object.setPrototypeOf(e,a.prototype),e.__CE_state=1,e.__CE_definition=d,y(b,e),e;var d=e.length-1,f=e[d];if(f===h)throw Error("The HTMLElement constructor was either called reentrantly for this constructor or called multiple times.");
|
||||
e[d]=h;Object.setPrototypeOf(f,a.prototype);y(b,f);return f}a.prototype=sa.prototype;return a}()};function Y(b,a,c){function d(a){return function(c){for(var e=[],d=0;d<arguments.length;++d)e[d-0]=arguments[d];for(var d=[],f=[],l=0;l<e.length;l++){var q=e[l];q instanceof Element&&n(q)&&f.push(q);if(q instanceof DocumentFragment)for(q=q.firstChild;q;q=q.nextSibling)d.push(q);else d.push(q)}a.apply(this,e);for(e=0;e<f.length;e++)B(b,f[e]);if(n(this))for(e=0;e<d.length;e++)f=d[e],f instanceof Element&&z(b,f)}}c.h&&(a.prepend=d(c.h));c.append&&(a.append=d(c.append))};function wa(){var b=X;u(Document.prototype,"createElement",function(a){if(this.__CE_hasRegistry){var c=b.a.get(a);if(c)return new c.constructor}a=H.call(this,a);y(b,a);return a});u(Document.prototype,"importNode",function(a,c){a=ea.call(this,a,c);this.__CE_hasRegistry?C(b,a):x(b,a);return a});u(Document.prototype,"createElementNS",function(a,c){if(this.__CE_hasRegistry&&(null===a||"http://www.w3.org/1999/xhtml"===a)){var d=b.a.get(c);if(d)return new d.constructor}a=I.call(this,a,c);y(b,a);return a});
|
||||
Y(b,Document.prototype,{h:fa,append:ga})};function xa(){var b=X;function a(a,d){Object.defineProperty(a,"textContent",{enumerable:d.enumerable,configurable:!0,get:d.get,set:function(a){if(this.nodeType===Node.TEXT_NODE)d.set.call(this,a);else{var e=void 0;if(this.firstChild){var c=this.childNodes,k=c.length;if(0<k&&n(this))for(var e=Array(k),g=0;g<k;g++)e[g]=c[g]}d.set.call(this,a);if(e)for(a=0;a<e.length;a++)B(b,e[a])}}})}u(Node.prototype,"insertBefore",function(a,d){if(a instanceof DocumentFragment){var e=Array.prototype.slice.apply(a.childNodes);
|
||||
a=L.call(this,a,d);if(n(this))for(d=0;d<e.length;d++)z(b,e[d]);return a}e=n(a);d=L.call(this,a,d);e&&B(b,a);n(this)&&z(b,a);return d});u(Node.prototype,"appendChild",function(a){if(a instanceof DocumentFragment){var c=Array.prototype.slice.apply(a.childNodes);a=K.call(this,a);if(n(this))for(var e=0;e<c.length;e++)z(b,c[e]);return a}c=n(a);e=K.call(this,a);c&&B(b,a);n(this)&&z(b,a);return e});u(Node.prototype,"cloneNode",function(a){a=J.call(this,a);this.ownerDocument.__CE_hasRegistry?C(b,a):x(b,a);
|
||||
return a});u(Node.prototype,"removeChild",function(a){var c=n(a),e=M.call(this,a);c&&B(b,a);return e});u(Node.prototype,"replaceChild",function(a,d){if(a instanceof DocumentFragment){var e=Array.prototype.slice.apply(a.childNodes);a=N.call(this,a,d);if(n(this))for(B(b,d),d=0;d<e.length;d++)z(b,e[d]);return a}var e=n(a),f=N.call(this,a,d),c=n(this);c&&B(b,d);e&&B(b,a);c&&z(b,a);return f});O&&O.get?a(Node.prototype,O):w(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){for(var a=[],b=
|
||||
0;b<this.childNodes.length;b++)a.push(this.childNodes[b].textContent);return a.join("")},set:function(a){for(;this.firstChild;)M.call(this,this.firstChild);K.call(this,document.createTextNode(a))}})})};function ya(b){var a=Element.prototype;function c(a){return function(e){for(var c=[],d=0;d<arguments.length;++d)c[d-0]=arguments[d];for(var d=[],k=[],g=0;g<c.length;g++){var l=c[g];l instanceof Element&&n(l)&&k.push(l);if(l instanceof DocumentFragment)for(l=l.firstChild;l;l=l.nextSibling)d.push(l);else d.push(l)}a.apply(this,c);for(c=0;c<k.length;c++)B(b,k[c]);if(n(this))for(c=0;c<d.length;c++)k=d[c],k instanceof Element&&z(b,k)}}V&&(a.before=c(V));V&&(a.after=c(pa));qa&&u(a,"replaceWith",function(a){for(var e=
|
||||
[],c=0;c<arguments.length;++c)e[c-0]=arguments[c];for(var c=[],d=[],k=0;k<e.length;k++){var g=e[k];g instanceof Element&&n(g)&&d.push(g);if(g instanceof DocumentFragment)for(g=g.firstChild;g;g=g.nextSibling)c.push(g);else c.push(g)}k=n(this);qa.apply(this,e);for(e=0;e<d.length;e++)B(b,d[e]);if(k)for(B(b,this),e=0;e<c.length;e++)d=c[e],d instanceof Element&&z(b,d)});ra&&u(a,"remove",function(){var a=n(this);ra.call(this);a&&B(b,this)})};function za(){var b=X;function a(a,c){Object.defineProperty(a,"innerHTML",{enumerable:c.enumerable,configurable:!0,get:c.get,set:function(a){var e=this,d=void 0;n(this)&&(d=[],t(this,function(a){a!==e&&d.push(a)}));c.set.call(this,a);if(d)for(var f=0;f<d.length;f++){var r=d[f];1===r.__CE_state&&b.disconnectedCallback(r)}this.ownerDocument.__CE_hasRegistry?C(b,this):x(b,this);return a}})}function c(a,c){u(a,"insertAdjacentElement",function(a,e){var d=n(e);a=c.call(this,a,e);d&&B(b,e);n(a)&&z(b,e);
|
||||
return a})}function d(a,c){function e(a,e){for(var c=[];a!==e;a=a.nextSibling)c.push(a);for(e=0;e<c.length;e++)C(b,c[e])}u(a,"insertAdjacentHTML",function(a,b){a=a.toLowerCase();if("beforebegin"===a){var d=this.previousSibling;c.call(this,a,b);e(d||this.parentNode.firstChild,this)}else if("afterbegin"===a)d=this.firstChild,c.call(this,a,b),e(this.firstChild,d);else if("beforeend"===a)d=this.lastChild,c.call(this,a,b),e(d||this.firstChild,null);else if("afterend"===a)d=this.nextSibling,c.call(this,
|
||||
a,b),e(this.nextSibling,d);else throw new SyntaxError("The value provided ("+String(a)+") is not one of 'beforebegin', 'afterbegin', 'beforeend', or 'afterend'.");})}P&&u(Element.prototype,"attachShadow",function(a){return this.__CE_shadowRoot=a=P.call(this,a)});Q&&Q.get?a(Element.prototype,Q):W&&W.get?a(HTMLElement.prototype,W):w(b,function(b){a(b,{enumerable:!0,configurable:!0,get:function(){return J.call(this,!0).innerHTML},set:function(a){var b="template"===this.localName,e=b?this.content:this,
|
||||
c=I.call(document,this.namespaceURI,this.localName);for(c.innerHTML=a;0<e.childNodes.length;)M.call(e,e.childNodes[0]);for(a=b?c.content:c;0<a.childNodes.length;)K.call(e,a.childNodes[0])}})});u(Element.prototype,"setAttribute",function(a,c){if(1!==this.__CE_state)return S.call(this,a,c);var e=R.call(this,a);S.call(this,a,c);c=R.call(this,a);b.attributeChangedCallback(this,a,e,c,null)});u(Element.prototype,"setAttributeNS",function(a,c,d){if(1!==this.__CE_state)return ja.call(this,a,c,d);var e=U.call(this,
|
||||
a,c);ja.call(this,a,c,d);d=U.call(this,a,c);b.attributeChangedCallback(this,c,e,d,a)});u(Element.prototype,"removeAttribute",function(a){if(1!==this.__CE_state)return T.call(this,a);var c=R.call(this,a);T.call(this,a);null!==c&&b.attributeChangedCallback(this,a,c,null,null)});u(Element.prototype,"removeAttributeNS",function(a,c){if(1!==this.__CE_state)return ka.call(this,a,c);var d=U.call(this,a,c);ka.call(this,a,c);var e=U.call(this,a,c);d!==e&&b.attributeChangedCallback(this,c,d,e,a)});ta?c(HTMLElement.prototype,
|
||||
ta):la?c(Element.prototype,la):console.warn("Custom Elements: `Element#insertAdjacentElement` was not patched.");ua?d(HTMLElement.prototype,ua):ma?d(Element.prototype,ma):console.warn("Custom Elements: `Element#insertAdjacentHTML` was not patched.");Y(b,Element.prototype,{h:na,append:oa});ya(b)};/*
|
||||
|
||||
Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
|
||||
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
||||
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
||||
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
||||
Code distributed by Google as part of the polymer project is also
|
||||
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
||||
*/
|
||||
var Z=window.customElements;if(!Z||Z.forcePolyfill||"function"!=typeof Z.define||"function"!=typeof Z.get){var X=new v;va();wa();Y(X,DocumentFragment.prototype,{h:ha,append:ia});xa();za();document.__CE_hasRegistry=!0;var customElements=new G(X);Object.defineProperty(window,"customElements",{configurable:!0,enumerable:!0,value:customElements})};
|
||||
}).call(self);
|
2
documentation/frontend/js/libs/d3.v3.min.js
vendored
Normal file
2
documentation/frontend/js/libs/d3.v3.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
documentation/frontend/js/libs/deep-iterator.js
Normal file
2
documentation/frontend/js/libs/deep-iterator.js
Normal file
File diff suppressed because one or more lines are too long
12
documentation/frontend/js/libs/es6-shim.min.js
vendored
Normal file
12
documentation/frontend/js/libs/es6-shim.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
documentation/frontend/js/libs/highlight.pack.js
Normal file
2
documentation/frontend/js/libs/highlight.pack.js
Normal file
File diff suppressed because one or more lines are too long
1
documentation/frontend/js/libs/highlightjs-line-numbers.min.js
vendored
Normal file
1
documentation/frontend/js/libs/highlightjs-line-numbers.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
!function(e){"use strict";function t(){"complete"===document.readyState?n():e.addEventListener("DOMContentLoaded",n)}function n(){try{var e=document.querySelectorAll("code.hljs:not(.bash)");for(var t in e)e.hasOwnProperty(t)&&r(e[t])}catch(n){console.error("LineNumbers error: ",n)}}function r(e){if("object"==typeof e){var t=e.parentNode,n=o(t.outerText);if(n>1){for(var r="",c=0;n>c;c++)r+=c+1+"\n";var l=document.createElement("code");l.className="hljs hljs-line-numbers",l.style["float"]="left",l.textContent=r,t.insertBefore(l,e)}}}function o(e){if(0===e.length)return 0;var t=/\r\n|\r|\n/g,n=e.match(t);return n=n?n.length:0,e[e.length-1].match(t)||(n+=1),n}"undefined"==typeof e.hljs?console.error("highlight.js not detected!"):(e.hljs.initLineNumbersOnLoad=t,e.hljs.lineNumbersBlock=r)}(window);
|
23
documentation/frontend/js/libs/htmlparser.js
Normal file
23
documentation/frontend/js/libs/htmlparser.js
Normal file
File diff suppressed because one or more lines are too long
9
documentation/frontend/js/libs/innersvg.js
Normal file
9
documentation/frontend/js/libs/innersvg.js
Normal file
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* innerHTML property for SVGElement
|
||||
* Copyright(c) 2010, Jeff Schiller
|
||||
*
|
||||
* Licensed under the Apache License, Version 2
|
||||
*
|
||||
* Minor modifications by Chris Price to only polyfill when required.
|
||||
*/
|
||||
!function(e){if(e&&!("innerHTML"in e.prototype)){var t=function(e,r){var i=e.nodeType;if(3==i)r.push(e.textContent.replace(/&/,"&").replace(/</,"<").replace(">",">"));else if(1==i){if(r.push("<",e.tagName),e.hasAttributes())for(var n=e.attributes,s=0,o=n.length;s<o;++s){var a=n.item(s);r.push(" ",a.name,"='",a.value,"'")}if(e.hasChildNodes()){r.push(">");for(var h=e.childNodes,s=0,o=h.length;s<o;++s)t(h.item(s),r);r.push("</",e.tagName,">")}else r.push("/>")}else{if(8!=i)throw"Error serializing XML. Unhandled node of type: "+i;r.push("\x3c!--",e.nodeValue,"--\x3e")}};Object.defineProperty(e.prototype,"innerHTML",{get:function(){for(var e=[],r=this.firstChild;r;)t(r,e),r=r.nextSibling;return e.join("")},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser;t.async=!1,sXML="<svg xmlns='http://www.w3.org/2000/svg'>"+e+"</svg>";for(var r=t.parseFromString(sXML,"text/xml").documentElement.firstChild;r;)this.appendChild(this.ownerDocument.importNode(r,!0)),r=r.nextSibling}catch(e){throw new Error("Error parsing XML string")}}})}}((0,eval)("this").SVGElement);
|
1
documentation/frontend/js/libs/lit-html.js
Normal file
1
documentation/frontend/js/libs/lit-html.js
Normal file
File diff suppressed because one or more lines are too long
46
documentation/frontend/js/libs/prism.js
Normal file
46
documentation/frontend/js/libs/prism.js
Normal file
File diff suppressed because one or more lines are too long
6
documentation/frontend/js/libs/promise.min.js
vendored
Normal file
6
documentation/frontend/js/libs/promise.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
* Copyright 2012-2013 (c) Pierre Duquesne <stackp@online.fr>
|
||||
* Licensed under the New BSD License.
|
||||
* https://github.com/stackp/promisejs
|
||||
*/
|
||||
(function(a){function b(){this._callbacks=[];}b.prototype.then=function(a,c){var d;if(this._isdone)d=a.apply(c,this.result);else{d=new b();this._callbacks.push(function(){var b=a.apply(c,arguments);if(b&&typeof b.then==='function')b.then(d.done,d);});}return d;};b.prototype.done=function(){this.result=arguments;this._isdone=true;for(var a=0;a<this._callbacks.length;a++)this._callbacks[a].apply(null,arguments);this._callbacks=[];};function c(a){var c=new b();var d=[];if(!a||!a.length){c.done(d);return c;}var e=0;var f=a.length;function g(a){return function(){e+=1;d[a]=Array.prototype.slice.call(arguments);if(e===f)c.done(d);};}for(var h=0;h<f;h++)a[h].then(g(h));return c;}function d(a,c){var e=new b();if(a.length===0)e.done.apply(e,c);else a[0].apply(null,c).then(function(){a.splice(0,1);d(a,arguments).then(function(){e.done.apply(e,arguments);});});return e;}function e(a){var b="";if(typeof a==="string")b=a;else{var c=encodeURIComponent;var d=[];for(var e in a)if(a.hasOwnProperty(e))d.push(c(e)+'='+c(a[e]));b=d.join('&');}return b;}function f(){var a;if(window.XMLHttpRequest)a=new XMLHttpRequest();else if(window.ActiveXObject)try{a=new ActiveXObject("Msxml2.XMLHTTP");}catch(b){a=new ActiveXObject("Microsoft.XMLHTTP");}return a;}function g(a,c,d,g){var h=new b();var j,k;d=d||{};g=g||{};try{j=f();}catch(l){h.done(i.ENOXHR,"");return h;}k=e(d);if(a==='GET'&&k){c+='?'+k;k=null;}j.open(a,c);var m='application/x-www-form-urlencoded';for(var n in g)if(g.hasOwnProperty(n))if(n.toLowerCase()==='content-type')m=g[n];else j.setRequestHeader(n,g[n]);j.setRequestHeader('Content-type',m);function o(){j.abort();h.done(i.ETIMEOUT,"",j);}var p=i.ajaxTimeout;if(p)var q=setTimeout(o,p);j.onreadystatechange=function(){if(p)clearTimeout(q);if(j.readyState===4){var a=(!j.status||(j.status<200||j.status>=300)&&j.status!==304);h.done(a,j.responseText,j);}};j.send(k);return h;}function h(a){return function(b,c,d){return g(a,b,c,d);};}var i={Promise:b,join:c,chain:d,ajax:g,get:h('GET'),post:h('POST'),put:h('PUT'),del:h('DELETE'),ENOXHR:1,ETIMEOUT:2,ajaxTimeout:0};if(typeof define==='function'&&define.amd)define(function(){return i;});else a.promise=i;})(this);
|
782
documentation/frontend/js/libs/svg-pan-zoom.min.js
vendored
Normal file
782
documentation/frontend/js/libs/svg-pan-zoom.min.js
vendored
Normal file
@@ -0,0 +1,782 @@
|
||||
// svg-pan-zoom v3.2.5
|
||||
// https://github.com/ariutta/svg-pan-zoom
|
||||
! function t(e, o, n) {
|
||||
function i(r, a) {
|
||||
if (!o[r]) {
|
||||
if (!e[r]) {
|
||||
var l = "function" == typeof require && require;
|
||||
if (!a && l) return l(r, !0);
|
||||
if (s) return s(r, !0);
|
||||
var u = new Error("Cannot find module '" + r + "'");
|
||||
throw u.code = "MODULE_NOT_FOUND", u
|
||||
}
|
||||
var h = o[r] = {
|
||||
exports: {}
|
||||
};
|
||||
e[r][0].call(h.exports, function(t) {
|
||||
var o = e[r][1][t];
|
||||
return i(o ? o : t)
|
||||
}, h, h.exports, t, e, o, n)
|
||||
}
|
||||
return o[r].exports
|
||||
}
|
||||
for (var s = "function" == typeof require && require, r = 0; r < n.length; r++) i(n[r]);
|
||||
return i
|
||||
}({
|
||||
1: [function(t, e) {
|
||||
var o = t("./svg-pan-zoom.js");
|
||||
! function(t) {
|
||||
"function" == typeof define && define.amd ? define("svg-pan-zoom", function() {
|
||||
return o
|
||||
}) : "undefined" != typeof e && e.exports && (e.exports = o, t.svgPanZoom = o)
|
||||
}(window, document)
|
||||
}, {
|
||||
"./svg-pan-zoom.js": 4
|
||||
}],
|
||||
2: [function(t, e) {
|
||||
var o = t("./svg-utilities");
|
||||
e.exports = {
|
||||
enable: function(t) {
|
||||
var e = t.svg.querySelector("defs");
|
||||
e || (e = document.createElementNS(o.svgNS, "defs"), t.svg.appendChild(e));
|
||||
var n = document.createElementNS(o.svgNS, "style");
|
||||
n.setAttribute("type", "text/css"), n.textContent = ".svg-pan-zoom-control { cursor: pointer; fill: black; fill-opacity: 0.333; } .svg-pan-zoom-control:hover { fill-opacity: 0.8; } .svg-pan-zoom-control-background { fill: white; fill-opacity: 0.5; } .svg-pan-zoom-control-background { fill-opacity: 0.8; }", e.appendChild(n);
|
||||
var i = document.createElementNS(o.svgNS, "g");
|
||||
i.setAttribute("id", "svg-pan-zoom-controls"), i.setAttribute("transform", "translate(" + (t.width - 70) + " " + (t.height - 76) + ") scale(0.75)"), i.setAttribute("class", "svg-pan-zoom-control"), i.appendChild(this._createZoomIn(t)), i.appendChild(this._createZoomReset(t)), i.appendChild(this._createZoomOut(t)), t.svg.appendChild(i), t.controlIcons = i
|
||||
},
|
||||
_createZoomIn: function(t) {
|
||||
var e = document.createElementNS(o.svgNS, "g");
|
||||
e.setAttribute("id", "svg-pan-zoom-zoom-in"), e.setAttribute("transform", "translate(30.5 5) scale(0.015)"), e.setAttribute("class", "svg-pan-zoom-control"), e.addEventListener("click", function() {
|
||||
t.getPublicInstance().zoomIn()
|
||||
}, !1), e.addEventListener("touchstart", function() {
|
||||
t.getPublicInstance().zoomIn()
|
||||
}, !1);
|
||||
var n = document.createElementNS(o.svgNS, "rect");
|
||||
n.setAttribute("x", "0"), n.setAttribute("y", "0"), n.setAttribute("width", "1500"), n.setAttribute("height", "1400"), n.setAttribute("class", "svg-pan-zoom-control-background"), e.appendChild(n);
|
||||
var i = document.createElementNS(o.svgNS, "path");
|
||||
return i.setAttribute("d", "M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z"), i.setAttribute("class", "svg-pan-zoom-control-element"), e.appendChild(i), e
|
||||
},
|
||||
_createZoomReset: function(t) {
|
||||
var e = document.createElementNS(o.svgNS, "g");
|
||||
e.setAttribute("id", "svg-pan-zoom-reset-pan-zoom"), e.setAttribute("transform", "translate(5 35) scale(0.4)"), e.setAttribute("class", "svg-pan-zoom-control"), e.addEventListener("click", function() {
|
||||
t.getPublicInstance().reset()
|
||||
}, !1), e.addEventListener("touchstart", function() {
|
||||
t.getPublicInstance().reset()
|
||||
}, !1);
|
||||
var n = document.createElementNS(o.svgNS, "rect");
|
||||
n.setAttribute("x", "2"), n.setAttribute("y", "2"), n.setAttribute("width", "182"), n.setAttribute("height", "58"), n.setAttribute("class", "svg-pan-zoom-control-background"), e.appendChild(n);
|
||||
var i = document.createElementNS(o.svgNS, "path");
|
||||
i.setAttribute("d", "M33.051,20.632c-0.742-0.406-1.854-0.609-3.338-0.609h-7.969v9.281h7.769c1.543,0,2.701-0.188,3.473-0.562c1.365-0.656,2.048-1.953,2.048-3.891C35.032,22.757,34.372,21.351,33.051,20.632z"), i.setAttribute("class", "svg-pan-zoom-control-element"), e.appendChild(i);
|
||||
var s = document.createElementNS(o.svgNS, "path");
|
||||
return s.setAttribute("d", "M170.231,0.5H15.847C7.102,0.5,0.5,5.708,0.5,11.84v38.861C0.5,56.833,7.102,61.5,15.847,61.5h154.384c8.745,0,15.269-4.667,15.269-10.798V11.84C185.5,5.708,178.976,0.5,170.231,0.5z M42.837,48.569h-7.969c-0.219-0.766-0.375-1.383-0.469-1.852c-0.188-0.969-0.289-1.961-0.305-2.977l-0.047-3.211c-0.03-2.203-0.41-3.672-1.142-4.406c-0.732-0.734-2.103-1.102-4.113-1.102h-7.05v13.547h-7.055V14.022h16.524c2.361,0.047,4.178,0.344,5.45,0.891c1.272,0.547,2.351,1.352,3.234,2.414c0.731,0.875,1.31,1.844,1.737,2.906s0.64,2.273,0.64,3.633c0,1.641-0.414,3.254-1.242,4.84s-2.195,2.707-4.102,3.363c1.594,0.641,2.723,1.551,3.387,2.73s0.996,2.98,0.996,5.402v2.32c0,1.578,0.063,2.648,0.19,3.211c0.19,0.891,0.635,1.547,1.333,1.969V48.569z M75.579,48.569h-26.18V14.022h25.336v6.117H56.454v7.336h16.781v6H56.454v8.883h19.125V48.569z M104.497,46.331c-2.44,2.086-5.887,3.129-10.34,3.129c-4.548,0-8.125-1.027-10.731-3.082s-3.909-4.879-3.909-8.473h6.891c0.224,1.578,0.662,2.758,1.316,3.539c1.196,1.422,3.246,2.133,6.15,2.133c1.739,0,3.151-0.188,4.236-0.562c2.058-0.719,3.087-2.055,3.087-4.008c0-1.141-0.504-2.023-1.512-2.648c-1.008-0.609-2.607-1.148-4.796-1.617l-3.74-0.82c-3.676-0.812-6.201-1.695-7.576-2.648c-2.328-1.594-3.492-4.086-3.492-7.477c0-3.094,1.139-5.664,3.417-7.711s5.623-3.07,10.036-3.07c3.685,0,6.829,0.965,9.431,2.895c2.602,1.93,3.966,4.73,4.093,8.402h-6.938c-0.128-2.078-1.057-3.555-2.787-4.43c-1.154-0.578-2.587-0.867-4.301-0.867c-1.907,0-3.428,0.375-4.565,1.125c-1.138,0.75-1.706,1.797-1.706,3.141c0,1.234,0.561,2.156,1.682,2.766c0.721,0.406,2.25,0.883,4.589,1.43l6.063,1.43c2.657,0.625,4.648,1.461,5.975,2.508c2.059,1.625,3.089,3.977,3.089,7.055C108.157,41.624,106.937,44.245,104.497,46.331z M139.61,48.569h-26.18V14.022h25.336v6.117h-18.281v7.336h16.781v6h-16.781v8.883h19.125V48.569z M170.337,20.14h-10.336v28.43h-7.266V20.14h-10.383v-6.117h27.984V20.14z"), s.setAttribute("class", "svg-pan-zoom-control-element"), e.appendChild(s), e
|
||||
},
|
||||
_createZoomOut: function(t) {
|
||||
var e = document.createElementNS(o.svgNS, "g");
|
||||
e.setAttribute("id", "svg-pan-zoom-zoom-out"), e.setAttribute("transform", "translate(30.5 70) scale(0.015)"), e.setAttribute("class", "svg-pan-zoom-control"), e.addEventListener("click", function() {
|
||||
t.getPublicInstance().zoomOut()
|
||||
}, !1), e.addEventListener("touchstart", function() {
|
||||
t.getPublicInstance().zoomOut()
|
||||
}, !1);
|
||||
var n = document.createElementNS(o.svgNS, "rect");
|
||||
n.setAttribute("x", "0"), n.setAttribute("y", "0"), n.setAttribute("width", "1500"), n.setAttribute("height", "1400"), n.setAttribute("class", "svg-pan-zoom-control-background"), e.appendChild(n);
|
||||
var i = document.createElementNS(o.svgNS, "path");
|
||||
return i.setAttribute("d", "M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z"), i.setAttribute("class", "svg-pan-zoom-control-element"), e.appendChild(i), e
|
||||
},
|
||||
disable: function(t) {
|
||||
t.controlIcons && (t.controlIcons.parentNode.removeChild(t.controlIcons), t.controlIcons = null)
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"./svg-utilities": 5
|
||||
}],
|
||||
3: [function(t, e) {
|
||||
var o = t("./svg-utilities"),
|
||||
n = t("./utilities"),
|
||||
i = function(t, e) {
|
||||
this.init(t, e)
|
||||
};
|
||||
i.prototype.init = function(t, e) {
|
||||
this.viewport = t, this.options = e, this.originalState = {
|
||||
zoom: 1,
|
||||
x: 0,
|
||||
y: 0
|
||||
}, this.activeState = {
|
||||
zoom: 1,
|
||||
x: 0,
|
||||
y: 0
|
||||
}, this.updateCTMCached = n.proxy(this.updateCTM, this), this.requestAnimationFrame = n.createRequestAnimationFrame(this.options.refreshRate), this.viewBox = {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width: 0,
|
||||
height: 0
|
||||
}, this.cacheViewBox(), this.processCTM(), this.updateCTM()
|
||||
}, i.prototype.cacheViewBox = function() {
|
||||
var t = this.options.svg.getAttribute("viewBox");
|
||||
if (t) {
|
||||
var e = t.split(/[\s\,]/).filter(function(t) {
|
||||
return t
|
||||
}).map(parseFloat);
|
||||
this.viewBox.x = e[0], this.viewBox.y = e[1], this.viewBox.width = e[2], this.viewBox.height = e[3];
|
||||
var o = Math.min(this.options.width / this.viewBox.width, this.options.height / this.viewBox.height);
|
||||
this.activeState.zoom = o, this.activeState.x = (this.options.width - this.viewBox.width * o) / 2, this.activeState.y = (this.options.height - this.viewBox.height * o) / 2, this.updateCTMOnNextFrame(), this.options.svg.removeAttribute("viewBox")
|
||||
} else {
|
||||
var n = this.viewport.getBBox();
|
||||
this.viewBox.x = n.x, this.viewBox.y = n.y, this.viewBox.width = n.width, this.viewBox.height = n.height
|
||||
}
|
||||
}, i.prototype.recacheViewBox = function() {
|
||||
var t = this.viewport.getBoundingClientRect(),
|
||||
e = t.width / this.getZoom(),
|
||||
o = t.height / this.getZoom();
|
||||
this.viewBox.x = 0, this.viewBox.y = 0, this.viewBox.width = e, this.viewBox.height = o
|
||||
}, i.prototype.getViewBox = function() {
|
||||
return n.extend({}, this.viewBox)
|
||||
}, i.prototype.processCTM = function() {
|
||||
var t = this.getCTM();
|
||||
if (this.options.fit || this.options.contain) {
|
||||
var e;
|
||||
e = this.options.fit ? Math.min(this.options.width / this.viewBox.width, this.options.height / this.viewBox.height) : Math.max(this.options.width / this.viewBox.width, this.options.height / this.viewBox.height), t.a = e, t.d = e, t.e = -this.viewBox.x * e, t.f = -this.viewBox.y * e
|
||||
}
|
||||
if (this.options.center) {
|
||||
var o = .5 * (this.options.width - (this.viewBox.width + 2 * this.viewBox.x) * t.a),
|
||||
n = .5 * (this.options.height - (this.viewBox.height + 2 * this.viewBox.y) * t.a);
|
||||
t.e = o, t.f = n
|
||||
}
|
||||
this.originalState.zoom = t.a, this.originalState.x = t.e, this.originalState.y = t.f, this.setCTM(t)
|
||||
}, i.prototype.getOriginalState = function() {
|
||||
return n.extend({}, this.originalState)
|
||||
}, i.prototype.getState = function() {
|
||||
return n.extend({}, this.activeState)
|
||||
}, i.prototype.getZoom = function() {
|
||||
return this.activeState.zoom
|
||||
}, i.prototype.getRelativeZoom = function() {
|
||||
return this.activeState.zoom / this.originalState.zoom
|
||||
}, i.prototype.computeRelativeZoom = function(t) {
|
||||
return t / this.originalState.zoom
|
||||
}, i.prototype.getPan = function() {
|
||||
return {
|
||||
x: this.activeState.x,
|
||||
y: this.activeState.y
|
||||
}
|
||||
}, i.prototype.getCTM = function() {
|
||||
var t = this.options.svg.createSVGMatrix();
|
||||
return t.a = this.activeState.zoom, t.b = 0, t.c = 0, t.d = this.activeState.zoom, t.e = this.activeState.x, t.f = this.activeState.y, t
|
||||
}, i.prototype.setCTM = function(t) {
|
||||
var e = this.isZoomDifferent(t),
|
||||
o = this.isPanDifferent(t);
|
||||
if (e || o) {
|
||||
if (e && this.options.beforeZoom(this.getRelativeZoom(), this.computeRelativeZoom(t.a)) === !1 && (t.a = t.d = this.activeState.zoom, e = !1), o) {
|
||||
var i = this.options.beforePan(this.getPan(), {
|
||||
x: t.e,
|
||||
y: t.f
|
||||
}),
|
||||
s = !1,
|
||||
r = !1;
|
||||
i === !1 ? (t.e = this.getPan().x, t.f = this.getPan().y, s = r = !0) : n.isObject(i) && (i.x === !1 ? (t.e = this.getPan().x, s = !0) : n.isNumber(i.x) && (t.e = i.x), i.y === !1 ? (t.f = this.getPan().y, r = !0) : n.isNumber(i.y) && (t.f = i.y)), s && r && (o = !1)
|
||||
}(e || o) && (this.updateCache(t), this.updateCTMOnNextFrame(), e && this.options.onZoom(this.getRelativeZoom()), o && this.options.onPan(this.getPan()))
|
||||
}
|
||||
}, i.prototype.isZoomDifferent = function(t) {
|
||||
return this.activeState.zoom !== t.a
|
||||
}, i.prototype.isPanDifferent = function(t) {
|
||||
return this.activeState.x !== t.e || this.activeState.y !== t.f
|
||||
}, i.prototype.updateCache = function(t) {
|
||||
this.activeState.zoom = t.a, this.activeState.x = t.e, this.activeState.y = t.f
|
||||
}, i.prototype.pendingUpdate = !1, i.prototype.updateCTMOnNextFrame = function() {
|
||||
this.pendingUpdate || (this.pendingUpdate = !0, this.requestAnimationFrame.call(window, this.updateCTMCached))
|
||||
}, i.prototype.updateCTM = function() {
|
||||
o.setCTM(this.viewport, this.getCTM(), this.defs), this.pendingUpdate = !1
|
||||
}, e.exports = function(t, e) {
|
||||
return new i(t, e)
|
||||
}
|
||||
}, {
|
||||
"./svg-utilities": 5,
|
||||
"./utilities": 7
|
||||
}],
|
||||
4: [function(t, e) {
|
||||
var o = t("./uniwheel"),
|
||||
n = t("./control-icons"),
|
||||
i = t("./utilities"),
|
||||
s = t("./svg-utilities"),
|
||||
r = t("./shadow-viewport"),
|
||||
a = function(t, e) {
|
||||
this.init(t, e)
|
||||
},
|
||||
l = {
|
||||
viewportSelector: ".svg-pan-zoom_viewport",
|
||||
panEnabled: !0,
|
||||
controlIconsEnabled: !1,
|
||||
zoomEnabled: !0,
|
||||
dblClickZoomEnabled: !0,
|
||||
mouseWheelZoomEnabled: !0,
|
||||
preventMouseEventsDefault: !0,
|
||||
zoomScaleSensitivity: .1,
|
||||
minZoom: .5,
|
||||
maxZoom: 10,
|
||||
fit: !0,
|
||||
contain: !1,
|
||||
center: !0,
|
||||
refreshRate: "auto",
|
||||
beforeZoom: null,
|
||||
onZoom: null,
|
||||
beforePan: null,
|
||||
onPan: null,
|
||||
customEventsHandler: null,
|
||||
eventsListenerElement: null
|
||||
};
|
||||
a.prototype.init = function(t, e) {
|
||||
var o = this;
|
||||
this.svg = t, this.defs = t.querySelector("defs"), s.setupSvgAttributes(this.svg), this.options = i.extend(i.extend({}, l), e), this.state = "none";
|
||||
var a = s.getBoundingClientRectNormalized(t);
|
||||
this.width = a.width, this.height = a.height, this.viewport = r(s.getOrCreateViewport(this.svg, this.options.viewportSelector), {
|
||||
svg: this.svg,
|
||||
width: this.width,
|
||||
height: this.height,
|
||||
fit: this.options.fit,
|
||||
contain: this.options.contain,
|
||||
center: this.options.center,
|
||||
refreshRate: this.options.refreshRate,
|
||||
beforeZoom: function(t, e) {
|
||||
return o.viewport && o.options.beforeZoom ? o.options.beforeZoom(t, e) : void 0
|
||||
},
|
||||
onZoom: function(t) {
|
||||
return o.viewport && o.options.onZoom ? o.options.onZoom(t) : void 0
|
||||
},
|
||||
beforePan: function(t, e) {
|
||||
return o.viewport && o.options.beforePan ? o.options.beforePan(t, e) : void 0
|
||||
},
|
||||
onPan: function(t) {
|
||||
return o.viewport && o.options.onPan ? o.options.onPan(t) : void 0
|
||||
}
|
||||
});
|
||||
var u = this.getPublicInstance();
|
||||
u.setBeforeZoom(this.options.beforeZoom), u.setOnZoom(this.options.onZoom), u.setBeforePan(this.options.beforePan), u.setOnPan(this.options.onPan), this.options.controlIconsEnabled && n.enable(this), this.lastMouseWheelEventTime = Date.now(), this.setupHandlers()
|
||||
}, a.prototype.setupHandlers = function() {
|
||||
var t = this,
|
||||
e = null;
|
||||
if (this.eventListeners = {
|
||||
mousedown: function(e) {
|
||||
return t.handleMouseDown(e, null)
|
||||
},
|
||||
touchstart: function(o) {
|
||||
var n = t.handleMouseDown(o, e);
|
||||
return e = o, n
|
||||
},
|
||||
mouseup: function(e) {
|
||||
return t.handleMouseUp(e)
|
||||
},
|
||||
touchend: function(e) {
|
||||
return t.handleMouseUp(e)
|
||||
},
|
||||
mousemove: function(e) {
|
||||
return t.handleMouseMove(e)
|
||||
},
|
||||
touchmove: function(e) {
|
||||
return t.handleMouseMove(e)
|
||||
},
|
||||
mouseleave: function(e) {
|
||||
return t.handleMouseUp(e)
|
||||
},
|
||||
touchleave: function(e) {
|
||||
return t.handleMouseUp(e)
|
||||
},
|
||||
touchcancel: function(e) {
|
||||
return t.handleMouseUp(e)
|
||||
}
|
||||
}, null != this.options.customEventsHandler) {
|
||||
this.options.customEventsHandler.init({
|
||||
svgElement: this.svg,
|
||||
eventsListenerElement: this.options.eventsListenerElement,
|
||||
instance: this.getPublicInstance()
|
||||
});
|
||||
var o = this.options.customEventsHandler.haltEventListeners;
|
||||
if (o && o.length)
|
||||
for (var n = o.length - 1; n >= 0; n--) this.eventListeners.hasOwnProperty(o[n]) && delete this.eventListeners[o[n]]
|
||||
}
|
||||
for (var i in this.eventListeners)(this.options.eventsListenerElement || this.svg).addEventListener(i, this.eventListeners[i], !1);
|
||||
this.options.mouseWheelZoomEnabled && (this.options.mouseWheelZoomEnabled = !1, this.enableMouseWheelZoom())
|
||||
}, a.prototype.enableMouseWheelZoom = function() {
|
||||
if (!this.options.mouseWheelZoomEnabled) {
|
||||
var t = this;
|
||||
this.wheelListener = function(e) {
|
||||
return t.handleMouseWheel(e)
|
||||
}, o.on(this.options.eventsListenerElement || this.svg, this.wheelListener, !1), this.options.mouseWheelZoomEnabled = !0
|
||||
}
|
||||
}, a.prototype.disableMouseWheelZoom = function() {
|
||||
this.options.mouseWheelZoomEnabled && (o.off(this.options.eventsListenerElement || this.svg, this.wheelListener, !1), this.options.mouseWheelZoomEnabled = !1)
|
||||
}, a.prototype.handleMouseWheel = function(t) {
|
||||
if (this.options.zoomEnabled && "none" === this.state) {
|
||||
this.options.preventMouseEventsDefault && (t.preventDefault ? t.preventDefault() : t.returnValue = !1);
|
||||
var e = t.deltaY || 1,
|
||||
o = Date.now() - this.lastMouseWheelEventTime,
|
||||
n = 3 + Math.max(0, 30 - o);
|
||||
this.lastMouseWheelEventTime = Date.now(), "deltaMode" in t && 0 === t.deltaMode && t.wheelDelta && (e = 0 === t.deltaY ? 0 : Math.abs(t.wheelDelta) / t.deltaY), e = e > -.3 && .3 > e ? e : (e > 0 ? 1 : -1) * Math.log(Math.abs(e) + 10) / n;
|
||||
var i = this.svg.getScreenCTM().inverse(),
|
||||
r = s.getEventPoint(t, this.svg).matrixTransform(i),
|
||||
a = Math.pow(1 + this.options.zoomScaleSensitivity, -1 * e);
|
||||
this.zoomAtPoint(a, r)
|
||||
}
|
||||
}, a.prototype.zoomAtPoint = function(t, e, o) {
|
||||
var n = this.viewport.getOriginalState();
|
||||
o ? (t = Math.max(this.options.minZoom * n.zoom, Math.min(this.options.maxZoom * n.zoom, t)), t /= this.getZoom()) : this.getZoom() * t < this.options.minZoom * n.zoom ? t = this.options.minZoom * n.zoom / this.getZoom() : this.getZoom() * t > this.options.maxZoom * n.zoom && (t = this.options.maxZoom * n.zoom / this.getZoom());
|
||||
var i = this.viewport.getCTM(),
|
||||
s = e.matrixTransform(i.inverse()),
|
||||
r = this.svg.createSVGMatrix().translate(s.x, s.y).scale(t).translate(-s.x, -s.y),
|
||||
a = i.multiply(r);
|
||||
a.a !== i.a && this.viewport.setCTM(a)
|
||||
}, a.prototype.zoom = function(t, e) {
|
||||
this.zoomAtPoint(t, s.getSvgCenterPoint(this.svg, this.width, this.height), e)
|
||||
}, a.prototype.publicZoom = function(t, e) {
|
||||
e && (t = this.computeFromRelativeZoom(t)), this.zoom(t, e)
|
||||
}, a.prototype.publicZoomAtPoint = function(t, e, o) {
|
||||
if (o && (t = this.computeFromRelativeZoom(t)), !("SVGPoint" !== i.getType(e) && "x" in e && "y" in e)) throw new Error("Given point is invalid");
|
||||
e = s.createSVGPoint(this.svg, e.x, e.y), this.zoomAtPoint(t, e, o)
|
||||
}, a.prototype.getZoom = function() {
|
||||
return this.viewport.getZoom()
|
||||
}, a.prototype.getRelativeZoom = function() {
|
||||
return this.viewport.getRelativeZoom()
|
||||
}, a.prototype.computeFromRelativeZoom = function(t) {
|
||||
return t * this.viewport.getOriginalState().zoom
|
||||
}, a.prototype.resetZoom = function() {
|
||||
var t = this.viewport.getOriginalState();
|
||||
this.zoom(t.zoom, !0)
|
||||
}, a.prototype.resetPan = function() {
|
||||
this.pan(this.viewport.getOriginalState())
|
||||
}, a.prototype.reset = function() {
|
||||
this.resetZoom(), this.resetPan()
|
||||
}, a.prototype.handleDblClick = function(t) {
|
||||
if (this.options.preventMouseEventsDefault && (t.preventDefault ? t.preventDefault() : t.returnValue = !1), this.options.controlIconsEnabled) {
|
||||
var e = t.target.getAttribute("class") || "";
|
||||
if (e.indexOf("svg-pan-zoom-control") > -1) return !1
|
||||
}
|
||||
var o;
|
||||
o = t.shiftKey ? 1 / (2 * (1 + this.options.zoomScaleSensitivity)) : 2 * (1 + this.options.zoomScaleSensitivity);
|
||||
var n = s.getEventPoint(t, this.svg).matrixTransform(this.svg.getScreenCTM().inverse());
|
||||
this.zoomAtPoint(o, n)
|
||||
}, a.prototype.handleMouseDown = function(t, e) {
|
||||
this.options.preventMouseEventsDefault && (t.preventDefault ? t.preventDefault() : t.returnValue = !1), i.mouseAndTouchNormalize(t, this.svg), this.options.dblClickZoomEnabled && i.isDblClick(t, e) ? this.handleDblClick(t) : (this.state = "pan", this.firstEventCTM = this.viewport.getCTM(), this.stateOrigin = s.getEventPoint(t, this.svg).matrixTransform(this.firstEventCTM.inverse()))
|
||||
}, a.prototype.handleMouseMove = function(t) {
|
||||
if (this.options.preventMouseEventsDefault && (t.preventDefault ? t.preventDefault() : t.returnValue = !1), "pan" === this.state && this.options.panEnabled) {
|
||||
var e = s.getEventPoint(t, this.svg).matrixTransform(this.firstEventCTM.inverse()),
|
||||
o = this.firstEventCTM.translate(e.x - this.stateOrigin.x, e.y - this.stateOrigin.y);
|
||||
this.viewport.setCTM(o)
|
||||
}
|
||||
}, a.prototype.handleMouseUp = function(t) {
|
||||
this.options.preventMouseEventsDefault && (t.preventDefault ? t.preventDefault() : t.returnValue = !1), "pan" === this.state && (this.state = "none")
|
||||
}, a.prototype.fit = function() {
|
||||
var t = this.viewport.getViewBox(),
|
||||
e = Math.min(this.width / t.width, this.height / t.height);
|
||||
this.zoom(e, !0)
|
||||
}, a.prototype.contain = function() {
|
||||
var t = this.viewport.getViewBox(),
|
||||
e = Math.max(this.width / t.width, this.height / t.height);
|
||||
this.zoom(e, !0)
|
||||
}, a.prototype.center = function() {
|
||||
var t = this.viewport.getViewBox(),
|
||||
e = .5 * (this.width - (t.width + 2 * t.x) * this.getZoom()),
|
||||
o = .5 * (this.height - (t.height + 2 * t.y) * this.getZoom());
|
||||
this.getPublicInstance().pan({
|
||||
x: e,
|
||||
y: o
|
||||
})
|
||||
}, a.prototype.updateBBox = function() {
|
||||
this.viewport.recacheViewBox()
|
||||
}, a.prototype.pan = function(t) {
|
||||
var e = this.viewport.getCTM();
|
||||
e.e = t.x, e.f = t.y, this.viewport.setCTM(e)
|
||||
}, a.prototype.panBy = function(t) {
|
||||
var e = this.viewport.getCTM();
|
||||
e.e += t.x, e.f += t.y, this.viewport.setCTM(e)
|
||||
}, a.prototype.getPan = function() {
|
||||
var t = this.viewport.getState();
|
||||
return {
|
||||
x: t.x,
|
||||
y: t.y
|
||||
}
|
||||
}, a.prototype.resize = function() {
|
||||
var t = s.getBoundingClientRectNormalized(this.svg);
|
||||
this.width = t.width, this.height = t.height, this.options.controlIconsEnabled && (this.getPublicInstance().disableControlIcons(), this.getPublicInstance().enableControlIcons())
|
||||
}, a.prototype.destroy = function() {
|
||||
var t = this;
|
||||
this.beforeZoom = null, this.onZoom = null, this.beforePan = null, this.onPan = null, null != this.options.customEventsHandler && this.options.customEventsHandler.destroy({
|
||||
svgElement: this.svg,
|
||||
eventsListenerElement: this.options.eventsListenerElement,
|
||||
instance: this.getPublicInstance()
|
||||
});
|
||||
for (var e in this.eventListeners)(this.options.eventsListenerElement || this.svg).removeEventListener(e, this.eventListeners[e], !1);
|
||||
this.disableMouseWheelZoom(), this.getPublicInstance().disableControlIcons(), this.reset(), u = u.filter(function(e) {
|
||||
return e.svg !== t.svg
|
||||
}), delete this.options, delete this.publicInstance, delete this.pi, this.getPublicInstance = function() {
|
||||
return null
|
||||
}
|
||||
}, a.prototype.getPublicInstance = function() {
|
||||
var t = this;
|
||||
return this.publicInstance || (this.publicInstance = this.pi = {
|
||||
enablePan: function() {
|
||||
return t.options.panEnabled = !0, t.pi
|
||||
},
|
||||
disablePan: function() {
|
||||
return t.options.panEnabled = !1, t.pi
|
||||
},
|
||||
isPanEnabled: function() {
|
||||
return !!t.options.panEnabled
|
||||
},
|
||||
pan: function(e) {
|
||||
return t.pan(e), t.pi
|
||||
},
|
||||
panBy: function(e) {
|
||||
return t.panBy(e), t.pi
|
||||
},
|
||||
getPan: function() {
|
||||
return t.getPan()
|
||||
},
|
||||
setBeforePan: function(e) {
|
||||
return t.options.beforePan = null === e ? null : i.proxy(e, t.publicInstance), t.pi
|
||||
},
|
||||
setOnPan: function(e) {
|
||||
return t.options.onPan = null === e ? null : i.proxy(e, t.publicInstance), t.pi
|
||||
},
|
||||
enableZoom: function() {
|
||||
return t.options.zoomEnabled = !0, t.pi
|
||||
},
|
||||
disableZoom: function() {
|
||||
return t.options.zoomEnabled = !1, t.pi
|
||||
},
|
||||
isZoomEnabled: function() {
|
||||
return !!t.options.zoomEnabled
|
||||
},
|
||||
enableControlIcons: function() {
|
||||
return t.options.controlIconsEnabled || (t.options.controlIconsEnabled = !0, n.enable(t)), t.pi
|
||||
},
|
||||
disableControlIcons: function() {
|
||||
return t.options.controlIconsEnabled && (t.options.controlIconsEnabled = !1, n.disable(t)), t.pi
|
||||
},
|
||||
isControlIconsEnabled: function() {
|
||||
return !!t.options.controlIconsEnabled
|
||||
},
|
||||
enableDblClickZoom: function() {
|
||||
return t.options.dblClickZoomEnabled = !0, t.pi
|
||||
},
|
||||
disableDblClickZoom: function() {
|
||||
return t.options.dblClickZoomEnabled = !1, t.pi
|
||||
},
|
||||
isDblClickZoomEnabled: function() {
|
||||
return !!t.options.dblClickZoomEnabled
|
||||
},
|
||||
enableMouseWheelZoom: function() {
|
||||
return t.enableMouseWheelZoom(), t.pi
|
||||
},
|
||||
disableMouseWheelZoom: function() {
|
||||
return t.disableMouseWheelZoom(), t.pi
|
||||
},
|
||||
isMouseWheelZoomEnabled: function() {
|
||||
return !!t.options.mouseWheelZoomEnabled
|
||||
},
|
||||
setZoomScaleSensitivity: function(e) {
|
||||
return t.options.zoomScaleSensitivity = e, t.pi
|
||||
},
|
||||
setMinZoom: function(e) {
|
||||
return t.options.minZoom = e, t.pi
|
||||
},
|
||||
setMaxZoom: function(e) {
|
||||
return t.options.maxZoom = e, t.pi
|
||||
},
|
||||
setBeforeZoom: function(e) {
|
||||
return t.options.beforeZoom = null === e ? null : i.proxy(e, t.publicInstance), t.pi
|
||||
},
|
||||
setOnZoom: function(e) {
|
||||
return t.options.onZoom = null === e ? null : i.proxy(e, t.publicInstance), t.pi
|
||||
},
|
||||
zoom: function(e) {
|
||||
return t.publicZoom(e, !0), t.pi
|
||||
},
|
||||
zoomBy: function(e) {
|
||||
return t.publicZoom(e, !1), t.pi
|
||||
},
|
||||
zoomAtPoint: function(e, o) {
|
||||
return t.publicZoomAtPoint(e, o, !0), t.pi
|
||||
},
|
||||
zoomAtPointBy: function(e, o) {
|
||||
return t.publicZoomAtPoint(e, o, !1), t.pi
|
||||
},
|
||||
zoomIn: function() {
|
||||
return this.zoomBy(1 + t.options.zoomScaleSensitivity), t.pi
|
||||
},
|
||||
zoomOut: function() {
|
||||
return this.zoomBy(1 / (1 + t.options.zoomScaleSensitivity)), t.pi
|
||||
},
|
||||
getZoom: function() {
|
||||
return t.getRelativeZoom()
|
||||
},
|
||||
resetZoom: function() {
|
||||
return t.resetZoom(), t.pi
|
||||
},
|
||||
resetPan: function() {
|
||||
return t.resetPan(), t.pi
|
||||
},
|
||||
reset: function() {
|
||||
return t.reset(), t.pi
|
||||
},
|
||||
fit: function() {
|
||||
return t.fit(), t.pi
|
||||
},
|
||||
contain: function() {
|
||||
return t.contain(), t.pi
|
||||
},
|
||||
center: function() {
|
||||
return t.center(), t.pi
|
||||
},
|
||||
updateBBox: function() {
|
||||
return t.updateBBox(), t.pi
|
||||
},
|
||||
resize: function() {
|
||||
return t.resize(), t.pi
|
||||
},
|
||||
getSizes: function() {
|
||||
return {
|
||||
width: t.width,
|
||||
height: t.height,
|
||||
realZoom: t.getZoom(),
|
||||
viewBox: t.viewport.getViewBox()
|
||||
}
|
||||
},
|
||||
destroy: function() {
|
||||
return t.destroy(), t.pi
|
||||
}
|
||||
}), this.publicInstance
|
||||
};
|
||||
var u = [],
|
||||
h = function(t, e) {
|
||||
var o = i.getSvg(t);
|
||||
if (null === o) return null;
|
||||
for (var n = u.length - 1; n >= 0; n--)
|
||||
if (u[n].svg === o) return u[n].instance.getPublicInstance();
|
||||
return u.push({
|
||||
svg: o,
|
||||
instance: new a(o, e)
|
||||
}), u[u.length - 1].instance.getPublicInstance()
|
||||
};
|
||||
e.exports = h
|
||||
}, {
|
||||
"./control-icons": 2,
|
||||
"./shadow-viewport": 3,
|
||||
"./svg-utilities": 5,
|
||||
"./uniwheel": 6,
|
||||
"./utilities": 7
|
||||
}],
|
||||
5: [function(t, e) {
|
||||
var o = t("./utilities"),
|
||||
n = "unknown";
|
||||
document.documentMode && (n = "ie"), e.exports = {
|
||||
svgNS: "http://www.w3.org/2000/svg",
|
||||
xmlNS: "http://www.w3.org/XML/1998/namespace",
|
||||
xmlnsNS: "http://www.w3.org/2000/xmlns/",
|
||||
xlinkNS: "http://www.w3.org/1999/xlink",
|
||||
evNS: "http://www.w3.org/2001/xml-events",
|
||||
getBoundingClientRectNormalized: function(t) {
|
||||
if (t.clientWidth && t.clientHeight) return {
|
||||
width: t.clientWidth,
|
||||
height: t.clientHeight
|
||||
};
|
||||
if (t.getBoundingClientRect()) return t.getBoundingClientRect();
|
||||
throw new Error("Cannot get BoundingClientRect for SVG.")
|
||||
},
|
||||
getOrCreateViewport: function(t, e) {
|
||||
var n = null;
|
||||
if (n = o.isElement(e) ? e : t.querySelector(e), !n) {
|
||||
var i = Array.prototype.slice.call(t.childNodes || t.children).filter(function(t) {
|
||||
return "defs" !== t.nodeName && "#text" !== t.nodeName
|
||||
});
|
||||
1 === i.length && "g" === i[0].nodeName && null === i[0].getAttribute("transform") && (n = i[0])
|
||||
}
|
||||
if (!n) {
|
||||
var s = "viewport-" + (new Date).toISOString().replace(/\D/g, "");
|
||||
n = document.createElementNS(this.svgNS, "g"), n.setAttribute("id", s);
|
||||
var r = t.childNodes || t.children;
|
||||
if (r && r.length > 0)
|
||||
for (var a = r.length; a > 0; a--) "defs" !== r[r.length - a].nodeName && n.appendChild(r[r.length - a]);
|
||||
t.appendChild(n)
|
||||
}
|
||||
var l = [];
|
||||
return n.getAttribute("class") && (l = n.getAttribute("class").split(" ")), ~l.indexOf("svg-pan-zoom_viewport") || (l.push("svg-pan-zoom_viewport"), n.setAttribute("class", l.join(" "))), n
|
||||
},
|
||||
setupSvgAttributes: function(t) {
|
||||
if (t.setAttribute("xmlns", this.svgNS), t.setAttributeNS(this.xmlnsNS, "xmlns:xlink", this.xlinkNS), t.setAttributeNS(this.xmlnsNS, "xmlns:ev", this.evNS), null !== t.parentNode) {
|
||||
var e = t.getAttribute("style") || ""; - 1 === e.toLowerCase().indexOf("overflow") && t.setAttribute("style", "overflow: hidden; " + e)
|
||||
}
|
||||
},
|
||||
internetExplorerRedisplayInterval: 300,
|
||||
refreshDefsGlobal: o.throttle(function() {
|
||||
for (var t = document.querySelectorAll("defs"), e = t.length, o = 0; e > o; o++) {
|
||||
var n = t[o];
|
||||
n.parentNode.insertBefore(n, n)
|
||||
}
|
||||
}, this.internetExplorerRedisplayInterval),
|
||||
setCTM: function(t, e, o) {
|
||||
var i = this,
|
||||
s = "matrix(" + e.a + "," + e.b + "," + e.c + "," + e.d + "," + e.e + "," + e.f + ")";
|
||||
t.setAttributeNS(null, "transform", s), "ie" === n && o && (o.parentNode.insertBefore(o, o), window.setTimeout(function() {
|
||||
i.refreshDefsGlobal()
|
||||
}, i.internetExplorerRedisplayInterval))
|
||||
},
|
||||
getEventPoint: function(t, e) {
|
||||
var n = e.createSVGPoint();
|
||||
return o.mouseAndTouchNormalize(t, e), n.x = t.clientX, n.y = t.clientY, n
|
||||
},
|
||||
getSvgCenterPoint: function(t, e, o) {
|
||||
return this.createSVGPoint(t, e / 2, o / 2)
|
||||
},
|
||||
createSVGPoint: function(t, e, o) {
|
||||
var n = t.createSVGPoint();
|
||||
return n.x = e, n.y = o, n
|
||||
}
|
||||
}
|
||||
}, {
|
||||
"./utilities": 7
|
||||
}],
|
||||
6: [function(t, e) {
|
||||
e.exports = function() {
|
||||
function t(t, e, o) {
|
||||
var n = function(t) {
|
||||
!t && (t = window.event);
|
||||
var o = {
|
||||
originalEvent: t,
|
||||
target: t.target || t.srcElement,
|
||||
type: "wheel",
|
||||
deltaMode: "MozMousePixelScroll" == t.type ? 0 : 1,
|
||||
deltaX: 0,
|
||||
delatZ: 0,
|
||||
preventDefault: function() {
|
||||
t.preventDefault ? t.preventDefault() : t.returnValue = !1
|
||||
}
|
||||
};
|
||||
return "mousewheel" == u ? (o.deltaY = -1 / 40 * t.wheelDelta, t.wheelDeltaX && (o.deltaX = -1 / 40 * t.wheelDeltaX)) : o.deltaY = t.detail, e(o)
|
||||
};
|
||||
return c.push({
|
||||
element: t,
|
||||
fn: n,
|
||||
capture: o
|
||||
}), n
|
||||
}
|
||||
|
||||
function e(t, e) {
|
||||
for (var o = 0; o < c.length; o++)
|
||||
if (c[o].element === t && c[o].capture === e) return c[o].fn;
|
||||
return function() {}
|
||||
}
|
||||
|
||||
function o(t, e) {
|
||||
for (var o = 0; o < c.length; o++)
|
||||
if (c[o].element === t && c[o].capture === e) return c.splice(o, 1)
|
||||
}
|
||||
|
||||
function n(e, o, n, i) {
|
||||
var s;
|
||||
s = "wheel" === u ? n : t(e, n, i), e[a](h + o, s, i || !1)
|
||||
}
|
||||
|
||||
function i(t, n, i, s) {
|
||||
cb = "wheel" === u ? i : e(t, s), t[l](h + n, cb, s || !1), o(t, s)
|
||||
}
|
||||
|
||||
function s(t, e, o) {
|
||||
n(t, u, e, o), "DOMMouseScroll" == u && n(t, "MozMousePixelScroll", e, o)
|
||||
}
|
||||
|
||||
function r(t, e, o) {
|
||||
i(t, u, e, o), "DOMMouseScroll" == u && i(t, "MozMousePixelScroll", e, o)
|
||||
}
|
||||
var a, l, u, h = "",
|
||||
c = [];
|
||||
return window.addEventListener ? (a = "addEventListener", l = "removeEventListener") : (a = "attachEvent", l = "detachEvent", h = "on"), u = "onwheel" in document.createElement("div") ? "wheel" : void 0 !== document.onmousewheel ? "mousewheel" : "DOMMouseScroll", {
|
||||
on: s,
|
||||
off: r
|
||||
}
|
||||
}()
|
||||
}, {}],
|
||||
7: [function(t, e) {
|
||||
function o(t) {
|
||||
return function(e) {
|
||||
window.setTimeout(e, t)
|
||||
}
|
||||
}
|
||||
e.exports = {
|
||||
extend: function(t, e) {
|
||||
t = t || {};
|
||||
for (var o in e) t[o] = this.isObject(e[o]) ? this.extend(t[o], e[o]) : e[o];
|
||||
return t
|
||||
},
|
||||
isElement: function(t) {
|
||||
return t instanceof HTMLElement || t instanceof SVGElement || t instanceof SVGSVGElement || t && "object" == typeof t && null !== t && 1 === t.nodeType && "string" == typeof t.nodeName
|
||||
},
|
||||
isObject: function(t) {
|
||||
return "[object Object]" === Object.prototype.toString.call(t)
|
||||
},
|
||||
isNumber: function(t) {
|
||||
return !isNaN(parseFloat(t)) && isFinite(t)
|
||||
},
|
||||
getSvg: function(t) {
|
||||
var e, o;
|
||||
if (this.isElement(t)) e = t;
|
||||
else {
|
||||
if (!("string" == typeof t || t instanceof String)) throw new Error("Provided selector is not an HTML object nor String");
|
||||
if (e = document.querySelector(t), !e) throw new Error("Provided selector did not find any elements. Selector: " + t)
|
||||
}
|
||||
if ("svg" === e.tagName.toLowerCase()) o = e;
|
||||
else if ("object" === e.tagName.toLowerCase()) o = e.contentDocument.documentElement;
|
||||
else {
|
||||
if ("embed" !== e.tagName.toLowerCase()) throw new Error("img" === e.tagName.toLowerCase() ? 'Cannot script an SVG in an "img" element. Please use an "object" element or an in-line SVG.' : "Cannot get SVG.");
|
||||
o = e.getSVGDocument().documentElement
|
||||
}
|
||||
return o
|
||||
},
|
||||
proxy: function(t, e) {
|
||||
return function() {
|
||||
return t.apply(e, arguments)
|
||||
}
|
||||
},
|
||||
getType: function(t) {
|
||||
return Object.prototype.toString.apply(t).replace(/^\[object\s/, "").replace(/\]$/, "")
|
||||
},
|
||||
mouseAndTouchNormalize: function(t, e) {
|
||||
if (void 0 === t.clientX || null === t.clientX)
|
||||
if (t.clientX = 0, t.clientY = 0, void 0 !== t.changedTouches && t.changedTouches.length) {
|
||||
if (void 0 !== t.changedTouches[0].clientX) t.clientX = t.changedTouches[0].clientX, t.clientY = t.changedTouches[0].clientY;
|
||||
else if (void 0 !== t.changedTouches[0].pageX) {
|
||||
var o = e.getBoundingClientRect();
|
||||
t.clientX = t.changedTouches[0].pageX - o.left, t.clientY = t.changedTouches[0].pageY - o.top
|
||||
}
|
||||
} else void 0 !== t.originalEvent && void 0 !== t.originalEvent.clientX && (t.clientX = t.originalEvent.clientX, t.clientY = t.originalEvent.clientY)
|
||||
},
|
||||
isDblClick: function(t, e) {
|
||||
if (2 === t.detail) return !0;
|
||||
if (void 0 !== e && null !== e) {
|
||||
var o = t.timeStamp - e.timeStamp,
|
||||
n = Math.sqrt(Math.pow(t.clientX - e.clientX, 2) + Math.pow(t.clientY - e.clientY, 2));
|
||||
return 250 > o && 10 > n
|
||||
}
|
||||
return !1
|
||||
},
|
||||
now: Date.now || function() {
|
||||
return (new Date).getTime()
|
||||
},
|
||||
throttle: function(t, e, o) {
|
||||
var n, i, s, r = this,
|
||||
a = null,
|
||||
l = 0;
|
||||
o || (o = {});
|
||||
var u = function() {
|
||||
l = o.leading === !1 ? 0 : r.now(), a = null, s = t.apply(n, i), a || (n = i = null)
|
||||
};
|
||||
return function() {
|
||||
var h = r.now();
|
||||
l || o.leading !== !1 || (l = h);
|
||||
var c = e - (h - l);
|
||||
return n = this, i = arguments, 0 >= c || c > e ? (clearTimeout(a), a = null, l = h, s = t.apply(n, i), a || (n = i = null)) : a || o.trailing === !1 || (a = setTimeout(u, c)), s
|
||||
}
|
||||
},
|
||||
createRequestAnimationFrame: function(t) {
|
||||
var e = null;
|
||||
return "auto" !== t && 60 > t && t > 1 && (e = Math.floor(1e3 / t)), null === e ? window.requestAnimationFrame || o(33) : o(e)
|
||||
}
|
||||
}
|
||||
}, {}]
|
||||
}, {}, [1]);
|
6
documentation/frontend/js/libs/tablesort.min.js
vendored
Normal file
6
documentation/frontend/js/libs/tablesort.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* tablesort v5.1.0 (2018-09-14)
|
||||
* http://tristen.ca/tablesort/demo/
|
||||
* Copyright (c) 2018 ; Licensed MIT
|
||||
*/
|
||||
!function(){function a(b,c){if(!(this instanceof a))return new a(b,c);if(!b||"TABLE"!==b.tagName)throw new Error("Element must be a table");this.init(b,c||{})}var b=[],c=function(a){var b;return window.CustomEvent&&"function"==typeof window.CustomEvent?b=new CustomEvent(a):(b=document.createEvent("CustomEvent"),b.initCustomEvent(a,!1,!1,void 0)),b},d=function(a){return a.getAttribute("data-sort")||a.textContent||a.innerText||""},e=function(a,b){return a=a.trim().toLowerCase(),b=b.trim().toLowerCase(),a===b?0:a<b?1:-1},f=function(a,b){return function(c,d){var e=a(c.td,d.td);return 0===e?b?d.index-c.index:c.index-d.index:e}};a.extend=function(a,c,d){if("function"!=typeof c||"function"!=typeof d)throw new Error("Pattern and sort must be a function");b.push({name:a,pattern:c,sort:d})},a.prototype={init:function(a,b){var c,d,e,f,g=this;if(g.table=a,g.thead=!1,g.options=b,a.rows&&a.rows.length>0)if(a.tHead&&a.tHead.rows.length>0){for(e=0;e<a.tHead.rows.length;e++)if("thead"===a.tHead.rows[e].getAttribute("data-sort-method")){c=a.tHead.rows[e];break}c||(c=a.tHead.rows[a.tHead.rows.length-1]),g.thead=!0}else c=a.rows[0];if(c){var h=function(){g.current&&g.current!==this&&g.current.removeAttribute("aria-sort"),g.current=this,g.sortTable(this)};for(e=0;e<c.cells.length;e++)f=c.cells[e],f.setAttribute("role","columnheader"),"none"!==f.getAttribute("data-sort-method")&&(f.tabindex=0,f.addEventListener("click",h,!1),null!==f.getAttribute("data-sort-default")&&(d=f));d&&(g.current=d,g.sortTable(d))}},sortTable:function(a,g){var h=this,i=a.cellIndex,j=e,k="",l=[],m=h.thead?0:1,n=a.getAttribute("data-sort-method"),o=a.getAttribute("aria-sort");if(h.table.dispatchEvent(c("beforeSort")),g||(o="ascending"===o?"descending":"descending"===o?"ascending":h.options.descending?"descending":"ascending",a.setAttribute("aria-sort",o)),!(h.table.rows.length<2)){if(!n){for(;l.length<3&&m<h.table.tBodies[0].rows.length;)k=d(h.table.tBodies[0].rows[m].cells[i]),k=k.trim(),k.length>0&&l.push(k),m++;if(!l)return}for(m=0;m<b.length;m++)if(k=b[m],n){if(k.name===n){j=k.sort;break}}else if(l.every(k.pattern)){j=k.sort;break}for(h.col=i,m=0;m<h.table.tBodies.length;m++){var p,q=[],r={},s=0,t=0;if(!(h.table.tBodies[m].rows.length<2)){for(p=0;p<h.table.tBodies[m].rows.length;p++)k=h.table.tBodies[m].rows[p],"none"===k.getAttribute("data-sort-method")?r[s]=k:q.push({tr:k,td:d(k.cells[h.col]),index:s}),s++;for("descending"===o?q.sort(f(j,!0)):(q.sort(f(j,!1)),q.reverse()),p=0;p<s;p++)r[p]?(k=r[p],t++):k=q[p-t].tr,h.table.tBodies[m].appendChild(k)}}h.table.dispatchEvent(c("afterSort"))}},refresh:function(){void 0!==this.current&&this.sortTable(this.current,!0)}},"undefined"!=typeof module&&module.exports?module.exports=a:window.Tablesort=a}();
|
6
documentation/frontend/js/libs/tablesort.number.min.js
vendored
Normal file
6
documentation/frontend/js/libs/tablesort.number.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* tablesort v5.1.0 (2018-09-14)
|
||||
* http://tristen.ca/tablesort/demo/
|
||||
* Copyright (c) 2018 ; Licensed MIT
|
||||
*/
|
||||
!function(){var a=function(a){return a.replace(/[^\-?0-9.]/g,"")},b=function(a,b){return a=parseFloat(a),b=parseFloat(b),a=isNaN(a)?0:a,b=isNaN(b)?0:b,a-b};Tablesort.extend("number",function(a){return a.match(/^[-+]?[£\x24Û¢´€]?\d+\s*([,\.]\d{0,2})/)||a.match(/^[-+]?\d+\s*([,\.]\d{0,2})?[£\x24Û¢´€]/)||a.match(/^[-+]?(\d)*-?([,\.]){0,1}-?(\d)+([E,e][\-+][\d]+)?%?$/)},function(c,d){return c=a(c),d=a(d),b(d,c)})}();
|
46
documentation/frontend/js/libs/vis.min.js
vendored
Normal file
46
documentation/frontend/js/libs/vis.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
documentation/frontend/js/libs/zepto.min.js
vendored
Normal file
2
documentation/frontend/js/libs/zepto.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
206
documentation/frontend/js/menu-wc.js
Normal file
206
documentation/frontend/js/menu-wc.js
Normal file
@@ -0,0 +1,206 @@
|
||||
'use strict';
|
||||
|
||||
customElements.define('compodoc-menu', class extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
this.isNormalMode = this.getAttribute('mode') === 'normal';
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
this.render(this.isNormalMode);
|
||||
}
|
||||
|
||||
render(isNormalMode) {
|
||||
let tp = lithtml.html(`
|
||||
<nav>
|
||||
<ul class="list">
|
||||
<li class="title">
|
||||
<a href="index.html" data-type="index-link">aktienbot documentation</a>
|
||||
</li>
|
||||
|
||||
<li class="divider"></li>
|
||||
${ isNormalMode ? `<div id="book-search-input" role="search"><input type="text" placeholder="Type to search"></div>` : '' }
|
||||
<li class="chapter">
|
||||
<a data-type="chapter-link" href="index.html"><span class="icon ion-ios-home"></span>Getting started</a>
|
||||
<ul class="links">
|
||||
<li class="link">
|
||||
<a href="overview.html" data-type="chapter-link">
|
||||
<span class="icon ion-ios-keypad"></span>Overview
|
||||
</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="index.html" data-type="chapter-link">
|
||||
<span class="icon ion-ios-paper"></span>README
|
||||
</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="dependencies.html" data-type="chapter-link">
|
||||
<span class="icon ion-ios-list"></span>Dependencies
|
||||
</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="properties.html" data-type="chapter-link">
|
||||
<span class="icon ion-ios-apps"></span>Properties
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter modules">
|
||||
<a data-type="chapter-link" href="modules.html">
|
||||
<div class="menu-toggler linked" data-toggle="collapse" ${ isNormalMode ?
|
||||
'data-target="#modules-links"' : 'data-target="#xs-modules-links"' }>
|
||||
<span class="icon ion-ios-archive"></span>
|
||||
<span class="link-name">Modules</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
</a>
|
||||
<ul class="links collapse " ${ isNormalMode ? 'id="modules-links"' : 'id="xs-modules-links"' }>
|
||||
<li class="link">
|
||||
<a href="modules/AppModule.html" data-type="entity-link" >AppModule</a>
|
||||
<li class="chapter inner">
|
||||
<div class="simple menu-toggler" data-toggle="collapse" ${ isNormalMode ?
|
||||
'data-target="#components-links-module-AppModule-34cb5442ffd00e56d7aa371f8eaff935ef2fc1ca4c59dabdb9994c138649d65175b885c8e95e6c08c855f26a16755de2fae6988c4609b06ab1109082fa6213b1"' : 'data-target="#xs-components-links-module-AppModule-34cb5442ffd00e56d7aa371f8eaff935ef2fc1ca4c59dabdb9994c138649d65175b885c8e95e6c08c855f26a16755de2fae6988c4609b06ab1109082fa6213b1"' }>
|
||||
<span class="icon ion-md-cog"></span>
|
||||
<span>Components</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
<ul class="links collapse" ${ isNormalMode ? 'id="components-links-module-AppModule-34cb5442ffd00e56d7aa371f8eaff935ef2fc1ca4c59dabdb9994c138649d65175b885c8e95e6c08c855f26a16755de2fae6988c4609b06ab1109082fa6213b1"' :
|
||||
'id="xs-components-links-module-AppModule-34cb5442ffd00e56d7aa371f8eaff935ef2fc1ca4c59dabdb9994c138649d65175b885c8e95e6c08c855f26a16755de2fae6988c4609b06ab1109082fa6213b1"' }>
|
||||
<li class="link">
|
||||
<a href="components/AppComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >AppComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/BotSettingsComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >BotSettingsComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/ConfirmationDialogComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >ConfirmationDialogComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/DashboardComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >DashboardComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/HeaderComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >HeaderComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/HelpDialogComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >HelpDialogComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/LoginComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >LoginComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/ProfileComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >ProfileComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/RegisterComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >RegisterComponent</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="components/UserDialogComponent.html" data-type="entity-link" data-context="sub-entity" data-context-id="modules" >UserDialogComponent</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="modules/AppRoutingModule.html" data-type="entity-link" >AppRoutingModule</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<div class="simple menu-toggler" data-toggle="collapse" ${ isNormalMode ? 'data-target="#injectables-links"' :
|
||||
'data-target="#xs-injectables-links"' }>
|
||||
<span class="icon ion-md-arrow-round-down"></span>
|
||||
<span>Injectables</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
<ul class="links collapse " ${ isNormalMode ? 'id="injectables-links"' : 'id="xs-injectables-links"' }>
|
||||
<li class="link">
|
||||
<a href="injectables/AuthService.html" data-type="entity-link" >AuthService</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="injectables/BotService.html" data-type="entity-link" >BotService</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="injectables/DataService.html" data-type="entity-link" >DataService</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="injectables/HelperService.html" data-type="entity-link" >HelperService</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="injectables/ProfileService.html" data-type="entity-link" >ProfileService</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="injectables/TokenStorageService.html" data-type="entity-link" >TokenStorageService</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<div class="simple menu-toggler" data-toggle="collapse" ${ isNormalMode ? 'data-target="#interceptors-links"' :
|
||||
'data-target="#xs-interceptors-links"' }>
|
||||
<span class="icon ion-ios-swap"></span>
|
||||
<span>Interceptors</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
<ul class="links collapse " ${ isNormalMode ? 'id="interceptors-links"' : 'id="xs-interceptors-links"' }>
|
||||
<li class="link">
|
||||
<a href="interceptors/AuthInterceptor.html" data-type="entity-link" >AuthInterceptor</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<div class="simple menu-toggler" data-toggle="collapse" ${ isNormalMode ? 'data-target="#interfaces-links"' :
|
||||
'data-target="#xs-interfaces-links"' }>
|
||||
<span class="icon ion-md-information-circle-outline"></span>
|
||||
<span>Interfaces</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
<ul class="links collapse " ${ isNormalMode ? ' id="interfaces-links"' : 'id="xs-interfaces-links"' }>
|
||||
<li class="link">
|
||||
<a href="interfaces/Fruit.html" data-type="entity-link" >Fruit</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="interfaces/Keyword.html" data-type="entity-link" >Keyword</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="interfaces/PeriodicElement.html" data-type="entity-link" >PeriodicElement</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="interfaces/Share.html" data-type="entity-link" >Share</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="interfaces/Stock.html" data-type="entity-link" >Stock</a>
|
||||
</li>
|
||||
<li class="link">
|
||||
<a href="interfaces/TransactionData.html" data-type="entity-link" >TransactionData</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<div class="simple menu-toggler" data-toggle="collapse" ${ isNormalMode ? 'data-target="#miscellaneous-links"'
|
||||
: 'data-target="#xs-miscellaneous-links"' }>
|
||||
<span class="icon ion-ios-cube"></span>
|
||||
<span>Miscellaneous</span>
|
||||
<span class="icon ion-ios-arrow-down"></span>
|
||||
</div>
|
||||
<ul class="links collapse " ${ isNormalMode ? 'id="miscellaneous-links"' : 'id="xs-miscellaneous-links"' }>
|
||||
<li class="link">
|
||||
<a href="miscellaneous/variables.html" data-type="entity-link">Variables</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<a data-type="chapter-link" href="routes.html"><span class="icon ion-ios-git-branch"></span>Routes</a>
|
||||
</li>
|
||||
<li class="chapter">
|
||||
<a data-type="chapter-link" href="coverage.html"><span class="icon ion-ios-stats"></span>Documentation coverage</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li class="copyright">
|
||||
Documentation generated using <a href="https://compodoc.app/" target="_blank">
|
||||
<img data-src="images/compodoc-vectorise.png" class="img-responsive" data-type="compodoc-logo">
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
`);
|
||||
this.innerHTML = tp.strings;
|
||||
}
|
||||
});
|
60
documentation/frontend/js/menu-wc_es5.js
Normal file
60
documentation/frontend/js/menu-wc_es5.js
Normal file
File diff suppressed because one or more lines are too long
56
documentation/frontend/js/menu.js
Normal file
56
documentation/frontend/js/menu.js
Normal file
@@ -0,0 +1,56 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var menuCollapsed = false,
|
||||
mobileMenu = document.getElementById('mobile-menu');
|
||||
document.getElementById('btn-menu').addEventListener('click', function() {
|
||||
if (menuCollapsed) {
|
||||
mobileMenu.style.display = 'none';
|
||||
} else {
|
||||
mobileMenu.style.display = 'block';
|
||||
document.getElementsByTagName('body')[0].style['overflow-y'] = 'hidden';
|
||||
}
|
||||
menuCollapsed = !menuCollapsed;
|
||||
});
|
||||
|
||||
// collapse menu
|
||||
var classnameMenuToggler = document.getElementsByClassName('menu-toggler'),
|
||||
faAngleUpClass = 'fa-angle-up',
|
||||
faAngleDownClass = 'fa-angle-down',
|
||||
toggleItemMenu = function(e) {
|
||||
e.preventDefault();
|
||||
var element = $(e.target);
|
||||
if (element.hasClass(faAngleUpClass)) {
|
||||
element.addClass(faAngleDownClass);
|
||||
element.removeClass(faAngleUpClass);
|
||||
} else {
|
||||
element.addClass(faAngleUpClass);
|
||||
element.removeClass(faAngleDownClass);
|
||||
}
|
||||
};
|
||||
|
||||
for (var i = 0; i < classnameMenuToggler.length; i++) {
|
||||
classnameMenuToggler[i].addEventListener('click', toggleItemMenu, false);
|
||||
}
|
||||
|
||||
// Scroll to active link
|
||||
var menus = document.querySelectorAll('.menu'),
|
||||
i = 0,
|
||||
len = menus.length,
|
||||
activeMenu,
|
||||
activeMenuClass,
|
||||
activeLink;
|
||||
|
||||
for (i; i<len; i++) {
|
||||
if (getComputedStyle(menus[i]).display != 'none') {
|
||||
activeMenu = menus[i];
|
||||
activeMenuClass = activeMenu.getAttribute('class').split(' ')[0];
|
||||
}
|
||||
}
|
||||
|
||||
if (activeMenu) {
|
||||
activeLink = document.querySelector('.' + activeMenuClass + ' .active');
|
||||
activeMenu.scrollTop = activeLink.offsetTop;
|
||||
if (activeLink.innerHTML.toLowerCase().indexOf('readme') != -1 || activeLink.innerHTML.toLowerCase().indexOf('overview') != -1) {
|
||||
activeMenu.scrollTop = 0;
|
||||
}
|
||||
}
|
||||
});
|
280
documentation/frontend/js/routes.js
Normal file
280
documentation/frontend/js/routes.js
Normal file
@@ -0,0 +1,280 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
function htmlEntities(str) {
|
||||
return String(str).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
||||
}
|
||||
|
||||
function foundLazyModuleWithPath(path) {
|
||||
//path is like app/customers/customers.module#CustomersModule
|
||||
var split = path.split('#'),
|
||||
lazyModulePath = split[0],
|
||||
lazyModuleName = split[1];
|
||||
return lazyModuleName;
|
||||
}
|
||||
|
||||
function getBB(selection) {
|
||||
selection.each(function(d){d.bbox = this.getBBox();})
|
||||
}
|
||||
|
||||
var test_cases,
|
||||
test_case,
|
||||
test_case_num,
|
||||
engine;
|
||||
|
||||
var tree = ROUTES_INDEX;
|
||||
|
||||
function cleanStringChildren(obj) {
|
||||
for (var property in obj) {
|
||||
if (obj.hasOwnProperty(property)) {
|
||||
if (property === 'children' && typeof obj[property] === 'object') {
|
||||
for (var i = obj[property].length - 1; i >= 0 ; i--) {
|
||||
if (typeof obj[property][i] === 'string') {
|
||||
obj[property].splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (typeof obj[property] === 'object') {
|
||||
cleanStringChildren(obj[property]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
cleanStringChildren(tree);
|
||||
|
||||
engine = d3.layout.tree().setNodeSizes(true);
|
||||
|
||||
engine.spacing(function(a, b) {
|
||||
return a.parent == b.parent ?
|
||||
0 : engine.rootXSize();
|
||||
})
|
||||
|
||||
engine.nodeSize(function(d) {
|
||||
return [document.getElementById(d.id).getBBox()["height"] + 70, document.getElementById(d.id).getBBox()["width"] + 30];
|
||||
});
|
||||
|
||||
var nodes = d3.layout.hierarchy()(tree),
|
||||
|
||||
svg = d3.select("#body-routes").append('svg'),
|
||||
svg_g = svg.append("g"),
|
||||
svg_p = svg.append("g"),
|
||||
last_id = 0,
|
||||
|
||||
node = svg_g.selectAll(".node")
|
||||
.data(nodes, function(d) {
|
||||
return d.id || (d.id = ++last_id);
|
||||
})
|
||||
.enter().append("g")
|
||||
.attr("class", "node");
|
||||
|
||||
svg
|
||||
.attr('id', 'main')
|
||||
|
||||
svg_g
|
||||
.attr("transform", "translate(20,0)")
|
||||
.attr('id', 'main-group')
|
||||
|
||||
svg_p
|
||||
.attr("transform", "translate(20,0)")
|
||||
.attr('id', 'paths')
|
||||
|
||||
var infos_group = node.append("g")
|
||||
.attr({
|
||||
"id": function(d) {
|
||||
return d.id;
|
||||
},
|
||||
dx: 0,
|
||||
dy: 0,
|
||||
})
|
||||
|
||||
//Node icon
|
||||
infos_group.append("text")
|
||||
.attr('font-family', 'Ionicons')
|
||||
.attr("y", 5)
|
||||
.attr("x", 0)
|
||||
.attr('class', function(d) {
|
||||
return d.children || d._children
|
||||
? "icon has-children"
|
||||
: "icon";
|
||||
})
|
||||
.attr('font-size', function(d) {
|
||||
return '15px'
|
||||
}).text(function(d) {
|
||||
return '\uf183'
|
||||
});
|
||||
|
||||
//node infos
|
||||
infos_group.append("svg:text")
|
||||
.attr("x", function(d) {
|
||||
return 0;
|
||||
})
|
||||
.attr("y", function(d) {
|
||||
return 10;
|
||||
})
|
||||
.attr("dy", ".35em")
|
||||
.attr('class', 'text')
|
||||
.attr("text-anchor", function(d) {
|
||||
return "start";
|
||||
}).html(function(d) {
|
||||
// if kind === module name + module
|
||||
// if kind === component component + path
|
||||
var _name = '';
|
||||
if (d.kind === 'module') {
|
||||
if (d.module) {
|
||||
_name += '<tspan x="0" dy="1.4em"><a href="./modules/' + d.module + '.html">' + d.module + '</a></tspan>';
|
||||
if (d.name) {
|
||||
_name += '<tspan x="0" dy="1.4em">' + d.name + '</tspan>';
|
||||
}
|
||||
} else {
|
||||
_name += '<tspan x="0" dy="1.4em">' + htmlEntities(d.name) + '</tspan>';
|
||||
}
|
||||
} else if (d.kind === 'component') {
|
||||
_name += '<tspan x="0" dy="1.4em">' + d.path + '</tspan>'
|
||||
_name += '<tspan x="0" dy="1.4em"><a href="./components/' + d.component + '.html">' + d.component + '</a></tspan>'
|
||||
if (d.outlet) {
|
||||
_name += '<tspan x="0" dy="1.4em"><outlet> : ' + d.outlet + '</tspan>'
|
||||
}
|
||||
} else {
|
||||
_name += '<tspan x="0" dy="1.4em">/' + d.path + '</tspan>'
|
||||
if (d.component) {
|
||||
_name += '<tspan x="0" dy="1.4em"><a href="./components/' + d.component + '.html">' + d.component + '</a></tspan>'
|
||||
}
|
||||
if (d.loadChildren) {
|
||||
var moduleName = foundLazyModuleWithPath(d.loadChildren);
|
||||
_name += '<tspan x="0" dy="1.4em"><a href="./modules/' + moduleName + '.html">' + moduleName + '</a></tspan>'
|
||||
}
|
||||
if (d.canActivate) {
|
||||
_name += '<tspan x="0" dy="1.4em">✓ canActivate</tspan>'
|
||||
}
|
||||
if (d.canDeactivate) {
|
||||
_name += '<tspan x="0" dy="1.4em">× canDeactivate</tspan>'
|
||||
}
|
||||
if (d.canActivateChild) {
|
||||
_name += '<tspan x="0" dy="1.4em">✓ canActivateChild</tspan>'
|
||||
}
|
||||
if (d.canLoad) {
|
||||
_name += '<tspan x="0" dy="1.4em">→ canLoad</tspan>'
|
||||
}
|
||||
if (d.redirectTo) {
|
||||
_name += '<tspan x="0" dy="1.4em">→ ' + d.redirectTo + '</tspan>'
|
||||
}
|
||||
if (d.pathMatch) {
|
||||
_name += '<tspan x="0" dy="1.4em">> ' + d.pathMatch + '</tspan>'
|
||||
}
|
||||
if (d.outlet) {
|
||||
_name += '<tspan x="0" dy="1.4em"><outlet> : ' + d.outlet + '</tspan>'
|
||||
}
|
||||
}
|
||||
return _name;
|
||||
})
|
||||
.call(getBB);
|
||||
|
||||
//
|
||||
// Node lazy loaded ?
|
||||
//
|
||||
infos_group.append('svg:text')
|
||||
.attr("y", function(d) {
|
||||
return 45;
|
||||
})
|
||||
.attr("x", function(d) {
|
||||
return -18;
|
||||
})
|
||||
.attr('font-family', 'Ionicons')
|
||||
.attr('class', function(d) {
|
||||
return "icon";
|
||||
})
|
||||
.attr('font-size', function(d) {
|
||||
return '15px'
|
||||
}).text(function(d) {
|
||||
var _text = '';
|
||||
if (d.loadChildren) {
|
||||
_text = '\uf4c1';
|
||||
}
|
||||
if (d.guarded) {
|
||||
_text = '\uf1b0';
|
||||
}
|
||||
return _text;
|
||||
});
|
||||
|
||||
//Node text background
|
||||
infos_group.insert("rect","text")
|
||||
.attr("width", function(d){
|
||||
return d.bbox.width;
|
||||
})
|
||||
.attr("height", function(d){
|
||||
return d.bbox.height;
|
||||
})
|
||||
.attr("y", function(d) {
|
||||
return 15;
|
||||
})
|
||||
.style("fill", "white")
|
||||
.style("fill-opacity", 0.75);
|
||||
|
||||
nodes = engine.nodes(tree);
|
||||
|
||||
function node_extents(n) {
|
||||
return [n.x - n.x_size / 2, n.y,
|
||||
n.x + n.x_size / 2, n.y + n.y_size
|
||||
];
|
||||
}
|
||||
var root_extents = node_extents(nodes[0]);
|
||||
var xmin = root_extents[0],
|
||||
ymin = root_extents[1],
|
||||
xmax = root_extents[2],
|
||||
ymax = root_extents[3],
|
||||
area_sum = (xmax - xmin) * (ymax - ymin),
|
||||
x_size_min = nodes[0].x_size,
|
||||
y_size_min = nodes[0].y_size;
|
||||
|
||||
nodes.slice(1).forEach(function(n) {
|
||||
var ne = node_extents(n);
|
||||
xmin = Math.min(xmin, ne[0]);
|
||||
ymin = Math.min(ymin, ne[1]);
|
||||
xmax = Math.max(xmax, ne[2]);
|
||||
ymax = Math.max(ymax, ne[3]);
|
||||
area_sum += (ne[2] - ne[0]) * (ne[3] - ne[1]);
|
||||
x_size_min = Math.min(x_size_min, n.x_size);
|
||||
y_size_min = Math.min(y_size_min, n.y_size);
|
||||
});
|
||||
|
||||
var area_ave = area_sum / nodes.length;
|
||||
var scale = 80 / Math.sqrt(area_ave);
|
||||
|
||||
function svg_x(node_y) {
|
||||
return (node_y - ymin);
|
||||
}
|
||||
|
||||
function svg_y(node_x) {
|
||||
return (node_x - xmin) * scale;
|
||||
}
|
||||
|
||||
|
||||
var nodebox_right_margin = Math.min(x_size_min * scale, 10);
|
||||
var nodebox_vertical_margin = Math.min(y_size_min * scale, 3);
|
||||
|
||||
node.attr("transform", function(d) {
|
||||
return "translate(" + svg_x(d.y) + "," + svg_y(d.x) + ")";
|
||||
})
|
||||
|
||||
var diagonal = d3.svg.diagonal()
|
||||
.projection(function(d) {
|
||||
return [svg_x(d.y), svg_y(d.x)];
|
||||
});
|
||||
|
||||
var links = engine.links(nodes);
|
||||
var links = svg_p.selectAll(".link")
|
||||
.data(links)
|
||||
.enter().append("path")
|
||||
.attr("class", "link")
|
||||
.attr("d", diagonal);
|
||||
|
||||
var _svg = document.getElementById('main'),
|
||||
main_g = _svg.childNodes[0]
|
||||
|
||||
_svg.removeChild(main_g);
|
||||
_svg.appendChild(main_g);
|
||||
|
||||
svg.attr({
|
||||
width: document.getElementById('main-group').getBBox()['width'] + 30,
|
||||
height: document.getElementById('main-group').getBBox()['height'] + 50,
|
||||
});
|
||||
});
|
1
documentation/frontend/js/routes/routes_index.js
Normal file
1
documentation/frontend/js/routes/routes_index.js
Normal file
@@ -0,0 +1 @@
|
||||
var ROUTES_INDEX = {"name":"<root>","kind":"module","className":"AppModule","children":[{"name":"routes","filename":"src/app/app-routing.module.ts","module":"AppRoutingModule","children":[{"path":"login","component":"LoginComponent"},{"path":"","component":"DashboardComponent"},{"path":"register","component":"RegisterComponent"},{"path":"profile","component":"ProfileComponent"},{"path":"settings","component":"BotSettingsComponent"}],"kind":"module"}]}
|
6
documentation/frontend/js/search/lunr.min.js
vendored
Normal file
6
documentation/frontend/js/search/lunr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
43
documentation/frontend/js/search/search-engine.js
Normal file
43
documentation/frontend/js/search/search-engine.js
Normal file
@@ -0,0 +1,43 @@
|
||||
(function(compodoc) {
|
||||
var engine = null;
|
||||
var initialized = false;
|
||||
|
||||
function setEngine(Engine) {
|
||||
initialized = false;
|
||||
engine = new Engine();
|
||||
|
||||
init();
|
||||
}
|
||||
|
||||
function init() {
|
||||
if (!engine) throw new Error('No engine set for research. Set an engine using compodoc.search.setEngine(Engine).');
|
||||
|
||||
return engine.init()
|
||||
.then(function() {
|
||||
initialized = true;
|
||||
compodoc.dispatchEvent({
|
||||
type: compodoc.EVENTS.SEARCH_READY
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function query(q, offset, length) {
|
||||
if (!initialized) throw new Error('Search has not been initialized');
|
||||
return engine.search(q, offset, length);
|
||||
}
|
||||
|
||||
function getEngine() {
|
||||
return engine? engine.name : null;
|
||||
}
|
||||
|
||||
function isInitialized() {
|
||||
return initialized;
|
||||
}
|
||||
|
||||
compodoc.search = {
|
||||
setEngine: setEngine,
|
||||
getEngine: getEngine,
|
||||
query: query,
|
||||
isInitialized: isInitialized
|
||||
};
|
||||
})(compodoc);
|
69
documentation/frontend/js/search/search-lunr.js
Normal file
69
documentation/frontend/js/search/search-lunr.js
Normal file
@@ -0,0 +1,69 @@
|
||||
(function(compodoc) {
|
||||
|
||||
function LunrSearchEngine() {
|
||||
this.index = null;
|
||||
this.store = {};
|
||||
this.name = 'LunrSearchEngine';
|
||||
}
|
||||
|
||||
LunrSearchEngine.prototype.init = function() {
|
||||
var that = this,
|
||||
d = new promise.Promise();
|
||||
|
||||
that.index = lunr.Index.load(COMPODOC_SEARCH_INDEX.index);
|
||||
that.store = COMPODOC_SEARCH_INDEX.store;
|
||||
d.done();
|
||||
|
||||
return d;
|
||||
};
|
||||
|
||||
LunrSearchEngine.prototype.search = function(q, offset, length) {
|
||||
var that = this,
|
||||
results = [],
|
||||
d = new promise.Promise();
|
||||
|
||||
if (this.index) {
|
||||
results = $.map(this.index.search(q), function(result) {
|
||||
var doc = that.store[result.ref];
|
||||
|
||||
return {
|
||||
title: doc.title,
|
||||
url: doc.url,
|
||||
body: doc.summary || doc.body
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
d.done({
|
||||
query: q,
|
||||
results: results.slice(0, length),
|
||||
count: results.length
|
||||
});
|
||||
|
||||
return d;
|
||||
};
|
||||
|
||||
compodoc.addEventListener(compodoc.EVENTS.READY, function(event) {
|
||||
console.log('compodoc ready');
|
||||
|
||||
var engine = new LunrSearchEngine(),
|
||||
initialized = false;
|
||||
|
||||
engine.init()
|
||||
.then(function() {
|
||||
initialized = true;
|
||||
compodoc.dispatchEvent({
|
||||
type: compodoc.EVENTS.SEARCH_READY
|
||||
});
|
||||
});
|
||||
|
||||
function query(q, offset, length) {
|
||||
if (!initialized) throw new Error('Search has not been initialized');
|
||||
return engine.search(q, offset, length);
|
||||
}
|
||||
|
||||
compodoc.search = {
|
||||
query: query
|
||||
};
|
||||
});
|
||||
})(compodoc);
|
223
documentation/frontend/js/search/search.js
Normal file
223
documentation/frontend/js/search/search.js
Normal file
@@ -0,0 +1,223 @@
|
||||
(function(compodoc) {
|
||||
var MAX_RESULTS = 15,
|
||||
MAX_DESCRIPTION_SIZE = 500,
|
||||
|
||||
usePushState = (typeof history.pushState !== 'undefined'),
|
||||
|
||||
// DOM Elements
|
||||
$body = $('body'),
|
||||
$searchResults,
|
||||
$searchInput,
|
||||
$searchList,
|
||||
$searchTitle,
|
||||
$searchResultsCount,
|
||||
$searchQuery,
|
||||
$mainContainer,
|
||||
$xsMenu;
|
||||
|
||||
// Throttle search
|
||||
function throttle(fn, wait) {
|
||||
var timeout;
|
||||
|
||||
return function() {
|
||||
var ctx = this, args = arguments;
|
||||
if (!timeout) {
|
||||
timeout = setTimeout(function() {
|
||||
timeout = null;
|
||||
fn.apply(ctx, args);
|
||||
}, wait);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function displayResults(res) {
|
||||
var noResults = res.count == 0;
|
||||
$searchResults.toggleClass('no-results', noResults);
|
||||
|
||||
// Clear old results
|
||||
$searchList.empty();
|
||||
|
||||
// Display title for research
|
||||
$searchResultsCount.text(res.count);
|
||||
$searchQuery.text(res.query);
|
||||
|
||||
// Create an <li> element for each result
|
||||
res.results.forEach(function(res) {
|
||||
var $li = $('<li>', {
|
||||
'class': 'search-results-item'
|
||||
});
|
||||
|
||||
var $title = $('<h3>');
|
||||
|
||||
var $link = $('<a>', {
|
||||
'href': res.url,
|
||||
'text': res.title
|
||||
});
|
||||
|
||||
var content = res.body.trim();
|
||||
if (content.length > MAX_DESCRIPTION_SIZE) {
|
||||
content = content.slice(0, MAX_DESCRIPTION_SIZE).trim()+'...';
|
||||
}
|
||||
var $content = $('<p>').html(content);
|
||||
|
||||
$link.appendTo($title);
|
||||
$title.appendTo($li);
|
||||
$content.appendTo($li);
|
||||
$li.appendTo($searchList);
|
||||
});
|
||||
}
|
||||
|
||||
function launchSearch(q) {
|
||||
$body.addClass('with-search');
|
||||
|
||||
if ($xsMenu.css('display') === 'block') {
|
||||
$mainContainer.css('height', 'calc(100% - 100px)');
|
||||
$mainContainer.css('margin-top', '100px');
|
||||
}
|
||||
|
||||
throttle(compodoc.search.query(q, 0, MAX_RESULTS)
|
||||
.then(function(results) {
|
||||
displayResults(results);
|
||||
}), 1000);
|
||||
}
|
||||
|
||||
function closeSearch() {
|
||||
$body.removeClass('with-search');
|
||||
if ($xsMenu.css('display') === 'block') {
|
||||
$mainContainer.css('height', 'calc(100% - 50px)');
|
||||
$mainContainer.css('margin-top', '50px');
|
||||
}
|
||||
}
|
||||
|
||||
function bindMenuButton() {
|
||||
document.getElementById('btn-menu').addEventListener('click', function() {
|
||||
if ($xsMenu.css('display') === 'none') {
|
||||
$body.removeClass('with-search');
|
||||
$mainContainer.css('height', 'calc(100% - 50px)');
|
||||
$mainContainer.css('margin-top', '50px');
|
||||
}
|
||||
$.each($searchInputs, function(index, item){
|
||||
var item = $(item);
|
||||
item.val('');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function bindSearch() {
|
||||
// Bind DOM
|
||||
$searchInputs = $('#book-search-input input');
|
||||
|
||||
$searchResults = $('.search-results');
|
||||
$searchList = $searchResults.find('.search-results-list');
|
||||
$searchTitle = $searchResults.find('.search-results-title');
|
||||
$searchResultsCount = $searchTitle.find('.search-results-count');
|
||||
$searchQuery = $searchTitle.find('.search-query');
|
||||
$mainContainer = $('.container-fluid');
|
||||
$xsMenu = $('.xs-menu');
|
||||
|
||||
// Launch query based on input content
|
||||
function handleUpdate(item) {
|
||||
var q = item.val();
|
||||
|
||||
if (q.length == 0) {
|
||||
closeSearch();
|
||||
} else {
|
||||
launchSearch(q);
|
||||
}
|
||||
}
|
||||
|
||||
// Detect true content change in search input
|
||||
var propertyChangeUnbound = false;
|
||||
|
||||
$.each($searchInputs, function(index, item){
|
||||
var item = $(item);
|
||||
// HTML5 (IE9 & others)
|
||||
item.on('input', function(e) {
|
||||
// Unbind propertychange event for IE9+
|
||||
if (!propertyChangeUnbound) {
|
||||
$(this).unbind('propertychange');
|
||||
propertyChangeUnbound = true;
|
||||
}
|
||||
|
||||
handleUpdate($(this));
|
||||
});
|
||||
// Workaround for IE < 9
|
||||
item.on('propertychange', function(e) {
|
||||
if (e.originalEvent.propertyName == 'value') {
|
||||
handleUpdate($(this));
|
||||
}
|
||||
});
|
||||
// Push to history on blur
|
||||
item.on('blur', function(e) {
|
||||
// Update history state
|
||||
if (usePushState) {
|
||||
var uri = updateQueryString('q', $(this).val());
|
||||
history.pushState({ path: uri }, null, uri);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function launchSearchFromQueryString() {
|
||||
var q = getParameterByName('q');
|
||||
if (q && q.length > 0) {
|
||||
// Update search inputs
|
||||
$.each($searchInputs, function(index, item){
|
||||
var item = $(item);
|
||||
item.val(q)
|
||||
});
|
||||
// Launch search
|
||||
launchSearch(q);
|
||||
}
|
||||
}
|
||||
|
||||
compodoc.addEventListener(compodoc.EVENTS.SEARCH_READY, function(event) {
|
||||
bindSearch();
|
||||
|
||||
bindMenuButton();
|
||||
|
||||
launchSearchFromQueryString();
|
||||
});
|
||||
|
||||
function getParameterByName(name) {
|
||||
var url = window.location.href;
|
||||
name = name.replace(/[\[\]]/g, '\\$&');
|
||||
var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)', 'i'),
|
||||
results = regex.exec(url);
|
||||
if (!results) return null;
|
||||
if (!results[2]) return '';
|
||||
return decodeURIComponent(results[2].replace(/\+/g, ' '));
|
||||
}
|
||||
|
||||
function updateQueryString(key, value) {
|
||||
value = encodeURIComponent(value);
|
||||
|
||||
var url = window.location.href;
|
||||
var re = new RegExp('([?&])' + key + '=.*?(&|#|$)(.*)', 'gi'),
|
||||
hash;
|
||||
|
||||
if (re.test(url)) {
|
||||
if (typeof value !== 'undefined' && value !== null)
|
||||
return url.replace(re, '$1' + key + '=' + value + '$2$3');
|
||||
else {
|
||||
hash = url.split('#');
|
||||
url = hash[0].replace(re, '$1$3').replace(/(&|\?)$/, '');
|
||||
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
|
||||
url += '#' + hash[1];
|
||||
return url;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (typeof value !== 'undefined' && value !== null) {
|
||||
var separator = url.indexOf('?') !== -1 ? '&' : '?';
|
||||
hash = url.split('#');
|
||||
url = hash[0] + separator + key + '=' + value;
|
||||
if (typeof hash[1] !== 'undefined' && hash[1] !== null)
|
||||
url += '#' + hash[1];
|
||||
return url;
|
||||
}
|
||||
else
|
||||
return url;
|
||||
}
|
||||
}
|
||||
})(compodoc);
|
4
documentation/frontend/js/search/search_index.js
Normal file
4
documentation/frontend/js/search/search_index.js
Normal file
File diff suppressed because one or more lines are too long
58
documentation/frontend/js/sourceCode.js
Normal file
58
documentation/frontend/js/sourceCode.js
Normal file
@@ -0,0 +1,58 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var $tabSource = document.querySelector('#source-tab'),
|
||||
$tabInfo = document.querySelector('#info-tab'),
|
||||
$tabReadme = document.querySelector('#readme-tab'),
|
||||
$tabTemplate = document.querySelector('#templateData-tab'),
|
||||
$tabTree = document.querySelector('#tree-tab'),
|
||||
$tabExample = document.querySelector('#example-tab'),
|
||||
$prismPre = document.querySelector('pre.compodoc-sourcecode');
|
||||
if ($tabSource && $prismPre) {
|
||||
$prismCode = $prismPre.querySelector('code'),
|
||||
$content = document.querySelector('.content'),
|
||||
prismLinks = document.querySelectorAll('.link-to-prism')
|
||||
|
||||
for (var i = 0; i < prismLinks.length; i++) {
|
||||
prismLinks[i].addEventListener('click', linkToPrism, false);
|
||||
}
|
||||
|
||||
function linkToPrism(event) {
|
||||
var targetLine = event.target.getAttribute('data-line');
|
||||
event.preventDefault();
|
||||
|
||||
$prismPre.setAttribute('data-line', targetLine);
|
||||
Prism.highlightElement($prismCode, function() {});
|
||||
|
||||
$tabSource.click();
|
||||
|
||||
setTimeout(function() {
|
||||
var $prismHighlightLine = document.querySelector('.line-highlight'),
|
||||
top = parseInt(getComputedStyle($prismHighlightLine)['top']);
|
||||
$content.scrollTop = top;
|
||||
}, 500);
|
||||
};
|
||||
|
||||
window.onhashchange = function(event) {
|
||||
switch (window.location.hash) {
|
||||
case '':
|
||||
case '#info':
|
||||
$tabInfo.click();
|
||||
break;
|
||||
case '#readme':
|
||||
$tabReadme.click();
|
||||
break;
|
||||
case '#source':
|
||||
$tabSource.click();
|
||||
break;
|
||||
case '#template':
|
||||
$tabTemplate.click();
|
||||
break;
|
||||
case '#dom-tree':
|
||||
$tabTree.click();
|
||||
break;
|
||||
case '#example':
|
||||
$tabExample.click();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
23
documentation/frontend/js/svg-pan-zoom.controls.js
Normal file
23
documentation/frontend/js/svg-pan-zoom.controls.js
Normal file
@@ -0,0 +1,23 @@
|
||||
document.getElementById('demo-svg').addEventListener('load', function() {
|
||||
panZoom = svgPanZoom('#demo-svg', {
|
||||
zoomEnabled: true,
|
||||
minZoom: 1,
|
||||
maxZoom: 5
|
||||
});
|
||||
|
||||
document.getElementById('zoom-in').addEventListener('click', function(ev) {
|
||||
ev.preventDefault()
|
||||
panZoom.zoomIn()
|
||||
});
|
||||
|
||||
document.getElementById('zoom-out').addEventListener('click', function(ev) {
|
||||
ev.preventDefault()
|
||||
panZoom.zoomOut()
|
||||
});
|
||||
|
||||
document.getElementById('reset').addEventListener('click', function(ev) {
|
||||
ev.preventDefault()
|
||||
panZoom.resetZoom();
|
||||
panZoom.resetPan();
|
||||
});
|
||||
});
|
21
documentation/frontend/js/tabs.js
Normal file
21
documentation/frontend/js/tabs.js
Normal file
@@ -0,0 +1,21 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var tabs = document.getElementsByClassName('nav-tabs'),
|
||||
updateAddress = function(e) {
|
||||
if(history.pushState && e.target.dataset.link) {
|
||||
history.pushState(null, null, '#' + e.target.dataset.link);
|
||||
}
|
||||
};
|
||||
if (tabs.length > 0) {
|
||||
tabs = tabs[0].querySelectorAll('li');
|
||||
for (var i = 0; i < tabs.length; i++) {
|
||||
tabs[i].addEventListener('click', updateAddress);
|
||||
var linkTag = tabs[i].querySelector('a');
|
||||
if (location.hash !== '') {
|
||||
var currentHash = location.hash.substr(1);
|
||||
if (currentHash === linkTag.dataset.link) {
|
||||
linkTag.click();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
147
documentation/frontend/js/tree.js
Normal file
147
documentation/frontend/js/tree.js
Normal file
@@ -0,0 +1,147 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var tabs = document.getElementsByClassName('nav-tabs')[0],
|
||||
tabsCollection = tabs.getElementsByTagName('A'),
|
||||
treeTab;
|
||||
var len = tabsCollection.length;
|
||||
for(var i = 0; i < len; i++) {
|
||||
if (tabsCollection[i].getAttribute('id') === 'tree-tab') {
|
||||
treeTab = tabsCollection[i];
|
||||
}
|
||||
}
|
||||
|
||||
// short-circuit if no tree tab
|
||||
if (!treeTab) return;
|
||||
|
||||
var handler = new Tautologistics.NodeHtmlParser.HtmlBuilder(function(error, dom) {
|
||||
if (error) {
|
||||
console.log('handler ko');
|
||||
}
|
||||
}),
|
||||
parser = new Tautologistics.NodeHtmlParser.Parser(handler),
|
||||
currentLocation = window.location;
|
||||
parser.parseComplete(COMPONENT_TEMPLATE);
|
||||
|
||||
var newNodes = [],
|
||||
newEdges = [],
|
||||
parsedHtml = handler.dom[0],
|
||||
nodeCount = 0,
|
||||
nodeLevel = 0;
|
||||
|
||||
newNodes.push({
|
||||
_id: 0,
|
||||
label: parsedHtml.name,
|
||||
type: parsedHtml.type
|
||||
})
|
||||
//Add id for nodes
|
||||
var traverseIds = function(o) {
|
||||
for (i in o) {
|
||||
if (!!o[i] && typeof(o[i]) == "object") {
|
||||
if (!o[i].length && o[i].type === 'tag') {
|
||||
nodeCount += 1;
|
||||
o[i]._id = nodeCount;
|
||||
}
|
||||
traverseIds(o[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
parsedHtml._id = 0;
|
||||
traverseIds(parsedHtml);
|
||||
|
||||
|
||||
var DeepIterator = deepIterator.default,
|
||||
it = DeepIterator(parsedHtml);
|
||||
for (let {
|
||||
value,
|
||||
parent,
|
||||
parentNode,
|
||||
key,
|
||||
type
|
||||
} of it) {
|
||||
if (type === 'NonIterableObject' && typeof key !== 'undefined' && value.type === 'tag') {
|
||||
var newNode = {
|
||||
id: value._id,
|
||||
label: value.name,
|
||||
type: value.type
|
||||
};
|
||||
for(var i = 0; i < COMPONENTS.length; i++) {
|
||||
if (COMPONENTS[i].selector === value.name) {
|
||||
newNode.font = {
|
||||
multi: 'html'
|
||||
};
|
||||
newNode.label = '<b>' + newNode.label + '</b>';
|
||||
newNode.color = '#FB7E81';
|
||||
newNode.name = COMPONENTS[i].name;
|
||||
}
|
||||
}
|
||||
for(var i = 0; i < DIRECTIVES.length; i++) {
|
||||
if (value.attributes) {
|
||||
for(attr in value.attributes) {
|
||||
if (DIRECTIVES[i].selector.indexOf(attr) !== -1) {
|
||||
newNode.font = {
|
||||
multi: 'html'
|
||||
};
|
||||
newNode.label = '<b>' + newNode.label + '</b>';
|
||||
newNode.color = '#FF9800';
|
||||
newNode.name = DIRECTIVES[i].name;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
newNodes.push(newNode);
|
||||
newEdges.push({
|
||||
from: parentNode._parent._id,
|
||||
to: value._id,
|
||||
arrows: 'to'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
newNodes.shift();
|
||||
|
||||
var container = document.getElementById('tree-container'),
|
||||
data = {
|
||||
nodes: newNodes,
|
||||
edges: newEdges
|
||||
},
|
||||
options = {
|
||||
layout: {
|
||||
hierarchical: {
|
||||
sortMethod: 'directed',
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
nodes: {
|
||||
shape: 'ellipse',
|
||||
fixed: true
|
||||
}
|
||||
},
|
||||
|
||||
handleClickNode = function(params) {
|
||||
var clickeNodeId;
|
||||
if (params.nodes.length > 0) {
|
||||
clickeNodeId = params.nodes[0];
|
||||
for(var i = 0; i < newNodes.length; i++) {
|
||||
if (newNodes[i].id === clickeNodeId) {
|
||||
for(var j = 0; j < COMPONENTS.length; j++) {
|
||||
if (COMPONENTS[j].name === newNodes[i].name) {
|
||||
document.location.href = currentLocation.origin + currentLocation.pathname.replace(ACTUAL_COMPONENT.name, newNodes[i].name);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
loadTree = function () {
|
||||
setTimeout(function() {
|
||||
container.style.height = document.getElementsByClassName('content')[0].offsetHeight - 140 + 'px';
|
||||
var network = new vis.Network(container, data, options);
|
||||
network.on('click', handleClickNode);
|
||||
}, 200); // Fade is 0.150
|
||||
};
|
||||
|
||||
loadTree();
|
||||
treeTab.addEventListener('click', function() {
|
||||
loadTree();
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user