Compare commits
1
Commits
v0.4.6
..
b600412285
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b600412285 |
No files matched your search
@@ -83,7 +83,7 @@
|
||||
"Rinomina cambia il nome del progetto selezionato senza alterarne contenuti e revisioni. Duplica crea invece una copia modificabile, utile prima di una variante importante o quando ricevi un progetto in sola lettura.",
|
||||
"Archivia nasconde logicamente i lavori conclusi senza eliminarli; Ripristina li riporta tra quelli attivi. Elimina rimuove invece il progetto dall'archivio.",
|
||||
"Condividi modificabile consente al destinatario di continuare il lavoro; Condividi in sola lettura protegge l'originale e richiede una duplicazione per modificarlo.",
|
||||
"Revisioni: seleziona una data e usa Apri revisione per consultarne lo stato oppure Confronta per vedere le differenze con la versione corrente.",
|
||||
"Revisioni: la prima viene creata quando salvi per la seconda volta un progetto gia esistente. L'elenco si aggiorna anche dopo i salvataggi automatici; seleziona una data e usa Apri revisione oppure Confronta.",
|
||||
"Backup: Crea backup raccoglie tutti i progetti in un file trasferibile. Ripristina backup ricarica un archivio completo; Importa progetto aggiunge invece un singolo progetto condiviso."
|
||||
],
|
||||
"tools" =>
|
||||
|
||||
@@ -374,6 +374,14 @@
|
||||
}
|
||||
</select>
|
||||
</label>
|
||||
@if (!string.IsNullOrWhiteSpace(SelectedProjectId) && ProjectVersions.Count == 0)
|
||||
{
|
||||
<small class="field-help">Non ci sono ancora revisioni: la prima viene creata quando salvi nuovamente un progetto già esistente.</small>
|
||||
}
|
||||
else if (ProjectVersions.Count > 0)
|
||||
{
|
||||
<small class="field-help">@ProjectVersions.Count revisioni disponibili, ordinate dalla più recente.</small>
|
||||
}
|
||||
<div class="button-row">
|
||||
<button class="secondary-command" @onclick="LoadProjectVersion" disabled="@(string.IsNullOrWhiteSpace(SelectedVersionId))">Apri revisione</button>
|
||||
<button class="secondary-command" @onclick="CompareProjectVersion" disabled="@(string.IsNullOrWhiteSpace(SelectedVersionId))">Confronta</button>
|
||||
@@ -905,6 +913,7 @@
|
||||
await JS.InvokeVoidAsync("lmeMap.clearLegacyProjectSnapshot");
|
||||
await RefreshProjectsAsync();
|
||||
SelectedProjectId = migrated.Id;
|
||||
await RefreshProjectVersionsAsync(true);
|
||||
await InvokeAsync(StateHasChanged);
|
||||
}
|
||||
catch
|
||||
@@ -1366,6 +1375,7 @@
|
||||
{
|
||||
SelectedProjectId = string.Empty;
|
||||
}
|
||||
await RefreshProjectVersionsAsync();
|
||||
ProjectArchiveMessage = Projects.Count == 0
|
||||
? "Nessun progetto salvato."
|
||||
: $"{Projects.Count} {(Projects.Count == 1 ? "progetto salvato" : "progetti salvati")} nell'archivio interno.";
|
||||
@@ -1380,10 +1390,18 @@
|
||||
{
|
||||
SelectedProjectId = args.Value?.ToString() ?? string.Empty;
|
||||
ProjectFolder = SelectedProject?.Folder ?? string.Empty;
|
||||
SelectedVersionId = string.Empty;
|
||||
await RefreshProjectVersionsAsync(true);
|
||||
}
|
||||
|
||||
private async Task RefreshProjectVersionsAsync(bool resetSelection = false)
|
||||
{
|
||||
ProjectVersions = string.IsNullOrWhiteSpace(SelectedProjectId)
|
||||
? []
|
||||
: await ProjectStorageService.GetVersionsAsync(SelectedProjectId);
|
||||
if (resetSelection || ProjectVersions.All(version => version.Id != SelectedVersionId))
|
||||
{
|
||||
SelectedVersionId = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private Task UndoMapChange() => JS.InvokeVoidAsync("lmeMap.undoMapChange").AsTask();
|
||||
@@ -1405,6 +1423,7 @@
|
||||
await RefreshProjectsAsync();
|
||||
SelectedProjectId = copy.Id;
|
||||
ProjectFolder = copy.Folder;
|
||||
await RefreshProjectVersionsAsync(true);
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", $"Progetto duplicato: {copy.Name}.");
|
||||
}
|
||||
|
||||
@@ -1424,6 +1443,7 @@
|
||||
var renamed = await ProjectStorageService.RenameAsync(project.Id, requestedName);
|
||||
await RefreshProjectsAsync();
|
||||
SelectedProjectId = renamed.Id;
|
||||
await RefreshProjectVersionsAsync();
|
||||
NewProjectName = renamed.Name;
|
||||
if (!HasUnsavedChanges)
|
||||
{
|
||||
@@ -1488,6 +1508,7 @@
|
||||
var imported = await ProjectStorageService.ImportProjectAsync(path);
|
||||
await RefreshProjectsAsync();
|
||||
SelectedProjectId = imported.Id;
|
||||
await RefreshProjectVersionsAsync(true);
|
||||
await JS.InvokeVoidAsync("lmeMap.showInfo", $"Progetto importato: {imported.Name}.");
|
||||
}
|
||||
|
||||
@@ -1588,6 +1609,7 @@
|
||||
existing?.Id);
|
||||
await RefreshProjectsAsync();
|
||||
SelectedProjectId = saved.Id;
|
||||
await RefreshProjectVersionsAsync();
|
||||
NewProjectName = saved.Name;
|
||||
await JS.InvokeVoidAsync("lmeMap.setProjectReadOnly", false);
|
||||
await JS.InvokeVoidAsync("lmeMap.markProjectSaved");
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
<ApplicationId>com.companyname.lmemappecatastaliapp</ApplicationId>
|
||||
|
||||
<!-- Versions -->
|
||||
<ApplicationDisplayVersion>0.4.6</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>41</ApplicationVersion>
|
||||
<ApplicationDisplayVersion>0.4.7</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>42</ApplicationVersion>
|
||||
<Version>$(ApplicationDisplayVersion)</Version>
|
||||
|
||||
<!-- To develop, package, and publish an app to the Microsoft Store, see: https://aka.ms/MauiTemplateUnpackaged -->
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
|
||||
App .NET MAUI Blazor Hybrid per Android, iOS, Mac Catalyst e Windows, pensata per consultare mappe catastali e lavorare sul campo con GPS.
|
||||
|
||||
## Versione 0.4.7
|
||||
|
||||
- La ricerca nel pannello Layer conserva correttamente posizione e selezione del cursore durante il filtraggio; digitando `pio` il testo non viene piu invertito in `oip`.
|
||||
- L'elenco revisioni viene aggiornato dopo salvataggi manuali e automatici, rinomina, importazione e selezione del progetto.
|
||||
- Il pannello Progetti mostra quante revisioni sono disponibili e spiega quando un progetto appena creato non possiede ancora versioni precedenti.
|
||||
|
||||
## Versione 0.4.6
|
||||
|
||||
- `Mostra cornice/layer del foglio` carica dal WFS ufficiale AdE il vero confine `CP:CadastralZoning` di ciascun foglio delle particelle.
|
||||
|
||||
@@ -85,7 +85,7 @@ public sealed class MapExportService
|
||||
{
|
||||
var root = new XElement("gpx",
|
||||
new XAttribute("version", "1.1"),
|
||||
new XAttribute("creator", "LME Mappe Catastali 0.4.6"),
|
||||
new XAttribute("creator", "LME Mappe Catastali 0.4.7"),
|
||||
new XAttribute(XNamespace.Xmlns + "xsi", "http://www.w3.org/2001/XMLSchema-instance"),
|
||||
new XElement("metadata", new XElement("name", name)));
|
||||
foreach (var feature in features.EnumerateArray())
|
||||
|
||||
@@ -2019,9 +2019,15 @@ function renderLayerSelectionToolbar() {
|
||||
</div>`;
|
||||
const search = toolbar.querySelector("input");
|
||||
search.addEventListener("input", () => {
|
||||
const selectionStart = search.selectionStart ?? search.value.length;
|
||||
const selectionEnd = search.selectionEnd ?? selectionStart;
|
||||
lmeState.managerSearchText = search.value;
|
||||
refreshLayerManager();
|
||||
requestAnimationFrame(() => document.querySelector(".layer-selection-toolbar input")?.focus());
|
||||
const replacement = document.querySelector(".layer-selection-toolbar input");
|
||||
if (replacement) {
|
||||
replacement.focus({ preventScroll: true });
|
||||
replacement.setSelectionRange(selectionStart, selectionEnd);
|
||||
}
|
||||
});
|
||||
toolbar.querySelectorAll("button").forEach(button => button.addEventListener("click", () => {
|
||||
const records = [...lmeState.managerSelectedObjectIds]
|
||||
|
||||
Reference in new issue
Block a user