Browse Source

Merge conflicts

revert-3409-performance
Yotam Berkowitz 7 years ago
parent
commit
dab20a887f
16 changed files with 117 additions and 214 deletions
  1. +2
    -3
      lib/graph3d/DataGroup.js
  2. +2
    -2
      lib/network/modules/NodesHandler.js
  3. +4
    -33
      lib/network/modules/components/nodes/shapes/Box.js
  4. +0
    -6
      lib/network/modules/components/nodes/shapes/Circle.js
  5. +2
    -37
      lib/network/modules/components/nodes/shapes/Database.js
  6. +2
    -38
      lib/network/modules/components/nodes/shapes/Ellipse.js
  7. +3
    -19
      lib/network/modules/components/nodes/shapes/Image.js
  8. +0
    -12
      lib/network/modules/components/nodes/shapes/Text.js
  9. +2
    -24
      lib/network/modules/components/nodes/util/CircleImageBase.js
  10. +77
    -0
      lib/network/modules/components/nodes/util/NodeBase.js
  11. +2
    -25
      lib/network/modules/components/nodes/util/ShapeBase.js
  12. +6
    -0
      lib/timeline/component/ItemSet.js
  13. +15
    -15
      misc/RELEASE_CHECKLIST_TEMPLATE.md
  14. +0
    -0
      npm-debug.log.1272599884
  15. +0
    -0
      npm-debug.log.3807353207
  16. +0
    -0
      npm-debug.log.584735543

+ 2
- 3
lib/graph3d/DataGroup.js View File

