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)
This commit is contained in:
torsten committed 2026-08-25 14:07:20 +02:00
1 parent 01dce5fe52
commit d5c13033e2
1792 files changed
+982018

No files matched your search

@@ -0,0 +1,16 @@
export const findMinMax = (timestamps: number[]) => {
let minTimestamp = Number.POSITIVE_INFINITY;
let maxTimestamp = Number.NEGATIVE_INFINITY;
for (const timestamp of timestamps) {
if (timestamp < minTimestamp) {
minTimestamp = timestamp;
}
if (timestamp > maxTimestamp) {
maxTimestamp = timestamp;
}
}
return { minTimestamp, maxTimestamp };
};
@@ -0,0 +1,42 @@
import ms from 'milsymbol';
import { GeoJson } from '../types/geojson';
import L from 'leaflet';
export const getIcon = (marker : GeoJson) => {
const symbolOptions: ms.SymbolOptions = {
size: 35,
sidc: marker.properties.sidic,
dtg: marker.properties.dtg || "1054",
// additionalInformation: marker.properties.additionalInformation || marker.properties.id,
// location: marker.properties.location || "Location",
// direction: marker.properties.direction || "Direction",
// speed: marker.properties.speed || "Speed",
uniqueDesignation: marker.properties.uniqueDesignation || "1",
// type: marker.properties.type || "Type",
// altitudeDepth: marker.properties.altitudeDepth || "Altitude/Depth",
// quantity: marker.properties.quantity || "Quantity",
// equipmentTeardownTime: marker.properties.equipmentTeardownTime || "Equipment Teardown Time",
// commonIdentifier: marker.properties.commonIdentifier || "Common Identifier",
};
const symbol = new ms.Symbol(symbolOptions);
const canvas = document.createElement('canvas');
const dimensions = symbol.getSize();
canvas.width = dimensions.width;
canvas.height = dimensions.height;
const ctx = canvas.getContext('2d');
if (ctx) {
ctx.drawImage(symbol.asCanvas(), 0, 0, canvas.width, canvas.height);
}
const iconUrl = canvas.toDataURL();
return L.icon({
iconUrl: iconUrl,
iconSize: [dimensions.width, dimensions.height], // Dynamische Größe verwenden
iconAnchor: [dimensions.width / 2, dimensions.height / 2],
});
}
@@ -0,0 +1,21 @@
export {};
onmessage = function (e) {
const { geoJsons, timestamp, filterParty } = e.data;
const latestById = geoJsons.reduce((acc: { [x: string]: any; }, geoJson: { properties: { id: any; timestamp: any; }; }) => {
const { id, timestamp: geoJsonTimestamp } = geoJson.properties;
const time = new Date(geoJsonTimestamp).getTime();
if (time <= timestamp && (!acc[id] || new Date(acc[id].properties.timestamp).getTime() < time)) {
acc[id] = geoJson;
}
return acc;
}, {});
const result = filterParty
? (Object.values(latestById) as { properties: any }[]).filter(({ properties }) => properties.parties === filterParty)
: Object.values(latestById);
postMessage(result);
};