Files
qt-migration-legatus/qt5-before/dlbo/Lts/Tools/Mout/ShowVWM/3DVMModel.js
T
torstenandCopilot 7173785915 Qt6 Migration: Complete migration with DDS/RTI support and build validation
Major Changes:
- Merged latest Qt5 devel content from dlbo (292 files changed, 7 new dirs)
- Consolidated forward-declarations and include folders
- Removed unneeded modules per Niklas' repo check list

Build System Fixes:
- Fixed CMake VERSION_GREATER syntax in ParticipantManagement/CMakeLists.txt
- Added VLC packages (libvlc-dev, vlc-plugin-base) to docker_build.sh
- Added PostgreSQL dev packages (libpq-dev, postgresql-server-dev-all) to Dockerfile
- Fixed locale warnings (ANSI_X3.4-1968 → C.UTF-8)
- Fixed ArcGIS SDK path warnings when BUILD_ARCGIS=OFF

Code Generation Fixes:
- Fixed IDL enum collisions (PortType→CorePortType/DdsutPortType, PdmEventType)
- Fixed Grantlee template svc_translation.cpp.grantlee:
  - Changed {{ idl_enum.name }}_def:: to {{ idl_enum.name }}::
  - Fixed .underlying() calls for C++11 scoped enums (enum class)
- Removed generated files from repo (moc_*, *_dtc.h, *_ftc.h)

Validation:
- BUILD_RTI=ON: SUCCESS
- BUILD_RTI=OFF: SUCCESS
- C++17 standard maintained for RTI 7.7 compatibility
- Ubuntu 26.04 Docker environment verified

Remaining Warnings (expected):
- BgViewer, KDChart, KDReports, Poppler-Qt6 not found (optional features)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-15 18:20:26 +00:00

297 lines
9.0 KiB
JavaScript

