Indice

Release Notes

Geoweb Framework

Regole di versioning

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.7.x 3.1.1.9378
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

Versione 4.7.4

rev 9f69335ba28c26afa74b23277fd552586767caf5

date 2025/03/04

BUGFIX

NEW FEATURES

NEW COMPONENTS

Versione 4.7.3

rev 90d85db6dc508465f24e1d8c5cf5633a6189bfd4

date 2024/12/23

BUGFIX

NEW FEATURES

NEW COMPONENTS

Versione 4.7.2

rev 345732fd75155f0297cb5315e44cf09e3dd03676

date 2024/10/24

BUGFIX

NEW FEATURES

Versione 4.7.1

rev 1a69095b413dbe11873345f0e55a6ad9726c5790

date 2024/07/08

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

Versione 4.7.0

rev 46bf229978240be21acf9e75a9bae65ea5371a8b

date 2024/05/09

NEW FEATURES

REFACTORS

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

Versione 4.6.18

rev fe19229bb33a5e41bfa474216fef1bb502bd485f

date 2024/12/23

BUGFIX

Versione 4.6.17

rev db9c40ac6a64c28a630918df6f3954c71a024cbd

date 2024/10/10

BUGFIX

NEW FEATURES

Versione 4.6.16

rev 4d2772b6df9df6b04ac66b29c2ece45608380bf6

date 2024/07/05

BUGFIX

NEW FEATURES

Versione 4.6.15

NON RILASCIATA PER RIMEDIARE A PRECEDENTI ERRORI NEI VERSIONAMENTI

Versione 4.6.14

rev 560b4f2e93c8713d65d0f25dfacfbea1702ce3ac

date 2024/05/22

BUGFIX

NEW FEATURES

Versione 4.6.13

rev 44673039a2e78149547ae155b313b599c0ee2e8a

date 2024/05/09

BUGFIX

NEW FEATURES

campo username_recipient alla tabella evt_event_recipient.

NEW COMPONENTS

Versione 4.6.12

rev 85f9f52021f6ac42e2b9d44c141b188a4258f754

date 2024/03/19

BUGFIX

NEW FEATURES

Versione 4.6.11

rev b6f70d937fd9da6d1b987adf12a5ff695fcb47d7

date 2024/01/30

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.6.10

rev 07aa06d22def5a651139da89056dafb0d31d86df

date 2023/11/30

BUGFIX

NEW FEATURES

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

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.6.9

rev 07aa06d22def5a651139da89056dafb0d31d86df

date 2023/10/02

BUGFIX

NEW FEATURES

NEW COMPONENTS

Versione 4.6.8

rev 93edc8e895f17a7f6f3f85522fdcee18823f4a3b

date 2023/08/28

BUGFIX

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

NEW FEATURES

Versione 4.6.7

rev c17da9799c3dfdf0c58772f841357066a6690fe6

date 2023/07/28

BUGFIX

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

NEW COMPONENTS

NEW COMPONENTS

REFACTORS

Versione 4.6.6

rev 50b9119788c9fd80c6ba6a29f2ac1bd9f1f25719

date 2023/07/05

BUGFIX

NEW COMPONENTS

Versione 4.6.5

rev 8676e04233176f450bbbfc19cf80533e4a4dc96

date 2023/06/22

BUGFIX

NEW COMPONENTS

Versione 4.6.4

rev 975743911e5d4fca1fb8367c7f0df3b8ff555d1e

date 2023/06/09

BUGFIX

