/**
|
|
* Created by Alex on 3/26/2015.
|
|
*/
|
|
|
|
|
|
var util = require('../../util');
|
|
|
|
|
|
class ConfigurationSystem {
|
|
constructor(network) {
|
|
this.network = network;
|
|
|
|
this.possibleOptions = {
|
|
nodesHandler: {
|
|
borderWidth: 1,
|
|
borderWidthSelected: 2,
|
|
color: {
|
|
border: 'color',
|
|
background: 'color',
|
|
highlight: {
|
|
border: 'color',
|
|
background: '#D2E5FF'
|
|
},
|
|
hover: {
|
|
border: 'color',
|
|
background: 'color'
|
|
}
|
|
},
|
|
fixed: {
|
|
x:false,
|
|
y:false
|
|
},
|
|
font: {
|
|
color: 'color',
|
|
size: [14,0,100,1], // px
|
|
face: ['arial','verdana','tahoma'],
|
|
background: 'color',
|
|
stroke: [0,0,50,1], // px
|
|
strokeColor: 'color'
|
|
},
|
|
group: 'string',
|
|
hidden: false,
|
|
icon: {
|
|
face: 'string', //'FontAwesome',
|
|
code: 'string', //'\uf007',
|
|
size: [50,0,200,1], //50,
|
|
color:'color' //'#aa00ff'
|
|
},
|
|
image: 'string', // --> URL
|
|
physics: true,
|
|
scaling: {
|
|
min: [10,0,200,1],
|
|
max: [30,0,200,1],
|
|
label: {
|
|
enabled: true,
|
|
min: [14,0,200,1],
|
|
max: [30,0,200,1],
|
|
maxVisible: [30,0,200,1],
|
|
drawThreshold: [3,0,20,1]
|
|
}
|
|
},
|
|
shape: ['ellipse','box','circle','circularImage','database','diamond','dot','icon','image','square','star','text','triangle','triangleDown'],
|
|
size: [25,0,200,1]
|
|
},
|
|
edgesHandler: {
|
|
arrows: {
|
|
to: {enabled: false, scaleFactor:[1,0,3,0.05]}, // boolean / {arrowScaleFactor:1} / {enabled: false, arrowScaleFactor:1}
|
|
middle: {enabled: false, scaleFactor:[1,0,3,0.05]},
|
|
from: {enabled: false, scaleFactor:[1,0,3,0.05]}
|
|
},
|
|
color: {
|
|
color:'color',
|
|
highlight:'color',
|
|
hover: 'color',
|
|
inherit: {
|
|
enabled: true,
|
|
source: ['from','to'], // from / to
|
|
useGradients: false
|
|
},
|
|
opacity:[1,0,1,0.05]
|
|
},
|
|
dashes:{
|
|
enabled: false,
|
|
length: [5,0,50,1],
|
|
gap: [5,0,50,1],
|
|
altLength: [5,0,50,1]
|
|
},
|
|
font: {
|
|
color: 'color',
|
|
size: [14,0,100,1], // px
|
|
face: ['arial','verdana','tahoma'],
|
|
background: 'color',
|
|
stroke: [0,0,50,1], // px
|
|
strokeColor: 'color',
|
|
align:['horizontal','top','middle','bottom']
|
|
},
|
|
hidden: false,
|
|
hoverWidth: [1.5,0,10,0.1],
|
|
physics: true,
|
|
scaling: {
|
|
min: [10,0,200,1],
|
|
max: [30,0,200,1],
|
|
label: {
|
|
enabled: true,
|
|
min: [14,0,200,1],
|
|
max: [30,0,200,1],
|
|
maxVisible: [30,0,200,1],
|
|
drawThreshold: [3,0,20,1]
|
|
}
|
|
},
|
|
selfReferenceSize:[20,0,200,1],
|
|
smooth: {
|
|
enabled: true,
|
|
dynamic: true,
|
|
type: ["continuous",'discrete','diagonalCross','straightCross','horizontal','vertical','curvedCW','curvedCCW'],
|
|
roundness: [0.5,0,1,0.05]
|
|
},
|
|
width: [1,0,30,1],
|
|
widthSelectionMultiplier: [2,0,5,0.1]
|
|
},
|
|
layout:{
|
|
randomSeed: [0,0,500,1],
|
|
hierarchical: {
|
|
enabled:false,
|
|
levelSeparation: [150,20,500,5],
|
|
direction: ["UD",'DU','LR','RL'], // UD, DU, LR, RL
|
|
sortMethod: ["hubsize",'directed'] // hubsize, directed
|
|
}
|
|
},
|
|
interaction: {
|
|
dragNodes:true,
|
|
dragView: true,
|
|
zoomView: true,
|
|
hoverEnabled: false,
|
|
showNavigationIcons: false,
|
|
tooltip: {
|
|
delay: [300,0,1000,25],
|
|
fontColor: 'color',
|
|
fontSize: [14,0,40,1], // px
|
|
fontFace: ['arial','verdana','tahoma'],
|
|
color: {
|
|
border: 'color',
|
|
background: 'color'
|
|
}
|
|
},
|
|
keyboard: {
|
|
enabled: false,
|
|
speed: {x: [10,0,40,1], y: [10,0,40,1], zoom: [0.02,0,0.1,0.005]},
|
|
bindToWindow: true
|
|
}
|
|
},
|
|
manipulation:{
|
|
enabled: false,
|
|
initiallyVisible: false,
|
|
locale: ['en','nl'],
|
|
functionality:{
|
|
addNode: true,
|
|
addEdge: true,
|
|
editNode: true,
|
|
editEdge: true,
|
|
deleteNode: true,
|
|
deleteEdge: true
|
|
}
|
|
},
|
|
physics: {
|
|
barnesHut: {
|
|
theta: [0.5,0.1,1,0.05],
|
|
gravitationalConstant: [-2000,-300000,0,50],
|
|
centralGravity: [0.3,0,10,0.05],
|
|
springLength: [95,0,500,5],
|
|
springConstant: [0.04,0,5,0.005],
|
|
damping: [0.09,0,1,0.01]
|
|
},
|
|
repulsion: {
|
|
centralGravity: [0.2,0,10,0.05],
|
|
springLength: [200,0,500,5],
|
|
springConstant: [0.05,0,5,0.005],
|
|
nodeDistance: [100,0,500,5],
|
|
damping: [0.09,0,1,0.01]
|
|
},
|
|
hierarchicalRepulsion: {
|
|
centralGravity: 0.2,
|
|
springLength: [100,0,500,5],
|
|
springConstant: [0.01,0,5,0.005],
|
|
nodeDistance: [120,0,500,5],
|
|
damping: [0.09,0,1,0.01]
|
|
},
|
|
maxVelocity: [50,0,150,1],
|
|
minVelocity: [0.1,0.01,0.5,0.01],
|
|
solver: ['BarnesHut','Repulsion','HierarchicalRepulsion'],
|
|
timestep: [0.5,0,1,0.05]
|
|
},
|
|
selection:{
|
|
select: true,
|
|
selectConnectedEdges: true
|
|
},
|
|
renderer: {
|
|
hideEdgesOnDrag: false,
|
|
hideNodesOnDrag: false
|
|
}
|
|
}
|
|
|
|
this.actualOptions = {};
|
|
|
|
this.domElements = [];
|
|
}
|
|
|
|
setOptions(options) {
|
|
if (options !== undefined) {
|
|
util.deepExtend(this.actualOptions, options);
|
|
|
|
if (options.configure !== undefined && options.configure !== false) {
|
|
let config;
|
|
if (options.configure instanceof Array) {
|
|
config = options.configure.join();
|
|
}
|
|
else if (typeof options.configure === 'string') {
|
|
config = options.configure;
|
|
}
|
|
else if (typeof options.configure === 'boolean') {
|
|
config = options.configure;
|
|
}
|
|
else {
|
|
this._clean();
|
|
throw new Error("the option for configure has to be either a string, boolean or an array. Supplied:" + options.configure);
|
|
return;
|
|
}
|
|
this._create(config);
|
|
}
|
|
else {
|
|
this._clean();
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {Boolean | String} config
|
|
* @private
|
|
*/
|
|
_create(config) {
|
|
this._clean();
|
|
|
|
for (let option in this.possibleOptions) {
|
|
if (this.possibleOptions.hasOwnProperty(option)) {
|
|
if (config === true || config.indexOf(option) !== -1) {
|
|
let optionObj = this.possibleOptions[option];
|
|
// a header for the category
|
|
this._makeHeader(option);
|
|
|
|
// get the suboptions
|
|
for (let subOption in optionObj) {
|
|
if (optionObj.hasOwnProperty(subOption)) {
|
|
this._makeLabel(subOption);
|
|
let subOptionObj = optionObj[subOption];
|
|
if (subOptionObj instanceof Array) {
|
|
this._handleArray(option, subOption, subOptionObj);
|
|
}
|
|
else if (subOptionObj instanceof Object) {
|
|
this._handleObject(option, subOption, subOptionObj);
|
|
}
|
|
else if (typeof subOptionObj === 'string') {
|
|
this._handleString(option, subOption, subOptionObj);
|
|
}
|
|
else if (typeof subOptionObj === 'boolean') {
|
|
this._handleBoolean(option, subOption, subOptionObj);
|
|
}
|
|
else {
|
|
console.error("dont know how to handle", subOptionObj);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
_clean() {
|
|
|
|
}
|
|
|
|
_makeHeader(name) {
|
|
console.log("header",name);
|
|
//let div = document.createElement('div');
|
|
//div.className = 'vis-network-configuration header';
|
|
//div.innerHTML = name;
|
|
//this.domElements.push(div);
|
|
}
|
|
|
|
_makeLabel(name) {
|
|
console.log("label",name);
|
|
//let div = document.createElement('div');
|
|
//div.className = 'vis-network-configuration label';
|
|
//div.innerHTML = name;
|
|
//this.domElements.push(div);
|
|
}
|
|
|
|
_handleObject(category, subcategory, obj) {
|
|
console.log("obj",obj);
|
|
}
|
|
|
|
_handleArray(category, subcategory, arr) {
|
|
console.log("arr",arr);
|
|
}
|
|
|
|
_handleString(category, subcategory, string) {
|
|
console.log("string",string);
|
|
}
|
|
|
|
_handleBoolean(category, subcategory, boolean) {
|
|
console.log("boolean",boolean);
|
|
}
|
|
}
|
|
|
|
|
|
export default ConfigurationSystem;
|