vis.js is a dynamic, browser-based visualization library
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

465 lines
12 KiB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
  1. /**
  2. * This object contains all possible options. It will check if the types are correct, if required if the option is one
  3. * of the allowed values.
  4. *
  5. * __any__ means that the name of the property does not matter.
  6. * __type__ is a required field for all objects and contains the allowed types of all objects
  7. */
  8. let string = 'string';
  9. let boolean = 'boolean';
  10. let number = 'number';
  11. let array = 'array';
  12. let object = 'object'; // should only be in a __type__ property
  13. let dom = 'dom';
  14. let fn = 'function';
  15. let undef = 'undefined';
  16. let any = 'any'
  17. let allOptions = {
  18. configure: {
  19. enabled: {boolean},
  20. filter: {boolean,string,array,fn},
  21. container: {dom},
  22. __type__: {object,boolean,string,array,fn}
  23. },
  24. edges: {
  25. arrows: {
  26. to: {enabled: {boolean}, scaleFactor: {number}, __type__: {object, boolean}},
  27. middle: {enabled: {boolean}, scaleFactor: {number}, __type__: {object, boolean}},
  28. from: {enabled: {boolean}, scaleFactor: {number}, __type__: {object, boolean}},
  29. __type__: {string:['from','to','middle'],object}
  30. },
  31. color: {
  32. color: {string},
  33. highlight: {string},
  34. hover: {string},
  35. inherit: {string:['from','to','both'],boolean},
  36. opacity: {number},
  37. __type__: {object, string}
  38. },
  39. dashes: {boolean,array},
  40. font: {
  41. color: {string},
  42. size: {number}, // px
  43. face: {string},
  44. background: {string},
  45. strokeWidth: {number}, // px
  46. strokeColor: {string},
  47. align: {string:['horizontal','top','middle','bottom']},
  48. __type__: {object,string}
  49. },
  50. hidden: {boolean},
  51. hoverWidth: {fn,number},
  52. label: {string,undef},
  53. length: {number,undef},
  54. physics: {boolean},
  55. scaling: {
  56. min: {number},
  57. max: {number},
  58. label: {
  59. enabled: {boolean},
  60. min: {number},
  61. max: {number},
  62. maxVisible: {number},
  63. drawThreshold: {number},
  64. __type__: {object,boolean}
  65. },
  66. customScalingFunction: {fn},
  67. __type__: {object}
  68. },
  69. selectionWidth: {fn,number},
  70. selfReferenceSize: {number},
  71. shadow: {
  72. enabled: {boolean},
  73. size: {number},
  74. x: {number},
  75. y: {number},
  76. __type__: {object,boolean}
  77. },
  78. smooth: {
  79. enabled: {boolean},
  80. type: {string:['dynamic','continuous','discrete','diagonalCross','straightCross','horizontal','vertical','curvedCW','curvedCCW']},
  81. roundness: {number},
  82. __type__: {object,boolean}
  83. },
  84. title: {string, undef},
  85. width: {number},
  86. value: {number, undef},
  87. __type__: {object}
  88. },
  89. groups: {
  90. useDefaultGroups: {boolean},
  91. __any__: 'get from nodes, will be overwritten below',
  92. __type__: {object}
  93. },
  94. interaction: {
  95. dragNodes: {boolean},
  96. dragView: {boolean},
  97. hideEdgesOnDrag: {boolean},
  98. hideNodesOnDrag: {boolean},
  99. hover: {boolean},
  100. keyboard: {
  101. enabled: {boolean},
  102. speed: {x: {number}, y: {number}, zoom: {number}, __type__: {object}},
  103. bindToWindow: {boolean},
  104. __type__: {object,boolean}
  105. },
  106. multiselect: {boolean},
  107. navigationButtons: {boolean},
  108. selectable: {boolean},
  109. selectConnectedEdges: {boolean},
  110. tooltipDelay: {number},
  111. zoomView: {boolean},
  112. __type__: {object}
  113. },
  114. layout: {
  115. randomSeed: {undef,number},
  116. hierarchical: {
  117. enabled: {boolean},
  118. levelSeparation: {number},
  119. direction: {string:['UD','DU','LR','RL']}, // UD, DU, LR, RL
  120. sortMethod: {string:['hubsize','directed']}, // hubsize, directed
  121. __type__: {object,boolean}
  122. },
  123. __type__: {object}
  124. },
  125. manipulation: {
  126. enabled: {boolean},
  127. initiallyActive: {boolean},
  128. addNode: {boolean,fn},
  129. addEdge: {boolean,fn},
  130. editNode: {fn},
  131. editEdge: {boolean,fn},
  132. deleteNode: {boolean,fn},
  133. deleteEdge: {boolean,fn},
  134. controlNodeStyle: 'get from nodes, will be overwritten below',
  135. __type__: {object,boolean}
  136. },
  137. nodes: {
  138. borderWidth: {number},
  139. borderWidthSelected: {number,undef},
  140. brokenImage: {string,undef},
  141. color: {
  142. border: {string},
  143. background: {string},
  144. highlight: {
  145. border: {string},
  146. background: {string},
  147. __type__: {object,string}
  148. },
  149. hover: {
  150. border: {string},
  151. background: {string},
  152. __type__: {object,string}
  153. },
  154. __type__: {object,string}
  155. },
  156. fixed: {
  157. x: {boolean},
  158. y: {boolean},
  159. __type__: {object,boolean}
  160. },
  161. font: {
  162. color: {string},
  163. size: {number}, // px
  164. face: {string},
  165. background: {string},
  166. stroke: {number}, // px
  167. strokeColor: {string},
  168. __type__: {object,string}
  169. },
  170. group: {string,number,undef},
  171. hidden: {boolean},
  172. icon: {
  173. face: {string},
  174. code: {string}, //'\uf007',
  175. size: {number}, //50,
  176. color: {string},
  177. __type__: {object}
  178. },
  179. id: {string, number},
  180. image: {string,undef}, // --> URL
  181. label: {string,undef},
  182. level: {number,undef},
  183. mass: {number},
  184. physics: {boolean},
  185. scaling: {
  186. min: {number},
  187. max: {number},
  188. label: {
  189. enabled: {boolean},
  190. min: {number},
  191. max: {number},
  192. maxVisible: {number},
  193. drawThreshold: {number},
  194. __type__: {object, boolean}
  195. },
  196. customScalingFunction: {fn},
  197. __type__: {object}
  198. },
  199. shadow: {
  200. enabled: {boolean},
  201. size: {number},
  202. x: {number},
  203. y: {number},
  204. __type__: {object,boolean}
  205. },
  206. shape: {string:['ellipse', 'circle', 'database', 'box', 'text','image', 'circularImage','diamond', 'dot', 'star', 'triangle', 'triangleDown', 'square','icon']},
  207. size: {number},
  208. title: {string,undef},
  209. value: {number,undef},
  210. x: {number},
  211. y: {number},
  212. __type__: {object}
  213. },
  214. physics: {
  215. barnesHut: {
  216. gravitationalConstant: {number},
  217. centralGravity: {number},
  218. springLength: {number},
  219. springConstant: {number},
  220. damping: {number},
  221. __type__: {object}
  222. },
  223. forceAtlas2Based: {
  224. gravitationalConstant: {number},
  225. centralGravity: {number},
  226. springLength: {number},
  227. springConstant: {number},
  228. damping: {number},
  229. __type__: {object}
  230. },
  231. repulsion: {
  232. centralGravity: {number},
  233. springLength: {number},
  234. springConstant: {number},
  235. nodeDistance: {number},
  236. damping: {number},
  237. __type__: {object}
  238. },
  239. hierarchicalRepulsion: {
  240. centralGravity: {number},
  241. springLength: {number},
  242. springConstant: {number},
  243. nodeDistance: {number},
  244. damping: {number},
  245. __type__: {object}
  246. },
  247. maxVelocity: {number},
  248. minVelocity: {number}, // px/s
  249. solver: {string:['barnesHut','repulsion','hierarchicalRepulsion','forceAtlas2Based']},
  250. stabilization: {
  251. enabled: {boolean},
  252. iterations: {number}, // maximum number of iteration to stabilize
  253. updateInterval: {number},
  254. onlyDynamicEdges: {boolean},
  255. fit: {boolean},
  256. __type__: {object,boolean}
  257. },
  258. timestep: {number},
  259. __type__: {object,boolean}
  260. },
  261. //globals :
  262. autoResize: {boolean},
  263. clickToUse: {boolean},
  264. locale:{string},
  265. locales:{
  266. __any__: {object},
  267. __type__: {object}
  268. },
  269. height: {string},
  270. width: {string},
  271. __type__: {object}
  272. };
  273. allOptions.groups.__any__ = allOptions.nodes;
  274. allOptions.manipulation.controlNodeStyle = allOptions.nodes;
  275. let configureOptions = {
  276. nodes: {
  277. borderWidth: [1, 0, 10, 1],
  278. borderWidthSelected: [2, 0, 10, 1],
  279. color: {
  280. border: ['color','#2B7CE9'],
  281. background: ['color','#97C2FC'],
  282. highlight: {
  283. border: ['color','#2B7CE9'],
  284. background: ['color','#D2E5FF']
  285. },
  286. hover: {
  287. border: ['color','#2B7CE9'],
  288. background: ['color','#D2E5FF']
  289. }
  290. },
  291. fixed: {
  292. x: false,
  293. y: false
  294. },
  295. font: {
  296. color: ['color','#343434'],
  297. size: [14, 0, 100, 1], // px
  298. face: ['arial', 'verdana', 'tahoma'],
  299. background: ['color','none'],
  300. strokeWidth: [0, 0, 50, 1], // px
  301. strokeColor: ['color','#ffffff']
  302. },
  303. //group: 'string',
  304. hidden: false,
  305. //icon: {
  306. // face: 'string', //'FontAwesome',
  307. // code: 'string', //'\uf007',
  308. // size: [50, 0, 200, 1], //50,
  309. // color: ['color','#2B7CE9'] //'#aa00ff'
  310. //},
  311. //image: 'string', // --> URL
  312. physics: true,
  313. scaling: {
  314. min: [10, 0, 200, 1],
  315. max: [30, 0, 200, 1],
  316. label: {
  317. enabled: true,
  318. min: [14, 0, 200, 1],
  319. max: [30, 0, 200, 1],
  320. maxVisible: [30, 0, 200, 1],
  321. drawThreshold: [3, 0, 20, 1]
  322. }
  323. },
  324. shadow:{
  325. enabled: false,
  326. size:[10, 0, 20, 1],
  327. x:[5, -30, 30, 1],
  328. y:[5, -30, 30, 1]
  329. },
  330. shape: ['ellipse', 'box', 'circle', 'database', 'diamond', 'dot', 'square', 'star', 'text', 'triangle', 'triangleDown'],
  331. size: [25, 0, 200, 1]
  332. },
  333. edges: {
  334. arrows: {
  335. to: {enabled: false, scaleFactor: [1, 0, 3, 0.05]}, // boolean / {arrowScaleFactor:1} / {enabled: false, arrowScaleFactor:1}
  336. middle: {enabled: false, scaleFactor: [1, 0, 3, 0.05]},
  337. from: {enabled: false, scaleFactor: [1, 0, 3, 0.05]}
  338. },
  339. color: {
  340. color: ['color','#848484'],
  341. highlight: ['color','#848484'],
  342. hover: ['color','#848484'],
  343. inherit: ['from','to','both',true, false],
  344. opacity: [1, 0, 1, 0.05]
  345. },
  346. dashes: false,
  347. font: {
  348. color: ['color','#343434'],
  349. size: [14, 0, 100, 1], // px
  350. face: ['arial', 'verdana', 'tahoma'],
  351. background: ['color','none'],
  352. strokeWidth: [1, 0, 50, 1], // px
  353. strokeColor: ['color','#ffffff'],
  354. align: ['horizontal', 'top', 'middle', 'bottom']
  355. },
  356. hidden: false,
  357. hoverWidth: [2, 0, 5, 0.1],
  358. physics: true,
  359. scaling: {
  360. min: [1, 0, 100, 1],
  361. max: [15, 0, 100, 1],
  362. label: {
  363. enabled: true,
  364. min: [14, 0, 200, 1],
  365. max: [30, 0, 200, 1],
  366. maxVisible: [30, 0, 200, 1],
  367. drawThreshold: [3, 0, 20, 1]
  368. }
  369. },
  370. selectionWidth: [1.5, 0, 5, 0.1],
  371. selfReferenceSize: [20, 0, 200, 1],
  372. shadow:{
  373. enabled: false,
  374. size:[10, 0, 20, 1],
  375. x:[5, -30, 30, 1],
  376. y:[5, -30, 30, 1]
  377. },
  378. smooth: {
  379. enabled: true,
  380. type: ['dynamic','continuous', 'discrete', 'diagonalCross', 'straightCross', 'horizontal', 'vertical', 'curvedCW', 'curvedCCW'],
  381. roundness: [0.5, 0, 1, 0.05]
  382. },
  383. width: [1, 0, 30, 1]
  384. },
  385. layout: {
  386. randomSeed: [0, 0, 500, 1],
  387. hierarchical: {
  388. enabled: false,
  389. levelSeparation: [150, 20, 500, 5],
  390. direction: ['UD', 'DU', 'LR', 'RL'], // UD, DU, LR, RL
  391. sortMethod: ['hubsize', 'directed'] // hubsize, directed
  392. }
  393. },
  394. interaction: {
  395. dragNodes: true,
  396. dragView: true,
  397. hideEdgesOnDrag: false,
  398. hideNodesOnDrag: false,
  399. hover: false,
  400. keyboard: {
  401. enabled: false,
  402. speed: {x: [10, 0, 40, 1], y: [10, 0, 40, 1], zoom: [0.02, 0, 0.1, 0.005]},
  403. bindToWindow: true
  404. },
  405. multiselect: false,
  406. navigationButtons: false,
  407. selectable: true,
  408. selectConnectedEdges: true,
  409. tooltipDelay: [300, 0, 1000, 25],
  410. zoomView: true
  411. },
  412. manipulation: {
  413. enabled: false,
  414. initiallyActive: false
  415. },
  416. physics: {
  417. barnesHut: {
  418. //theta: [0.5, 0.1, 1, 0.05],
  419. gravitationalConstant: [-2000, -30000, 0, 50],
  420. centralGravity: [0.3, 0, 10, 0.05],
  421. springLength: [95, 0, 500, 5],
  422. springConstant: [0.04, 0, 5, 0.005],
  423. damping: [0.09, 0, 1, 0.01]
  424. },
  425. forceAtlas2Based: {
  426. //theta: [0.5, 0.1, 1, 0.05],
  427. gravitationalConstant: [-800, -3000, 0, 1],
  428. centralGravity: [0.01, 0, 1, 0.005],
  429. springLength: [95, 0, 500, 5],
  430. springConstant: [0.08, 0, 5, 0.005],
  431. damping: [0.4, 0, 1, 0.01]
  432. },
  433. repulsion: {
  434. centralGravity: [0.2, 0, 10, 0.05],
  435. springLength: [200, 0, 500, 5],
  436. springConstant: [0.05, 0, 5, 0.005],
  437. nodeDistance: [100, 0, 500, 5],
  438. damping: [0.09, 0, 1, 0.01]
  439. },
  440. hierarchicalRepulsion: {
  441. centralGravity: [0.2, 0, 10, 0.05],
  442. springLength: [100, 0, 500, 5],
  443. springConstant: [0.01, 0, 5, 0.005],
  444. nodeDistance: [120, 0, 500, 5],
  445. damping: [0.09, 0, 1, 0.01]
  446. },
  447. maxVelocity: [50, 0, 150, 1],
  448. minVelocity: [0.1, 0.01, 0.5, 0.01],
  449. solver: ['barnesHut', 'forceAtlas2Based', 'repulsion', 'hierarchicalRepulsion'],
  450. timestep: [0.5, 0, 1, 0.05]
  451. },
  452. global: {
  453. locale: ['en', 'nl']
  454. }
  455. };
  456. export {allOptions, configureOptions};