增加可控制可视化结构的显示/隐藏接口

This commit is contained in:
黎智洲
2021-06-25 00:28:49 +08:00
parent efe430ca48
commit be8e703fe4
6 changed files with 71 additions and 30 deletions
+6 -4
View File
@@ -1,6 +1,6 @@
import { Engine } from "../../engine";
import { Model, Pointer } from "../../Model/modelData";
import { AnimationOptions, InteractionOptions, LayoutGroupOptions, LayoutOptions } from "../../options";
import { AnimationOptions, InteractionOptions, LayoutGroupOptions } from "../../options";
import { SV } from "../../StructV";
import { Animations } from "../animation";
import { g6Behavior, Renderer } from "../renderer";
@@ -138,9 +138,11 @@ export class Container {
duration: this.animationsOptions.duration,
timingFunction: this.animationsOptions.timingFunction,
callback: () => {
this.renderer.removeModel(item);
item.renderG6Item = item.G6Item = null;
if(item.isLeak === false) {
this.renderer.removeModel(item);
item.renderG6Item = item.G6Item = null;
}
counter++;
if(counter === removeModels.length) {
+30 -21
View File
@@ -102,30 +102,37 @@ export class ViewManager {
const leakModelList: Model[] = prevModelList.filter(item => !modelList.find(n => n.id === item.id)),
elements: Element[] = <Element[]>leakModelList.filter(item => item instanceof Element && item.freed === false),
links: Link[] = <Link[]>leakModelList.filter(item => item instanceof Link),
elementIds: string[] = [];
elementIds: string[] = [],
res: Model[] = [];
elements.forEach(item => {
elementIds.push(item.id);
item.set('style', {
fill: '#ccc'
});
elements.forEach(item => {
elementIds.push(item.id);
item.set('style', {
fill: '#ccc'
});
});
for(let i = 0; i < links.length; i++) {
let sourceId = links[i].element.id,
targetId = links[i].target.id;
links[i].set('style', {
stroke: '#333'
});
for(let i = 0; i < links.length; i++) {
let sourceId = links[i].element.id,
targetId = links[i].target.id;
links[i].set('style', {
stroke: '#333'
});
if(elementIds.find(item => item === sourceId) === undefined || elementIds.find(item => item === targetId) === undefined) {
links.splice(i, 1);
i--;
}
if(elementIds.find(item => item === sourceId) === undefined || elementIds.find(item => item === targetId) === undefined) {
links.splice(i, 1);
i--;
}
}
return [...elements, ...links];
res.push(...elements, ...links);
res.map(item => {
item.isLeak = true;
});
return res;
}
// ----------------------------------------------------------------------------------------------
@@ -206,12 +213,14 @@ export class ViewManager {
if(this.leakContainer) {
this.mainContainer.afterRemoveModels(() => {
this.leakContainer.render(leakModelList);
});
this.leakContainer.render(leakModelList);
if(leakModelList.length) {
EventBus.emit('onLeak', leakModelList);
}
});
}
this.prevModelList = modelList;