Add contextual fiducial point downloads
This commit is contained in:
1 parent
85e1c93d8a
commit
ce355f820c
5 files changed
+262
-28
No files matched your search
+70
-10
@@ -263,6 +263,12 @@
|
||||
@(FiducialBusy ? "Ricerca..." : "Cerca Punti Fiduciali")
|
||||
</button>
|
||||
|
||||
<label class="toggle-line">
|
||||
<input type="checkbox" @bind="KeepPreviousFiducialPoints" @bind:after="ApplyKeepPreviousFiducials" />
|
||||
<span>Mantieni i PF dei fogli già caricati</span>
|
||||
</label>
|
||||
<small class="field-help">Ogni foglio resta un sottogruppo separato nel pannello Layer, da cui puoi nasconderlo o rimuoverlo.</small>
|
||||
|
||||
<label class="toggle-line">
|
||||
<input type="checkbox" @bind="ShowFiducialPoints" @bind:after="ApplyFiducialVisibility" />
|
||||
<span>Mostra i PF sulla mappa</span>
|
||||
@@ -873,6 +879,7 @@
|
||||
private bool ShowGpsPosition { get; set; } = true;
|
||||
private bool ShowSelectedParcels { get; set; } = true;
|
||||
private bool ShowFiducialPoints { get; set; } = true;
|
||||
private bool KeepPreviousFiducialPoints { get; set; } = true;
|
||||
private bool ShowImportedData { get; set; } = true;
|
||||
private bool DrawToolsVisible { get; set; }
|
||||
private bool TrailEnabled { get; set; }
|
||||
@@ -1342,27 +1349,36 @@
|
||||
|
||||
private async Task SearchFiducials()
|
||||
{
|
||||
var province = FiducialProvinces.FirstOrDefault(item => item.Code == SelectedFiducialProvinceCode);
|
||||
var municipality = FiducialMunicipalities.FirstOrDefault(item => item.Code == SelectedFiducialMunicipalityCode);
|
||||
if (province is null || municipality is null || string.IsNullOrWhiteSpace(SelectedFiducialSheet))
|
||||
if (municipality is null || string.IsNullOrWhiteSpace(SelectedFiducialSheet))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
await LoadFiducialsForSheetAsync(
|
||||
municipality.Code,
|
||||
SelectedFiducialSheet,
|
||||
municipality.Name);
|
||||
}
|
||||
|
||||
private async Task LoadFiducialsForSheetAsync(
|
||||
string municipalityCode,
|
||||
string sheet,
|
||||
string? municipalityName = null)
|
||||
{
|
||||
FiducialBusy = true;
|
||||
FiducialPoints = [];
|
||||
MappedFiducialPoints = [];
|
||||
FiducialMessage = "Recupero monografie e coordinate dei PF...";
|
||||
await InvokeAsync(StateHasChanged);
|
||||
try
|
||||
{
|
||||
string? monographError = null;
|
||||
try
|
||||
{
|
||||
FiducialPoints = await FiducialPointService.GetFiducialsAsync(
|
||||
province.Name,
|
||||
municipality.Name,
|
||||
municipality.Code,
|
||||
SelectedFiducialSheet);
|
||||
municipalityCode,
|
||||
sheet);
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
@@ -1370,8 +1386,8 @@
|
||||
}
|
||||
|
||||
var mapped = await FiducialPointService.GetMappedFiducialsAsync(
|
||||
municipality.Code,
|
||||
SelectedFiducialSheet);
|
||||
municipalityCode,
|
||||
sheet);
|
||||
var monographs = FiducialPoints.ToDictionary(
|
||||
item => item.Identifier,
|
||||
item => item.MonographUrl,
|
||||
@@ -1390,22 +1406,57 @@
|
||||
"lmeMap.setFiducialPoints",
|
||||
MappedFiducialPoints,
|
||||
FiducialColor,
|
||||
ShowFiducialPoints);
|
||||
ShowFiducialPoints,
|
||||
KeepPreviousFiducialPoints,
|
||||
municipalityCode,
|
||||
sheet,
|
||||
string.IsNullOrWhiteSpace(municipalityName) ? municipalityCode : municipalityName);
|
||||
FiducialMessage = MappedFiducialPoints.Count == 0
|
||||
? "Nessun Punto Fiduciale georiferito per il foglio selezionato."
|
||||
: $"Trovati {MappedFiducialPoints.Count} PF cartografici e {FiducialPoints.Count} monografie ufficiali."
|
||||
: $"Caricati {MappedFiducialPoints.Count} PF del foglio {NormalizeSheetLabel(sheet)} e {FiducialPoints.Count} monografie ufficiali."
|
||||
+ (monographError is null ? string.Empty : " Le monografie non sono al momento raggiungibili.");
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", FiducialMessage);
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
FiducialMessage = $"Ricerca PF non riuscita: {error.GetBaseException().Message}";
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", FiducialMessage);
|
||||
}
|
||||
finally
|
||||
{
|
||||
FiducialBusy = false;
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
}
|
||||
|
||||
[JSInvokable]
|
||||
public async Task DownloadFiducialsForMapSelection(
|
||||
string municipalityCode,
|
||||
string sheet,
|
||||
string contextLabel)
|
||||
{
|
||||
if (!CanUse(AppFeatures.FiducialPoints))
|
||||
{
|
||||
await ShowProRequiredAsync();
|
||||
return;
|
||||
}
|
||||
|
||||
if (FiducialBusy)
|
||||
{
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", "È già in corso una ricerca dei Punti Fiduciali.");
|
||||
return;
|
||||
}
|
||||
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", $"Scarico i PF per {contextLabel}...");
|
||||
var municipality = await CatalogService.FindMunicipalityAsync(municipalityCode);
|
||||
await LoadFiducialsForSheetAsync(municipalityCode, sheet, municipality?.Name);
|
||||
}
|
||||
|
||||
private static string NormalizeSheetLabel(string sheet) =>
|
||||
int.TryParse(new string((sheet ?? string.Empty).Where(char.IsDigit).ToArray()), out var number)
|
||||
? number.ToString(System.Globalization.CultureInfo.InvariantCulture)
|
||||
: sheet ?? string.Empty;
|
||||
|
||||
private async Task DownloadFiducialMonograph(string monographUrl)
|
||||
{
|
||||
try
|
||||
@@ -1430,6 +1481,12 @@
|
||||
await JS.InvokeVoidAsync("lmeMap.setFiducialColor", FiducialColor);
|
||||
}
|
||||
|
||||
private Task ApplyKeepPreviousFiducials()
|
||||
{
|
||||
SaveFlagPreferences();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task FitFiducialPoints() =>
|
||||
await JS.InvokeVoidAsync("lmeMap.fitFiducialPoints");
|
||||
|
||||
@@ -2454,6 +2511,7 @@
|
||||
private Task ApplyEntitlementsToMapAsync() => JS.InvokeVoidAsync("lmeMap.setEntitlements", new
|
||||
{
|
||||
advancedGeometry = CanUse(AppFeatures.AdvancedGeometry),
|
||||
fiducialPoints = CanUse(AppFeatures.FiducialPoints),
|
||||
maxDrawingObjects = Entitlements.HasProAccess ? (int?)null : EntitlementService.BaseDrawingObjectLimit,
|
||||
drawingLimitMessage = L("drawings.base.limit.reached")
|
||||
}).AsTask();
|
||||
@@ -2662,6 +2720,7 @@
|
||||
ShowGpsPosition = GetFlagPreference("show_gps_position", true);
|
||||
ShowSelectedParcels = GetFlagPreference("show_selected_parcels", true);
|
||||
ShowFiducialPoints = GetFlagPreference("show_fiducial_points", true);
|
||||
KeepPreviousFiducialPoints = GetFlagPreference("keep_previous_fiducials", true);
|
||||
FiducialColor = Preferences.Default.Get($"{FlagPreferencePrefix}fiducial_color", "#dc2626");
|
||||
TrailEnabled = GetFlagPreference("trail_enabled", false);
|
||||
ExportImported = GetFlagPreference("export_imported", true);
|
||||
@@ -2704,6 +2763,7 @@
|
||||
SetFlagPreference("show_gps_position", ShowGpsPosition);
|
||||
SetFlagPreference("show_selected_parcels", ShowSelectedParcels);
|
||||
SetFlagPreference("show_fiducial_points", ShowFiducialPoints);
|
||||
SetFlagPreference("keep_previous_fiducials", KeepPreviousFiducialPoints);
|
||||
Preferences.Default.Set($"{FlagPreferencePrefix}fiducial_color", FiducialColor);
|
||||
SetFlagPreference("trail_enabled", TrailEnabled);
|
||||
SetFlagPreference("export_imported", ExportImported);
|
||||
|
||||
Reference in new issue
Block a user