class polyoli {
constructor(name) {
this.path = [];
this.graphic = null;
this.name = name;
this.alternativGraphic = null;
}
closeRing() {
this.path.push(this.path[0]);
}
}
var parser, xmlDoc, PolyArray;
var XMLFile = null;
var wallnumber = 0;
var PolygonObj = [];
var refPoint = {
y: 493081,
x: 5878329,
};
parser = new DOMParser();
var graphicLayer = null;
var PolyObjArray = [];
var selected = null;
var alternativeSymbol = {
type: "simple-fill",
color: [128, 0, 0, 0.5],
outline: {
color: [0, 0, 0],
width: 1
}
};
window.onload = function () {
document.getElementById('fileUpload').addEventListener('change', updateFile, false);
generateMap();
}
function generateMap() {
require([
"esri/Map",
"esri/views/SceneView",
"esri/layers/TileLayer",
"esri/layers/SceneLayer",
"esri/layers/GraphicsLayer",
"dojo/domReady!",
],
function (
Map,
SceneView,
TileLayer,
SceneLayer,
GraphicsLayer,
) {
map = new Map({
// basemap: "topo"
});
view = new SceneView({
container: "mapDiv",
map: map,
scale: 1000,
camera: { // autocasts as new Camera()
position: { // autocasts as new Point()
x: 8.896638,
y: 53.054441,
z: 40
}
}
});
tile = new TileLayer({
url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_WebMerc/MapServer",
})
feature = new SceneLayer({
url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/BT56_rev576/SceneServer",
});
map.add(feature);
map.add(tile);
graphicLayer = new GraphicsLayer();
map.add(graphicLayer);
view.on("click", eventHandler);
function eventHandler(event) {
view.hitTest(event).then(getGraphics);
function getGraphics(response) {
selected = response.results[0].graphic.__accessor__.store._values.attributes.name;
}
};
view.popup.on("trigger-action", function (event) {
if (event.action.id === "highlight") {
PolyObjArray.forEach(polyObj => {
if (polyObj.name == selected) {
var newGraphic = polyObj.graphic.clone();
newGraphic.symbol = alternativeSymbol;
graphicLayer.remove(polyObj.graphic);
polyObj.alternativGraphic = newGraphic;
graphicLayer.add(polyObj.alternativGraphic);
}
});
}
});
});
}
function updateFile(event) {
event.preventDefault();
XMLFile = event.target.files[0];
parseXML();
}
function parseXML() {
var file = XMLFile;
var reader = new FileReader();
reader.onload = function (event) {
readXML = event.target.result;
xmlDoc = parser.parseFromString(readXML, "application/xml");
}
reader.readAsText(file);
createModel();
}
function createModel() {
require([
"esri/geometry/projection",
],
function (
projection,
) {
projection.load().then(function () {
tile.load().then(function () {
PolyArray = Array.from(xmlDoc.getElementsByTagName("OuterWallAreaElement"));
PolyArray.forEach(polygon => {
var polyObj = new polyoli(wallnumber);
var vertexes = Array.from(polygon.children);
for (var x = 0; x < vertexes.length; x++) {
var pp = createPathPoint(Array.from(vertexes[x].children));
polyObj.path.push(pp);
}
wallnumber++;
polyObj.closeRing();
var graphic = createGraphic(polyObj);
polyObj.graphic = graphic;
PolyObjArray.push(polyObj);
});
placeAndCreateToggles();
XMLFile = null;
PolyArray = null;
})
})
})
}
function placeAndCreateToggles() {
var counter = 0;
var wallDiv = document.getElementById("wallToggle");
var checkboxes = null;
checkboxes = "<table><tr>"
PolyObjArray.forEach(wall => {
graphicLayer.add(wall.graphic);
if (counter % 4 == 0 && counter != 0) checkboxes += `</tr><tr>`;
checkboxes += `<td><div style="width:20%; display:inline-block;">${wall.name}</div><input class="wallsCheck" type="checkbox" value="${wall.name}" name="WallRequests" style="float:right;" onchange="checkBoxTrigger()"></input></td><td></td>`;
counter++;
});
checkboxes += "</table>"
wallDiv.innerHTML += checkboxes;
}
function getWkid() {
var wkid = view.spatialReference.__accessor__.store._values.wkid;
return (wkid);
}
function getSpatialRefOut() {
var spatialOut = view.spatialReference;
return spatialOut;
}
function createEsriP(vertextChildren) {
var ReturnEsriP = null;
require([
"esri/geometry/Point",
],
function (
Point,
) {
var esriP = new Point({
y: parseFloat(vertextChildren[0].innerHTML) + refPoint.x,
x: parseFloat(vertextChildren[1].innerHTML) + refPoint.y,
z: parseFloat(vertextChildren[2].innerHTML),
spatialReference: { wkid: 32632 }
})
ReturnEsriP = esriP;
})
return (ReturnEsriP);
}
function project(esriP) {
var ReturnProjection = null;
require([
"esri/geometry/projection",
],
function (
projection,
) {
var point = projection.project(esriP, getSpatialRefOut());
ReturnProjection = [point.__accessor__.store._values.x, point.__accessor__.store._values.y, point.__accessor__.store._values.z];
})
return (ReturnProjection);
}
function createGraphic(polyObj) {
var highlight = {
title: "SetPosition",
id: "highlight",
image: "https://www.ninonline.org/forum/uploads/monthly_2018_03/Uchiha-Small.png.b1e089fc70c9c965ec35c23041868b3d.png"
};
var remove = {
title: "SetPosition",
id: "place-this",
image: "https://www.ninonline.org/forum/uploads/monthly_2018_03/Uchiha-Small.png.b1e089fc70c9c965ec35c23041868b3d.png"
};
var graphic = null;
require([
"esri/Graphic",
],
function (
Graphic,
) {
var polygon = {
type: "polygon",
rings: polyObj.path,
spatialReference: { wkid: getWkid() }
};
var fillSymbol = {
type: "simple-fill",
color: [255, 255, 255, 0.5],
outline: {
color: [0, 0, 0],
width: 1
}
};
let wallAttribs = {
name: polyObj.name,
}
polygraphic = new Graphic({
geometry: polygon,
symbol: fillSymbol,
attributes: wallAttribs,
popupTemplate: {
title: "Wall",
content: [{
type: "fields",
fieldInfos: [{
fieldName: "name"
}]
}],
actions: [highlight, remove]
}
});
graphic = polygraphic;
}
)
return (graphic);
}
function createPathPoint(point) {
var tempEsriP = null;
tempEsriP = createEsriP(point);
pp = project(tempEsriP);
return (pp);
}
function checkBoxTrigger() {
graphicLayer.removeAll();
var selects = document.getElementsByName("WallRequests");
selects.forEach(select => {
if (select.checked) {
PolyObjArray.forEach(polyObj => {
if (select.value == polyObj.name) {
var newGraphic = polyObj.graphic.clone();
newGraphic.symbol = alternativeSymbol;
graphicLayer.remove(polyObj.graphic);
polyObj.alternativGraphic = newGraphic;
graphicLayer.add(polyObj.alternativGraphic);
}
});
} else {
PolyObjArray.forEach(polyObj => {
if (select.value == polyObj.name) {
graphicLayer.add(polyObj.graphic);
}
});
}
});
}