Skip to content

Commit a5e5c4b

Browse files
Merge pull request #559 from pro3d-space/bugs/support-old-waypoint-traverse-files
Support old waypoint traverse files
2 parents 75e2bc5 + 9f570fa commit a5e5c4b

6 files changed

Lines changed: 53 additions & 8 deletions

File tree

Build.fs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -622,9 +622,9 @@ Target.create "CopyJRWRapper" (fun _ ->
622622

623623
Target.create "GitHubRelease" (fun _ ->
624624
let newVersion = notes.NugetVersion
625+
let tagName = "v" + newVersion
625626
try
626627
try
627-
let tagName = "v" + newVersion
628628
Branches.tag "." tagName
629629
let token =
630630
match Environment.environVarOrDefault "GH_TOKEN" "" with
@@ -633,7 +633,10 @@ Target.create "GitHubRelease" (fun _ ->
633633

634634
//let files = System.IO.Directory.EnumerateFiles("bin/publish")
635635
let release = sprintf "bin/PRo3D.Viewer-standalone.%s.zip" notes.NugetVersion
636-
let z = System.IO.Compression.ZipFile.CreateFromDirectory("bin/publish/win-x64", release)
636+
let z =
637+
if File.Exists release then
638+
File.Delete(release)
639+
System.IO.Compression.ZipFile.CreateFromDirectory("bin/publish/win-x64", release)
637640

638641
let release =
639642
GitHub.createClientWithToken token
@@ -642,11 +645,11 @@ Target.create "GitHubRelease" (fun _ ->
642645
//|> GitHub.publishDraft
643646
|> Async.RunSynchronously
644647

645-
try Branches.pushTag "." "origin" newVersion with e -> Trace.logf "could not create tag: %A" e
648+
try Branches.pushTag "." "origin" tagName with e -> Trace.logf "could not create tag: %A" e
646649

647650
with e ->
648651
Trace.logf "failed to create github release: %A" e
649-
Branches.deleteTag "." newVersion
652+
Branches.deleteTag "." tagName
650653
finally
651654
()
652655

src/PRo3D.Core/Traverse-Model.fs

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ module Traverse =
546546
let empty() = {
547547
version = current
548548
guid = Guid.NewGuid()
549-
traverseType = TraverseType.Rover
549+
traverseType = TraverseType.WayPoints
550550
showRimfaxSurfaces = true
551551
tName = ""
552552
sols = []
@@ -656,7 +656,29 @@ module Traverse =
656656
let! color = Json.readWith Ext.fromJson<ColorInput, Ext> "color"
657657
let! heightOffset = Json.tryRead "heightOffset"
658658
let! priorityEnabled = Json.tryRead "priorityEnabled"
659-
let! traverseType = Json.read "traverseType"
659+
let! readTraverseType = Json.read "traverseType"
660+
661+
let traverseType =
662+
// some legacy data have "wrong" traverse type in file. this one tries to find it out and repair if necessary
663+
// (don't know how we arrived in this situation... :/)
664+
let firstSolMetricType = sols |> List.tryHead |> Option.bind _.solMetrics
665+
let changeTraverseType = // None if no change is needed
666+
match firstSolMetricType,readTraverseType with
667+
| Some (SolMetrics.RimfaxM _), TraverseType.Rimfax -> None
668+
| Some (SolMetrics.RoverM _), TraverseType.Rover -> None
669+
| Some (SolMetrics.WaypointM _), TraverseType.WayPoints -> None
670+
| Some (SolMetrics.RimfaxM _), _ -> Some TraverseType.Rimfax
671+
| Some (SolMetrics.RoverM _), _ -> Some TraverseType.Rover
672+
| Some (SolMetrics.WaypointM _), _ -> Some TraverseType.WayPoints
673+
| None, _ -> None
674+
675+
match changeTraverseType with
676+
| None -> readTraverseType
677+
| Some inferredTraverseType ->
678+
Log.warn $"needed to change traverse type to match sols from {readTraverseType} to {inferredTraverseType} because of {firstSolMetricType} being found in first sol"
679+
inferredTraverseType
680+
681+
660682
let! showRimfaxSurfaces = Json.read "showRimfaxSurfaces"
661683
let! rimfaxRootDirectory = Json.read "rimfaxRootDirectory"
662684

src/PRo3D.Viewer/Traverse/RIMFAXTraverse.fs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,9 @@ module RimfaxTraverseApp =
264264
]
265265
]
266266
| _ ->
267+
Log.warn "[RoverTraverseApp] inconsistent traverse metrics: %A, should be rimfaxM)" (
268+
reversedSols |> List.tryHead |> Option.map (string << _.solMetrics) |> Option.defaultValue "unknown"
269+
)
267270
yield div [clazz "item"; style white] [
268271
yield div [clazz "header";] [
269272
span [] [text "Inconsistent Data"]

src/PRo3D.Viewer/Traverse/RoverTraverse.fs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ module RoverTraverseApp =
242242
]
243243
]
244244
| _ ->
245+
Log.warn "[RoverTraverseApp] inconsistent traverse metrics: %A, should be RoverM)" (
246+
reversedSols |> List.tryHead |> Option.map (string << _.solMetrics) |> Option.defaultValue "unknown"
247+
)
245248
yield div [clazz "item"; style white] [
246249
yield div [clazz "header";] [
247250
span [] [text "Inconsistent Data"]

src/PRo3D.Viewer/Traverse/WayPointsTraverse.fs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,9 @@ module WayPointsTraverseApp =
272272
]
273273
]
274274
| _ ->
275+
Log.warn "[RoverTraverseApp] inconsistent traverse metrics: %A, should be WaypointM)" (
276+
reversedSols |> List.tryHead |> Option.map (string << _.solMetrics) |> Option.defaultValue "unknown"
277+
)
275278
yield div [clazz "item"; style white] [
276279
yield div [clazz "header";] [
277280
span [] [text "Inconsistent Data"]

src/PRo3D.Viewer/TraverseApp.fs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,19 @@ module TraverseApp =
130130
| t -> failwithf "Traverse file does not define a valid traverseType. Valid types are WayPoints, Rover, Rimfax, PlannedTargets and StrategicAnnotations. The given traverseType is: %s" t
131131
Some (sols, traverseType, showLines, showText, showDots)
132132
| None ->
133-
Log.warn "[TraverseApp] Error parsing traverse %s : Missing properties" name
134-
None
133+
match traverse.features with
134+
| [] ->
135+
Log.error "[TraverseApp] Missing properties for traverse %s; Empty feature list. Not able to load traverse. " name
136+
None
137+
| h::_ ->
138+
match h.geometry with
139+
| GeoJsonGeometry.Point p ->
140+
Log.warn "[TraverseApp] Missing properties for traverse %s. Fallback waypoint traverse " name
141+
Some (WayPointsTraverseApp.parseTraverse (traverse), TraverseType.WayPoints, false, true, true)
142+
| e ->
143+
Log.warn "[TraverseApp] Missing properties for traverse %s; Features not having waypoint geometry type. Not able to load traverse. " name
144+
None
145+
135146

136147
let assignColorsToTraverse (traverses : List<string>) : List<string * C4b> =
137148
// this function is not in use at the moment

0 commit comments

Comments
 (0)