/** * 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;