Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Tools/ArAssetsV3_Qatar/src/MountingPoint.ts
T
torsten d5c13033e2 Session 022: Migrate Lts/Tools (72 submodules) to Qt6
- Copied complete Lts/Tools directory from qt5-before to qt6-after
- Updated 32 CMakeLists.txt files (Qt5:: → Qt6::)
- Tools subdirectory already included in parent Lts/CMakeLists.txt
- All 72 tool submodules now present in qt6-migrated-legatus
- Includes: Adler, ArAssets, ConfigX, DBAdministration, DBUpdate,
  DdsView, InfrastructureManagement, and 67 more tools
- C++17 standard (RTI 7.7.0 compatibility maintained)
- Tests deferred until final validation phase

Migration progress:
✅ Lts/Application (68 files)
✅ Lts/DDS (verified Qt6-ready)
✅ Lts/Plugins (60 submodules, verified)
✅ Lts/Projects (5 submodules, verified)
✅ Lts/Proxies (13 submodules, verified)
✅ Lts/Services (47 submodules, verified)
✅ Lts/Tools (72 submodules, copied + CMake updated)
✅ Lts/Viewer (LtsFileDialog, LtsReportDisplay, SituationMap)
🟡 TetraIF (partial)
🟡 Z (partial: nglwidgets, QtSingleApplication, qsql_informix, WMS_Interface)
2026-08-25 14:07:20 +02:00

175 lines
4.9 KiB
TypeScript
Executable File

import L from "leaflet";
import Building from "./Building";
import { Helpers, _, MOBILE, $ } from "./Helpers";
import { Functions } from "./Functions";
import { DEBUG } from "./main";
import angular from "angular";
export default class MountingPoint extends L.Marker {
public Name: string = "";
public Id: number = -1;
public SupportedAssets: number[] = [];
public Level: number = -1;
public MountedAsset: number = -1;
private constructor() {
super(new L.LatLng(0, 0));
throw new Error("Use static method MountingPoint.Create() instead.");
// Don't use this.
// This is just here so you can't use the constructor from
// outside the class
}
/**
* MountingPoint factory method
*/
public static async Create(
Raw: {
id: number;
designation: string;
tag: string;
objectId: number;
levelId: number;
roomId: number;
assetId: number;
position3d: {
x: number;
y: number;
z: number;
};
supportedAssetTypeIds: number[];
},
Building: Building
): Promise<MountingPoint> {
return new Promise<MountingPoint>(async resolve => {
// Wrong building?
if (Building.Id != Raw.objectId) throw new Error("Wrong building");
let rotatedRelativePosition = Helpers.Calculations.RotatePoint(
{
x: Raw.position3d.x,
y: Raw.position3d.y
},
Helpers.Calculations.DegToRad(Building.RotationDegree)
); // Rotate mp position around building rotation degree
let temp = Object.create(Building.RefPoint);
temp.Easting += rotatedRelativePosition.x;
temp.Northing += rotatedRelativePosition.y;
let position = temp.ToLatLon();
// Add building ref point to mp relative position
let mounted = Raw.assetId != -1;
let mp = new L.Marker(new L.LatLng(position.Lat, position.Lon), {
icon: new L.Icon({
iconUrl: mounted
? "img/marker_mounted.png"
: "img/marker_default.png",
iconSize: [30, 30]
})
}) as MountingPoint; // Setup Leaflet marker
mp.Name = _(Raw.tag) ? Raw.designation : Raw.tag;
mp.SupportedAssets = Raw.supportedAssetTypeIds || [];
mp.Id = Raw.id;
mp.Level = Raw.levelId;
mp.MountedAsset = Raw.assetId;
let popup = document.createElement("iframe") as HTMLIFrameElement;
popup.src = `./popup.html?mpid=${mp.Id}&wsip=${Functions.WebSocketIp}`;
popup.style.width = "100%";
popup.style.height = "100%"
popup.style.top = "0";
popup.style.left = "0";
popup.style.border = "none";
mp.bindPopup(popup, {className: "mp-popup"});
if (DEBUG) console.log(`new MountingPoint() with ID = ${mp.Id}`);
return resolve(mp);
});
}
}
function _moreInfo(info: string) {
let popup = open("", Helpers.GenUuid()) as Window;
// <pre>
let display = popup.document.createElement("pre") as HTMLPreElement;
display.innerHTML = unescape(info);
display.style.fontSize = "15";
// <button>
let finish = popup.document.createElement("button") as HTMLButtonElement;
finish.innerHTML = "Done";
finish.setAttribute("onclick", "window.close()");
// build popup
popup.document.body.appendChild(popup.document.createElement(
"hr"
) as HTMLHRElement);
popup.document.body.appendChild(display);
popup.document.body.appendChild(popup.document.createElement(
"hr"
) as HTMLHRElement);
popup.document.body.appendChild(finish);
}
function _mount(mountingPointId: number): void {
let select = ($(`#mp-asset-select-${mountingPointId}`) as HTMLSelectElement);
let assetId = select.value;
let mounted = ((Helpers.GetScope().objects.mountingPoints as MountingPoint[]).find(mp => mp.MountedAsset == +assetId));
if (!_(mounted)) mounted?.setIcon(new L.Icon({
iconUrl:"img/marker_remounted.png",
iconSize: [30, 30]
}));
Functions.MountAsset(assetId, mountingPointId);
select.disabled = true;
let button = ($(`#mp-asset-button-${mountingPointId}`) as HTMLButtonElement);
button.innerText = "Unmount";
button.onclick = () => window.MP.Unmount(mountingPointId);
let mp = ((Helpers.GetScope().objects.mountingPoints as MountingPoint[]).find(mp => mp.Id == mountingPointId) as MountingPoint);
mp.setIcon(new L.Icon({
iconUrl:"img/marker_mounted.png",
iconSize: [30, 30]
}));
mp.MountedAsset = +assetId;
}
function _unmount(mountingPointId: number): void {
Functions.UnmountAsset(mountingPointId);
let select = ($(`#mp-asset-select-${mountingPointId}`) as HTMLSelectElement);
select.disabled = false;
let button = ($(`#mp-asset-button-${mountingPointId}`) as HTMLButtonElement);
button.innerText = "Mount";
button.onclick = () => window.MP.Mount(mountingPointId);
let mp = ((Helpers.GetScope().objects.mountingPoints as MountingPoint[]).find(mp => mp.Id == mountingPointId) as MountingPoint);
mp.setIcon(new L.Icon({
iconUrl:"img/marker_default.png",
iconSize: [30, 30]
}));
mp.MountedAsset = -1;
}
//#region
declare global {
interface Window {
MP: {
MoreInfo: (info: string) => void,
Mount: (id: number) => void,
Unmount: (id: number) => void
};
}
}
window.MP = window.MP || {
MoreInfo: _moreInfo,
Mount: _mount,
Unmount: _unmount
};
//#endregion