gwplatform:release_notes

Release Notes

Il versioning dei rilasci di Geoweb segue il pattern

MAJOR . MINOR . FIX

dove l'incremento di:

MAJOR porta ingenti cambiamenti all'architettura del software,
MINOR porta una serie di nuove funzionalità,
FIX porta bug fix e piccole changes retro compatibili.

Le versioni 4.X.Y con X DISPARI si considerano sperimentali, mentre con Y PARI sono prossime alla release.

Matrice compatibilità Geoweb / MapGuide :

versione Geoweb versione MapGuide
4.6.x 3.1.1.9378
4.5.x 3.1
4.4.x 3.1
4.3.x 3.0
4.2.14 2.1
4.1 2.1
4.0 2.1

rev 46bf229978240be21acf9e75a9bae65ea5371a8b

date 2024/05/09

NEW FEATURES

  • Modificata la logica di visualizzazione dei layer di background. L'sdf non risiede più nella tabella gwd_layout ma sta nella gwd_drawing. I layer di sfondo devono essere fatti puntare ad un Feature Source su Maestro con lo tesso nome del drawing type. Contestualmente è stato sviluppato il metodo /upgradeSDFToGwdDrawing (richiamabile a browser) che consente di riconciliare i vecchi modelli dati (sdf su gwd_layout) con quello attuale (sdf su gwd_drawing) (issue #1297)

REFACTORS

  • Raggruppati tutti i metodi relativi agli sdf nei controller SdfController (package

com.geowebframework.webclient.controller.commons.map) e nel service SdfService (package com.geowebframework.dataservice) (issue #1297)

rev 44673039a2e78149547ae155b313b599c0ee2e8a

date 2024/05/09

BUGFIX

  • Scheda gwclasslist importata in altri leafitem - nuovo parametro per nascondere la riga azzurra che dovrebbe fare da cornice al tab (issue #1306)
  • Dashboard todolist: integrati parametri della scheda gwclasslist (issue #1305)
  • widget CheckBox sistemata stilizzazione del widget con readonly true (issue #1304)
  • Keycloak url per token, modifica profilo e change passowrd (issue #1303)
  • Risolti bug nella cancellazione di documenti (widget Rest Document e Cmis Document); gestita allo stesso modo per entrambi i widget l'eliminazione del documento: ovvero mostrando all'utente una finestra di conferma e in caso di scelta positiva, eliminando il documento prima che venga salvata la maschera di dettaglio (issue #1300)
  • ConfigurationProperties evitati errori nella rilettura con getBoolean() di property che, anche se erano dichiarate nel remapConfiguration.properties, venivano dichiarate non valorizzate nel configuration.properties (issue #1301)
  • Aggiunta implementazione getTokenUrl nel caso di autenticazione keycloak (issue #1299)
  • Corretto l'url di Cambio Password nel caso di autenticazione keycloak (issue #1298)
  • widget actionWidget resa sensibile l'intera cella al fine si eseguire l'azione (issue #1294)
  • widget LinkListNam risolti errori randomici dovuti a problematiche cache (issue #1296)
  • gwClassDetail risolto errore validazione widget mostrato in dialog, che si verificava al click su 'Crea'/'Salva' in presenza di widget date (handleTime true) required e non valorizzato (issue #1293)
  • widget time risolto errore bloccante riguardante il recupero del value (issue #1290)
  • widget ContentHandler/ContentHandlerRest risolto spaginamento del gwClassDetail quando era in un gruppo attributi seguito da altri widget (issue #1289)
  • gwClassDetail aperto da leafItem: adesso funzionano anche le proprietà di api: initialsValuesMap, extraBottomToolbarButtons (issue #1287)
  • scheda layout2D - tab gestione layers - adesso i checkbox delle tematizzazioni layer, contenute sotto un nodo non checked, vengono stilizzate differentemente (in grigio), al fine di notificare l'utente che attualmente non sono visibili in mappa (issue #1286)
  • risolto un problema con i filtri su classi collegate e parentesi mancanti (issue #1285)
  • import csv risolte problematiche legate al cambio delle variabili in sessione durante procedura di import (issue #1284)
  • Password dimenticata: il link di resetPassword ora viene costruito a partire dal parametro baseUrl in modo che sia sempre corretto (issue #1283)
  • dbWindowList nelle childList: rilasciato un nuovo fix per la risoluzione di problemi sui campi con alias (issue #1281)
  • incrementata velocità apertura dei componenti: gwProject, gwClassDetail, gwClassList, layout2D, layout3D, bimData3D (issue #1280)
  • ambiti in cache: modificata la funzione di calcolo hashcode della classe ScopeDefinition (issue #1282)
  • gwInfo variabile namespace globale js: aggiunta informazione gwVersionToShow (issue #1279)
  • Report HTML: il parametro jrPageWidth ora viene applicato solo sulla reportHTML in cui è definito (issue #1278)
  • widget dbSuggestBox risolto errore oracle ORA-00906 (issue #1277)
  • BimData: Risolto errore bloccante all'apertura del visualizzatore 3D generato a partire dalla 4.6.11.22 (issue #1275)
  • modulo arredi: risolto errore bloccante che si manifestava al salvataggio delle modifiche in mappa2D (issue #1274)
  • dashboard ToDoList: corretto parse della stringa html (issue #1273)

NEW FEATURES

  • webclient aggiunto @RequestMapping /reloadConfiguration GET per ricaricare il configuration.properties (issue #1302)
  • Aggiunto parametro sessionId agli eventi registrati su ElasticSearch (issue #1291)
  • Aggiunta gestione notifiche scadenzario nel plugin gw-advanced (issue #1271). N.B.: E' stato modificato il modello dati aggiungendo un nuovo

campo username_recipient alla tabella evt_event_recipient.

  • aggiunto il tag <gwNotificationSettings> all'xml di progetto: da ora questo tag è sempre presente di default nei nuovi progetti. Serve a mostrare nella barra del progetto (in alto a destra) il pulsante per aprire il pannello di visualizzazione delle notifiche. Ha due parametri: notificationsManagementDisabled per abilitarlo o disabilitarlo e gwDomain per filtrare le notifiche da mostrare in uno specifico progetto (issue #1241)
  • gwHtmlReport introdotti nuovi selettori css per stilizzare le report HTML (che sia ggiungono a gwReportRow gwReportButton):
    • gwReportRowOddStyled: usato per la banda della riga della report, da usare per silizzare le righe pari
    • gwReportRowEvenStyled: usato per la banda della riga della report, da usare per silizzare le righe dispari
    • gwReportRowGrouper: usato per le intestazioni (o anche raggruppamenti) delle riga della report (grigio chiaro #CCCCCC)
    • gwReportRowGrouperGrouper: usato come ulteriore livello di gearachizzazione, superiore a gwReportRowGrouper (grigio #EAEAEA) (issue #1276)

NEW COMPONENTS

  • gw-notification-client (v2.0.0) - è il componente che introduce la possibilità di visualizzare e di registrare le notifiche all'interno del framework. Per il suo utilizzo vanno aggiunti alcuni parametri al configuration.properties:
    • mongo.db_event_notification=EVENT_NOTIFICATION
    • notifications.management.disabled
    • notifications.management.maxNumber
    • notifications.management.limitDays
    • gwDomain
    • gwTheme
  • scheda gwOrgChart per la visualizzazione navigazione ed esportazione di entità gerarchiche (issue #1267)

rev 85f9f52021f6ac42e2b9d44c141b188a4258f754

date 2024/03/19

BUGFIX

  • workflow risolto errore java.text.ParseException: Unparseable number: “newItem” su startTaskForm (issue #1272)
  • mongo query builder risolti errori di carattere generale sulla gestione filtri (issue #1270)
  • widget ChildList js api gwSetReadonly() adesso setta readonly anche su eventuali righe (issue #1269)
  • Fix per retrocompatibilità content handler rest con classe della forma (issue #1266)
  • ENHANCEMENT: Migliorata gestione del parametro docFormatsColumn su widget Content Handler e Content Handler Rest. Adesso le estensioni vengono valutate si ascritte con il punto davanti sia senza punto davanti (issue #1262)
  • ObjectSelector (ex gwMenuTitle) dialog selettore oggetto di contesto - ora al rowclick non apre più dettaglio classe, ma seleziona il record (issue #1265)
  • widget LinkList/LinkListNam adesso il widget è sempre pronto quando si invocano api js (come gwSetReadOnly()) su azione di dettaglio pronto. Anche la prima volta, con cache metadati cancellata e useCompressed true. Posticipato evento 'gwClassDetail/gwAttributeReady', nelle grid toolbar (issue #1261)
  • migliorata gestione errore 504 GatewayTimeout: introdotte le nuove variabili per il messaggio e per il titolo della finestra di dialogo da mostrare all'utente. Aggiunta gestione dell'errore 504 nella funzione js sendGwForm. (issue #1258)
  • widget SelectionListWidget implementata gwSetValue()/gwGetValue() js api, che gestisce anche i valori provenienti da gwAction eseguita da gwClassDetail/gwClassList (issue #1254)
  • widget Attachments - risolto bug in caso di parametro templateFolderPath valorizzato. In questo caso il widget non veniva correttamente mostrato perché ricreava ogni volta la struttura template andando in errore dato se le cartelle già esistevano (issue #1253)
  • widget LinkListNam - rimosse colonne degli ActionWidget messi in lista per la classe target, che davano un errore per riga (issue #1239)
  • scheda gwHtmlReport ripristinato funzionamento css class reportlink, che serve ad evidenziare all'utente i button/row elenchi clickabili. Dato che in 4.6 lo stile hover dei button è differente da quello delle row delle grid, sono state aggiunti contestualmente i selettori css (integrabili nelle report):
    • gwReportButton: da usare per i button (come reportlink, di cui ne viene scoraggiato l'uso per le nuove report)
    • gwReportRow: da usare per le row degli elenchi (issue #1251)
  • Classificazione ed attributi variabili - errori vari gwClassFilter/gwClassDetail. Problematiche risolte
    • scegliendo filtri sugli attributi variabili ed applicandoli alla grid, chiudendo e riaprendo il filtro, non vengono ri-applicati alla form del filtro
    • applicando filtri sugli attributi variabili con dataType 'number'/'integer' non viene applicato il filtro in quanto viene passato datatype 'string'
    • nella form di dettaglio degli attributi variabili, non venivano salvati i valori degli attributi variabili di tipo date
    • dialog di gestione attributi variabili spaginate (issue #1246)
  • ListService gestione valori data sqlserver. Aggiunto supporto dei formati string:
    • 'yyyy-MM-dd HH:mm:ss.S'
    • 'yyyy-MM-dd HH:mm:ss.SSS'
    • 'yyyy-MM-dd HH:mm:ss.SSSSSSS'
    • 'yyyy/MM/dd HH:mm:ss.S'
    • 'yyyy/MM/dd HH:mm:ss.SSS'
    • 'yyyy/MM/dd HH:mm:ss.SSSSSSS' (issue #1250)
  • QueryBuilder usava impropriamente LOWER() anche per valori di gwFilter con dataType diverso da 'STRING' (issue #1249)
  • scheda layout2D adesso gli le entità selezionate in mappa ed il drawing (in caso di planimetria), possono essere, previa configurazione, notificate prepopolate in caso di apertura del dialog di filtro (semplice ed incrementale) dalla gwClassList sottostante la mappa ed eventualemnte bloccate (come staticFilter su prop drawing, solo nel filtro semplice) Inoltre drawing si puo usare come queryClause nelle query dei filtri (di tipo ListChoice/WindowChoise) per limitare i record visibili dall'utente (issue #1248)
  • buildFormContainerParams() require non sync con useCompressed true Causava l'errore per cui le form custom aperte, solo la prima volta, da gwAction su leafItem xml di progetto erano vuote (issue #1247)
  • GwGroovyScriptEngineService getSessionObjectVars() aggiunti empty check ed exception (in caso di valore errato) su parametro projectName (issue #1245)
  • gwClassFilter incremental + classificazione - risolti errori legati alla presenza del campo id_entity_classification in lista filtri (issue #1242)
  • importCSV()/importSHP() - segnalare eventuale presenza due intestazioni di colonna con uguale nome su import (issue #1243)
  • scheda layout2D planimetrica - i layer spariscono su resize mappa (issue #1240);
  • gwClassFilter incremental risolto errore bloccante dovuto a mancante spread in function areEqualsFilterList() (issue #1237)
  • scheda layout2D ripristinata compatibilità OpenLayers 2 con Google Maps api v3 (issue #1235)
  • scheda layout2D risolti errori editing linestring usando funzione aggiungi punto esplicitando delta x e delta y (issue #1234)
  • gwScheduler risolto errore che si verificava temporaneamente con flag gwscheduler.clusterMode.enabled=true ed temporanee impostazioni non-sense (poi cambiate) (issue #1233)
  • gwChangeScopes() errore su cambio ambito: Si è verificato un errore: User has no permissions for this Project (issue #1232)
  • insertClassRecord()/updateClassRecord() risolto errore con valori geometria lineare (polilinea) in formato WKT (LINESTRING (…) (issue #1230)
  • scheda gwLayout2D, risolto errore bloccante in apertura nei casi di assenza di almeno un MapGuide Layer correlato a ad un gwLayer, tramite convenzione stesso nome (Es: presenza di soli layer MapGuide con fonte dati .shp) (issue #1231)
  • Gestione utenti con keycloak;
    • Nuove signle identificative per le piattaforme (issue #1229)
    • Corretto Nuovo Utente nelc aso di realm senza ruolo (caso di singola piattaforma) (issue #1227)
    • Corretto errore per cui utente veniva eliminato da geoweb ma non da keycloak (issue #1194)
  • homeButton.iconName= corretti malfunzionamenti parametro configuration.properties. convenzioni:
    • favicon: cercata qui WEB/images/svg/platform_favicon.svg. Per consistenza con i meccanismi delle pagine di accesso, viene preventivamente cercata sotto WEB/images/ con i nomi platform_favicon.svg o platform_favicon.ico
    • customLogo: Per consistenza con i meccanismi delle pagine di accesso, viene cercata sotto WEB/images/ con i nomi custom_logo.svg o custom_logo.ico
    • platform_logo: cercata qui WEB/images/svg/platform_logo.svg. Per consistenza con i meccanismi delle pagine di accesso, viene preventivamente cercata sotto WEB/images/ con i nomi platform_logo.svg o platform_logo.png (issue #1225)
  • Indice progetti Geoweb - (nei progetti senza pagine di accesso) far aprire le Function/gwProject sempre su un tab indipendente (issue #1224)
  • gwUserSettings risolto errore per cui non compariva nella nav-bar per nomi utente contenenti '.' (issue #1223)
  • gwClassFilter Semplice ed Incrementale - risolto errore su 'Applica' attributi con scelta da Fiestra (windowChoice) (issue #1222)
  • Monitoring risolto errore su sqlserver del MonEventService metodo insertMonEvent(MonEvent event) (issue #1221)
  • workflow groovy processo rese di nuovo disponibili variabili gw_ActiveUser/mgSession (issue #1219)
  • tabella gwm_attributes record con campo ctrl_type = null Aggiunti check per evitare NullPointerException in vari punti del codice (issue #1217)
  • GwApprovals - Fix elenco sostituti per un livello approvativo (issue #1218)

NEW FEATURES

  • Miglioramenti report jasper HTML: applicazione del font di Geoweb (se configurato Arial nella report), aggiunte proprietà per impostare la larghezza, migioramento classi css (gwReportButton e gwReportRow) (issue #1268)
  • Introdotto leafitem per dashboard di tipo todolist (issue #1259)
  • widget image aggiunta possibilità di selezionae file .svg (issue #1263)
  • Nuovo modulo Maven gw-support-config, con stesso versionamento del framework, che ha lo scopo di raggruppare tutti i file a corredo dei vari componenti, utili alla configurazione. Include, ma non si limitam, a:
    • script
    • metadati
    • readme/documentaizone di rilascio (issue #1256)
  • Sostituzione visualizzatore lite XKT con un visualizzatore GLTF da utilizzare insieme al convertitore python gw-ifcopenshell-um (#1244)
  • Aggiunto nuovo parametro (keycloak.isIdentityBroker) e modifiche api per utilizzare il keycloak di Geoweb come Identity Broker (issue #1236)

rev b6f70d937fd9da6d1b987adf12a5ff695fcb47d7

date 2024/01/30

BUGFIX

  • gwClassList e derivate - risolti errori su invocazione api js che utilizzavano record selezionati dall'utente con SHIFT (O CTRL) e magari non scaricati dalla grid (tipicamente elinimazione sui record selezionati, selezionando molti record da una lista molto lunga, scrollando velocmemente le pagine). Adesso i record selezionati vengono recuperati tramite async function retrieveObjectsSelectedOfGridAsync(), che depreca retrieveObjectsSelectedOfGrid(). Servono inoltre accortezze nell'invocazione della nuova api. js API che erano interessate:
    • deleteRowSimplified()
    • refineGwClassList()
    • azioni in toolbar gwClassList e derivate
    • azioni sostituzione Nuovo in gwClassList e derivate
    • openListReportWithFilter()
    • openTemplateReportWithFilter()
    • getItemSelectedFromGrid()
    • getItemSelectedFromSelectionList2Grid()
    • importMoreThanOneBimData()
    • multipleIndirectLocalization()
    • showOnSceneAction()
    • showAssociatedItemsAction() (issue #1213)
  • widget LinkListNam risolto errore su associazione di più di 1000 record ### Cause: org.postgresql.util.PSQLException: ERROR: relation “gw_tmp_big_in_clause” does not exist Problematica correlata alle issue #1037 e alla issue #823. Altri componenti/servizi affetti dalla problematica:
    • GwClassificationService.getEntities()
    • QueryBuilderService.queryBuilderServiceSelectIN()
    • RelationWidget (issue #1212)
  • aggiunta gestione del tipo oggetto Geometry in fase di inserimento degli audit (issue #1202)
  • metodi execute*Query() - adesso l'eventuale eccezione nelle parti di gestione big in-clause, dove viene generato un errore nel caso l'utente del DB non abbia sufficienti permessi per creare le relative tabelle temporanee, viene subito rilanciata (era solo loggata, con lo stack) (issue #1211)
  • Dettaglio errori operazioni database per l'utente. Estesa la valutazione del flag display_detailed_error_messages=false del configuration.properties (default true), anche alle operazioni sui record di classe insertDetail() / updateDetail() (issue #1210)
  • navigazione intra-framework Progetti - adesso la Funzione (aka gwProgect) si apre sempre su un tab del browser esclusivo (issue #1209)
  • scopeValueWidget in gwClassList adesso mostra la description invece che il valore d'ambito. Viene visualizzata la description e non il nome d'ambito, per coerenza con il gwClassDetail (issue #1208)
  • leafItem leafItemLayoutChange risolto errore bloccante apertura dialog selettore Plan / Posizioni (issue #1205)
  • SelectionListWidget: Risolti alcuni problemi sulla gestione dei campi utilizzati dal filtro (rimosso il campo fisso site_code a favore di cod_site) e aggiustamenti grafici (issue #1204)
  • Position Widget: risolto errore su azione zoom position, e grafica 4.6.x (issue #1203)
  • leafItemListFilters fixata visualizzazione del menu quando l'utente non ha i permessi sulla gwClass. Adesso la UI viene stilizzata disabilitata come i leafItem gwClassList e gwAction (lo stesso risultato si può ottenere anche forzando esplicatmente l'attributo disabled=“true” nel tag leafItem) (issue #1200)
  • Position Widget: risolto un problema di duplicazione dei record nella lista della classe in cui è presente il PositionWidget nel caso in cui fieldToShow=fieldToStore (non applicando in questo caso la join nella query di lista) (issue #1199)
  • GwApproval: risolti errori grafici che impedivano di usare la scrollbar in gwApprovalSignAUTMode.jsp in caso di campo “Note” molto lungo oppure in caso di configurazione con riserva e allegato. (issue #1198)
  • gwUserSettings voce 'cambia password..' non rispettava il flag del configuration.properties userSettings.management.changePassword.disabled=false ed era nascosta (issue #1197)
  • Cambio Passowrd con sen server di autenticazione keycloak: modificato url (issue #1196)
  • gwClassList risolti errori in lista per widget con ctrlParam null (issue #1195)
  • gw-upload-manager - OwnersMapper.xml - I mapper xml della classe Owners (limitatamente a SQL e Oracle) puntavano ad una classe inesistente com.geowebframework.transfer.model.dataservice invece che a com.geowebframework.transfer.model.dataservice.GwdBimModel come nel caso Postgres (issue #1193)
  • widget contentHandler - contenuto DDOC - risolto errore per cui l'anteprima veniva erroneamente aperta con alcuni widget in edit (issue #1191)
  • buildFormContainerParams() js api invocato da openFormFloatingPane() e openFormDialog() ora utilizza, se disponibile, setter specifico per ogni valore fornito ai field. Per esempio impostando uno store per un field dijit/form/Select, nel costruire il widget adesso viene correttamente invocato .setStore(value), invece che .set('store', value). Prima era necessario invocare esplicitamente il setter specifico una volta che la form era gia stata aperta (issue #1187)
  • gwClassDetail risolto randomico mancato salvataggio dei campi required, che poteva avvenire per l'ultimo widget sul quale fosse stato il focus immediatamente prima del click su Crea/Salva, specialmente in contesti con useCompressed=true Componenti interessati: gwClassDetail, gwTaskDetail, gwTaskDetailProcedure, contentHandlerSCHWidget, contentHandlerRestSCHWidget, gwPhoto360 (issue #1015)
  • MultipleButtonsDialog rimossa la fastidiosa scrollbar verticale che compariva sui dialogo modali nel caso il contenuto testuale fosse stato abbastanza lungo da essere visualizzato su più di una riga (issue #1185)
  • gwClassFilter risolto errore che non permetteva di applicare il valore dal dialog di scelta sui filtri sui figli di tipo windowChoice. Problematica introdotta nella 4.6.10 con la issue #1107 (issue #1183)
  • gwClassFilter risolto errore che avveniva nel caso in caso un filtro windowChoice fosse stato configurato staticamente fra quelli della tab 'Semplificato', e si fosse impostato contemporaneamente dinamicamente anche nel tab 'Incrementale' (issue #1182)
  • GeowEventMapper risolto errore bloccante in avvio war con database sqlserver (issue #1180)
  • gwInProjectNavigationService risolta incompatibilità con autenticazione LDAP, che faceva si che non venissero recuperate le altre funzioni navigabili nel menu di navigazione intra-geoweb in base a tutti i gruppi dell'utente in sessione. L'errore era nascosto da un'eventuale popolamento della tabella di associazone Utenti-Gruppi GWM_USER_GROUPS, sulla quale in generale non va fatto più affidamento. (issue #1178)
  • Navigazione intraframework - risolto errore bloccante in avvio che avveniva qualora non ci fossero altre funzioni disponibili (issue #1177)
  • menubarItem - simulateLeafItem true - quanto menubarItem ha indice 0 rimossa automaticamente la X su intestazione tab, che ne permette la chiusura. Utile per tenere sempre fissi alcuni tab (tipicamente dashboard) (issue #1176)
  • widget externalTable errore bloccante derivante da mancato escape del initSelValue e del relativo valueToShow. Char problematici: ' “ < > (issue #1174)
  • gwClassList risolta problematica tale per cui in situazioni/ambienti particolarmente lenti (grid inglobata in altro componente con contemporaneo utilizzo dell'applicativo connessi da vpn) non venivano applicati alla griglia eventuali filters/staticFilters (issue #1169)
  • risolto errore che faceva si che comparisse codice javascript (customDojo/ErrorServerDialog.js) al posto della pagina scelta groppo/scelta progetto/progetto. Questo dopo un login correttamente effettuato, dopo averne fallito uno per credenziali errate (issue #1167)
  • navigazione intra-progetto - cambio funzione - introdotto mantenimento gruppo della funzione corrente compatibilmente con i permessi. In caso di permessi assenti viene scelto il primo gruppo abilitato, in ordine di description (issue #1166)
  • GwClassList risolto errore bloccante su ordinamento di colonna per alcuni widget: ActionWidget, Geometry, HTMLTemplate, Label, Position2Widget, IndirectLocalizationWidget (issue #1165)
  • gwClassFilter incremental, Estrattore SQL, risolto errore perdita focus input valore nel caso nella grid fosse impostato un qualunque ordine di colonna (issue #1164)
  • gwClassFilter incremental risolto errore tale per cui lo stato 'Modificato', veniva erroneamente visualizzato passando al tab 'incrementale', dopo aver imposto un filtro nel tab 'semplificato'. L'errore non era bloccante, riguardava solo la comparsa dello stato e non impediva la generazione automatica del filtro incrementale a partire dal semplice (issue #1163)
  • Report esportate: aggiunto supporto alle label custom di prodotto (attribute label) Componenti affetti: report di classe, esportazione standard lista in XLS, Estrattore SQL (issue #1162)
  • gwClassFilter semplice, gwClassFilter incrementale, Estrattore SQL: introdotto supporto alla valutazione del ctrlParam per formattare il contenuto dei valori delle UI di filtro. In particolare NumberBox sono valutati pattern e places per numberFormatType: 'NUMBER', 'PERCENT', 'CURRENCY'.
    Esempio: NUMBER, valore anno {pattern: '####.', places: 0}
    	  Esempio: CURRENCY, {currencyCode: 'EUR', pattern: ',###.00', places: -1}

    (issue #1161)

NEW FEATURES

  • js api sendGwForm() sendGwClassDetailForm() aggiunto parametro handleStandbyWidgets, boolean, default true, che evita che eventuali standByWidget/invisibleStandByWidget siano nascosti in automatico in caso di success della request. Cosi possono essere gestiti esternamente, in eventuali gwAction, in maniera tale da eseguire ulteriore codice prima nascondere manualmente standByWidget/invisibleStandByWidget. (issue #1215)

NEW COMPONENTS

DEPRECATED

  • retrieveObjectsSelectedOfGrid() depracata in favore di async function retrieveObjectsSelectedOfGridAsync() (issue #1213)

REFACTORS

rev 07aa06d22def5a651139da89056dafb0d31d86df

date 2023/11/30

BUGFIX

  • CustomJsonRestStore aggiunto incapsulamento fra parentesi dei filters e degli staticFilters prima di essere concatenati (issue #1160)
  • Il controllo di sicurezza del widget activeUser impediva di effettuare inserimenti con il servizio inserClassRecord() nel caso in cui il valore passato per l'attributo gwActiveuser non coincidesse con l'utente in sessione (puteva accadere in alcuni .groovy) Per risolvere il problema si introduce una nuova proprietà nel configuration.properties, per esplicitare la lista dei nomi degli utenti 'di sistema' considerati validi: gw.system.usernames= Per retrocompatibiltià con vecchie configurazioni, nel caso manchi totalmente sono ammessi, per default, come utenti di sistema “system” e “system_user”. (issue #1159)
  • Risolto errore caricamento file con widget Attachments (senza pagine di accesso): ri-aggiunto bean filterMultipartResolver nello spring-security.xml (issue #1158)
  • GeneralReportService generaReportListaRH() risolto errore: java.lang.IllegalArgumentException: Merged region A1 must contain 2 or more cells che avveniva quando si esportavano dati con gwClass con un solo attributo in lista (issue #1157)
  • widget Approvazioni: chiusura dettaglio alla fine del processo approvativo (issue #1153)
  • gwClassFilter risolto errore ripristino filtri della gwClassList su form simplified gwClassFilter. Casistiche affette:
    • datatype 'DATE' operator: ['is not null', 'is null', 'between', 'between (trunc day)']
    • datatype 'NUMBER' operator: ['is not null', 'between']
    • CLASSIFICATION operator ['in', 'not in'] (issue #1152)
  • dojo tree fixato errore bloccante al click sul nodo, che ne evitava anche la selezione, che avveniva dopo il refresh dell'albero (issue #1151)
  • ContentHandler: tolta obbligatorietà id_content intero (issue #1148)
  • gwClassDetail, aperto su dialog, fixati: initialValuesMap, closeHandle, callback con content (issue #1145)
  • gwClassDetail fixato supporto gwAddIconImage() su extraBottomToolbarButtons saveIconClass saveAndCloseIconClass createIconClass createAndCloseIconClass (issue #1144)
  • gwClassDetail aperto da leafItem, fixato supporto a parametri api standard (issue #1143)
  • Gestione utenti con keycloack - check esistenza utente su keycloack prima di inserire in geoweb (issue #1142)
  • widget date eventHandler change value non era chiamato nei passaggi da del valore davalue==null a value!=null (issue #1141)
  • gwClassList risolti errori bloccanti che potevano occorrere forzando l'id della grid tramite 'forceGridId'+'gridId' (issue #1139)
  • api js selectGwClassRecords() non valutava parametro sort (issue #1131)
  • gwClasslist parametri onStyleRowGwActionName onStyleRowFunctionName corretto funzionamento su leafItem e api js (issue #1130)
  • gwCsvServiceCsvConnector.exportCsvData() su widget comboBox importCSVWithoutDecoding false non era valutato (issue #1116)
  • widget html showLabelInDetail true ora fa vedere la label (issue #1127)
  • Risolto un problema che impediva di utilizzare i filtri in cascata nella maschera di filtro semplice in presenza di filtri statici (issue #1125)
  • UI gwClassFilter risolti errori bloccanti riguardanti id duplicati, nei casi:
  • apertura di due dialog di filtro di classi diverse, ma con stessi filtri sui figli
  • apertura di due dialog di filtro di componenti diversi basati sulla stessa classe componenti interessati: gwClassList e derived, gwTaskList, gwDynamicTimeLine, gwCalendarList (issue #1107)
  • MgInfoSelectionController migliorati log per aiutare a rilevare casi di errata configurazione (issue #1124)
  • gwClassDetail title ContainerNode della struttura di layout, aggiunta localizzazione e customizzazione (issue #1122)
  • api js openGwClassListX() aggiunto parametro 'columnToggling', default false, per nascondere bottone accendi/spegni colonne (che compare solo con useCookie true) (issue #1121)
  • api js openGwClassListX() aggiunto parametro 'hideFilter', default false (issue #1119)
  • js api openFloatingPane() con modal true, l'invocazione di .hide() non toglieva lo standbywidget incorporato (close() funzionava correttamente) (#1118)
  • aggiunti dojo require for 'dojo.html', che poteva causare potenziali errori casuali nell'utilizzo del frameowork, a seconda dell'ordine di caricamento UI/configurazione (issue #1114)
  • js api openFloatingPane() rese configurabili le prop: 'resizable', 'maxable', 'closable' applicate al CustomFloatingPane (issue #1112)
  • risolto un problema di visualizzazione dei caratteri speciali nelle email impostando il defaultEncoding di mailSender in UTF-8 (issue #1123)
  • GwApproval:
    • Corretto errore in fase di deploy solo su ambiente di collaudo kubernetis dovuto a dipendenza circolare (issue #1120)
    • correzione uscita anticipata dal processo approvativo con gwApproval.exitOnFirstReject = true (issue #824)
  • api js openGwDynamicTimeLineTab() ora per i parametri 'start', 'end', 'min', 'max' vengono valutati correttamente anche gli oggetti javascript Date e Moment (issue #1110)
  • DACL CUSTOM risolto malfunzionamento che non faceva più risolvere alcune espressioni ${} #{}: gw_activeUser, gw_activeGroup, ambiti e tutte le variabili in sessione (issue #1108)
  • aggiunta funzione javascript restDocumentWidgetFormatter per gestire la visualizzazione in lista del widget RestDocument. Ora il comportamento del formatter è il seguente: - Se il documento non è caricato si vede in lista un DropDownMenu disattivato, - Se invece il documento è stato caricato, il DropDownMenu è cliccabile e al click è visibile un pulsante che permette il download del file (issue #1090)
  • risolti problemi sul metodo copyExistingDocument e copyExistingObject in GwAlfrescoSession (issue #1083)
  • aggiornati messaggi di errore per GwAlfrescoSession e GwSharepointSession. Aggiunta classe GwDocObjectCreationException. Rilanciata dai metodi di creazione documenti la nuova eccezione GwDocObjectCreationException, così che il messaggio venga visualizzato dall'utente (prima l'utente poteva non accorgersi dell'errore poiché il messaggio mostrato era quello di “operazione completata con successo”) (issue #1111)
  • risolto errore durante caricamento file su Alfresco con nome contenente caratteri strani (ad esempio accenti) (#issue 1099)
  • risolto problema visualizzazione elenco versioni content handler (forma DOC) a causa del controllo permessi in GwDynamicAclService nel metodo checkPermissionByActiveGroup modificato con issue #1096 (issue #1128)
  • risolti problemi nella visualizzazione dell'elenco delle versioni per widget content handler rest (forma doc) (issue #1132)

NEW FEATURES

  • MenubarItem introdotto nuovo parametro 'simulateLeafItem' (come attributo del tag), default false. Utilizzare cosi:
    <menuBarItem name="issue_1156" label="Test issue #1156" image="img.png" simulateLeafItem="true">

    Quando posto a true, il 1st level menu deve avere un solo 2nd level menu ed un solo 1st level menu. Al click su questo tipo di menuBarItem, verrà sempre nascosto il 2nd level menu. Stessa cosa al click sulle schede aperte da qui. Il comportamento al click degli eventuali altri 1st level menu e dei relativi tab rimarrà invariato all'attuale, dove Rl click del tab si lascia inalterato lo stato espanso/collassato del 2nd level menu, mentre al click sul menuBarItem viene sempre espanso il relativo 2nd level menu (issue #1156)

  • Gestione utenti con keycloack: introdotti ruoli realm keyacloak per gestione multipiattaforma (issue #1155)
  • nuova navigazione funzioni intra progetto Geoweb. E' stato introdotto un menu con vari criteri di raggruppamento delle 'funzioni':
    • Recenti (ultime 5 App aperte, compresa la corrente)
    • Stesso oggetto (App che mantengono il focus sull' oggetto corrente, visibile solo se è presente l'oggetto in sessione)
    • Stesso gruppo (App disponibili nello stesso raggruppamento delle pagine di accesso)
    • Tutte

Le App di configurazione sono più navigabili intra progetto Geoweb, ma solo da pagina di accesso. (issue #1154)

  • gwClassFilter aggiunta sezione 'Incrementale' (issue #1149)
  • CustomFloatingPane aggiunto api js .set('dimensions', dimensions), per il ridimensionamento dopo la creazione (issue #1150)
  • Report aggiunto supporto flag useDistinct per eseguire SELECT DISTINCT sui dati durante esportazione (issue #1147)
  • gwClassList, store, aggiunto flag opzionale useDistinct, default false, per eseguire SELECT DISTINCT sui dati (issue #1146)
  • gwClassList api, aggiunto parametro avoidColumnWidthAuto boolean default false, che serve per evitare width 'auto' per gli attributi senza 'listWidth' esplicitato. La mancata esplicitazione dello width causa la loro non visualizzaizone in grid, quando sono tanti. In quanto la grid, dopo aver dato alle colonne le width eplcicitate, divide lo spazio rimanente, fra quelle con 'auto' (issue #1040)
  • CustomJsonRestStore aggiunta api js cancelAllPendingRequest(), utilizzabile per assicurarsi, prima di impostare nuovi filtri alla grid, che le eventuali richieste pending, non ancora risolte in quanto molto lunghe, manifestino i loro effetti nella grid in maniera indesiderata successivamente (issue #1138)
  • gwClassList api aggiunto parametro 'storeAdditionalPostParameters', optional, di tipo Object da javascript e JSON string da leafItem. Permette di passare parametri aggiuntivi nella POST dello store delle gwClassList (issue #1136)
  • gwClassList api, aggiunto parametro 'storeURL', string, optional (issue #1135)
  • gwDynamicTimeline aggiunto parametro 'backgroundItems' per stilizzare intervalli temporali (bloccati, festivi, etc..) backgroundItems: Object[], optional, array contenente oggetti con proprietà:
    • start: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • end: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • content, string, optional.
    • bgcolor, string, optional and mutually exclusive with className
    • className, string, optional and mutually exclusive with bgcolor (needs somewhere a css class: .vis-item.vis-background.negative { background-color: rgba(255, 0, 0, 0.2); } )
      			Examples: [
      				{content: 'Forbidden Period 1', start: '2023-01-01', end: '2023-10-01', type: 'background''},
      				{content: 'Forbidden Period 2', start: '2024-01-01', end: '2024-10-01', type: 'background', bgcolor: 'rgba(255, 0, 0, 0.2)'},
      				{content: 'Forbidden Period 3', start: '2025-01-01', end: '2025-10-01', type: 'background', className: 'blocked'}
      			]

      (issue #1126)

  • CaseInsensitiveHashMap: estenzione dell'oggetto java.util.Map ritornato dai servizi che lavorano con i record di classe, implementata sovrascrittura anche delle altre funzionalità di Map, al fine di prevenire errori combinando le api da java o groovy (issue #1109)
  • Content Handler Rest: aggiunta completa gestione delle forme SCH e GAL (issue #1049).
  • Content Handler Rest: aggiunte classi AbstractContentHandlerController e AbstractContentHandlerService per centralizzare i metodi che hanno stesso scopo, in particolare per aprire l'anteprima in base al diverso tipo di forme (issue #1051)
  • Aggiornata versione gw-xkt-visualizer a 3.0.0 in seguito alle modifiche della issue #1051

NEW COMPONENTS

  • Estrattore dataset sql (.xlsx) Wizard per la configurazione di modelli di estrazione (issue #1076)

DEPRECATED

  • Deprecati i seguenti parametri del ContentHandlerWidget (attualmente appartenenti a GwAbstractContentHandlerWidget)
       		@Deprecated protected String docFormatsColumn;
    		@Deprecated protected String docMaxSizeColumn;
    		@Deprecated protected String schAuthorColumn;
    		@Deprecated protected String schDateColumn;
    		@Deprecated protected String schQueryClausole;
    		(Deprecati anche i relativi getter e setter dei precedenti parametri)
  • Deprecati i seguenti metodi nel ContentHandlerWidgetService
    		@Deprecated public HashMap<String, Object> handleM3D (Integer attributeGwid, String idM3D, Class formClass, String xktClassName, String codContentValue, String codContentField,  Boolean isUploaded, Boolean isReadonly, Locale locale)
    		@Deprecated public void handleIFC(HashMap<String, Object> content, String contentTable, JsonServerResponse jsonServerResponse, Locale locale)
    		@Deprecated public void handleDWG(HashMap<String, Object> content, String contentTable, JsonServerResponse jsonServerResponse, Locale locale)
    		@Deprecated public void handlePTS(HashMap<String, Object> content, String contentTable, JsonServerResponse jsonServerResponse, Locale locale)
    		@Deprecated public HashMap<String,String> getFileNameResolvedByContentHandlerAttribute(Integer attributeGwid, HashMap<String,Object> map)
    		@Deprecated public HashMap<String, Object> handleV2D(String itemId, Integer attributeGwid, Class gwClass, Boolean isUploaded, Boolean isReadonly, Locale locale)

REFACTORS

  • Spostate tutte le variabile statiche del ContentHandlerService nella nuova classe GwContentHandlerWidgetFields
  • Rinominato parametro xktCmisPath in xktPath (su GwXktVisualizerController e sulle funzioni javascript che richiamavano quel controller)
  • Rinominato parametro cmsObjectId in objectId per i widget nel plugin gw-cms (sia lato jsp sia lato java)
  • Modificati tutti gli endpoint di GwXktVisualizerController (plugin gw-xkt-visualizer) in modo che abbiano l'id dell'attributo ContentHandler anziché il nome della classe parametrizzata nel widget

rev 07aa06d22def5a651139da89056dafb0d31d86df

date 2023/10/02

BUGFIX

  • classificazione: js gwGetChildClassification() errore nel caso in cui un filter di queryParameter abbia '<>' per operator (issue #1106)
  • gwDynamicTimeLine fix errore bloccante su swap entità quando valore entità raggruppante è nullo per nestedGroupItem (issue #1102)
  • widget date, popup calendar, ripristinati tasti UI incremento/decremento mese corrente persi con passaggio dojo1.16 + dojo flat (issue #1104)
  • gwClassDetail risolto errore bloccante su title contenente char apice singolo ' (issue #1101)
  • GwHealthController chiamate livenessProbe e readinessProbe livello di log portato da info debug per evitare di avere troppi log in produzione (issue #1100)
  • Layout2D mapEditing, risolta involontaria, non bloccante, attivazione mapCommand (issue #1093)
  • Layout2D mapEditing, funzione 'Edita tutti', corretto tooltip a mapCommand 'Elimina geometria' (issue #1091)
  • leafItem gwAction risolto errore tale epr cui in caso di più leafItem configurati, che facevano riferimento ad azioni di classi diverse, ma con stesso gwAction name, veniva sempre eseguita la azione del primo leafItem clickato (issue #1089)
  • gwAction alcuni servizi non popolavano il campo imageBase64, e cio impediva la visualizzazione della icona lato client (function retrieveUserActionsForSingleRecord()) (issue #1088)
  • api js openGwReport() non viene più generata eccezione nel caso className sia null. 'className' e 'actionName' ora sono valutate solo se nel configuration.properties il flag report.permission.enable= è true (issue #1087)
  • geometria LINESTRING risolto errore allo zoom in mappa java.lang.ClassCastException: class java.lang.String cannot be cast to class org.locationtech.jts.geom.Geometry (issue #1086)
  • PrintMapLegend command, in plugin, onStartUp() error, rompe le label della scheda layout2D (issue #1079)
  • dojo tree getRoot(): fix errori non bloccanti in console: “TypeError: Cannot read properties of undefined (reading 'name')\n at Object.getLabel (issue #1078)
  • Non compariva voce di menu dell'ambito, nel Menu Utente a tendina anche quando era non era disabilitata nel configuration.properties e senza tag disabledUserScopeButton true nell'xml di progetto. La voce comunque continua a non comparire quando è presente il solo ambito di default (issue #1077)
  • js api gestione sessionParameters: aggiunti log, callback clearSessionParameters() e setGwSessionParameters() (issue #1074)
  • gwContextObjectSelector migliorato rendering in caso di label molto lunghe (issue #1073)
  • gwAction di progetto pronto: erano eseguite erroneamente due volte. Solo su GeoManager. Problematica introdotta dalla 4.6.5 (issue #1071)
  • dialog gwClassFilter, aperto da externalTable dialog della scelta del contextObject, comparivano erronemaente entrambe le scrollbar (issue #1069)
  • Report HTML in floatingPane: ora compaiono le scrollbar quando necessario (issue #1068)
  • log4j2.properties modifica ai template webclient: commentata TimeBasedTriggeringPolicy (issue #1067)
  • widget contentHandler/contentHandlerRest, senza docFormatsColumn impostato, od impostato ma con relativo valore non popolato dava errore su ogni file caricato: Il formato del documento oggetto di caricamento … non è fra i formati ammessi Inoltre, su tutti i dialog di conferma, chiudendoli con la X in alto a destra, si aveva la problematica che il file veniva salvato anche se non avrebbe dovuto farlo (issue #1066)
  • Report errore su apertura StringIndexOutOfBoundsException: ERROR com.geowebframework.dataservice.customResultHandler.RHCallbackImpl - String index out of range: 0 java.lang.StringIndexOutOfBoundsException: String index out of range: 0 (issue #1065)

NEW FEATURES

  • Aggiunto il focus automatico della casella di ricerca all'apertura del filtro di colonna (issue #1105)
  • gwAttribute - descrizioni: aggiunto supporto contenuti html (issue #1062)
  • DACL gwAction CUSTOM aggiunto supporto espressioni #{map.cod_field} ${map.cod_field} che fanno riferimento ai valori correnti dei campi del record di classe (issue #1096)
  • gwCalendar, errore gwClass eventi senza nameColumn configurato (non obbligatorio per la classe, ma necessario quando essa è usata come sorgente eventi per il calendario). Aggiunto errore per supporto alla configurazione ERROR - gwClass 'nameColumn' cannot to be null, when the gwClass is used as events source. Configure it in webadmin [gwClass name='class_name'] (issue #1095)
  • Aggiunto il nuovo parametro “gwSelectLeafItemAnchestorsEnabled” (default true) nei menu (leaf item) per inibire l'auto selezione del leaf item (issue #1094)
  • xml gwProject, aggiunto nuovo tag in MapSettings: hiddenDeleteGeometryCommandGwClassNameList E' la lista dei gwClass name, tali per cui nella scheda Layout2D, plugin mapEditing, funzione 'Edita singolo', non viene visualizzato, per quelle classi, il mapCommand DeleteGeometryCommand. Esempio xml:
    		<mapSettings>
    			<hiddenDeleteGeometryCommandGwClassNameList>
    				<string>class_name_1</string>
    				<string>class_name_2</string>
    			</hiddenDeleteGeometryCommandGwClassNameList>
    		</mapSettings>

    (issue #1092)

  • scheda Layout2D, plugin mapEditing, nuova funzione 'Edita Selezionati' (issue #1080)
  • scheda Layout2D, plugin mapEditing, nuova funzione 'Elimina singolo', che elimina il singolo record selezionato in mappa (issue #1080)
  • Modificato il quinto colore del tema utilizzato dai grafici degli indicatori della scheda gwIndicatorSheet da nero a blu (issue #1085)
  • Aggiunte due nuovi parametri nel configuration.properties opzionali che permettono di disabilitare il dizionario e il dizionario personalizzato: gwm_dictionary.enabled e gwm_dictionary_custom.enabled (issue #1084)
  • Ripristinata una vecchia funzionalità che permette di personalizzare la funzione standard di importCsv (importCSVCommand) tramite plugin esterni (issue #1082)
  • widget gwAction introdotto nuovo flag isAvailableForNew, boolean, default false. Quando è posto a true permette la visualizzaizone del widget anche nei gwClassDetail new (itemId = 'newItem') (issue #1075)
  • widget IndirectLocalizatiom introdotti due nuovi campi configurabili (openInNewTab se true mantiene il comportamaento attuale altrimenti apre il Bim Explorer in un'altra scheda) e openProjectName che permette di specificare il nome del progetto (Bim_Data, Bim Explorer, CDE_BIM_DATA, FMA_BIM_DATA) da aprire. (Issue #1040)

NEW COMPONENTS

  • nuovo widget gwDigitalDocument2 (DDOC2), simile al gwDigitalDocument, con la stessa struttura dei metadati, e stessi parametri xml widget, ma diversa forma grafica e comportamento. Al posto delle sezioni individuate dal tab, c'è sempre il documento pdf in primo piano. Scompare quindi l'apposito button nella sezione header. Le intestazioni delle Section (i vecchi selettori dei tab, che prima comandavano le parti di dettaglio [i detailLayout] impostate per la sezione), ora sono button (la stilizzazione è la medesima, ma si perde il concetto di ultimo selezionato) Al click delle intestazioni delle Section, solo in caso di permesso di edit, ora vengono aperti dei floatingPane modali, contenenti le medesime parti di dettaglio. In caso di solo permesso di visualizzaizone, al click sulla intestazione di Sezione avviene lo scroll sul documento pdf (tramite configurazione dei bookmarks (hyperlink + bookmark level) in IReport 5 / Jaspersosft Studio 6) I permessi edit/visualize, come prima, derivano dal risultato dinamico computato dall'esecuzione del groovy configurato. (issue #1070)

rev 93edc8e895f17a7f6f3f85522fdcee18823f4a3b

date 2023/08/28

BUGFIX

  • js api selectGwClassRecordRaw() non funzionava correttamente (issue #1064)
  • js api selectGwClassRecordsRaw() risolto errore java.lang.ClassCastException (issue #1063)
  • function gwDownloadFile() aggiunto encoding URI e gestione dei char non ammessi nei nomi del filesystem (issue #1060)
  • widget GwGallery ora è di nuovo possibile tornare indietro da modalità fullScreen, quando il widget è ospitato da un floatingPane con flag modal a true (come accade al click su button 'anteprima' del ContentHandlerWidegt di tipo Galleria Fotografica) (issue #1057)
  • ContentHandlerRest: corretta errata visualizzazione del widget in lista (issue #1058)
  • widget contentHandler/contentHandlerRest adesso al caricamento viene fatto un check sull'estensione del file, se valore del campo impostato in 'docFormatsColumn' (in xml widget) è impostato. Infatti, pur venendo aperto il file chooser con impostati i filtri sui formati file, l'utente può rimuovere il filtro e scegliere un file qualsiasi. Adesso viene generato un messaggio di errore nel caso in cui il file ha estensione diversa da quelle configurate. In mancanza di configurazione il check non è eseguito (issue #1056)
  • kit fontawesome risolto errore console browser ERR_CONNECTION_TIMED_OUT. Adesso fontawesome è di nuovo servito dai contenuti statici (issue #1053)
  • ContentHandler - handleContent non funzona a causa di classType che viene sovrascitto nell'azione risultando undefined (issue #1050)
  • GwApproval: corretta opacity nelle card disabilitate (issue #1047)
  • risolti errori su js export:
    • standardListSelectedAllAttributeExportToExcel()
    • standardListSelectedGroupAttributeExportToExcel()

che per i widget combobox e checkbox, con dataType STRING, e flagimportCSVWithoutDecoding true sbagliava esportando il codice (key), invece della label (value) (issue #822)

  • risolti errori cannot cast Time to Date (com.geowebframework.transfer.model.widget.*) (issue #1044)
  • GwWidgetDataService getValueToShowFromValueToStore() aggiunto supporto per i widget checkbox e combobox (issue #1043)
  • widget ContentHandlerRest: risolta gestione del salvataggio e successivo recupero dei metadati dalla classe impostata come classFormName (classe delle forme), anche nel caso che quest'ultima sia diversa dalla classe dove sta il widget. In particolare:
    • risolti problemi legati ai campi dataCreazione, dataModifica, autore e autoreModifica che vengono salvati nella classFormName e impostati nei parametri di configurazione del widget (issue #1017)
    • risolti problemi di aggiornamento dei metadati in seguito all'aggiornamento del documento stesso (issue #1016)
  • logo gwHome/gwPlatform: ora è libero di crescere in width rispettando fattore di forma dell'immagine (issue #1042)
  • ContentHandlerWidget: corretto tablePrefix nel nome della report per la fomra SCH (issue #1041)
  • IndirectLocalizationWidget - fix apertura BimTab per modelli 3D. Sono stati aggiunti cod_fed_model e bim_project_code (issue #1040)
  • widget attachmentWidget/attachmentRestWidget, non applicavano sempre readonly correttamente. Potevano non applicarlo al widget corretto e/o applicarlo ad un qualsiasi altro widget dello stesso tipo aperto in un altro gwClassDetail (issue #1039)
  • widget linkListNam su associa/disassocia venivano tolte erroneamente anche le associazioni nascoste da DACL (issue #1038)
  • gwClassList fix errore su eliminazione molti record (>1000) PSQLException: ERRORE: la relazione “gw_tmp_big_in_clause” non esiste (issue #1037)
  • widget date (handleTime=true) evento attributi onchange ora viene triggerato quando è popolata anche la parte time (issue #1035)
  • widget linkListNam risolto errore valutazione queryClause #{} null and applyQueryClauseToAssociated true (issue #1034)
  • widget Attachments REST, risolto errore bloccante al click su button 'Upload' (issue #1033)
  • bugfix su gestione stream di risposta alle chiamate che fanno il download del contenuto dei documenti (issue #1010)

NEW FEATURES

  • GwApproval:
    • Possibilità di configurare widget cmisdocument e restdocument su attributo attachment_name in gwd_approval_sign (issue #1059)
    • aggiunto allegato nella modalità di presa visione (issue #1046)

rev c17da9799c3dfdf0c58772f841357066a6690fe6

date 2023/07/28

BUGFIX

  • widget date (handletime true) non modificato, invocando gwGetValue() veniva restituito null (issue #1030)
  • widget checkbox readonly in gwClassDetail edit risolto errore visualizzazione check (issue #1029)
  • Caricamento DWG: risolto problema che non permetteva il caricamento del file sul documentale (issue #1027)
  • widget gwGallery: risolto errori devivanti dal click sul button fullScreen dal dettaglio floatingPane (issue #1025)
  • widget contentHandler: risolto errore bloccante al click su downloadButton (issue #1024)
  • risolti errori legati ad apertura schede gwProject (gwa function) multiple con differenti oggetti in sessione (issue #1023)
  • dialog customDojo risolto errore comparsa scrollbars non necessarie, quando aperto da finestra browser troppo piccola (issue #1022)
  • layer WMS risolti sulle chiamate GetCapabilities/GetFeatureInfo gli errore generati dal browser: This request has been blocked; the content must be served over HTTPS. Gli errori erano generati quando gli url dei WMS erano confgiurati http: nel webadmin, mentre l'applicativo era esposto come https: (issue #1020)
  • widget document: risolto errore tale per cui, se il file era gia presente e veniva cambiato dall'utente, dopo un salvataggio fallito del dettaglio (errore in trigger groovy: validazione estenzione dello stesso file)

l'utente non poteva più modificare il file (issue #1019)

  • GeoExplorer risolto errore iniziale: leafItem is not defined L'errore non era bloccante ma impediva la non visualizzaizone delle icone fontawesome dei leafItem (issue #1018)
  • scheda layout2D/BimData2D/ScenarioLayout2D risolto errore bloccante in apertura imponendo filtri sui layer da api js (issue #1014)
  • scaricando la report xls, solo su Chrome in alcuni contesti non ben definiti (OS windows 11 confermato), sistematicamente la pagina corrente veniva sostituita con una pagina bianca. Non vengono dati ulteriori errori. La problematica non si manifestava con altri browser. (issue #1013)
  • widget date: api js gwGetValue() restituiva null con data ed ora popolata (handleTime true) (issue #1012)
  • gwClassFilter risolto errore su classe classificata per campo non variabile con operatore 'VALORIZZATO'/'NON VALORIZZATO' (#1009)
  • Migliorata gestione errori nelle classi che implementano GwDocSessionImpl, fix minori, eliminato metodo inutilizzato getPath dalla classe AbstractCmsService (issue #1010)
  • widgetChildList visualize: risolto errore bloccante introdotto con issue #981 (issue #981)

NEW COMPONENTS

  • Aggiunto sessionType msgraph e nuovi parametri nella classe CmsSessionParameter per gestire il caso MicrosoftGraph (issue #1010)

NEW COMPONENTS

  • Nuovo plugin gw-msgraph-api che fornisce un connettore OneDrive. Il plugin necessita di nuovi parametri nel configuration.properties:
    #################################################################
    		#####                  GW - MSGRAPH - API                   #####
    		#################################################################
    		msgraph.client.enabled=true
    		msgraph.client.id=27910fce-7288-4549-912f-095cae28d5c8
    		msgraph.client.secret=
    		msgraph.tenant.id=ac230d81-cf79-4b47-8c0b-1a7a677b4902
    		msgraph.sharepoint.hostname=dbcadsrl.sharepoint.com
    		msgraph.drive.root.id=
    		msgraph.drive.usermail=geoweb.user@geowebframework.com
    		msgraph.drive.password=
    		msgraph.initial.folder=TESTCDE

    (issue #1032)

REFACTORS

  • refactor jsp
    • singlequote ⇒ singleQuote
    • singlequoteEscaped ⇒ jsEscapedSingleQuote
    • jsEscapedSinglequote ⇒ jsEscapedSingleQuote (issue #981)

rev 50b9119788c9fd80c6ba6a29f2ac1bd9f1f25719

date 2023/07/05

BUGFIX

  • ObjectSelector - corretto errore all'apertura dell'externalTable quando il primo accordionPaneItem è diverso dalla tipologia leafItemContainer (#1008)
  • filtri classificazione risolte le seguenti problematiche:
    • se l'operatore della 'Famiglia' era differente da '=', i widget dei filtri in cascata sottostanti non si aggiornanavano coerentemente e quindi sono ora disabilitati
    • l'operatore della 'Famiglia' valorizzato con 'diverso da' aveva lo stesso effetto di '=', ora lavora correttamente (issue #1006)
  • gestione attributi variabili - il cambiamento ordine non veniva persistito (issue #1005)
  • GwCsvConnector: corretto versionamento (issue #1004)
  • GwCsvConnector: check null nel caso in cui mainAdditionalMap è nullo o vuoto (issue #1003)

NEW COMPONENTS

rev 8676e04233176f450bbbfc19cf80533e4a4dc96

date 2023/06/22

BUGFIX

  • widget image in lista aperti da js openGenericExternalTableDialog(), come click su menu gwContexObjectSelector, risolto error 500 che impediva il recupero delle immagini (issue #1000)
  • widget linkList childList risolto errore su set readonly/disabled quando non in primo piano (issue #999)
  • fix errore org.locationtech.jts.io.ParseException: Attempt to read past end of input (issue #977)
  • import CSV errore Expected ',' or '}' after property value in JSON, quando geoweb_error è popolato (issue #996)

NEW COMPONENTS

  • nuova funzionalità DAR (Direct Access Resource), che introduce le risorse ad accesso diretto (tramite URL) (issue #952)

rev 975743911e5d4fca1fb8367c7f0df3b8ff555d1e

date 2023/06/09

BUGFIX

  • widget linkListNam risolti svariati errori sulle azioni Aggiungi alla selezione / Rimuovi dalla selezione (issue #715)
  • OpenBimTab: modifica gestione parametri in sessione all'apertura del progetto (issue 994)
  • 2nd level menu hierarchicalFilterLeafItemContainer fixati errori bloccanti in caso di singleAccordionPaneWrapper (un solo 2nd level menu nel suo 1st level menu) (issue 993)
  • GwClassListService fix errore nel metodo interno handleSelectedRecordPostProcessing() che, con DB Postgres, usava anche quando non era auspicabile, usava il WKT reader, causando l'error:
    ### Error updating database.  Cause: org.postgresql.util.PSQLException: ERRORE: la colonna "geometry" è di tipo geometry ma l'espressione è di tipo character varying

    (issue #992)

  • widget html errore parse in console error: Uncaught SyntaxError: Invalid or unexpected token (issue #991)
  • risolto errore bloccante visualizzazione all'apertura del gwProject dovuto a ritardo caricamento modulo dojox/form/Uploader con useCompressedImports a true (issue #988)
  • api js openGwHtmlReportTab() risolto errore di valutazione del parametro updateOnChangeInGwClassNameList che faceva si che non venisse valutato bene (per le classi successive alla prima) nel caso contenesse spazi bianchi. Esempio: 'classe_1, classe_2, classe_3' (issue #987)
  • fixato errore sul command di layout2D WmsGetFeatureInfoCommand tale per cui si abilitava in automatico il comando di selezione rect su switch off di elementio nell'albero dei layer, anche quando non voluto (con non voluta deattivazione del mapCommand precedente) (issue #984)
  • Risolto problema della mancata valutazione dei permessi quando il flag del configuration.properties è abilitato report.permission.enable=true Adesso i permessi vengono valutati anche:
    • azione che mostra nel button '…' azioni e report per il dettaglio (retrieveUserActionsForSingleRecord)
    • azione che mostra nel button '…' azioni e report per la lista (retrieveUserActionsForMultipleRecord)
    • report di dettaglio classe
    • report elementi in lista
    • report elementi in lista (con filtro)
    • report di processo

(issue #983)

  • widget attachment/attachmentRest ora se posti in un dettaglio di classe con i soli permessi di visualizzazione vengono settati in modalità readonly (issue #982)
  • risolti errori bloccanti dovuti a label gwClass con caratteri speciali (tipo ') (issue #981)
  • scheda bimData2D risolti vari problemi di layout e dimensionamento:
    • la bottom-toolbar nasconde la scaleline della mappa
    • selezionando le proprietà di un oggetto, nel pannello di destra, quando sono tante, vengono tagliate in basso
    • tagliati in basso anche gli ultimi comandi
    • compare ancora la prima tooolbar vuota delle 'modes', già rimossa in 4.6.* (issue #980)
  • js openGwReport() ora viene di nuovo valutato e mandato al server il parametro required in ingresso 'actionName', che era stato erroneamente rimosso (issue #979)
  • widget childlist dbwindowlist usa valori di widget di indice di cella minore che hanno in comune fielToStore / fieldToShow (issue #977)
  • gwrabbitpublisher - corretto errore dopo merge in seguito a issue #906 (issue #976)
  • filtro windowchoice perdeva ultima colonna quando filtrando si otteneva la perdita della scrollbar dall grid sottostante.Analogo problema per il positionWidgetEditDialog (issue #975)
  • graphicLayoutByBuildingSwitchMenu/graphicScenarioLayoutByBuildingSwitchMenu risolto errore di codifica parametro sessionBuildingCode della chiamata elementi albero, che poteva contenere caratteri speciali (issue #973)
  • GwClassListService nuova api java selectClassRecordsWktGeom() Si introduce una nuova api che se invocata ritorni le geometrie in formato testo WKT invece che Geometry (locationtech) (issue #972)
  • api js openGwClassDetailInsideContentPane(), aggiunti due parametri delle options
    • avoidDefaultErrorHandling Boolean, default false, avoid that an occurring exception will to be handled showing a dialog with message to user
    • errorCallback function, called in case of server side exception chiamata gwClass/detail aggiunto parametro

voidDefaultErrorHandling per evitare la gestione di default in caso di eccezione (notifica messaggio ad ull'utente) (issue #971)

  • scheda layout2D - plugin MapEditing - multiple edit - introdotto l'utilizzo detailLayoutName 'mapEditing' inevece del nome del grouppo attributo chiamato 'main' (deprecato e non piu supportato) (issue #970)
  • GwWidgetDataService empty check su value in ingresso a getValueToStoreFromValueToShow() (issue #969)
  • layout2D editing multiplo risolti vari problemi:
    • errore su js saveAllMultipleGeometryEdit()
    • andando in editing multiplo geometrie disallineate con da layer mapguide, quando epsg code dei widget geometry è diverso da quello della gwMap (issue #968)
  • risolti errori invio email dovuti a proprietà del configuration.properties dichiarate, ma non valorizzate: gwMailService.mailSmtpSslProtocols= Errore:
    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate). Failed messages: javax.mail.MessagingException: Could not connect to SMTP host:

    in via precauzionale gestito anche: gwMailService.mailSmtpSslTrust= (issue #967)

  • scheda layout2D risolto errore per cui su editing multiplo geometria, selezionando un elemento in mappa (quando ne era gia selezionato un altro), non veniva visualizzato il mini dettaglio di classe (detailLayout 'main') inglobato nel tab di editing mappa. Inoltre non veniva nascosta anche l'eventuale label dell'attributo geometry presente nel dettaglio di classe. Problematiche simili anche per il tab editing del plugin gw-scenarios ed il tab del plugin gw-furnitures (issue #966)
  • scheda layout2D/BIMdata risolti errori bloccanti dovuti a char ' nei file properties localizzati it ed errore bloccante dojo parse codice JSTL json (solo in mappa geoexplorer) (issue #965)
  • fix minori per widget rest su plugin gw-cms (issue #964)
  • Maven build: aggiornamento versione java da 8 a 11 nel processo di build automatica della pipeline (issue #963)
  • aggiunto nullCheck su principal con configurazione utente anonymous (principal.getName()) (issue #962)
  • aggiunto check null su valuesMap in input nel metodo recordAudit della classe GeowEventManagementServiceAsync (issue #961)
  • velocizzazione build maven: rimozione dal pom.xml repository non necessari alla build E' stato lasciato OSGeo Release Repository, perchè maven central fa solo da ponte verso il repository OSGeo (vedi anche issue #548) (issue #960)
  • scheda layout2D su geoexplorer fixato errore bloccante No message found under code 'map.topToolbar.modifyGeometryCommand.rotateClockwiseTooltip' (issue #959)
  • fixati errori in azioni js exportShape() importShape() importCSV() nei cai in cui la richiesta era troppo grande (in genere a causa delle dimensioni del parametro columnHeadersMap) Rimosse dal file di export .dbf le altre geometrie non principali. Aggiornato file lib_utility.groovy nei metodi:
    	  		public HashMap getGeometry(HashMap valuesMap)
    	  		public HashMap getCentroids(HashMap valuesMap)

    che sono utilizzati in vari trigger groovy di classe (che davano errore in fase di import shp) (issue #891)

NEW FEATURES

  • introdotto nuovo parametro keycloak.executeActionsEmail.homeUrl per inserire l'url dell'homepage nella mail inviata al momento della creazione dell'utente e modifica del testo della mail (issue #985)
  • aggiunta possibilità di configurazione autocomplete=“off” per le form di geoweb: login, change-password, reset-passord Nel configuration.properties:
    	  
    	  	##################################################################
    		#	L O G I N
    		##################################################################
    		#default false. It allows to disable the auto-complete for the gw-login form (made by the browser) (issue #793)
    		login.form.autocomplete.disabled=true
    	  

    (issue #974)

NEW COMPONENTS

DEPRECATED

  • scheda layout2D - plugin MapEditing - multiple edit - deprecato e rimosso l'uso del gruppo attributo chiamato 'main' (configurare ora un detailLayoutName 'mapEditing') (issue #970)
  • changes:
    • GwImportUtilService

property deprecate E RIMOSSE:

				Integer fileImportInsertCount; Integer fileImportUpdateCount; Set<String> notFoundClassKeyValues;
				ICsvMapWriter mapWriter; String[] headersMappedWithColumnError; String[] codColumnsSplitted;
				ArrayList<Map<String, String>> rowsWithErrors; HashMap<String, Object> recordParent;
				HashMap<String, GwHeaderClassInfo> headerClasses; ImportHandler importHandler;
				Integer importType; Locale locale; HashMap<String,Object> additionalMap;
				Integer handleErrorsType; ByteArrayOutputStream baos = null; OutputStreamWriter writer = null;
				Integer itemNotFoundAction=DO_NOTHING_ON_ITEM_NOT_FOUND_ID; String className;
				Integer allCount; String itemNotFoundUpdateField; String itemNotFoundUpdateValue;
				String childClassName; String projectName; Boolean stopImport; Integer idProcessImport; MultipartFile file;

metodi deprecati E RIMOSSI:

				public HashMap<String, Object> InsertDataInput(String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId,ArrayList<HashMap<String, String>> listaRecord, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String 	codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue,String scriptName,MultipartFile file) {
				public void inizializedImport(MultipartFile file,String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue,String scriptName)	throws Exception{
  • GwImportUtilServiceCsvConnector, property deprecate E RIMOSSE: stesse di GwImportUtilService, con
    InputStream stream;

    al posto di

    MultipartFile file;
  • BimDataCsvService, deprecato service e tutti i metodi (le stesse funzioni vengono svolte dal clientCad) (issue #956)

REFACTORS

  • changes:
    • GwImportUtilService, metodi cambiati:
      • public void initializeImport(MultipartFile file,String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue,String scriptName)	throws Exception{

        diventa

        			  public ImportHandler initializeImport(MultipartFile file,String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue,String scriptName) throws Exception{
    • public boolean insertDataInput(HashMap<String, String> row) {

      diventa

      public boolean insertDataInput(HashMap<String, String> row, ImportHandler importHandler) {
    • public HashMap<String, Object> finishImport(){

      diventa

      public HashMap<String, Object> finishImport(ImportHandler importHandler){
  • GwImportUtilServiceCsvConnector, metodi cambiati:
    • public void inizializedImportStream(InputStream stream,String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue, String scriptName) throws Exception{

      diventa

      public ImportHandlerCsvConnector inizializeImportStream(InputStream stream,String projectName,String className,String childClassName,String relationName,String[] headersFile,String[] headersMapped,Integer importType ,Object itemId, Locale locale,HashMap<String,Object> additionalMap,Integer idProcessImport,String codColumn,Integer handleErrorsType,Integer itemNotFoundAction,String itemNotFoundUpdateField,String itemNotFoundUpdateValue, String scriptName) throws Exception{
    • public boolean insertDataInput(HashMap<String, String> row) {

      diventa

      public boolean insertDataInput(HashMap<String, String> row, ImportHandlerCsvConnector importHandler) {
    • public HashMap<String, Object> finishImportStream(){

      diventa

      public HashMap<String, Object> finishImportStream(ImportHandlerCsvConnector importHandler){

      I refactor rendono necessario modificare i groovy che estendono com.geowebframework.dataservice.service.ImportHandler Bisogna quindi cambiare i riferimenti a variabili prima ospitate in gwImportUtilService ed ora inglobate nell'importHandler (i nomi rimangono inalterati): Esempio: il codice nel groovy che estende importHandler

      ((GwImportUtilService) services.get("gwImportUtilService")).fileImportInsertCount++;

      diventa

      this.fileImportInsertCount++;

      Identico discorso per com.geowebframework.gwCsvConnector.service.ImportHandlerCsvConnector e GwImportUtilServiceCsvConnector (issue #956)

rev 14a5f613166b38cde163af0a5d9bde2b7d9b1e13

date 2023/05/04

BUGFIX

  • gw-cms perde suo versionamento 2.0.0 e segue quello di framework (issue #958)
  • nascoste voci di navigazione dei menu quando c'è ancora da scegliere l'oggetto in sessione da parte dell'utente. (issue #957) Componenti interessati:
    • hierarchicalFilterMenu
    • gwTaskHierarchicalFilterMenu
    • leafItemListFilters
    • leafItemClassificationMenu
    • leafItemGHFMCMenu
    • layoutSwitchMenuThreeDCDE
  • gw-Upload-manager : Rimossi i service inutilizzati e rimossa l'estensione del GwImportUtilService (issue #955)
  • Risolto errore crescita connessioni senza access-page plugin (issue #916)
  • risolto bug (per widget rest) sul recupero del nome del documento precedentemente caricato su documentale (issue #951)
  • risolti errori dovuti alla scadenza del token di autenticazione per GwAlfrescoSession: tutti i metodi della classe che fanno chiamate rest sono stati aggiornati per gestire il caso di risposta 401 per ticket scaduto (issue #950)
  • Variabili in sessione: aggiunto servizio per centralizzare i metodi per la gestione delle variabili in sessione (issue #946)
  • risolti alcuni bug nel caricamento/aggiornamento documenti (per la configurazione senza columnName) nel widget RestDocument. Il comportamento è stato allineato a quello del CmisDocument (issue #942)
  • azione js exportShape() risolto errore di parse che impediva l'esportazione se la lista di classe di partenza aveva impostato un filtro (issue #944)
  • aggiunta valutazione del externalUrl da parte del gwProject, ed implementato redirect automatico. Prima externalUrl veniva valutato dal projectIndex. Le pagine di accesso attualmente non lo gestiscono. Il redirect avviene solo nel caso l'externalUrl non sia stato in qualche maniera gestito precedentemente (issue #937)
  • aggiunta segnalazione metadati corrotti su apertura UI gwClassFilter per attributi di classe relazionate (issue #936)
  • risolto errore “sendIfcToXktConverter: method 'send' is empty” (issue #935)
  • risolto errore bloccante ad apertura project nessun menuBarItem in xml (issue #934)
  • immagini non si vedono sul refresh della report, aggiunte nuove configurazoni per mitigare il problema (issues #931)
  • gwindex - pagine di accesso cde35: modificare label Eseguito in Esecutivo (issue #928)

NEW FEATURES

  • gw_solutionCode: Nuova variabile in sessione per rendere disponibile il codice della soluzione nelle ACL, sui groovy e nell'XML di progetto (issue #943)
  • report html aggiunti nuovi parametri, creati automaticamente, utilizzabili per costruire l'url delle risorse immagini
    • STATIC_CONTENTS_URL: path fino alla folder dei contenuti statici 'WEB/'
    • IMAGES_URL: path fino alla folder images dei contenuti statici 'WEB/images/'

Javascrip api openGwHtmlReportTab()/openGwHtmlReportFloatingPane() aggiunto supporto nuovo parametro enableCache (issues #931)

NEW COMPONENTS

DEPRECATED

REFACTORS

  • aggiornata dependendy org.codehaus.groovy groovy-all da 2.5.21 a 3.0.17 (issue #933)
  • rimossa dependency com.lowagie itext 2.1.7 usata dal vecchio jasperreports 5.6.0 (issue #932)
  • aggiornato spring SAML a spring-security-saml2-service-provider 5.3.13.RELEASE (issue #927)

rev 15bcec01f1cd60774c0785170a6fbee8c451c7a5

date 2023/04/04

BUGFIX

  • downgrade dependency com.fasterxml.jackson.* da 2.14.2 a 2.14.1, per errori durante maven build (issue #926)
  • MgInitializer applyResourcePackage() risolto errore in ambienti kubernetes che impediva il caricamento delle risorse di MapGuide (issue #925)
  • MgInitializer applyResourcePackage() risolto errore in ambienti kubernetes che impediva il caricamento delle risorse di MapGuide (issue #925)
  • Fixato incorretto posizonamento (non centrato) dell'icona 'check' del dojo CheckBox in liste al primo click (issue #241)
  • scheda gwDynamicTimeLine impostata max-width 330px per l'area Groups/nestedGroups e relativa area filtri (issue #924)
  • risolto errore per il layout2D/3DVisualizer cha faceva si che il blocco commandsTab in toolbar non comparisse sempre come l'ultimo, a prescindere dal posizionamento nell'xml di configurazione (issue #923)
  • risolto errore link cmabia password/edit profile con keycloak, che usava erroneamente la property keycloak.serverUrl del configuration.properties. Adesso l'indirizzo base ed il realm vengono presi direttamente dal keycloak.json (issue #919)

rev 8c1572f9fffd9862c1d10c6c76544930ec166d5a

date 2023/03/31

NOTE AL RILASCIO

L'aggiornamento della libreria jackson alla versione 2.14.2 ha comportato degli errori in fase di build dovuti al conflitto di alcune dipendenze tra librerie. Se si intende installare la versione 4.6.1 aggiunger al pom.xml principale le seguenti dipendenze

`

<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-core</artifactId>
	<version>2.14.1</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.14.1</version>
</dependency>
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-annotations</artifactId>
	<version>2.14.1</version>
</dependency>

`

BUGFIX

NEW FEATURES

  • CMS REST WIDGET- Aggiunto servizio per il recupero della dimensione di una cartella su documentale (getFolderSize() nella classe GwCmsRestService). Aggiunta dashboard di monitoraggio delle informazioni di servizio: numero utenti, numero funzioni, spazio usato su documentale, data di attivazione ) (issue #894)

BUGFIX

  • kubernetes: added livenessProbe readinessProbe http request support(issue #830)
  • maven module gw-print-map-flow inglobato in gw-print-map-legend (issue #829)
  • maven module gw-smartplatform rimosso dal git geowebframework e spostato su repo a parte https://gitlab.com/geowebframework/gw-smartplatform.git (issue #828)
  • maven module xeokitUtils: rimosso da git geowebframework. Le funzionalità erano già nel gw-rabbit-consumer (issue #827)
  • geowebframework maven modules: refactor-rename nomi moduli secondo nuove policy

regole refactor:

  • tutti i moduli partono per 'gw-'
  • tutto in minuscolo
  • le key-words sono state staccate con '-'
  • i path dei package non sono stati modificati, per retrocompatibilità
  • i nomi dei moduli maven sono stati modificati esclusivamente con il comando 'git mv'
  • <artifactId>com.geowebframework</artifactId> in <artifactId>geowebframework</artifactId>

(issue #799)

  • issue #814 fixati alcuni errori diffusi: Server request error 500

Exception Report

	The request was rejected because the URL contained a potentially malicious String "//"
* issue #813 hierarchicalFilterLeafItemContainer (menu di secondo livello) è stato portato dentro il repository geowebframework
  Per la verisone 4.6.0 non sarà piu necessario aggiungere al pom del webclientTemplate
	<dependency>
		<groupId>com.geowebframework</groupId>
		<artifactId>hierFiltLeafItemContainer</artifactId>
		<version>1.1.0</version>
	</dependency>
* issue #809 gwClassDetail persistenza dimensions+position spostata dai cookie al localStorage del browser
  Questo dovrebbe mitigare moltissimo le problematiche gia affrontate nella issue #660 (Errore browser 'Request too large')
* issue #798 refactor split transfer-objects in due moduli: gw-commons + gw-commons-web
  Fino ad ora, a volte sorgeva l'esigenza, quando si faceva un plugin, o altri applicativi collegati a geoweb, 
  di far riferimento a classi java presenti nel modulo transfer-objects, oppure a servizi esposti nel webclient.
  Questo comportava il portarsi dietro di numerosi e pesanti file e funzionalità comuni relativi alla 
  UI lato client (del peso di circa 100MB), che erano spesso del tutto inutile.
  Il modulo transfer-objects è stato diviso in due parti:
	1.	gw-commons: conterrà i pojo java, typehandler, messages, etc.. 
	2.	gw-commons-web: conterrà i file in comune per la parte web (css, js, librerie ui)
  transfer-objects è stato trasformato in gw-commons. Per ragioni di retrocompatibilità tutti i path delle class java verranno mantenuti
  		com/geowebframework/transfer
  E' stato poi aggiunto ex novo il modulo gw-commons-web. Adesso gw-commons, nel jar del webclient,
  arriverà tramite la catena di dipendenze (ripulito dalla parte): dataservice > metadataservice > gw-commons
  Invece, gw-commons-web, che pesa circa 100MB, verrà ora richiesto direttamente solo dal pom del 
  webclientTemplate (di cui deve essere creata una nuova versione di archetipe)
  Analisi impatto:
		1.	per la configurazione prodotti: bassa. Eventuali import nei groovy rimarranno invariati. Al passaggio alla 4.6.0, bisognerà modificare il pom.xml togliendo transfer-objects ed aggiungendo
			<code><dependency>
			        <groupId>com.geowebframework</groupId>
			        <artifactId>gw-commons</artifactId>
			        <version>${com.geowebframework.version}</version>
			</dependency>
			<dependency>
			        <groupId>com.geowebframework</groupId>
			        <artifactId>gw-commons-web</artifactId>
			        <version>${com.geowebframework.version}</version>
			</dependency></code>
		1.	per lo sviluppo: medio. Sarà più oneroso effettuare comparazioni e riportare fix fra versioni post e pre 4.6.0 (niente cerry-pick)
* issue #483 gwClassDetail/gwTaskDetail/gwTaskDetailProcedure non notificava l'utente se il record a cui il
  dettaglio si riferiva era stato eliminato non utilizzando la UI del dettaglio stesso (per esempio dalla sottostante gwClassList)
  Il dettaglio veniva quindi mantenuto aperto e potevano generarsi ulteriori errori per operazioni crud
  Adesso l'utente viene notificato dell'eliminazione del record e gli viene proposta la chiusura del dettaglio
* issue #787 IndirectLocalizationWidget su BimData2D lanciava un eccezione di array out of bound se veniva fatto lo zoom su più poligoni contemporaneamente
* issue #775 workflow leafItem gwStartProcessInstanceByMessageAction non elaborava codice js nel parameter 'processVariables'
  Adesso viene correttamente gestito anche codice del tipo
  	<code><parameter name="processVariables" value="{ date_1: new Date(), cod_utc_gwprocess: 'pi_'+new Date().getTime() }" hideToClient="false"></parameter></code>
* issue #768 nei widget che usano StandbyWidget per impostare stato readonly/disabled a true, 
  aggiunta css class gwAttributeWidgetStandbyWidget per scopo di testing. Widget interessati: 
  linklist, linkListNam, ChildList, ContentHanlder, stepbarWidget, gwArchivedProcessesWidget, 
  gwRelatedProcessesWidget, gwTasksWidget, gwDigitalDocument, cmisDocumentWidget
* issue #767 fix errore non bloccante eclipse build maven 
	cvc-elt.1.a: Cannot find the declaration of element 'project'
  risolto utilizzando https invece che http per gli attributi
  	xmlns, xmlns:xsi, xsi:schemaLocation
  nei pèom.xml ed assimilabili
* issue #765 widget image corretto effetto su UI in seguito ad invocazione js api
  gwSetReadonly(true)/gwSetDisabled(true), che modificavano readonly/disabled.
  Adesso si disabilità correttamente la UI di update/delete immagine
* issue #757 ws geometries.json troncava le coordinate delle geometrie a 4 decimali.
  Il risultato erano geometri sformate elaborate nei vari client mappa
  La problematica si manifesta principalmente su mappe cartografiche.
  La problematica è anche accentuata se si invoca il service con il parametro 'coordinateSystem', 
  che forza la conversione delle geometrie prima della restituzione
  Nel contempo di è deciso di unificare su geometries.json i seguenti 
  service che erano stati nel tempo duplicati:
	* getGwClassFeatures.json Rimosso ed aggiornati i puntamenti javascript
	* gwOlLayerGeometries.json @Deprecated, punta lato java a geometries.json. Aggiornati puntamenti javascript
* issue #755 sistemate le relazioni nel tab mongo Info nel Bim Explorer 2D
* issue #752 Modificata la condizione di verifica all'interno dell'handle che popola il tab BimData2DCommands
* issue #737 scheda layout2D risolti errori bloccanti al click su alcuni mapMommand:
	* QuickInsertGeometryPolylineCommand
	* QuickInsertGeometryFreePolygonCommand
	* QuickInsertGeometryRectangleCommand
* issue #727 widget externalTable tasto 'Delete' (aggiunto in issue #624) in lista dialog era sempre disabled, 
  anche selezionando uno o più elementi in  lista
* issue #725 alcuni widget complessi che, quando sono 'disabled' (in partenza o in seguito ad api js),
  utilizzano uno standbyWidget tasparente per evitare l'interazione utente con la la loro UI 
  non permettono di utilizzare la UI (es: button) dei floatingPane che stazionano sopra di essi 
  (per esempio floatingPane aperti da widget externalTable, dbwindowlist, etc..).
  La probleamtica era legata agli zIndex.
  Widget interessati:
	* ChildList
	* linkList
	* linkListNam
	* cmisDocumentWidget
	* gwDigitalDocumentWidget
	* stepBarWidget
	* gwArchivedProcessesWidget
	* gwRelatedProcessedWidget
	* gwTasksWidget
	* contentHandler
* issue #724 widget dbWindowList in liste gwClassList/ChilsList/linkList non mostrava il valuetoshow nel
  textbox
* issue #723 Nella childList in edit, modificando a null i valori dei widget ('Scegli..' per le combo), alcuni widget 
  non ripristinavano o il valore null/'' od il colore di sfondo giallo che ne denotava la modifica del valore.
  Widget affetti:
	* time, tiene valore ma non ritorna lo sfondo giallo
	* date, non teneva valore (inoltre mostra come data 1/1/1970..), ma ritornava lo sfondo giallo
	* dbcombobox, teneva valore, ma non ritornava lo sfondo giallo
	* dbwindowlist, non teneva valore pur ritornando lo sfondo giallo
	* externaltable, non teneva valore annullato (e di consequenza niente sfondo giallo)
	* dbsuggestbox, teneva valore annullato, ma non ritornava lo sfondo giallo
* issue #722 widget time in childList edit non salvava il valore modificato
* issue #721 childlist in edit. Alcuni widget il cui valore era stato modificato, ed il
  cui sfondo si colorava di giallo, al cambio tab e successivo redraw della childList,
  pur mantenendo il valore modificato, perdevano lo sfondo giallo. Widget interessati
	* date
	* time
	* numberbox
* issue #710 widget geometry aggiunti messagi custom localizzati per i tooltip dei button:
	* showOnMap
	* editOnMap
  I tooltip sono sovrascritti sia per il gwClassDetail, che per la gwClassList
  La localizzazione dei messaggi è disponibile tramite il dizionario
* issue #709 dojo tree con nodi che usavano CheckBox nel templateString
  Al click sul CheckBox, venivano erronemanete espansi/collassati anche gli eventuali sottonodi dell'albero
  Ne erano affetti solo gli alberi dopo l'introduzione di dojo flat e del nuovo stile grafico (isuse #241)
  Componenti interessati:
	* customDojo/map/plugin/LayersManagement.js
	* customDojo/pointcloud/ActivityViewer.js
	* customDojo/pointcloud/BimCategoriesManagement.js
	* customDojo/pointcloud/BimData2DCategoriesManagement.js
	* customDojo/pointcloud/BimData2DLayersManagement.js
	* customDojo/pointcloud/BimLevelsManagement.js
	* customDojo/pointcloud/SceneLayerManagement.js
* Filtro con opzioni di scelta - corretto errore nella selezione della scelta del valore da filtrare (issue #670)
* Dashboard - corretto errore all'apertura della dashboard per mancanza di parametri (issue #669)
* ACL con parametri dinamici: corretto errore nella query di apertura del dettaglio per mancata gestione dell'alias ao (issue #659)
* Liste personalizzate: aggiunta personalizzazione delle liste nella dashboard di tipo team (issue #657)
* Liste personalizzate:  nuovo parametro cookieName per gestire liste diverse su stessa classe (issue #655)
* issue #651 widget dbWindowList (ma anche positionWidget/windowChoice filter)
  revisione area filtro grid in dialog scelta:
    * i valori dei field Date arrivavano cosi come sul db (su Postgres numero in ms). Ora vengono
      formattate con il format 'dd/MM/yyyy, HH:mm'
    * Precedentemente nella toolbar dedicata al filtro c'erano varie problematiche: 
      * se si inserisce un valore stringa sul filtro dei field di tipo INTEGER/NUMBER, ora non viene piu
        applicato il filtro generando l'errore in grid, e viene notificato l'utente
      * Ora per i field di tipo DATE (dove prima c'era un imput di testo che doveva essere 
        popolato dall'utente sol con stringhe nel formato esatto 'yyy/MM/dd'), 
        ora è presente un DateTexBox dojo, che applica un filtro '= (TRUNC DAy)' generando automaticamente la stringa 
        nel corretto formato
    * Ora è possibile rimuove velocemente tutti i filtri imposti al click sul button nella prima colonna
      in alto a sinistra, che compare e scompare in base all'imposizione dei filtri alla grid
* issue #630 Modificato il modo con cui viene recuperato l'utente all'interno dei metodi dell'umplugin. 
* issue #623 widget linkList/linkListNam/childList cambio modalità valutazione 
  parametri tag <gwClassListSettings> in xml di progetto. Prima venivano sovrascritti, 
  senza intervento esplicito da parte del configuratore, alla sola
  creazione di un ogni nuovo widget e relativo xml (con valori di default a false).
  Questo di fatto vanificava le impostazioni globali, costringendo il configuratore ad
  una configurazione puntuale.
  Adesso vengono inizializzati i tag vuoti (valorizzati a null). 
  Solo qualora il configuratore imposti a true/false il parametro
  specifico del widget(con priorità maggiore rispetto ai globali) esso verrà valutato.
  Elenco parametri interessati per widget:
    * linkList:
        * hideActionsDropDownButtonColumn
        * hideIndirectSelectionColumn
        * hideNewIgnorePermissions
        * hideDeleteIgnorePermissions
    * linkListNam:
        * hideActionsDropDownButtonColumn
        * hideIndirectSelectionColumn
    * childList:
        * hideToolbar
        * hideIndirectSelectionColumn
        * hideNewIgnorePermissions
        * hideDeleteIgnorePermissions
  Fix collaterali: 
    * la linkListNam e la childList non valutavano un eventuale hideIndirectSelectionColumn globale 
      configurato, ma sempre e solo il loro equivalente sull'xml del widget
    * la childList non valutava un eventuale hideToolbar globale configurato
    * la childList non valutava un eventuale hideHeader nel suo xml di widget
  La modifica non genererà incompatibilità con i metadati già creati.
* issue #574 revisione nel codice dei query('*', ..) con query.NodeList() per migliorare le performance a runtime
* Personalizzazione Loghi: introdotti nuovi parametri per la personalizzazione dei loghi nei banner, nello sfondo della home page e per il logo della login (issue #604)
* Home Button: modifica colore errato nell'immagine gwhome.png (issue #602)
* Liste: corretto errore "gridContextMenuId undefined" con parametro hidetoolbar impostato a true dopo issue #523 (issue #600)
* GwApproval:
	* corretto refresh della dashboard GwApprovalDashboard (issue #617)
	* modifica label in seguito alla definizione del glossario di validazione (issue #601)
	* corretto errore "form non definita" nella dialog di approvazione dell'utente (issue #599)
	* dashboard - nuovo parametro per la configurazione della label della colonna con le azioni che consentono l'approvazione (issue #597)
	* Nuova dashboard per il monitoraggio delle approvazioni (issue #538) 
	* sostituita apertura di un componente di tipo floatingPane con il tipo dialog (issue #582) 
	* corretto errore nella modalità di creazione del codice approvativo (issue #579)
	* esposti nuovi metodi che inizializzano il modello dati del widget (issue #577):
		* createApprovalResult (String gwClassName, String attributeName, String itemId)
		* createApprovalResult (String projectName, String gwClassName, String attributeName, String itemId)
	* aggiunto blocco approvazione nel caso di bocciatura e stesso utente nello stesso stato in cui avviene la bocciatura (issue #531)
	* aggiunto carattere di evidenza nella card nel caso di richiesta revisione (issue #530)
	* corretto standByWidget che termina prima degli ultimi update della classe degli elaborati (issue #529)
	* introdotti insertClassRecord al posto degli insert in tabella (issue #764)
	* Esposto servizio gwApprovalWidgetService (issue #774)
	* Introdotto parametro gwApproval.exitOnFirstReject per uscita al termine del livello in caso di bocciatura (issue #730)
* issue #516 Apertura dell'albero dei piani anche se questo è vuoto. I piani possono essere creati da clientcad
* ApprovalWidget:
	* Correzione errori query in sqlserver e introdotto typeHandler per il cast di un dato intero a booleano  (issue #495) 
	* Correzione stili e nuove icone per compatibilità con versioni Geoweb 4.4.X (issue #494)
	* Corretto errore nella chiusura della form di tipo AUT e VIEW nel caso di conferma senza aver visionato o approvato/bocciato (issue #493)
	* Corretto errore nella costruzione della struttura di output per utenti con solo username (issue #485) 
	* Corretto errore in insert nella tabella gwd_approval_sign causato da chiave esterna con la gwd_approval_result (issue #481)
* Dojo 1.16: bugfix al componente Chart.js di dojo. (Modifica della funzione "foldl" di dojox/lang/functional/fold.js) (issue #466)
* CDE: 
	* dashboard: aggiunto refresh della dashboard in update/delete/insert della classe geoweb di riferimento (issue #520)
	* pagine di accesso con più di 8 progetti: aggiunta scrollbar per schermi inferiori a 1500px e aumentata dimensione del LayoutContainer per schermi maggiori (issue #519)
	* corrette query dei progetti per le pagine di accesso in seguito all'eliminazione del campo project_type della cde_01_project (issue #518)
	* corrette query nelle pagine di accesso causa eliminazione della vista cde_metadata.v_gwindex_gwm_projects (issue #461)
	* dashboard: correzione filtro per la lista di classe nella dashboard di tipo TEAM (issue #460)
	* dashboard: corretto recupero gwid degli attributi per la corretta applicazione dei filtri (issue #462)
	* dashboard: modificata label kpi di avanzamento in kpi in corso (issue #463)
	* dashboard: aggiunta animazione nel grafico a barre della dashboard di tipo PROJECT (issue #467)
* spring-security.xml: possibilità di gestire dimensione massima di caricamente del singolo file tramite nuovo parametro "commonsMultipartResolver.maxUploadSize" nel configuration.properties (issue #428) 
* WebclientTemplate-archetype: corretto tag http in spring-security.xml (issue #422)
* issue #559 chiamate editDetail/ bloccate dopo introduzione policy csrf (regressione della issue #81)
  La problematica si manifestava nella scheda mappa 2D nel tentativo di eseguire il 
  salvataggio singolo della geometria con l'apposito button. Aggiunto check csrf anche 
  sulla chiamata che persiste l'editing multiplo delle geometrie e altre property dalla mappa 2D
  (rest/saveAllMultipleGeometryEdit)
* issue #430 Fix di un cast di un integer a string che creava un eccezione. Avveniva alla cancellazione di un livello da upload manager.
* issue #412 Sistemate le query per la costruzione dell'albero del Bim Explorer filtrato per discriplina (cod_system --> system e cod_level --> level)
* issue #398 Cambiato il filtro da String a Integer sulla chiamata getLayoutHMByFkLayout nella classe gwPublishService
* issue #129 Mancata assegnazione label e tooltip a MapCommand mappa 2D con useCompressed=true
* Csrf: corretto bug nell'encoding dei parametri url nelle richieste POST in codifica diversa da UTF-8 (issue #184)	  
* webclient: 
	* ReportController e GwGroovyActionController: corretta la gestione degli errori per evitare nullPointerException, 
												   modificati i messaggi di errore 

## NEW FEATURES

  • issue #820 Umplugin - Se c'è solamente un drawing all'interno del layout allora l'sdf viene automaticamente impostato a null nel database invece che fare la query di cancellazione degli oggetti nell'sdf.
  • issue #818 BimData2D - Aggiunta la pubblicazione dell'evento (bimDataSwitchMenu/bimDatSwitchMenuReady) alla fine del caricamento dell'albero BimDataSwitchMenu.
  • issue #816 configuration.properties aggiunto parametro mapguide.library.resourceId.scope

che depreca (baseMgLibraryPath)

  • issue #815 i gwClassName configurati in xml progetto, gwAction, etc.. sono adesso valutati: case insensitive
  • issue #664 Sviluppato il plugin gwScenari che permette la gestione degli scenari delle planimetrie all'interno del framework.
  • issue #766 Mongo aggiunto flag mongo.enabled nel configuration.properties, default true per retrocompatibilità

Serve a disablitare gli errori relativi a mongo db in fase di avvio dell'applicativo,

  nel caso la sua configurazione non sia necessaria
* issue #763 widget BlobObject/Image/Document aggiunte nuove possibiltà di risoluzione dei placeholder ${} in fsPath,
  ora risolvibili da variabili nel configuration.properties e variabili in sessione
  Precedentemente per i widget Image e Document, con mode==FILE_SYSTEM, fsPath puo essere:
  	* lasciato vuoto, con il file salvato nel path di default: 
  		basePath+"documents/"+className+"/"+fileName
  	* configurato come path assoluto
  		file:///C:/projects/PRJ/WEB/documents
		file:///C:/projects/PRJ/WEB/images
  Nel caso 2 si possono anche inserire espressioni che valutano a runtime i valori correnti del 
  record al fine di determinare il path
		file:///C:/projects/PRJ/WEB/images/${field_1}
  Sono ora aggiunti questi due nuovi parametri:
  * resolveFsPathWithConfigurationProperties, Boolean, default false.
  * resolveFsPathWithSessionParameters, Boolean, default false. Da usare solo in contesti dove è sempre disponibile
    la variabile in sessione
* EventTrigger: nuova proprietà "options" e duplicazione di tutti i metodi insert-update-delete...classRecord con introduzione del nuovo argomento "options" (issue #780)
* ContentHandlerWidget: aggiunta api, utilizzabile nelle azioni groovy , per l'esecuzione manuale e/o forzata della conversione del contenuto ifc in xkt e salvataggio sul cms (documentale) (issue #779)
* Aggiunta la possibilità di utilizzare la variabile "project_name" nelle DACL (issue #760) 
* issue #766 Mongo aggiunto flag mongo.enabled nel configuration.properties, default true per retrocompatibilità
* issue #763 widget BlobObject/Image/Document aggiunte nuove possibiltà di risoluzione dei placeholder ${} in fsPath,
  ora risolvibili da variabili nel configuration.properties e variabili in sessione
  Precedentemente per i widget Image e Document, con mode==FILE_SYSTEM, fsPath puo essere:
  	* lasciato vuoto, con il file salvato nel path di default: 
  		basePath+"documents/"+className+"/"+fileName
  	* configurato come path assoluto
  		file:///C:/projects/PRJ/WEB/documents
		file:///C:/projects/PRJ/WEB/images
  Nel caso 2 si possono anche inserire espressioni che valutano a runtime i valori correnti del 
  record al fine di determinare il path
		file:///C:/projects/PRJ/WEB/images/${field_1}
  Sono ora aggiunti questi due nuovi parametri:
  * resolveFsPathWithConfigurationProperties, Boolean, default false.
  * resolveFsPathWithSessionParameters, Boolean, default false. Da usare solo in contesti dove è sempre disponibile
    la variabile in sessione
* issue #750 fontawesome aggiornamento a v6.20 free. E' stata
  mantenuta ala retrocompatibilità con tutte le css rules gia definite.
  Elenco icone disponibili a https://fontawesome.com/v6/search
* Azioni: aggiunta nuova azione "Download file tramite groovy" con parametri (groovyActionDocumentGeneric) (issue #748) 
* issue #747 EventTrigger. aggiunte al trigger di classe proprietà predefinite
	* gwClassName, String, nome della classe
	* gwClass, Map, contiene il nome della classe ed altre informazioni
  Dichiarando negli hook point (come beforeUpdate()) del groovy variabili con lo stesso nome (gwClass/gwClassName), 
  il contenuto della variabile viene sovrascritto solo LOCALMENTE, e non negli altri hookpoint.
  
  Esempio: dichiarando una variabile gwClass dentro beforeUpdate(), e modificandone il valore, 
  non viene alterata la variabile globale predefinita gwClass dentro afterUpdate()
  
  Caso concreto (class 'utc_child'):
		public boolean beforeUpdate(HashMap<String,Object> valuesMap,HashMap<String,Object> OldvaluesMap){
			log.error("beforeUpdate()");
			
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			def gwClass = [:];
			gwClass.className = "local_cn";
			def gwClassName = "local_cn_gwClassName"
			
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			return true;
		};
		
		public boolean afterUpdate(HashMap<String,Object> valuesMap,HashMap<String,Object> oldvaluesMap){
			log.error("afterUpdate()");
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			return true;
		};
			
	produce come log:
	
		beforeUpdate()
		gwClass.className: utc_child
		gwClassName: utc_child
		gwClass.className: local_cn
		gwClassName: local_cn_gwClassName
		
		afterUpdate()
		gwClass.className: utc_child
		gwClassName: utc_child
* issue #738 nuove js api:
	* selectGwClassRecordRaw(gwClassName, itemId, callback, errorCallback, options)
	* selectGwClassRecordsRaw(gwClassName, filters, sort, callback, errorCallback, options)
* issue #720 gwClassList aggiunto auto-aggiustamento 'width' colonne in lista in per alcuni widget con 
  larghezza prevedibile. Di norma  la larchezza delle colonne in griglia è divisa equamentein base ai widget senza 
  vincoli impostati. Adesso alcuni widget, se non si imposta un width esplicitamente, prendono un default per la stessa
  widgets:
		* widget date 120px
		* widget date (handleTime true) 210px
		* widget time: 90px
  ambito:
		* gwClassList
		* childList
		* linkList
		* liste workflow
* Aggiunta API CDE 3.5 (issue #684)
* issue #681 nuove api js tab Layout2D
	showStaticInfo()
	hideStaticInfo()
* issue #620 liste dei widget linkList e linkListNam: aggiunta la possibilità di personalizzare l'ordine
  e la visibilità delle colonne delle liste (come issue #523 per gwClassList)
  Vengono valutati i prametri globabli e byClass cookieEnabled columnReordering nel tag <gwClassListSettings>
  in xml di progetto.
  Sono anche ora disponibili gli stessi parametri nei widget, ma non inizializzati, in maniera tale da non sovrascrivere
  le eventuali configurazioni generali.
* GwMail: aggiunto un nuovo servizio sendMail per l'invio multiplo della stessa mail a più destinatari, con delay configurabile (issue #618)
* wbapp GwOpenRequest - nuova configurazione spring-security per autenticazione della webapp (issue #610)
* issue #570 api js openGwClassList*() aggiunti parametri per la stilizzazione delle righe delle griglie
	* onStyleRowFunctionName
	* onStyleRowGwActionName
  Aggiunta possibilità di configurarli anche da sezione <gwClassListSettings> dell'xml del gwProject
	<code><gwClassListSettings>
		...
		<onStyleRowFunctionName>function_name</onStyleRowFunctionName>
		<onStyleRowFunctionNameByGwClassName>
			<entry gwClassName="gw_class_name_1" functionName="function_name_1"/>
			<entry gwClassName="gw_class_name_2" functionName="function_name_2"/>
		</onStyleRowFunctionNameByGwClassName>
		
		<onStyleRowGwActionName>gwActionName</onStyleRowGwActionName>
		<onStyleRowGwActionNameByGwClassName>
			<entry gwClassName="gw_class_name_1" gwActionName="gwActionName1" />
			<entry gwClassName="gw_class_name_2" gwActionName="gwActionName2" />
		</onStyleRowGwActionNameByGwClassName>
	</gwClassListSettings></code>
* issue #563 mappa 2D resa configurabile con xml in webadmin (come mappe BIM)
	* aggiunto campo xml_map_mode (stringa, maxLenght 4000) alla tabella dei metadati gwm_maps
			ALTER TABLE [SCHEMA_NAME].GWM_MAPS ADD XML_MAP_MODE VARCHAR2(4000 BYTE);
* gwClassList: aggiunta la possibilità di personalizzare l'ordine e la visibilità delle colonne delle liste (integrazione del plugin gwCustomClassList) (issue #523)
* issue #498: Modifica della pagina di avvenuto login da ClientCad. Ora l'immagine che compare può essere configurata dall'utente all'interno dei contenuti statici:
			  nome file: CCIndexBackground.jpg
			  dimensioni file: 481x438 px
* widget di tipo APPROVAL_WIDGET:
	* Introdotto nuovo stato del processo approvativo "KO_CHECK" riferito alla bocciatura con revisione/riserva (issue #598)
	* Nuovo modulo gwAproval, contenente tutte le nuove funzionalità per la gestione dei processi approvativi, compreso il nuovo widget APPROVAL_WIDGET (issue #468)
	* Nuovi parametri nel caso di update in una classe diversa da quella di definizione del widget (issue #596)
* issue #327 aggiunto parametro widthTime al widget date, opzionale. Risolve la problematica del
  widget date (con time) con textBox parte time troppo stretta con formTime piu lunghi di 'HH:mm' (es 'HH:mm:ss.zzz')
* Nuovo servizio 'getMapImageAdvanced' per l'esportazione di una immagine da una planimetria dato un oggetto (issue #230)
* Nuovo modulo 'furnitureplugin', contenente tutte le nuove funzionalità utilizzate nel 'Modulo Arredi'.
  Contiene tutto il materiale per il funzionamento del nuovo tab, di tipo 'furniture', 
  del componente Mappa2D.
  (ulteriore documentazione nella folder fornitureplugin\src\main\resources\support_config\furniture)
* issue #241 revisione generale degli stili delle UI
* Nuovo modulo 'gwdgrid' contenente le librerie dojo per il componente dgrid (issue #256) (https://dgrid.io/) 
* Aggiunto il background nel calcolo dell'envelope (issue #310) (https://dgrid.io/)
* Modifica della gestione delle relazioni su Bim Data (issue #372) 
* Fix del metodo che mostra lo zoom sull'indirectLocalizationWidget (issue #371) 
* issue #340 Aggiunto controllo in fase di pubblicazione di una planimetria 2D.
	 Se il geom_envelope è nullo in fase di inserimento viene lanciato un errore e impedita la pubbliazione
* Aggiunti nuovi widget che utilizzano API REST dei documentali (non più la libreria openCMIS). I nuovi widget 
  sono i seguenti:
	- AttachmentRestWidget -> va a sostituire Attachments
	- ContentHandlerRestWidget -> va a sostituire ContentHandler
	- ImgPathGalleryRestWidget -> va a sostituire ImgPathGallery
	- RestDocumentWidget -> va a sostituire CmisDocument

NEW COMPONENTS

DEPRECATED

  • issue #816 configuration.properties baseMgLibraryPath deprecato da mapguide.library.resourceId.scope
  • issue #773 workflow parametro configJSON
    • allTaskForm_startProcessInstanceLabel, ancora supportato, ma sostituito da startProcessInstanceLabel
    • processEndedGwActionName, ancora supportato, ma sostituito da processEndedActionName
  • issue #678 widget Textarea deprecati parametri:

numRows

	numCols
* java
	* Modes (com.geowebframework.transfer.model.projects.Modes) the xml configuration should now alway have a Mode pojo as radix
	  Modes is still supported for backward compatibility reasons
	* MapsService: rimosso service webadmin inutilizzato
	* GwRegistry @Deprecated methods
		* addArrayListToTabList()
		* addElementToPluginCommandList()
		* setPluginCommandList()
		* getPluginCommandList()
		* addArrayListToButtonGroupComponentsHM()
		* setButtonGroupComponentsHM()
		* addArrayListToCommandsNameHM()
		* setCommandsNameHM()
	 In generale sono stati caratterizzati (con 'threeD', 'ThreeD') i nomi per i metodi specifi del 3D
	 Ne sono stati creati altri speculari, ma specifi per il 2D (con 'twoD', 'TwoD')
	* SceneService @Deprecated methods
		* readSceneModeXML() in favor of buildModeFromXmlSceneMode() and derived
	* MapSettings.class
	  variabili deprecate
			private Boolean showBaseMapChange;
			private Boolean showLayersManagement;
			private Boolean showThematisms;
			private Boolean showMapEditing;
	  configurazione spostata su xml gwMap.
	  (non rimossi ancora per compatibilità vecchi xml, e non essendoci su xStream la configurazione 'ignoreUnkonTags')
	  NON SONO PIU VALUATI in layout2D
	  Ancora valutati in bimData2D, che però sarà soggetto ad una imminente revisione		  
	* MapLayoutController.class
	* Tab.class, String icon
	  @Deprectaed because icon is retrieved exclusively from 
			path='/icons/images/16_'+icon 		for top toolbar icon
			path='/icons/images/32_'+icon		for TabContainer tab icon
	  and not from static contents (WEB/path/to/icon_image.png). 
	  And is actually not configurable from configurator user, but just from the plugin writer,
	  that actually decides which icons are available
	  @Deprectaed in favor of icon16 and icon32, both retrieved from static contents
	  and fully configurable.
	  if present, icon is still supported to works as originally intended,
	  but icon16, icon32 have the priority in evaluation hierarchy
  

REFACTORS

  • Cdedashboard - eliminato plugin da repository geoweb e spostato su repository del prodotto cde (issue #804)
  • issue #797 ContentHandlerWidget refactor move dal modulo 'cde' ai moduli core (transfer-objects/dataservice/webclient)
    • class spostati in trasfer-objects:
      • com/geowebframework/cde/model/widget/ContentHandlerWidget.java
    • class spostati in dataservice:
      • com/geowebframework/cde/service/widget/ContentHandlerWidgetService.java
      • com/geowebframework/cde/mapper/ContentHandlerMapper.java
      • com/geowebframework/cde/mapper/oracle/OracleContentHandlerMapper.java
      • com/geowebframework/cde/mapper/postgres/PostgresContentHandlerMapper.java
      • com/geowebframework/cde/mapper/sqlserver/SqlserverContentHandlerMapper.java
    • class spostati in webclient:
      • com/geowebframework/cde/controller/ContentHandlerWidgetController.java
    • css spostati in webclient:

css/widget/contentHandlerWidget.css

  • js spostati in webclient (e fusi):

debug/js/widget/contentHandlerWidgetFormatter

		debug/js/widget/contentHandlerWidget.js
			=> debug/js/widget/contentHandlerWidget.js
	* messages.properties spostati in webclient
	* jsp spostati in webclient
* issue #773 workflow parametro configJSON
	* allTaskForm_startProcessInstanceLabel, ancora supportato, ma sostituito da startProcessInstanceLabel
	* processEndedGwActionName, ancora supportato, ma sostituito da processEndedActionName
* su java/jsp/js
	* PointCloudCommand CloseTabs => ToggleTabs3D
	* commandsNameHM => commandNameMap
	* buttonGroupComponentsHM => mainToolbarButtonsMap
	
* java
	* class BaseMapChangeController => PluginBaseMapsController
	* class LayersMangement => PluginLayersController
	* class GeometryEditController => PluginEditController
	* class LayoutChangeController => PluginLayoutChangeController

rev b1a2291ef49af1996b172d3a822918c72691c03a

date 2024/05/09

BUGFIX

  • modulo arredi: risolto errore bloccante che si manifestava al salvataggio delle modifiche in mappa2D (issue #1274)
  • workflow risolto errore java.text.ParseException: Unparseable number: “newItem” su startTaskForm (issue #1272)
  • mongo query builder risolti errori di carattere generale sulla gestione filtri (issue #1270)
  • widget ChildList js api gwSetReadonly() adesso setta readonly anche su eventuali righe (issue #1269)
  • widget LinkList/LinkListNam adesso il widget è sempre pronto quando si invocano api js (come gwSetReadOnly()) su azione di dettaglio pronto. Anche la prima volta, con cache metadati cancellata e useCompressed true. Posticipato evento 'gwClassDetail/gwAttributeReady', nelle grid toolbar (issue #1261)
  • widget SelectionListWidget implementata gwSetValue()/gwGetValue() js api, che gestisce anche i valori provenienti da gwAction eseguita da gwClassDetail/gwClassList (issue #1254)
  • widget LinkListNam - rimosse colonne degli ActionWidget messi in lista per la classe target, che davano un errore per riga (issue #1239)
  • scheda gwHtmlReport ripristinato funzionamento css class reportlink, che serve ad evidenziare all'utente i button/row elenchi clickabili. Dato che in 4.6 lo stile hover dei button è differente da quello delle row delle grid, sono state aggiunti contestualmente i selettori css (integrabili nelle report):
  • gwReportButton: da usare per i button (come reportlink, di cui ne viene scoraggiato l'uso per le nuove report)
  • gwReportRow: da usare per le row degli elenchi issue #1251)
  • Classificazione ed attributi variabili - errori vari gwClassFilter/gwClassDetail. Problematiche risolte
  • scegliendo filtri sugli attributi variabili ed applicandoli alla grid, chiudendo e riaprendo il filtro, non vengono ri-applicati alla form del filtro
    • applicando filtri sugli attributi variabili con dataType 'number'/'integer' non viene applicato il filtro in quanto viene passato datatype 'string'
    • nella form di dettaglio degli attributi variabili, non venivano salvati i valori degli attributi variabili di tipo date
    • dialog di gestione attributi variabili spaginate (issue #1246)
  • ListService gestione valori data sqlserver. Aggiunto supporto dei formati string:
    • 'yyyy-MM-dd HH:mm:ss.S'
    • 'yyyy-MM-dd HH:mm:ss.SSS'
    • 'yyyy-MM-dd HH:mm:ss.SSSSSSS'
    • 'yyyy/MM/dd HH:mm:ss.S'
    • 'yyyy/MM/dd HH:mm:ss.SSS'
    • 'yyyy/MM/dd HH:mm:ss.SSSSSSS' (issue #1250)
  • QueryBuilder usava impropriamente LOWER() anche per valori di gwFilter con dataType diverso da 'STRING' (issue #1249)
  • buildFormContainerParams() require non sync con useCompressed true Causava l'errore per cui le form custom aperte, solo la prima volta, da gwAction su leafItem xml di progetto erano vuote (issue #1247)
  • GwGroovyScriptEngineService getSessionObjectVars() aggiunti empty check ed exception (in caso di valore errato) su parametro projectName (issue #1245)
  • importCSV()/importSHP() - segnalare eventuale presenza due intestazioni di colonna con uguale nome su import (issue #1243)
  • scheda layout2D planimetrica - i layer spariscono su resize mappa (issue #1240);
  • scheda layout2D ripristinata compatibilità OpenLayers 2 con Google Maps api v3 (issue #1235)
  • gwScheduler risolto errore che si verificava temporaneamente con flag gwscheduler.clusterMode.enabled=true ed temporanee impostazioni non-sense (poi cambiate) (issue #1233)
  • insertClassRecord()/updateClassRecord() risolto errore con valori geometria lineare (polilinea) in formato WKT (LINESTRING (…) (issue #1230)
  • scheda gwLayout2D, risolto errore bloccante in apertura nei casi di assenza di almeno un MapGuide Layer correlato a ad un gwLayer, tramite convenzione stesso nome (Es: presenza di soli layer MapGuide con fonte dati .shp) (issue #1231)
  • Monitoring risolto errore su sqlserver del MonEventService metodo insertMonEvent(MonEvent event) (issue #1221)
  • tabella gwm_attributes record con campo ctrl_type = null Aggiunti check per evitare NullPointerException in vari punti del codice (issue #1217)

rev 7168a0496eca95953f9342252f5005700f7d2873

date 2024/03/20

BUGFIX

  • modulo arredi: risolto errore bloccante che si manifestava al salvataggio delle modifiche in mappa2D (issue #1274)
  • workflow risolto errore java.text.ParseException: Unparseable number: “newItem” su startTaskForm (issue #1272)
  • mongo query builder risolti errori di carattere generale sulla gestione filtri (issue #1270)
  • widget ChildList js api gwSetReadonly() adesso setta readonly anche su eventuali righe (issue #1269)
  • widget LinkList/LinkListNam adesso il widget è sempre pronto quando si invocano api js (come gwSetReadOnly()) su azione di dettaglio pronto. Anche la prima volta, con cache metadati cancellata e useCompressed true. Posticipato evento 'gwClassDetail/gwAttributeReady', nelle grid toolbar (issue #1261)
  • widget SelectionListWidget implementata gwSetValue()/gwGetValue() js api, che gestisce anche i valori provenienti da gwAction eseguita da gwClassDetail/gwClassList (issue #1254)
  • widget LinkListNam - rimosse colonne degli ActionWidget messi in lista per la classe target, che davano un errore per riga (issue #1239)
  • scheda gwHtmlReport ripristinato funzionamento css class reportlink, che serve ad evidenziare all'utente i button/row elenchi clickabili. Dato che in 4.6 lo stile hover dei button è differente da quello delle row delle grid, sono state aggiunti contestualmente i selettori css (integrabili nelle report):
    • gwReportButton: da usare per i button (come reportlink, di cui ne viene scoraggiato l'uso per le nuove report)
    • gwReportRow: da usare per le row degli elenchi issue #1251)
  • Classificazione ed attributi variabili - errori vari gwClassFilter/gwClassDetail. Problematiche risolte
  • scegliendo filtri sugli attributi variabili ed applicandoli alla grid, chiudendo e riaprendo il filtro, non vengono ri-applicati alla form del filtro
    • applicando filtri sugli attributi variabili con dataType 'number'/'integer' non viene applicato il filtro in quanto viene passato datatype 'string'
    • nella form di dettaglio degli attributi variabili, non venivano salvati i valori degli attributi variabili di tipo date
    • dialog di gestione attributi variabili spaginate (issue #1246)
  • ListService gestione valori data sqlserver. Aggiunto supporto dei formati string:
    • 'yyyy-MM-dd HH:mm:ss.S'
    • 'yyyy-MM-dd HH:mm:ss.SSS'
    • 'yyyy-MM-dd HH:mm:ss.SSSSSSS'
    • 'yyyy/MM/dd HH:mm:ss.S'
    • 'yyyy/MM/dd HH:mm:ss.SSS'
    • 'yyyy/MM/dd HH:mm:ss.SSSSSSS' (issue #1250)
  • QueryBuilder usava impropriamente LOWER() anche per valori di gwFilter con dataType diverso da 'STRING' (issue #1249)
  • buildFormContainerParams() require non sync con useCompressed true Causava l'errore per cui le form custom aperte, solo la prima volta, da gwAction su leafItem xml di progetto erano vuote (issue #1247)
  • GwGroovyScriptEngineService getSessionObjectVars() aggiunti empty check ed exception (in caso di valore errato) su parametro projectName (issue #1245)
  • importCSV()/importSHP() - segnalare eventuale presenza due intestazioni di colonna con uguale nome su import (issue #1243)
  • scheda layout2D planimetrica - i layer spariscono su resize mappa (issue #1240);
  • scheda layout2D ripristinata compatibilità OpenLayers 2 con Google Maps api v3 (issue #1235)
  • gwScheduler risolto errore che si verificava temporaneamente con flag gwscheduler.clusterMode.enabled=true ed temporanee impostazioni non-sense (poi cambiate) (issue #1233)
  • insertClassRecord()/updateClassRecord() risolto errore con valori geometria lineare (polilinea) in formato WKT (LINESTRING (…) (issue #1230)
  • scheda gwLayout2D, risolto errore bloccante in apertura nei casi di assenza di almeno un MapGuide Layer correlato a ad un gwLayer, tramite convenzione stesso nome (Es: presenza di soli layer MapGuide con fonte dati .shp) (issue #1231)
  • Monitoring risolto errore su sqlserver del MonEventService metodo insertMonEvent(MonEvent event) (issue #1221)
  • tabella gwm_attributes record con campo ctrl_type = null Aggiunti check per evitare NullPointerException in vari punti del codice (issue #1217)

rev 89d4cfa8b790ce9e942a10dd79236e45bc006c52

date 2024/01/30

BUGFIX

  • GeneralReportService generaReportListaRH() risolto errore:
    java.lang.IllegalArgumentException: Merged region A1 must contain 2 or more 
     cells

    che avveniva quando si esportavano dati con gwClass con un solo attributo in lista (issue #1157)

  • gwClassFilter risolto errore ripristino filtri della gwClassList su form simplified gwClassFilter. Casistiche affette:
    • datatype 'DATE' operator: ['is not null', 'is null', 'between', 'between (trunc day)']
    • datatype 'NUMBER' operator: ['is not null', 'between']
    • CLASSIFICATION operator ['in', 'not in'] (issue #1152)
  • widget date eventHandler change value non era chiamato nei passaggi da del valore davalue==null a value!=null (issue #1141)
  • gwClassList risolti errori bloccanti che potevano occorrere forzando l'id della grid tramite 'forceGridId'+'gridId' (issue #1139)
  • api js selectGwClassRecords() non valutava parametro sort (issue #1131)
  • gwClasslist parametri onStyleRowGwActionName onStyleRowFunctionName corretto funzionamento su leafItem e api js (issue #1130)
  • widget html showLabelInDetail true ora fa vedere la label (issue #1127)
  • MgInfoSelectionController migliorati log per aiutare a rilevare casi di errata configurazione (issue #1124)
  • gwClassDetail title ContainerNode della struttura di layout, aggiunta localizzazione e customizzazione (issue #1122)
  • api js openGwClassListX() aggiunto parametro 'hideFilter', default false (issue #1119)
  • js api openFloatingPane() con modal true, l'invocazione di .hide() non toglieva lo standbywidget incorporato (close() funzionava correttamente) (#1118)
  • aggiunti dojo require for 'dojo.html', che poteva causare potenziali errori casuali nell'utilizzo del frameowork, a seconda dell'ordine di caricamento UI/configurazione issue #1114)
  • js api openFloatingPane() rese configurabili le prop: 'resizable', 'maxable', 'closable' applicate al CustomFloatingPane (issue #1112)
  • api js openGwDynamicTimeLineTab() ora per i parametri 'start', 'end', 'min', 'max' vengono valutati correttamente anche gli oggetti javascript Date e Moment (issue #1110)
  • DACL CUSTOM risolto malfunzionamento che non faceva più risolvere alcune espressioni ${} #{}: gw_activeUser, gw_activeGroup, ambiti e tutte le variabili in sessione (issue #1108)

rev 75e05c25cfb232e01b1250aa2629cb550537f977

date 2023/11/30

BUGFIX

  • GeneralReportService generaReportListaRH() risolto errore:
    java.lang.IllegalArgumentException: Merged region A1 must contain 2 or more cells

    che avveniva quando si esportavano dati con gwClass con un solo attributo in lista (issue #1157)

  • gwClassFilter risolto errore ripristino filtri della gwClassList su form simplified gwClassFilter. Casistiche affette:
    • datatype 'DATE' operator: ['is not null', 'is null', 'between', 'between (trunc day)']
    • datatype 'NUMBER' operator: ['is not null', 'between']
    • CLASSIFICATION operator ['in', 'not in'] (issue #1152)
  • widget date eventHandler change value non era chiamato nei passaggi da del valore davalue==null a value!=null (issue #1141)
  • gwClassList risolti errori bloccanti che potevano occorrere forzando l'id della grid tramite 'forceGridId'+'gridId' (issue #1139)
  • api js selectGwClassRecords() non valutava parametro sort (issue #1131)
  • gwClasslist parametri onStyleRowGwActionName onStyleRowFunctionName corretto funzionamento su leafItem e api js (issue #1130)
  • widget html showLabelInDetail true ora fa vedere la label (issue #1127)
  • MgInfoSelectionController migliorati log per aiutare a rilevare casi di errata configurazione (issue #1124)
  • gwClassDetail title ContainerNode della struttura di layout, aggiunta localizzazione e customizzazione (issue #1122)
  • api js openGwClassListX() aggiunto parametro 'hideFilter', default false (issue #1119)
  • js api openFloatingPane() con modal true, l'invocazione di .hide() non toglieva lo standbywidget incorporato (close() funzionava correttamente) (#1118)
  • aggiunti dojo require for 'dojo.html', che poteva causare potenziali errori casuali nell'utilizzo del frameowork, a seconda dell'ordine di caricamento UI/configurazione issue #1114)
  • js api openFloatingPane() rese configurabili le prop: 'resizable', 'maxable', 'closable' applicate al CustomFloatingPane (issue #1112)
  • api js openGwDynamicTimeLineTab() ora per i parametri 'start', 'end', 'min', 'max' vengono valutati correttamente anche gli oggetti javascript Date e Moment (issue #1110)
  • DACL CUSTOM risolto malfunzionamento che non faceva più risolvere alcune espressioni ${} #{}: gw_activeUser, gw_activeGroup, ambiti e tutte le variabili in sessione (issue #1108)

NEW FEATURES

  • CustomFloatingPane aggiunto api js .set('dimensions', dimensions), per il ridimensionamento dopo la creazione (issue #1150)
  • CustomJsonRestStore aggiunta api js cancelAllPendingRequest(), utilizzabile per assicurarsi, prima di impostare nuovi filtri alla grid, che le eventuali richieste pending, non ancora risolte in quanto molto lunghe, manifestino i loro effetti nella grid in maniera indesiderata successivamente (issue #1138)
  • gwDynamicTimeline aggiunto parametro 'backgroundItems' per stilizzare intervalli temporali (bloccati, festivi, etc..) backgroundItems: Object[], optional, array contenente oggetti con proprietà:
    • start: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • end: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • content, string, optional.
    • bgcolor, string, optional and mutually exclusive with className
    • className, string, optional and mutually exclusive with bgcolor (needs somewhere a css class: .vis-item.vis-background.negative { background-color: rgba(255, 0, 0, 0.2); } )
      			Examples: [
      				{content: 'Forbidden Period 1', start: '2023-01-01', end: '2023-10-01', type: 'background''},
      				{content: 'Forbidden Period 2', start: '2024-01-01', end: '2024-10-01', type: 'background', bgcolor: 'rgba(255, 0, 0, 0.2)'},
      				{content: 'Forbidden Period 3', start: '2025-01-01', end: '2025-10-01', type: 'background', className: 'blocked'}
      			]

      (issue #1126)

rev d860617cf8ed25fca96e59c161abb55560f14270

date 2023/10/04

BUGFIX

  • classificazione: js gwGetChildClassification() errore nel caso in cui un filter di queryParameter abbia '<>' per operator (issue #1106)
  • gwDynamicTimeLine fix errore bloccante su swap entità quando valore entità raggruppante è nullo per nestedGroupItem (issue #1102)
  • gwClassDetail risolto errore bloccante su title contenente char apice singolo ' (issue #1101)
  • Layout2D mapEditing, funzione 'Edita tutti', corretto tooltip a mapCommand 'Elimina geometria' (issue #1091)
  • leafItem gwAction risolto errore tale epr cui in caso di più leafItem configurati, che facevano riferimento ad azioni di classi diverse, ma con stesso gwAction name, veniva sempre eseguita la azione del primo leafItem clickato (issue #1089)
  • js api gestione sessionParameters: aggiunti log, callback clearSessionParameters() e setGwSessionParameters() (issue #1074)
  • widget contentHandler/contentHandlerRest, senza docFormatsColumn impostato, od impostato ma con relativo valore non popolato dava errore su ogni file caricato: Il formato del documento oggetto di caricamento … non è fra i formati ammessi Inoltre, su tutti i dialog di conferma, chiudendoli con la X in alto a destra, si aveva la problematica che il file veniva salvato anche se non avrebbe dovuto farlo (issue #1066)
  • Report errore su apertura StringIndexOutOfBoundsException: ERROR com.geowebframework.dataservice.customResultHandler.RHCallbackImpl - String index out of range: 0 java.lang.StringIndexOutOfBoundsException: String index out of range: 0 (issue #1065)
  • GwIndex:
    • corretto errato resize dojo (issue #1103)
    • classe fa-circle-user non riconosciuta (issue #1061)
  • function gwDownloadFile() aggiunto encoding URI e gestione dei char non ammessi nei nomi del filesystem (issue #1060)
  • widget GwGallery ora è di nuovo possibile tornare indietro da modalità fullScreen, quando il widget è opsitato da un floatingPane con flag modal a true (come accade al click su button 'anteprima' del ContentHandlerWidegt di tipo Galleria Fotografica) (issue #1057)
  • widget contentHandler/contentHandlerRest adesso al caricamento viene fatto un check sull'estensione del file, se valore del campo impostato in 'docFormatsColumn' (in xml widget) è impostato. Infatti, pur venendo aperto il file chooser con impostati i filtri sui formati file, l'utente può rimuovere il filtro e scegliere un file qualsiasi. Adesso viene generato un messaggio di errore nel caso in cui il file ha estensione diversa da quelle configurate. In mancanza di configurazione il check non è eseguito (issue #1056)
  • ContentHandler: handleContent non funziona a causa di classType che viene sovrascitto nell'azione risultando undefined (issue #1050)

NEW FEATURES

  • DACL gwAction CUSTOM aggiunto supporto espressioni #{map.cod_field} ${map.cod_field} che fanno riferimento ai valori correnti dei campi del record di classe (issue #1096)
  • gwCalendar, errore gwClass eventi senza nameColumn configurato (non obbligatorio per la classe, ma necessario quando essa è usata come sorgente eventi per il calendario). Aggiunto errore per supporto alla configurazione ERROR - gwClass 'nameColumn' cannot to be null, when the gwClass is used as events source. Configure it in webadmin [gwClass name='class_name'] (issue #1095)
  • scheda Layout2D, plugin mapEditing, nuova funzione 'Elimina singolo', che elimina il singolo record selezionato in mappa (issue #1080)

rev e40d1cdf87d301fe6b9e96e6ddf5b1b627653aa2

date 2023/08/23

BUGFIX

  • risolti errori su js export: standardListSelectedAllAttributeExportToExcel() standardListSelectedGroupAttributeExportToExcel() che per i widget combobox e checkbox, con dataType STRING, e flagimportCSVWithoutDecoding true sbagliava esportando il codice (key), invece della label (value) (issue #822)
  • Gwindex - resize errato con la nuova versione di chrome (issue #1048)
  • GwApproval: corretta opacity nelle card disabilitate (issue #1047)
  • risolti errori cannot cast Time to Date (com.geowebframework.transfer.model.widget.*) (issue #1044)
  • GwWidgetDataService getValueToShowFromValueToStore() aggiunto supporto per i widget checkbox e combobox (issue #1043)
  • widget attachmentWidget, non applicava sempre readonly correttamente. Poteva non applicarlo al widget corretto e/o applicarlo ad un qualsiasi altro widget dello stesso tipo aperto in un altro gwClassDetail (issue #1039)
  • widget linkListNam su associa/disassocia venivano tolte erroneamente anche le associazioni nascoste da DACL (issue #1038)
  • gwClassList fix errore su eliminazione molti record (>1000) PSQLException: ERRORE: la relazione “gw_tmp_big_in_clause” non esiste (issue #1037)
  • widget date (handleTime=true) evento attributi onchange ora viene triggerato quando è popolata anche la parte time (issue #1035)
  • widget linkListNam risolto errore valutazione queryClause #{} null and applyQueryClauseToAssociated true (issue #1034)

NEW FEATURES

  • GwApproval: aggiunto allegato nella modalità di presa visione (issue #1046)

rev e432b1a9645c1540fd03aa9c4893e3b424c9a51c

date 2023/07/28

BUGFIX

  • widget gwGallery: risolto errori devivanti dal click sul button fullScreen dal dettaglio floatingPane (issue #1025)
  • widget contentHandler: risolto errore bloccante al click su downloadButton (issue #1024)
  • layer WMS risolti sulle chiamate GetCapabilities/GetFeatureInfo gli errore generati dal browser: This request has been blocked; the content must be served over HTTPS. Gli errori erano generati quando gli url dei WMS erano confgiurati http: nel webadmin, mentre l'applicativo era esposto come https: (issue #1020)
  • widget document: risolto errore tale per cui, se il file era gia presente e veniva cambiato dall'utente, dopo un salvataggio fallito del dettaglio (errore in trigger groovy: validazione estenzione dello stesso file) l'utente non poteva più modificare il file
  • scheda layout2D/BimData2D/ScenarioLayout2D risolto errore bloccante in apertura imponendo filtri sui layer da api js (issue #1014)
  • scaricando la report xls, solo su Chrome in alcuni contesti non ben definiti (OS windows 11 confermato), sistematicamente la pagina corrente veniva sostituita con una pagina bianca. Non vengono dati ulteriori errori. La problematica non si manifestava con altri browser. (issue #1013)

rev e432b1a9645c1540fd03aa9c4893e3b424c9a51c

date 2023/07/17

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

  • refactor jsp
    • singlequote ⇒ singleQuote
    • singlequoteEscaped ⇒ jsEscapedSingleQuote
    • jsEscapedSinglequote ⇒ jsEscapedSingleQuote

(issue #981)

rev cd02360e529cc0a677aac1dfd5335ea5cdb763c0

date 2023/07/17

BUGFIX

  • gwClassFilter risolto errore su classe classificata per campo non variabile con operatore 'VALORIZZATO'/'NON VALORIZZATO' (#1009)
  • filtri classificazione risolte le seguenti problematiche:
    • se l'operatore della 'Famiglia' era differente da '=', i widget dei filtri in cascata sottostanti non si aggiornanavano coerentemente e quindi sono ora disabilitati
    • l'operatore della 'Famiglia' valorizzato con 'diverso da' aveva lo stesso effetto di '=', ora lavora correttamente

(issue #1006)

  • gestione attributi variabili - il cambiamento ordine non veniva persistito (issue #1005)
  • fix errore org.vividsolutions.jts.io.ParseException: Attempt to read past end of input (issue #997)
  • import CSV errore Expected ',' or '}' after property value in JSON, quando geoweb_error è popolato (issue #996)

NEW COMPONENTS

DEPRECATED

REFACTORS

rev 755a4c7090377db83e046246b92da7877454a62c

date 2023/06/12

BUGFIX

  • widget linkListNam risolti svariati errori sulle azioni 'Aggiungi alla selezione' / 'Rimuovi dalla selezione' (issue #715)
  • 2nd level menu hierarchicalFilterLeafItemContainer fixati errori bloccanti in caso di singleAccordionPaneWrapper (un solo 2nd level menu nel suo 1st level menu) (issue 993)
  • fixato errore sul command di layout2D WmsGetFeatureInfoCommand tale per cui si abilitava in automatico il comando di selezione rect su switch off di elementio nell'albero dei layer, anche quando non voluto (con non voluta deattivazione del mapCommand precedente) (issue #984)
  • Risolto problema della mancata valutazione dei permessi quando il flag del configuration.properties è abilitato report.permission.enable=true Adesso i permessi vengono valutati anche:
    • azione che mostra nel button '…' azioni e report per il dettaglio (retrieveUserActionsForSingleRecord)
    • azione che mostra nel button '…' azioni e report per la lista (retrieveUserActionsForMultipleRecord)
    • report di dettaglio classe
    • report elementi in lista
    • report elementi in lista (con filtro)
    • report di processo (issue #983)
  • widget attachment/attachmentRest ora se posti in un dettaglio di class con i soli permessi di visualizzazione vengono settati in modalità readonly (issue #982)
  • risolti errori bloccanti dovuti a label gwClass con caratteri speciali (tipo ') (issue #981)
  • scheda bimData2D risolti vari problemi di layout e dimensionamento:
    • la bottom-toolbar nasconde la scaleline della mappa
    • selezionando le proprietà di un oggetto, nel pannello di destra, quando sono tante,

vengono tagliate in basso

  • tagliati in basso anche gli ultimi comandi
  • compare ancora la prima tooolbar vuota delle 'modes', già rimossa in 4.6.* (issue #980)
  • js openGwReport() ora viene di nuovo valutato e mandato al server il parametro required in ingresso 'actionName', che era stato erroneamente rimosso (issue #979)
  • widget childlist dbwindowlist usa valori di widget di indice di cella minore che hanno in comune fielToStore / fieldToShow (issue #977)
  • filtro windowchoice perdeva ultima colonna quando filtrando si otteneva la perdita della scrollbar dall grid sottostante.Analogo problema per il positionWidgetEditDialog. (issue #975)
  • graphicLayoutByBuildingSwitchMenu/graphicScenarioLayoutByBuildingSwitchMenu risolto errore di codifica parametro sessionBuildingCode della chiamata elementi albero, che poteva contenere caratteri speciali (issue #973)
  • scheda layout2D risolto errore per cui su editing multiplo geopmetria, selezionando un elemento in mappa (quando ne era gia selezionato un altro), non veniva visualizzato il mini dettaglio di classe (detailLayout 'main') inglobato nel tab di editing mappa. Inoltre non veniva nascosta anche l'eventuale label dell'attributo geometry presente nel dettaglio di classe. Problematiche simili anche per il tab editing del plugin gw-scenarios ed il tab del plugin gw-furnitures (issue #966)
  • scheda layout2D/BIMdata risolti errori bloccanti dovuti a char ' nei file properties localizzati it ed errore bloccante dojo parse codice JSTL json (solo in mappa geoexplorer) (issue #965)
  • GwWidgetDataService empty check su value in ingresso a getValueToStoreFromValueToShow() (issue #969)
  • layout2D editing multiplo risolti vari problemi:
  • errore su js saveAllMultipleGeometryEdit()
  • andando in editing multiplo geometrie disallineate con da layer mapguide,

quando epsg code dei widget geometry è diverso da quello della gwMap (issue #968)

  • risolti errori invio email dovuti a proprietà del configuration.properties dichiarate, ma non valorizzate: gwMailService.mailSmtpSslProtocols= Errore: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate). Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: in via precauzionale gestito anche: gwMailService.mailSmtpSslTrust= mentre questo dava un errore, con stack, anche se non bloccante gwMailService.mailSmtpSslEnable= (issue #967)
  • scheda layout2D su geoexplorer fixato errore bloccante No message found under code 'map.topToolbar.modifyGeometryCommand.rotateClockwiseTooltip' (issue #959)
  • azione js exportShape() risolto errore di parse che impediva l'esportazione se la lista di classe di partenza aveva impostato un filtro (issue #944)
  • fixati errori in azioni js exportShape() importShape() importCSV() nei cai in cui la richiesta era troppo grande (in genere a causa delle dimensioni del parametro columnHeadersMap) Rimosse dal file di export .dbf le altre geometrie non principali Aggiornato file lib_utility.groovy nei metodi:

* public HashMap getGeometry(HashMap valuesMap)

  		* public HashMap getCentroids(HashMap valuesMap)
  che sono utilizzati in vari trigger groovy di classe (che davano errore in fase di import shp) (issue #891)
* Maven - errore di build "Non-resolvable parent POM for com.geowebframework:gwRabbitPublisher:4.5.4" (issue #929)
* gwindex - pagine di accesso cde35: modificare label Eseguito in Esecutivo (issue #928)

NEW FEATURES

  • aggiunta possibilità di configurazione autocomplete=“off” per le form di geoweb: login, change-password, reset-passord Nel configuration.properties:
	  	##################################################################
		#	L O G I N
		##################################################################
		#default false. It allows to disable the auto-complete for the gw-login form (made by the browser) (issue #793)
		login.form.autocomplete.disabled=true
		

(issue #974)

 
* Modifica (solo lato server) al client ContentUploader per gestire il caso di caricamento massivo di contenuti di tipo galleria fotografica. Aggiunto metodo createAndUploadContentGal richiamato nel metodo uploadAimContent  (classe CdeService). Aggiunto inoltre il servizio MassiveContentUploderService per gestire la generazione del file index.xlsx necessario per l'utilizzo del client di caricamento e per ripulire i dati delle immagini già presenti nel db (issue #990)

NEW COMPONENTS

DEPRECATED

REFACTORS

rev 30d95ab04e58c82219b59b5049bd327f62b6df2c

date 2023/03/24

BUGFIX

  • Entities Manager: fix classificazione: aggiunto nullcheck (issue #897)
  • dojo dateLocale.format date with locale errore bloccante dovuto al passaggio forzato del gwLocale (issue #884)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • widget image in gwClassList/childList aveva la preview sformata in quadrato che non rispettava il fattore di forma dell'immagine (issue #842)
  • Riportate le modifiche effettuate a geomanager/mapLayout2D.jsp anche su geoexplorer/mapLayout2D.jsp (issue #846)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • Fix Mapguide Style e LayerStyleTypeHandler

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

* GwApproval - correzione uscita anticipata dal processo approvativo con gwApproval.exitOnFirstReject = true (issue #824) * issue #819 widget (tutti), tolta eccezione con espressione #{} irrisolta in defaultValue/initSelValue. I configuratori possono mettere espressioni #{} nel defaultValue/initSelValue dei widget. La configurazione è ovviamente per classe. In alcuni casi la stessa classe è utilizzata sia in progetti con variabile in sessione, che senza. Adesso si può evitare di duplicare la classe ed usarla in progetti con o senza variabile in sessione * issue #810 bimData2D risolto errore bloccante 'no message found for map.topToolbar.streetViewTooltip' * issue #817 bimData2D aggiunto il widget mapLayout all'interno del tab dei comandi

NEW FEATURES

* issue #812 bimData2D - Modificate le azioni di importazione attributi Bim da Mongo al BimData.

      Le due nuove azioni accettano in entrata il parametro codScope e sono le seguenti:
         - importMongoAttributeIntoTechnicalData per le anagrafiche tecniche
         - importMongoAttributeIntoManagementEntities per le entità gestionali 

NEW COMPONENTS

DEPRECATED

REFACTORS

* issue #811 gwResourcesDeployer rimosso modulo dal git repository di geowebframework ed esportato su nuovo git repository:

		https://gitlab.com/geowebframework/gw-resources-deployer

BUGFIX

* issue #808 widget date e time in childList non funzionava bene con useCompressed true * issue #807 clientCAD uploadManager - aggiunto ordinamento su query di recupero Strutture di Modello * issue #803 threeDVisualizer fix importazione attributi su Mongo

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

* issue #804 cdedashboard - eliminato plugin da repository geoweb e spostato su repository del prodotto cde

BUGFIX

* issue #787 IndirectLocalizationWidget su BimData2D lanciava un eccezione di array out of bound se veniva fatto lo zoom su più poligoni contemporaneamente * issue #775 workflow leafItem gwStartProcessInstanceByMessageAction non elaborava codice js nel parameter 'processVariables' Adesso viene correttamente gestito anche codice del tipo

	  	<parameter name="processVariables" value="{ date_1: new Date(), cod_utc_gwprocess: 'pi_'+new Date().getTime() }" hideToClient="false"></parameter>

* issue #768 nei widget che usano StandbyWidget per impostare stato readonly/disabled a true, aggiunta css class gwAttributeWidgetStandbyWidget per scopo di testing. Widget interessati: linklist, linkListNam, ChildList, ContentHanlder, stepbarWidget, gwArchivedProcessesWidget, gwRelatedProcessesWidget, gwTasksWidget, gwDigitalDocument, cmisDocumentWidget * issue #767 fix errore non bloccante eclipse build maven cvc-elt.1.a: Cannot find the declaration of element 'project' risolto utilizzando https invece che http per gli attributi xmlns, xmlns:xsi, xsi:schemaLocation nei pom.xml ed assimilabili * issue #765 widget image corretto effetto su UI in seguito ad invocazione js api

  gwSetReadonly(true)/gwSetDisabled(true), che modificavano readonly/disabled.
  Adesso si disabilità correttamente la UI di update/delete immagine

* issue #757 ws geometries.json troncava le coordinate delle geometrie a 4 decimali.

  Il risultato erano geometri sformate elaborate nei vari client mappa
  La problematica si manifesta principalmente su mappe cartografiche.
  La problematica è anche accentuata se si invoca il service con il parametro 'coordinateSystem', 
  che forza la conversione delle geometrie prima della restituzione
  Nel contempo di è deciso di unificare su geometries.json i seguenti 
  service che erano stati nel tempo duplicati:

* getGwClassFeatures.json Rimosso ed aggiornati i puntamenti javascript * gwOlLayerGeometries.json @Deprecated, punta lato java a geometries.json. Aggiornati puntamenti javascript * issue #755 sistemate le relazioni nel tab mongo Info nel Bim Explorer 2D * issue #752 Modificata la condizione di verifica all'interno dell'handle che popola il tab BimData2DCommands * issue #737 scheda layout2D risolti errori bloccanti al click su alcuni mapMommand: * QuickInsertGeometryPolylineCommand * QuickInsertGeometryFreePolygonCommand * QuickInsertGeometryRectangleCommand * issue #727 widget externalTable tasto 'Delete' (aggiunto in issue #624) in lista dialog era sempre disabled,

  anche selezionando uno o più elementi in  lista

* issue #725 alcuni widget complessi che, quando sono 'disabled' (in partenza o in seguito ad api js),

  utilizzano uno standbyWidget tasparente per evitare l'interazione utente con la la loro UI 
  non permettono di utilizzare la UI (es: button) dei floatingPane che stazionano sopra di essi 
  (per esempio floatingPane aperti da widget externalTable, dbwindowlist, etc..).
  La probleamtica era legata agli zIndex.
  Widget interessati:
	* ChildList
	* linkList
	* linkListNam
	* cmisDocumentWidget
	* gwDigitalDocumentWidget
	* stepBarWidget
	* gwArchivedProcessesWidget
	* gwRelatedProcessedWidget
	* gwTasksWidget
	* contentHandler

* issue #724 widget dbWindowList in liste gwClassList/ChilsList/linkList non mostrava il valuetoshow nel

  textbox

* issue #723 Nella childList in edit, modificando a null i valori dei widget ('Scegli..' per le combo), alcuni widget

  non ripristinavano o il valore null/'' od il colore di sfondo giallo che ne denotava la modifica del valore.
  Widget affetti:
	* time, tiene valore ma non ritorna lo sfondo giallo
	* date, non teneva valore (inoltre mostra come data 1/1/1970..), ma ritornava lo sfondo giallo
	* dbcombobox, teneva valore, ma non ritornava lo sfondo giallo
	* dbwindowlist, non teneva valore pur ritornando lo sfondo giallo
	* externaltable, non teneva valore annullato (e di consequenza niente sfondo giallo)
	* dbsuggestbox, teneva valore annullato, ma non ritornava lo sfondo giallo

* issue #722 widget time in childList edit non salvava il valore modificato * issue #721 childlist in edit. Alcuni widget il cui valore era stato modificato, ed il

  cui sfondo si colorava di giallo, al cambio tab e successivo redraw della childList,
  pur mantenendo il valore modificato, perdevano lo sfondo giallo. Widget interessati
	* date
	* time
	* numberbox

* issue #710 widget geometry aggiunti messagi custom localizzati per i tooltip dei button:

  • showOnMap
  • editOnMap

I tooltip sono sovrascritti sia per il gwClassDetail, che per la gwClassList

  La localizzazione dei messaggi è disponibile tramite il dizionario

* issue #709 dojo tree con nodi che usavano CheckBox nel templateString

  Al click sul CheckBox, venivano erronemanete espansi/collassati anche gli eventuali sottonodi dell'albero
  Ne erano affetti solo gli alberi dopo l'introduzione di dojo flat e del nuovo stile grafico (isuse #241)
  Componenti interessati:
	* customDojo/map/plugin/LayersManagement.js
	* customDojo/pointcloud/ActivityViewer.js
	* customDojo/pointcloud/BimCategoriesManagement.js
	* customDojo/pointcloud/BimData2DCategoriesManagement.js
	* customDojo/pointcloud/BimData2DLayersManagement.js
	* customDojo/pointcloud/BimLevelsManagement.js
	* customDojo/pointcloud/SceneLayerManagement.js

* Filtro con opzioni di scelta - corretto errore nella selezione della scelta del valore da filtrare (issue #670) * Dashboard - corretto errore all'apertura della dashboard per mancanza di parametri (issue #669) * ACL con parametri dinamici: corretto errore nella query di apertura del dettaglio per mancata gestione dell'alias ao (issue #659) * Liste personalizzate: aggiunta personalizzazione delle liste nella dashboard di tipo team (issue #657) * Liste personalizzate: nuovo parametro cookieName per gestire liste diverse su stessa classe (issue #655) * issue #651 widget dbWindowList (ma anche positionWidget/windowChoice filter)

  revisione area filtro grid in dialog scelta:
    * i valori dei field Date arrivavano cosi come sul db (su Postgres numero in ms). Ora vengono
      formattate con il format 'dd/MM/yyyy, HH:mm'
    * Precedentemente nella toolbar dedicata al filtro c'erano varie problematiche: 
      * se si inserisce un valore stringa sul filtro dei field di tipo INTEGER/NUMBER, ora non viene piu
        applicato il filtro generando l'errore in grid, e viene notificato l'utente
      * Ora per i field di tipo DATE (dove prima c'era un imput di testo che doveva essere 
        popolato dall'utente sol con stringhe nel formato esatto 'yyy/MM/dd'), 
        ora è presente un DateTexBox dojo, che applica un filtro '= (TRUNC DAy)' generando automaticamente la stringa 
        nel corretto formato
    * Ora è possibile rimuove velocemente tutti i filtri imposti al click sul button nella prima colonna
      in alto a sinistra, che compare e scompare in base all'imposizione dei filtri alla grid

* issue #630 Modificato il modo con cui viene recuperato l'utente all'interno dei metodi dell'umplugin. * issue #623 widget linkList/linkListNam/childList cambio modalità valutazione

  parametri tag <gwClassListSettings> in xml di progetto. Prima venivano sovrascritti, 
  senza intervento esplicito da parte del configuratore, alla sola
  creazione di un ogni nuovo widget e relativo xml (con valori di default a false).
  Questo di fatto vanificava le impostazioni globali, costringendo il configuratore ad
  una configurazione puntuale.
  Adesso vengono inizializzati i tag vuoti (valorizzati a null). 
  Solo qualora il configuratore imposti a true/false il parametro
  specifico del widget(con priorità maggiore rispetto ai globali) esso verrà valutato.
  Elenco parametri interessati per widget:
    * linkList:
        * hideActionsDropDownButtonColumn
        * hideIndirectSelectionColumn
        * hideNewIgnorePermissions
        * hideDeleteIgnorePermissions
    * linkListNam:
        * hideActionsDropDownButtonColumn
        * hideIndirectSelectionColumn
    * childList:
        * hideToolbar
        * hideIndirectSelectionColumn
        * hideNewIgnorePermissions
        * hideDeleteIgnorePermissions
  Fix collaterali: 
    * la linkListNam e la childList non valutavano un eventuale hideIndirectSelectionColumn globale 
      configurato, ma sempre e solo il loro equivalente sull'xml del widget
    * la childList non valutava un eventuale hideToolbar globale configurato
    * la childList non valutava un eventuale hideHeader nel suo xml di widget
  La modifica non genererà incompatibilità con i metadati già creati.

* issue #574 revisione nel codice dei query('*', ..) con query.NodeList() per migliorare le performance a runtime * Personalizzazione Loghi: introdotti nuovi parametri per la personalizzazione dei loghi nei banner, nello sfondo della home page e per il logo della login (issue #604) * Home Button: modifica colore errato nell'immagine gwhome.png (issue #602) * Liste: corretto errore “gridContextMenuId undefined” con parametro hidetoolbar impostato a true dopo issue #523 (issue #600) * GwApproval: * corretto refresh della dashboard GwApprovalDashboard (issue #617) * modifica label in seguito alla definizione del glossario di validazione (issue #601) * corretto errore “form non definita” nella dialog di approvazione dell'utente (issue #599) * dashboard - nuovo parametro per la configurazione della label della colonna con le azioni che consentono l'approvazione (issue #597) * Nuova dashboard per il monitoraggio delle approvazioni (issue #538) * sostituita apertura di un componente di tipo floatingPane con il tipo dialog (issue #582) * corretto errore nella modalità di creazione del codice approvativo (issue #579) * esposti nuovi metodi che inizializzano il modello dati del widget (issue #577):

  • createApprovalResult (String gwClassName, String attributeName, String itemId)
  • createApprovalResult (String projectName, String gwClassName, String attributeName, String itemId)

* aggiunto blocco approvazione nel caso di bocciatura e stesso utente nello stesso stato in cui avviene la bocciatura (issue #531) * aggiunto carattere di evidenza nella card nel caso di richiesta revisione (issue #530) * corretto standByWidget che termina prima degli ultimi update della classe degli elaborati (issue #529) * introdotti insertClassRecord al posto degli insert in tabella (issue #764) * Esposto servizio gwApprovalWidgetService (issue #774) * Introdotto parametro gwApproval.exitOnFirstReject per uscita al termine del livello in caso di bocciatura (issue #730) * issue #516 Apertura dell'albero dei piani anche se questo è vuoto. I piani possono essere creati da clientcad * ApprovalWidget: * Correzione errori query in sqlserver e introdotto typeHandler per il cast di un dato intero a booleano (issue #495) * Correzione stili e nuove icone per compatibilità con versioni Geoweb 4.4.X (issue #494) * Corretto errore nella chiusura della form di tipo AUT e VIEW nel caso di conferma senza aver visionato o approvato/bocciato (issue #493) * Corretto errore nella costruzione della struttura di output per utenti con solo username (issue #485) * Corretto errore in insert nella tabella gwd_approval_sign causato da chiave esterna con la gwd_approval_result (issue #481) * Dojo 1.16: bugfix al componente Chart.js di dojo. (Modifica della funzione “foldl” di dojox/lang/functional/fold.js) (issue #466) * CDE: * dashboard: aggiunto refresh della dashboard in update/delete/insert della classe geoweb di riferimento (issue #520) * pagine di accesso con più di 8 progetti: aggiunta scrollbar per schermi inferiori a 1500px e aumentata dimensione del LayoutContainer per schermi maggiori (issue #519) * corrette query dei progetti per le pagine di accesso in seguito all'eliminazione del campo project_type della cde_01_project (issue #518) * corrette query nelle pagine di accesso causa eliminazione della vista cde_metadata.v_gwindex_gwm_projects (issue #461) * dashboard: correzione filtro per la lista di classe nella dashboard di tipo TEAM (issue #460) * dashboard: corretto recupero gwid degli attributi per la corretta applicazione dei filtri (issue #462) * dashboard: modificata label kpi di avanzamento in kpi in corso (issue #463) * dashboard: aggiunta animazione nel grafico a barre della dashboard di tipo PROJECT (issue #467) * spring-security.xml: possibilità di gestire dimensione massima di caricamente del singolo file tramite nuovo parametro “commonsMultipartResolver.maxUploadSize” nel configuration.properties (issue #428) * WebclientTemplate-archetype: corretto tag http in spring-security.xml (issue #422) * issue #559 chiamate editDetail/ bloccate dopo introduzione policy csrf (regressione della issue #81)

  La problematica si manifestava nella scheda mappa 2D nel tentativo di eseguire il 
  salvataggio singolo della geometria con l'apposito button. Aggiunto check csrf anche 
  sulla chiamata che persiste l'editing multiplo delle geometrie e altre property dalla mappa 2D
  (rest/saveAllMultipleGeometryEdit)

* issue #430 Fix di un cast di un integer a string che creava un eccezione. Avveniva alla cancellazione di un livello da upload manager. * issue #412 Sistemate le query per la costruzione dell'albero del Bim Explorer filtrato per discriplina (cod_system –> system e cod_level –> level) * issue #398 Cambiato il filtro da String a Integer sulla chiamata getLayoutHMByFkLayout nella classe gwPublishService * issue #129 Mancata assegnazione label e tooltip a MapCommand mappa 2D con useCompressed=true * Csrf: corretto bug nell'encoding dei parametri url nelle richieste POST in codifica diversa da UTF-8 (issue #184) * webclient: * ReportController e GwGroovyActionController: corretta la gestione degli errori per evitare nullPointerException,

												   modificati i messaggi di errore 

NEW FEATURES

* issue #664 Sviluppato il plugin gwScenari che permette la gestione degli scenari delle planimetrie all'interno del framework.

  • issue #766 Mongo aggiunto flag mongo.enabled nel configuration.properties, default true per retrocompatibilità
  • issue #763 widget BlobObject/Image/Document aggiunte nuove possibiltà di risoluzione dei placeholder ${} in fsPath,

ora risolvibili da variabili nel configuration.properties e variabili in sessione

  Precedentemente per i widget Image e Document, con mode==FILE_SYSTEM, fsPath puo essere:
  	* lasciato vuoto, con il file salvato nel path di default: 
  		basePath+"documents/"+className+"/"+fileName
  	* configurato come path assoluto
  		file:///C:/projects/PRJ/WEB/documents
		file:///C:/projects/PRJ/WEB/images
  Nel caso 2 si possono anche inserire espressioni che valutano a runtime i valori correnti del 
  record al fine di determinare il path
		file:///C:/projects/PRJ/WEB/images/${field_1}
  Sono ora aggiunti questi due nuovi parametri:
  * resolveFsPathWithConfigurationProperties, Boolean, default false.
  * resolveFsPathWithSessionParameters, Boolean, default false. Da usare solo in contesti dove è sempre disponibile
    la variabile in sessione
* EventTrigger: nuova proprietà "options" e duplicazione di tutti i metodi insert-update-delete...classRecord con introduzione del nuovo argomento "options" (issue #780)
* ContentHandlerWidget: aggiunta api, utilizzabile nelle azioni groovy , per l'esecuzione manuale e/o forzata della conversione del contenuto ifc in xkt e salvataggio sul cms (documentale) (issue #779)
* Aggiunta la possibilità di utilizzare la variabile "project_name" nelle DACL (issue #760) 
* issue #750 fontawesome aggiornamento a v6.20 free. E' stata
  mantenuta ala retrocompatibilità con tutte le css rules gia definite.
  Elenco icone disponibili a https://fontawesome.com/v6/search
* Azioni: aggiunta nuova azione "Download file tramite groovy" con parametri (groovyActionDocumentGeneric) (issue #748) 
* issue #747 EventTrigger. aggiunte al trigger di classe proprietà predefinite
	* gwClassName, String, nome della classe
	* gwClass, Map, contiene il nome della classe ed altre informazioni
  Dichiarando negli hook point (come beforeUpdate()) del groovy variabili con lo stesso nome (gwClass/gwClassName), 
  il contenuto della variabile viene sovrascritto solo LOCALMENTE, e non negli altri hookpoint.
  
  Esempio: dichiarando una variabile gwClass dentro beforeUpdate(), e modificandone il valore, 
  non viene alterata la variabile globale predefinita gwClass dentro afterUpdate()
  
  Caso concreto (class 'utc_child'): <code java>
		public boolean beforeUpdate(HashMap<String,Object> valuesMap,HashMap<String,Object> OldvaluesMap){
			log.error("beforeUpdate()");
			
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			def gwClass = [:];
			gwClass.className = "local_cn";
			def gwClassName = "local_cn_gwClassName"
			
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			return true;
		};
		
		public boolean afterUpdate(HashMap<String,Object> valuesMap,HashMap<String,Object> oldvaluesMap){
			log.error("afterUpdate()");
			log.error("gwClass.className: "+gwClass.className);
			log.error("gwClassName: "+gwClassName);
			return true;
		};
		</code>	
	produce come log:
	<code>	
		beforeUpdate()
		gwClass.className: utc_child
		gwClassName: utc_child
		gwClass.className: local_cn
		gwClassName: local_cn_gwClassName
		
		afterUpdate()
		gwClass.className: utc_child
		gwClassName: utc_child</code>	
* issue #738 nuove js api:
	* selectGwClassRecordRaw(gwClassName, itemId, callback, errorCallback, options)
	* selectGwClassRecordsRaw(gwClassName, filters, sort, callback, errorCallback, options)
* issue #720 gwClassList aggiunto auto-aggiustamento 'width' colonne in lista in per alcuni widget con 
  larghezza prevedibile. Di norma  la larchezza delle colonne in griglia è divisa equamentein base ai widget senza 
  vincoli impostati. Adesso alcuni widget, se non si imposta un width esplicitamente, prendono un default per la stessa
  widgets:
		* widget date 120px
		* widget date (handleTime true) 210px
		* widget time: 90px
  ambito:
		* gwClassList
		* childList
		* linkList
		* liste workflow
* Aggiunta API CDE 3.5 (issue #684)
* issue #681 nuove api js tab Layout2D
	showStaticInfo()
	hideStaticInfo()
* issue #620 liste dei widget linkList e linkListNam: aggiunta la possibilità di personalizzare l'ordine
  e la visibilità delle colonne delle liste (come issue #523 per gwClassList)
  Vengono valutati i prametri globabli e byClass cookieEnabled columnReordering nel tag <gwClassListSettings>
  in xml di progetto.
  Sono anche ora disponibili gli stessi parametri nei widget, ma non inizializzati, in maniera tale da non sovrascrivere
  le eventuali configurazioni generali.
* GwMail: aggiunto un nuovo servizio sendMail per l'invio multiplo della stessa mail a più destinatari, con delay configurabile (issue #618)
* wbapp GwOpenRequest - nuova configurazione spring-security per autenticazione della webapp (issue #610)
* issue #570 api js openGwClassList*() aggiunti parametri per la stilizzazione delle righe delle griglie
	* onStyleRowFunctionName
	* onStyleRowGwActionName
  Aggiunta possibilità di configurarli anche da sezione <gwClassListSettings> dell'xml del gwProject <code xml>	
	<gwClassListSettings>
		...
		<onStyleRowFunctionName>function_name</onStyleRowFunctionName>
		<onStyleRowFunctionNameByGwClassName>
			<entry gwClassName="gw_class_name_1" functionName="function_name_1"/>
			<entry gwClassName="gw_class_name_2" functionName="function_name_2"/>
		</onStyleRowFunctionNameByGwClassName>
		
		<onStyleRowGwActionName>gwActionName</onStyleRowGwActionName>
		<onStyleRowGwActionNameByGwClassName>
			<entry gwClassName="gw_class_name_1" gwActionName="gwActionName1" />
			<entry gwClassName="gw_class_name_2" gwActionName="gwActionName2" />
		</onStyleRowGwActionNameByGwClassName>
	</gwClassListSettings></code>	
* issue #563 mappa 2D resa configurabile con xml in webadmin (come mappe BIM)
	* aggiunto campo xml_map_mode (stringa, maxLenght 4000) alla tabella dei metadati gwm_maps
			<code>ALTER TABLE [SCHEMA_NAME].GWM_MAPS ADD XML_MAP_MODE VARCHAR2(4000 BYTE);</code>	
* gwClassList: aggiunta la possibilità di personalizzare l'ordine e la visibilità delle colonne delle liste (integrazione del plugin gwCustomClassList) (issue #523)
* issue #498: Modifica della pagina di avvenuto login da ClientCad. Ora l'immagine che compare può essere configurata dall'utente all'interno dei contenuti statici:
			  nome file: CCIndexBackground.jpg
			  dimensioni file: 481x438 px
* widget di tipo APPROVAL_WIDGET:
	* Introdotto nuovo stato del processo approvativo "KO_CHECK" riferito alla bocciatura con revisione/riserva (issue #598)
	* Nuovo modulo gwAproval, contenente tutte le nuove funzionalità per la gestione dei processi approvativi, compreso il nuovo widget APPROVAL_WIDGET (issue #468)
	* Nuovi parametri nel caso di update in una classe diversa da quella di definizione del widget (issue #596)
* issue #327 aggiunto parametro widthTime al widget date, opzionale. Risolve la problematica del
  widget date (con time) con textBox parte time troppo stretta con formTime piu lunghi di 'HH:mm' (es 'HH:mm:ss.zzz')
* Nuovo servizio 'getMapImageAdvanced' per l'esportazione di una immagine da una planimetria dato un oggetto (issue #230)
* Nuovo modulo 'furnitureplugin', contenente tutte le nuove funzionalità utilizzate nel 'Modulo Arredi'.
  Contiene tutto il materiale per il funzionamento del nuovo tab, di tipo 'furniture', 
  del componente Mappa2D.
  (ulteriore documentazione nella folder fornitureplugin\src\main\resources\support_config\furniture)
* issue #241 revisione generale degli stili delle UI
* Nuovo modulo 'gwdgrid' contenente le librerie dojo per il componente dgrid (issue #256) (https://dgrid.io/) 
* Aggiunto il background nel calcolo dell'envelope (issue #310) (https://dgrid.io/)
* Modifica della gestione delle relazioni su Bim Data (issue #372) 
* Fix del metodo che mostra lo zoom sull'indirectLocalizationWidget (issue #371) 
* issue #340 Aggiunto controllo in fase di pubblicazione di una planimetria 2D.
	 Se il geom_envelope è nullo in fase di inserimento viene lanciato un errore e impedita la pubbliazione

NEW COMPONENTS

DEPRECATED

* issue #773 workflow parametro configJSON

  • allTaskForm_startProcessInstanceLabel, ancora supportato, ma sostituito da startProcessInstanceLabel
  • processEndedGwActionName, ancora supportato, ma sostituito da processEndedActionName
  • issue #678 widget Textarea deprecati parametri:

numRows

	numCols
* java
	* Modes (com.geowebframework.transfer.model.projects.Modes) the xml configuration should now alway have a Mode pojo as radix
	  Modes is still supported for backward compatibility reasons
	* MapsService: rimosso service webadmin inutilizzato
	* GwRegistry @Deprecated methods
		* addArrayListToTabList()
		* addElementToPluginCommandList()
		* setPluginCommandList()
		* getPluginCommandList()
		* addArrayListToButtonGroupComponentsHM()
		* setButtonGroupComponentsHM()
		* addArrayListToCommandsNameHM()
		* setCommandsNameHM()
	 In generale sono stati caratterizzati (con 'threeD', 'ThreeD') i nomi per i metodi specifi del 3D
	 Ne sono stati creati altri speculari, ma specifi per il 2D (con 'twoD', 'TwoD')
	* SceneService @Deprecated methods
		* readSceneModeXML() in favor of buildModeFromXmlSceneMode() and derived
	* MapSettings.class
	  variabili deprecate
			private Boolean showBaseMapChange;
			private Boolean showLayersManagement;
			private Boolean showThematisms;
			private Boolean showMapEditing;
	  configurazione spostata su xml gwMap.
	  (non rimossi ancora per compatibilità vecchi xml, e non essendoci su xStream la configurazione 'ignoreUnkonTags')
	  NON SONO PIU VALUATI in layout2D
	  Ancora valutati in bimData2D, che però sarà soggetto ad una imminente revisione		  
	* MapLayoutController.class
	* Tab.class, String icon
	  @Deprectaed because icon is retrieved exclusively from 
			path='/icons/images/16_'+icon 		for top toolbar icon
			path='/icons/images/32_'+icon		for TabContainer tab icon
	  and not from static contents (WEB/path/to/icon_image.png). 
	  And is actually not configurable from configurator user, but just from the plugin writer,
	  that actually decides which icons are available
	  @Deprectaed in favor of icon16 and icon32, both retrieved from static contents
	  and fully configurable.
	  if present, icon is still supported to works as originally intended,
	  but icon16, icon32 have the priority in evaluation hierarchy

REFACTORS

* issue #773 workflow parametro configJSON

  • allTaskForm_startProcessInstanceLabel, ancora supportato, ma sostituito da startProcessInstanceLabel
  • processEndedGwActionName, ancora supportato, ma sostituito da processEndedActionName
  • su java/jsp/js
  • PointCloudCommand CloseTabs ⇒ ToggleTabs3D
  • commandsNameHM ⇒ commandNameMap
  • buttonGroupComponentsHM ⇒ mainToolbarButtonsMap
  • java
  • class BaseMapChangeController ⇒ PluginBaseMapsController
  • class LayersMangement ⇒ PluginLayersController
  • class GeometryEditController ⇒ PluginEditController
  • class LayoutChangeController ⇒ PluginLayoutChangeController

rev d7d03f3bd4bb2913ec3aef9f886c3a88ca679310

date 2024/05/09

BUGFIX

  • ConfigurationProperties evitati errori nella rilettura con getBoolean() di property che, anche se erano dichiarate nel remapConfiguration.properties, venivano dichiarate non valorizzate nel configuration.properties (issue #1301)
  • widget actionWidget resa sensibile l'intera cella al fine si eseguire l'azione (issue #1294)
  • widget LinkListNam risolti errori randomici dovuti a problematiche cache (issue #1296)
  • gwClassDetail risolto errore validazione widget mostrato in dialog, che si verificava al click su 'Crea'/'Salva' in presenza di widget date (handleTime true) required e non valorizzato (issue #1293)
  • widget time risolto errore bloccante riguardante il recupero del value (issue #1290)
  • widget ContentHandler risolto spaginamento del gwClassDetail quando era in un gruppo attributi seguito da altri widget (issue #1289)
  • gwClassDetail aperto da leafItem: adesso funzionano anche le proprietà di api: initialsValuesMap, extraBottomToolbarButtons (issue #1287)
  • risolto un problema con i filtri su classi collegate e parentesi mancanti (issue #1285)
  • import csv risolte problematiche legate al cambio delle variabili in sessione durante procedura di import (issue #1284)
  • ambiti in cache: modificata la funzione di calcolo hashcode della classe ScopeDefinition (issue #1282)
  • incrementata velocità apertura dei componenti: gwProject, gwClassDetail, gwClassList, layout2D, layout3D, bimData3D (issue #1280)
  • gwInfo variabile namespace globale js: aggiunta informazione gwVersionToShow (issue #1279)
  • widget dbSuggestBox risolto errore oracle ORA-00906 (issue #1277)

rev 76867e5cea44120b00819df4592dbe4c4dcaf366

date 2024/03/21

BUGFIX

  • workflow risolto errore java.text.ParseException: Unparseable number: “newItem” su startTaskForm (issue #1272)
  • mongo query builder risolti errori di carattere generale sulla gestione filtri (issue #1270)
  • widget ChildList js api gwSetReadonly() adesso setta readonly anche su eventuali righe (issue #1269)
  • widget LinkList/LinkListNam adesso il widget è sempre pronto quando si invocano api js (come gwSetReadOnly()) su azione di dettaglio pronto. Anche la prima volta, con cache metadati cancellata e useCompressed true. Posticipato evento 'gwClassDetail/gwAttributeReady', nelle grid toolbar (issue #1261)
  • widget SelectionListWidget implementata gwSetValue()/gwGetValue() js api, che gestisce anche i valori provenienti da gwAction eseguita da gwClassDetail/gwClassList (issue #1254)
  • widget LinkListNam - rimosse colonne degli ActionWidget messi in lista per la classe target, che davano un errore per riga (issue #1239)
  • scheda gwHtmlReport ripristinato funzionamento css class reportlink, che serve ad evidenziare all'utente i button/row elenchi clickabili. Dato che in 4.6 lo stile hover dei button è differente da quello delle row delle grid, sono state aggiunti contestualmente i selettori css (integrabili nelle report):
  • gwReportButton: da usare per i button (come reportlink, di cui ne viene scoraggiato l'uso per le nuove report)
  • gwReportRow: da usare per le row degli elenchi (issue #1251)
  • Classificazione ed attributi variabili - errori vari gwClassFilter/gwClassDetail. Problematiche risolte
    • scegliendo filtri sugli attributi variabili ed applicandoli alla grid, chiudendo e riaprendo il filtro, non vengono ri-applicati alla form del filtro
    • applicando filtri sugli attributi variabili con dataType 'number'/'integer' non viene applicato il filtro in quanto viene passato datatype 'string'
    • nella form di dettaglio degli attributi variabili, non venivano salvati i valori degli attributi variabili di tipo date
    • dialog di gestione attributi variabili spaginate (issue #1246)
  • ListService gestione valori data sqlserver. Aggiunto supporto dei formati string:
    • 'yyyy-MM-dd HH:mm:ss.S'
    • 'yyyy-MM-dd HH:mm:ss.SSS'
    • 'yyyy-MM-dd HH:mm:ss.SSSSSSS'
    • 'yyyy/MM/dd HH:mm:ss.S'
    • 'yyyy/MM/dd HH:mm:ss.SSS'
    • 'yyyy/MM/dd HH:mm:ss.SSSSSSS' (issue #1250)
  • QueryBuilder usava impropriamente LOWER() anche per valori di gwFilter con dataType diverso da 'STRING' (issue #1249)
  • buildFormContainerParams() require non sync con useCompressed true Causava l'errore per cui le form custom aperte, solo la prima volta, da gwAction su leafItem xml di progetto erano vuote (issue #1247)
  • GwGroovyScriptEngineService getSessionObjectVars() aggiunti empty check ed exception (in caso di valore errato) su parametro projectName (issue #1245)
  • scheda layout2D planimetrica - i layer spariscono su resize mappa (issue #1240);
  • scheda layout2D ripristinata compatibilità OpenLayers 2 con Google Maps api v3 (issue #1235)
  • gwScheduler risolto errore che si verificava temporaneamente con flag gwscheduler.clusterMode.enabled=true ed temporanee impostazioni non-sense (poi cambiate) (issue #1233)
  • insertClassRecord()/updateClassRecord() risolto errore con valori geometria lineare (polilinea) in formato WKT (LINESTRING (…) (issue #1230)
  • scheda gwLayout2D, risolto errore bloccante in apertura nei casi di assenza di almeno un MapGuide Layer correlato a ad un gwLayer, tramite convenzione stesso nome (Es: presenza di soli layer MapGuide con fonte dati .shp) (issue #1231)
  • Monitoring risolto errore su sqlserver del MonEventService metodo insertMonEvent(MonEvent event) (issue #1221)
  • tabella gwm_attributes record con campo ctrl_type = null Aggiunti check per evitare NullPointerException in vari punti del codice (issue #1217)
  • widget contentHandler/contentHandlerRest, senza docFormatsColumn impostato, od impostato ma con relativo valore non popolato dava errore su ogni file caricato: Il formato del documento oggetto di caricamento … non è fra i formati ammessi. Inoltre, su tutti i dialog di conferma, chiudendoli con la X in alto a destra, si aveva la problematica che il file veniva salvato anche se non avrebbe dovuto farlo (issue #1066)

NEW FEATURES

  • Aggiunta gestione notifiche scadenzario nel plugin calendar (issue #1271). N.B.: E' stato modificato il modello dati aggiungendo un nuovo campo username_recipient alla tabella evt_event_recipient.

rev 1529101f30a8d789f9231d3c6e8f5357a099d8f3

date 2024/01/31

BUGFIX

  • aggiornato builder file compressi dojo per supporto ultima sintassi javascript (issue #1220)
  • gwClassList e derivate - risolti errori su invocazione api js che utilizzavano record selezionati dall'utente con SHIFT (O CTRL) e magari non scaricati dalla grid (tipicamente elinimazione sui record selezionati, selezionando molti record da una lista molto lunga, scrollando velocmemente le pagine). Adesso i record selezionati vengono recuperati tramite async function retrieveObjectsSelectedOfGridAsync(), che depreca retrieveObjectsSelectedOfGrid(). Servono inoltre accortezze nell'invocazione della nuova api. js API che erano interessate:
    • deleteRowSimplified()
    • refineGwClassList()
    • azioni in toolbar gwClassList e derivate
    • azioni sostituzione Nuovo in gwClassList e derivate
    • openListReportWithFilter()
    • openTemplateReportWithFilter()
      @Deprecated
    • getItemSelectedFromGrid()
    • getItemSelectedFromSelectionList2Grid()
    • importMoreThanOneBimData()
    • multipleIndirectLocalization()
    • showOnSceneAction()
    • showAssociatedItemsAction() (issue #1213)
  • widget LinkListNam risolto errore su associazione di più di 1000 record ### Cause: org.postgresql.util.PSQLException: ERROR: relation “gw_tmp_big_in_clause” does not exist Problematica correlata alle issue #1037 e alla issue #823. Altri componenti/servizi affetti dalla problematica:
    • GwClassificationService.getEntities()
    • QueryBuilderService.queryBuilderServiceSelectIN()
    • RelationWidget (issue #1212)
  • metodi execute*Query() - adesso l'eventuale eccezione nelle parti di gestione big in-clause, dove iene generato un errore nel caso l'utente del DB non abbia sufficienti permessi per creare le relative tabelle temporanee, viene subito rilanciata (era solo loggata, con lo stack) (issue #1211)
  • scopeValueWidget in gwClassList adesso mostra la description invece che il valore d'ambito. Viene visualizzata la description e non il nome d'ambito, per coerenza con il gwClassDetail (issue #1208)
  • webadmin - Gestione Attributti - risolta lentezza del check sugli attributi, che verifica che un attributo non sia collegato (indirettamente tramite i gruppi attributi) più volte allo stesso detailLayout di classe. Introdotte query ad hoc specifiche per db. Rimosso il supporto al flag attributesGroupsValidation.enable=false, che permetteva di disabilitare il check (issue #1201)
  • gwClassList risolti errori in lista per widget con ctrlParam null (issue #1195)
  • gw-upload-manager - OwnersMapper.xml - I mapper xml della classe Owners (limitatamente a SQL e Oracle) puntavano ad una classe inesistente com.geowebframework.transfer.model.dataservice invece che a com.geowebframework.transfer.model.dataservice.GwdBimModel come nel caso Postgres (issue #1193)
  • buildFormContainerParams() js api invocato da openFormFloatingPane() e openFormDialog() ora utilizza, se disponibile, setter specifico per ogni valore fornito ai field Per esempio impostando uno store per un field dijit/form/Select, nel costruire il widget adesso viene correttamente invocato .setStore(value), invece che .set('store', value). Prima era necessario invocare esplicitamente il setter specifico una volta che la form era gia stata aperta (issue #1187)

rev 1cdf283c667173903070670bacd9e0c774974b2d

date 2023/12/04

BUGFIX

  • GeneralReportService generaReportListaRH() risolto errore:
    java.lang.IllegalArgumentException: Merged region A1 must contain 2 or more cells

    che avveniva quando si esportavano dati con gwClass con un solo attributo in lista (issue #1157)

  • gwClassFilter risolto errore ripristino filtri della gwClassList su form simplified gwClassFilter. Casistiche affette:
    • datatype 'DATE' operator: ['is not null', 'is null', 'between', 'between (trunc day)']
    • datatype 'NUMBER' operator: ['is not null', 'between']
    • CLASSIFICATION operator ['in', 'not in'] (issue #1152)
  • dojo tree fixato errore bloccante al click sul nodo, che ne evitava anche la selezione, che avveniva dopo il refresh dell'albero (issue #1151)
  • widget date eventHandler change value non era chiamato nei passaggi da del valore davalue==null a value!=null (issue #1141)
  • gwClassList risolti errori bloccanti che potevano occorrere forzando l'id della grid tramite 'forceGridId'+'gridId' (issue #1139)
  • api js selectGwClassRecords() non valutava parametro sort (issue #1131)
  • gwClasslist parametri onStyleRowGwActionName onStyleRowFunctionName corretto funzionamento su leafItem e api js (issue #1130)
  • widget html showLabelInDetail true ora fa vedere la label (issue #1127)
  • MgInfoSelectionController migliorati log per aiutare a rilevare casi di errata configurazione (issue #1124)
  • gwClassDetail title ContainerNode della struttura di layout, aggiunta localizzazione e customizzazione (issue #1122)
  • api js openGwClassListX() aggiunto parametro 'hideFilter', default false (issue #1119)
  • js api openFloatingPane() con modal true, l'invocazione di .hide() non toglieva lo standbywidget incorporato (close() funzionava correttamente) (#1118)
  • aggiunti dojo require for 'dojo.html', che poteva causare potenziali errori casuali nell'utilizzo del frameowork, a seconda dell'ordine di caricamento UI/configurazione issue #1114)
  • js api openFloatingPane() rese configurabili le prop: 'resizable', 'maxable', 'closable' applicate al CustomFloatingPane (issue #1112)
  • api js openGwDynamicTimeLineTab() ora per i parametri 'start', 'end', 'min', 'max' vengono valutati correttamente anche gli oggetti javascript Date e Moment (issue #1110)
  • DACL CUSTOM risolto malfunzionamento che non faceva più risolvere alcune espressioni ${} #{}: gw_activeUser, gw_activeGroup, ambiti e tutte le variabili in sessione (issue #1108)

NEW FEATURES

  • CustomFloatingPane aggiunto api js .set('dimensions', dimensions), per il ridimensionamento dopo la creazione (issue #1150)
  • CustomJsonRestStore aggiunta api js cancelAllPendingRequest(), utilizzabile per assicurarsi, prima di impostare nuovi filtri alla grid, che le eventuali richieste pending, non ancora risolte in quanto molto lunghe, manifestino i loro effetti nella grid in maniera indesiderata successivamente (issue #1138)
  • gwDynamicTimeline aggiunto parametro 'backgroundItems' per stilizzare intervalli temporali (bloccati, festivi, etc..) backgroundItems: Object[], optional, array contenente oggetti con proprietà:
    • start: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • end: Date, integer (ms), String ('yyyy-MM-dd'), moment(), required
    • content, string, optional.
    • bgcolor, string, optional and mutually exclusive with className
    • className, string, optional and mutually exclusive with bgcolor (needs somewhere a css class: .vis-item.vis-background.negative { background-color: rgba(255, 0, 0, 0.2); } )
      			Examples: [
      				{content: 'Forbidden Period 1', start: '2023-01-01', end: '2023-10-01', type: 'background''},
      				{content: 'Forbidden Period 2', start: '2024-01-01', end: '2024-10-01', type: 'background', bgcolor: 'rgba(255, 0, 0, 0.2)'},
      				{content: 'Forbidden Period 3', start: '2025-01-01', end: '2025-10-01', type: 'background', className: 'blocked'}
      			]

      (issue #1126)

rev 5d8d19da238c055c930c79580b005b1705e7e714

date 2023/10/04

BUGFIX

  • classificazione: js gwGetChildClassification() errore nel caso in cui un filter di queryParameter abbia '<>' per operator (issue #1106)
  • gwDynamicTimeLine fix errore bloccante su swap entità quando valore entità raggruppante è nullo per nestedGroupItem (issue #1102)
  • gwClassDetail risolto errore bloccante su title contenente char apice singolo ' (issue #1101)
  • Layout2D mapEditing, funzione 'Edita tutti', corretto tooltip a mapCommand 'Elimina geometria' (issue #1091)
  • leafItem gwAction risolto errore tale epr cui in caso di più leafItem configurati, che facevano riferimento ad azioni di classi diverse, ma con stesso gwAction name, veniva sempre eseguita la azione del primo leafItem clickato (issue #1089)
  • js api gestione sessionParameters: aggiunti log, callback clearSessionParameters() e setGwSessionParameters() (issue #1074)
  • function gwDownloadFile() aggiunto encoding URI e gestione dei char non ammessi nei nomi del filesystem (issue #1060)
  • widget GwGallery ora è di nuovo possibile tornare indietro da modalità fullScreen, quando il widget è ospitato da un floatingPane con flag modal a true (come accade al click su button 'anteprima' del ContentHandlerWidegt di tipo Galleria Fotografica) (issue #1057)
  • widget contentHandler/contentHandlerRest adesso al caricamento viene fatto un check sull'estensione del file, se valore del campo impostato in 'docFormatsColumn' (in xml widget) è impostato. Infatti, pur venendo aperto il file chooser con impostati i filtri sui formati file, l'utente può rimuovere il filtro e scegliere un file qualsiasi. Adesso viene generato un messaggio di errore nel caso in cui il file ha estensione diversa da quelle configurate. In mancanza di configurazione il check non è eseguito (issue #1056)
  • ContentHandler - handleContent non funzona a causa di classType che viene sovrascitto nell'azione risultando undefined (issue #1050)

NEW FEATURES

  • DACL gwAction CUSTOM aggiunto supporto espressioni #{map.cod_field} ${map.cod_field} che fanno riferimento ai valori correnti dei campi del record di classe (issue #1096)
  • gwCalendar, errore gwClass eventi senza nameColumn configurato (non obbligatorio per la classe, ma necessario quando essa è usata come sorgente eventi per il calendario). Aggiunto errore per supporto alla configurazione ERROR - gwClass 'nameColumn' cannot to be null, when the gwClass is used as events source. Configure it in webadmin [gwClass name='class_name'] (issue #1095)
  • scheda Layout2D, plugin mapEditing, nuova funzione 'Elimina singolo', che elimina il singolo record selezionato in mappa (issue #1080)

rev 291bf0ffac62542c8af27e4914e699e11be74aa9

date 2023/08/23

BUGFIX

  • risolti errori su js export: standardListSelectedAllAttributeExportToExcel() standardListSelectedGroupAttributeExportToExcel() che per i widget combobox e checkbox, con dataType STRING, e flagimportCSVWithoutDecoding true sbagliava esportando il codice (key), invece della label (value) (issue #822)
  • risolti errori cannot cast Time to Date (com.geowebframework.transfer.model.widget.*) (issue #1044)
  • GwWidgetDataService getValueToShowFromValueToStore() aggiunto supporto per i widget checkbox e combobox (issue #1043)
  • widget attachmentWidget, non applicava sempre readonly correttamente. Poteva non applicarlo al widget corretto e/o applicarlo ad un qualsiasi altro widget dello stesso tipo aperto in un altro gwClassDetail (issue #1039)
  • widget linkListNam su associa/disassocia venivano tolte erroneamente anche le associazioni nascoste da DACL (issue #1038)
  • gwClassList fix errore su eliminazione molti record (>1000) PSQLException: ERRORE: la relazione “gw_tmp_big_in_clause” non esiste (issue #1037)
  • widget date (handleTime=true) evento attributi onchange ora viene triggerato quando è popolata anche la parte time (issue #1035)
  • widget linkListNam risolto errore valutazione queryClause #{} null and applyQueryClauseToAssociated true (issue #1034)

rev 67ee738edc729c93b76eadd8b0ef16f9806008db

date 2023/07/31

BUGFIX

  • widget date (handletime true) non modificato, invocando gwGetValue() veniva restituito null (issue #1030)
  • widget gwGallery: risolto errori devivanti dal click sul button fullScreen dal dettaglio floatingPane (issue #1025)
  • layer WMS risolti sulle chiamate GetCapabilities/GetFeatureInfo gli errore generati dal browser: This request has been blocked; the content must be served over HTTPS. Gli errori erano generati quando gli url dei WMS erano confgiurati http: nel webadmin, mentre l'applicativo era esposto come https: (issue #1020)
  • widget document: risolto errore tale per cui, se il file era gia presente e veniva cambiato dall'utente, dopo un salvataggio fallito del dettaglio (errore in trigger groovy: validazione estenzione dello stesso file) l'utente non poteva più modificare il file (issue #1019)
  • scheda layout2D/BimData2D/ScenarioLayout2D risolto errore bloccante in apertura imponendo filtri sui layer da api js (issue #1014)
  • scaricando la report xls, solo su Chrome in alcuni contesti non ben definiti (OS windows 11 confermato), sistematicamente la pagina corrente veniva sostituita con una pagina bianca. Non vengono dati ulteriori errori. La problematica non si manifestava con altri browser. (issue #1013)

rev b914daa32464405781b5942877cde1539f2456a5

date 2023/07/17

BUGFIX

  • gwClassFilter risolto errore su classe classificata per campo non variabile con operatore 'VALORIZZATO'/'NON VALORIZZATO' (#1009)
  • filtri classificazione risolte le seguenti problematiche:
    • se l'operatore della 'Famiglia' era differente da '=', i widget dei filtri in cascata sottostanti non si aggiornanavano coerentemente e quindi sono ora disabilitati
    • l'operatore della 'Famiglia' valorizzato con 'diverso da' aveva lo stesso effetto di '=', ora lavora correttamente

(issue #1006)

  • gestione attributi variabili - il cambiamento ordine non veniva persistito (issue #1005)
  • fix errore org.vividsolutions.jts.io.ParseException: Attempt to read past end of input (issue #997)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

  • refactor jsp
    • singlequote ⇒ singleQuote
    • singlequoteEscaped ⇒ jsEscapedSingleQuote
    • jsEscapedSinglequote ⇒ jsEscapedSingleQuote

(issue #981)

rev 4559aff30fda457e12095ff549de8908d3a26075

date 2023/06/09

BUGFIX

  • scheda layout2D risolto errore bloccnate su apertura (solo in 4.4.19)
### Cause: com.thoughtworks.xstream.mapper.CannotResolveClassException: MapGuideStyle 

(issue #995)

  • widget linkListNam risolti svariati errori sulle azioni 'Aggiungi alla selezione' / 'Rimuovi dalla selezione' (issue #715)
  • GwClassListService fix errore nel metodo interno handleSelectedRecordPostProcessing() che, con DB Postgres, usava anche quando non era auspicabile, usava il WKT reader, causando l'error:
    ### Error updating database.  Cause: org.postgresql.util.PSQLException: ERRORE: la colonna "geometry" è di tipo geometry ma l'espressione è di tipo character varying 

    (issue #992)

  • risolto errore bloccante visualizzazione all'apertura del gwProject dovuto a ritardo caricamento modulo dojox/form/Uploader con useCompressedImports a true (issue #988)
  • api js openGwHtmlReportTab() risolto errore di valutazione del parametro updateOnChangeInGwClassNameList che faceva si che non venisse valutato bene (per le classi successive alla prima) nel caso contenesse spazi bianchi. Esempio: 'classe_1, classe_2, classe_3' (issue #987)
  • fixato errore sul command di layout2D WmsGetFeatureInfoCommand tale per cui si abilitava in automatico il comando di selezione rect su switch off di elementio nell'albero dei layer, anche quando non voluto (con non voluta deattivazione del mapCommand precedente) (issue #984)
  • risolti errori bloccanti dovuti a label gwClass con caratteri speciali (tipo ') (issue #981)
  • filtro windowchoice perdeva ultima colonna quando filtrando si otteneva la perdita della scrollbar dall grid sottostante.Analogo problema per il positionWidgetEditDialog. (issue #975)
  • GwWidgetDataService empty check su value in ingresso a getValueToStoreFromValueToShow() (issue #969)
  • errori inviao email dovuti a proprietà del configuration.properties dichiarate, ma non valorizzate: gwMailService.mailSmtpSslProtocols= Errore:
    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate). Failed messages: javax.mail.MessagingException: Could not connect to SMTP host:

    in via precauzionale gestito anche: gwMailService.mailSmtpSslTrust= mentre questo dava un errore, con stack, anche se non bloccante gwMailService.mailSmtpSslEnable= (issue #967)

  • widget cmisDocumentWidget readonly disabilitava anche download e versioni (issue #941)
  • widget gwGallery readonly metadataInfoButton aggiunto nullcheck (issue #907)
  • widget linkList fixato parametro detailContainer assente actionInToolbarList (issue #898)
  • risolto errore bloccante cannot cast Integer as String per ItemId su condfiurazioni gwAction chiusura dettaggli di classe (riguardanti js checkGwActionPermissions()) (issue #896)
  • UI gwClassFilter, al click sul button 'Reset' non venivano azzerati i filtri, ma venivano riapplicati tutti i filtri correntemente applicati alla grid sottostante (come da issue #695).

Adesso vengono riapplicati solo i filtri statici. (issue #887)

  • widget dbImageComboBox risolto errore su invocazione api js gwSetReadOnly() L'errore non pregiudicava tanto l'esecuzione di gwSetReadOnly(), ma quella di codice successivo come poteva accadere in azioni di dettaglio pronto (issue #886)
  • alberi gerarchici parametro showAllAsRoot a true non espande piu primo livello albero. Componenti affetti: hierarchicalFilterMenu, gwTaskHierarchicalFilterMenu, MCMenu, GHFMCMenu, selectionList2Widget, MCSelectionListWidget regressione introdotta con la issue #660 (issue #885)
  • widget LinkList a readonly non nascondeva button 'new' (issue #883)
  • Risolti errori dovuti ad attributi virtuali che in alcuni casi potevano avere name uguale a quello di un altro attributo della classe dell'attributo padre (issue #868)
  • GeoExplorer non valutava il tag <gwMenuTitle> per scelta oggetto in sessione (issue #853)
  • menu leafItemListFilters non mostrava voci di menu quando attributeToFilter era diverso da String (Numeric, Date) (issue #851)
  • spring-security.xml utilizzata GwPropertyPlaceholderConfigurer al fine di poter rileggere le variabili di sistema rimappate nel remapConfiguration.properties (issue #838)
  • issue #787 IndirectLocalizationWidget su BimData2D lanciava un eccezione di array out of bound se veniva fatto lo zoom su più poligoni contemporaneamente
  • issue #789 widget fieldToshow/filedToStore errore se contiene spazi in query prima di char ','. La problematica era che nel webadmin, configurando la query di alcuni widget, l'utente potendo inserire codice del tipo SELECT string_1 , integer_1 FROM utc_dbwindowlist

La problematica era nello spazio dopo string_1 e prima della virgola che, al momento di eseguire la query diventava string_1 AS string_1 3 generando un'eccezione SQL a runtime. Ad esserne affetti erano molti metodi di selezione record. Il problema si presentava se in lista classe eranno aggiunti attributi: dbComboBox, dbWindowList, dbImageComboBox, Domain, dbSuggestBox, ExternalTable

  • issue #786 scheda bimData2D risolto errore introdotto nella 4.4.18 message not found map.topToolbar.modifyGeometryCommand.rotateClockwise.*
  • issue #785 introdotto supporto all'uso del char '/' nel path delle icone configurabili nei componenti:
    • leafItemHierarchicalFilterMenu
    • leafItemMCMenu
    • leafItemGHFMCMenu
    • gwTaskHierarchicalFilterMenu
    • gwRelatedProcessesWidget
    • gwTasksWidget
    • selectionList2Widget (parte editDialogTabHierarchical)
  • issue #783 workflow gwTaskHierarchicalFilterMenu ripristinato funzionamento (prima mostrava solo la root) Adesso è correttamente gestito anche un eventuale campo data come criterio di parzializzazione (TRUNC DATE)
  • issue #781 worflow gwTaskDetail/gwTaskDetailProcedure, il button 'Claim' ('Richiedi') compariva anche se l'istanza di processo era nello stato 'suspended'. Activiti genera un'eccezione in questa eventualità
  • issue #777 workflow azioni beforeClaimTaskAction e afterClaimTaskAction non erano eseguite su i workflow che NON erano PROCEDURE
  • issue #776 workflow utilizzando i parametri configJSON: beforeCompleteTaskActions e beforeClaimTaskActions si attivava invisibleStandbyWidget troppo presto. Di default, non pemetteva l'interazione UI dell'utente, per esempio se sottoposto ad una richiesta di conferma. La disabilitazione dello invisibleStandbyWidget doveva essere fatta nell'azione stessa. Adesso l'attivazione dello invisibleStandbyWidget avviene successivamente
  • issue #770 widget date in gwClassDetail in visualization mode ignorava handleTime false, mostrando sempre informazioni oltre in giorno
  • issue #761 fix parser sdf, che non permetteva di inserire dwg con 0 elementi sullo sfondo oppure con multipli di 1000.
  • issue #695 UI gwClassFilter, al click sul button 'Reset', la UI di filtro veniva ricaricata senza riapplicare gli eventuali filtri statici della griglia (caricati correttamente al primo avvio)
  • issue #758 widget label dava errore se presenti caratteri speciali html nel testo configurabile nell xml
  • issue #756 Fix dei campi cod_system –> system e cod_level –> level
  • issue #753 gwActionButton aggiunte css class per test automatici. azioni integrate:
    • gwClassDetail/gwClassList azioni button 'more actions' (…) singolo/multiple
    • gwClassDetail actionInToolbarList azioni in top toolbar dettaglio
    • gwClassDetail actionInBottomToolbarList azioni in bottom toolbar dettaglio
    • actionInToolbarList LinkList

css class gia presenti:

  • 'gwActionButton'
  • 'gwActionButton'+[indice_azione]

css class aggiunte:

  • 'gwActionButton_gwid'_+[action.gwid]
  • 'gwActionButton_name'_+[action.name];
  • issue #751 username: lunghezza campo incrementata a 250 char Precedentemente le username, persistite nei metadati di geoweb, potevano essere lunghe solo 20 char. In ottica integrazione con gli IDP dei clienti, si generanno situazioni in cui tale lunghezza potrebbe risultare insufficiente. Banalmente, spesso gli IDP utilizzano le email come username, e queste possono sicuramente eccedere i 20 char
  • issue #746 api js buildFormContainerParams() non passava arg dialog nell'onClick() dei button dichiarati dai metodi utilizzatori generali:
  • openFormDialog(params)
  • openFormFloatingPane(/Object/ params)

Accadeva quindi che al click falliva, per esempio, l'istruzione: dialog.close();

  • issue #745 actionWidget non mostrava il tooltip della gwAction come tooltip dell'actionWidget
  • issue #744 gwClassDetail risolto errore con title contenente ritorno a capo ('\r\n') darivato dai dati nel db. risolto con escape stringa vuota
  • issue #741 rest service geometries.json, che restituisce le geometrie di una specifica classe in formato geojson, in caso di richiesta conversione delle geometrie (tramite il parametro 'coordinateSystem'), veniva erroneamente impostato nel geojson ritornato il SRS/CRS dichiarato sull'xml del widget/persistio sul DB, e non quello finale della conversione. Inoltre il SRS/CRS veniva impostato nella risposta solo quando persistSridToDB era impostao a true. Adesso viene impostato (di partenza o convertito) alla sola condizione che sia esplicitato nell'xml

del widget geometria.

  • issue #740 gwClassList aperta da api js non valutava correttamente i paramtri
    • listedAttributesNames
    • hiddenAttributesNamesList

quando erano passati come string comma separated ('aaa,bbb,ccc') e non array di string (['aaa','bbb','ccc'])

  • issue #736 widget document non applicava bene disabled true in avvio, se configurato
  • issue #734 customDojo.CustomColorPicker il componente interno

non valutava i parametri standard dojo 'readOnly' e 'disabled'

  • issue #733 linklistnam migliorato errore in caso starting field ha valore null
  • Reset Password: errore di tipo “image not found” in seguito a issue #604 (issue #726)
  • issue #732 LinkList eseguiva gwAction insertCallbackGwAction al posto di updateCallbackGwAction
  • Albero Classificazione - corretto errore all'apertura dell'albero dovuto a funzione “gwAddIconImage” non definita (issue #719)
  • issue #718 openGwReport() l'API js non apriva più di una report alla volta. Ciò era dovuto al 'winName' fisso a 'gwReport'. Adesso il 'winName' è creato automaticamente dal parametro, required, 'reportName':
    var winName = reportName.replace(/\.[^\/.]+$/, '');

NEW FEATURES

  • aggiunta possibilità di configurazione autocomplete=“off” per le form di geoweb: login, change-password, reset-passord. Nel configuration.properties:
		##################################################################
		#	L O G I N
		##################################################################
		#default false. It allows to disable the auto-complete for the gw-login form (made by the browser) (issue #793)
		login.form.autocomplete.disabled=true
		

(issue #974)

  • workflow aggiunti button '…' e button azioni in toolbar per i componenti:
    • gwArchivedProcessList
    • gwRunningProcessList
    • gwSuspendedProcessList (issue #869)
  • workflow introdotto deploy delle Definizioni di Processo su file .bpmn se presente nella folder [geowebfloder]/activiti (issue #866)
  • scheda layout2D il control MousePosition, con baseLayer Google OpenStreetMap, non mostrava le coordinate lat lon (stile GoogleMaps), come l'utente si aspetta. I sistemi di riferimento dei base layer venivano riversati pari pari (Google['EPSG:3857'] e OpenStreetMap['EPSG:900913']) nel costruttore del control. Adesso vengono forzati a 'EPSG:4326'. Per sistemi di riferimento particolari su mappa/layer non verrà applicata alcuna conversione. (issue #852)
  • issue #784 widget date aggiunti metodi di conversione formati date. Metodi aggiunti ad uso interno del framework:
    • public static String convertDateToGwFormatString(java.util.Date date)
    • public static java.util.Date convertGwFormatStringToDate(String gwFormatString)
  • Filtro di colonna (ColumnFilterButton): all'apertura del filtro di colonna ora viene effettuato il focus del campo di testo del filtro (issue #762)

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

* issue #716 widget dbWindowList in gwClassDetail visualize risolto errore di visualizzazione se che mostrava solo la prima relazione anche se ce ne erano piu di una

* issue #713 tab layout2D, solo su mappa cartografica, alla selezione dei record in mappa non veniva più aperta la gwClassList di mappa (con filtro coerente alla selezione in mappa)

* issue #712 fix dell'error 500 webservice api gwOlLayerGeometries.json/geometries.json che si verificava esclusivamente in ambiente con DB ORACLE. error:

wrong number or types of arguments in call to 'SDO_RELATE'

* issue #711 risolto errore

"Required filter parameter 'condition' is null or is not a String"
che si verificava usando costruttori della class Filter(..) senza specificare  la property 'condition'. Adesso viene sempre impostato il default "AND"

* issue #708 Layout2D, su zoom geometria in mappa, integrato il messaggio di errore ad uso dell'utente configuratore, con una ulteriore possibile causa delo stesso:

Errore:
	GEOWEB ERROR MapGuideService - addFeaturesToMgSelection()
	Error during the construction of the MapGuide query filter.
	...
Messaggio agggiunto:
'When using FDO Toolbox, before importing in Mapguide Maestro, ensure
that in the xml generated from FDO Toolbox, the correct Primary Key is
explicited'

* issue #707 widget date in gwClassDetail, configurato required e hidden, non permetteva di andare avanti al click sui button Crea/Salva e non veniva visualizzato il relativo dialog di errore per l'utente configuratore, ma solo un errore in console

* issue #706 gwClassDetail corretta gestione class che poteva causare su alcuni widget il non corretto funzionamento delle API js come gwSetHidden() in alcuni casi.

Per esempio widget che parte hidden in dettaglio e successivamente, in seguito ad invocazione di gwSetHidden(false), non tornava visibile.

* issue 329 widget con 'initSelValue' non valutavano parametri in sessione, a cui si poteva far riferimento con espressioni del tipo: #{nome_var}. Widget interessati:

  • ActiveGroupWidget
  • ActiveUserWidget
  • ComboBox
  • DbComboBox
  • DbWindowList
  • DbImageComboBox
  • DbSuggestBox
  • ExternalTable
  • Domain
  • InsertUserWidget
  • ScopeValueWidget
  • WSSuggestBox

* issue #705 gwClassList toolbar button moreOptions ('…') al click dava errore java:

"java.lang.String cannot be cast to java.lang.Integer"
Componenti affetti:
* gwClassDetail
* gwTaskDetailProcedure

* issue #703 widget image non notificava l'utente in caso di widget required e con valore assente. Adesso l'utente viene notificato con il solito bordo rosso sia in caso di immagine assente fin dall'inizio, sia in caso di utilizza del button 'clear' ('gommina')

* issue #702 widget dbSuggestBox risolto errore in gwClassDetail visualizzazione, che si manifestava quando il fieldToShow rea di tipo: INTEGER/NUMERIC (errore di cast lato database; postgres es: 'cannot compare integer with characher varying)

* issue #700 widget date (required true, handleTime true) non notificava pienamente l'utente su click del button 'Crea'/'Salva'. Veniva sleezionato correttamente il tab/accordion, ma il widget non veniva selezionato di rosso

* issue #699 widget cronExpGeneratorWidget In caso siano presenti piu widget cronExpGeneratorWidget, il valore scelto dal dialog finiva sempre nel primo widget

* issue #698 widget image su gwClassList aggiunto preventCache in richiesta thumbnail. Questo risolve la problematica che si manifestava sulla gwClassList, che non aggiornava l'immagine in lista, quando essa veniva modificata dal gwClassDetail.

* issue #696 widget filterSelectionWidget aveva _gwWidgetType: 'linkListWidget'. Cambiato in 'filterSelectionWidget'

* issue #694 js api editGeometryOnMap() recupero automatico parametri. L'api js dava errore al momento del salvataggio se usata dall'utente configuratore fuori dai giri prestabiliti dell'editing geometrie in mappa

* issue #689 widget mnemonicCodeWidget cambiato dimensionamento height input da 22px a 18px. Questo uniforma il componente standard gwClassDetail, e sana piccoli problemi di visualizzazione con widget required true

* issue #687 widget mnemonicCodeSelectionWidget api js gwSetDisabled(true) non disabilitava il clean Button ('gommina')

* issue #686 widget mnemonicCodeSelectionWidget in gwClassDetail edit non si dimensiona bene la parte textBox (non considera anche l'ingombro del tasto '…')

* issue #685 widget dbWindowList in gwClassList non si vedeva più il button di apertura dialog scelta ('…') bug introdotto dalla versione 4.4.16

* issue #683 widget dbWindowList eventAttribute evento onChange non era triggerato al primo click del cleanButton ('gommina')

* issue #680 widget dbSuggestBox fix errore in visualizzazione per gwClassDetail New con valueToStore null che arrivava come stringa vuota ”” e dava errore se confrontato con campi integer/numeric. Errore: PostgreSQL: ERROR: operator does not exist: integer = character varying

* issue #679 widget dbwindowlist nullcheck getValueToShowFromValueToStore()

* issue #676 widget colorPicker non applicava disabled in avvio

* issue #675 cronExpGeneratorWidget non applicava disabled in avvio

* issue #674 actionWidget non applicava disabled in avvio

* Content Handler - corretto errore di caricamento dei file in update della classe con nameField null (issue #584)

* issue #671 gwClassList hideNewIgnorePermissions hideDeleteIgnorePermissions globali non vengono valutate

* issue #667 risolto errore non bloccante in avvio DateTimeParseException war Date su GwRegistry ERROR com.geowebframework.metadataservice.registry.GwRegistry - Unparseable date: “09-Jun-22 ”

java.time.format.DateTimeParseException: Text '09-Jun-22 ' could not be parsed at index 0

* issue #665 modificato il processo con cui vengono recuperati i progetti e gli edifici da ClientCad: - introdotti due nuovi metodi che recuperano edifici e progetti in due momenti separati:- deprecati e mantenuti i vecchi metodi che funzionano fino al clientCad 2.1

* issue #662 widget DbWindowList non considerava il valore iniziale della proprietà disabled

* issue #660 mitigazione crescita cookie su tuttigli alberi jsonrest

* Widget Document: correzione errore download ed anteprima del documento con spazi nel nome e permessi in sola visualizzaizone (issue #658)

* issue #650 widget dbcombobox risolto errore bloccante al click se eseguito prima di evento

 'gwClassDetail/allFormManagerStarted'. Errore in browser console:
	Uncaught TypeError: Cannot read properties of null (reading 'className')
	at Object.removeClass [as remove] (/webclient/resources/aef508af9fafba21b08f5f307672f64efed26907/debug/dojo/dom-class.js:224:21)
	at Object.toggleClass [as toggle] (/webclient/resources/aef508af9fafba21b08f5f307672f64efed26907/debug/dojo/dom-class.js:319:38)
Lato UI il vecchio menu a tendina rimaneva aperto, non permettendo piu l'usabilità del widget.
Questo era abbastanza difficile che avvenisse nei dettagli standard, ma era tanto piu probabile 
che potesse avvenire in dettagli molto complessi (con molti attributi) e potenzialmente piu lenti nel caricamento.

* issue #649 risolti errori del tipo:

Cannot parse date "2024|7|24|0|0|0|0": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")
L'errore era fuorviante. E' stato fixato il java valuesMapHandler(), 
che ora funziona correttamente anche per value data (string) non standard:
ex min length allowed: "2021|11|07"
ex max length allowed: "2021|11|07|23|31|59|999"
ex other allowed formats: "21|1|7", "2021|11|07|0|0|0", "2021|11|07|0|0|0|0", "2021|11|7|0|0|0|000", "2021|1|7|21|07|21|0"

* issue #646 Eccezione non gestita per parametri sconosciuti in Filter in alcuni contesti di esecuzione, come

isToKeep (tipico delle gwClassList sotto le gwMap), nel caso di MultipleEdit (al salvataggio in modalità modifica multipla)

* issue #645 widget date, con handleTime true, la select della parte 'time', rimaneva attiva in alcune situazioni anche quando non avrebbe dovuto

* issue #644 detailContainer aggiunta variabile 'detailLayoutName' ai detailContainer del gwClassDetail e derivati gwTaskDetail/gwTaskDetailProcedure. Questa potrà essere utilizzato nelle azioni di dettaglio pronto/eventi attributi per restringere convenientemente l'ambito di esecuzione del codice

* issue #643 widget comboBox non salvava il primo value con hideChooseLabel a true sul nuovo record. Venina nascosto l'opzione 'Scegli..', ma il select non si colorava di giallo, come quando viene selezionato un nuovo valore, che va poi persistito

* issue #641 widget linkListNam adesso viene visualizzato all'utente l'esatto messaggio della

Exception lanciata nel trigger della classe di mezzo, e non un generico errore

* issue #640 esteso ad altri leafItem il comportamento del leafItem gwClassList che, quando ne viene aperto il progetto, con l'utente corrente senza i permessi statici, viene visualizzato disabilitato. Se inoltre è settato il parameter hideWhenWithoutPermissions del leafItem, esso viene anche nascosto. Ora viene esteso tale comportamento anche ad altri leafItem basati su una gwClass. leafItem interessati:

  • leafItemListFilters
  • leafItemClassificationMenu
  • leafItemHierarchicalFilterMenu
  • gwTaskHierarchicalFilterMenu
  • leafItemGHFMCMenu

* issue #639 workflow risolto errore bloccante su click 'Avanza' in scheda gwTaskDetail (ed in generale usando le api java workflowService.synchronizeGwClassWithActiviti*()) L'errore si manifestava in caso di configurazione xml mancante per uno o più gwAttribute L'errore non è piu bloccante e viene solo loggato un warn sul database con nome attributo e nome classe

* issue #638 workflow schede gwTaskList (myTasks/allTasks) risolto errore bloccante sull'azione predefinita in lista che apre il dettaglio di classe gwClassDetail collegato all'istanza di processo del task corrente. La colonna era generalmente nascosta automaticamente (nel caso delle 'Procedure') o dai configuratori(mediante l'utilizzo del parameter hideProcessDetailColumn nel leafItem dell'xml di Progetto)

* issue #635 campi e tabelle database non erano sempre gestiti come toLowerCase() L'errore si manifestava con attributi (widgetBase) che comparivano nel gwClassDetail come readonly anche se non lo erano nell'xml del widget.

Il problema si generava se i field non erano tutti in minuscolo, venivano considerati quei campi come esterni alla tabella della classe, e quindi readonly di default.

* issue #627 api js openGwClassListFloatingPane() apriva scheda dove non funzionava il filtro

* issue #626 gwAction, aggiunta valutazione DACL evaluation in alcuni contesti senza dettaglio di classe. Per i tag di tipo <leafItem> di tipo gwAction si prevede il nuovo attributo: checkDynamicPermission: Boolean, optional, default false

Esempio: <leafItem type="gwAction" ... checkDynamicPermission="true">

Per i tag di tipo <leafItem> di tipo gwClassList, leafItemListFilters e leafItemHierarchicalFilterMenu si prevede il nuovo attributo:
forcedToCheckDynamicPermissionActionsNamesList: String, optional, default null. Is a list, comma separated, of gwAction name, configured in gwClassList Tab, which the dynamic permission check is explicitly needed. 
This assume that the configurator user had preventively set DACL to work in a full gwRecord-less context
Esempio:
	<leafItem type="gwClassList" ... >
		...
		<forcedToCheckDynamicPermissionActionsNamesList>gwActionName1,gwActionName2</forcedToCheckDynamicPermissionActionsNamesList>
	</leafItem>

* issue #625 workflow scheda gwarchivedProcessInstances non si visualizzava correttamente dalla versione 4.4.15

* issue #624 widget externalTable button 'Delete' non compariva sulla toolbar della lista

nel dialog, anche con permessi ACL+DACL attivi. Questo a differenza del button 'New', che invece
si comportava come atteso. Adesso vengono anche valutati gli eventuali parametri hideDeleteIgnorePermissions globali/byClass 
disponibili nel tag <gwClassSettings> dell'xml di progetto. Inoltre è anche disponibile lo stesso parametro hideDeleteIgnorePermissions, nell'xml del widget con priorità sulle confgiurazioni globali. Sui nuovi widget hideNewIgnorePermissions e hideDeleteIgnorePermissions vengono inzializzati a null. Se il tag manca (e non ci sono conf globali/byClass), il default è a false.

* issue #622 widget dbWindowListEdit non mostrava valueToShow se si usava .gwSetValue() per modificare e poi ripristinare il valore iniziale. Questo si manifestava, per esempio, nell'ambito degli eventi attributi

* issue #621 widget date in liste (no edit). Non venivano gestiti bene alcuni formati di data che potevano provenire dal db (postgres, field tipo timestamp):

  • 'yyyy-MM-ddTHH:mm:ss'
  • 'yyyy-MM-dd HH:mm:ss.zzz'

* issue #616 parametri in sessione, dialog scelta iniziale da externalTable. Aggiunto alert per segnalare eventuali problemi di

configurazione: aggiungere in lista, anche nascosti, gli attributi del fieldToStore e fieldToShow della gwClass dell'externalTable

* issue #615 workflow js api openGwTaskList(), invece che controllare, modificava la variabile di stato project_projectType.

Questo causava l'apertura di alcune schede, come la gwClassList nella versione per 'GeoExplorer'. In particolare compariva il titolo con la gwClass label (non necessaria nelGeoManager ed il tasto 'Filtra in Mappa',  che doveva invece comparire, nel GeoExplorer, solo nella toolbar della gwClassList posta sotto la gwMap)

* downloadAsZipByRecords : encodeURIComponent nel path dell'azione downloadAsZipByRecords (issue #611)

* issue #609 widget NumberBox, type 'CURRENTCY', in gwClassList/chilList/linkList non mostrava ne il simbolo della valuta, ne gli eventuali decimali.

Workaround precedente: eliminare tag <pattern></pattern>.
Se si vuole agire sui decimali, utilizzare il tag <places></places>, per esempio: <places>0</places>
Allineati comportamenti widget NumberBox in dettaglio e liste.
Revisione anche type 'PERCENT'. 
* se non si specifica il tag <pattern></pattern>, ne verrà usato uno di default: '#.## %'
* se invece lo si specifica, ma senza '%', verrà aggiunto alla fine cosi: ' %'
Al netto di quanto sopra, Dojo, in generale applica cosi i vincoli imposti
* dojo.number.format(null, {});														==> gives '0'
* dojo.number.format(100.56005, {});												==> gives '100,56'
* dojo.number.format(100.5, {});													==> gives '100,5'
* dojo.number.format(100.5, {pattern: '#.##'});										==> gives '100,5'
* dojo.number.format(100.56, {pattern: '#.##'});									==> gives '100,56'
* dojo.number.format(100.56, {pattern: '#.0000'});									==> gives '100,5600'
* dojo.number.format(100.56, {pattern: '#.##', places: 1});							==> gives '100,6'
* dojo.number.format(100.56, {pattern: '#.##', places: 10});						==> gives '100,5600000000'
* dojo.number.format(null, {type: 'percent', pattern: '#.##%'});					==> gives '0%'
* dojo.number.format('0.1056', {type: 'percent'});									==> gives '11%'
* dojo.number.format('0.1', {type: 'percent', pattern: '#.##%'});					==> gives '10%'
* dojo.number.format('0.1', {type: 'percent', pattern: '#.00%'});					==> gives '10,00%'
* dojo.number.format('0.1056', {type: 'percent', pattern: '#.##%'});				==> gives '10,56%'
* dojo.number.format('0.1056', {type: 'percent', pattern: '#.##%', places: 1});		==> gives '10,6%'
* dojo.number.format('0.1056', {type: 'percent', pattern: '#.##'});					==>	gives '0.11'
* dojo.currency.format(null, {type: 'currency'}); 									==> gives ' 0.00'
* dojo.currency.format(100.56, {type: 'currency', currency: 'EUR'}); 				==> gives '€ 100,56'
* dojo.currency.format(100.56, {type: 'currency', currency: 'EUR', places: 1}); 	==> gives '€ 100,6'
* dojo.currency.format(100.56, {type: 'currency', currency: 'EUR', places: -1}); 	==> gives '€ 100,56'

* issue #607 widget childList edit risolti errori UI dovuti ad id dojo gia registrati per widget in childList

* issue #603 gwClassDetail i button non erano disabilitati fino ad evento gwClassDetail/ready triggerato.

nelle form di dettaglio classe particolarmente complesse, dove il tempo di caricamento non era irrilevante, 
si poteva procedere al click, per esempio su 'salva', prima che il dettaglio fosse 'ready'.
In questo caso potevano generarsi errori di vario tipo. La problematica era ancora più rilevante sui dettagli in ambito workflow,
dove al click 'avanza', si cambiava lo stato del processo. Se il click avveniva senza il dettaglio caricato, con relativa
validazione lato client di required, etc, il processo avanzava con dati inconsistenti.

* issue #581 widget childList non supportava parametri globali

in xml di progetto sotto il tag <gwClassListSettings>:
hideNewIgnorePermissions
hideDeleteIgnorePermissions
Sono ora disponibili anche gli stessi parametri anche nell'xml di configurazione
del widget childList, default false, con priorità maggiore rispetto 
a quelli globali

* issue #578 rimosso errore che causava la mancata apertura delle schede Mappa 2D sia con le js api openMapTab(params) che con openLayout2DTab(params) se non si passava anche il parametro mgMapName (uguale a gwMapName)

* issue #568 widget ContentHandler / galleria fotografica - Dopo aver caricato le immagini su cmis, se si vanno a rivedere

tramite galleria fotografica, alcune appaiono ruotate rispetto alle relative immagini originali

* issue #567 widget ContentHandler - quando viene aggiornato un file da caricare sul documentale, il controllo dell'estensione è case sensitive; l'estensione, invece, va considerata la stessa se scritta in maiuscolo o in minuscolo (PDF è uguale a pdf)

* issue #566 widget comboBox su gwClassDetail in visualizzazione mostrava \' invece che '

* Personalizzazione Loghi: introdotti nuovi parametri per la personalizzazione dei loghi nei banner, nello sfondo della home page e per il logo della login (issue #604)

* Liste: corretto errore nelle selezione in lista con hideToolbar true (issue #606)

* issue #558 - Spostati il codice dei trigger GwdDrawingTrigger e GwdLayoutTrigger su umplugin.

Le classi sul plugin GwPublish2.0 ( esistente solo nella versione 4.4.X) estenderanno quelle su umplugin

* issue #591 - Fix plugin Thematism

NEW FEATURES

* issue #701 QueryBuilder aggiunte nuove java api. Queste effettuano un cast, specifico per il database in uso, in maniera tale da non generare errori al momento della comparazione con oggetti in ingresso dal java (String/Integer/Number/Date)

  • String castToString(final String value);
  • String castToInteger(final String value);
  • String castToNumber(final String value);
  • String castToDate(final String value);

* issue #691 aggiunta nuova tipologia di filtro per gli attributi: StaticListChoice ('Scelta Statica da lista')

Questa nuova tipologi di filtri è auspicabile sopratutto per evitare un annoso problema che si verifica quando,
mancando o non volendo fare apposite tabelle, si mettono nella query del filtro valori statici scrivendo query del tipo: select value, label from (select 'Unica soluzione' as value, 'Unica soluzione' as label union select 'Rata' as value, 'Rata' as label) a; Questa query è corretta per i databse postgres e sqlserver. In un eventuale porting di un prodotto verso un db oracle essa darebbe errore in quanto bisognerebbe aggiungere 'FROM DUAL'. Da ora è quindi buona norma non scrivere query per i filtri selezionando valori statici, ma utilizzare la nuova tipologia di filtro che dichiara staticamente i valori nella sua configurazione xml. Nell'xml è supportato il tag <showInGridColumn> che se posto a true, mostra un filtro rapido sulla colonna dell'attributo in lista

* issue #688 Adesso al click su un qualsiasi menu di primo livello (menuBarItem), se l'area di visualizzazione dei menu di secondo livello al momento 'collapsed', viene espansa in automatico, mostrando il relativo menu di secondo livello (accordionPaneItem)

* issue #682 web services geometries.json che restituisce le feature in formato geojson adesso, quando nelle geometrie sul db è esplicitato 'SRID (e sull'xml del widget i parametri 'persistSridToDB' e 'coordinateSystem' sono valorizzati), nel json di risposta è aggiunta l' info sullo SRID

* issue #677 nuovo web service geometries.json

  • GET
    • gwClassName

String, required. The name of the gwClass we want to retrieve geometries

  • geometryAttributeName

String, optional. If omitted the configured geometry column for gwClass is used. This can to be made explicit in case of gwClass with many geometry fields

  • drawingSetId

Integer, optional. In case of planimetry layout2D, this is used to build a specific drawing filter

  • coordinateSystem

String, optional, when provided geometries are finally transformed in that coordinateSystem (Example: “4326” or “EPSG:4326”). If omitted geometries are returned in the coordinate system as saved in db (implicit coordinateSystem used is configured in widget xml)

  • bbox

String, optional, restriction boundary coordinates, es: 'minx,miny,maxx,maxy'. When provided is used to build a filter.

		When coordinateSystem is provided, bbox is intended expressed in the same coordinateSystem
* POST, like GET, with:
	* filters
		List<HashMap<String, Object>>, optional. restriction Filters. If provided are linked to auto-generated filters in this way:
		([filters]) AND AFilter1 AND AFilter2
		
		Are supported both cases:
			standard filters:
				[{condition: 'AND', columnName: 'field_name', operator: '=', filterType: 'STRING', value: 'abc'}]
			'CUSTOM' filters
				[{condition: 'AND', filterType: 'CUSTOM', customFilter: 'field_name = 1'}]

* issue #668 aggiunte proprità in tag <gwClassDetailSettings>

<hideDeleteIgnorePermissions>false</hideDeleteIgnorePermissions>

<hideDeleteIgnorePermissionsByGwClassName>
	<entry gwClassName="gw_class_name_1" hide="true" />
	<entry gwClassName="gw_class_name_2" hide="false" />
</hideDeleteIgnorePermissionsByGwClassName>

* issue #663 gwClassDetail aggiunta proprietà gwAttributeDataType su tutti i gwWidget detentori delle js API Possibili valori:

	BOOLEAN DATE DOCUMENT IMAGE INTEGER NUMBER POINT POLYLINE POLYGON MULTIPOINT
	MULTIPOLYLINE MULTIPOLYGON GEOMETRYCOLLECTION STRING UNDEFINED

* issue #605 widget LinkListNam aggiunto publish topic evento associazione record conclusa, utilizzabile dai configuratori, previa sottoscrizione:

'linkListNam/association/ended'

* issue #654 aggiunta js API per aprire una report html su floatingPane openGwHtmlReportFloatingPane() Open a gwHtmlReport floatingPane. If the floatingPane is already opened (check based on tabWidgetId, when provided, or on reportUrl, by default), bring it to top. Otherwise a brand new tab is created

	parameters:
		-reportUrl: String, required, path to the .jasper file, 'WEB/template/' excluded (ex: 'path/To/file_name.jasper')
		-options: Object, optional, default null. Additional parameters.
			gwHtmlReport specific:
				-reportParameters: Object, optional, default null. This map contains the parameter that will be available inside the report
				-gwClassName or className: String, optional, default null. If omitted the eventual gwClass scope will not to be applied
				-updateOnChangeInGwClassNameListString: String, optional, default null. Comma separated (',') gwClassNames. 
				 This parameter decides to which gwClass publish events will cause a gwHtmlReport tab refresh (insert/update/delete)
				 So when user modifies a gwClassDetail of a specific gwClass, if updateOnChangeInGwClassNameListString contains the specific gwClassName,
				 the tab will automatically refresh itself.
			floatingPane commons:
				-floatingPaneId: String, optional, default null. When provided is used as fp id. Configuring it allow to open report on the already opened fp when needed, basing on fp id check
				-title: String, optional, default ''
				-modal: Boolean, optional, default false
				-useCookie: Boolean, optional, default true
				-dimensions: Object, optional, default {w: 1000, h: 800}
	Example:
		var reportUrl = 'path/To/file_name.jasper';
		var options = {
			reportParameters: {
				date: new Date(),
				project: 'P01'
			},
			updateOnChangeInGwClassNameListString: 'class_name_1',
			floatingPaneId: 'floatingPaneId',
			modal: false,
			useCookie: true
			dimensions: {w: 1000, h: 800}
			title: 'title',
			gwClassName: 'class_name'
		};
		openGwHtmlReportFloatingPane(reportUrl, options);

NEW COMPONENTS

DEPRECATED

* issue #697 field Deprecated (rimasti dalla geoweb 3 e mai rimossi) su vari widget

  • Geometry
    • @Deprecated private Integer typeCtrAct;
      • @Deprecated private String valueCtrAct;
      • @Deprecated private String labelDet;
      • @Deprecated private String labelEdit;
      • @Deprecated private String labelDel;
  • BlobObject
    • @Deprecated protected String blobTable;
    • @Deprecated protected Integer typeBlob;
    • @Deprecated protected Integer typeCtrAct;
    • @Deprecated protected String valueCtrAct;
    • @Deprecated private String labelDet;
    • @Deprecated private String labelEdit;
    • @Deprecated private String labelDel;

* function js openHtmlReport(). Usare openGwHtmlReportTab() con gli stessi parametri

REFACTORS

BUGFIX

  • Fix jsp duplicata MongoAttributeImportFT.jsp nel ThreeDVisualizer. (Issue #583)
  • Aggiunto il tenantCode nelle query che recuperano il Drawing (Issue #576)
  • Widget wsSuggestBox: risolto il bug “Deferred non definito” (issue #575)
  • gwAction presente in lista gwClassList e derivate nel button 'tre puntini' ('more options', UserActionsDropDownButton) era molto lenta ad eseguirsi al click ( issue #573)
  • Fix della query che recupera lo structure code durante il salvataggio di un modello sull'Upload Manager (issue #572)
  • widget comboBox su gwClassDetail visualize mostrava \' al posto di apice singolo ' (issue #566)
  • gwScheduler, in modalità ambienti clusterizzati, non gestiva sempre bene la modifica delle proprietà ('enabled', 'cron', etc.. ) della schedulazione eseguito da altre JVM (o direttamente sul DB). La procedura di controllo d'integrità (che gira ogni 10 min, per ogni JVM), oltre che ( issue #565):
    • fare la pulizia di tutte le schedulationDefinition gia gestite dalla JVM di competenza, ma non più esistenti sul DB
    • trovare e gestire tutte schedulationDefinition presenti sul DB,ma non ancora gestite dalla JVM di competenza Adesso fa anche il check di tutte le property eventualmente cambiate nella schedulationDefinition. In caso di anche solo una modifica la schedulazione viene disattivata per poi venire riattivata con i nuovi parametri.Le istanze della precedente schedulazione, gia in corso, vengono regolarmente conclusi.
  • Variabile in sessione con doppi apici nell'xml di progetto: corretto errore nella build dell'xml di progetto. (issue #564)
  • Sistemata la query che recupera i codici relativi al layer splittato presenti nel db ma non nel disegno. Prima la query falliva se la lista di questi codici era nulla. Inserito un controllo che verifica se la lista è nulla e adatta la query di conseguenza. (issue #561)
  • MapGuideService getMapImageAdvanced() non era funzionante. Veniva eseguito sempre il flusso di codice specifico per layer MapGuide dinamici con impostato splitDynamicLayer a true, anche quando non necessario, e causava la mancata erogazione dell'immagine della mappa ( issue #560)
  • Fix recupero documento layer mapguide sull'azione di stampa mappa con legenda ( issue #557)
  • ContentHandlerWidget
    • corretto errore nella visualizzazione del nome nel caso di campo diverso da file_name (issue #542)
    • con configurazione standard: errore nel caso in cui il widget sia configurato in una classe con nome diverso da tableprefix+_content (issue #556)
  • widget dbWindowList readonly in childlist edit faceva comunque utilizzare i button di modifica/clean (issue #555 )
  • widget document in gwClassDetail visualize i button open/download errore se non aveva ContentType popolato (issue #554)
  • widget gwAction in lista linkListNam (gwClass target) dava dialog errori multipli: No gwAction found for gwActionName='' under gwClass with gwClassName='sec_oda' (issue #553)
  • javax mail upgrade lib per supporto smtp ssl protocol TLSv1.2 Ora nel configuration.properties si puo settare anche la proprietà: gwMailService.mailSmtpSslProtocols=TLSv1.2 ( issue #552)
  • Esportazione xls: corretta mancata valorizzazione nel caso di un campo integer configurato a combobox (issue #550)
  • reportsheet: non veniva visualizzata l'icona nel caso di report con estensione xlsx (issue #549 )
  • libreria shape “gt-shapefile”: aggiunte dipendenze per alcune librerie mancanti in fase di build (issue #548)
  • jasperreports: aggiunte dipendenze per alcune librerie mancanti in fase di build (issue #547)
  • widget contentHandler api js gwSetDisabled() gwSetReadonly() usate in successione davano effetti visivi non voluti. Esempio: sequenze del tipo: gwSetReadonly(true) seguita da gwSetDisabled(false) toglievano visivamente la modalità di readonly anche se avrebbe dovuto esserci ancora. Aggiunta inizializzazione proprietà 'readonly', 'disabled' allo startup usando api js 8issue #546)
  • widget cmisDocumentWidget mancava implementazione js api (issue #545)
gwGetReadonly()
gwSetReadonly()
gwGetRequired()
gwSetRequired()
gwetDisabled()
gwSetDisabled()

Aggiunta inizializzazione proprietà 'readonly', 'required', 'disabled' allo startup usando api js

  • Aggiunto l'attributo pk_storey nella lista degli attributi esportati col selectClassRecord nel metodo getBuildingTypedStoreyChildren del GraphicLayoutMenuService (issue #544)
  • widget linklist row detail non era readonly se aperto da detail padre forzato a readonly. In generale ora si ottiene che, se un qualsiasi dettaglio di classe viene forzato ad essere aperto in sola visualizzazione (tramite il parametro api visualizeIgnorePermissions), bypassando i permessi configurati, nel caso esso contenga una linkList, essa è non soltanto in modalità sola visualizzazione (senza button 'Nuovo', 'Elimina'), e non soltanto che anche al click della riga i record collegati sono aperti a loro volta in sola visualizzazione, ma anche che eventuali altre linkList presenti nel detailLayout della classe figlia si comportano in uguale maniera (teoricamente in una catena senza fine) (issue #543 )
  • api rest insert non valutano insert permission (ma modify): (issue #541)

api js:

	@RequestMapping(value="insertGwRecord/{className}",method=RequestMethod.POST, produces = "application/json")
	public @ResponseBody HttpEntity<HashMap<String,Object>> insertGwRecord(
	
	@RequestMapping(value="insertGwRecord/{className}/json",method=RequestMethod.POST, produces = "application/json")
	@PathVariable("className") String className,
  • widget childlist se erano presenti attributi required non validanti, in quanto empty, il salvataggio veniva comunque permesso e l'utente non veniva notificato della posizione della childList contenente i widget non validanti. Adesso viene portato in primo piano il widget childList (con struttura layoutdettaglio complessa a piacere) e viene inoltre eseguito lo scroll nella grid alla riga contenente il primo widget che non valida (issue #540)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • Importazione Csv, personalizzazione della maschera di importazione:
    • intoduzione nuovo parametro opzionale csvTemplateLabel (issue #535)
    • introdotto nuovo parametro opzionale hideDocumentationButtons (issue #534)
  • metadataservice: corretta sequence errata in executeInsertQuery (issue #527)
  • chiamata gwClassDetail ora viene data eccezione in caso di accoppiata itemId/gwClass non valida. Un itemId null o stringa vuota viene ancora equiparato a “newItem” (issue #526)
  • widget LinkList: corretta gestione del base64 in stringa per la queryClause applicata alla lista dei record selezionati (issue #524)
  • widget LinkList in readonly, solo se imposto da api js, non apriva i gwClassDetail della classe relazionata in visualizzazione. La problematica riguardava solo il readonly imposto tramite l'api js gwSetReadonly() e non quello derivante dalla configurazione del parametro nell'xml del widget. Prima con gwSetReadonly(true) si nascondeva solo i button 'New' e 'Delete'. Ora, al click sul record in lista, anche il relativo dettaglio viene aperto in visualizzazione. Con gwSetReadonly(false) la modalità di apertura del dettaglio della classe collegata è ancora delegata agli effettivi permessi configurati per la stessa. Questo nuovo comportamento ha sempre priorità sul parametro del widget 'inheritClassPermission', che gestiva solo alcune casistiche. (issue #522)
  • Widget DigitalDocument. In un gwClassDetail, con un widget DDOC, se al momento del click sul button 'Create'/'Save' un campo non validava, esso non veniva portato correttamente in primo piano all'utente. Inoltre veniva generato l'errore: Maximum call stack size exceeded (issue #521)

NEW FEATURES

  • widget DigitalDocument ddoc aggiunte proprietà ed API js, richiamabili dal ddocWidget: (issue #525)
 
property:
ddocWidget.ddocSectionHeader - Object
ddocWidget.ddocSections - Object[]
function:
	ddocWidget.getDDOCSection(name) - Object
	ddocWidget.isDDOCSectionVisible(name) - boolean
	ddocWidget.isDDOCSectionEditable(name) - boolean
	ddocWidget.isDDOCSectionDefaultSelected(name) - boolean
	ddocWidget.isDDOCSectionHeader(name) - boolean 

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • ThreeDVisualizer: importazione relazioni oggetti 3D, gestione caso campo cod_obj esistente su ifc ma non popolato (issue #514)
  • Lista versioni in widget Cmis Document e Content Handler: tolta possibilità di eliminazione anche da parte degli utenti con permessi in sola lettura (issue #513)
  • Galleria fotografica:
    • gestione errore di tipo ImageReadException nella lettura del tag GPS (issue #512)
    • nel caso di salvataggio nel documentale, qcorretto salvataggio anche su FileSystem allo stesso path previsto per il CMIS (issue #511)
  • widget dbWindowList risolti errori in dialog selezione quando si rientrava dopo aver gia selezionato.In particolare, quando si rientrava, i filtri venivano valutati male e si visualizzavano più record di quelli imposti dai filtri del queryClause. Risolto metytendo fra parentesi () tutti i filtri prima di applicare il queryClause (issue #505)
  • layer dinamici. Non veniva visualizzato il layer generico ma solamente quelli generati dallo split (issue #504)
  • workflow tuttle le grid hanno refresh parziale dopo eventi del flusso di processo (issue #503)
  • leafItemGHFMCMenu:
    • introdotto refresh dell'albero nel caso di modifiche (insert/update/delete) nelle classi coinvolte nelle relazioni che definiscono i nodi dell'albero (issue #501)
    • corretto ordinamento dei nodi padri seguendo quello alfabetico delle rispettive label (issue #500)
  • pagine jsp senza hook point css class per cambi stile con configuratorUser.css: aggiunte class css specifici per poter facilmente sovrascrivere gli stili in caso di necessità (issue #491)
  • file configuratorUser.css non importato in molte jsp login/scelta gruppo/scelta progetto/gest passoword/licenza configuratorUser.css sta nei contenuti statici css/, e viene usato per sovrascrivere gli stili in un applicativo (fuori da quanto previsto per la data versione rilasciata) Il file viene importato per ultimo e sovrascrive tutti gli stile di default. Ora possono anche essere sovrascitti gli stili delle pagine di corredo del webclient (issue #490)
    • index.jsp
    • login.jsp
    • productLicenceInfo.jsp
    • projectIndexMobile.jsp
    • changePassword.jsp
    • forgotPassword.jsp
    • resetPassword.jsp
  • planimetrie: Stampare il nome del piano all'interno della stampa del flusso delle planimetrie. (issue #489)
  • widget Document in gwClassList/LinkList/Childlist non faceva il download (ma dal dettaglio si) (issue #488)
  • widget DBComboBox non popolava il valore sul Nuovo dettaglio quando aperto dalla linkList padre (issue #487)
  • Eccezione rilanciata dai groovy sul delete di un record da dettaglio non viene visualizzata con display_detailed_error_messages a false (issue #482)
  • Cde:
    • corretto caricamento forma M3D da client esterno nel caso di conversione file IFC in XKT ancora in corso (issue #502)
    • corretta gestione permessi in upload massivo elaborati con client esterno (issue #496)
    • corretto errore di sovrascrittura di alcuni campi in update con upload massivo documenti da clien esterno (issue #476)
  • LinkListNaM: aggiunto parametro applyQueryClauseToAssociated al costruttore del widget (issue #470)
  • scheda gwClassList record selezionati non erano persistiti dopo cambio ordine (dal menu delle colonne) (issue #472)
  • scheda gwMap errore dettaglio record in editing multiplo. L'errore occorreva alla selezione dell'attributo e corrispondente visualizzazione del gruppo attributo chiamato 'main' della classe. detailContainer.gwAttributeStore is null when calling .put() (issue #469)
  • Correzione bug della funzionalità “forza cambio password” con proprietà “display_detailed_error_messages” a false (issue #465)
  • widget linkList non è readonly dentro DigitalDocument Section, anche se dal groovy essa è imposta con isEditable() false (issue #449)
  • gwScheduler errore field mancante LOCK_END_TIME su query di update anche con flag gwscheduler.clusterMode.enabled mancante o false, SOLO in caso di errori groovy schedulato. l'errore è non bloccante (issue #458)
  • ContentHandlerWidget:
    • corretto errore nel salvataggio dell'utente di caricamento nel caso di aggiornamento con client esterno (issue #497)
    • corrett errore di tipo “CmisConstraintException: Conflict” alla prima apertura di un record avente widget ContentHandler e widget Attachment (issue #492)
    • parametro hideDefaultUploadActionButton per forme M3D (issue #484)
    • risolto bug sul controllo permessi (checkTypedContentPermissions) nel caso in cui esiste il metadato e si inserisce il documento (issue #456)
  • Corretto un bug di regressione relativo alla issue #389 (refactor initializeImport) (bug di regressione relativo alla issue #389 (issue #455)
  • widget LinkList non dava errore in workflow procedure quando era in task successivi al quello corrente. (issue #437)
  • gwClassDetail con LinkList: compare dialog errore senza testo. Dovuto a incoerenze sulle gwRelation nei metadati collegato al bug (issue #435) del webadmin - bug relation management gestione relazioni inverse (issue #435)
  • widget dbImageComboBox (in edit) in childlist (in edit) valore annullato (selezionato 'Scegli..') non persistito al salvataggio (issue #433)
    • widget dbImageComboBox in childlist in edit click ravvicinati rompono widget, che rimane disabled (issue #432)
    • workflow gwTaskList showOnlyUserTasks non valutato. Il parametro non viene valutato se nella richiesta non erano presenti contestualmente o filtri o criteri di ordinamento, od entrambi (issue #431)
    • trigger groovy per le gwClass della childlist. Negli hookPoint .beforeUpdate() .afterUpdate() oldValuesMap contiene ora valori in formati standard (date, geometrie). Per esempio i campi geometry ora sono serviti come jts Geometry (e non, per esempio, come struct per gli ambienti oracle) (issue #112)

NEW FEATURES

  • ContentHandlerWidget: aggiunta la gestione dello stato -1 (e più in generale la gestione di stati con valore intero negativo) per indicare un errore di conversione del file IFC (issue #457)

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • ContentHandlerWidget:
    • dimensione massima di default per caricamento file impostata dall'utente mediante parametro commonsMultipartResolver.maxUploadSize sul configuration.properties (issue #427)
    • introdotto nuovo parametro hideDefaultUploadActionButton per consentire la visualizzazione delle azioni di caricamento nella maschera del widget (issue #425)
  • WebclientTemplate-archetype: aggiornato default-target-url per correggere il reindirizzamento nel caso welcome page diversa dalla index.html (issue #421)
  • DbComboBox: corretta mancata traduzione del valueToShow (issue #420)
  • DbImageComboBox: corretta mancata traduzione del valueToShow nel dettaglio classe (issue #419)
  • LinkListNam:
    • risoluzione di un bug di regressione legato alla issue #342 su queryClause (issue #411)
    • corretta mancata traduzione degli attributi nella griglia con la lista dei record selezionati (issue #418)
  • Modifica Multipla: risolto un bug che impediva l'utilizzo della modifica multipla con la selezione oggetti da mappa (issue #410)
  • workflow procedure gwAction detailReady non recuperavano i widget di fasi (task) prec o succ non ancora navigati. Ora si caricano tutti i dettagli delle fasi precedenti e successive prima di lanciare le azioni di dettaglio pronto. (issue #423)
  • PrintMapLegend: commentate due righe sul plugin printFlowMap (MapGuidePrintService 1123), che impedivano la stampa dei layer splittati (issue #413)
  • widget linkListNam aggiunti nullcheck su domNode gwClassListRowSelected gwClassListRowNumber (per evitare errori non bloccanti in console con tab del widget nascosto) (issue #409)
  • widget dbWindowlist al click sul textbox non si apriva piu il dialog di scelta (issue #408)
  • widget DigitalDocument le label delle DigitalDocumentSection non erano tradotte in base al dizionario (issue #404)
  • Widget NumberBox , readonly, in ChildList (con readonly a false), visualizza '0' invece che niente se il value è null. I casi in cui si presentava il problema sono (issue #309):
    • gwClassList NumberBox, datatype NUMBER
    • gwClassList Normal, TextBox e tutti quelli senza formatter specifico, MA CON datatype NUMBER (inusuale per Normal..)
    • childlIst (readonly a false, e con i permessi di edit sulla classe delle childlist) con NumberBox (o altro widget senza formatter, [es: Normal, TextBox] con datatype NUMBER), con readonly a true
  • widget linkListNam: risolto comportamento che bloccava l'editing del filtro nella finestra 'Associa/Dissocia' per il campo di relazione della classe (issue #406)

NEW FEATURES

  • filtri statici: aggiunto il nuovo parametro hideToClient ai filtri statici: se esiste ed è true, essi non vengono visualizzati e non vengono bloccati nella finestra di editing dei filtri (issue #406)
  • LinkListNam: introduzione del parametro “applyQueryClauseToAssociated” (issue #424)

NEW COMPONENTS

DEPRECATED

  • class GwMailUtilityService (com.geowebframework.calendar.service)
    • public Boolean getIsInizialized() ⇒ public Boolean getIsInitialized()
  • class GwImportUtilService (com.geowebframework.calendar.service)
    • public void inizializedImport(…) ⇒ public void initializedImport(…)
  • class GwDBImageComboBoxDataService (com.geowebframework.dataservice.service.widget):
    • public HashMap<String, Object> executeDbImageComboBoxStringQuery(Object valueToStore, Attribute attributeItem, DBImageComboBox dbImageComboBox) deprecato perchè aggiunto nuovo metodo con in più il parametro Locale locale (issue #419)
  • class GwDBComboBoxDataService (com.geowebframework.dataservice.service.widget) deprecati perchè aggiunti nuovi metodi con in più il parametro Locale locale (issue #420):
    • public String getValueToShowFromValueToStore(String valueToStore, Attribute attribute)
    • public String getValueToShowFromValueToStore(String valueToStore, Class gwClass, Attribute attribute)

REFACTORS

  • java
  • issue #389
    • class ThreeDVisualizerInizializerService ⇒ ThreeDVisualizerInitializerService
    • class GwTreeCollectionInizializerService ⇒ GwTreeCollectionInitializerService
    • class GwEnterpriseInizializerService ⇒ GwEnterpriseInitializerService
  • class CdeInizializerService ⇒ CdeInitializerService
  • class PrintMapLegendInizializerService ⇒ PrintMapLegendInitializerService
  • class SmartplatformPluginInizializerService ⇒ SmartplatformPluginInitializerService
  • class WorkflowInizializerService ⇒ WorkflowInitializerService
  • class GwMnemonicCodeInizializerService ⇒ GwMnemonicCodeInitializerService
  • class LabelValuesWidgetInizializerService ⇒ LabelValuesWidgetInitializerService
  • class GoogleStreetViewInizializerService ⇒ GoogleStreetViewInitializerService
  • class GwMailUtilityService
    • private Boolean isInizialized ⇒ private Boolean isInitialized
    • public Boolean getIsInizialized() ⇒ public Boolean getIsInitialized()
    • private void inizializeMailSender() ⇒ private void initializeMailSender()
  • class CmisFactory
    • private inizializeSession() ⇒ private initializeSession()
  • class GwImportUtilService
    • public void inizializedImport() ⇒ public void initializeImport()

BUGFIX

  • gwDynamicTimeline: corretto errore in dojo query selector con caratteri speciali (=,+ e /) (issue #397)
  • Galleria Fotografica:
    • migliorato metodo per il salvataggio immagini e relativa creazione del nome univoco sul CMIS in ImgPathGallery e ContetHandler (issue #382)
    • corretta errata cancellazione dello zip temporaneo e dei file temporanei dopo il caricamento in ImgPathGallery e ContetHandler (issue #400)
  • widget date:
    • value string 'now' valorizzato tramite api js initialvaluesMap con itemId=='newItem' (issue #395)
    • con handleTme a true, event handler ON_CHANGE_VALUE non viene invocato (issue #391)
  • workflow:
    • nullPointerException per nuovi war installati su vecchi dispiegamenti. Questo durante il recupero dei recupero parametri: hideActivitiFilters orderListByGwAttributes (issues #383)
    • gwTaskDetail/gwTaskDetailProcedure permessi statici e DACL gwClass non venivano applicate (issue #359)
    • gwAction di dettaglio in toolbar con DACL compaiono in scheda startTaskForm, anche se non volute (issue #320)
      • CONVENZIONE: I button delle azioni non dovrebbero comparire in quanto non esiste ancora il record geoweb sottostante su cui applicare le DACL. In generale logica implementata nel codice, è che le DACL verrebbero applicate solo se ci fosse un itemId ne nullo ne vuoto (c'è il check if(itemId!=null && !itemId.isEmpty()) {}) Pero, sempre per convenzione, in tutti i casi in cui non c'è itemId (gwClassDetail insert, workflow startTaskForm) viene passato come itemId la stringa “newValue”. Il risultato è che tutti i controlli di DACL, se abilitati nella gwClass, VENGONO ESEGUITI E FALLISCONO, in quanto naturalmente non viene trovato nessun record con la chiave uguale a “newItem” sul DB Il risultato è che l'azione non viene visualizzata in quanto il check sulle DACL viene eseguito e fallisce
    • filtro act_task_assignee non supportava notazione #{gw_activeUser} (issue #319)
    • procedure stessa childlist in visualizzazione su piu task diversi danno errori il configuratore potrebbe mettere la stessa childlist su piu task di un workflow procedure se, aprendo la scheda gwTaskDetailProcedure, i due task sono entrambi differenti dalla fase corrente, quindi in readonly, accade che si genera un errore per id duplicato (issue #318)
    • nelle liste workflow al click sulle righe e conseguente apertura schede di processo rimangono attivi gli eventuali tooltip aperti (issue #317)
    • eventi attributi non funzionanti dentro schede workflow/procedure la problematica si verifica quando si apre una scheda workflow dalla scheda startTaskForm e ci sono eventi attributi configurati per il dettaglio. In particolare se esegue lo startProces, gli eventi attributi non funzionano nella successiva scheda gwTaskDetail. Chiudendo e riparendo la scheda gwTaskDetail gli eventi funczionano correttamente (issue #316)
    • errore UI filtro con hideActivitiFilters a true (issue #312)
  • filters/staticFilters in queryString/payload subiscono escape che generano errori al momento di eseguire query sul db (SOLO SQLSERVER) bug presente dalla 4.4.7 (issues #380)
  • Filtro su classi relazionate (filtro sui figli): risolto il problema “colonna ambigua” (issue #377)
  • dojo grid setQuery() è a volte invocato quando ancora la grid non è _started. Esso puo, in sistemi lenti, dare errori nella visualizzazione dei record. (issue #357)
    • Componenti affetti: [gwClassList, linkListNam, gwTaskList, gwRunningProcessList, gwSuspendedProcessList, gwArchivedProcessList, windowChoice, externalTable, BimModelExternalTable, dbWindowListEditDialog, gwMnemonicCode, selectionWidget, filterSelectionWidget, graphicLayoutWidgetEditDialog]
  • GwMailUtilityService: configurazione del bean di tipo com.geowebframework.calendar.service.GwMailUtilityService nel file metadata-config.beandef.xml (issue #355)
  • webclientTemplate-archetype:
    • correzione commento in mybatis-config.xml (issue #347)
    • correzione makegwar.bat (issue #402)
  • widget Normal (nella ChildList): risolto un bug che impediva di inserire una stringa con lunghezza pari al valore della proprietà maxLength, ma solo fino a maxLength-1 (issue #343).
  • widget LinkList: risolto un bug per cui nelle azioni “selezionati in lista” nel caso della selezione di tutti i record la queryClause non era applicata (issue #341)
  • gwClassDetail errore validazione form: ..attribute is HIDDEN.. (issue #333)
    • Attualmente il messaggio è erroneamente visualizzato, quando l'attributo non valida se empty, anche se il widget non è contemporaneamente impostato required ed hidden da configurazione admin, ma viene visualizzato anche se semplicemente è nascosto all'utente in un qualche Container dove compare una scrollbar e il widget non è immediatamente visibile all'utente. E' stato ora introdotto uno scroll automatico al widget che non valida. Questo lavora in parallelo al precedente meccanismo di selezione dei tab/accordion, anche annidati, che porta in primo piano il container contenente il widgte che non passa la validazione
  • gwMap aperta in edit dal widget, uscendo con annulla non si riapre. Errore dovuto ad errata gestione flag gw_isEditingGeometry (issue #326)
  • widget dbwindowlist onChange non sempre triggerato su eventi attributi (issue #311)
  • preUpdate per widget definiti in plugin opzionali: corretta impossibilità di valorizzare il valuesMap dal preUpdate di widget definiti al di fuori del transfer-objects (issue #322)
  • Widget LinkListNam:
    • corretto comportamento per cui un record nella griglia degli elementi selezionati viene aggiunto in automatico sul click alla griglia degli elementi da selezionare (issue #323)
    • migliorata visualizzazione messaggio di errore (issue #378)
  • Widget Attachment: corretto errore nell'azione rinomina per cui veniva rinominata la cartella padre sull'albero di sinistra e non quella selezionata (issue #336)
  • Widget Content Handler:
    • tolta obbligatorietà di usare NewDoc come layoutname per la forma doc (issue #339)
    • aggiunto parametro gwProjectName nelle chiamate rest/openXKTVisualizer (issue #348)
    • null check sull'attributo del widget per retrocompatibilità (issue #349)
    • corretto errore di retrocompatibilità durante l'inserimento del metadato (issue #353)
    • aumentata dimensione massima di default per il caricamento file (issue #365)
    • corretta visualizzazione anteprima per contenuto di tipo GAL (issue #369)
  • ExternalTable: corretta la mancata gestione dei filtri statici in genericExternalTableEditDialog.jsp e in ExternalTableController.java (issue #367)
  • Client Cad: Aggiunto controllo in fase di pubblicazione di una planimetria 2D. Se il geom_envelope è nullo in fase di inserimento viene lanciato un errore e impedita la pubbliazione (issue #340)
  • widget IndirectLocalization: Corretto il funzionamento del widget IndirectLocalization. Se non aveva oggetti collegati non faceva partire il publish del topic 'gwClassDetail/gwAttributeReady' necessario per l'avvio dell'azione di dettaglio pronto. (issue #393)
  • Innsert/update gwClassDetail con query dove fieldToShow è uguale al columnName: Corretta gestione inserimento/aggiornamento record su classe collegata a un'altra classe tramite widget con query (externalTable, dbWindowList, ecc) in cui il fieldToShow ha lo stesso nome di un altro attributo della classe principale. Per dettagli si veda la issue su gitlab. (issue #394)
  • Classificazione: Risolto problema che impediva l'apertura della finestra externalTableEdit nel caso di valorizzazione attributo variabile di tipo externalTable. (issue #401)

NEW FEATURES

  • gwClassDetail - aggiunta implementazione gwAction beforeCreate e beforeSave (issue #366)
  • Sicurezza
    • Aggiunto allo spring security: HTTP Strict Transport Security (HSTS) HTTP security header (issue #345)
    • risolte le vulnerabilità di sicurezza nella funzionalità di recupero password (forgotPassword) che riguardano l'utilizzo dei messaggi generici di errore e Null Byte Injection (issue #344)
  • CDE :
    • implementazione di un controller per importazione contenuti (issue #315)
    • Aggiunta dei Permessi di esecuzione del controller per importazione contenuti (issue #324)
    • Corretto checknull nella ricerca della folder su cmis (issue #334)
    • corretto errore nel caso di booleani associati a tipi Integer (issue #314)
    • Content Handler Widget:
    • aggiunta possibilità di associare il widget ad un campo di tipo stringa (issue #321)
    • gestione forme M3D (issue #337)
    • visualizzazione data di caricamento e utente di caricamento per la forma doc (issue #338)
    • gestione della conversione dei file ifc in xkt per le forme M3D tramite il servizio introdotto nella issue #350 (issue #351)
      • per le forme M3D visualizzazione dell'anteprima del documento solo se la conversione del file non è in corso (issue #352)
      • per le forme M3D eliminazione da cmis del file convertito in formato xkt contestualmente all'eliminazione del file ifc (issue #358)
  • Widget LinkListNam: aggiunta l'applicazione della queryClause alla lista dei record selezionati (issue #342)
  • Widget LinkList: uso di espressioni nella forma #{…} per indicare variabili dinamiche nella queyClause (issue #330)
  • PreInsert Widget esterni: introdotta gestione del preInsert per widget definiti in plugin opzionali (issue #335)
  • Widget Attachments: apertura del blocco di sinistra contenente l'albero in seguito alle azioni nuova cartella, copia in e sposta in (issue #292)
  • Conversione dei file IFC in XKT: aggiunto nuovo servizio da implementare per la conversione dei file ifc in xkt (issue #350)
  • gwDynamicTimeLine: aggiunta sottoscrizione all'azione onClick della timeline (issue #368)
  • CDE_AIM: Importazione_Massiva_Elaborati_Contenuti_CDE_AIM (issue #360)
  • versioning plugin caricamento massivo (issue #370)

NEW COMPONENTS

  • Home Button: aggiunta la possibilità di configurare il pulsante home nella barra degli strumenti (a sinistra delle informazioni utente)

DEPRECATED

REFACTORS

BUGFIX

  • workflow gwTaskList:non segue regole ordinamento dei gwAttribute precedentemente, se non veniva imposto un filtro dall'utente usando le funzioni della grid dojo, viene usato un criterio di filtro automatico :
    • dateField DESC se esplicitato e configurato nel JSON di processo
    • act_pid DESC

Ora, abilitando il flag orderListByGwAttributes, default false, nel JSON di configurazione del gwProcess, si esclude il meccanismo di ordinamento automatico, in favore di quello più generale basato sui gwAttribute (issue #308)

  • widget externalTable: non sono valutati valutati i parametri generali (issue #306):
    • hideNewIgnorePermissions/hideNewIgnorePermissionsByGwClassName in xml di progetto sotto tag <gwClassListSettings>. Aggiunto un parametro specifico del widget hideNewIgnorePermissions, che ha priorità sui generali. In sua assenza, sono valuti i generali, secondo le modalità usuali
  • widget externalTable in childlist : se su un record creato/modificato, se si fa refresh non tiene il valore nella UI (ma è ok su Creazione/Salvatggio dettaglio classe) (issue #304)
  • widget Image in lista gwClassList, fix sfondo nero con immagini .png con trasparenze (issue #303)
  • widget dbimageCombox in childlist : il readonly non viene valutato (issue #297)
  • rimosso errore 404 chiamata /blanksForm ad ogni accesso (issue #290)
  • widget checkbox su childlist in edit: se modificato, cambiando tab e tornando, non tiene ne il valore ne la demarcazione di modifica avvenuta (background giallo) ( issue #283 )
  • workflow mancanza nel binding del parametro acti_pid nei groovy presenti subito dopo la startTaskForm. Per uniformità con l'utilizzo dei groovy in altre parti del bpmn, è ora aggiunta in automatico la variabile act_pid e tutta una serie di altre potenzialmente utili (issue #277):
    • itemId
    • processInstanceId
    • processDefinitionId
    • processDefinitionKey
  • Workflow API js setTaskAssegnee(taskId, assegnee) error con assegnee null non funzionava e non permetteva di resettare l'assegnatario di un tak da azione js (il work-around era lanciare un da javascript un groovy che usava le API java) (issue #272)
  • tab layout2D BaseMapLayer KO dopo update GoogleMapsAPI a 3.45 (maggio 2021) (issue #271 )
  • widget dbImageComboBox in childList edit non valuta il parametro readonly ( issue #269 )
  • Scheda gwMap:
    • controllo MousePositionControl le labels 'lat' e 'lon' sono invertite nella statusBar della scheda gwMap (il control è attivabile con il flag showMousePositionControl=true) (issue #263 )
  • correzione gestione layoutId = null nella jsp mapLayout2D (issue #267)
  • EventMemoNotificationService migliorati log. Viene meglio messa in risalto la mancaza di recipient configurati per un dato event, che non permetterà l'invio di alcuna mail (issue #262 )
  • dimensioni gwFloatingFane: mancata persistenza impostazioni user (issue #261)
  • Widget Content Handler: corretto errore all'apertura del file in lista (issue #280)
  • File con virgola o spazi nel nome: corretto errore nella visualizzazione dell'anteprima e in download (issue #287)
  • Widget Document: corretto errore nella visualizzazione del widget sia con permessi in sola lettura che in modifica dovuto all'apice singolo nel nome del file (issue #291)
  • Cde in Oracle: corretto errore dovuto al cast ad Integer (issue #298)
  • Custom Welcome Page:
    • spring-security.xml: corretto errato reindirizzamento dopo la login nel caso di welcome-page diversa dalla index.html (issue #299)
    • corretto errato reindirizzamento nel caso di welcome-page diversa dalla index.html dai pulsanti “annulla” delle azioni di cambio password, password dimenticata e reset password (issue #300)

NEW FEATURES

  • Invio mail: ora il metodo sendMail (di gwMailService) viene correttamente eseguito in modo asincrono se eseguito da groovy (issue #284)
  • Azioni: aggiunta nuova azione “Download file tramite groovy” (groovyActionDocument) (issue #281)
  • Azioni: aggiunta nuova api (GwPdfService) per la creazione di un documento pdf ottenuto tramite il “merge” (unione) di due o più file pdf (issue #278)
  • Widget Content Handler:
    • aggiunti parametri docFormatsColumn e docMaxSizeColumn per la forma contenuto di tipo DOC (issue #273)
    • aggiunti nuovi tag per togliere l'obbligatorietà delle classi fisse previste dal modello dati originale (issue #275)
  • Gruppo utente di default con activeProjects o activeGroup nulli (issue #288):
    • se presente la colonna ord_num nella tabella gwm_groups si sceglie il gruppo di default con priorità più alta stabilita da ord_num;
    • se non presente la colonna ord_num si seguono le logiche precedenti prendendo il primo gruppo della lista con i permessi di apertura.

NEW COMPONENTS

DEPRECATED

REFACTORS

BUGFIX

  • Progetti Geoweb: corretto un problema nel caso di apertura di un progetto Geoweb senza eseguire la scelta del gruppo utente (issue #258)
  • Progetti Geoweb: Aggiunti controlli di retrocompatibilità del parametro “className” dei leaftItem (issue #220)
  • Widget Image: risolto un problema di visualizzazione (immagine “rosa”) nelle schede lista (in thumbnail gwClassList) (issue #97)
  • Widget Image e ImgPathGallery: corretta errata visualizzazione dei colori (immagini “rosa”) per le immagini di tipo jpeg/jpg legato alle librerie ImageIo e imgscalr (issue #226)
  • Widget LabelValuesXmlWidget: corretto un problema che impediva di utilizzare il widget se non presente in lista (issue #207)
  • Widget SelectionList2Widget: corretto un riferimento non esistente alla label “siteLabel” (issue #205)
  • Shape: Problemi valori nulli sullo shape (issue #200)
  • Shape: Esportazione shape File .fix problema quando le geometrie sono vuote (issue #199)
  • Widget Date: aggiunto un nullcheck nel formatter in lista, necessario per utilizzi personalizzati del formatter (issue #189)
  • Filtro windowChoice: bugfix configurazione con queryClausole e ambiti (issue #179)
  • issue #177
    • Fix del caricamento di documenti e ifc con allegati da Upload Manager:
    • corretto errore nella creazione del file temporaneo sotto la cartella WEB del progetto: il file temporaneo veniva creato considerando il percorso completo del file all'interno della directory di provenienza (questo generava un errore dovuto alla mancanza delle subdirectory attese sotto la cartella WEB)
    • aggiunto path originario del file in modo da poter essere usato dal multipartFile, così da averlo in uploadAttachments (riga 132)
    • aggiunto controllo in uploadAttachments per il recupero del path orinario del file così da fare in modo che lo stesso percorso sia gestito anche sul documentale
  • issue #111 gwClass groovy trigger, oldValuesMap passato ai metodi beforeUpdate(), afterUpdate() non era trattato e normalizzato come valuesMap, ma arrivava cosi come presente su DB. Per esempio un utente che si aspettava il valore di un campo geometria come com.vividsolutions.jts.geom.Geometry, su oracle, per esempio, si vedeva arrivare un oracle.sql.STRUCT
  • issue #194 linklist widget error: _checkToolbarIsLoaded is not a function
  • HierarchicalFilterMenu con classificazione: correzione errore nella creazione della gerarchia impostata dalla classificazione (issue #181)
  • Modificato il modo di recuperare lo spazio di riferimento sulle maschere di importFT (issue#185)
  • Issue #187:
    • Modifica per recuperare il giusto modelSet ( se il bim_model fa parte di un modello federato) oppure aprire quello di default
    • Fix delle operazioni di zoom sull'oggetto. Aggiunto il parametro totalObjNumber su BimAtomicObj e fix degli handle sull'indirectLocalizationWidget
  • issue#193 Modificati i type handler dei campi geometry all'interno del drawingSetMapper in caso di utilizzo di postgres e sqlserver
  • Validazione Input: spostata la validazione dal metodo populateValuesMap al metodo handleFieldList in modo che avvenga dopo le logiche inserite nei beforeInsert e beforeUpdate (issue #212)
  • Classificazione:
    • aggiunta ereditarietà del defaultValue nelle sottofamiglie anche per attributi variabili di tipo dominio, externalTable e data. (issue #214)
    • corretto errore bloccante nella visualizzazione di attributi viariabili di tipo externalTable (issue #216)
    • corretto errore nella creazione della select di scelta per attributi variabili di tipo dominio (issue #217)
    • corretto errore dovuto al mancato null check in selectTblAttributeListWithDefaultValues (issue #229)
    • corretto errato salvataggio attributi variabili su MongoDB da updateCache dovuto al mancato ordinamento dell'array staticRecords (issue #231)
    • corretta impossibilità di annullare il valore di un attributo variabile precedentemente valorizzato da importazione csv/shape (issue #232)
    • corretto errore nell'update di attributi variabili con id_attribute nullo (issue #233)
    • corretto salvataggio degli attributi avriabili da updateCache in modo che il valore dell'attributo sia gestito in base al tipo (issue #238)
    • corretto errore nell'aggiornamento in cache di attributi variabili di tipo intero o numerico (issue #242)
  • CDE: errore apertura dwg con nome contenente un “.” la chiamata al server tronca le path variable se non viene gestito correttamente il “.” (issue #218)
  • Widget Content Handler - schede digitali: salvataggio collegamento tra contenuto e classe della scheda digitale tramite nome della classe e non gwid (issue #219)
  • ThreeDVisualizer:
    • errore nell'utilizzo della funzionalità di Clip 3D, era impossibile fermare il piano di clip a causa di un conflitto tra i controls del clip e quelli dell'edit (issue #223)
    • gestione relazioni tra 3D ed n record di una classe sql, dall'elenco degli userdata non vengono recuperati tutti i record, ma solo il primo (issue #245)
  • Widget Image in lista: corretto errore nella mappatura della richiesta http nel caso di imageName con slash (issue #224)
  • Widget Image con immagine su file system: corretto errore dato dal doppio slash nell'url di download nel caso di fileName con slash iniziale (issue #225)
  • issue #250 GwInteroperabilityServiceController i servizi di interoperabilità esposti listEntity/{className} restituivano una lista di record trattati con il postprocessing interno delle liste di geoweb, non voluto all'esterno. I record restituiti venivano sottoposti al buildListPostProcessing() che opera sui valori delle seguenti tipologie di widget:
    • Date: veniva restituito una data in un formato non standard, interno a geoweb
    • Image: veniva restituita una immagine, che era la thumbnail del file, con dimensioni adatte alla preview in lista
    • Geometry: veniva restituito un boolean, true se la geometria era non nulla
  • issue #257 dmImageComboBox widget: usando js API gwSetValue() non veniva triggerato onChange() (che funzionava correttamente per valore cambiato da UI)

NEW FEATURES

  • Layer Dinamici: gestione “punto” (issue #237)
  • Nuovo servizio 'getMapImageAdvanced' per l'esportazione di una immagine da una planimetria dato un oggetto (issue #230)
  • Widget Classification: ora è possibile utilizzarlo anche in assenza di attributi variabili (issue #222)
  • Template Analisi Excel: aggiunto al servizio “gwTemplateExcelService” il metodo “templateExcelDynamicDownload” per effettuare il download di un documento excel processato da Geoweb come se fosse un “Template Analisi Excel” (issue #228)
  • Template Analisi Excel: servizio “gwTemplateExcelService” aggiunto ai servizi del registry (issue #221)
  • CDE - Content Handler photo gallery: aggiunta possibilità di fare un upload dello zip da widget nel dettaglio del contenuto (non versionabile) (issue #178)
  • GwClassListSettings (tag in xml di progetto), aggiunte nuove proprietà globali. Queste verranno valutate solo se configurate e se nella configurazione del componente specifico, non esiste una configurazione locale (che quindi ha priorità maggiore).
  
	  	Nome proprietà										supporto componenti 
	  
		hideToolbar										gwClassList (e derivati)
		hideToolbarByGwClassName								gwClassList (e derivati)
		hideNewIgnorePermissions								gwClassList (e derivati), linkList
		hideNewIgnorePermissionsByGwClassName					gwClassList (e derivati), linkList
		hideDeleteIgnorePermissions								gwClassList (e derivati), linkList
		hideDeleteIgnorePermissionsByGwClassName				gwClassList (e derivati), linkList
		onRowClickGwActionName									gwClassList (e derivati), linkList
		onRowClickGwActionNameByGwClassName						gwClassList (e derivati), linkList
		
		Esempio tag <gwClassListSettings> completo:
		
		<gwClassListSettings>
			<hideToolbar>true</hideToolbar>
			<hideToolbarByGwClassName>
				<entry gwClassName="gw_class_name_1" hide="true" />
				<entry gwClassName="gw_class_name_2" hide="false" />
			</hideToolbarByGwClassName>
			<hideNewIgnorePermissions>true</hideNewIgnorePermissions>
			<hideNewIgnorePermissionsByGwClassName>
				<entry gwClassName="gw_class_name_1" hide="true" />
				<entry gwClassName="gw_class_name_2" hide="false" />
			</hideNewIgnorePermissionsByGwClassName>
			<hideDeleteIgnorePermissions>true</hideDeleteIgnorePermissions>
			<hideDeleteIgnorePermissionsByGwClassName>
				<entry gwClassName="gw_class_name_1" hide="true" />
				<entry gwClassName="gw_class_name_2" hide="false" />
			</hideDeleteIgnorePermissionsByGwClassName>
			<hideActionsDropDownButtonColumn>true</hideActionsDropDownButtonColumn>
			<hideActionsDropDownButtonColumnByGwClassName>
				<entry gwClassName="gw_class_name_1" hide="true" />
				<entry gwClassName="gw_class_name_2" hide="false" />
			</hideActionsDropDownButtonColumnByGwClassName>
			<hideIndirectSelectionColumn>true</hideIndirectSelectionColumn>
			<hideIndirectSelectionColumnByGwClassName>
				<entry gwClassName="gw_class_name_1" hide="true" />
				<entry gwClassName="gw_class_name_2" hide="false" />
			</hideIndirectSelectionColumnByGwClassName>
			<onRowClickGwActionNameByGwClassName>true</onRowClickGwActionNameByGwClassName>
			<onRowClickGwActionNameByGwClassName>
				<entry gwClassName="gw_class_name_1" gwActionName="gw_action_name" />
				<entry gwClassName="gw_class_name_2" gwActionName="gw_action_name" />
			</onRowClickGwActionNameByGwClassName>
		</gwClassListSettings>
  • issue #201 - webclient: aggiunta possibilita' di inserire icona Home nel componente GwChangeElementsInSession; l'icona e' visualizzata aggiungendo iconName all'oggetto di input params nella funzione gwChangeElementsInSessionStartup. L'icona e' cliccabile e riporta automaticamente alla home page.
  • attachmentsUploadDialog:
    • restyling interfaccia utente (issue #203)
    • aggiunta selezione dei file tramite drag and drop (issue #204)
  • WidgetBase:
    • aggiunto nuovo parametro “maxLengthDB” che rappresenta la lunghezza massima settata nel database (issue #210)
    • in seguito alla issue #210 la validazione del maxLength è stata sostituita con la validazione del maxLengthDB (issue #211)
  • Classificazione: gli attributi variabili vengono salvati nel DB e in MongoDB tenendo conto del loro dataType (issue #234)
  • Shape: migliorata importazione shape con classificazione tenendo conto della gestione degli attributi variabili in base al loro dataType (issue #235)
  • Shape: migliorata esportazione shape e corretta visualizzazione nel file .dbf di attributi di tipo data, intero o decimale (issue #236)
  • Attributi di tipo integer: approssimazione ad intero di numeri decimali con solo zero dopo la virgola (issue #243)

REFACTORS

  • issue #182 - DrawingMapper refactor metodo selectDrawingsByDrawingSetIdAndDrawType(int drawingSetId, int drawingType) che per la progettazione delle tabelle e nell'uso reale potrebbe in linea teorica tornare piu di un valore di tipo Drawing.

BUGFIX

  • #173 Importazione Shape:si verificava un problema sull'importazione di dati di tipo Data
  • Quando viene eseguita un azione di importazione shape se il campo importato era Double veniva generata un eccezione (#172)
  • Problema Esportazione Shape (issue #169)
  • Classificazione:
    • aggiunta la possibilità di utilizzare il menu della classificazione senza la cache degli attributi variabili (issue #171)
    • risolto un problema che impediva l'utilizzo del leafItem classification nel caso in cui non fosse il primo menu dell accordionPaneItem (issue #166)
    • risolto un problema che impediva la visualizzazione dell'immagine della root dell albero della classificazione (issue #166)
    • corretto errore nella query che stabilisce il valore di classificationAttributeCanBeDeleted (issue #175)
    • corretto errore nel defaultValue di un attributo variabile della sottofamiglia (issue #176):
      • la sottofamiglia, se non ha un defaultValue settato per l'attributo variabile, eredita quello del padre.
      • i valori delle checkbox e del defaultValue sono editabili solo dalla famiglia padre per poi essere ereditati dalla sottofamiglia.
  • Problema ambito ACL (issue #165)
  • Filtri dei campi “DATE” in Oracle: corretto malfunzionamento dei filtri a causa dell'utilizzo del formato 'DAY' nella funzione TRUNC, ora corretto con 'DDD' (issue #155)
  • errore schede gwMaps, se si selezionano elementi disomogenei su più di una scheda contemporaneamente (heterogeneousGwClassesList) (issue #161)
  • Widget Active User e Active Group: corretto errore dovuto al mancato null check dell'oggetto sessionObject, che in alcuni processi, come quelli schedulati, può non essere attivo (issue #163)
  • Menu Indice dei Progetti (projectIndexMobilX.jsp) mancata prevenzione cache browser su download resources (issue #164)
  • gwScheduler aggiunto supporto per ambienti cluster (issue #145)
    • il supporto è opzionale e va abilitato previa modifica schema dati, e abilitazione di un flag nel configuration.properties
    • è stato introdotto un meccanismo di lock che si appoggia ai dati nel DB (utilizza il field 'lock_end_time', da ggiungere in tabella 'gw_sched_def')
    • aggiunto nuovo parametro nel configuration.properties (default false): gwscheduler.clusterMode.enabled
    • aggiunto metodo integrityCheck() (@Scheduled, ogni 10 min) dentro il bean gwScheduler, che si preoccupa di mantenere coerenti le informazioni della specifica JVM corrente, in seguito a creazioni/eliminazioni non prevedibili nelle altre JVM coinvolte nel cluster.
  • Problema di recupero path sul widget attachment. Issue #167.
  • Aggiunta un controllo sulla validità dell'estensione del file che si sta caricando, valutando se compatibile con il cod_format_deliverable. Issue #168
  • gwMnemonicCode: corretto bug nella risposta della chiamata emptyMnemonicCodeCache che restituiva sempre success true, anche se presenti errori (issue #170)
  • Modifica del metodo che recupera il nome dal multipart file in fase di caricamento delle viste di modello da Upload Manager. Issue #174.

BUGFIX

  • dataservice:
    • corretta la gestione degli errori rilanciati dai metodi nei groovy e recuperati tramite GwClientException (issue #130)
    • Errore mapper drawing set introdotto con la issue #114 (issue #150)
  • Dizionario: corretto bug nella traduzione delle etichette degli attributi nei filtri e nella descrizione degli attributi nei tooltip (issue #133)
  • Widget Document: corretto bug di regressione nella visualizzazione del widgetDocument nel caso di classe con permessi in sola lettura (issue #143)
  • Cmis: doppi slash nel path (issue #132). Corretto problema dei doppi slash dato dall'uso del metodo checkAttachmentsPath() prima della formattazione del path.
  • Modifica Multipla: errore js openGwClassDetailMultiple(): Uncaught Missing or empty required parameter 'itemId'! (issue #138)
  • Widget linklist: invocazione gwSetReadOnly() / gwSetDisabled() su azione 'dettaglio pronto' a volte fallisce (issue #139)
  • HtmlReport: function openHtmlReport() su GeoExplorer che apriva la report sullo spazio in basso, sotto le mappe. Ora vengono aperte in tab 'Principali' come in GeoExplorer (issue #140)
  • Widget CronExpression: tolto dai log errore non bloccante sul log in caso di configurazione di una cron nulla o stringa vuota (issue #141)
  • cde: aggiunto bottone Salva nella gestione delle schede digitali (issue #144)
  • Widget childlist: button select object in map for attribute external table not visible
  • importCsv: corretto bug di regressione nella creazione del file con i record non importati in caso di errori (issue #148)
  • Widget dbSuggestBox: aggiunta gestione dei caretteri speciali (issue #151)
  • gwActions: corretta gestione degli errori di tipo JSON del server ottenuti come risposta alle chiamate nelle funzioni groovyAction; per questo, è stata aggiunta la nuova funzione gwServerErrorManagement (issue #152)
  • Stampa Scheda:
    • corretto bug di regressione nella visualizzazione dei gruppi attributi e delle liste nelle schede (issue #154)
    • corretta la gestione del formato data nella creazione del report (issue #153)

NEW FEATURES

  • Nuova gestione della memoria riservata alla cache dei metadati (issue #134)
    • sostituite le locali maxEntriesLocalHeap e maxEntriesLocalDisk definite in ogni cache entries con le globali maxBytesLocalHeap e maxBytesLocalDisk.

BUGFIX

  • webclient:
    • rimossi i messaggi fissi “deleteGwClassRecord() - error:” lato utente (issue #67)
    • Widget wsSuggestBoxEdit: risolto un bug nella gestione del parametro “dataToIntersect” nel Widget wsSuggestBoxEdit (issue #67)
    • scheda gwPrefilteredList: ora viene valutato il parametro hideActionsDropDownButtonColumn (anche da impostazione globale GwClassListSettings)
    • dynamicTimeLine: fix errore javascript in console 'modifedItem undefined' quando si usa il parametro validationGwActionName
    • widget date: risolto disallineamento orari in caso di timezone differente fra macchina server e macchine client degli utenti (issue #25)
    • widget childlist: fix popolamento ctrlParamStore grid childList. Adesso sono presenti info anche per alcuni attributi che non erano legati a field sulla tabella del DB, e funzionanao i relativi formatter quando quest campi sono messi in lista (indirectLocalizationWidget)
    • js api selectGwClassRecords() ripristinata recompatibilità prima per function scritte prima dell'aggiunta del parametro 'sort'
    • malfunzionamenti widget dbComboBox, dbSuggestBox, externaTable dovuti a spazi bianche non voluti su alcune proprietà (fieldToShow, fieldToStore)

intervento: riscritti getters delle classi java DBComboBox, DBSuggestBox, ExternalTable

		public String getFieldToStore() {
			return fieldToStore==null?null:fieldToStore.toLowerCase().trim();
		}
		public String getFieldToShow() {
			return fieldToShow==null?null:fieldToShow.toLowerCase().trim();
		}
	* widget LinkList e LinkListNam cambiato comportamento parametro 'inheritClassPermission':
	  se il padre è a readonly, anche tramite le sue dacl, nel figlio vengono
	  disabilitati insert/modifica/cancellazione
	  Ora anche aprendo il record dalla linklist, se il padre è in sola
	  lettura, il dettaglio viene aperto in lettura
	* aggiunti metodi selectClassRecord*WktGeom() in gwClassListService
		usati solo nei giri in cui i record tornato lato client, e dove servono geometry in formato di testo WKT
		i corrispettivi metodi continueranno a fornire nei groovy oggetti jts Geometry
	* #issue65 risolto errore che causava, negli hook point dei trigger di Classe, l'arrico di errati valori per i campi di tipo Date e Geometry nelle mappe 
	  'valuesMap' e 'oldValuesMap'
	  duplicato metodo
			listService.executeListQuery()
			di suo esclusivo delle liste, con postprocessing specifico
			
				buildListPostProcessing()
			
			duplicato con
				listService.executeListQueryEventTrigger()
			
			che usa un diverso postprocessing
			
				buildListPostProcessingEventTrigger()
			
			In ListService ora
			public Object valuesMapHandler()
			
			riconverte i Valori Data anche a partire dal formato con le componenti
			separate dal carattere  "|"
	* scheda gwCalendar: allineate le label fra UI filtro e lista: 'Titolo' in lista diviene 'Sommario', come in UI filtri
	* #issue80 workflow corretto errore bloccante ad interfaccia schede processi in caso di presenza di widget Date
	  Risolto adeguando il formato del valore data in ingresso alla notazione con '|'
	* #issue83 workflow internazionalizzazione labels schede processi
	  riaggiunta funzionalità che si era persa nel passaggio da Bitbucket a GIT dopo una versione 4.3.1 customizzata per demo
	* Dizionario: corretto un bug di regressione nella funzionalità di traduzione delle etichette nelle report (issue #82)
	* creazione id univoci per dbwindowlist ed externaltable (issue #85)
	* Corretta errata gestione di attributi di tipo LinkListNam durante la produzione della report di classe (Stampa scheda) (issue #88) 
	* widget CmisDocument (issue #89): risolto bug nel caricamento di un secondo documento dopo il salvataggio di un primo 
			documento con estensione sbagliata
	
* cde:
	* in postresql il widget dei contenuti non recuperava correttamente le classi associategli a causa di parte di nome in maiuscolo (issue #68)
	* fix query dei mapper con ancora nome tabella 'drawing' e non 'gwd_drawing' e query su deliverable (issue #74, #84)
	* mancata traduzione di due label nel widget dei contenuti (issue #87)

* threeDVisualizer:
	* BIMDATA - Prima della cancellazione di un t/s/l controllare che non esista una struttura di modello associatagli (nelle versioni precedenti gestire il controllo tramite grovy) (issue #69)
	* BIMDATA - Fix della renderizzazione dei poligoni openLayers sul visualizzatore 2D quando vengono scaricati da Mongo.
	* BIMDATA - Aggiunto il numero dei record presenti in una classe al model and view del mongoInfo2D sul visualizzatore 2D. ( issue #90)
* umplugin:
	* Fix gestione errori sulle procedure di caricamento da clientCad. Sono state modificate le risposte dei controller, ora restituiscono tutte dei Result<PublishReport>
	* Create chiamate propedeutiche al comando AimBulkPublish del clientCad:- selectSystemByCode (BimDataService),
																			- selectBimLevelByCodLevelAndCodProject (BimDataService), 
																			- selectBimProjectByCodBuildingAndDescription (BimDataService), 
																			- selectBimModelStructureByStructureCodeAndProject (BimDataService),
																			- insertAimContent (BimDataController)
																			- selectDrawingTypeByName (BimDataController) 
* SICUREZZA - WAPT
	* risolto il problema [RP20_666_15] UNMANAGED ERRORS (issue #76) riguardante la gestione degli errori. 
		È stato introdotto un nuovo parametro nel configuration.properties (display_detailed_error_messages) che se impostato a false nasconde i messaggi di errore delle eccezioni, 
		restituendo un messaggio di errore generico all'utente. Di default è impostato a true e permette quindi la visualizzazione del messaggio di errore lanciato dalle eccezioni.
		Sono state introdotte due nuovi tipi di eccezioni: GwClientException e GwGroovyException, la prima permette di gestire i messaggi di errore lato client, 
		la seconda gestisce le eccezioni lanciate dai groovy.
		È stata inoltre introdotta la validazione del tipo di input anche lato server, in particolare sono validate le regex per i widget di tipo TextBox, il minimo e il massimo
		per la NumberBox e la lunghezza massima per le stringhe (WidgetBase) 
		Aggiunta nuova gestione degli errori nella maschera di login e recupero password
	* risolta vulnerabilità [RP20_666_20] MISSING INPUT VALIDATION (issue #77): introdotto controllo per la validazione dell'utente in sessione e del gruppo utenti attivo
	* risolta vulnerabilità sul caricamento di documenti dannosi [RP20_666_02] MULTIPLE ARBITRARY FILE UPLOAD LEADS TO STORED CROSS-SITE SCRIPTING (issue #75).
		È stato introdotto un nuovo parametro sul configuration.properties (document.blacklist.extension) contenente la lista delle estensioni dei documenti considerati dannosi separate da virgola
		es:
		 document.blacklist.extension=exe,dll,bat,ocx,so
	* risolta vulnerabilità XSS [RP20_666_01] (issue #79): aggiunti staticFilters e filters al controllo dei parametri nelle chiamate http, di conseguenza aggiunto controllo
	  sull'operatore nella costruzione delle query. Aggiunto metodo nella classe gwUtils per la convalida dei dati contro gli attacchi di tipo XSS.
		

## NEW FEATURES

  • widget finalBalanceJobsWidget: implementate js api gwGetReadonly(), gwSetReadonly(), gwGetDisabled(), gwSetDisabled()
  • widget date: aggiunti alias per il value 'now' 'new Date()', che possono essere usati per impostare come ora quella corrente

(sia tramite il parametro initialsValuesMap sulle function openGwClassDetailX(), che dalle function setFormValues()

  , esposto dal detailContainer, e function gwSetValue(), esposto dal gwWidget)		
* dynamicTimeLine: nuove funzionalità
	aggiunto button in toolbar 'Oggi' (trasla il centro della timeline sull'istante corrente) e button per visualizzazioni rapide a
	determinati preset temporali: anno trimestre, mese settimana, giorno. (calcolano zoom e centratura ad hok)
	
	modificato comportamento cursore mouse quando si usa la rotellina
	centrale per fare scroll e la timeline fa zoomin/zoomout. Ora il cursore
	si modifica in concomitanza dell'azione utente. Prima l'utente si poteva
	confondere perchè la stessa gesture sull'area di gruppi/sottogruppi 
	esegue invece scrollup/scroll/down
	
	parametri aggiunti:
	
	 solo dentro paramteri (baseGwClass, mainGwClass, groupGwClass, nestedGroupGwClass)
		-order: String o function, optional. Quando String è il name
		dell’attributo della *gwClass che per cui va eseguito l'ordinamento. Si
		può specificare una modalità di ordinamento ascendente o discendente,
		anteponendo il prefisso '+' [ASC] od il prefisso '-' [DESC]. Il default
		per l'ordinamento è '+'.
		-applyOrderInStackedItems: Boolean, default false. Questo verrà valutato
		solo in presenza di order non nullo, ed influirà sull’ordinamento dello
		stack degli item solo quando la gwClass di competenza si trovi sul piano
		della timeline (in quanto temporaneamente maiGwClass od, in assenza,
		baseGwClass)
	 esterni:
		-showContentOverflow: Boolean, optional, default false. Quando a true,
		evita che il testo dentro gli item nel piano della timeline venga
		troncato nel caso oltrepassi il confine dimensionale dell'item (che
		deriva direttamente dai parametri temporali sottostanti in caso di start
		ed end);
		-swapAllowed: Boolean, optional, default true. Se posto a false il
		pulsante di swap viene nascosto
		-showMoveToNowButton, Boolean, optional, default false. When true a
		specific button that move visualization to now appears. Evaluated only
		if moveable is true;
		-autoExpandFirstGroup, Boolean, optional, default true. In presenza di
		gruppi con sottogruppi, quando a true fa si che il primo nodo dei gruppi
		si espanda in automatico
* widget linkList: nelle gwAction in toolbar ora vengono passati come argomenti anche
  i parametri: 
  	/*String*/ detailContainerId
  	/*Object*/ detailContainer
* webclientTemplate: ora sono aggiungibili anche i plugin portalApi, portalObjects
* widget image aggiunte html class tipizzanti ai widget in lista
	gwWidgetImage				sul widget
	gwWidgetImageImgDomNode		sul tag img del widget
  

## NEW COMPONENTS

## DEPRECATED

  • java
    • Modes (com.geowebframework.transfer.model.projects.Modes) the xml configuration should now alway have a Mode pojo as radix

Modes is still supported for backward compatibility reasons

  • MapsService: rimosso service webadmin inutilizzato
  • GwRegistry @Deprecated methods
    • addArrayListToTabList()
    • addElementToPluginCommandList()
    • setPluginCommandList()
    • getPluginCommandList()
    • addArrayListToButtonGroupComponentsHM()
    • setButtonGroupComponentsHM()
    • addArrayListToCommandsNameHM()
    • setCommandsNameHM()

In generale sono stati caratterizzati (con 'threeD', 'ThreeD') i nomi per i metodi specifi del 3D

	 Ne sono stati creati altri speculari, ma specifi per il 2D (con 'twoD', 'TwoD')
	* SceneService @Deprecated methods
		* readSceneModeXML() in favor of buildModeFromXmlSceneMode() and derived
	* MapSettings.class
	  variabili deprecate
			private Boolean showBaseMapChange;
			private Boolean showLayersManagement;
			private Boolean showThematisms;
			private Boolean showMapEditing;
	  configurazione spostata su xml gwMap.
	  (non rimossi ancora per compatibilità vecchi xml, e non essendoci su xStream la configurazione 'ignoreUnkonTags')
	  NON SONO PIU VALUATI in layout2D
	  Ancora valutati in bimData2D, che però sarà soggetto ad una imminente revisione		  
	* MapLayoutController.class
	* Tab.class, String icon
	  @Deprectaed because icon is retrieved exclusively from 
			path='/icons/images/16_'+icon 		for top toolbar icon
			path='/icons/images/32_'+icon		for TabContainer tab icon
	  and not from static contents (WEB/path/to/icon_image.png). 
	  And is actually not configurable from configurator user, but just from the plugin writer,
	  that actually decides which icons are available
	  @Deprectaed in favor of icon16 and icon32, both retrieved from static contents
	  and fully configurable.
	  if present, icon is still supported to works as originally intended,
	  but icon16, icon32 have the priority in evaluation hierarchy
	

## REFACTORS

  • su java/jsp/js
    • PointCloudCommand CloseTabs ⇒ ToggleTabs3D
    • commandsNameHM ⇒ commandNameMap
    • buttonGroupComponentsHM ⇒ mainToolbarButtonsMap
  • java
  • BaseMapChangeController ⇒ PluginBaseMapsController
  • LayersMangement ⇒ PluginLayersController
  • GeometryEditController ⇒ PluginEditController
  • LayoutChangeController ⇒ PluginLayoutChangeController
  • GwEnterpriseInizializerService ⇒ GwEnterpriseInitializerService
  • CdeInizializerService ⇒ CdeInitializerService
  • GwMnemonicCodeInizializerService ⇒ GwMnemonicCodeInitializerService
  • LabelValuesWidgetInizializerService ⇒ LabelValuesWidgetInitializerService
  • ThreeDVisualizerInizializerService ⇒ ThreeDVisualizerInitializerService
  • GoogleStreetViewInizializerService ⇒ GoogleStreetViewInitializerService
  • PrintMapLegendInizializerService ⇒ PrintMapLegendInitializerService
  • WorkflowInizializerService ⇒ WorkflowInitializerService

BUGFIX

  • webclient:
    • rimossi i messaggi fissi “deleteGwClassRecord() - error:” lato utente (issue #67)
    • Widget wsSuggestBoxEdit: risolto un bug nella gestione del parametro “dataToIntersect” nel Widget wsSuggestBoxEdit (issue #67)
    • scheda gwPrefilteredList: ora viene valutato il parametro hideActionsDropDownButtonColumn (anche da impostazione globale GwClassListSettings)
    • dynamicTimeLine: fix errore javascript in console 'modifedItem undefined' quando si usa il parametro validationGwActionName
    • widget date: risolto disallineamento orari in caso di timezone differente fra macchina server e macchine client degli utenti (issue #25)
    • widget childlist: fix popolamento ctrlParamStore grid childList. Adesso sono presenti info anche per alcuni attributi che non erano legati a field sulla tabella del DB, e funzionanao i relativi formatter quando quest campi sono messi in lista (indirectLocalizationWidget)
    • js api selectGwClassRecords() ripristinata recompatibilità prima per function scritte prima dell'aggiunta del parametro 'sort'
    • malfunzionamenti widget dbComboBox, dbSuggestBox, externaTable dovuti a spazi bianche non voluti su alcune proprietà (fieldToShow, fieldToStore)
      • riscritti getters delle classi java DBComboBox, DBSuggestBox, ExternalTable (return …. .toLowerCase())
    • widget LinkList e LinkListNam cambiato comportamento parametro 'inheritClassPermission': se il padre è a readonly, anche tramite le sue dacl, nel figlio vengono disabilitati insert/modifica/cancellazione. Ora anche aprendo il record dalla linklist, se il padre è in sola lettura, il dettaglio viene aperto in lettura
    • aggiunti metodi selectClassRecord*WktGeom() in gwClassListService usati solo nei giri in cui i record tornato lato client, e dove servono geometry in formato di testo WKT i corrispettivi metodi continueranno a fornire nei groovy oggetti jts Geometry
    • #issue65 risolto errore che causava, negli hook point dei trigger di Classe, l'arrivo di errati valori per i campi di tipo Date e Geometry nelle mappe 'valuesMap' e 'oldValuesMap' (riconverte i Valori Data anche a partire dal formato con le componenti separate dal carattere “|”)
    • scheda gwCalendar: allineate le label fra UI filtro e lista: 'Titolo' in lista diviene 'Sommario', come in UI filtri
    • #issue80 workflow corretto errore bloccante ad interfaccia schede processi in caso di presenza di widget Date Risolto adeguando il formato del valore data in ingresso alla notazione con '|'
    • #issue83 workflow internazionalizzazione labels schede processi. Riaggiunta funzionalità che si era persa nel passaggio da Bitbucket a GIT dopo una versione 4.3.1 customizzata per demo
    • Dizionario: corretto un bug di regressione nella funzionalità di traduzione delle etichette nelle report (issue #82)
    • creazione id univoci per dbwindowlist ed externaltable (issue #85)
    • Corretta errata gestione di attributi di tipo LinkListNam durante la produzione della report di classe (Stampa scheda) (issue #88)
    • widget CmisDocument (issue #89): risolto bug nel caricamento di un secondo documento dopo il salvataggio di un primo documento con estensione sbagliata
  • cde:
    • in postresql il widget dei contenuti non recuperava correttamente le classi associategli a causa di parte di nome in maiuscolo (issue #68)
    • fix query dei mapper con ancora nome tabella 'drawing' e non 'gwd_drawing' e query su deliverable (issue #74, #84)
    • mancata traduzione di due label nel widget dei contenuti (issue #87)
  • threeDVisualizer:
    • BIMDATA - Prima della cancellazione di un t/s/l controllare che non esista una struttura di modello associatagli (nelle versioni precedenti gestire il controllo tramite grovy) (issue #69)
    • BIMDATA - Fix della renderizzazione dei poligoni openLayers sul visualizzatore 2D quando vengono scaricati da Mongo.
    • BIMDATA - Aggiunto il numero dei record presenti in una classe al model and view del mongoInfo2D sul visualizzatore 2D. ( issue #90)
  • umplugin:
    • Fix gestione errori sulle procedure di caricamento da clientCad. Sono state modificate le risposte dei controller, ora restituiscono tutte dei Result<PublishReport>
    • Create chiamate propedeutiche al comando AimBulkPublish del clientCad:- selectSystemByCode (BimDataService),
      1. selectBimLevelByCodLevelAndCodProject (BimDataService),
      2. selectBimProjectByCodBuildingAndDescription (BimDataService),
      3. selectBimModelStructureByStructureCodeAndProject (BimDataService),
      4. insertAimContent (BimDataController)
      5. selectDrawingTypeByName (BimDataController)
  • SICUREZZA - WAPT:
    • risolto il problema [RP20_666_15] UNMANAGED ERRORS (issue #76) riguardante la gestione degli errori.
      • È stato introdotto un nuovo parametro nel configuration.properties (display_detailed_error_messages) che se impostato a false nasconde i messaggi di errore delle eccezioni, restituendo un messaggio di errore generico all'utente. Di default è impostato a true e permette quindi la visualizzazione del messaggio di errore lanciato dalle eccezioni.
      • Sono state introdotte due nuovi tipi di eccezioni: GwClientException e GwGroovyException, la prima permette di gestire i messaggi di errore lato client, la seconda gestisce le eccezioni lanciate dai groovy.
      • È stata inoltre introdotta la validazione del tipo di input anche lato server, in particolare sono validate le regex per i widget di tipo TextBox, il minimo e il massimo per la NumberBox e la lunghezza massima per le stringhe (WidgetBase)
      • Aggiunta nuova gestione degli errori nella maschera di login e recupero password
    • risolta vulnerabilità [RP20_666_20] MISSING INPUT VALIDATION (issue #77): introdotto controllo per la validazione dell'utente in sessione e del gruppo utenti attivo
    • risolta vulnerabilità sul caricamento di documenti dannosi [RP20_666_02] MULTIPLE ARBITRARY FILE UPLOAD LEADS TO STORED CROSS-SITE SCRIPTING (issue #75):
      • È stato introdotto un nuovo parametro sul configuration.properties (document.blacklist.extension) contenente la lista delle estensioni dei documenti considerati dannosi separate da virgola. es: document.blacklist.extension=exe,dll,bat,ocx,so
    • risolta vulnerabilità XSS [RP20_666_01] (issue #79):
      • aggiunti staticFilters e filters al controllo dei parametri nelle chiamate http, di conseguenza aggiunto controllo sull'operatore nella costruzione delle query.
      • Aggiunto metodo nella classe gwUtils per la convalida dei dati contro gli attacchi di tipo XSS.

NEW FEATURES

  • widget finalBalanceJobsWidget: implementate js api gwGetReadonly(), gwSetReadonly(), gwGetDisabled(), gwSetDisabled()
  • widget date: aggiunti alias per il value 'now' 'new Date()', che possono essere usati per impostare come ora quella corrente (sia tramite il parametro initialsValuesMap sulle function openGwClassDetailX(), che dalle function setFormValues(), esposto dal detailContainer, e function gwSetValue(), esposto dal gwWidget)
  • dynamicTimeLine: nuove funzionalità

aggiunto button in toolbar 'Oggi' (trasla il centro della timeline sull'istante corrente) e button per visualizzazioni rapide a

	determinati preset temporali: anno trimestre, mese settimana, giorno. (calcolano zoom e centratura ad hok)
	
	modificato comportamento cursore mouse quando si usa la rotellina
	centrale per fare scroll e la timeline fa zoomin/zoomout. Ora il cursore
	si modifica in concomitanza dell'azione utente. Prima l'utente si poteva
	confondere perchè la stessa gesture sull'area di gruppi/sottogruppi 
	esegue invece scrollup/scroll/down
	
	parametri aggiunti:
	
	 solo dentro paramteri (baseGwClass, mainGwClass, groupGwClass, nestedGroupGwClass)
		-order: String o function, optional. Quando String è il name
		dell’attributo della *gwClass che per cui va eseguito l'ordinamento. Si
		può specificare una modalità di ordinamento ascendente o discendente,
		anteponendo il prefisso '+' [ASC] od il prefisso '-' [DESC]. Il default
		per l'ordinamento è '+'.
		-applyOrderInStackedItems: Boolean, default false. Questo verrà valutato
		solo in presenza di order non nullo, ed influirà sull’ordinamento dello
		stack degli item solo quando la gwClass di competenza si trovi sul piano
		della timeline (in quanto temporaneamente maiGwClass od, in assenza,
		baseGwClass)
	 esterni:
		-showContentOverflow: Boolean, optional, default false. Quando a true,
		evita che il testo dentro gli item nel piano della timeline venga
		troncato nel caso oltrepassi il confine dimensionale dell'item (che
		deriva direttamente dai parametri temporali sottostanti in caso di start
		ed end);
		-swapAllowed: Boolean, optional, default true. Se posto a false il
		pulsante di swap viene nascosto
		-showMoveToNowButton, Boolean, optional, default false. When true a
		specific button that move visualization to now appears. Evaluated only
		if moveable is true;
		-autoExpandFirstGroup, Boolean, optional, default true. In presenza di
		gruppi con sottogruppi, quando a true fa si che il primo nodo dei gruppi
		si espanda in automatico
* widget linkList: nelle gwAction in toolbar ora vengono passati come argomenti anche
  i parametri: 
  	/*String*/ detailContainerId
  	/*Object*/ detailContainer
* webclientTemplate: ora sono aggiungibili anche i plugin portalApi, portalObjects
* widget image aggiunte html class tipizzanti ai widget in lista
	gwWidgetImage				sul widget
	gwWidgetImageImgDomNode		sul tag img del widget
  

NEW COMPONENTS

DEPRECATED

  • java
    • Modes (com.geowebframework.transfer.model.projects.Modes) the xml configuration should now alway have a Mode pojo as radix

Modes is still supported for backward compatibility reasons

  • MapsService: rimosso service webadmin inutilizzato
  • GwRegistry @Deprecated methods
    • addArrayListToTabList()
    • addElementToPluginCommandList()
    • setPluginCommandList()
    • getPluginCommandList()
    • addArrayListToButtonGroupComponentsHM()
    • setButtonGroupComponentsHM()
    • addArrayListToCommandsNameHM()
    • setCommandsNameHM()

In generale sono stati caratterizzati (con 'threeD', 'ThreeD') i nomi per i metodi specifi del 3D

	 Ne sono stati creati altri speculari, ma specifi per il 2D (con 'twoD', 'TwoD')
	* SceneService @Deprecated methods
		* readSceneModeXML() in favor of buildModeFromXmlSceneMode() and derived
	* MapSettings.class
	  variabili deprecate
			private Boolean showBaseMapChange;
			private Boolean showLayersManagement;
			private Boolean showThematisms;
			private Boolean showMapEditing;
	  configurazione spostata su xml gwMap.
	  (non rimossi ancora per compatibilità vecchi xml, e non essendoci su xStream la configurazione 'ignoreUnkonTags')
	  NON SONO PIU VALUATI in layout2D
	  Ancora valutati in bimData2D, che però sarà soggetto ad una imminente revisione		  
	* MapLayoutController.class
	* Tab.class, String icon
	  @Deprectaed because icon is retrieved exclusively from 
			path='/icons/images/16_'+icon 		for top toolbar icon
			path='/icons/images/32_'+icon		for TabContainer tab icon
	  and not from static contents (WEB/path/to/icon_image.png). 
	  And is actually not configurable from configurator user, but just from the plugin writer,
	  that actually decides which icons are available
	  @Deprectaed in favor of icon16 and icon32, both retrieved from static contents
	  and fully configurable.
	  if present, icon is still supported to works as originally intended,
	  but icon16, icon32 have the priority in evaluation hierarchy
	

REFACTORS

  • su java/jsp/js
    • PointCloudCommand CloseTabs ⇒ ToggleTabs3D
    • commandsNameHM ⇒ commandNameMap
    • buttonGroupComponentsHM ⇒ mainToolbarButtonsMap
  • java
  • BaseMapChangeController ⇒ PluginBaseMapsController
  • LayersMangement ⇒ PluginLayersController
  • GeometryEditController ⇒ PluginEditController
  • LayoutChangeController ⇒ PluginLayoutChangeController
  • GwEnterpriseInizializerService ⇒ GwEnterpriseInitializerService
  • CdeInizializerService ⇒ CdeInitializerService
  • GwMnemonicCodeInizializerService ⇒ GwMnemonicCodeInitializerService
  • LabelValuesWidgetInizializerService ⇒ LabelValuesWidgetInitializerService
  • ThreeDVisualizerInizializerService ⇒ ThreeDVisualizerInitializerService
  • GoogleStreetViewInizializerService ⇒ GoogleStreetViewInitializerService
  • PrintMapLegendInizializerService ⇒ PrintMapLegendInitializerService
  • WorkflowInizializerService ⇒ WorkflowInitializerService

BUGFIX

  • Webclient:
    • aggiunta proprietà “enableCmisCache” nel configuration properties per ovviare all'eccezione CmisObjectNotFoundException (issue #55)
    • risolto il problema che mostrava il valueToShow della dbWindowList in visualize con escape (issue #34)
    • risolto il problema del download delle report parametriche (issue #36)
    • modificati i messaggi di errore dell'import CSV e del caricamento delle immagini (issue #38)
    • Reset password - gestione messaggio di errore in caso di password già usata in precedenza (issue #39)
    • Gestione queryClausole del widget DBSuggestBox (parte 1): ora la queryClausole è gestita per parametri fissi, parametri in sessione e ambiti (ma nella queryClausole non sono ancora gestiti dinamicamente i parametri del record) (issue #37)
    • risolto il problema della childlist che non teneva conto della presenza di attributi con columnname nullo
    • risolte delle problematiche di importazione generiche
    • risolto problema filtro semplice di tipo “date” di una lista aperta da menu gerarchico (missing dojo/date/locale in gwClassFilter.js) (issue #60)
    • risolto problema della Esportazione excel di attributi con Data Type “Integer” con Tabella esterna (issue #61)
    • widget LinkList e LinkListNam cambiato comportamento parametro 'inheritClassPermission': se il padre è a readonly, anche tramite le sue dacl, nel figlio vengono disabilitati insert/modifica/cancellazione. Ora anche aprendo il record dalla linklist, se il padre è in sola lettura, il dettaglio viene aperto in lettura.
    • scheda mappa 2D, fix funzionalità misurazione su cartografia. Utilizzo delle correzioni correlate a isGeodesic() true anche quando coordinateSystem vale 'EPSG:3857' o '3857'
    • aggiunti metodi selectClassRecord*WktGeom() in gwClassListService usati solo nei giri in cui i record tornato lato client, e dove servono geometry in formato di testo WKT i corrispettivi metodi continueranno a fornire nei groovy oggetti jts Geometry
    • risolto errore che causava, negli hook point dei trigger di Classe, l'arrivo di errati valori per i campi di tipo Date e Geometry nelle mappe 'valuesMap' e 'oldValuesMap'(issue #65): duplicato metodolistService.executeListQuery() di suo esclusivo delle liste, con postprocessing specifico, buildListPostProcessing() duplicato con listService.executeListQueryEventTrigger() che usa un diverso postprocessing buildListPostProcessingEventTrigger(). In ListService ora public Object valuesMapHandler() riconverte i Valori Data anche a partire dal formato con le componenti separate dal carattere “|”
    • scheda gwCalendar: allineate le label fra UI filtro e lista: 'Titolo' in lista diviene 'Sommario', come in UI filtri
  • SICUREZZA - WAPT:
    • risolto il problema Insecure Password Reset Token [RP20_666_13] (issue #46)
    • risolto il problema MULTIPLE HORIZONTAL AUTHORIZATION BYPASS [RP20_666_07] (issue #54)
    • (webclient) risolta vulnerabilità relativa alla valutazione lato server della regex per le nuove password degli utenti [RP20_666_19] (issue #48)
    • (web.xml) risolta vulnerabilità relativa all'insicurezza cookie di sessione [RP20_666_14]: aggiunto tag cookie-config (issue #50)
    • (dataservice) risolta vulnerabilità CSV Formula Injection [RP20_666_17]: modificata la classe RHCallbackImpl (issue #49)
    • (web.xml) risolta vulnerabilità Information disclosure of the infrastructure [RP20_666_27] (issue #45)
    • (spring-security.xml) risolta vulnerabilità trasmissione identificativo di sessione [RP20_666_22]: aggiunto disable-url-rewriting (issue #43)
    • (spring-security.xml) risolta vulnerabilità clickjacking [RP20_666_26]: aggiunte impostazioni per i frame in tutte le risposte http (issue #44)
    • (web.xml e webclient) risolta vulnerabilità XSS [RP20_666_09]: aggiunto filtro per il controllo dei parametri nelle chiamate http - esclusi i parametri staticFilters e filters (issue #42)
  • ThreeDVisualizer:
    • risolto errore nome funzione da richiamare per fare lo zoom (issue #35)
    • risolto errore apertura tab oggetti relazionati a oggetti 3D (errore introdotto con restyling) (issue #40)
    • la funzione loadSolitFromDB del pointCloudWidget: non gestiva correttamente le nuvole di punti (issue #58)
    • risolto errore funzione associa funzioni tecniche ad entità gestionali (tenant_code e codice univico entità gestionale)(issue #59)
    • modifica importazione oggetti da bim (tenant_code e campi codice con tenant_code da popolare)(issue #59)
    • risolto errore apertura userdata ifc, introdotto con la nuova visualizzazione del tab (issue #62)
  • Cde:
    • file di localizzazione modello federato non corretto, errore introdotto nella 4.4 (issue #63)
    • modifica nella creazione del modello federato dalla console del cde per poter utilizzare groovy per la configurazione della scena 3D (issue #66)


NEW FEATURES

  • ThreeDVisualizer:
    • rilasciate le azioni di importazione di entità da modello BIM. Tali Azioni sono sviluppate sul modello dati del prodotto Facility (issue #41)
    • trasmissione dati tra mongodb e altri db di GW.servizi per copiare su file i dati dei modelli ifc presenti sulle collezioni mongodb e per salvare su mongodb dati di ifc e pts (issue #56)
    • nel windget dbcomboimage ora viene passato l oldvalue come in altri widget
  • umplugin:
    • servizi per caricare le nuvole di punti su bimdata (issue #57)
  • webclient:
    • widget image aggiunte html class tipizzanti ai widget in lista gwWidgetImage sul widget, gwWidgetImageImgDomNode sul tag img del widget


NEW COMPONENTS


DEPRECATED


REFACTORS

BUGFIX

  • ThreeDVisualizer:
    • corretta visualizzazione layer del calcolo di coordinate su scena 3D (issue #10)
    • gestione BCF (issue #17)
  • umplugin:
    • gestione tabelle collegate a system type sui bim data (issue #12)
    • recupero dei soli progetti BIM associati ad un gwd_building esistente (issue #11)
    • gestione cancellazione t/s/l (issue #22)
  • dataservice:
    • import csv special characters: Risolto il problema della lettura delle lettere accentate e dei caratteri speciali nell'import csv. (issue #20)
  • widget linklist: con query clausole e ordinamento
    • fix per “Perdita filtro in LINKLIST” in caso di query clausole e cambio ordinamento da interfaccia (issue #24)
  • widget date: risolto disallineamento orari in caso di timezone differente fra macchina server e macchine client degli utenti (issue #25)
  • export metadati: parametro hidden nei gruppi attributi non esportato
    • corretto comportamento per cui in alcune casistiche non veniva esportato hidden (nel caso true) per le coppie attributo/gruppo attributo (issue #26)
  • metadataservice:
    • corretto bug di regressione nel mapper Oracle (OrclPermissionMapper) (per la sequence deve essere utilizzato SELECT SEQ_GWM.nextval from dual) (issue #28)
  • widget dbWindowList: risolto un problema nella gestione degli eventHandler. In alcuni casi gli eventi (eventHandler) non venivano triggerati (issue #32)
  • geoexplorer e filtri: corretto un problema con la funzionalità di filtro “semplice” nelle linklistnam e altri widget in geowebexplorer. (issue #33)
  • js api selectGwClassRecords(): ripristinata recompatibilità prima per function scritte prima dell'aggiunta del parametro 'sort'
  • webadmin:
    • DBWindowListEditor: corretto comportamento per il quale non venivano correttamente visualizzati fieldToShow e fieldToStore una volta salvati (issue #19)
    • DBWindowListEditor e DWComboBoxEditor: corretto errore di validazione della form se la modalità di inserimento libero era attiva (issue #19)
    • tab creazione scene 3D: i tab del DND degli scenelayer non venivano visualizzati correttamente (issue #16)


NEW FEATURES

  • webclient:
    • logout.disabled: configurazione per nascondere il link di logout dalle interfacce. Aggiunto il parametro logout.disabled ai parametri del configuration.properties. (issue #27)
    • changePassword.disabled: configurazione per nascondere il link di cambio password dalle interfacce. Aggiunto il parametro changePassword.disabled ai parametri del configuration.properties. (issue #29)
    • Gestione utenti con email condivisa: (richiede modifica ai metadati) Aggiunta la possibilità di avere più di un utente con la stessa email. La funzione “password dimenticata”, nel caso di email condivisa, richiede oltre all'email, l'inserimento dell'username per il recupero della password. Tuttavia, per funzionare, richiede una modifica ai metadati non ancora presente in questa versione del framework (richiede di togliere il vincolo unique del campo email della tabella gwm_users) (issue #30)
    • GwMailService: rimossa obbligatorietà username per la connessione al server di posta elettronica (issue #31)
  • ThreeDVisualizer:
    • indirectLocalizationWidget per il BIM DATA 2D (issue #13)
    • restyling Bim Explorer: (issue #15)
      • bottone delle modalità non presente sulla toolbar se modalità unica.
      • toolbar blu geoweb
      • recupero icona dei tab da configurazione così da distinguere tab di ugual tipo
      • comando di apertura/chiusura tab laterale
      • comando per mettere in primo piano il tab corrispondente
    • Bim Explorer: (issue #18)
      • spostato il tab proprietà oggetto recuperate da MongoDB,
      • oggetti relazionati con ifc recuperati da tabella di confine tra sql e MongoDB e non più da MongoDB
      • comandi di selezione sempre abilitati (issue #21)
    • api js per richiamare lo zoom indiretto da azioni js: (issue #23)
  var params = {
     projectName:project_name,
     value: ${codiceUnivocoRecord},
     codeColumnRelationTableName3D: 'cod_obj',  
     relationTableName3D: 'gwd_r_ifc_sql',
     codeColumnName3D: ${colonnaCodiceClasseGW},
     defaultGwmScene: ${scena3D},
     defaultGwmMap: ${mappa2D}
   };
   indirectLocalizationZoom(params);
  • umplugin:
    • Aggiunti parametri (non obbligatori) al metodo BimData3DCheckIn, se da uploadmanager (versione 23f3d7a o sup) vengono passati questi paramentri allora gli oggetti del file ifc possono essere splittati in sottocategorie più leggere in fase di visualizzazione


NEW COMPONENTS


DEPRECATED

  • ThreeDVisualizer:
    • gestione dell'attributo “GeowebGroup” proveniente da file ifc importati con versioni uploadmanager per 4.4.3 come deprecato (issue #14)
  • umplugin:
    • gestione dell'attributo “GeowebGroup” nell'importazione di dati da MongoDB a sql (issue #14)


REFACTORS


BUGFIX

  • umplugin:
    • gestione asincrona del caricamento dei file ifc
    • passaggio a client Desktop della descrizione dei gruppi utenti disponibili
    • BIM DATA: passaggio a client Desktop dei permessi delle classi riferite a team, system e level per la loro gestione in fase di creazione di una struttura di modello.
  • ImgPathGallery:
    • fix per visualizzazione tasto infometadata se readonly,
    • gestione nullpointerexception su lettura metadati img,
    • bug creato nella 4.4.3 sul caricamento di immagini
  • ThreeDVisualizer:
    • bimDataSwitchMenu:
      • gestione session project proveniente da azione gwChangeElementsInSessionStartup
      • correzione errore visualizzazione (errore se più progetti con stesso level order)
      • BCF - validazione form nella creazione di un'annotazione
  • WmsGetFeatureInfoCommand gestione null del parametro 'bbox' che, sarebbe obbligatorio da specifiche WMS, ma che da alcuni servizi WMS non sono aderenti a apecifiche.
  • BaseMap fix errore parse delle configurazioni in 'options', che non faceva visulizzare la scheda Gestione Layer nelle mappe, in presenza di anche solo un baseLayer con configurazione.
  • workflow fix js api openAllGwTaskDetailByProcessInstanceId() resolved error: openingDetailMode is not defined at callback
  • dynamicTimeLine:
    • fix mancata visualizzazione nuovi items di competenza di range temporali diversi da quello di partenza appartenenti a gruppi collapsed al momento del pan orizzontale.
    • modificato comportamento cursore mouse quando si usa la rotellina centrale per fare scroll e la timeline fa zoomin/zoomout. Ora il cursore si modifica in concomitanza dell'azione utente. Prima l'utente si poteva confondere perchè la stessa gesture sull'area di gruppi/sottogruppi esegue invece scrollup/scroll/down.


NEW FEATURES

  • ThreeDVisualizer:
    • bimDataSwitchMenu: nuovo tipo di visualizzaione data dai soli file di modello caricati
  • umplugin:
    • registrazione del service MongoDBService così da essere richiamato da groovy


NEW COMPONENTS


DEPRECATED

  • umplugin:
    •  public Result<HashMap<String, Object>> retrieveIfcModelStructureList(
      		@RequestParam(value = "userGroup", required=true) String userGroup,
      		@RequestParam(value = "projectCode", required=true) String projectCode,
      		@RequestParam(value = "modelType", required=true) String modelType,
      		Locale locale) 
    • public Result<ArrayList<String>> getGroups(Locale locale)


REFACTORS

  • umplugin:
    • deleteAllMongoCollections, dropCollection → deleteIfcDocumentsByPkBimModel (metodo cancellazione documenti MongoDB specifici di file ifc)

description Compatibile a partire dalla versione 4.6.0 date 2023/05/04

BUGFIX

* Aggiornato il file config

  • Modificata la form di scelta degli immobili/progetti. E' stato aggiunto anche il codice immobile oltre alla descrizione
  • Fix del comando seleziona su maschera scelta LayoutFolder

NEW FEATURES

  • Aggiunta la possibilità di esportare area e perimetro sul PolygonExporter, PolylineExporter, PolylineXDataExporter
  • Aggiunta la possibilità di esportare tutte le proprietà del centroide di un poligono tramite il carattere speciale *,

sul polygonExporter nella regola di caricamento va usato il nome attributo “centroid.*”

  • Sviluppo comando che permette di cambiare gruppo Geoweb, analogo alla pagine index.html
  • (Issue #843) Sviluppo comando che permette di accendere massivamente i layer autocad di un DWG
  • Sviluppo comando gwVisualizeRule che permette la visualizzazione della Regola di caricamento da Cad.
  • (Issue #800) Introdotta la form GwSave in caso di GWPUBLISH eseguito su un drawing già esistente nel sistema.
  • Aggiornati i log del sistema
  • Divisi i metodi in service specifici
  • (Issue #794) Creato il comando GWVISUALIZERULE che permette la visualizzazione della regola di caricamento
  • Create le configurazioni di compilazione (Prodotto, BimData, Develop)
  • Log di pubblicazione migliorati, comparsa del numero degli elementi di background inseriti
  • Aggiunta la possibilità di effettuare la sincronizzazione automatica al download e apertura di un dwg.
  • Introdotta la dll updater come metodo alternativo di installazione.
  • Aggiornata e uniformata la grafica della form.

NEW COMPONENTS

DEPRECATED

REFACTORS

description Compatibile a partire fino alla versione 4.5.X date 2022/10/12

description Compatibile a partire fino alla versione 4.5.X date 2022/09/27

description Compatibile a partire fino alla versione 4.5.X date 2022/09/14

description Compatibile a partire fino alla versione 4.4.X date 2022/05/11

description Compatibile a partire fino alla versione 4.4.X date 2021/10/06

description Compatibile a partire fino alla versione 4.4.X date 2021/10/05

description Compatibile a partire dalla versione 4.6.0 date 2024/05/15

BUGFIX

  • Modificata la tipologia di esportazione dei modelli Revit (Matrice di traslazione = identità e worldCoordinates ricavate da IFC)

description Compatibile a partire dalla versione 4.6.0 date 2024/05/07

NEW FEATURES

* Aggiunta chiamata che mantiene la sessione Geoweb attiva in caso di operazioni lunghe.

description Compatibile a partire dalla versione 4.6.0 date 2023/10/31

BUGFIX

* Fix caricamento nuvole di punti

description Compatibile a partire dalla versione 4.6.0 date 2023/08/04

NEW FEATURES

  • Aggiustato il recupero del nome utente dalla pagina di Login
  • Fix file di configurazione

description Compatibile a partire dalla versione 4.6.0 date 2023/05/16

NEW FEATURES

  • Modificata la gestione del restUrl per tutte le installazioni dell'Upload Manager.

Ora nel file di configurazione non viene inserito l'url ma solamente la funzione geoweb, mentre l'url dovrà essere inserito manualmente dall'utente al primo avvio. * Modificata la gestione dei gruppi utente

description Compatibile a partire dalla versione 4.6.0 date 2023/04/24

description Compatibile finoa 4.5.X date 2024/05/15

BUGFIX

  • Modificata la tipologia di esportazione dei modelli Revit (Matrice di traslazione = identità e worldCoordinates ricavate da IFC)

description Compatibile finoa 4.5.X date 2024/05/07

NEW FEATURES

  • Aggiunta chiamata che mantiene la sessione Geoweb attiva in caso di operazioni lunghe.

description Compatibile finoa 4.5.X date 2023/02/27

description Compatibile finoa 4.5.X date 2022/09/05

description Compatibile finoa 4.4.X date 2022/05/11

date 2023/05/04 description Compatibile a partire dalla 4.6.4

NEW FEATURES

Il funzionamento del workflow del caricamento di un file di modello è il seguente:

1) Creazione di un file di modello dalla classe gwd_bim_model dall’applicazione web. Contestualmente alla creazione di un record sulla gwd_bim_model va creata anche la struttura di modello, la modalità lasciata a scelta dell’implementazione e della configurazione del prodotto.

2) All’interno della classe gwd_bim_model va configurato l’attributo document_name con il widget content_handler_rest 3) Al momento della creazione del record va inserito sull’attributo il file ifc che si vuole caricare. A questo punto il procedimento è del tutto trasparente per l’utente ed è il seguente: dopo il salvataggio viene lanciato un messaggio tramite le code che verrà consumato dal servizio Python tramite la libreria ifc-open-shell. Questo servizio estrae i dati dal file ifc creando i file dei materiali, degli oggetti, delle geometrie, delle famiglie, dei livelli e dei sistemi e li va a caricare all’interno del database mongo, mantenendo lo stesso comportamento del vecchio Upload Manager.

4) In alternativa alla creazione di un nuovo file di modello si può andare in aggiornamento semplicemente andando a cliccare aggiorna all’interno dell’attributo document_name nella scheda di dettaglio del record. Una volta cliccato sul pulsante per salvare le modifiche della scheda partirà lo stesso procedimento descritto nel punto 3.

Una volta inviato il file al gestore di code (RabbitMq) la colonna queue_status sulla classe gwd_bim_model sarà impostata a 2 (START). Quando Rabbit inizia le operazioni sulla coda ci sarà il passaggio al valore 1(RUNNING) e alla fine delle operazioni il valore sarà 0(COMPLETED). In caso di errore il valore diventerà -1(ERROR). Lo stesso processo sarà seguito dalla classe gw_queue, in questa tabella in caso di errore inoltre sarà inserito la descrizione dell’errore nella colonna response.

date 2023/05/22 description Compatibile a partire dalla 4.6.X

NEW FEATURES

  • Modificata la gestione del restUrl per tutte le installazioni dell'Upload Manager.

Ora nel file di configurazione non viene inserito l'url ma solamente la funzione geoweb, mentre l'url dovrà essere inserito manualmente dall'utente al primo avvio.

  • Aggiunta la visualizzazione della versione nella pagina principale.
  • Modificata la gestione dei gruppi utente

date 2022/02/23

  • gwplatform/release_notes.txt
  • Ultima modifica: 2024/05/15 13:14
  • da francesco.peverini