Commit aa0c2a52 authored by techird's avatar techird

添加资源渲染

parent 1c1c0355
...@@ -3,8 +3,19 @@ kity.extendClass(Minder, { ...@@ -3,8 +3,19 @@ kity.extendClass(Minder, {
_initSelection: function() { _initSelection: function() {
this._selectedNodes = []; this._selectedNodes = [];
}, },
renderChangedSelection: function(changed) { renderChangedSelection: function(last) {
var current = this.getSelectedNodes();
var changed = [];
var i = 0; var i = 0;
current.forEach(function(node) {
if (last.indexOf(node) == -1) changed.push(node);
});
last.forEach(function(node) {
if (current.indexOf(node) == -1) changed.push(node);
});
while (i < changed.length) changed[i++].render(); while (i < changed.length) changed[i++].render();
}, },
getSelectedNodes: function() { getSelectedNodes: function() {
...@@ -16,25 +27,27 @@ kity.extendClass(Minder, { ...@@ -16,25 +27,27 @@ kity.extendClass(Minder, {
}, },
removeAllSelectedNodes: function() { removeAllSelectedNodes: function() {
var me = this; var me = this;
var changed = this._selectedNodes; var last = this._selectedNodes.splice(0);
this._selectedNodes = []; this._selectedNodes = [];
this.renderChangedSelection(changed); this.renderChangedSelection(last);
return this.fire('selectionclear'); return this.fire('selectionclear');
}, },
removeSelectedNodes: function(nodes) { removeSelectedNodes: function(nodes) {
var me = this; var me = this;
var last = this._selectedNodes.slice(0);
nodes = Utils.isArray(nodes) ? nodes : [nodes]; nodes = Utils.isArray(nodes) ? nodes : [nodes];
Utils.each(nodes, function(i, n) { Utils.each(nodes, function(i, n) {
var index; var index;
if ((index = me._selectedNodes.indexOf(n)) === -1) return; if ((index = me._selectedNodes.indexOf(n)) === -1) return;
me._selectedNodes.splice(index, 1); me._selectedNodes.splice(index, 1);
}); });
this.renderChangedSelection(nodes); this.renderChangedSelection(last);
return this; return this;
}, },
select: function(nodes, isSingleSelect) { select: function(nodes, isSingleSelect) {
var lastSelect = this.getSelectedNodes().slice(0);
if (isSingleSelect) { if (isSingleSelect) {
this.removeAllSelectedNodes(); this._selectedNodes = [];
} }
var me = this; var me = this;
nodes = Utils.isArray(nodes) ? nodes : [nodes]; nodes = Utils.isArray(nodes) ? nodes : [nodes];
...@@ -42,7 +55,7 @@ kity.extendClass(Minder, { ...@@ -42,7 +55,7 @@ kity.extendClass(Minder, {
if (me._selectedNodes.indexOf(n) !== -1) return; if (me._selectedNodes.indexOf(n) !== -1) return;
me._selectedNodes.push(n); me._selectedNodes.push(n);
}); });
this.renderChangedSelection(nodes); this.renderChangedSelection(lastSelect);
return this; return this;
}, },
......
...@@ -36,7 +36,7 @@ kity.extendClass(Minder, { ...@@ -36,7 +36,7 @@ kity.extendClass(Minder, {
var registered = this._renderers; var registered = this._renderers;
var renderers = []; var renderers = [];
['center', 'left', 'top', 'bottom', 'outline', 'outside'].forEach(function(section) { ['center', 'left', 'right', 'top', 'bottom', 'outline', 'outside'].forEach(function(section) {
if (registered['before' + section]) { if (registered['before' + section]) {
renderers = renderers.concat(registered['before' + section]); renderers = renderers.concat(registered['before' + section]);
} }
......
...@@ -3,7 +3,7 @@ KityMinder.registerModule('Resource', function() { ...@@ -3,7 +3,7 @@ KityMinder.registerModule('Resource', function() {
/** /**
* 自动使用的颜色序列 * 自动使用的颜色序列
*/ */
var RESOURCE_COLOR_SERIES = [200, 51, 303, 75, 157, 0, 26, 254].map(function(h) { var RESOURCE_COLOR_SERIES = [51, 303, 75, 200, 157, 0, 26, 254].map(function(h) {
return kity.Color.createHSL(h, 100, 85); return kity.Color.createHSL(h, 100, 85);
}); });
...@@ -167,7 +167,7 @@ KityMinder.registerModule('Resource', function() { ...@@ -167,7 +167,7 @@ KityMinder.registerModule('Resource', function() {
var text, rect; var text, rect;
rect = this.rect = new kity.Rect(); rect = this.rect = new kity.Rect().setRadius(4);
text = this.text = new kity.Text() text = this.text = new kity.Text()
.setFontSize(12) .setFontSize(12)
...@@ -182,27 +182,30 @@ KityMinder.registerModule('Resource', function() { ...@@ -182,27 +182,30 @@ KityMinder.registerModule('Resource', function() {
borderRadius = 4; borderRadius = 4;
var text, box, rect; var text, box, rect;
text = this.text text = this.text;
.setX(paddingX)
.setContent(resourceName)
.fill(color.dec('l', 70));
box = text.getBoundaryBox(); if (resourceName == this.lastResourceName) {
rect.setPosition(0, box.y - paddingY); box = this.lastBox;
rect.setSize(box.width + paddingX * 2, box.height + paddingY * 2);
rect = new kity.Rect( } else {
box.width + paddingX * 2,
box.height + paddingY * 2,
box.x - paddingX,
box.y - paddingY,
borderRadius);
rect.fill(color); text.setContent(resourceName);
box = text.getBoundaryBox();
this.lastResourceName = resourceName;
this.lastBox = box;
}
text.setX(paddingX).fill(color.dec('l', 70));
this.addShape(rect); rect = this.rect;
rect.bringRear(); rect.setPosition(0, box.y - paddingY);
rect.setSize(
this.width = box.width + paddingX * 2,
this.height = box.height + paddingY * 2);
rect.fill(color);
} }
}); });
...@@ -213,12 +216,49 @@ KityMinder.registerModule('Resource', function() { ...@@ -213,12 +216,49 @@ KityMinder.registerModule('Resource', function() {
base: KityMinder.Renderer, base: KityMinder.Renderer,
create: function(node) { create: function(node) {
this.container = new kity.Group();
this.overlays = []; this.overlays = [];
return new kity.Group();
}, },
update: function(node) { shouldRender: function(node) {
return node.getData('resource') && node.getData('resource').length;
},
update: function(container, node, box) {
var spaceRight = node.getStyle('space-right');
var overlays = this.overlays;
var resource = node.getData('resource');
var minder = node.getMinder();
var i, overlay, x;
x = 0;
for (i = 0; i < resource.length; i++) {
x += spaceRight;
overlay = overlays[i];
if (!overlay) {
overlay = new ResourceOverlay();
overlays.push(overlay);
container.addShape(overlay);
}
overlay.setVisible(true);
overlay.setValue(resource[i], minder.getResourceColor(resource[i]));
overlay.setTranslate(x, 0);
x += overlay.width;
}
while ((overlay = overlays[i++])) overlay.setVisible(false);
container.setTranslate(box.right, 0);
return {
x: box.right,
y: -overlays[0].height / 2,
width: x,
height: overlays[0].height
};
} }
}); });
...@@ -227,24 +267,6 @@ KityMinder.registerModule('Resource', function() { ...@@ -227,24 +267,6 @@ KityMinder.registerModule('Resource', function() {
'resource': ResourceCommand 'resource': ResourceCommand
}, },
events: {
'RenderNodeRight': function(e) {
var node = e.node;
var resource = node.getData('resource');
var content = node.getContRc();
var margin = 5;
var minder = this;
if (resource && resource.length) {
resource.forEach(function(name) {
var overlay = new ResourceOverlay(content, name, minder.getResourceColor(name));
var box = content.getBoundaryBox();
overlay.setTranslate(box.width + margin, 0);
});
}
}
},
renderers: { renderers: {
right: ResourceRenderer right: ResourceRenderer
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment