diff --git a/.gitignore b/.gitignore index 0a2c6079e4..07437ebc1b 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ npm-debug.log # temporary files .*.sw[op] .commits.tmp +gen/ diff --git a/docs/network/index.html b/docs/network/index.html index 28199c4ed1..23ce1cfb8f 100644 --- a/docs/network/index.html +++ b/docs/network/index.html @@ -1,3 +1,6 @@ +
@@ -609,6 +612,21 @@String/Number nodeId
)
diff --git a/gulpfile.js b/gulpfile.js
index 343045be95..1fe5ed0bec 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -10,6 +10,7 @@ var webpack = require('webpack');
var uglify = require('uglify-js');
var rimraf = require('rimraf');
var argv = require('yargs').argv;
+var child_exec = require('child_process').exec;
var ENTRY = './index.js';
var HEADER = './lib/header.js';
@@ -29,7 +30,12 @@ var INDIVIDUAL_CSS_BUNDLES = [
{entry: ['./lib/shared/**/*.css', './lib/network/**/*.css'], filename: 'vis-network.min.css'}
];
-// generate banner with today's date and correct version
+
+/**
+ * Generate banner with today's date and correct version
+ *
+ * @returns {string} banner text
+ */
function createBanner() {
var today = gutil.date(new Date(), 'yyyy-mm-dd'); // today, formatted as yyyy-mm-dd
var version = require('./package.json').version;
@@ -39,6 +45,7 @@ function createBanner() {
.replace('@@version', version);
}
+
var bannerPlugin = new webpack.BannerPlugin({
banner: createBanner(),
entryOnly: true,
@@ -92,6 +99,12 @@ var uglifyConfig = {
// create a single instance of the compiler to allow caching
var compiler = webpack(webpackConfig);
+/**
+ * Callback for handling errors for a compiler run
+ *
+ * @param {object} err
+ * @param {objects} stats
+ */
function handleCompilerCallback (err, stats) {
if (err) {
gutil.log(err.toString());
@@ -232,5 +245,27 @@ gulp.task('lint', function () {
});
+// Generate the documentation files
+gulp.task('docs', function(cb) {
+ var targetDir = 'gen/docs';
+
+ // Not sure if this is the best way to handle 'cb'; at least it works.
+ var hasError = false;
+ var onError = function(error) {
+ if (error !== undefined && error !== null) {
+ console.error('Error while running task: ' + error);
+ hasError = true;
+ cb();
+ }
+ }
+
+ rimraf(__dirname + '/' + targetDir, onError); // Clean up previous generation
+
+ if (!hasError) {
+ var params = '-c ./jsdoc.json -r -t docs -d ' + targetDir;
+ child_exec('node ./node_modules/jsdoc/jsdoc.js ' + params + ' lib', undefined, cb);
+ }
+});
+
// The default task (called when you run `gulp`)
gulp.task('default', ['clean', 'bundle', 'minify']);
diff --git a/jsdoc.json b/jsdoc.json
new file mode 100644
index 0000000000..df0756c69f
--- /dev/null
+++ b/jsdoc.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["plugins/markdown"]
+}
diff --git a/lib/network/Network.js b/lib/network/Network.js
index 486a8a215d..b45baf0a06 100644
--- a/lib/network/Network.js
+++ b/lib/network/Network.js
@@ -470,7 +470,27 @@ Network.prototype.isActive = function () {
Network.prototype.setSize = function() {return this.canvas.setSize.apply(this.canvas,arguments);};
Network.prototype.canvasToDOM = function() {return this.canvas.canvasToDOM.apply(this.canvas,arguments);};
Network.prototype.DOMtoCanvas = function() {return this.canvas.DOMtoCanvas.apply(this.canvas,arguments);};
+
+
+/**
+ * Nodes can be in clusters. Clusters can also be in clusters. This function returns and array of
+ * nodeIds showing where the node is.
+ *
+ * If any nodeId in the chain, especially the first passed in as a parameter, is not present in
+ * the current nodes list, an empty array is returned.
+ *
+ * Example:
+ * cluster 'A' contains cluster 'B',
+ * cluster 'B' contains cluster 'C',
+ * cluster 'C' contains node 'fred'.
+ * `jsnetwork.clustering.findNode('fred')` will return `['A','B','C','fred']`.
+ *
+ * @param {string|number} nodeId
+ * @returns {Array}
+ */
Network.prototype.findNode = function() {return this.clustering.findNode.apply(this.clustering,arguments);};
+
+
Network.prototype.isCluster = function() {return this.clustering.isCluster.apply(this.clustering,arguments);};
Network.prototype.openCluster = function() {return this.clustering.openCluster.apply(this.clustering,arguments);};
Network.prototype.cluster = function() {return this.clustering.cluster.apply(this.clustering,arguments);};
diff --git a/package.json b/package.json
index be72b0af38..867be4a80f 100644
--- a/package.json
+++ b/package.json
@@ -59,6 +59,7 @@
"gulp-eslint": "^4.0.0",
"gulp-rename": "^1.2.2",
"gulp-util": "^3.0.8",
+ "jsdoc": "^3.5.5",
"jsdom": "9.12.0",
"jsdom-global": "^2.1.1",
"merge-stream": "^1.0.1",