中化加油站项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

144 lines
4.0 KiB

import { TsTool } from "src/app/babylon/tool/ts-tool";
import { MarkTagPos, MarkType } from "../../data/mark/mark-data";
import { MarkNodeData, MarkPlanData } from "../../data/mark/mark-plan-data";
import { ModelInfo_mark } from "./model-info-mark";
/**
* 标绘方案数据(二级节点)
*/
export class MarkNodeInfo {
/**
* 所属的方案数据
*/
belongToPlanData: MarkPlanData;
/**
* 源数据
*/
nodeData: MarkNodeData;
/**
* 运行时的标绘数据
*/
markInfos: Map<MarkTagPos, ModelInfo_mark[]> = new Map();
currentMarkDataIndex = -1;
constructor(belongToPlanData: MarkPlanData, nodeData: MarkNodeData) {
this.belongToPlanData = belongToPlanData;
this.nodeData = nodeData;
}
/**
* 获取标绘物
* @param tagPos
* @param type
* @param id
*/
getMarkInfo(tagPos: MarkTagPos, type: MarkType, id: string) {
let result: ModelInfo_mark = null;
if (this.markInfos.has(tagPos)) {
let array = this.markInfos.get(tagPos);
for (let i = 0; i < array.length; i++) {
if (array[i].markData.key == id) {
result = array[i];
break;
}
}
}
return result;
}
/**
* 新增标绘物
* @param markInfo
* @param addToData //新增时,需要添加进数据层
*/
addMarkInfo(markInfo: ModelInfo_mark, addToData: boolean) {
if (!this.markInfos.has(markInfo.markData.tagPos)) {
this.markInfos.set(markInfo.markData.tagPos, []);
}
this.markInfos.get(markInfo.markData.tagPos).push(markInfo);
if (addToData) {
this.nodeData.getCurrentEnvironmentData().addMarkData(markInfo.markData);//修改数据层
}
}
/**
* 删除标绘物
* @param markInfo
*/
removeMarkInfo(markInfo: ModelInfo_mark) {
if (this.markInfos.has(markInfo.markData.tagPos)) {
TsTool.arrayRemove(this.markInfos.get(markInfo.markData.tagPos), markInfo);
}
this.nodeData.getCurrentEnvironmentData().removeMarkData(markInfo.markData);
markInfo.dispose();
}
/**
* 获取下一个新建标绘物的id(用于新建)
*/
getNextMarkDataId() {
//console.log(this.currentMarkDataIndex, 1);
let environmentData = this.nodeData.getCurrentEnvironmentData();
if (this.currentMarkDataIndex < 0) {
if (this.nodeData != null && environmentData.markDatas.length > 0) {
this.currentMarkDataIndex = Number(environmentData.markDatas[environmentData.markDatas.length - 1].key);
//console.log(this.currentMarkDataIndex, this.nodeData.markDatas[this.nodeData.markDatas.length - 1].key);
}
}
this.currentMarkDataIndex++;
//console.log(this.currentMarkDataIndex, "=====");
return this.currentMarkDataIndex;
}
/**
* 获取展示此节点所需要完整时间
*/
getShowTime() {
let textNum = 0;
if (this.nodeData.describe != null) {
textNum = this.nodeData.describe.length;
}
let timeScale = 1;
return textNum * timeScale;
}
/**
* 清空标绘物(表现层和逻辑层)
*/
clearAllMarkDataAndInfo() {
let currentEnvironmentData = this.nodeData.getCurrentEnvironmentData();
currentEnvironmentData.markDatas.length = 0;
this.nodeData.environmentData.length = 0;
this.nodeData.environmentData.push(currentEnvironmentData);
this.disposeInfo();
}
/**
* 只释放表现层
*/
disposeInfo() {
this.markInfos.forEach((value: ModelInfo_mark[], key: MarkTagPos, map: Map<MarkTagPos, ModelInfo_mark[]>) => {
if (value != null) {
for (let i = 0; i < value.length; i++) {
value[i].dispose();
}
}
});
this.markInfos.clear();
this.currentMarkDataIndex = -1;
}
}