@ -36,8 +36,6 @@ function DataGroup() {
* @param {Number} style Style Number
*/
DataGroup.prototype.initializeData = function(graph3d, rawData, style) {
var me = this;
// unsubscribe from the dataTable
if (this.dataSet) {
this.dataSet.off('*', this._onChange);
@ -65,8 +63,9 @@ DataGroup.prototype.initializeData = function(graph3d, rawData, style) {
this.dataTable = data;
// subscribe to changes in the dataset
var me = this;
this._onChange = function () {
me.setData(me.dataSet);
graph3d.setData(me.dataSet);
};
this.dataSet.on('*', this._onChange);

+ 2
- 2
lib/network/modules/NodesHandler.js View File

@ -425,13 +425,13 @@ class NodesHandler {
let nodeObj = {}; // used to quickly check if node already exists
for (let i = 0; i < node.edges.length; i++) {
let edge = node.edges[i];
if (direction !== 'from' && edge.toId == node.id) { // these are double equals since ids can be numeric or string
if (direction !== 'to' && edge.toId == node.id) { // these are double equals since ids can be numeric or string
if (nodeObj[edge.fromId] === undefined) {
nodeList.push(edge.fromId);
nodeObj[edge.fromId] = true;
}
}
else if (direction !== 'to' && edge.fromId == node.id) { // these are double equals since ids can be numeric or string
else if (direction !== 'from' && edge.fromId == node.id) { // these are double equals since ids can be numeric or string
if (nodeObj[edge.toId] === undefined) {
nodeList.push(edge.toId);
nodeObj[edge.toId] = true;

+ 4
- 33
lib/network/modules/components/nodes/shapes/Box.js View File

@ -22,33 +22,9 @@ class Box extends NodeBase {
this.left = x - this.width / 2;
this.top = y - this.height / 2;
ctx.strokeStyle = values.borderColor;
ctx.lineWidth = values.borderWidth;
ctx.lineWidth /= this.body.view.scale;
ctx.lineWidth = Math.min(this.width, ctx.lineWidth);
ctx.fillStyle = values.color;
this.initContextForDraw(ctx, values);
ctx.roundRect(this.left, this.top, this.width, this.height, values.borderRadius);
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (values.borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performFill(ctx, values);
this.updateBoundingBox(x, y, ctx, selected, hover);
this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,
@ -56,15 +32,10 @@ class Box extends NodeBase {
}
updateBoundingBox(x, y, ctx, selected, hover) {
this.resize(ctx, selected, hover);
this.left = x - this.width / 2;
this.top = y - this.height / 2;
this._updateBoundingBox(x, y, ctx, selected, hover);
let borderRadius = this.options.shapeProperties.borderRadius; // only effective for box
this.boundingBox.left = this.left - borderRadius;
this.boundingBox.top = this.top - borderRadius;
this.boundingBox.bottom = this.top + this.height + borderRadius;
this.boundingBox.right = this.left + this.width + borderRadius;
this._addBoundingBoxMargin(borderRadius);
}
distanceToBorder(ctx, angle) {

+ 0
- 6
lib/network/modules/components/nodes/shapes/Circle.js View File

@ -28,12 +28,6 @@ class Circle extends CircleImageBase {
this._drawRawCircle(ctx, x, y, values);
// TODO: values overwritten by updateBoundingBox(); is this bit necessary?
this.boundingBox.top = y - values.size;
this.boundingBox.left = x - values.size;
this.boundingBox.right = x + values.size;
this.boundingBox.bottom = y + values.size;
this.updateBoundingBox(x,y);
this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,
y, selected, hover);

+ 2
- 37
lib/network/modules/components/nodes/shapes/Database.js View File

@ -23,50 +23,15 @@ class Database extends NodeBase {
this.left = x - this.width / 2;
this.top = y - this.height / 2;
var borderWidth = values.borderWidth / this.body.view.scale;
ctx.lineWidth = Math.min(this.width, borderWidth);
ctx.strokeStyle = values.borderColor;
ctx.fillStyle = values.color;
this.initContextForDraw(ctx, values);
ctx.database(x - this.width / 2, y - this.height / 2, this.width, this.height);
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performFill(ctx, values);
this.updateBoundingBox(x, y, ctx, selected, hover);
this.labelModule.draw(ctx, this.left + this.textSize.width / 2 + this.margin.left,
this.top + this.textSize.height / 2 + this.margin.top, selected, hover);
}
updateBoundingBox(x, y, ctx, selected, hover) {
this.resize(ctx, selected, hover);
this.left = x - this.width * 0.5;
this.top = y - this.height * 0.5;
this.boundingBox.left = this.left;
this.boundingBox.top = this.top;
this.boundingBox.bottom = this.top + this.height;
this.boundingBox.right = this.left + this.width;
}
distanceToBorder(ctx, angle) {
return this._distanceToBorder(ctx,angle);
}

+ 2
- 38
lib/network/modules/components/nodes/shapes/Ellipse.js View File

@ -22,50 +22,14 @@ class Ellipse extends NodeBase {
this.left = x - this.width * 0.5;
this.top = y - this.height * 0.5;
var borderWidth = values.borderWidth / this.body.view.scale;
ctx.lineWidth = Math.min(this.width, borderWidth);
ctx.strokeStyle = values.borderColor;
ctx.fillStyle = values.color;
this.initContextForDraw(ctx, values);
ctx.ellipse_vis(this.left, this.top, this.width, this.height);
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performFill(ctx, values);
this.updateBoundingBox(x, y, ctx, selected, hover);
this.labelModule.draw(ctx, x, y, selected, hover);
}
updateBoundingBox(x, y, ctx, selected, hover) {
this.resize(ctx, selected, hover); // just in case
this.left = x - this.width * 0.5;
this.top = y - this.height * 0.5;
this.boundingBox.left = this.left;
this.boundingBox.top = this.top;
this.boundingBox.bottom = this.top + this.height;
this.boundingBox.right = this.left + this.width;
}
distanceToBorder(ctx, angle) {
this.resize(ctx);

+ 3
- 19
lib/network/modules/components/nodes/shapes/Image.js View File

@ -42,18 +42,8 @@ class Image extends CircleImageBase {
this.height + ctx.lineWidth);
ctx.fill();
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performStroke(ctx, values);
ctx.closePath();
}
@ -66,13 +56,7 @@ class Image extends CircleImageBase {
updateBoundingBox(x,y) {
this.resize();
this.left = x - this.width / 2;
this.top = y - this.height / 2;
this.boundingBox.top = this.top;
this.boundingBox.left = this.left;
this.boundingBox.right = this.left + this.width;
this.boundingBox.bottom = this.top + this.height;
this._updateBoundingBox(x, y);
if (this.options.label !== undefined && this.labelModule.size.width > 0) {
this.boundingBox.left = Math.min(this.boundingBox.left, this.labelModule.size.left);

+ 0
- 12
lib/network/modules/components/nodes/shapes/Text.js View File

@ -33,18 +33,6 @@ class Text extends NodeBase {
this.updateBoundingBox(x, y, ctx, selected, hover);
}
updateBoundingBox(x, y, ctx, selected, hover) {
this.resize(ctx, selected, hover);
this.left = x - this.width / 2;
this.top = y - this.height / 2;
this.boundingBox.top = this.top;
this.boundingBox.left = this.left;
this.boundingBox.right = this.left + this.width;
this.boundingBox.bottom = this.top + this.height;
}
distanceToBorder(ctx, angle) {
return this._distanceToBorder(ctx,angle);
}

+ 2
- 24
lib/network/modules/components/nodes/util/CircleImageBase.js View File

@ -109,31 +109,9 @@ class CircleImageBase extends NodeBase {
}
_drawRawCircle(ctx, x, y, values) {
var borderWidth = values.borderWidth / this.body.view.scale;
ctx.lineWidth = Math.min(this.width, borderWidth);
ctx.strokeStyle = values.borderColor;
ctx.fillStyle = values.color;
this.initContextForDraw(ctx, values);
ctx.circle(x, y, values.size);
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performFill(ctx, values);
}
_drawImageAtPosition(ctx, values) {

+ 77
- 0
lib/network/modules/components/nodes/util/NodeBase.js View File

@ -107,6 +107,83 @@ class NodeBase {
return (this.width === undefined) || (this.labelModule.differentState(selected, hover));
}
initContextForDraw(ctx, values) {
var borderWidth = values.borderWidth / this.body.view.scale;
ctx.lineWidth = Math.min(this.width, borderWidth);
ctx.strokeStyle = values.borderColor;
ctx.fillStyle = values.color;
}
performStroke(ctx, values) {
var borderWidth = values.borderWidth / this.body.view.scale;
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
}
performFill(ctx, values) {
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
this.performStroke(ctx, values);
}
_addBoundingBoxMargin(margin) {
this.boundingBox.left -= margin;
this.boundingBox.top -= margin;
this.boundingBox.bottom += margin;
this.boundingBox.right += margin;
}
/**
* Actual implementation of this method call.
*
* Doing it like this makes it easier to override
* in the child classes.
*/
_updateBoundingBox(x, y, ctx, selected, hover) {
if (ctx !== undefined) {
this.resize(ctx, selected, hover);
}
this.left = x - this.width / 2;
this.top = y - this.height/ 2;
this.boundingBox.left = this.left;
this.boundingBox.top = this.top;
this.boundingBox.bottom = this.top + this.height;
this.boundingBox.right = this.left + this.width;
}
/**
* Default implementation of this method call.
*
* This acts as a stub which can be overridden.
*/
updateBoundingBox(x, y, ctx, selected, hover) {
this._updateBoundingBox(x, y, ctx, selected, hover);
}
}
export default NodeBase;

+ 2
- 25
lib/network/modules/components/nodes/util/ShapeBase.js View File

@ -17,35 +17,12 @@ class ShapeBase extends NodeBase {
_drawShape(ctx, shape, sizeMultiplier, x, y, selected, hover, values) {
this.resize(ctx, selected, hover, values);
this.left = x - this.width / 2;
this.top = y - this.height / 2;
var borderWidth = values.borderWidth / this.body.view.scale;
ctx.lineWidth = Math.min(this.width, borderWidth);
ctx.strokeStyle = values.borderColor;
ctx.fillStyle = values.color;
this.initContextForDraw(ctx, values);
ctx[shape](x, y, values.size);
// draw shadow if enabled
this.enableShadow(ctx, values);
// draw the background
ctx.fill();
// disable shadows for other elements.
this.disableShadow(ctx, values);
//draw dashed border if enabled, save and restore is required for firefox not to crash on unix.
ctx.save();
// if borders are zero width, they will be drawn with width 1 by default. This prevents that
if (borderWidth > 0) {
this.enableBorderDashes(ctx, values);
//draw the border
ctx.stroke();
//disable dashed border for other elements
this.disableBorderDashes(ctx, values);
}
ctx.restore();
this.performFill(ctx, values);
if (this.options.label !== undefined) {
// Need to call following here in order to ensure value for `this.labelModule.size.height`

+ 6
- 0
lib/timeline/component/ItemSet.js View File

@ -1342,6 +1342,12 @@ ItemSet.prototype._onDragStart = function (event) {
this.touchParams.itemProps = [props];
}
else {
if(this.groupIds.length < 1) {
// Mitigates a race condition if _onDragStart() is
// called after markDirty() without redraw() being called between.
this.redraw();
}
var baseGroupIndex = this._getGroupIndex(item.data.group);
var itemsToDrag = (this.options.itemsAlwaysDraggable.item && !item.selected) ? [item.id] : this.getSelection();

+ 15
- 15
misc/RELEASE_CHECKLIST_TEMPLATE.md View File

@ -1,17 +1,17 @@
# Release Checklist
## Communication
- [ ] Create a new issue and copy&past this checklist into it (Yeah! First Step done!)
- [ ] Create a new issue and copy&paste this checklist into it (Yeah! First Step done!)
- [ ] Talk to the team: Who should make the release?
- [ ] Announce a "Code-Freeze". No new Pull-Request until the release is done!
- [ ] Checkout if we have MAJOR or MINOR changes. If not we do a PATCH release.
- [ ] The new version will be: `vX.X.Y`
- [ ] The new version will be: `vX.Y.Z`
- [ ] Identify open BUGS and add them to the next PATCH milestone (optional).
- [ ] Identify MINOR issues and add them to the next MINOR milestone (optional).
## Update to the newest version
- [ ] Update to the current version: `git checkout develop && git pull`.
- [ ] Create a new release branch. (`git checkout -b vX.X.Y develop`)
- [ ] Create a new release branch. (`git checkout -b vX.Y.Z develop`)
## Build & Test
- [ ] Update the version number of the library in `package.json` (remove the "SNAPSHOT").
@ -30,7 +30,7 @@
- New Features start with `FEAT #issue:`
## Commit
- [ ] Commit the new version: `git commit -am "Release vX.X.Y"`
- [ ] Commit the new version: `git commit -am "Release vX.Y.Z"`
- [ ] Push the release branch: `git push`
- [ ] Open a Pull-Request for the release-branch to the develop-branch.
- [ ] Wait until somebody of the team looked over your changes and merges the Pull-Request.
@ -42,17 +42,17 @@ If we would merge the development branch would overwrite this. To solve this we
- [ ] Update: `git fetch && git checkout develop && git pull`
- [ ] Rebase the `master` branch on the `develop` branch: `git checkout master && git rebase develop`
- [ ] Generate new dist files: `npm prune && rm -rf node_modules && npm install && npm run build && npm run test && git commit -am "generated dist files for vX.X.Y"
- [ ] Create a version tag: `git tag "vX.X.Y"`
- [ ] Generate new dist files: `npm prune && rm -rf node_modules && npm install && npm run build && npm run test && git commit -am "generated dist files for vX.Y.Z"
- [ ] Create a version tag: `git tag "vX.Y.Z"`
- [ ] [Remove the protection](https://github.com/almende/vis/settings/branches/master) from `master`.
- [ ] FORCE-Push the branches to github: `git push --force && git push --tag`
- [ ] [Re-Enable branch protection](https://github.com/almende/vis/settings/branches/master) (enable ALL checkboxes) for `master`.
- [ ] Publish with npm: `npm publish` (check [npmjs.com](https://www.npmjs.com/package/vis))
- [ ] Create a [new Release](https://github.com/almende/vis/releases/new) with the tang and the name "vX.X.Y" and copy the data vom [HISTORY.md](../HISTORY.md) into the body.
- [ ] Create a [new Release](https://github.com/almende/vis/releases/new) with the tang and the name "vX.Y.Z" and copy the data vom [HISTORY.md](../HISTORY.md) into the body.
## Test
- [ ] Go to a temp directory (e.g. "vis_vX.X.Y"): `cd .. && mkdir vis_vX.X.Y && cd vis_vX.X.Y`
- [ ] Go to a temp directory (e.g. "vis_vX.Y.Z"): `cd .. && mkdir vis_vX.Y.Z && cd vis_vX.Y.Z`
- [ ] Install the library from npm: `npm init -f && npm install vis`
- [ ] Verify if it installs the just released version, and verify if it works: `cd node_modules/vis/
- [ ] Install the library via bower: `cd ../.. && bower install vis`
@ -61,15 +61,15 @@ If we would merge the development branch would overwrite this. To solve this we
- [ ] Verify if it installs the just released version, and verify if it works. `cd vis`
## Update website
- [ ] update the gh-pages branch: `git checkout gh-pages && git pull && git checkout -b "gh-pages_vX.X.Y"`
- [ ] Copy the `dist` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.X.Y/vis/dist .`
- [ ] Copy the `docs` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.X.Y/vis/docs .`
- [ ] Copy the `examples` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.X.Y/vis/examples .`
- [ ] update the gh-pages branch: `git checkout gh-pages && git pull && git checkout -b "gh-pages_vX.Y.Z"`
- [ ] Copy the `dist` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.Y.Z/vis/dist .`
- [ ] Copy the `docs` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.Y.Z/vis/docs .`
- [ ] Copy the `examples` folder from the `master` branch to the `github-pages` branch in another directory, overwriting existing files: `cp -rf ../vis_vX.Y.Z/vis/examples .`
- [ ] Check if there are new or updated examples, and update the gallery screenshots accordingly.
- [ ] Update the library version number in the `index.html` page.
- [ ] Update the CDN links at the download section of index.html AND the CDN link at the top. (search-replace all!!)
- [ ] Commit the changes: `git add -A && git commit -m "updates for vX.X.Y"`
- [ ] Push the changes `git push --set-upstream origin gh-pages_vX.X.Y`
- [ ] Commit the changes: `git add -A && git commit -m "updates for vX.Y.Z"`
- [ ] Push the changes `git push --set-upstream origin gh-pages_vX.Y.Z`
## Prepare next version
- [ ] Switch to the "develop" branch: `git checkout develop`.
@ -80,4 +80,4 @@ If we would merge the development branch would overwrite this. To solve this we
- [ ] FORCE-Push the branches to github: `git push --force && git push --tag`
- [ ] [Re-Enable branch protection](https://github.com/almende/vis/settings/branches/develop) (enable ALL checkboxes) for `develop`.
DONE!
DONE!

+ 0
- 0
npm-debug.log.1272599884 View File


+ 0
- 0
npm-debug.log.3807353207 View File


+ 0
- 0
npm-debug.log.584735543 View File


Loading…
Cancel
Save