DataWeb 11.0.016/08/2024

Cosa c'è di nuovo
Con questa major version introduciamo tantissime novità sia a livello tecnologico che di funzionalità.
Per un approfondimento dettagliato vi rimandiamo alle sessioni di training dedicate.
 
  • Nuove funzionalità
    • Utente: se l'attuale utente è Developer, viene visualizzato anche questo ruolo nel form utente
    • EmailService: l'indirizzo mittente FromAddress non è più richiesto e può essere centralizzato in AppSettings
    • Newsletter: possibilità di caricare documenti al modello newsletter con download diretto dalla mail (richiede relativo endpoint nell'app)
    • Gestito il salvataggio di una sezione dati aggiuntiva solo se attiva, in questo modo si possono rendere obbligatori controlli su sezioni dati opzionali
    • SiteMap: integrazione della classe SiteMap per generare lato server le site map del progetto
    • Gestione delle notifiche sulla sezione con visualizzzione nella header, nel selettore sezioni, nella dashboard
      • Nuovo metodo ereditabile GetSectionNotificationCountAsync in Module
      • Notifica del job in elaborazione nei moduli di import con GetSectionNotificationCountAsync
      • Nuovo campo ReferenceId per le AppNotification in modo da poter richiamare una notifica ormai scaduta
    • Integrazione delle sezioni AppSettings, Storage, AppErrors e AuditEvents nella struttura a sezioni di DataWeb
      • Le sezioni Settings beneficiano di tutte le funzioni delle sezioni native di DataWeb come ad esempio gli widget e le notifiche
      • Permessi Private_Settings personalizzabili sulle sezioni Settings
    • Revisione di AuditEvent
      • Revisione del modulo di logging e conversione in AuditEvent
      • Nuovo metodo in AuditService per la retention dei log DeleteExpiredEntriesAsync(expirationDate)
      • Nuovo campo EventContext per segmentare gli eventi
      • Nuovo campo EventValues per tracciari i valori dei dati modificati
      • Modifica dei tipi di azione al presente (esempio Modified diventa Modified)
      • Integrazione di AuditEventStore nello storage CosmosDB con il pacchetto DataWeb.Data.AzureCosmosDB
    • Revisione autenticazione e integrazione Authorization Server per SSO
      • Rimozione dell'autenticazione con BearerToken e passaggio a cookie con AntiForgeryToken con BFF pattern
      • Rinnovo cookie di autenticazione periodico
      • Struttura dati e integrazione degli endpoint Token e Exchange
      • Flusso di generazione e integrazione certificati per encryption e signing
      • Integrazione di AuthorizationCodeFlow con PKCE per mobile e webapp
      • Integrazione di CredentialFlow per comunicazione M2M
      • Integrazione delle funzioni di Introspection, Revocation, Pruning
    • Integrazione dell'interfaccia IFile per la gestione di file su diversi storage
      • Revisione di MediaService e di tutto il flusso di elaborazione dello stream dati
      • Introduzione di FileService
      • Revisione di tutti i componenti sia in lista che nei form
    • Gestione immagini
      • Generazione delle thumbnail in formato Webp
      • Possibilità di modificare il nome del file
      • Integrazione dei settings per immagini e documenti
        • Opzione di rimozione dei metadati nelle thumbnail e su ImageResult
        • Opzione per mantenere il formato originale dell'immagine nelle thumbnail
        • Opzione per impostare la qualità delle thumbnail
      • Integrazione del cropping dell'immagine e relativa gestione nei Settings
      • Integrazione di ImageContext per le thumbnail per segmentare le miniature su ImageResult
      • Integrazione di un metodo delegato per eseguire elaborazioni sulle thumbnail su ImageResult (es: watermark)
      • Opzione di disattivazione del crop sulle thumbnail su ImageResult
    • Miglioramento di ModuleList
      • Nuova navigazione delle sezioni adiacenti a quella corrente
      • Nuova visualizzazione Card nelle liste con gestione lato utente tra Table e Card e valore predefinito nei Settings della sezione
      • Passaggio alla clipboard nativa per spostare e collegare item
      • Section DataField: aggiunto il campo ListName per visualizzare in lista e nel filtro di ricerca i titoli dei valori
      • Section DataField: gestione del campo nidificato in un dato strutturato
      • Revisione della funzione clona di item in Clona dati con replica solo delle versioni attive e in staging
      • Revisione della funzione elimina di item con semplificazione delle azioni in base al numero di relazioni
    • Integrazione dei ListWidget
      • Classe e componente altamente personalizzabili per visualizzare dati e asset nelle liste
      • Revisione generale degli widget in lista con ListWidget e gli hook ProcessValue e ProcessDeferredValueAsync
      • ProcessDeferredValueAsync permette di recuperare dati che richiedono una maggiore computazione successivamente
      • Nuovo ListWidgetLabel per mostrare dati Structured o personalizzati
      • Nuovo ListWidgetImage per mostrare immagini da un percorso predefinito
      • Nuovo ListWidgetCultureList per visualizzare un elenco di culture dato un dato strutturato di CultureEditor
      • Nuovo ListWidgetCustom per personalizzare il contenuto della lista
      • Miglioramento di ListWidgetFileRender e ListWidgetFileDowload per migliori prestazioni e disaccoppiamento da Item
    • Integrazione delle ContextAction
      • Revisione completa delle azioni esistenti sui controlli del form attraaverso ContextAction
      • Permette di inserire azioni su controlli e moduli Explorer
      • Supporto a ModuleList e ModuleListEdit con contesti FilteredItems e SelectedItems
      • Nuove opzioni di esecuzione delle azioni: IsConfirmRequired, IsSaveItemBeforeProcess, IsReloadAfterProcess
      • Revisione del flusso di esecuzione dell'azione con ActionHelper: conferma, dialog, validazione, salvataggio, esecuzione, aggiornamento dati
      • Recupero valore risultante dalla action direttamente nel controllo associato senza ricaricare la pagina (vedi traduzione con CultureEditor)
      • Possibilità di richiedere dati con una dialog attraverso la proprietà DialogFormName
    • Nuova entità BasicItem
      • Gestione delle entità basic con BasicItemService e BasicItemStore
      • Tracciamento delle modifiche
    • Nuovo ModuleListEdit con metodi personalizzabili
      • Gestione delle funzioni CRUD con entità custom o con BasicItem
      • Gestione di creazione, modifica, tracciamento campi modificati, ordinamento, clonazione, eliminazione, ricerca e filtratura
      • Gestione di IsWrite sul singolo elemento
      • Gestione dello status opzionale
      • Pieno supporto di permessi, DataField, ListWidget, Form, ContextAction
    • Resource: gestione dello status per avere risorce attive, inattive ed eliminate con soft delete
      • integrazione in ModuleListEdit con BasicItem
      • Duplicazione di una risorsa con status Deleted
      • Solo le risorse Active sono recuperate nel progetto
    • NewsletterSubscriber: integrazione in ModuleListEdit con BasicItem
      • NewsletterSubscriber: nuovo Status Deleted per applicare il pattern soft delete agli iscritti newsletter
    • Template: integrazione in ModuleListEdit con BasicItem
    • Miglioramento versioni
      • Aggiunta dell'anteprima contemporanea per più versioni in culture diverse
      • Revisione completa del flusso di gestione degli stati versione
      • Aggiunti controlli per segmentare meglio le versioni Global da quelle di cultura (non possono essere attive o in anteprima contemporaneamente)
    • Nuovo modulo Cronologia
      • Nuovi campi dati per tutti gli item: IsVersionHistory, VersionDate
      • VersionDate: viene utilizzato per ordinare le versioni History
      • IsVersionHistory: marca una versione come in cronologia
      • Una versione History è collegata alla parent con il VersionName: 01-01
      • Le versioni History non sono visualizzate nella lista delle versioni ma elencate nella modalità cronologia
      • Ogni modifica crea una versione History se IsVersionHistory è attivo nelle opzioni della sezione dati
      • Viene creata una nuova versione History solo se ci sono campi modificati e sono passati almeno 10 min dall'ultima versione History
      • Si possono avere massimo 10 versioni in cronologia, la più vecchia viene progressivamente rimossa
      • Il file associato viene replicato nella versione History
      • Una versione History non è modificabile
      • Una versione è History può essere ripristinata sulla versione collegata
      • Al ripristino viene clonato il file per preservare la rimozione della versione in cronologia e del relativo file
      • Una versione History è eliminabile (status Deleted)
    • Nuovo controllo TextEditor
      • Integrazione del nuovo editor con pacchetto Webpack dedicato
      • Integrazione dei plugin standard
      • Visualizzazione del contenuto per desktop, tablet, smartphone e full screen
      • Drag'n drop e incolla per le immagini con autogenerazione del relativo item nella sezione immagini
      • Palette di selezione immagine e documento con drag'n drop e selezione
      • Palette di selezione template con drag'n drop e selezione
      • Plugin custom ImageSize per impostare la dimensione dell'immagine sulla base delle risoluzioni definite nell'app
      • Plugin custom ImageSizePreset per impostare visivamente e rapidamente le quattro dimensioni più comuni
      • Plugin custom ResizeMode per impostare la ratio dell'immagine tra Crop e Fix
      • Plugin custom per gestire le risoluzioni aggiuntive delle immagini per smartphone e tablet
      • Recupero della lista di stili nell'editor da lista DataWeb dedicata
      • Opzione nella creazione del controllo per il caricamento di un foglio stili dedicato all'editor
      • TextEditorClassic per retro compatibilià sui contenuti esistenti
      • Gestione degli editor con caricamento selettivo in base a TextEditor o TextEditorClassic
    • Modulo Translate
      • Attivazione del servizio Translator di XTRA
      • Integrazione del nuovo pacchetto NuGet DataWeb.Localization.AzureTranslator
      • Integrazione in Control del metodo perdonalizzabile ProcessOnTranslateAsync per elaborare il valore durante la traduzione
      • Aggiunta della proprietà IsLocalization per i controlli del form
      • Gestione della traduzione per il controllo Slug
      • Gestione della traduzione per il controllo TextEditor con supporto ai link
      • Gestione della traduzione di più versioni contemporaneamente
      • Traduzione automatica in CultureEditor senza ricaricare il form
      • Gestione di TranslationRule per vincolare alcuni valori di traduzione con store custom https://learn.microsoft.com/en-us/azure/ai-services/translator/dynamic-dictionary
    • Dialog di sistema
      • Nuovo modulo per la gestione di dialog modali sia il lista che nel dettaglio
      • Dialog di traduzione della versione con selezione della versione sorgente
      • Dialog di aggiunta nuova versione con selezione cultura e traduzione automatica
      • Dialog Gestione Versioni con le azioni traduci, imposta stato, aggiungi localizzazioni
    • ResourceAnalyzer
      • Audit del codice sorgente per identificare risorse non utilizzate o mancanti
      • Nuovo endpoint DataWeb ad accesso con AppKey per il recupero di tutte le informazioni delle risorse
      • Report Csv risorse Unused
      • Report Csv risorse Missing
      • Possibilità di impostare le opzioni di analisi da AppSettings o da linea di comando
      • Generazione Csv con https://joshclose.github.io/CsvHelper/
  • Struttura
    • Impostato VoidId (-1) per la SectionPart nuova, in questo modo è possibile riconoscere una SectionPart non salvata
  • Tecnologia
    • Async Cancellation Token: integrazione a tutti i livelli del token di cancellazione della richiesta
    • Sostituita la validazione indirizzo email da RegEx a EmailAddress, validazione manuale con: var emailChecker = new System.ComponentModel.DataAnnotations.EmailAddressAttribute()
    • Integrazione di TimeProvider https://blog.nimblepros.com/blogs/finally-an-abstraction-for-time-in-net/
    • Sicurezza e stabilità: aggiornamento dei pacchetti server side NuGet
    • Sicurezza e stabilità: aggiornamento dei pacchetti client side NPM
  • Prestazioni
  • Sviluppo
    • NewsletterEvent: refactoring eventi newsletter e aggiornamento DataDeliver
    • Form: integrazione della proprietà "controls" sul controllo per aggiornamento cross componente (vedi FileRender)
    • Localizzazione: gestione della cultura nativa DataWeb attraverso HTTPContext.Items e rimozione di CultureInfo in Localizer (vedi cultura en-CZ)
    • Pagination: integrazione di PaginationHelper.GetPaginationInfo() per il recupero delle informazioni di paginazione
    • TypeScript Common: integrazione di UrlHelper per il recupero di un valore nei parametri dell'url con UrlHelper.getUrlParamValue
    • Debug: tracciamento delle query nella console in fase di Debug
    • DevOps: integrazione delle migrazioni DevOps alla nuova versione
    • DevOps: ottimizzazione del processo di migrazione con dati in linea
    • DevOps: progress console tracing
    • DevOps: rigenerazione dell'indice delle posizioni data una sezione (vedi AvionTourism.com)
    • TemplateApp: aggiornamento di TemplateApp ai nuovi pattern
  • Correzioni
    • Bugfix: la selezione della versione nella lista a volte non funzionava perché l'evento di click era solo sul testo e non su tutto il pulsante
    • Bugfix: su connessioni lente poteva accadere di salvare i dati di un item figlio su quelli padre, aggiunto il controllo di nav in moduledata
    • Bugfix: Redirect con periodo impostato non funzionava a causa di un controllo errato
    • Tuning e bugfix generale
11.0.0 16/08/2024 10.8.3 15/04/2024 10.7.54 02/11/2023 10.7.23 31/01/2023 10.7.17 01/10/2022