From a12052dfdddd1272416b8a8673856c68c64b5ae4 Mon Sep 17 00:00:00 2001 From: Joe Glombek Date: Tue, 8 Oct 2024 16:36:54 +0100 Subject: [PATCH] Add a Terratype to Our.Umbraco.GMaps (non-default) Migrator --- .../TerraType/TerratypeToGMapsMigrator.cs | 62 +++++++++++++++++++ .../TerratypeToOpenStreetmapMigrator.cs | 1 + 2 files changed, 63 insertions(+) create mode 100644 uSync.Migrations.Migrators/Community/TerraType/TerratypeToGMapsMigrator.cs diff --git a/uSync.Migrations.Migrators/Community/TerraType/TerratypeToGMapsMigrator.cs b/uSync.Migrations.Migrators/Community/TerraType/TerratypeToGMapsMigrator.cs new file mode 100644 index 00000000..0b3801ba --- /dev/null +++ b/uSync.Migrations.Migrators/Community/TerraType/TerratypeToGMapsMigrator.cs @@ -0,0 +1,62 @@ +using Newtonsoft.Json.Linq; + +namespace uSync.Migrations.Migrators.Community.TerraType; + +[SyncMigrator("Terratype")] +public class TerratypeToGMapsMigrator : SyncPropertyMigratorBase +{ + private const string DefaultPosition = "55.406321,10.387015"; + public override string GetEditorAlias(SyncMigrationDataTypeProperty dataTypeProperty, SyncMigrationContext context) + => "Our.Umbraco.GMaps"; + + public override object? GetConfigValues(SyncMigrationDataTypeProperty dataTypeProperty, SyncMigrationContext context) + { + var oldConfig = base.GetConfigValues(dataTypeProperty, context) as JObject; + if (oldConfig == null) return new JObject(); + + var config = JObject.FromObject(new + { + location = oldConfig.SelectToken("definition.position.datum") ?? DefaultPosition, + zoom = oldConfig.SelectToken("zoom") ?? 12, + maptype = "roadmap" + }); + + return config; + } + + public override string? GetContentValue(SyncMigrationContentProperty contentProperty, SyncMigrationContext context) + { + var oldStringValue = base.GetContentValue(contentProperty, context); + var oldValue = JObject.Parse(oldStringValue ?? "{}"); + + var zoom = oldValue.SelectToken("zoom") ?? "12"; + + var latLng = oldValue.SelectToken("position.datum") ?? DefaultPosition; + var parts = latLng.ToString().Split(','); + + + var newValue = JObject.FromObject(new + { + address = new + { + coordinates = new + { + lat = parts[0], + lng = parts[1] + } + }, + mapconfig = new + { + zoom = zoom, + maptype = "roadmap", + centerCoordinates = new + { + lat = parts[0], + lng = parts[1] + } + } + }); + + return newValue.ToString(); + } +} diff --git a/uSync.Migrations.Migrators/Community/TerraType/TerratypeToOpenStreetmapMigrator.cs b/uSync.Migrations.Migrators/Community/TerraType/TerratypeToOpenStreetmapMigrator.cs index f23fbb6a..c6f48f5c 100644 --- a/uSync.Migrations.Migrators/Community/TerraType/TerratypeToOpenStreetmapMigrator.cs +++ b/uSync.Migrations.Migrators/Community/TerraType/TerratypeToOpenStreetmapMigrator.cs @@ -5,6 +5,7 @@ namespace uSync.Migrations.Migrators.Community.TerraType; [SyncMigrator("Terratype")] +[SyncDefaultMigrator] public class TerratypeToOpenStreetmapMigrator : SyncPropertyMigratorBase { public override string GetEditorAlias(SyncMigrationDataTypeProperty dataTypeProperty, SyncMigrationContext context)