From b7cef780d3da4416ae6b1b3514a802c4317f6d32 Mon Sep 17 00:00:00 2001 From: timpurdum Date: Mon, 23 Feb 2026 22:23:08 -0600 Subject: [PATCH 1/4] FeatureTable support and related bug fixes --- .../wwwroot/css/site.css | 134 +++++++++++------- .../Components/Layers/CSVLayer.cs | 4 +- .../Components/Layers/CSVLayer.gb.cs | 2 +- .../Components/Layers/FeatureLayer.cs | 3 + .../Components/Layers/FeatureLayer.gb.cs | 2 +- .../Components/Layers/GeoJSONLayer.cs | 2 + .../Components/Layers/GeoJSONLayer.gb.cs | 2 +- .../Components/Layers/ImageryLayer.cs | 4 +- .../Components/Layers/ImageryLayer.gb.cs | 2 +- .../Components/Layers/Sublayer.cs | 5 +- .../Components/Layers/WFSLayer.cs | 3 + .../Components/Layers/WFSLayer.gb.cs | 2 +- .../Components/Widgets/Widget.razor.cs | 82 ++++++++++- .../Events/DomPointerEvent.cs | 68 ++++++++- .../Interfaces/IFeatureTableWidgetLayer.cs | 12 ++ ...s.gb.cs => IFeatureTableWidgetLayer.gb.cs} | 2 +- .../Interfaces/IFeatureTableWidgetLayers.cs | 7 - .../Serialization/SizeVariableConverter.cs | 10 +- 18 files changed, 273 insertions(+), 73 deletions(-) create mode 100644 src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.cs rename src/dymaptic.GeoBlazor.Core/Interfaces/{IFeatureTableWidgetLayers.gb.cs => IFeatureTableWidgetLayer.gb.cs} (91%) delete mode 100644 src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.cs diff --git a/samples/dymaptic.GeoBlazor.Core.Sample.Shared/wwwroot/css/site.css b/samples/dymaptic.GeoBlazor.Core.Sample.Shared/wwwroot/css/site.css index 04d1c2425..fd39ef202 100644 --- a/samples/dymaptic.GeoBlazor.Core.Sample.Shared/wwwroot/css/site.css +++ b/samples/dymaptic.GeoBlazor.Core.Sample.Shared/wwwroot/css/site.css @@ -7,43 +7,43 @@ } body { -background-color: var(--background-grey-1); + background-color: var(--background-grey-1); } footer { -display: none; + display: none; } summary { -display: list-item; -list-style-position: outside; + display: list-item; + list-style-position: outside; } summary a { -margin-left: -2rem; + margin-left: -2rem; } .esri-feature-templates { -background: unset; + background: unset; } .esri-feature-form { background-color: var(--background-grey-1); } -.esri-widget { -color: unset; +.esri-widget:not(.esri-feature-table) { + color: unset; } .esri-button { -color: unset; -background-color: unset; -border: 0.125rem solid transparent; + color: unset; + background-color: unset; + border: 0.125rem solid transparent; } .esri-button:hover { -color: unset; -border-color: var(--geoblazor-accent-hover); + color: unset; + border-color: var(--geoblazor-accent-hover); } :root { @@ -55,23 +55,25 @@ border-color: var(--geoblazor-accent-hover); --calcite-input-actions-icon-color: var(--text-emphasis); --calcite-label-text-color: var(--text-emphasis); --calcite-list-label-text-color: var(--text-emphasis); + --calcite-color-text-2: var(--text-emphasis); + --calcite-color-foreground-2: var(--background-grey-3); } .nav-link { -color: unset; + color: unset; } .nav-link:hover { -color: unset; + color: unset; } .nav-list-link .oi { -top: 2px; -height: 18px; + top: 2px; + height: 18px; } .container { -background-color: unset; + background-color: unset; } /*** TYPOGRAPHY ***/ @@ -168,16 +170,38 @@ i.icon { background-position: center; } -i.icon.plus {background-image: url('../images/icons/plus.svg');} -i.icon.check {background-image: url('../images/icons/check.svg');} -i.icon.close--accent {background-image: url('../images/icons/close-accent.svg');} -i.icon.close {background-image: url('../images/icons/close.svg');} -i.icon.info {background-image: url('../images/icons/info.svg');} -i.icon.edit {background-image: url('../images/icons/edit.svg');} -i.icon.save {background-image: url('../images/icons/save.svg');} +i.icon.plus { + background-image: url('../images/icons/plus.svg'); +} + +i.icon.check { + background-image: url('../images/icons/check.svg'); +} + +i.icon.close--accent { + background-image: url('../images/icons/close-accent.svg'); +} + +i.icon.close { + background-image: url('../images/icons/close.svg'); +} + +i.icon.info { + background-image: url('../images/icons/info.svg'); +} + +i.icon.edit { + background-image: url('../images/icons/edit.svg'); +} + +i.icon.save { + background-image: url('../images/icons/save.svg'); +} @media (prefers-color-scheme: light) { - i.icon.info {background-image: url('../images/icons/info.svg');} + i.icon.info { + background-image: url('../images/icons/info.svg'); + } } .error { @@ -193,11 +217,11 @@ hr { /*** CONTROLS ***/ -body { /* body tag added to help overwrite Bootstrap */ +body { /* body tag added to help overwrite Bootstrap */ text-wrap: pretty; color: var(--text); - + .btn { color: var(--text-button); font-family: 'Aller', 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; @@ -248,7 +272,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-primary:active, .btn-primary:focus, .btn-primary:focus-visible, - :not(.btn-check)+.btn.btn-primary:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-primary:active, /* Bootstrap override */ .btn-primary:first-child:active { background-color: var(--geoblazor-primary-hover); } @@ -261,7 +285,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-secondary:active, .btn-secondary:focus, .btn-secondary:focus-visible, - :not(.btn-check)+.btn.btn-secondary:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-secondary:active, /* Bootstrap override */ .btn-secondary:first-child:active { background-color: var(--geoblazor-secondary-hover); } @@ -274,7 +298,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-accent:active, .btn-accent:focus, .btn-accent:focus-visible, - :not(.btn-check)+.btn.btn-accent:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-accent:active, /* Bootstrap override */ .btn-accent:first-child:active { background-color: var(--geoblazor-accent-hover); } @@ -288,7 +312,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-gradient:active, .btn-gradient:focus, .btn-gradient:focus-visible, - :not(.btn-check)+.btn.btn-gradient:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-gradient:active, /* Bootstrap override */ .btn-gradient:first-child:active { background-color: unset; background: var(--torchy-gradient-horizontal-hover); @@ -306,7 +330,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-gradient-dark:active, .btn-gradient-dark:focus, .btn-gradient-dark:focus-visible, - :not(.btn-check)+.btn.btn-gradient-dark:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-gradient-dark:active, /* Bootstrap override */ .btn-gradient-dark:first-child:active { background: linear-gradient(var(--geoblazor-gradient-dark-hover), var(--geoblazor-gradient-dark-hover)) padding-box, var(--torchy-gradient-horizontal-hover) border-box; @@ -319,7 +343,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-gradient-dark:active, .btn-gradient-dark:focus, .btn-gradient-dark:focus-visible, - :not(.btn-check)+.btn.btn-gradient-dark:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-gradient-dark:active, /* Bootstrap override */ .btn-gradient-dark:first-child:active { color: var(--geoblazor-primary); } @@ -336,7 +360,7 @@ body { /* body tag added to help overwrite Bootstrap */ .btn-danger:active, .btn-danger.btn-small:active, .btn-danger:focus, .btn-danger.btn-small:focus, .btn-danger:focus-visible, .btn-danger.btn-small:focus-visible, - :not(.btn-check)+.btn.btn-danger:active, /* Bootstrap override */ + :not(.btn-check) + .btn.btn-danger:active, /* Bootstrap override */ .btn-danger:first-child:active, .btn-danger.btn-small:first-child:active { background-color: var(--error); } @@ -354,9 +378,9 @@ body { /* body tag added to help overwrite Bootstrap */ } .spaced-row { - margin: 1rem 0; - display: flex; - flex-direction: row; + margin: 1rem 0; + display: flex; + flex-direction: row; flex-wrap: wrap; justify-content: space-evenly; align-items: center; @@ -418,7 +442,7 @@ body { /* body tag added to help overwrite Bootstrap */ /*** INPUT FIELDS ***/ -body { /* body tag added to help overwrite Bootstrap */ +body { /* body tag added to help overwrite Bootstrap */ input, select, @@ -440,7 +464,7 @@ body { /* body tag added to help overwrite Bootstrap */ padding: 0.5rem 2rem; min-width: 8rem; } - + input:not([type="checkbox"]) { padding: 0.5rem 2rem; min-width: 8rem; @@ -450,7 +474,7 @@ body { /* body tag added to help overwrite Bootstrap */ background-color: var(--background-grey-2); color: var(--text-emphasis); } - + select optgroup { background-color: var(--background-grey-3); color: var(--text-emphasis); @@ -533,6 +557,7 @@ form { align-items: center; gap: 0.25rem; } + .form-group__tooltip-field i.icon { width: 2rem; height: 2rem; @@ -567,13 +592,16 @@ body { border: solid transparent; border-width: 0 0 0.125rem; } + td, th { padding: 0.65rem; } + th { color: var(--text-emphasis); font-size: 1.25rem; } + td { color: var(--text); } @@ -613,7 +641,6 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { } - #blazor-error-ui { background: var(--background-grey-2); color: var(--geoblazor-accent); @@ -648,14 +675,17 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { width: 12px; height: 12px; } + ::-webkit-scrollbar-track { background: var(--background-grey-2); border-radius: 6px; } + ::-webkit-scrollbar-thumb { background: var(--background-grey-3); border-radius: 6px; } + ::-webkit-scrollbar-thumb:hover { background: var(--background-grey-4); } @@ -802,7 +832,7 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { height: 6rem; } -.side-bar>hr { +.side-bar > hr { border-bottom: 0.25rem solid var(--geoblazor-primary); width: calc(100% - 2rem); margin: 0 1rem; @@ -836,7 +866,7 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { height: 100%; width: calc(100% - 3.5rem); background-size: contain; - background-repeat: no-repeat; + background-repeat: no-repeat; background-position: left center; background-image: url('../images/GeoBlazor_by_dymaptic-Logo-400px.webp'); } @@ -979,9 +1009,9 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { .navbar__logo { background-image: url('../images/GeoBlazor_by_dymaptic-Logo-400px-dark.webp'); } - + .side-bar { - background: linear-gradient(var(--background-grey-1), var(--background-grey-1)) padding-box, + background: linear-gradient(var(--background-grey-1), var(--background-grey-1)) padding-box, var(--geoblazor-gradient-vertical) border-box; } @@ -992,7 +1022,7 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { .nav-list .nav-list-item:has(.nav-list-link.active) { background-color: var(--background-grey-4); } - + .oi img:not(.pro .oi img) { filter: invert(1); } @@ -1012,7 +1042,7 @@ a:not([href]):not([class]), a:not([href]):not([class]):hover { .dymaptic-branding { margin: 0.5rem; - top: -2rem!important; + top: -2rem !important; } .instructions { @@ -1074,7 +1104,7 @@ input:checked[type=checkbox] { .form-check-input:focus[type=checkbox] { border-color: var(--geoblazor-accent-emphasis); - box-shadow: 0 0 0 0.25rem + box-shadow: 0 0 0 0.25rem } .form-check-input:hover[type=checkbox] { @@ -1145,15 +1175,15 @@ input[type=radio] { input[type="text"], input[type="number"] { width: 5.5rem; } - + .links-div { flex-direction: column; } - + .spaced-row { flex-direction: column; } - + body { .btn { padding: 1rem; diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.cs index 4ed02aa74..c596e56b6 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.cs @@ -6,7 +6,9 @@ public partial class CSVLayer : Layer, IFeatureReductionLayer, IPopupTemplateLay /// public override LayerType Type => LayerType.CSV; - + + /// + public string FeatureTableLayerType => Type.ToString(); /// /// A copyright string to identify ownership of the data. diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.gb.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.gb.cs index 7e7ad3164..f29243320 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/CSVLayer.gb.cs @@ -11,7 +11,7 @@ public partial class CSVLayer : IBlendLayer, IDisplayFilteredLayer, IFeatureEffectLayer, IFeatureSetLayer, - IFeatureTableWidgetLayers, + IFeatureTableWidgetLayer, IOrderedLayer, IScaleRangeLayer, ITemporalLayer, diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.cs index dc4b3621e..95b19e5cd 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.cs @@ -78,6 +78,9 @@ public partial class FeatureLayer : Layer, IFeatureReductionLayer, IPopupTemplat /// public override LayerType Type => LayerType.Feature; + + /// + public string FeatureTableLayerType => Type.ToString(); /// /// Configures the method for reducing the number of point features in the view. diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.gb.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.gb.cs index 81f773d21..84285a84d 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/FeatureLayer.gb.cs @@ -16,7 +16,7 @@ public partial class FeatureLayer : IAPIKeyMixin, IDisplayFilteredLayer, IFeatureEffectLayer, IFeatureSetLayer, - IFeatureTableWidgetLayers, + IFeatureTableWidgetLayer, IFeatureTemplatesViewModelLayers, IFeatureTemplatesWidgetLayers, IInputBaseLayers, diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.cs index 952703431..4b72ce6fe 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.cs @@ -7,6 +7,8 @@ public partial class GeoJSONLayer : Layer, IFeatureReductionLayer, IPopupTemplat /// public override LayerType Type => LayerType.GeoJSON; + /// + public string FeatureTableLayerType => Type.ToString(); /// /// A copyright string to identify ownership of the data. diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.gb.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.gb.cs index bb805ab27..fb368d0f3 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/GeoJSONLayer.gb.cs @@ -11,7 +11,7 @@ public partial class GeoJSONLayer : IBlendLayer, IDisplayFilteredLayer, IFeatureEffectLayer, IFeatureSetLayer, - IFeatureTableWidgetLayers, + IFeatureTableWidgetLayer, IFeatureTemplatesViewModelLayers, IFeatureTemplatesWidgetLayers, IInputBaseLayers, diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.cs index 147f211de..df471aa04 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.cs @@ -5,7 +5,9 @@ public partial class ImageryLayer : Layer /// public override LayerType Type => LayerType.Imagery; - + /// + public string FeatureTableLayerType => Type.ToString(); + /// /// The tiling scheme information for the layer. /// diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.gb.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.gb.cs index 298f9573c..0da4b248f 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/ImageryLayer.gb.cs @@ -10,7 +10,7 @@ namespace dymaptic.GeoBlazor.Core.Components.Layers; /// public partial class ImageryLayer : IBlendLayer, ICustomParametersMixin, - IFeatureTableWidgetLayers, + IFeatureTableWidgetLayer, IOperationalLayer, IPortalLayer, IRasterPresetRendererMixin, diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/Sublayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/Sublayer.cs index 51eeef785..e33250c1d 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/Sublayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/Sublayer.cs @@ -1,7 +1,10 @@ namespace dymaptic.GeoBlazor.Core.Components.Layers; -public partial class Sublayer : MapComponent, IPopupTemplateLayer +public partial class Sublayer : MapComponent, IPopupTemplateLayer, IFeatureTableWidgetLayer { + /// + public string FeatureTableLayerType => nameof(Sublayer); + /// /// A SQL where clause used to filter features in the image. Only the features that satisfy the definition expression are displayed in the View. Definition expressions may be set when a Sublayer is constructed prior to it loading in the view or after it has been added to the MapImageLayer. To see if you can use this property, check the supportsSublayerDefinitionExpression property of MapImageLayer.capabilities. /// diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.cs index 676af5110..862a0ba1c 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.cs @@ -4,6 +4,9 @@ public partial class WFSLayer { // Add custom code to this file to override generated code + /// + public string FeatureTableLayerType => Type.ToString(); + /// public override async Task RegisterChildComponent(MapComponent child) { diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.gb.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.gb.cs index 48534514e..acd5a77f7 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/WFSLayer.gb.cs @@ -13,7 +13,7 @@ public partial class WFSLayer : Layer, IFeatureEffectLayer, IFeatureReductionLayer, IFeatureSetLayer, - IFeatureTableWidgetLayers, + IFeatureTableWidgetLayer, IOperationalLayer, IOrderedLayer, IPortalLayer, diff --git a/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs b/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs index 51d291f2c..08ae283ef 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs @@ -417,10 +417,86 @@ public override async Task SetParametersAsync(ParameterView parameters) continue; } - if (!PreviousParameters.TryGetValue(kvp.Key, out object? previousValue) - || (!kvp.Value?.Equals(previousValue) ?? true)) + if (!PreviousParameters.TryGetValue(kvp.Key, out object? previousValue)) { - await UpdateWidget(); + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + + Type paramType = previousValue!.GetType(); + + if (paramType.IsArray) + { + Array prevArray = (Array)previousValue; + Array currArray = (Array)kvp.Value!; + + if (prevArray.Length != currArray.Length) + { + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + + for (int i = 0; i < prevArray.Length; i++) + { + if (!Equals(prevArray.GetValue(i), currArray.GetValue(i))) + { + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + } + } + else if (paramType.IsGenericType) + { + ICollection prevCollection = (ICollection)previousValue; + ICollection currCollection = (ICollection)kvp.Value!; + + if (prevCollection.Count != currCollection.Count) + { + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + + IEnumerator prevEnumerator = prevCollection.GetEnumerator(); + using var prevEnumerator1 = prevEnumerator as IDisposable; + IEnumerator currEnumerator = currCollection.GetEnumerator(); + using var currEnumerator1 = currEnumerator as IDisposable; + + while (prevEnumerator.MoveNext() && currEnumerator.MoveNext()) + { + if (!Equals(prevEnumerator.Current, currEnumerator.Current)) + { + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + } + } + else if (!kvp.Value?.Equals(previousValue) ?? true) + { + if (MapRendered) + { + await UpdateWidget(); + } + break; } } diff --git a/src/dymaptic.GeoBlazor.Core/Events/DomPointerEvent.cs b/src/dymaptic.GeoBlazor.Core/Events/DomPointerEvent.cs index e9ddd0b1d..659813c45 100644 --- a/src/dymaptic.GeoBlazor.Core/Events/DomPointerEvent.cs +++ b/src/dymaptic.GeoBlazor.Core/Events/DomPointerEvent.cs @@ -175,4 +175,70 @@ bool ShiftKey /// /// Interface for DOM UI events (keyboard, mouse, touch). /// -public interface IDomUiEvent; \ No newline at end of file +[JsonConverter(typeof(DomUiEventConverter))] +public interface IDomUiEvent; + +internal class DomUiEventConverter : JsonConverter +{ + public override IDomUiEvent? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + Utf8JsonReader cloneReader = reader; + Dictionary? temp = JsonSerializer + .Deserialize>(ref cloneReader, options); + + if (temp is null) + { + return null; + } + + PropertyInfo[] pointerProps = typeof(DomPointerEvent).GetProperties(); + PropertyInfo[] mouseProps = typeof(DomMouseEvent).GetProperties(); + PropertyInfo[] keyboardProps = typeof(DomKeyboardEvent).GetProperties(); + + pointerProps = pointerProps + .Where(p => mouseProps.All(mp => mp.Name != p.Name) + && keyboardProps.All(kp => kp.Name != p.Name)) + .ToArray(); + + mouseProps = mouseProps + .Where(p => pointerProps.All(pp => pp.Name != p.Name) + && keyboardProps.All(kp => kp.Name != p.Name)) + .ToArray(); + + keyboardProps = keyboardProps + .Where(p => pointerProps.All(pp => pp.Name != p.Name) + && mouseProps.All(mp => mp.Name != p.Name)) + .ToArray(); + + foreach (PropertyInfo prop in pointerProps) + { + if (temp.ContainsKey(prop.Name.ToLowerFirstChar())) + { + return JsonSerializer.Deserialize(ref reader, options); + } + } + + foreach (PropertyInfo prop in mouseProps) + { + if (temp.ContainsKey(prop.Name.ToLowerFirstChar())) + { + return JsonSerializer.Deserialize(ref reader, options); + } + } + + foreach (PropertyInfo prop in keyboardProps) + { + if (temp.ContainsKey(prop.Name.ToLowerFirstChar())) + { + return JsonSerializer.Deserialize(ref reader, options); + } + } + + return null; + } + + public override void Write(Utf8JsonWriter writer, IDomUiEvent value, JsonSerializerOptions options) + { + JsonSerializer.Serialize(writer, value, typeof(object), options); + } +} \ No newline at end of file diff --git a/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.cs b/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.cs new file mode 100644 index 000000000..04ae405b5 --- /dev/null +++ b/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.cs @@ -0,0 +1,12 @@ +namespace dymaptic.GeoBlazor.Core.Interfaces; + +[JsonConverter(typeof(MultiTypeConverter))] +public partial interface IFeatureTableWidgetLayer +{ + // Add custom code to this file to override generated code + + /// + /// Identifies the type of feature table layer. + /// + string FeatureTableLayerType { get; } +} diff --git a/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.gb.cs b/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.gb.cs similarity index 91% rename from src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.gb.cs rename to src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.gb.cs index 3a83f94da..6cd617beb 100644 --- a/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.gb.cs +++ b/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayer.gb.cs @@ -7,6 +7,6 @@ namespace dymaptic.GeoBlazor.Core.Interfaces; /// An array of layers listed within the dropdown component of the table's header. /// ArcGIS Maps SDK for JavaScript /// -public partial interface IFeatureTableWidgetLayers : IMapComponent +public partial interface IFeatureTableWidgetLayer : IMapComponent { } diff --git a/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.cs b/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.cs deleted file mode 100644 index 2fa495b0c..000000000 --- a/src/dymaptic.GeoBlazor.Core/Interfaces/IFeatureTableWidgetLayers.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace dymaptic.GeoBlazor.Core.Interfaces; - -[JsonConverter(typeof(MultiTypeConverter))] -public partial interface IFeatureTableWidgetLayers -{ - // Add custom code to this file to override generated code -} \ No newline at end of file diff --git a/src/dymaptic.GeoBlazor.Core/Serialization/SizeVariableConverter.cs b/src/dymaptic.GeoBlazor.Core/Serialization/SizeVariableConverter.cs index 4031e22ae..b0427abdb 100644 --- a/src/dymaptic.GeoBlazor.Core/Serialization/SizeVariableConverter.cs +++ b/src/dymaptic.GeoBlazor.Core/Serialization/SizeVariableConverter.cs @@ -135,7 +135,8 @@ internal class SizeVariableConverter : JsonConverter public override void Write(Utf8JsonWriter writer, SizeVariable value, JsonSerializerOptions options) { PropertyInfo[] props = value.GetPropertyInfos() - .Where(p => p.SetMethod is not null) + .Where(p => p.SetMethod is not null + && !_excludedProperties.Contains(p.Name)) .ToArray(); writer.WriteStartObject(); @@ -214,4 +215,11 @@ public override void Write(Utf8JsonWriter writer, SizeVariable value, JsonSerial return (dimension, sizeVariable); } + + private string[] _excludedProperties = + [ + nameof(MapComponent.Parent), + nameof(MapComponent.View), + nameof(MapComponent.Layer) + ]; } \ No newline at end of file From a3b8e73b06827c53fce684d877b3d22357dfdcad Mon Sep 17 00:00:00 2001 From: "submodule-validation-for-geoblazor[bot]" <235551211+submodule-validation-for-geoblazor[bot]@users.noreply.github.com> Date: Tue, 24 Feb 2026 04:30:04 +0000 Subject: [PATCH 2/4] Pipeline Build Commit of Version and Docs --- Directory.Build.props | 2 +- build-tools/linux-x64/BuildAppSettings.dll | Bin 9728 -> 9728 bytes .../BuildAppSettings.runtimeconfig.json | 4 ++-- build-tools/linux-x64/ConsoleDialog.dll | Bin 12288 -> 12288 bytes .../ConsoleDialog.runtimeconfig.json | 4 ++-- build-tools/linux-x64/ESBuild.deps.json | 18 ++++++++++++++++++ build-tools/linux-x64/ESBuild.dll | Bin 18944 -> 19456 bytes .../linux-x64/ESBuild.runtimeconfig.json | 4 ++-- .../linux-x64/ESBuildClearLocks.deps.json | 18 ++++++++++++++++++ build-tools/linux-x64/ESBuildClearLocks.dll | Bin 7168 -> 7168 bytes .../ESBuildClearLocks.runtimeconfig.json | 4 ++-- build-tools/linux-x64/FetchNuGetVersion.dll | Bin 8192 -> 8192 bytes .../FetchNuGetVersion.runtimeconfig.json | 4 ++-- build-tools/linux-x64/GBTest.deps.json | 18 ++++++++++++++++++ build-tools/linux-x64/GBTest.dll | Bin 15872 -> 15872 bytes .../linux-x64/GBTest.runtimeconfig.json | 4 ++-- build-tools/linux-x64/Utilities.deps.json | 18 ++++++++++++++++++ build-tools/linux-x64/Utilities.dll | Bin 4608 -> 18432 bytes 18 files changed, 85 insertions(+), 13 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 641c73110..5e51e7815 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ enable enable true - 5.0.0.82 + 5.0.0.83 Debug;Release;SourceGen Highlighting AnyCPU true diff --git a/build-tools/linux-x64/BuildAppSettings.dll b/build-tools/linux-x64/BuildAppSettings.dll index cc9f6c247e77a623e09cca78a4727bd3f8eb9f32..a12ce5c9a2678659e54eb5a0cc1916bbe41254f8 100644 GIT binary patch delta 601 zcmZWlO=uHA6rQOKN)&%Cf|h6{DM6v#?C$JOAO=>b)VA7UE+T^L?7TE9+fA}RQcw0E zDpH|wP&l*#=_BF1pf4(PsuZM2Xv)uBa zZrLTF3zsp~biw2**A11qc1iP?u3B|d=o%pzN+=-6{(dR3T<~%4-8io)lV?on%10`;_5h$XW zgpl-0bw2>*MCu2^X|-yQBz`y-kD9>1)Laf_Ll~Z?vy#hf-O$xC^YpT%dN%hoRpa<= zOW0-0;$>AwNjkSR0fq%ilV4II2*8cuV&I4A!svp@{(ESwB{-=~IGSOSO$AThZz@2w z?PH&^U)AD=rw`kAe)QfQI!-&KUA^7I=eNypViAu3sbjQBi3p;jyM*CViHRBD&N1g$ zF)%X3`kfl`7-A|i>)6w0YVuj$q3iNzew=2dQ<#)X1xKzGtUcLbv`P$K8u`hUs@y*^ zE-#FnocN1l1x2<~h!YUAk$)M7IR|m|A4%C_;klwDQ5q+w!g{lsttf6B!#of0LWk!5 E0J$-@wg3PC delta 560 zcmYL^O=uHA6vyAR36{!2J^GQ@ngsDsyP4VD>`2f?jZleNw1pl9%I@rptmKRRkb2Ra z)QU>OQi_Ur@?b>;gNO%_f~Ve!2an>#Lr)$GB3_(^pzksN;r-|Lhc}&Cr?zr8wQ%g= z%kKS^p`CPh;y_}f1+ukv4p*8p9Z9a7F_@-%Ze zyhot_wexn5d7MA$?dH#%VDq5}LN@0&X5+w%8?4f9pLHUK)mq%C zvpLadGp`jjMZ|)*DgC-&r(?hFDeQ`fBENYxoU}1_xpYXWNV#D-nCOOM5aD6ZaCIuF zjU7W`>GG1)g@v)S2<1A~O$*B+cd^Y{?ll&Ox^P0VSofRp(&Un5uw*%VXne5t>hxgk z-7ntz`QzR6uSMtP$hVo^R(36Q34;k17$EvBK?ed}b@ zk1K{Nhl10mN%B5dLEFjiTyB^GHjU^A)9=`O-dZbX-+A6g&?6=*CGc87oxP h+kD}i(kF$?kpVIFA5oF=R20NvG}DwV75Q4o{skm}r0M_w diff --git a/build-tools/linux-x64/BuildAppSettings.runtimeconfig.json b/build-tools/linux-x64/BuildAppSettings.runtimeconfig.json index 104be4d5d..37ed606d1 100644 --- a/build-tools/linux-x64/BuildAppSettings.runtimeconfig.json +++ b/build-tools/linux-x64/BuildAppSettings.runtimeconfig.json @@ -12,8 +12,8 @@ } }, "configProperties": { - "EntryPointFilePath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts\\BuildAppSettings.cs", - "EntryPointFileDirectoryPath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts", + "EntryPointFilePath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts/BuildAppSettings.cs", + "EntryPointFileDirectoryPath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts", "Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability": true, "System.ComponentModel.DefaultValueAttribute.IsSupported": false, "System.ComponentModel.Design.IDesignerHost.IsSupported": false, diff --git a/build-tools/linux-x64/ConsoleDialog.dll b/build-tools/linux-x64/ConsoleDialog.dll index d3c11cd59038db219c0528524b5fae24ae3c1877..dff1b8e682eaefcf95da2a670ff8e7e11d31b771 100644 GIT binary patch delta 537 zcmY*UO=#3W6rQZ^rDF9a3R24=-3pt@B$G)}mc?LOe~MUCq+-FHWZu}7m}ruP${wsY z4}x9iAU%lSp&mRg;tvW%JQsTKqM)KjQBU5T#Ul8IdGF2l!@RfBUTLr1+4*tq>FfU8 z)yhV-KYl>@#)1*6zA<5J3|<<&+TQfR@Ar@1O&wi-zG+&U#n-{~;k;6hycneCTfz~X zQo=Z}h(wM{DEBQprVjBW6OOGuOSY%}i<&ct{1n{veEwTirJ3Ps* zG<-rFX<5KM%Vok37`KG$+ALrmaboHC4h^W}G~!ec0n`VOi$DTFd>do{HqN4}IEMsy z0hg0b+FfoeGy4B8=5-OFb05zVY~R}T2X%|6bpQYW delta 597 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 R0EVH>?hNhbsQG_?{U5BPD@gzV diff --git a/build-tools/linux-x64/ESBuild.runtimeconfig.json b/build-tools/linux-x64/ESBuild.runtimeconfig.json index 0e80e369d..38c4501b6 100644 --- a/build-tools/linux-x64/ESBuild.runtimeconfig.json +++ b/build-tools/linux-x64/ESBuild.runtimeconfig.json @@ -12,8 +12,8 @@ } }, "configProperties": { - "EntryPointFilePath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts\\ESBuild.cs", - "EntryPointFileDirectoryPath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts", + "EntryPointFilePath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts/ESBuild.cs", + "EntryPointFileDirectoryPath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts", "Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability": true, "System.ComponentModel.DefaultValueAttribute.IsSupported": false, "System.ComponentModel.Design.IDesignerHost.IsSupported": false, diff --git a/build-tools/linux-x64/ESBuildClearLocks.deps.json b/build-tools/linux-x64/ESBuildClearLocks.deps.json index e01a173b2..ee48953be 100644 --- a/build-tools/linux-x64/ESBuildClearLocks.deps.json +++ b/build-tools/linux-x64/ESBuildClearLocks.deps.json @@ -15,7 +15,18 @@ "ESBuildClearLocks.dll": {} } }, + "Polly.Core/8.6.5": { + "runtime": { + "lib/net8.0/Polly.Core.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, "Utilities/1.0.0": { + "dependencies": { + "Polly.Core": "8.6.5" + }, "runtime": { "Utilities.dll": { "assemblyVersion": "1.0.0.0", @@ -31,6 +42,13 @@ "serviceable": false, "sha512": "" }, + "Polly.Core/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==", + "path": "polly.core/8.6.5", + "hashPath": "polly.core.8.6.5.nupkg.sha512" + }, "Utilities/1.0.0": { "type": "project", "serviceable": false, diff --git a/build-tools/linux-x64/ESBuildClearLocks.dll b/build-tools/linux-x64/ESBuildClearLocks.dll index bdd26b28092aec58da757986c8b19348876e1017..9eb8a478c3ce4a7c2ac129c0ea0b471030744c08 100644 GIT binary patch delta 938 zcmZuvOH30{6ur}yCRD0?%BQU)AQ74ve4TcFO&YWaVih9>F@_k)%=C>Eh8Aa91V534 z4KYN)7ou_H5*IF{3u0mn3qP!k3ziDT6~V0=SmyyQF}^;@X1GSzuUhtqYv*>@D{hcmDfwM-F7ep~lNW0%nj##) zF>4`p&Lw4;np7eUyfa?Zfqu? zVU;ZAW}p*n(6L4qCZT{nVdt8Tme#5(x$5N=VPm*9onDsA@egwRML1YF7kq^L}R)T=Ve36#AEDDU3;v`Keq+k`2iQ6W*sdMLkpm@-|(@Z z4y^-i6JwhJ)(|*yujAoTcx0|Sy?S}QYwX4Ld^wGb<|inzin$!M$Z<2Tt0u8WRg02L zzL2AZa>&SqKd+D5ol#Av3a@KgT#iO@t3q5>by1|EpleEkW;78w zg;y0ZYN)DibSQd)mtzT4l|q~ZU&Dxq zvw&PVGln_=IUbb;=9HB&wiZlr+w5nsm-Dey=qy_ZrP#-ie8|^=EooD|Xk`mCU92J8 z%dUn`pV{Lvf~UDrq;`R32CVE9UfXqQcR3>RM};^^3RclBq;p2T%aJ^XB{Jo8b+!v%;(} zcg=D2SKssb8*{cz=X@yO{1gR95vs9=OjAv^P9M2Nbx@n+DK$>Ls?s)=5`WvEbb7b5 zIZOc@)N9CZA)9?G7qF1qLO}~9$h18+Z0TLiVf%Kq%l{7wSjg(-3R)<&)yuWlLJ6{I z*Fsm2^VWww0Pe6CU0u@|`eVpP>kC^6eU)5taMUyM(BY%j$qUD#9~=Pf>2X-D2f#9D zA5M=9;{Bv*I4`?*ydH!ENI>p;4jfTHg<-S;66Rfme#k=xE@Gs^VHiVS{BKSoy`H8P z39?{74r>(Xf-=ac&p`<)7)#`M^Zx3hr;hT_@7LGhc09S*5tunN$``8-yf3LR!^LB& zs%jBd)aH*$GpAg^Y0R9z@{W#SoLjl{AVqX`PHWFu@= z=D1jv;WVBTIVP$w0xKv=l!p0oB-3~&&K7%tEJG>G8zB62Ju z4%fmX5^+r?8^ye-5YWrOASa_nMn=S?n`)M<_>Jy)6TrHLmvgt>I^DEd3WmbRLrds~7fJ>3=EC|5=bS`kY&g8Tje&&=#v diff --git a/build-tools/linux-x64/ESBuildClearLocks.runtimeconfig.json b/build-tools/linux-x64/ESBuildClearLocks.runtimeconfig.json index d21843004..da6fa6890 100644 --- a/build-tools/linux-x64/ESBuildClearLocks.runtimeconfig.json +++ b/build-tools/linux-x64/ESBuildClearLocks.runtimeconfig.json @@ -12,8 +12,8 @@ } }, "configProperties": { - "EntryPointFilePath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts\\ESBuildClearLocks.cs", - "EntryPointFileDirectoryPath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts", + "EntryPointFilePath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts/ESBuildClearLocks.cs", + "EntryPointFileDirectoryPath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts", "Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability": true, "System.ComponentModel.DefaultValueAttribute.IsSupported": false, "System.ComponentModel.Design.IDesignerHost.IsSupported": false, diff --git a/build-tools/linux-x64/FetchNuGetVersion.dll b/build-tools/linux-x64/FetchNuGetVersion.dll index e093316ee4acebaf0efd0b4e96337018ab885e2b..473966b9c946cdc84215e1b102e30895d4562eb2 100644 GIT binary patch delta 574 zcmZWlOKVd>6rLOHCSWay8Y)RF3Q8rN`B$~Ww_D_EK~8)`Ca2rUVkCl$@u~y2_6=UVf9~x< zQbY%@UW;k)RCGB_8*3N1NogMAzvB5`dujD*5iqF0k5BsOgU!A4nA5-TnYUdGA z8iY}TG;kR62{WZMTq!Ifs4y6(0ZDlJuKwb4YZtT|b14AWOWvh({re8Ue)1(fy8d=( zYb4nYX1CY;*V7MJLsQK31#hv5VbfbESLfm|h^tE%(`ODDg# z#;(2mFnZ$E*1U@MZ*`6gFZbQDfPxKqz-~)0fB;h(Q9FeI9JMjB-}4LCxK)b5tKVt!lD~A`Z*Z+C@DX%oWw! gVs1vw=ef*CkC^z2D9hwT6voZyYE9Oa<$W&u2l_>=`Tzg` diff --git a/build-tools/linux-x64/FetchNuGetVersion.runtimeconfig.json b/build-tools/linux-x64/FetchNuGetVersion.runtimeconfig.json index 75ffff43f..131a45746 100644 --- a/build-tools/linux-x64/FetchNuGetVersion.runtimeconfig.json +++ b/build-tools/linux-x64/FetchNuGetVersion.runtimeconfig.json @@ -12,8 +12,8 @@ } }, "configProperties": { - "EntryPointFilePath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts\\FetchNuGetVersion.cs", - "EntryPointFileDirectoryPath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts", + "EntryPointFilePath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts/FetchNuGetVersion.cs", + "EntryPointFileDirectoryPath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts", "Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability": true, "System.ComponentModel.DefaultValueAttribute.IsSupported": false, "System.ComponentModel.Design.IDesignerHost.IsSupported": false, diff --git a/build-tools/linux-x64/GBTest.deps.json b/build-tools/linux-x64/GBTest.deps.json index 9104bfbac..6492db7b1 100644 --- a/build-tools/linux-x64/GBTest.deps.json +++ b/build-tools/linux-x64/GBTest.deps.json @@ -24,7 +24,18 @@ } } }, + "Polly.Core/8.6.5": { + "runtime": { + "lib/net8.0/Polly.Core.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } + }, "Utilities/1.0.0": { + "dependencies": { + "Polly.Core": "8.6.5" + }, "runtime": { "Utilities.dll": { "assemblyVersion": "1.0.0.0", @@ -47,6 +58,13 @@ "path": "cliwrap/3.10.0", "hashPath": "cliwrap.3.10.0.nupkg.sha512" }, + "Polly.Core/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==", + "path": "polly.core/8.6.5", + "hashPath": "polly.core.8.6.5.nupkg.sha512" + }, "Utilities/1.0.0": { "type": "project", "serviceable": false, diff --git a/build-tools/linux-x64/GBTest.dll b/build-tools/linux-x64/GBTest.dll index 199e9b7adb032d1fc8a2745c3930343ecc290ee2..4e81ee5e9bc67a7e09d4cbf047406aee5aa3b8ed 100644 GIT binary patch delta 1283 zcmZuvUrbwd6h8N+KzmC&TK)~F8=J5eI=I~S-rGAVTOdF|v!MeLotw-3JBp>3+?EUk zk(d#eZP`{&mgo{=O!lBoU#y9lMl&9a@xhtsgBo3o3qJUyiDu4aF`hz)OZ49Se&;*i z_nq@Q_s`1G%F@Ntu8DW9d{#Jjkv&yW*wtLIei&c^RXK?ZOe5pL0uyFV;WcKQF^WF+ zWCe2qSF6I&dsQ&|M9{lE;sJ;{<*aElW8E8C^JZ3!-&F0cJ4#$+7=WvFhjJ;3?aqhj zbGQ3$kYJB&5P!JwfO|B0hZx7@A^I_*1FpS+0O$BA|CeMJw*k1EPAs|?!!eQ~39>qe z?xV8)NhvQK$~xbAaME+0Igaa|A!ZRfxe)UbrZ}QNkRy2ScMY+NROH(19CGwxt9LKMr14<&d79vd z>gL2*^4dpe0{dy&B1dVfuC$+`;Jo@@$yb)%!Y*G6a}7sn{}@eQgkAIE1z$7!sTZ&M z!aLSV6J)8$PJhIv5Og;-MviR&=W{Rq<_oi5c(KVpz<%w;WBwCOgVg{JPmV*~E`S;! zoSGaRq}W!x>Hoc+UHuuqYD+R4*0!6q9B?oOvyg{0*pP)BJc5Px99HgG!P9%rVMF)^ zE=L;hUU-G#EA=J+5X^%LGgOrUbE87&NMWpF7_WB(%h829I!Ctf?XVxOcW&2^hbcN{ zhRS$wV2%#V5_Tv%NxTEk5=s$c!vHl`;kga=|2d87)8sOsi^jL<&Oi(NR}T z*V1&;mDld3&iolzzFPC$ba9=Zaz(U+ZdwVY$A}xMC=~1H=CWDS;kz@ou4ee$lNk__c(Usuc1(j#)0KWJ;^EAIYP+v*AyRry^8XXPi0e&seh zra=O9`W_ZV1$yXR$7!h`(k*~Y$fR8(tdSy76p1T2V^k*+Cs3tDo>FBD$9wykAMsM} z5dD5PdmqI}vLC0DiEUgfUCErO&pGM*!hU=&IfQqT!+4(hRQMFxJsDX|uM8V<+|M6}7ZW|HcYQA2wXTj%`Sl#=%Y? zr9%`67!Ry#dxcOXBp%oc44#6JCL|;zBp!G`0wF+vrU_o)g-w+v4H)C3$+RJe-0b!{dolo7;!8?oh3cdh$R-u0HpnF^LtUt` z^m9(?EP16R9F<&9dZfMeK*S9YwVG8|qZ)5${zf%NzHK?Y?=9pa#{rlQSI|yl3|W5= z))ivCZYY^ky9Dnh54xtK!^l_@b$S+QpW}$n$5;>li=()A zK1g|RwjwTazc*rHXm@pXMizGy%k3do*)Yv|NSAkF@k-RhreBxI|V;KVI#*S zazZX9DuR|EJpbYTEAQEtfjTiy z`GPK|$FsU!9#C~Po{A}AF2?7K1fS$YMUQC)7vqei&I`$5#YpB1LsU7APpSH8E*|5A zxMHZPo)831)nrp$k}bWUE4KbbAz!Ri2dYWFx%^;BQz0`ohVKEIllMQ`oV@607?kOUr2s(u*|g9M1kC9o3kBvM$3crtZ1j(XiOjFO_Z={REQ*nNXd$Iu-Mwn#%|t74a@i-tMMGSZM@+xoIvSQ*8?#Ap8jJXlMH diff --git a/build-tools/linux-x64/GBTest.runtimeconfig.json b/build-tools/linux-x64/GBTest.runtimeconfig.json index 7ff48568f..f923bd398 100644 --- a/build-tools/linux-x64/GBTest.runtimeconfig.json +++ b/build-tools/linux-x64/GBTest.runtimeconfig.json @@ -12,8 +12,8 @@ } }, "configProperties": { - "EntryPointFilePath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts\\GBTest.cs", - "EntryPointFileDirectoryPath": "D:\\dymaptic.GeoBlazor.CodeGen\\GeoBlazor.Pro\\GeoBlazor\\build-tools\\build-scripts", + "EntryPointFilePath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts/GBTest.cs", + "EntryPointFileDirectoryPath": "/home/runner/work/GeoBlazor/GeoBlazor/build-tools/build-scripts", "Microsoft.Extensions.DependencyInjection.VerifyOpenGenericServiceTrimmability": true, "System.ComponentModel.DefaultValueAttribute.IsSupported": false, "System.ComponentModel.Design.IDesignerHost.IsSupported": false, diff --git a/build-tools/linux-x64/Utilities.deps.json b/build-tools/linux-x64/Utilities.deps.json index 88bf821d5..09cf4bf61 100644 --- a/build-tools/linux-x64/Utilities.deps.json +++ b/build-tools/linux-x64/Utilities.deps.json @@ -7,9 +7,20 @@ "targets": { ".NETCoreApp,Version=v10.0": { "Utilities/1.0.0": { + "dependencies": { + "Polly.Core": "8.6.5" + }, "runtime": { "Utilities.dll": {} } + }, + "Polly.Core/8.6.5": { + "runtime": { + "lib/net8.0/Polly.Core.dll": { + "assemblyVersion": "8.0.0.0", + "fileVersion": "8.6.5.5194" + } + } } } }, @@ -18,6 +29,13 @@ "type": "project", "serviceable": false, "sha512": "" + }, + "Polly.Core/8.6.5": { + "type": "package", + "serviceable": true, + "sha512": "sha512-t+sUVrIwvo7UmsgHGgOG9F0GDZSRIm47u2ylH17Gvcv1q5hNEwgD5GoBlFyc0kh/pebmPyrAgvGsR/65ZBaXlg==", + "path": "polly.core/8.6.5", + "hashPath": "polly.core.8.6.5.nupkg.sha512" } } } \ No newline at end of file diff --git a/build-tools/linux-x64/Utilities.dll b/build-tools/linux-x64/Utilities.dll index 9e94a32e039845432983153a27336a54451db63d..482a95e332ca12c908ed215469ef7b53a8e314e5 100644 GIT binary patch literal 18432 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 T-_(_^{x@phznk^1>Vf|Q{DIYr delta 1608 zcmYL}Uu;uV9LK-svX!;qXc^2Q3T1z?0$b@?3hNlGY{R)BY*G-3P1tRF3m3cIdV6Oa zChLfzqA`FsAetD1#6WyP282Z7gO9#oNCbHSA2ht^gYi!yFZexY8#_1W^ZRqo{r!ID zo^#LCDKXW2>iwaM&c}aXw*7*};35$Ld~|qboYzB?LG~m&;8(f^R4H>_V(RqmaIMbS z!*V1Elop&`Q@3~&SWJ7g71-;p(c0VtqSbe^hOQvH&;39&d6U#+yv6QyvD!OIjS1j) z?~BG2XJmf17uYpa<5Cc~!P2)vEwp6NEMAIY(D1VfC%CXJjp)%7U zSq*HYY}%KCL!H^sG_Y^5pYk0!#!OAU1uH{aHoh(fp3~r!#v>5}({Kt{gIcT9Wv5%o zTA-qoxdGr$A$7SgZQ^CkgHIIu(WfoJ8;tM4r?@6Om=qq4{sYM?inkPBRQ@AMU#8wY zr#DUZw!1d&C9XvS+;MV8SlTJb8@iZB*o2w~JAMXrQR zHsLLDJu2T)#P9>T1$W6l{7UYG^ry&YP&GBPTU`2VJI;-eKhIq2M*Ex!bnmiq;{{_I zQWIsz7z+;$W3O$F?I`9jU^xAzZDbwGp4hFA8Jtq5=Ij|SIwtKtYb;|H-Ic99?s#j5 z`(10sO@z+7RqMKU?Q_h6>6k`2oGTP&W6!17W8@2rYFb5XFU+S%871A;nXK=yZev7u z4nJ=ea|W01uHMk#?%$9|_E|+oH;ZKqXO1uewwFrMWxVO&kl`Hc)yu|{ie>q!tZkN@ z@)MtXaZ^;T{o%cyvDHUw2CrUOcy3Yqoo`ST6ryH95Tcq&ARx_JiE7tQG(J^xx#wUd z@RP4g-UsgE?yp9p@l6{I!^lTsiFnM2=Qbx2nOLGDpO19rv(Z>Ko{c2*crFH1%abU{ zO{kJ5wMKA%=iA9k(+?najc^$6vR~z$bk*zL-&XJG;w{tVb02MMtaNU<_kHPS|ImAt z1D{2P(tpW7{axwY#F$=k%xrkTuzCynQOgeZSvh0CD5mEH~Njv=|J*d@juypLx}(Y From 960375a941da47ba211d44f0d319e712a60b9f1d Mon Sep 17 00:00:00 2001 From: timpurdum Date: Mon, 2 Mar 2026 11:58:43 -0600 Subject: [PATCH 3/4] add tests, fix edge cases in widget/layer parameter comparison --- .../Components/Layers/Layer.cs | 21 ++++++++++++++++--- .../Components/Widgets/Widget.razor.cs | 21 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/dymaptic.GeoBlazor.Core/Components/Layers/Layer.cs b/src/dymaptic.GeoBlazor.Core/Components/Layers/Layer.cs index c76a3ebfe..db8dd99b6 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Layers/Layer.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Layers/Layer.cs @@ -342,8 +342,24 @@ public override async Task SetParametersAsync(ParameterView parameters) break; } - Type paramType = previousValue!.GetType(); + if (previousValue is null) + { + if (kvp.Value is not null) + { + if (MapRendered) + { + await UpdateLayer(); + } + + break; + } + + // both null, no change + continue; + } + Type paramType = previousValue.GetType(); + if (paramType.IsArray) { Array prevArray = (Array)previousValue; @@ -375,9 +391,8 @@ public override async Task SetParametersAsync(ParameterView parameters) if (layerChanged) break; } - else if (paramType.IsGenericType) + else if (paramType.IsGenericType && previousValue is ICollection prevCollection) { - ICollection prevCollection = (ICollection)previousValue; ICollection currCollection = (ICollection)kvp.Value!; if (prevCollection.Count != currCollection.Count) diff --git a/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs b/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs index 08ae283ef..0a36b47b6 100644 --- a/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs +++ b/src/dymaptic.GeoBlazor.Core/Components/Widgets/Widget.razor.cs @@ -427,7 +427,23 @@ public override async Task SetParametersAsync(ParameterView parameters) break; } - Type paramType = previousValue!.GetType(); + if (previousValue is null) + { + if (kvp.Value is not null) + { + if (MapRendered) + { + await UpdateWidget(); + } + + break; + } + + // both null, no change + continue; + } + + Type paramType = previousValue.GetType(); if (paramType.IsArray) { @@ -457,9 +473,8 @@ public override async Task SetParametersAsync(ParameterView parameters) } } } - else if (paramType.IsGenericType) + else if (paramType.IsGenericType && previousValue is ICollection prevCollection) { - ICollection prevCollection = (ICollection)previousValue; ICollection currCollection = (ICollection)kvp.Value!; if (prevCollection.Count != currCollection.Count) From 0189594e6080b3fb77ff4a160668bc52e6ad79d8 Mon Sep 17 00:00:00 2001 From: "submodule-validation-for-geoblazor[bot]" <235551211+submodule-validation-for-geoblazor[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 18:03:51 +0000 Subject: [PATCH 4/4] Pipeline Build Commit of Version and Docs --- Directory.Build.props | 2 +- build-tools/linux-x64/BuildAppSettings.dll | Bin 9728 -> 9728 bytes build-tools/linux-x64/ConsoleDialog.dll | Bin 12288 -> 12288 bytes build-tools/linux-x64/ESBuild.dll | Bin 19456 -> 19456 bytes build-tools/linux-x64/ESBuildClearLocks.dll | Bin 7168 -> 7168 bytes build-tools/linux-x64/FetchNuGetVersion.dll | Bin 8192 -> 8192 bytes build-tools/linux-x64/GBTest.dll | Bin 15872 -> 15872 bytes build-tools/linux-x64/Utilities.dll | Bin 18432 -> 18432 bytes 8 files changed, 1 insertion(+), 1 deletion(-) diff --git a/Directory.Build.props b/Directory.Build.props index 5e51e7815..2987ef99d 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ enable enable true - 5.0.0.83 + 5.0.0.84 Debug;Release;SourceGen Highlighting AnyCPU true diff --git a/build-tools/linux-x64/BuildAppSettings.dll b/build-tools/linux-x64/BuildAppSettings.dll index a12ce5c9a2678659e54eb5a0cc1916bbe41254f8..84a80f7f28f16461429c990c972bee7dbfc5eb42 100644 GIT binary patch delta 267 zcmZqhY4DlQ!E(*Qd;P{94QYX0U)HX2o&MQxeN*5UA4zT2%}1o$89gn{42;c96D>^) zQxZ+glM;;#4O2`^(hO3J4J}j64UH1b43aF<3{w~wSQ!}@85mfAn1O?lfg4D{L2J(8 zuE|qm0|a)SaA>^N8s@)nPUqvxhgyOsf05m&02R!C2o(gWp8t3A+Oqv0<-QhWyKcTH zXUjOzfM+wGLKL&VC4(7*0fRAvIfE%fB7-G^34rXP<|ESWjGjs6$*F1P76vKC zDTyW~hGvPWW=V!g#-@fQi53P%$tK2z=4oar#zqVbtc(nd3=Awl%)r6Ozzw9};QY!3 zA16v3+ob+S! zMLAo>i3U8I`4pm<{gW8X8Il=N8Pb5X1%m-Y3WG5aCo-4-p&^4Akd+D~lYs0bpo}Sy eHUWx(R2l*GnE=HMfjZNGYCt-THg8w^) zQxZ+glM;;#4O2`^(hO3J4J}j64UH1b43aF<3{xiGQx9X=W79W%vV}%~K$hB+|3BKz zychfx{+!PilRJ5a#%cwq;OqpbAW*epUr8B7@x87vu07z`OwfGiWBND`1X0`fs3CP0`5RG9))YY0@A3Y0el$|i#K QCjmv$KlQKr0F<6fm;e9( delta 243 zcmZojXh@jQ!E)Ps^`4DAD^vvXrhmOU|A>{tvhC;e49*ol+U%lQ#H5jAo}8LyZefsO zoRVl_VrZ6_YL;Y}WNd0^l4xOIlx$*bXr5-4Vr(?|o_ZL|WAWt=CR=C(2*g-jwA;&? z<2Y&N>$lZgBO)iy&{(Yi6>JQG3IbIpD9;QrRD6HSdr`FJp~;1sb0-Hd@@?kRGGg{m zVlZb&W=Lg71JV`@1`H_-#z36NU;>1O3}!%9Dv(S9vXg)^ra;;RCh($ diff --git a/build-tools/linux-x64/ESBuild.dll b/build-tools/linux-x64/ESBuild.dll index 4993d0170b75faa0b4de41c4cdc770735d8d9017..80cfc68960a356382ee0d3a38a16e3d46f34aaf2 100644 GIT binary patch delta 246 zcmZpe!Pqc^aY6@+LqNHI3FOf@$&N;ES_vP?5fne66V#j=vOWBueK&H(~n7p&j2 z-|Cxl!@fHL-|j!@pRD3CUjbbZq}rmhX6>|NW;)kn-NUZ delta 246 zcmZpe!Pqc^aY6^nK98vT8+$(33KRrv{dvqw)^%y=W(O>?W~jB$+3trkPt9 zq!_0pnwS`xC8nAs873K<8k!_p7#Jm+7#o_WnWY#TO?GpxV(CusdNlcnbAUkZRig=2 zzb|;~*xz2XG_%`gvWm-m1*qVRA5cM{>Lk5m_4?&6=bG!w1i5Yg=pxHFIe?LGGoRZx zCjTS`bB1JwRE9JlZNXr`kiuXL#EA?hKxoKd24tlI$s`~<2`FOj!P2uvd(p-o5kY}HsU_+Do>o3Pvo7BBd$z)V^9I3Vj2f0^2FB*5iIygY zDTyZLNr^^=hAAc{X$C3AhL)-3hDM2I21%A_hAETh39GT3a}-)Q`GjzQKw9O5%p*^H zyr&)K7FZ&Cck5&gkO-!q;B(eNlzvKbV^2t delta 243 zcmZp$Xt0>j!7{1K{>a825kY~eD@;yA33+->HOt99UgP7kd4u3FMvWx%WD{dU^E9&*W24FQgwyR5bMJ0@$0Y*v5@S{gwGL8?7%%%|?@YktjrLUP4sMp0hIi3V(&`NX1_{gW8X z8Il=N8Pb5X1%m-Y3WG5aCo-4-p&^4Akd+D~lYs0bpo}SyHUWx(R2l*GnE=HMfjZNG OYCt-THgA{oWC8$SI7MRs diff --git a/build-tools/linux-x64/FetchNuGetVersion.dll b/build-tools/linux-x64/FetchNuGetVersion.dll index 473966b9c946cdc84215e1b102e30895d4562eb2..ea57d2c75699978b2f92342e0208e73ad62abf52 100644 GIT binary patch delta 238 zcmZp0XmFU&!6H+WaC>9V9ua{pjlc6`mL~bnY|z`YvSh)&%@LvxnKUfT42;c96D>^) zQxZ+glM;;#4O2`^(hO3J4J}j64UH1b43aF<3{xg2N<_0Po9yvy@&SnefdX~Y?d$It zxNK2fbm`D96Sm0;lA9Hvf?G7U-fgQBis`pHvjHza@hig8_pv zgE@mKLn4DEg9(EnLkf^(0u)IC(ndf&NW=sP(|{^dfNBka>QaI7hCtawu>K^VNE%4p J=IyecOaKEfNlyR( delta 238 zcmZp0XmFU&!J=~e(%p?cdqf0u?RGDH|LvRS?oW9|3*rQxZjKOr$fS{Eo}8LyZefsO zoRVl_VrZ6_YL;Y}WNd0^l4xOIlx$*bXr5-4Vr(=yQ6ic}YyX{hlMhG)2#8;Pu6617 zd-qMdN+xeM)_yWsL2|PKOt1(l2vWWG0~g<9?`(t29k--EA4H?XUtW+SG1Y{=xWlVvz2~Z5A(g>)}1Sn<*)R_iU1JY@< JdAqD969Ck!PkR6W diff --git a/build-tools/linux-x64/GBTest.dll b/build-tools/linux-x64/GBTest.dll index 4e81ee5e9bc67a7e09d4cbf047406aee5aa3b8ed..e80b8147722b2a8b801adf0387312090b2ac5bf7 100644 GIT binary patch delta 243 zcmZpuX{edd!SZ_E?428XIP?Wlm^%5hdGuZ9JZd|*Au;p)<|XRE|JMTrgIgbf(qqOL6GV*bxO=7?PYggZ{l#-ENJ$ZaiRgoWPoLn=cWkhWkjU`Syw2I52p6CgBXFaxqufn*YpodlFI1=1!!F_20lpgt3zm?2PS P8c+>Lr_ttM>$OY(B)dta diff --git a/build-tools/linux-x64/Utilities.dll b/build-tools/linux-x64/Utilities.dll index 482a95e332ca12c908ed215469ef7b53a8e314e5..d84694fc4dee494100853cc6d52ab33175d8728a 100644 GIT binary patch delta 237 zcmZpez}PT>aY6@6^+W%a8+*=}3*0rh=aY6?R`$5Nt8+*=}3rME%>VIHc;?lM!`h&~6eVaFDSlF;?B$+3trkPt9 zq!_0pnwS`xC8nAs873K<8k!_p7#Jm+7#o_WnWY#TO+I7$hvoCk8Qqi5*aZmK3b~zT zz0B`9y`xw|-ajp4vW|VG0#xwkb*LavHTTDa{uwJS{Zx}x`MYQHR(ow$|0D);hGd3R zhBP2;!C=6U!e9)