mirror of
https://bitbucket.org/wisemapping/wisemapping-open-source.git
synced 2024-11-25 23:44:54 +01:00
Adding fade in - fade out effect when adding new nodes
This commit is contained in:
parent
0b742f2577
commit
9a41f3b288
@ -271,3 +271,64 @@ core.Utils.calculateDefaultControlPoints = function(srcPos, tarPos){
|
|||||||
|
|
||||||
return [new core.Point(-srcPos.x + x1,-srcPos.y + y1),new core.Point(-tarPos.x + x2,-tarPos.y + y2)];
|
return [new core.Point(-srcPos.x + x1,-srcPos.y + y1),new core.Point(-tarPos.x + x2,-tarPos.y + y2)];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
core.Utils.setVisibilityAnimated = function(elems, isVisible, doneFn){
|
||||||
|
core.Utils.animateVisibility(elems, isVisible, doneFn);
|
||||||
|
};
|
||||||
|
core.Utils.setChildrenVisibilityAnimated = function(rootElem, isVisible){
|
||||||
|
var children = core.Utils._addInnerChildrens(rootElem);
|
||||||
|
core.Utils.animateVisibility(children, isVisible);
|
||||||
|
};
|
||||||
|
|
||||||
|
core.Utils.animateVisibility = function (elems, isVisible, doneFn){
|
||||||
|
var _fadeEffect=null;
|
||||||
|
var _opacity = (isVisible?0:1);
|
||||||
|
if(isVisible){
|
||||||
|
elems.forEach(function(child, index){
|
||||||
|
child.setOpacity(_opacity);
|
||||||
|
child.setVisibility(isVisible);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
var fadeEffect = function(index)
|
||||||
|
{
|
||||||
|
var step = 10;
|
||||||
|
if((_opacity<=0 && !isVisible) || (_opacity>=1 && isVisible)){
|
||||||
|
$clear(_fadeEffect);
|
||||||
|
_fadeEffect = null;
|
||||||
|
elems.forEach(function(child, index){
|
||||||
|
|
||||||
|
child.setVisibility(isVisible);
|
||||||
|
|
||||||
|
});
|
||||||
|
if(core.Utils.isDefined(doneFn))
|
||||||
|
doneFn.attempt();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var fix = 1;
|
||||||
|
if(isVisible){
|
||||||
|
fix = -1;
|
||||||
|
}
|
||||||
|
_opacity-=(1/step)*fix;
|
||||||
|
elems.forEach(function(child, index){
|
||||||
|
child.setOpacity(_opacity);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
_fadeEffect =fadeEffect.periodical(30);
|
||||||
|
};
|
||||||
|
|
||||||
|
core.Utils._addInnerChildrens = function(elem){
|
||||||
|
var children = [];
|
||||||
|
var childs = elem._getChildren();
|
||||||
|
for(var i = 0 ; i<childs.length; i++){
|
||||||
|
var child = childs[i];
|
||||||
|
children.push(child);
|
||||||
|
children.push(child.getOutgoingLine());
|
||||||
|
var relationships = child.getRelationships();
|
||||||
|
children = children.concat(relationships);
|
||||||
|
var innerChilds = core.Utils._addInnerChildrens(child);
|
||||||
|
children = children.concat(innerChilds);
|
||||||
|
}
|
||||||
|
return children;
|
||||||
|
};
|
@ -93,6 +93,15 @@ mindplot.ConnectionLine.prototype.setVisibility = function(value)
|
|||||||
this._line2d.setVisibility(value);
|
this._line2d.setVisibility(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mindplot.ConnectionLine.prototype.isVisible = function()
|
||||||
|
{
|
||||||
|
return this._line2d.isVisible();
|
||||||
|
};
|
||||||
|
|
||||||
|
mindplot.ConnectionLine.prototype.setOpacity = function(opacity){
|
||||||
|
this._line2d.setOpacity(opacity);
|
||||||
|
};
|
||||||
|
|
||||||
mindplot.ConnectionLine.prototype.redraw = function()
|
mindplot.ConnectionLine.prototype.redraw = function()
|
||||||
{
|
{
|
||||||
var line2d = this._line2d;
|
var line2d = this._line2d;
|
||||||
|
@ -92,10 +92,10 @@ mindplot.CommandContext = new Class({
|
|||||||
{
|
{
|
||||||
this._designer._removeNode(topic);
|
this._designer._removeNode(topic);
|
||||||
},
|
},
|
||||||
createTopic:function(model)
|
createTopic:function(model, isVisible)
|
||||||
{
|
{
|
||||||
core.assert(model, "model can not be null");
|
core.assert(model, "model can not be null");
|
||||||
var topic = this._designer._nodeModelToNodeGraph(model);
|
var topic = this._designer._nodeModelToNodeGraph(model, isVisible);
|
||||||
|
|
||||||
// @todo: Is this required ?
|
// @todo: Is this required ?
|
||||||
var designer = this._designer;
|
var designer = this._designer;
|
||||||
@ -109,9 +109,9 @@ mindplot.CommandContext = new Class({
|
|||||||
var model = mindmap.createNode(mindplot.NodeModel.MAIN_TOPIC_TYPE);
|
var model = mindmap.createNode(mindplot.NodeModel.MAIN_TOPIC_TYPE);
|
||||||
return model;
|
return model;
|
||||||
},
|
},
|
||||||
connect:function(childTopic, parentTopic)
|
connect:function(childTopic, parentTopic, isVisible)
|
||||||
{
|
{
|
||||||
childTopic.connectTo(parentTopic, this._designer._workspace);
|
childTopic.connectTo(parentTopic, this._designer._workspace, isVisible);
|
||||||
} ,
|
} ,
|
||||||
disconnect:function(topic)
|
disconnect:function(topic)
|
||||||
{
|
{
|
||||||
|
@ -179,7 +179,7 @@ mindplot.MindmapDesigner.prototype._registerEvents = function()
|
|||||||
var centralTopicId = centralTopic.getId();
|
var centralTopicId = centralTopic.getId();
|
||||||
|
|
||||||
// Execute action ...
|
// Execute action ...
|
||||||
var command = new mindplot.commands.AddTopicCommand(model, centralTopicId);
|
var command = new mindplot.commands.AddTopicCommand(model, centralTopicId, true);
|
||||||
this._actionRunner.execute(command);
|
this._actionRunner.execute(command);
|
||||||
}.bind(this));
|
}.bind(this));
|
||||||
}
|
}
|
||||||
@ -325,7 +325,7 @@ mindplot.MindmapDesigner.prototype.createChildForSelectedNode = function()
|
|||||||
var parentTopicId = centalTopic.getId();
|
var parentTopicId = centalTopic.getId();
|
||||||
var childModel = centalTopic.createChildModel();
|
var childModel = centalTopic.createChildModel();
|
||||||
|
|
||||||
var command = new mindplot.commands.AddTopicCommand(childModel, parentTopicId);
|
var command = new mindplot.commands.AddTopicCommand(childModel, parentTopicId, true);
|
||||||
this._actionRunner.execute(command);
|
this._actionRunner.execute(command);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -357,7 +357,7 @@ mindplot.MindmapDesigner.prototype.createSiblingForSelectedNode = function()
|
|||||||
var parentTopic = topic.getOutgoingConnectedTopic();
|
var parentTopic = topic.getOutgoingConnectedTopic();
|
||||||
var siblingModel = topic.createSiblingModel();
|
var siblingModel = topic.createSiblingModel();
|
||||||
var parentTopicId = parentTopic.getId();
|
var parentTopicId = parentTopic.getId();
|
||||||
var command = new mindplot.commands.AddTopicCommand(siblingModel, parentTopicId);
|
var command = new mindplot.commands.AddTopicCommand(siblingModel, parentTopicId, true);
|
||||||
|
|
||||||
this._actionRunner.execute(command);
|
this._actionRunner.execute(command);
|
||||||
}
|
}
|
||||||
@ -545,11 +545,14 @@ mindplot.MindmapDesigner.prototype.redo = function()
|
|||||||
this._actionRunner.redo();
|
this._actionRunner.redo();
|
||||||
};
|
};
|
||||||
|
|
||||||
mindplot.MindmapDesigner.prototype._nodeModelToNodeGraph = function(nodeModel)
|
mindplot.MindmapDesigner.prototype._nodeModelToNodeGraph = function(nodeModel, isVisible)
|
||||||
{
|
{
|
||||||
core.assert(nodeModel, "Node model can not be null");
|
core.assert(nodeModel, "Node model can not be null");
|
||||||
var nodeGraph = this._buildNodeGraph(nodeModel);
|
var nodeGraph = this._buildNodeGraph(nodeModel);
|
||||||
|
|
||||||
|
if(core.Utils.isDefined(isVisible))
|
||||||
|
nodeGraph.setVisibility(isVisible);
|
||||||
|
|
||||||
var children = nodeModel.getChildren().slice();
|
var children = nodeModel.getChildren().slice();
|
||||||
|
|
||||||
// Sort children by order to solve adding order ...
|
// Sort children by order to solve adding order ...
|
||||||
|
@ -101,8 +101,8 @@ mindplot.RelationshipLine.prototype.redraw = function()
|
|||||||
|
|
||||||
mindplot.RelationshipLine.prototype._positionateArrows = function()
|
mindplot.RelationshipLine.prototype._positionateArrows = function()
|
||||||
{
|
{
|
||||||
this._endArrow.setVisibility(this._showEndArrow);
|
this._endArrow.setVisibility(this.isVisible() && this._showEndArrow);
|
||||||
this._startArrow.setVisibility(this._showStartArrow);
|
this._startArrow.setVisibility(this.isVisible() && this._showStartArrow);
|
||||||
|
|
||||||
var tpos = this._line2d.getTo();
|
var tpos = this._line2d.getTo();
|
||||||
this._endArrow.setFrom(tpos.x, tpos.y);
|
this._endArrow.setFrom(tpos.x, tpos.y);
|
||||||
@ -205,8 +205,16 @@ mindplot.RelationshipLine.prototype.isInWorkspace = function(){
|
|||||||
mindplot.RelationshipLine.prototype.setVisibility = function(value)
|
mindplot.RelationshipLine.prototype.setVisibility = function(value)
|
||||||
{
|
{
|
||||||
mindplot.RelationshipLine.superClass.setVisibility.call(this,value);
|
mindplot.RelationshipLine.superClass.setVisibility.call(this,value);
|
||||||
this._endArrow.setVisibility(value);
|
this._endArrow.setVisibility(this._showEndArrow && value);
|
||||||
this._startArrow.setVisibility(value);
|
this._startArrow.setVisibility(this._showStartArrow && value);
|
||||||
|
};
|
||||||
|
|
||||||
|
mindplot.RelationshipLine.prototype.setOpacity = function(opacity){
|
||||||
|
mindplot.RelationshipLine.superClass.setOpacity.call(this,opacity);
|
||||||
|
if(this._showEndArrow)
|
||||||
|
this._endArrow.setOpacity(opacity);
|
||||||
|
if(this._showStartArrow)
|
||||||
|
this._startArrow.setOpacity(opacity);
|
||||||
};
|
};
|
||||||
|
|
||||||
mindplot.RelationshipLine.prototype.setShowEndArrow = function(visible){
|
mindplot.RelationshipLine.prototype.setShowEndArrow = function(visible){
|
||||||
|
@ -36,10 +36,10 @@ mindplot.ShirinkConnector = function(topic)
|
|||||||
{
|
{
|
||||||
topic.setChildrenShrinked(isShrink);
|
topic.setChildrenShrinked(isShrink);
|
||||||
return !isShrink;
|
return !isShrink;
|
||||||
}
|
};
|
||||||
|
|
||||||
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, isShrink, [topicId]);
|
var command = new mindplot.commands.GenericFunctionCommand(commandFunc, isShrink, [topicId]);
|
||||||
actionRunner.execute(command)
|
actionRunner.execute(command);
|
||||||
|
|
||||||
new Event(event).stop();
|
new Event(event).stop();
|
||||||
|
|
||||||
@ -94,6 +94,11 @@ mindplot.ShirinkConnector.prototype.setVisibility = function(value)
|
|||||||
this._elipse.setVisibility(value);
|
this._elipse.setVisibility(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mindplot.ShirinkConnector.prototype.setOpacity = function(opacity)
|
||||||
|
{
|
||||||
|
this._elipse.setOpacity(opacity);
|
||||||
|
}
|
||||||
|
|
||||||
mindplot.ShirinkConnector.prototype.setFill = function(color)
|
mindplot.ShirinkConnector.prototype.setFill = function(color)
|
||||||
{
|
{
|
||||||
this._fillColor = color;
|
this._fillColor = color;
|
||||||
|
@ -848,15 +848,8 @@ mindplot.Topic.prototype.setChildrenShrinked = function(value)
|
|||||||
var shrinkConnector = this.getShrinkConnector();
|
var shrinkConnector = this.getShrinkConnector();
|
||||||
shrinkConnector.changeRender(value);
|
shrinkConnector.changeRender(value);
|
||||||
|
|
||||||
// Hide branch in order to avoid flickering...
|
|
||||||
this._setChildrenVisibility(false);
|
|
||||||
|
|
||||||
// Update topic position based on the state ...
|
|
||||||
var targetTopicBoard = this.getTopicBoard();
|
|
||||||
targetTopicBoard.repositionate();
|
|
||||||
|
|
||||||
// Hide children ...
|
// Hide children ...
|
||||||
this._setChildrenVisibility(!value);
|
core.Utils.setChildrenVisibilityAnimated(this, !value);
|
||||||
};
|
};
|
||||||
|
|
||||||
mindplot.Topic.prototype.getShrinkConnector = function()
|
mindplot.Topic.prototype.getShrinkConnector = function()
|
||||||
@ -999,8 +992,8 @@ mindplot.Topic.prototype.isVisible = function(){
|
|||||||
};
|
};
|
||||||
|
|
||||||
mindplot.Topic.prototype._setRelationshipLinesVisibility = function(value){
|
mindplot.Topic.prototype._setRelationshipLinesVisibility = function(value){
|
||||||
var relationships = designer.findRelationShipsByTopicId(this.getId());
|
//var relationships = designer.findRelationShipsByTopicId(this.getId());
|
||||||
relationships.forEach(function(relationship, index){
|
this._relationships.forEach(function(relationship, index){
|
||||||
relationship.setVisibility(value);
|
relationship.setVisibility(value);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -1021,6 +1014,16 @@ mindplot.Topic.prototype._setTopicVisibility = function(value)
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mindplot.Topic.prototype.setOpacity = function(opacity){
|
||||||
|
var elem = this.get2DElement();
|
||||||
|
elem.setOpacity(opacity);
|
||||||
|
|
||||||
|
this.getShrinkConnector().setOpacity(opacity);
|
||||||
|
|
||||||
|
var textShape = this .getTextShape();
|
||||||
|
textShape.setOpacity(opacity);
|
||||||
|
};
|
||||||
|
|
||||||
mindplot.Topic.prototype._setChildrenVisibility = function(isVisible)
|
mindplot.Topic.prototype._setChildrenVisibility = function(isVisible)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -1171,7 +1174,7 @@ mindplot.Topic.prototype.setOrder = function(value)
|
|||||||
model.setOrder(value);
|
model.setOrder(value);
|
||||||
};
|
};
|
||||||
|
|
||||||
mindplot.Topic.prototype.connectTo = function(targetTopic, workspace)
|
mindplot.Topic.prototype.connectTo = function(targetTopic, workspace, isVisible)
|
||||||
{
|
{
|
||||||
core.assert(!this._outgoingLine, 'Could not connect an already connected node');
|
core.assert(!this._outgoingLine, 'Could not connect an already connected node');
|
||||||
core.assert(targetTopic != this, 'Cilcular connection are not allowed');
|
core.assert(targetTopic != this, 'Cilcular connection are not allowed');
|
||||||
@ -1180,6 +1183,8 @@ mindplot.Topic.prototype.connectTo = function(targetTopic, workspace)
|
|||||||
|
|
||||||
// Create a connection line ...
|
// Create a connection line ...
|
||||||
var outgoingLine = new mindplot.ConnectionLine(this, targetTopic);
|
var outgoingLine = new mindplot.ConnectionLine(this, targetTopic);
|
||||||
|
if(core.Utils.isDefined(isVisible))
|
||||||
|
outgoingLine.setVisibility(isVisible);
|
||||||
this._outgoingLine = outgoingLine;
|
this._outgoingLine = outgoingLine;
|
||||||
workspace.appendChild(outgoingLine);
|
workspace.appendChild(outgoingLine);
|
||||||
|
|
||||||
@ -1293,12 +1298,20 @@ mindplot.Topic.prototype.updateNode = function()
|
|||||||
var sizeHeight = textShape.getHeight();
|
var sizeHeight = textShape.getHeight();
|
||||||
var font = textShape.getFont();
|
var font = textShape.getFont();
|
||||||
var iconOffset = this.getIconOffset();
|
var iconOffset = this.getIconOffset();
|
||||||
|
var height = sizeHeight + this._offset;
|
||||||
|
var width = sizeWidth + this._offset*2 + iconOffset;
|
||||||
|
var pos = this._offset /2;
|
||||||
|
if(this.getShapeType()==mindplot.NodeModel.SHAPE_TYPE_ELIPSE){
|
||||||
|
var factor = 0.25;
|
||||||
|
height = (width*factor<height?height:width*factor);
|
||||||
|
pos = (height-sizeHeight+3)/2;
|
||||||
|
}
|
||||||
|
|
||||||
var newSize = {width:sizeWidth + this._offset*2 + iconOffset,height:sizeHeight + this._offset};
|
var newSize = {width:width,height:height};
|
||||||
this.setSize(newSize);
|
this.setSize(newSize);
|
||||||
|
|
||||||
// Positionate node ...
|
// Positionate node ...
|
||||||
textShape.setPosition(iconOffset+this._offset, this._offset / 2);
|
textShape.setPosition(iconOffset+this._offset, pos);
|
||||||
textShape.setTextSize(sizeWidth, sizeHeight);
|
textShape.setTextSize(sizeWidth, sizeHeight);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -18,33 +18,49 @@
|
|||||||
|
|
||||||
mindplot.commands.AddTopicCommand = mindplot.Command.extend(
|
mindplot.commands.AddTopicCommand = mindplot.Command.extend(
|
||||||
{
|
{
|
||||||
initialize: function(model, parentTopicId)
|
initialize: function(model, parentTopicId, animated)
|
||||||
{
|
{
|
||||||
core.assert(model, 'Model can not be null');
|
core.assert(model, 'Model can not be null');
|
||||||
this._model = model;
|
this._model = model;
|
||||||
this._parentId = parentTopicId;
|
this._parentId = parentTopicId;
|
||||||
this._id = mindplot.Command._nextUUID();
|
this._id = mindplot.Command._nextUUID();
|
||||||
|
this._animated = core.Utils.isDefined(animated)?animated:false;
|
||||||
},
|
},
|
||||||
execute: function(commandContext)
|
execute: function(commandContext)
|
||||||
{
|
{
|
||||||
// Add a new topic ...
|
// Add a new topic ...
|
||||||
var topic = commandContext.createTopic(this._model);
|
|
||||||
|
var topic = commandContext.createTopic(this._model, !this._animated);
|
||||||
|
|
||||||
// Connect to topic ...
|
// Connect to topic ...
|
||||||
if (this._parentId)
|
if (this._parentId)
|
||||||
{
|
{
|
||||||
var parentTopic = commandContext.findTopics(this._parentId)[0];
|
var parentTopic = commandContext.findTopics(this._parentId)[0];
|
||||||
commandContext.connect(topic, parentTopic);
|
commandContext.connect(topic, parentTopic, !this._animated);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var doneFn = function(){
|
||||||
// Finally, focus ...
|
// Finally, focus ...
|
||||||
topic.setOnFocus(true);
|
topic.setOnFocus(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
if(this._animated){
|
||||||
|
core.Utils.setVisibilityAnimated([topic,topic.getOutgoingLine()],true,doneFn);
|
||||||
|
} else
|
||||||
|
doneFn.attempt();
|
||||||
},
|
},
|
||||||
undoExecute: function(commandContext)
|
undoExecute: function(commandContext)
|
||||||
{
|
{
|
||||||
// Finally, delete the topic from the workspace ...
|
// Finally, delete the topic from the workspace ...
|
||||||
var topicId = this._model.getId();
|
var topicId = this._model.getId();
|
||||||
var topic = commandContext.findTopics(topicId)[0];
|
var topic = commandContext.findTopics(topicId)[0];
|
||||||
|
var doneFn = function(){
|
||||||
commandContext.deleteTopic(topic);
|
commandContext.deleteTopic(topic);
|
||||||
|
};
|
||||||
|
if(this._animated){
|
||||||
|
core.Utils.setVisibilityAnimated([topic,topic.getOutgoingLine()],false, doneFn);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
doneFn.attempt();
|
||||||
}
|
}
|
||||||
});
|
});
|
Loading…
Reference in New Issue
Block a user