(issue #983)

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

NEW FEATURES

NEW COMPONENTS

DEPRECATED

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{

REFACTORS

Versione 4.6.3

rev 14a5f613166b38cde163af0a5d9bde2b7d9b1e13

date 2023/05/04

BUGFIX

NEW FEATURES

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

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.6.2

rev 15bcec01f1cd60774c0785170a6fbee8c451c7a5

date 2023/04/04

BUGFIX

Versione 4.6.1

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

Versione 4.6.0

BUGFIX

regole refactor:

(issue #799)

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

che depreca (baseMgLibraryPath)

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

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

css/widget/contentHandlerWidget.css

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

Versione 4.5.17

rev a8ae36082fb2922bcfb2f0d00f09dc4d8bff5721

date 2025/01/02

BUGFIX

Versione 4.5.16

rev a8ae36082fb2922bcfb2f0d00f09dc4d8bff5721

date 2024/07/05

BUGFIX

Versione 4.5.15

rev b1a2291ef49af1996b172d3a822918c72691c03a

date 2024/05/09

BUGFIX

Versione 4.5.14

rev 7168a0496eca95953f9342252f5005700f7d2873

date 2024/03/20

BUGFIX

Versione 4.5.13

rev 89d4cfa8b790ce9e942a10dd79236e45bc006c52

date 2024/01/30

BUGFIX

Versione 4.5.12

rev 75e05c25cfb232e01b1250aa2629cb550537f977

date 2023/11/30

BUGFIX

NEW FEATURES

Versione 4.5.11

rev d860617cf8ed25fca96e59c161abb55560f14270

date 2023/10/04

BUGFIX

NEW FEATURES

Versione 4.5.10

rev e40d1cdf87d301fe6b9e96e6ddf5b1b627653aa2

date 2023/08/23

BUGFIX

NEW FEATURES

Versione 4.5.9

rev e432b1a9645c1540fd03aa9c4893e3b424c9a51c

date 2023/07/28

BUGFIX

Versione 4.5.8

rev e432b1a9645c1540fd03aa9c4893e3b424c9a51c

date 2023/07/17

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

(issue #981)

Versione 4.5.7

rev cd02360e529cc0a677aac1dfd5335ea5cdb763c0

date 2023/07/17

BUGFIX

(issue #1006)

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.5.6

rev 755a4c7090377db83e046246b92da7877454a62c

date 2023/06/12

BUGFIX

vengono tagliate in basso

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

* 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

	  	##################################################################
		#	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

Versione 4.5.5

rev 30d95ab04e58c82219b59b5049bd327f62b6df2c

date 2023/03/24

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.5.4

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.5.3

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.5.2

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

Versione 4.5.1

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

Versione 4.5.0

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:

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):

* 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.

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

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

Versione 4.4.29

rev a939cb8f9ae907464c6faa34c16c97bfb00dc3f7

date 2025/01/01

Versione 4.4.28

rev 12d3b84218c3c3422bbbf947bdf59af140f61b11

date 2024/07/04

BUGFIX

NEW FEATURES

Versione 4.4.27

rev d7d03f3bd4bb2913ec3aef9f886c3a88ca679310

date 2024/05/09

BUGFIX

Versione 4.4.26

rev 76867e5cea44120b00819df4592dbe4c4dcaf366

date 2024/03/21

BUGFIX

NEW FEATURES

Versione 4.4.25

rev 1529101f30a8d789f9231d3c6e8f5357a099d8f3

date 2024/01/31

BUGFIX

Versione 4.4.24

rev 1cdf283c667173903070670bacd9e0c774974b2d

date 2023/12/04

BUGFIX

NEW FEATURES

Versione 4.4.23

rev 5d8d19da238c055c930c79580b005b1705e7e714

date 2023/10/04

BUGFIX

NEW FEATURES

Versione 4.4.22

rev 291bf0ffac62542c8af27e4914e699e11be74aa9

date 2023/08/23

BUGFIX

Versione 4.4.21

rev 67ee738edc729c93b76eadd8b0ef16f9806008db

date 2023/07/31

BUGFIX

Versione 4.4.20

rev b914daa32464405781b5942877cde1539f2456a5

date 2023/07/17

BUGFIX

(issue #1006)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

(issue #981)

Versione 4.4.19

rev 4559aff30fda457e12095ff549de8908d3a26075

date 2023/06/09

BUGFIX

### Cause: com.thoughtworks.xstream.mapper.CannotResolveClassException: MapGuideStyle 

(issue #995)

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

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

css class gia presenti:

css class aggiunte:

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

del widget geometria.

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

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

NEW FEATURES

		##################################################################
		#	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

REFACTORS

Versione 4.4.18

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:

* 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:

* 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):

* 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)

* 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

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

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

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

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)

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

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

REFACTORS

Versione 4.4.17

BUGFIX

gwGetReadonly()
gwSetReadonly()
gwGetRequired()
gwSetRequired()
gwetDisabled()
gwSetDisabled()

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

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,

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.4.16

BUGFIX

NEW FEATURES

 
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

Versione 4.4.15

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.4.14

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 4.4.13

BUGFIX

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

4.4.12

BUGFIX

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)

NEW FEATURES

NEW COMPONENTS

DEPRECATED

REFACTORS

4.4.11

BUGFIX

NEW FEATURES

  
	  	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>

REFACTORS

4.4.10

BUGFIX

4.4.9

BUGFIX

NEW FEATURES

4.4.8

BUGFIX

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

(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

Modes is still supported for backward compatibility reasons

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

4.4.7

BUGFIX

NEW FEATURES

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

Modes is still supported for backward compatibility reasons

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

4.4.6

BUGFIX


NEW FEATURES


NEW COMPONENTS


DEPRECATED


REFACTORS

4.4.5

BUGFIX


NEW FEATURES

  var params = {
     projectName:project_name,
     value: ${codiceUnivocoRecord},
     codeColumnRelationTableName3D: 'cod_obj',  
     relationTableName3D: 'gwd_r_ifc_sql',
     codeColumnName3D: ${colonnaCodiceClasseGW},
     defaultGwmScene: ${scena3D},
     defaultGwmMap: ${mappa2D}
   };
   indirectLocalizationZoom(params);


NEW COMPONENTS


DEPRECATED


REFACTORS


4.4.4

BUGFIX


NEW FEATURES


NEW COMPONENTS


DEPRECATED


REFACTORS

Client Cad

Versione 3.0.3

date 2025/02/18

BUGFIX

* Modificato il metodo con cui vengono recuperate le strutture di modello

Versione 3.0.2

date 2023/10/24

NEW FEATURES

Versione 3.0.1

date 2023/08/04

BUGFIX

* Aggiunto il controllo del SyncMode sulla validazione di blocchi e poligoni

NEW FEATURES

* Creato il comando che permette di modificare il restUrl. Se in fase di login il campo

	RestUrl del config non è popolato allora la finestra di login si aprirà automaticamente
* Ora lo username viene estratto dalla pagina di login e viene salvato all'interno del LoginService.
* In fase di login il gruppo viene scelto automaticamente dalla lista dei gruppi possibili. Se non presente la login fallisce

Versione 3.0.0

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

BUGFIX

* Aggiornato il file config

NEW FEATURES

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

NEW COMPONENTS

DEPRECATED

REFACTORS

Versione 2.4

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

Versione 2.3

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

Versione 2.2

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

Versione 2.1

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

Versione 2.0

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

Versione 1.0

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

Upload Manager

Versione 2.2.1

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

BUGFIX

Versione 2.2.0

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.

Versione 2.1.2

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

BUGFIX

* Fix caricamento nuvole di punti

Versione 2.1.1

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

NEW FEATURES

Versione 2.1.0

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

NEW FEATURES

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

Versione 2.0

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

Versione 1.3.1

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

BUGFIX

Versione 1.3.0

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

NEW FEATURES

Versione 1.2

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

Versione 1.1

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

Versione 1.0

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

Gw-Ifcopenshell-UM

Versione 1.0

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.

Content Uploader

Versione 3.0.0

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

NEW FEATURES

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.

Versione 2.0.0

date 2022/02/23