中化加油站项目
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.
 
 
 
 
 
 

78 lines
2.3 KiB

import { Type } from "class-transformer";
import { TsTool } from "src/assets/babylon/tool/ts-tool";
import { ModelData } from "./model-data";
import { FacilityType, ModelData_facility } from "./model-data-facility";
//模型编辑信息(外观、环境、室内分层)
export class ModelEditData {
index: number = 0; //楼层、顺序用于ui上排序
isRefugeFloor: boolean = false;//避难层
@Type(() => ModelData)
modelData: ModelData; //模型信息
@Type(() => FacilityDatasByType)
facilities: FacilityDatasByType[] = []; //含有哪些设备
constructor() {
// this.belongToBuilding = belongToBuilding;
this.modelData = new ModelData();
this.index = 0;
}
//添加设备
addFacility(modelData_facility: ModelData_facility) {
let facility = this.getFacilitiesByType(modelData_facility.facilityType);
if (facility == null) {
let newDataByType = new FacilityDatasByType(modelData_facility.facilityType);
this.facilities.push(newDataByType);
facility = newDataByType.facilities;
}
facility.push(modelData_facility);
}
//移除设备
removeFacility(modelData_facility: ModelData_facility) {
let facility = this.getFacilitiesByType(modelData_facility.facilityType);
if (facility == null) {
console.error(this.modelData.key + "移除设备出错" + modelData_facility.key);
}
else {
TsTool.arrayRemove(facility, modelData_facility);
}
}
/**
* 根据设备类型获取设备数据
* @param facilityType 设备类型
*/
getFacilitiesByType(facilityType: FacilityType) {
let result: ModelData_facility[] = null;
for (let i = 0; i < this.facilities.length; i++) {
if (this.facilities[i].facilityType == facilityType) {
result = this.facilities[i].facilities;
return result;
}
}
return result;
}
}
/**
* 根据类型储存的设备数据
*/
export class FacilityDatasByType {
facilityType: FacilityType;
@Type(() => ModelData_facility)
facilities: ModelData_facility[] = []; //含有哪些设备
constructor(type: FacilityType) {
this.facilityType = type;
this.facilities = [];
}
}