visjs-network
Version:
A dynamic, browser-based network visualization library.
232 lines (178 loc) • 6.39 kB
Markdown
# Command line usage example
```
jsdoc -c jsdoc.json -r -t docs -d gen/docs lib
```
- `-c`: use this config file for `jsdoc`
- `-r`: Recurse into subdirectories of the specified source directories
- `-t`: Use template in path `docs`
- `-d`: Generated html files put in `gen/docs`
- Source files to parse are taken from directory `lib`
## Notes
The template generation is set up so that:
- Files ending in `.tmpl` are skipped
- All non-html files are plain copied
- html-files *can* contain `<?js ?>` tags, but this is not required
## Intention
The `docs` directory is treated as a `jsdoc` template, in which the html-files are the template files. This allows for a gradual adaptation of the html-files to templates; unchanged html-files will pass through `jsdoc` unchanged.
The added value of using `jsdoc` for documentation generation, is that the complete documentation information, as collected by `jsdoc` from the source, is available for usage. This way, it's possible to insert technical notes from the source code into the documentation.
----
# Usage of and Notes on Source Code
This section contains notes on the usage of `jsdoc` functionality, to aid with the handling of its generated data.
## Parameters of `publish()`
### Parameter `taffyData`
A table containing *all* data collected from the source code, related to jsdoc generation. See below for more info and example outputs.
### Parameter `opt`
Example of `opt` variable:
```js
{
"_":["../github/vis/lib/network/"],
"configure":"jsdoc.json",
"recurse":true,
"template":"/home/wim/projects/jsdoc/default",
"destination":"./out/",
"encoding":"utf8"
}
```
### Parameter `tutorial`
This does not appear to be of use for the generation of `vis.js` documentation.
Example of `tutorial` variable:
```js
{
"longname":"",
"name":"",
"title":"",
"content":"",
"parent":null,
"children":[],
"_tutorials":{}
}
```
## Global variable `env`
This contains addition info for the current execution of `jsdoc`. Example of `env` variable:
```js
{
"run":{"start":"2017-09-16T05:06:45.621Z","finish":null},
"args":["-c","jsdoc.json","-r","-t","default","../github/vis/lib/network/"],
"conf":{
"plugins":["/usr/lib/node_modules/jsdoc/plugins/markdown.js"],
"recurseDepth":10,
"source":{"includePattern":".+\\.js(doc|x)?$","excludePattern":""},
"sourceType":"module",
"tags":{"allowUnknownTags":true,"dictionaries":["jsdoc","closure"]},
"templates":{"monospaceLinks":false,"cleverLinks":false}
},
"dirname":"/usr/lib/node_modules/jsdoc",
"pwd":"/home/wim/projects/jsdoc",
"opts":{ <<same as parameter 'opt' above>> },
"sourceFiles":[ <<list of full path names of all js-source files used as input>> ],
"version":{"number":"3.5.4","revision":"Fri, 04 Aug 2017 22:05:27 GMT"}
}
```
## taffyData
This is a parameter to `publish()`. It's a table containing *all* data collected from the source code, related to jsdoc generation.
I can't find any way to return a list of fields for the data items in the taffyDB docs, therefore below there are examples of items, for better understanding of usage.
Example usage:
```js
var data = taffyData;
var tmp = data().filter({name:'Label'}).get();
```
Returns an array with all items with `name === 'Label'`. Example output of one of these items, for a class:
*In these examples, block comment endings are redacted to ' * /'*
```js
{
"comment":"/**\n * A Label to be used for Nodes or Edges.\n * /",
"meta":{
"range":[3770,41303],
"filename":"Label.js",
"lineno":167,
"columnno":0,
"path":"/home/wim/projects/github/vis/lib/network/modules/components/shared",
"code":{
"id":"astnode100065034",
"name":"Label",
"type":"ClassDeclaration",
"paramnames":["body","options","edgelabel"]
}
},
"classdesc":"
A Label to be used for Nodes or Edges.
",
"name":"Label",
"longname":"Label",
"kind":"class",
"scope":"global",
"params":[
{"type":{"names":["Object"]},"name":"body"},
{"type":{"names":["Object"]},"name":"options"},
{"type":{"names":["boolean"]},"optional":true,"defaultvalue":false,"name":"edgelabel"}
],
"___id":"T000002R005289",
"___s":true
}
```
Example of item for an instance method:
```js
var tmp = data().filter({name:'_drawText'}).get();
```
Full output returned:
```js
[{
"comment":"/**\n *\n * @param {CanvasRenderingContext2D} ctx\n * @param {boolean} selected\n * @param {boolean} hover\n * @param {number} x\n * @param {number} y\n * @param {string} [baseline='middle']\n * @private\n * /",
"meta":{
"range":[20060,22269],
"filename":"Label.js",
"lineno":652,
"columnno":2,
"path":"/home/wim/projects/github/vis/lib/network/modules/components/shared",
"code":{
"id":"astnode100066427",
"name":"Label#_drawText",
"type":"MethodDefinition",
"paramnames":["ctx","selected","hover","x","y","baseline"]
},
"vars":{"":null}
},
"params":[
{"type":{"names":["CanvasRenderingContext2D"]},"name":"ctx"},
{"type":{"names":["boolean"]},"name":"selected"},
{"type":{"names":["boolean"]},"name":"hover"},
{"type":{"names":["number"]},"name":"x"},
{"type":{"names":["number"]},"name":"y"},
{"type":{"names":["string"]},"optional":true,"defaultvalue":"'middle'","name":"baseline"}
],
"access":"private",
"name":"_drawText",
"longname":"Label#_drawText",
"kind":"function",
"memberof":"Label",
"scope":"instance",
"___id":"T000002R005388",
"___s":true
}]
```
## `jsdoc` template rendering
See `function createRenderer(fromDir, data)` in code for usage.
There are two calls for rendering templates:
- `var html = renderer.render(inFile, docData);`
- `var html = renderer.partial(inFile, docData);`
The difference is that `render()` will use a default layout template, if present, which will encapsulate all html. This can be set by:
```js
renderer.layout = 'path/to/default/layout.tmpl';
```
Parameter `docData` is a hash which is used to pass parameters into a template. The standard way of using this appear to be:
```
<?js
var data = obj; // Whatever docData is
var self = this;
?>
```
But it also appear to be possible to use the elements of docData directly:
```js
var docData = {
myTitle: 'Hello, pussycat!'
};
```
Within the template:
```
<?js= myTitle ?>
```