A recurring problem during travis tests is that global variable `window` can get reset while `Network` tests using a mock canvas object are running.
This issue has been adressed several times, but it still happens. This PR reduces the possibility of it happening again to a minimum.
PR's affected by this issue should be merged with this fix and re-submitted. At time of writing, these are:
- #3402
- #3405
- #3399
Chances are it will occur sporadically for other PR's as well.
Labelling this `High Priority` because it indrectly affects unrelated PR's.
Fix for #3367
Changes:
- Clustered nodes with shared connections are added to the same cluster
- joinCondition value `null` handled as `undefined`
- Fixed bug on adding clusters if joinCondition present and returns true
Unit tests have been added to `Network.test.js` for these changes.
* Added commenting for options, refactored choosify()
* Refactored updateLabelModule()
* added comment at node creation
* Completed fix for #3350
* parseOptions() different handling for bridged/extended; unit tests for reversal of options
* Fixes on linting and unit testing
* Enables require MethodDefinition for require-jsdoc lint rule and corrects 66% of missing Method Definitions
* Adds jsdoc for all remaining methods and corrects @class/@constructor documentation
* Define values more accurately
* Correct bugs that prevent jsdoc generation
* Add support for edge style
* Update for TODO: support of solid/dotted/dashed edges (attr = 'style')
* Edge styles are defined as var edgeStyles in parseAttributeList().
* Add example for edge styles
Add an editable example for playing DOT edge styles
* Correct typo and remove TODO description
* Correct typo of filename from 'dotEdgeSytles.html' to
'dotEdgeStyles.html'.
* Remove TODO description of the issue for edge style
* Enable unit testing for module Network
Adds mocks for certain components, in order to let module `Network` be run in unit tests.
Changes:
- Create a mock object for `hammer.js` when running browserless. The inspiration is taken from [here](https://github.com/uber/deck.gl/pull/658)
- Create a mock function for `window.requestAnimationFrame()` when running browserless in `network/modules/CanvasRenderer.js`
- Added unit test for `Network` to show that unit testing for it now works
- Fixed naming of container in `test/Graph3d.test.js`
Since `hammer.js` is also used in other modules, this fix is potentially an enabler for full-module unit tests for those as well.
* Cleanup unit test Network
* Fix for unit test
* Added example networks to unit test
* Fix error in loading disassemblerExample
* Network unit test final fixes
* Adjusted comments
* Fix sorting of nestedgroups when groups added after initial groups setting
* Fix nesteded groups logic when adding and removing
* Remove empty lines
* Fix comments from PR
* Remove spaces from empty line
* Fix PR review comments
* fixes showMajorLabel issue in #3246https://github.com/almende/vis/issues/3246
* fix at TimeStep level, for weekly mode, when showMajorLabels == false
* pass options in TimeStep construction
* First working version of updating clustered edge
* Added fix for #1315 as well
* Enable unit testing for module Network
Adds mocks for certain components, in order to let module `Network` be run in unit tests.
Changes:
- Create a mock object for `hammer.js` when running browserless. The inspiration is taken from [here](https://github.com/uber/deck.gl/pull/658)
- Create a mock function for `window.requestAnimationFrame()` when running browserless in `network/modules/CanvasRenderer.js`
- Added unit test for `Network` to show that unit testing for it now works
- Fixed naming of container in `test/Graph3d.test.js`
Since `hammer.js` is also used in other modules, this fix is potentially an enabler for full-module unit tests for those as well.
* Cleanup unit test Network
* Added unit test for fix issue #1218
* Adding test for #1315 - Interim save
* Completed unit test and fixes for #1315
* Added fixes for #1291
* Added unit test for #1219
* Added header comment for Clustering.js, small fixes
* Fix for unit test
* Added example networks to unit test
* Fix error in loading disassemblerExample
* Network unit test final fixes
* Fixes for linting
* Fixed essential typo
* Fixed linting error
* Fixed unit test
* Fixed unit test again
* Makes network eslint compliant
Unused variables in private functions, who were never called internally with those arguments were removed.
lint rule was disabled for public functions, and in private functions which were called internally with those unused arguments
* Disables linting for unused args passed into DataSet and DataView
* Levels of direct hierarchical network only incremented
* Cleaned up old code
* Quick fix on presence globaOptions in mergeOptions()
* Revert fix, doesn't work
* Network: Block recalculation of level in LayoutEngine._determineLevelsDirected()
Fix for #2311.
Nodes with bidirectional edges got their levels shifted due to the handling of both edge directions.
This fix adds a check on bidirectionality and blocks any subsequent level adjustment.
Pure tree layouts are unaffected by this change.
* Proof of concept with copied options + handling from network
* Added unit test for Graph3d, for checking default syntax; completed def's of all options, autoByDefault not handled yet.
* Fixes for options in playground example
* Added onclick options to graph3d documentation
* Fixes in graph3d examples
* Final fixes for option definitions in Graph3d
* Fixed handling of 'undefined' in options, enhanced graph3d unit test
* Disabled console output in graph3d unit test
* Upgrade webpack module
* Graph3D: move Filter into DataGroup
The `Filter` instance within `Graph3d` is intimately connected to the graph data,
contained in a `DataGroup` instance. As such, it needs to be placed within `DataGroup`.
A consequence of this is that, in the final case of multiple graphs, each graph can be
animation separately. I regard this as an advantage, even though it will means more
initialization for the graphs (you have to initialize each separately for an animation.
An effort has been made to decouple `Graph3d` and `Filter` as much as possible. There
are still some relationships present, but it's more bother than it's worth to dissolve these.
In addition to moving the `Filter` instance, the following has been done:
- Added variable `style` to `DataGroup`
- Moved certain data-specific methods from `Graph3d` to `DataGroup`
- cleaned up some code and commenting
These changes have been tested with the following examples:
- `graph3d/10_styling`
- `graph3d/03_filter_data`
- `graph3d/04_animation`
* Add changes to filter
* Code cleanup, for better understanding
* Further refactoring; text processing to blocks in separate method
* Added unit test for labels - tests standard text and html tags
* Labels added unit tests for markdown
* Further refactoring; made multi and regular handling more congruent
* Interim save, not there yet
* Unit tests done, first working version
* Added test case with two big words
* Code cleanup
* Break up huge words into lines.
* Restore unrelated code change
* Update hierarchy when node level changes
Fix for #3220
On change of data of an existing node, the level is checked for changes.
If changed, for a recalculation of the hierarchical layout.
The fix does not explicitly check for hierarchical layout; this should not be a problem.
The added code can be used to add further node fields which may trigger recalculation of layout.
* Changes due to review
* First interim commit
* Fixes during testing
* Allow multiple edges to be hidden by a clustered edge.
Fix for #3245.
This fix adjusts the clustering edges so that theyi can refer to multiple edges instead of just one.
This API method is now insufficient, since multiple base edges can be returned.
- Added replacing method `clustering.getBaseEdges()`
- Adjusted example `changingClusteredEdgeNodes` for the new method. This is the *only* place where `getBaseEdge()` was used
- Adjusted documentation for new method and deprecation old method.
Method `getbaseEdge()` should now be considered `deprecated`, and in due time should be removed.
* Edits of method name in example
* Edits of method name in example
* adjusted deprecation method getBaseEdge() in docs
* Adjusted deprecation method for getBaseEdge() in docs
Fix for #1222.
This makes the passed data of events `hoverNode`, `hoverEdge`, `blurNode` and `blurEdge`
more conformant to the passed data of the click events. In particular, the following
fields are added to the event data:
```
event: [Object] original hover event,
pointer: {
DOM: {x:pointer_x, y:pointer_y},
canvas: {x:canvas_x, y:canvas_y}
}
```
The changes can be tested with example `network/events/InteractionEvents`.
* Added unit test for Validator, minimum viable version.
* Added test-console to package list
* Completed minimum viable unit test for Validator
* Added Validator unit test for explicit 'undefined'
Fix for #3164
- `network.clustering.cluster()` now handles all nodes, not just the visible ones
- Changing ivisibility of nodes now explicitly takes clustering into account, see `Network._updateVisibleIndices()`
- `network.clustering` does not change `hidden` status any more.
The important part of this PR is the realization that 'hidden' and 'clustered' are two distinct things and should be handled separately.
In particular, clustering should **not** change the `hidden` state in any way.
**Note:** This is a small fix and should be easy to review.
Second fix for #3251.
In method `DataGroup.initializeData()`, if the passed `rawData` is bad for some reason,
it was possible to lose the subscriptions due to early return from the method.
This fix changes the order in the method so that the guard clauses execute *before* the
subscription is changed.
**Note: ** This is a simple fix and should be easy to review.
Fix for #2579
- Adjusted node title definition in `options.js` to allow DOM elements
- Changed `BridgeObject()` in `util.js` so that DOM elements are *not* bridged.
* Bidirectional scrolling.
Make horizontalScroll and verticalScroll work together.
* Fix delta variable declaration
Using ?: operator
* Remove notice about vertical and horizontal scroll conflict
There is no sense considering #3162
Fix for #2856
- Toolbar gets reshown when cancelling edit node dialog
- No shadow displayed upon save in edit node dialog
The latter is actually a more general problem. Function `mergeOptions` in `util.js`
made an assumption as to the correct value of field `enabled`. It now takes the value
from `globalOptions`, if present.
* First working version of eslint enabled with gulp
* Tryout of eslint with graph3d files
* Cleanup of gulp and eslint files.
* Completed test by linting graph3d
* Disable travis linting for now
* Remove global cmd param from .travis.yml
* Fix missing reference to Graph3D instance in DataGroup
Fix for #3251
A reference was missed in DataGroup.reload() during refactoring.
Rather than fix this method, it has been removed and the logic moved to `Graph3d`.
This makes for somewhat cleaner code.
* Fixes due to review