|
|
|
import { HttpErrorResponse } from "@angular/common/http";
|
|
|
|
import { Vector3 } from "@babylonjs/core";
|
|
|
|
import { MeshBuilder } from "@babylonjs/core/Meshes/meshBuilder";
|
|
|
|
import { PolygonMeshBuilder } from "@babylonjs/core/Meshes/polygonMesh";
|
|
|
|
import { plainToClass } from "class-transformer";
|
|
|
|
import { InstitutionData, NormalData } from "../../model/data/institution/institution-data";
|
|
|
|
import { InsitutionDataSimple } from "../../model/data/institution/institution-data-simple";
|
|
|
|
import { BabylonTool } from "../../tool/babylon-tool";
|
|
|
|
import { InstitutionCreateWindow } from "../../view/institution/institution-create-window";
|
|
|
|
import { InstitutionSelectWindow } from "../../view/institution/institution-select-window";
|
|
|
|
import { TopbarWindow } from "../../view/topbar-window/topbar-window";
|
|
|
|
|
|
|
|
import { DataManager } from "../data-manager";
|
|
|
|
import { SceneManager } from "../scene-manager";
|
|
|
|
import { ServeManager } from "../serve-manager";
|
|
|
|
import { UIManager } from "../ui-manager";
|
|
|
|
import { MainStatus } from "./main-status";
|
|
|
|
import { StatusBase, StatusManager } from "./status-manager";
|
|
|
|
|
|
|
|
export class LoginSatus extends StatusBase {
|
|
|
|
|
|
|
|
institutionSelectWindow: InstitutionSelectWindow;
|
|
|
|
|
|
|
|
institutionCreateWindow: InstitutionCreateWindow;
|
|
|
|
|
|
|
|
institutionList: InsitutionDataSimple[];//单位简易信息列表
|
|
|
|
|
|
|
|
|
|
|
|
//#region 前端对接
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 新建单位
|
|
|
|
* @param insData 新的单位信息
|
|
|
|
*/
|
|
|
|
createInsitution(key: string, name: string, onSuccess?: (insDataSimple: InsitutionDataSimple) => void) {
|
|
|
|
|
|
|
|
if (key == null) {
|
|
|
|
console.error("创建单位key为null");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
let insData = new InstitutionData();
|
|
|
|
insData.normalData = new NormalData(key, name);
|
|
|
|
|
|
|
|
this.saveNewIns(this, insData, key, onSuccess);
|
|
|
|
}
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region 外部方法
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 获取单位简易信息列表
|
|
|
|
* @param onSuccess 获取成功的回调
|
|
|
|
*/
|
|
|
|
getInstitutionListFromServe(onSuccess?: (result: InsitutionDataSimple[], data?: any) => void, onFail?: (error: string) => void) {
|
|
|
|
let debugList: any | InsitutionDataSimple[] = [];
|
|
|
|
// let testIns1 = new InsitutionDataSimple();
|
|
|
|
// testIns1.key = "test";
|
|
|
|
// testIns1.name = "测试单位1";
|
|
|
|
// debugList.push(testIns1);
|
|
|
|
ServeManager.instance.getInstitutionData("InsList", (key, data) => {
|
|
|
|
debugList = plainToClass(InsitutionDataSimple, data);
|
|
|
|
this.institutionList = debugList;
|
|
|
|
if (onSuccess) {
|
|
|
|
onSuccess(debugList, data);
|
|
|
|
}
|
|
|
|
}, (key: string, error: any) => {
|
|
|
|
console.error("获取单位列表失败");
|
|
|
|
console.log(error);
|
|
|
|
if (error instanceof HttpErrorResponse && error.status === 404) {
|
|
|
|
//数据库没有数据,新建
|
|
|
|
this.institutionList = [];
|
|
|
|
if (onSuccess) {
|
|
|
|
onSuccess(this.institutionList, this.institutionList);
|
|
|
|
}
|
|
|
|
console.log("新建数据列表");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if (onFail) {
|
|
|
|
onFail(error);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return;
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 选择单位完成,初始化数据(向服务器请求完整数据)
|
|
|
|
* @param simpleData 选择的单位
|
|
|
|
*/
|
|
|
|
onSelectInsSuccess(simpleData: InsitutionDataSimple) {
|
|
|
|
let status: LoginSatus = StatusManager.getStatus<LoginSatus>(LoginSatus);
|
|
|
|
if (status.institutionSelectWindow != null) {
|
|
|
|
UIManager.close(status.institutionSelectWindow);
|
|
|
|
status.institutionSelectWindow = null;
|
|
|
|
}
|
|
|
|
|
|
|
|
DataManager.init(simpleData, (resultkey) => {
|
|
|
|
StatusManager.enterStatus<MainStatus>(MainStatus);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
|
|
|
|
//#region 生命周期
|
|
|
|
//初始化
|
|
|
|
onCreate() {
|
|
|
|
super.onCreate();
|
|
|
|
|
|
|
|
}
|
|
|
|
//进入状态
|
|
|
|
onEnter() {
|
|
|
|
super.onEnter();
|
|
|
|
|
|
|
|
console.log("进入 logins");
|
|
|
|
|
|
|
|
BabylonTool.importMeshSync("", "assets/mesh/outdoor/ZhuTi/ZhuTi.gltf", undefined, undefined, undefined, (meshes) => {
|
|
|
|
console.log("加载完成", meshes);
|
|
|
|
});
|
|
|
|
|
|
|
|
let l_xy = 100;
|
|
|
|
let result = [new Vector3(l_xy, l_xy), new Vector3(l_xy, -l_xy), new Vector3(-l_xy, -l_xy), new Vector3(-l_xy, l_xy)];
|
|
|
|
|
|
|
|
let poly_tri = new PolygonMeshBuilder("polytri", result, SceneManager.Instance.scene);
|
|
|
|
let mesh = poly_tri.build(true, 0);
|
|
|
|
mesh.position.y = -10;
|
|
|
|
|
|
|
|
console.log(poly_tri);
|
|
|
|
//UIManager.open<TopbarWindow>(TopbarWindow);
|
|
|
|
// this.openSelectWindow();//可以开启选择、新建单位
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
//退出状态
|
|
|
|
onExit() {
|
|
|
|
|
|
|
|
super.onEnter();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//开启选择界面
|
|
|
|
openSelectWindow() {
|
|
|
|
console.log("=======开启选择界面");
|
|
|
|
this.institutionSelectWindow = UIManager.open<InstitutionSelectWindow>(InstitutionSelectWindow);
|
|
|
|
console.log(this.institutionSelectWindow);
|
|
|
|
let status = this;
|
|
|
|
this.institutionSelectWindow.getInsList(status.onSelectInsSuccess);
|
|
|
|
}
|
|
|
|
|
|
|
|
//关闭选择界面
|
|
|
|
closeSelectWindow() {
|
|
|
|
if (this.institutionSelectWindow != null) {
|
|
|
|
UIManager.close(this.institutionSelectWindow);
|
|
|
|
this.institutionSelectWindow = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//新建完成
|
|
|
|
onCreateInsSuccess(insData: InsitutionDataSimple) {
|
|
|
|
|
|
|
|
this.closeCreateWindow();
|
|
|
|
|
|
|
|
let isOverWrite = false;
|
|
|
|
for (let i = 0; i < this.institutionList.length; i++) {
|
|
|
|
if (this.institutionList[i].key == insData.key) {
|
|
|
|
this.institutionList[i].name = insData.name;
|
|
|
|
isOverWrite = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!isOverWrite) {
|
|
|
|
this.institutionList.push(insData);
|
|
|
|
}
|
|
|
|
|
|
|
|
let status = this;
|
|
|
|
|
|
|
|
ServeManager.instance.saveInstitutionListData(this.institutionList, () => {
|
|
|
|
//进入新单位
|
|
|
|
status.onSelectInsSuccess(insData);
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
//#region babylonGUI 新建单位
|
|
|
|
//开启新建界面
|
|
|
|
onNewIns() {
|
|
|
|
this.closeSelectWindow();
|
|
|
|
|
|
|
|
this.institutionCreateWindow = UIManager.open<InstitutionCreateWindow>(InstitutionCreateWindow);
|
|
|
|
let status = this;
|
|
|
|
this.institutionCreateWindow.startCreate();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//关闭创建界面
|
|
|
|
closeCreateWindow() {
|
|
|
|
if (this.institutionCreateWindow != null) {
|
|
|
|
UIManager.close(this.institutionCreateWindow);
|
|
|
|
}
|
|
|
|
this.institutionCreateWindow = null;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//保存新单位信息至服务器
|
|
|
|
saveNewIns(status: LoginSatus, insData: InstitutionData, key: string, onSuccess?: (insDataSimple: InsitutionDataSimple) => void) {
|
|
|
|
ServeManager.instance.saveInstitutionData(insData, key, (key, result) => {
|
|
|
|
console.log("在服务器新建单位" + key);
|
|
|
|
let insDataSimple = new InsitutionDataSimple();
|
|
|
|
insDataSimple.key = key;
|
|
|
|
insDataSimple.name = insData.normalData.name;
|
|
|
|
status.onCreateInsSuccess(insDataSimple);
|
|
|
|
if (onSuccess != null) {
|
|
|
|
onSuccess(insDataSimple);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//#endregion
|
|
|
|
|
|
|
|
}
|