gwusermanual:interface:interface:menu

Progetto e Menù

La pagina del progetto, e quindi del modello di applicazione tipo in Geoweb è strutturata in sezioni, ognuna delle quali ospita un tipo preciso di elementi:

  • Barra Info, nera info sul brand;
  • Barra Info&Nav info su function, oggetto in sessione, utente, gruppo ed ambiti, menu assistenza e menu notifiche;
  • Barra del Menù di I° livello, necessaria per aprire il Menù di II° livello;
  • Area Menu di II° e III° livello, da cui accedere alle classi, alle funzioni e alle Schede attraverso un doppio livello di menù;
  • Area Schede, ovvero la zona nella quale viene aperto il contenuto desiderato e configurato a Menu (liste e dettaglio di record di una Classe, Cruscotti interattivi di controllo in HTML, Calendari, Mappe, Planimetrie, ecc.);

TODO ADD IMAGE

L'organizzazione e definizione di tutte le sezioni è definita nella configurazione XML del progetto, tramite appositi tag e tramite la chiamata di funzioni specifiche messe a disposizione dal framework.

Struttura Generale XML di Progetto

Il layout grafico di un progetto si ottiene attraverso la configurazione del relativo XML la cui struttura è data dalla combinazione di una serie di tag:

<geomanager> </geomanager> configurazione di progetto
<menuBar> </menuBar> configurazione della barra dei menù
<menuBarItem> </menuBarItem> configurazione del singolo menù di I° livello
<accordionPaneItem> </accordionPaneItem> configurazione del singolo menù di II° livello
<leafitem> </leafItem> configurazione della singola voce del menù di II° livello

Per ogni tag devono in genere essere configurati i seguenti parametri:

name nome (univoco) da assegnare al tag
label etichetta da visualizzare nel layout di rappresentazione
image nome del file dell’immagine da visualizzare nel layout di rappresentazione, e che deve trovarsi nella cartella dei contenuti statici dell'istanza (../WEB/images)

<geomanager>
    <menuBar>
        <menuBarItem name="menu name" label="menu label" image="menu image.png">    
            <accordionPaneItem name="accordion name" label="accordion label" image="accordion image.png" 
             type="leafItemContainer">        
                <leafItem name="leafitem name" label="leafitem label" image="leafitem image.png" type="gwClassList">  
                    <parameter name="className" value="class_name" hideToClient="false"></parameter> 
                </leafItem>        
            </accordionPaneItem>
        </menuBarItem>
    </menuBar>
</geomanager>


Configurazioni Specifiche definite nel Progetto

Oltre ai tag di struttura visti sopra esistono tag per definire i contenuti dei banner di progetto, e alcuni comportamenti dell'applicazione.




GwClassSettings: optional, default null. Tag usato per la sovrascrittura delle impostazioni relative alla visualizzazione dei dati delle gwClass Sezione che ospita le configurazioni a livello globale (applicate limitatamente al gwProject corrente), relative a dettaglio e lista di classe:

  1. gwClassDetailSettings: optional, default null. Ospita le configurazioni specifiche del dettaglio di classe. Setting ammessi:
    1. hideActionsDropDownButton: Boolean, optional, default false. Se posta a true nasconde il button 'More options' (aka tre puntini: '…') che ospita le azioni/report lanciabili dall'utente, in cui spesso non viene configurato nulla e quindi si preferisce non farlo comparire
    2. hideActionsDropDownButtonByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideActionsDropDownButton
    3. openingDetailModeByGwClassName: Mappa, optional, default null, Ospita le coppie gwClassName/openingDetailMode dove si può sovrascrivere classe per classe con quale tipologia di detailContainer verrà aperto il dettaglio di classe. Possibili valori openingDetailMode: tab, floatingPane, dialog. Nota: Questo setting depreca il tag classOpeningDetailModeAssociationsList, che era ospitato direttamente sotto il tag geomanager/geoexplorer (se presenti entrambi, viene usata la nuova configurazione)
    4. defaultDetailLayoutNameByGwClassName: Mappa: optional, default null, Ospita le coppie gwClassName/defaultDetailLayoutName dove si può sovrascrivere, limitatamente al progetto, il detailLayout con il quale verrà aperto il dettaglio della classe specificata.
    5. hideDefaultButtons: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde tutti i button di default della bottom toolbar
    6. hideCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Chiudi'
    7. hideCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCloseButton
    8. hideSaveButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Salva'
    9. hideSaveButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideSaveButton
    10. hideSaveAndCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Salva e Chiudi'
    11. hideSaveAndCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideSaveAndCloseButton
    12. hideCreateButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Crea'
    13. hideCreateButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCreateButton
    14. hideCreateAndCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Crea e Chiudi'
    15. hideCreateAndCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCreateAndCloseButton
  2. gwClassListSettings: optional, default null. Ospita le configurazioni specifiche della lista di classe. Setting ammessi:
    1. hideToolbar: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    2. hideToolbarByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideToolbar (from 4.5.0)
    3. hideNewIgnorePermissions: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    4. hideNewIgnorePermissionsByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideNewIgnorePermissions (from 4.5.0)
    5. hideDeleteIgnorePermissions: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    6. hideDeleteIgnorePermissionsByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideDeleteIgnorePermissions (from 4.5.0)
    7. hideActionsDropDownButtonColumn: Boolean, optional, default false. Se posta a true nasconde in lista la colonna che ospita il button 'More options' (aka tre puntini: '…') che ospita le azioni/report lanciabili dall'utente, in cui spesso non viene configurato nulla e quindi si preferisce non farlo comparire
    8. hideActionsDropDownButtonColumnByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideActionsDropDownButtonColumn
    9. hideIndirectSelectionColumn: Boolean, optional, default false. Se posta a true nasconde in lista la colonna che ospita il check per la selezione delle righe
    10. hideIndirectSelectionColumnByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideIndirectSelectionColumn
    11. onRowClickGwActionName: String, optional, default null. Nome dell'azione ospitata dentro la gwClass che verrà eseguita al click sul record della lista (from 4.5.0)
    12. onRowClickGwActionNameByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/gwActionName dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale onRowClickGwActionName (from 4.4.11)
    <gwClassSettings>
 
        <gwClassSettings>
        <gwClassDetailSettings>
            <hideActionsDropDownButton>false</hideActionsDropDownButton>
            <hideActionsDropDownButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideActionsDropDownButtonByGwClassName>
            <openingDetailModeByGwClassName>
                <entry gwClassName="gw_class_name_2" openingDetailMode="floatingPane"/>
                <entry gwClassName="gw_class_name_3" openingDetailMode="dialog"/>
                <entry gwClassName="gw_class_name_1" openingDetailMode="tab"/>
            </openingDetailModeByGwClassName>
            <defaultDetailLayoutNameByGwClassName>
                <entry gwClassName="gw_class_name" defaultDetailLayoutName="specific_default_detail_layout_name"/>
            </defaultDetailLayoutNameByGwClassName>
            <hideDefaultButtons>false</hideDefaultButtons>
            <hideDefaultButtonsByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideDefaultButtonsByGwClassName>
            <hideCloseButton>false</hideCloseButton>
            <hideCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideCloseButtonByGwClassName>
            <hideSaveButton>false</hideSaveButton>
            <hideSaveButtonByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideSaveButtonByGwClassName>
            <hideSaveAndCloseButton>false</hideSaveAndCloseButton>
            <hideSaveAndCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideSaveAndCloseButtonByGwClassName>
            <hideCreateButton>false</hideCreateButton>
            <hideCreateButtonByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideCreateButtonByGwClassName>
            <hideCreateAndCloseButton>false</hideCreateAndCloseButton>
            <hideCreateAndCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideCreateAndCloseButtonByGwClassName>
            <hideDeleteIgnorePermissions>false</hideDeleteIgnorePermissions>
            <hideDeleteIgnorePermissionsByGwClassName>
                <entry gwClassName="gw_class_name_1" hide="false"/>
            </hideDeleteIgnorePermissionsByGwClassName>
        </gwClassDetailSettings>
        <gwClassListSettings>
            <hideToolbar>false</hideToolbar>
            <hideToolbarByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideToolbarByGwClassName>
            <hideNewIgnorePermissions>false</hideNewIgnorePermissions>
            <hideNewIgnorePermissionsByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideNewIgnorePermissionsByGwClassName>
            <hideDeleteIgnorePermissions>false</hideDeleteIgnorePermissions>
            <hideDeleteIgnorePermissionsByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideDeleteIgnorePermissionsByGwClassName>
            <hideActionsDropDownButtonColumn>false</hideActionsDropDownButtonColumn>
            <hideActionsDropDownButtonColumnByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideActionsDropDownButtonColumnByGwClassName>
            <hideIndirectSelectionColumn>false</hideIndirectSelectionColumn>
            <hideIndirectSelectionColumnByGwClassName>
                <entry gwClassName="gw_class_name" hide="true"/>
            </hideIndirectSelectionColumnByGwClassName>
            <onRowClickGwActionName></onRowClickGwActionName>
            <onRowClickGwActionNameByGwClassName>
                <entry gwClassName="gw_class_name" gwActionName="gw_action_name"/>
            </onRowClickGwActionNameByGwClassName>
            <cookieEnabled>false</cookieEnabled>
            <columnReordering>false</columnReordering>
            <onStyleRowFunctionName></onStyleRowFunctionName>
            <onStyleRowFunctionNameByGwClassName>
                <entry gwClassName="gw_class_name" functionName="function_name"/>
            </onStyleRowFunctionNameByGwClassName>
            <onStyleRowGwActionName></onStyleRowGwActionName>
            <onStyleRowGwActionNameByGwClassName>
                <entry gwClassName="gw_class_name" gwActionName="gw_action_name"/>
            </onStyleRowGwActionNameByGwClassName>
        </gwClassListSettings>
    </gwClassSettings>

GwClassSettings depreca il tag classOpeningDetailModeAssociationsList, inglobandone ed ampliandone funzionalità

    <!--
    sovrascrittura globale apertura dettaglio classe per nome_classe
    @Deprecated by openingDetailModeByGwClassName tag inside gwClassDetailSettings tag
    -->
    <!--
    <classOpeningDetailModeAssociationsList>
        <keyValuePair key="pv_gestori" value="floatingPane"></keyValuePair> /*default*/
        <keyValuePair key="pv_punti_vendita" value="tab"></keyValuePair>
        <keyValuePair key="pv_customer" value="dialog"></keyValuePair>      
    </classOpeningDetailModeAssociationsList>
    -->

gwClassListSettings, matrice supporto parametri globali per componente:

Parametro gwClassList prefilteredList linkList linkListNam hierarchicalFilterMenu
hideToolbar 4.4.11 - - - 4.4.11
hideToolbarByGwClassName 4.4.11 - - - 4.4.11
hideNewIgnorePermissions 4.4.11 - 4.4.11 - 4.4.11
hideNewIgnorePermissionsByGwClassName 4.4.11 - 4.4.11 - 4.4.11
hideDeleteIgnorePermissions 4.4.11 - 4.4.11 - 4.4.11
hideDeleteIgnorePermissionsByGwClassName 4.4.11 - 4.4.11 - 4.4.11
hideActionsDropDownButtonColumn SI SI SI SI -
hideActionsDropDownButtonColumnByGwClassName SI SI SI SI -
hideIndirectSelectionColumn SI SI SI SI -
hideIndirectSelectionColumnByGwClassName SI SI SI SI -
onRowClickGwActionName 4.4.11 NO 4.4.11 - SI
onRowClickGwActionNameByGwClassName 4.4.11 NO 4.4.11 - SI

(SI=supportato, NO=previsto ma non implementato ancora, 4.x.y=supportato dalla versione, -=non applicabile)


mapSettings:

<!-- Sezione di gestione delle mappe associate alle classi -->
<mapSettings>
        <showScaleLineControl>true</showScaleLineControl>
        <showScaleControl>true</showScaleControl>
        <showMousePositionControl>true</showMousePositionControl>
        <showBaseMapChange>true</showBaseMapChange>
        <showLayersManagement>true</showLayersManagement>
        <showThematisms>true</showThematisms>
        <showMapEditing>true</showMapEditing>
        <startWithMapSwitcherOpened>true</startWithMapSwitcherOpened>
        <classMapAssociationsList>
            <keyValuePair key="class_name" value="map_name"/>
        </classMapAssociationsList>
    </mapSettings>

planTypeNameGwMapNameHM: Mappa, opzionale, default null. map used to override associations done on 'gwd_plan_type' table, between planType name and gwMap name . TODO In futuro verrà deprecato ed inglobato dentro mapSettings

    <planTypeNameGwMapNameHM>
        <entry planTypeName="Planimetria Architettonico Spazi" gwMapName="floorPlan_prova" />
    </planTypeNameGwMapNameHM>

gwContextFunction è la funzione dell'app corrente, è di fatto in rapporto 1:1 con il projectName. Permette di navigare ad altre alle altre funzioni disponibili per l'utente. La navigazione intra-function può essere opzionalmente nascosta con disabled = true.

    <objectSelector>
        <disabled>true</disabled>
        <inizializationCode></inizializationCode>
    </objectSelector>
    <functionSelector>
        <disabled>false</disabled>
    </functionSelector>

objectSelector è una parte di UI, al centro della Info&Nav toolbar deputata alla visualizzazione dell'oggetto in sessione. Al click sul selettore di oggetto si apre un dialog (stile externalTable) che permette di cambiare l'oggetto in sessione. Cambiando l'oggetto in sessione viene ricaricata la pagina.

Il contenuto dell'objectSelector è popolato tramite un codice javascript di inizializzazione, ospitato nel tag <inizializationCode> dell'<objectSelector>: che utilizza la function js esposta gwObjectSelectorInitializationLegacy().


Visivamente, il risultato della funzione è il seguente:

TODO

Come si può vedere dalla figura, è presente un titolo (in questo caso è “Immobile: ”) con accanto il codice e, sotto, il nome dell'elemento selezionato: queste ultime due informazioni sono le stesse che popolano i parametri in sessione. Il titolo e il codice formano un link cliccabile che consente di aprire una finestra di selezione in cui sono presenti tutti gli elementi della classe e tra i quali è possibile scegliere quello che si vuole aprire. La funzione gwObjectSelectorInitializationLegacy deve essere aggiunta nel tag <inizializationCode> dell'<objectSelector> (non usare il tag script di tipo “dojo/method”, come per le versioni pre 4.6.x). L'oggetto che riceve in ingresso contiene i seguenti valori:

  • className (obbligatorio): è il nome della classe che comprende gli elementi tra cui si va a scegliere quello che si vuole visualizzare. I campi di cui si parla di seguito si riferiscono a questa classe;
  • fieldToStore (obbligatorio): è il nome del campo dell’elemento scelto che deve essere visualizzato nel pannello del gwMenuTitle, vicino alla stringa “menuTitle”;
  • fieldToShow (obbligatorio): è il campo dell’elemento scelto che deve essere visualizzato sotto al precedente (di default è il campo impostato come colonna nome nella classe);
  • session_code_field (obbligatorio): è il nome del parametro in sessione che contiene il campo “fieldToStore” dell’elemento da visualizzare per il progetto corrente;
  • session_code_field_name (obbligatorio): è il nome del parametro in sessione che contiene il campo “fieldToShow” dell’elemento da visualizzare;
  • menuTitle: è la stringa che fa da titolo all’elemento gwMenuTitle e che compare in alto a sinistra, prima del campo “stringToVisualizeIfNoElement” o, se i parametri in sessione sono popolati, prima del campo “fieldToStore”. Di default è una stringa vuota;
  • stringToVisualizeIfNoElement: è la stringa che compare inizialmente vicino al “menuTitle” nel caso in cui non siano ancora presenti elementi in sessione. Il valore di default è “Scegli un elemento”;
  • selectionWinTitle: è il titolo della finestra di selezione che si apre quando si vuole scegliere un nuovo elemento da visualizzare. Di default è una stringa vuota;
  • contPaneParent (obbligatorio): contiene l'identificatore dell’elemento html in cui visualizzare l’intero gwMenuTitle nella pagina del progetto; questo parametro deve sempre avere valore this.id.

Nota: il valore dei parametri di ingresso “session_code_field” e “session_code_field_name” deve essere univoco per ogni progetto, ciò significa che i nomi dei parametri in sessione che contengono i campi di interesse dell'elemento da visualizzare devono essere differenti in ogni progetto, così da evitare che vengano sovrascritti.

    <objectSelector>
        <disabled>true</disabled>
        <inizializationCode> 
            gwObjectSelectorInitializationLegacy({
                'className': 'spm_gwd_pe_building', 
                'fieldToStore': 'cod_building', 
                'fieldToShow': 'name_building', 
                'session_code_field': 'session_building_code', 
                'session_code_field_name': 'session_building_code_name', 
                'menuTitle':'Immobile:', 
                'stringToVisualizeIfNoElement': 'Scegli un immobile', 
                'selectionWinTitle': 'Seleziona edificio', 
                'contPaneParent': this.id 
           });
        </inizializationCode> 
    </objectSelector>

Attualmente, la funzione gwObjectSelectorInitializationLegacy è utilizzabile per visualizzare elementi contenuti in menu di II livello di tipo graphicLayoutByBuildingSwitchMenu. Inoltre, affinché la visualizzazione sia corretta, è necessario aggiungere nell'xml, dentro il tag relativo all’accordion pane, un parametro “session_code_field” che, chiaramente, deve avere lo stesso valore che gli è stato assegnato all’interno della funzione.

<parameter name="session_code_field" value="session_building_code" hideToClient="false"></parameter>



threeDSceneSettings TODO EXPLAIN

externalUrl: String default null. URL to old GeoWeb application or others application TODO EXPLAIN

disabledUserScopeButton: Boolean, default null. TODO EXPLAIN

gwProjectGroovy: String , default null. TODO EXPLAIN

confProperties: String , default null. TODO EXPLAIN

gwMenuTitle: String , default null. TODO EXPLAIN

GeoWeb prevede due tipologie di progetto:

GeoManager: contenitore generico. L'area Schede prevede la visualizzazione dei dati alfanumerici. Questo progetto si può caratterizzare con appositi tipi di 'accordion' per rendere la struttura adatta a mostrare particolare tipi di Contenuto (ad esempio il BIM Explorer).
Esempio di progetto GeoManager

GeoExplorer: contenitore di Mappe. L'area Schede contiene il visualizzatore di Mappe e/o Planimetrie configurato nell'Admin o nei metadati.
Esempio di progetto GeoExplorer


L’Accordion è il controllo utilizzato per ‘contenere’ i menù di secondo livello. Ad ogni voce di menù di primo livello possono corrispondere uno o più accordion.
All’apertura solo il primo accordion verrà visualizzato aperto, mentre gli altri vengono visualizzati chiusi, in basso. Cliccando sulla intestazione dell’accordion, esso verrà aperto chiudendo a sua volta quello aperto precedentemente.

L’accordion può essere un semplice contenitore, oppure può essere strutturato esso stesso come un Menu di accesso ad altri oggetti del progetto.
In particolare, in base all’attributo ‘type’ esso può essere:

  • leafItemContainer tipo semplice, ovvero aperto a contenere altri oggetti (leafItem) di diversa natura
  • integrationMenu visualizzazione di tutti i Temi/Classi (visibili) associati ad un progetto
  • layoutSwitchMenu visualizzazione strutturata di tutte le planimetrie caricate nel progetto
  • to do: completare elenco da lista excel

Il leafitem (elemento foglia) rappresenta la singola voce di un menù di secondo livello e può richiamare nella sezione principale di Geoweb® la visualizzazione di diverse tipologie di Schede, come ad esempio:

  • lista record di una classe di Geoweb®
  • gestione processo (work-flow)
  • cruscotto di reportistica / report html
  • calendario
  • mappa cartografica

Il leafitem può essere strutturato, e rappresentare in maniera complessa l'elenco dei contenuti da cui far partire la visualizzazione delle schede. Ad esempio:

  • albero di navigazione dei layout, per aprire un layout
  • albero di navigazione delle gerarchie di classi, per aprire un determinato sottoinsieme di lista di record

Il leafitem è organizzato con i propri tag nell'XML di Progetto.

La pagina del progetto, e quindi del modello di applicazione tipo in Geoweb è strutturata in sezioni, ognuna delle quali ospita un tipo preciso di elementi:

  • Barra del Titolo, costituita da banner grafici personalizzabili, in formato immagine;
  • Barra delle Informazioni sull'utente connesso, da cui è possibile accedere a funzioni standard di cambio gruppo e ambito;
  • Barra del Menù di I° livello, necessaria per aprire il Menù di II° livello;
  • Area Menu di II° e III° livello, da cui accedere alle classi, alle funzioni e alle Schede attraverso un doppio livello di menù;
  • Area Schede, ovvero la zona nella quale viene aperto il contenuto desiderato e configurato a Menu (liste e dettaglio di record di una Classe, Cruscotti interattivi di controllo in HTML, Calendari, Mappe, Planimetrie, ecc.);

L'organizzazione e definizione di tutte le sezioni è definita nella configurazione XML del progetto, tramite appositi tag e tramite la chiamata di funzioni specifiche messe a disposizione dal framework.

Struttura Generale XML di Progetto

Il layout grafico di un progetto si ottiene attraverso la configurazione del relativo XML la cui struttura è data dalla combinazione di una serie di tag:

<geomanager> </geomanager> configurazione di progetto
<menuBar> </menuBar> configurazione della barra dei menù
<menuBarItem> </menuBarItem> configurazione del singolo menù di I° livello
<accordionPaneItem> </accordionPaneItem> configurazione del singolo menù di II° livello
<leafitem> </leafItem> configurazione della singola voce del menù di II° livello

Per ogni tag devono in genere essere configurati i seguenti parametri:

name nome (univoco) da assegnare al tag
label etichetta da visualizzare nel layout di rappresentazione
image nome del file dell’immagine da visualizzare nel layout di rappresentazione, e che deve trovarsi nella cartella dei contenuti statici dell'istanza (../WEB/images)

<geomanager>
    <menuBar>
        <menuBarItem name="menu name" label="menu label" image="menu image.png">    
            <accordionPaneItem name="accordion name" label="accordion label" image="accordion image.png" 
             type="leafItemContainer">        
                <leafItem name="leafitem name" label="leafitem label" image="leafitem image.png" type="gwClassList">  
                    <parameter name="className" value="class_name" hideToClient="false"></parameter> 
                </leafItem>        
            </accordionPaneItem>
        </menuBarItem>
    </menuBar>
</geomanager>


Configurazioni Specifiche definite nel Progetto

Oltre ai tag di struttura visti sopra esistono tag per definire i contenuti dei banner di progetto, e alcuni comportamenti dell'applicazione.


I tag di tipo banner, previsti per la grafica da visualizzare in alto a sx, al centro e a sx, sono composti dai parametri:

image nome della Immagine da posizionare nel banner. L'immagine ha una altezza fissa di 65 pixel, quindi eventuali variazioni in più e in meno vanno verificate. Le dimensioni in larghezza possono essere variabili, orientativamente intorno ai 300 pixel. Il file immagine va posizionato nella cartella dei contenuti statici dell'istanza (../WEB)

color colore di sfondo della porzione di banner in assenza dell'immagine. Generalmente la porzione di banner centrale, la cui funzione rimane di 'riempimento' tra le due laterali, utilizza il color con il colore di fondo delle immagini usate ai lati.

<!--configurazione banner applicativo-->
<bannerLeft image="banner_left_pv.png">  </bannerLeft>
<bannerCenter image="" color="white">  </bannerCenter>
<bannerRight  image="banner_right.png">  </bannerRight>





GwClassSettings: optional, default null. Tag usato per la sovrascrittura delle impostazioni relative alla visualizzazione dei dati delle gwClass Sezione che ospita le configurazioni a livello globale (applicate limitatamente al gwProject corrente), relative a dettaglio e lista di classe:

  1. gwClassDetailSettings: optional, default null. Ospita le configurazioni specifiche del dettaglio di classe. Setting ammessi:
    1. hideActionsDropDownButton: Boolean, optional, default false. Se posta a true nasconde il button 'More options' (aka tre puntini: '…') che ospita le azioni/report lanciabili dall'utente, in cui spesso non viene configurato nulla e quindi si preferisce non farlo comparire
    2. hideActionsDropDownButtonByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideActionsDropDownButton
    3. openingDetailModeByGwClassName: Mappa, optional, default null, Ospita le coppie gwClassName/openingDetailMode dove si può sovrascrivere classe per classe con quale tipologia di detailContainer verrà aperto il dettaglio di classe. Possibili valori openingDetailMode: tab, floatingPane, dialog. Nota: Questo setting depreca il tag classOpeningDetailModeAssociationsList, che era ospitato direttamente sotto il tag geomanager/geoexplorer (se presenti entrambi, viene usata la nuova configurazione)
    4. defaultDetailLayoutNameByGwClassName: Mappa: optional, default null, Ospita le coppie gwClassName/defaultDetailLayoutName dove si può sovrascrivere, limitatamente al progetto, il detailLayout con il quale verrà aperto il dettaglio della classe specificata.
    5. hideDefaultButtons: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde tutti i button di default della bottom toolbar
    6. hideCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Chiudi'
    7. hideCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCloseButton
    8. hideSaveButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Salva'
    9. hideSaveButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideSaveButton
    10. hideSaveAndCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Salva e Chiudi'
    11. hideSaveAndCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideSaveAndCloseButton
    12. hideCreateButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Crea'
    13. hideCreateButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCreateButton
    14. hideCreateAndCloseButton: (da 4.4.13) Boolean, optional, default false. Se posta a true nasconde il button 'Crea e Chiudi'
    15. hideCreateAndCloseButtonByGwClassName: (da 4.4.13) Mappa, optional, default null, Ospita le coppie gwClassName/hide dove si può sovrascrivere classe per classe il valore hideCreateAndCloseButton
  2. gwClassListSettings: optional, default null. Ospita le configurazioni specifiche della lista di classe. Setting ammessi:
    1. hideToolbar: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    2. hideToolbarByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideToolbar (from 4.5.0)
    3. hideNewIgnorePermissions: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    4. hideNewIgnorePermissionsByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideNewIgnorePermissions (from 4.5.0)
    5. hideDeleteIgnorePermissions: Boolean, optional, default false. Se posta a true nasconde la toolbar (from 4.5.0)
    6. hideDeleteIgnorePermissionsByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideDeleteIgnorePermissions (from 4.5.0)
    7. hideActionsDropDownButtonColumn: Boolean, optional, default false. Se posta a true nasconde in lista la colonna che ospita il button 'More options' (aka tre puntini: '…') che ospita le azioni/report lanciabili dall'utente, in cui spesso non viene configurato nulla e quindi si preferisce non farlo comparire
    8. hideActionsDropDownButtonColumnByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideActionsDropDownButtonColumn
    9. hideIndirectSelectionColumn: Boolean, optional, default false. Se posta a true nasconde in lista la colonna che ospita il check per la selezione delle righe
    10. hideIndirectSelectionColumnByGwClassName: Mappa, opzionale, default null. Ospita le coppie gwClassName/hide dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale hideIndirectSelectionColumn
    11. onRowClickGwActionName: String, optional, default null. Nome dell'azione ospitata dentro la gwClass che verrà eseguita al click sul record della lista (from 4.5.0)
    12. onRowClickGwActionNameByGwClassName: Mappa, optional, default null. Ospita le coppie gwClassName/gwActionName dove si può sovrascrivere il comportamento classe per classe. Ha priorità sul parametro globale onRowClickGwActionName (from 4.4.11)
    <gwClassSettings>
 
        <gwClassDetailSettings>
            <hideActionsDropDownButton>true</hideActionsDropDownButton>
            <hideActionsDropDownButtonByGwClassName>
                <entry gwClassName="rqm_request" hide="true"/>
            </hideActionsDropDownButtonByGwClassName>
            <openingDetailModeByGwClassName>
                <entry gwClassName="gw_class_name_2" openingDetailMode="floatingPane"/>
                <entry gwClassName="gw_class_name_3" openingDetailMode="dialog"/>
                <entry gwClassName="gw_class_name_1" openingDetailMode="tab"/>
            </openingDetailModeByGwClassName>
            <defaultDetailLayoutNameByGwClassName>
                <entry gwClassName="gw_class_name" defaultDetailLayoutName="specific_default_detail_layout_name"/>
            </defaultDetailLayoutNameByGwClassName>
            <hideDefaultButtons>false</hideDefaultButtons>
            <hideDefaultButtonsByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideDefaultButtonsByGwClassName>
            <hideCloseButton>false</hideCloseButton>
            <hideCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideCloseButtonByGwClassName>
            <hideSaveButton>false</hideSaveButton>
            <hideSaveButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideSaveButtonByGwClassName>
            <hideSaveAndCloseButton>false</hideSaveAndCloseButton>
            <hideSaveAndCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideSaveAndCloseButtonByGwClassName>
            <hideCreateButton>false</hideCreateButton>
            <hideCreateButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideCreateButtonByGwClassName>
            <hideCreateAndCloseButton>false</hideCreateAndCloseButton>
            <hideCreateAndCloseButtonByGwClassName>
                <entry gwClassName="gw_class_name" hide="true" />
            </hideCreateAndCloseButtonByGwClassName>
        </gwClassDetailSettings>
 
        <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>
            <onRowClickGwActionName>gw_action_name</onRowClickGwActionName>
            <onRowClickGwActionNameByGwClassName>
    		<entry gwClassName="gw_class_name_1" gwActionName="gw_action_name" />
                <entry gwClassName="gw_class_name_2" gwActionName="gw_action_name" />
            </onRowClickGwActionNameByGwClassName>
        </gwClassListSettings>
 
    </gwClassSettings>

GwClassSettings depreca il tag classOpeningDetailModeAssociationsList, inglobandone ed ampliandone funzionalità

    <!--
    sovrascrittura globale apertura dettaglio classe per nome_classe
    @Deprecated by openingDetailModeByGwClassName tag inside gwClassDetailSettings tag
    -->
    <!--
    <classOpeningDetailModeAssociationsList>
        <keyValuePair key="pv_gestori" value="floatingPane"></keyValuePair> /*default*/
        <keyValuePair key="pv_punti_vendita" value="tab"></keyValuePair>
        <keyValuePair key="pv_customer" value="dialog"></keyValuePair>      
    </classOpeningDetailModeAssociationsList>
    -->

gwClassListSettings, matrice supporto parametri globali per componente:

Parametro gwClassList prefilteredList linkList linkListNam hierarchicalFilterMenu
hideToolbar 4.4.11 - - - 4.4.11
hideToolbarByGwClassName 4.4.11 - - - 4.4.11
hideNewIgnorePermissions 4.4.11 - 4.4.11 - 4.4.11
hideNewIgnorePermissionsByGwClassName 4.4.11 - 4.4.11 - 4.4.11
hideDeleteIgnorePermissions 4.4.11 - 4.4.11 - 4.4.11
hideDeleteIgnorePermissionsByGwClassName 4.4.11 - 4.4.11 - 4.4.11
hideActionsDropDownButtonColumn SI SI SI SI -
hideActionsDropDownButtonColumnByGwClassName SI SI SI SI -
hideIndirectSelectionColumn SI SI SI SI -
hideIndirectSelectionColumnByGwClassName SI SI SI SI -
onRowClickGwActionName 4.4.11 NO 4.4.11 - SI
onRowClickGwActionNameByGwClassName 4.4.11 NO 4.4.11 - SI

(SI=supportato, NO=previsto ma non implementato ancora, 4.x.y=supportato dalla versione, -=non applicabile)


mapSettings:

<!-- Sezione di gestione delle mappe associate alle classi -->
<mapSettings>
    <showScaleLineControl>true</showScaleLineControl>
    <showScaleControl>true</showScaleControl>
    <showMousePositionControl>true</showMousePositionControl>
    <showBaseMapChange>true</showBaseMapChange>
    <showLayersManagement>true</showLayersManagement>
    <showThematisms>true</showThematisms>
    <startWithMapSwitcherOpened>true</startWithMapSwitcherOpened>
    <showMapEditing>true</showMapEditing>
    <classMapAssociationsList>
        <keyValuePair key="class_name" value="map_name"/>
    </classMapAssociationsList>
</mapSettings>

planTypeNameGwMapNameHM: Mappa, opzionale, default null. map used to override associations done on 'gwd_plan_type' table, between planType name and gwMap name . TODO In futuro verrà deprecato ed inglobato dentro mapSettings

    <planTypeNameGwMapNameHM>
        <entry planTypeName="Planimetria Architettonico Spazi" gwMapName="floorPlan_prova" />
    </planTypeNameGwMapNameHM>



Il gwMenuTitle è un parametro di progetto che può essere popolato in modo tale da visualizzare, sopra i menù di secondo e terzo livello, delle informazioni specifiche di ogni progetto. In particolare, è possibile aggiungere nel gwMenuTitle una funzione javascript che, tramite un link, permette di scegliere, una volta impostata una classe di partenza, quale elemento della classe visualizzare: in questo modo i parametri in sessione vengono aggiornati per ogni scelta effettuata e il loro valore è reso evidente nella pagina del progetto. Questa funzione si chiama gwChangeElementsInSessionStartup e, modificando le proprietà dell'oggetto che riceve in input, si può scegliere sia il titolo sia la coppia di attributi che si vogliono mostrare.
Visivamente, il risultato della funzione è il seguente: Come si può vedere dalla figura, è presente un titolo (in questo caso è “Immobile: ”) con accanto il codice e, sotto, il nome dell'elemento selezionato: queste ultime due informazioni sono le stesse che popolano i parametri in sessione. Il titolo e il codice formano un link cliccabile che consente di aprire una finestra di selezione in cui sono presenti tutti gli elementi della classe e tra i quali è possibile scegliere quello che si vuole aprire. La funzione gwChangeElementsInSessionStartup deve essere aggiunta nel gwMenuTitle e posta all’interno di un tag script di tipo “dojo/method”. L'oggetto che riceve in ingresso contiene i seguenti valori:

  • className (obbligatorio): è il nome della classe che comprende gli elementi tra cui si va a scegliere quello che si vuole visualizzare. I campi di cui si parla di seguito si riferiscono a questa classe;
  • fieldToStore (obbligatorio): è il nome del campo dell’elemento scelto che deve essere visualizzato nel pannello del gwMenuTitle, vicino alla stringa “menuTitle”;
  • fieldToShow (obbligatorio): è il campo dell’elemento scelto che deve essere visualizzato sotto al precedente (di default è il campo impostato come colonna nome nella classe);
  • session_code_field (obbligatorio): è il nome del parametro in sessione che contiene il campo “fieldToStore” dell’elemento da visualizzare per il progetto corrente;
  • session_code_field_name (obbligatorio): è il nome del parametro in sessione che contiene il campo “fieldToShow” dell’elemento da visualizzare;
  • menuTitle: è la stringa che fa da titolo all’elemento gwMenuTitle e che compare in alto a sinistra, prima del campo “stringToVisualizeIfNoElement” o, se i parametri in sessione sono popolati, prima del campo “fieldToStore”. Di default è una stringa vuota;
  • stringToVisualizeIfNoElement: è la stringa che compare inizialmente vicino al “menuTitle” nel caso in cui non siano ancora presenti elementi in sessione. Il valore di default è “Scegli un elemento”;
  • selectionWinTitle: è il titolo della finestra di selezione che si apre quando si vuole scegliere un nuovo elemento da visualizzare. Di default è una stringa vuota;
  • contPaneParent (obbligatorio): contiene l'identificatore dell’elemento html in cui visualizzare l’intero gwMenuTitle nella pagina del progetto; questo parametro deve sempre avere valore this.id.

Nota: il valore dei parametri di ingresso “session_code_field” e “session_code_field_name” deve essere univoco per ogni progetto, ciò significa che i nomi dei parametri in sessione che contengono i campi di interesse dell'elemento da visualizzare devono essere differenti in ogni progetto, così da evitare che vengano sovrascritti.

<gwMenuTitle> 
  <script type="dojo/method"> 
      gwChangeElementsInSessionStartup({
         'className': 'spm_gwd_pe_building', 
         'fieldToStore': 'cod_building', 
         'fieldToShow': 'name_building', 
         'session_code_field': 'session_building_code', 
         'session_code_field_name': 'session_building_code_name', 
         'menuTitle':'Immobile:', 
         'stringToVisualizeIfNoElement': 'Scegli un immobile', 
         'selectionWinTitle': 'Seleziona edificio', 
         'contPaneParent': this.id 
         }) 
   </script>
</gwMenuTitle> 

Attualmente, la funzione gwChangeElementsInSessionStartup è utilizzabile per visualizzare elementi contenuti in menu di II livello di tipo graphicLayoutByBuildingSwitchMenu. Inoltre, affinché la visualizzazione sia corretta, è necessario aggiungere nell'xml, dentro il tag relativo all’accordion pane, un parametro “session_code_field” che, chiaramente, deve avere lo stesso valore che gli è stato assegnato all’interno della funzione.

<parameter name="session_code_field" value="session_building_code" hideToClient="false"></parameter>



threeDSceneSettings TODO EXPLAIN

externalUrl: String default null. URL to old GeoWeb application or others application TODO EXPLAIN

disabledUserScopeButton: Boolean, default null. TODO EXPLAIN

gwProjectGroovy: String , default null. TODO EXPLAIN

confProperties: String , default null. TODO EXPLAIN

gwMenuTitle: String , default null. TODO EXPLAIN

GeoWeb prevede due tipologie di progetto:

GeoManager: contenitore generico. L'area Schede prevede la visualizzazione dei dati alfanumerici. Questo progetto si può caratterizzare con appositi tipi di 'accordion' per rendere la struttura adatta a mostrare particolare tipi di Contenuto (ad esempio il BIM Explorer).
Esempio di progetto GeoManager

GeoExplorer: contenitore di Mappe. L'area Schede contiene il visualizzatore di Mappe e/o Planimetrie configurato nell'Admin o nei metadati.
Esempio di progetto GeoExplorer


L’Accordion è il controllo utilizzato per ‘contenere’ i menù di secondo livello. Ad ogni voce di menù di primo livello possono corrispondere uno o più accordion.
All’apertura solo il primo accordion verrà visualizzato aperto, mentre gli altri vengono visualizzati chiusi, in basso. Cliccando sulla intestazione dell’accordion, esso verrà aperto chiudendo a sua volta quello aperto precedentemente.

L’accordion può essere un semplice contenitore, oppure può essere strutturato esso stesso come un Menu di accesso ad altri oggetti del progetto.
In particolare, in base all’attributo ‘type’ esso può essere:

  • leafItemContainer tipo semplice, ovvero aperto a contenere altri oggetti (leafItem) di diversa natura
  • integrationMenu visualizzazione di tutti i Temi/Classi (visibili) associati ad un progetto
  • layoutSwitchMenu visualizzazione strutturata di tutte le planimetrie caricate nel progetto
  • to do: completare elenco da lista excel

Il leafitem (elemento foglia) rappresenta la singola voce di un menù di secondo livello e può richiamare nella sezione principale di Geoweb® la visualizzazione di diverse tipologie di Schede, come ad esempio:

  • lista record di una classe di Geoweb®
  • gestione processo (work-flow)
  • cruscotto di reportistica / report html
  • calendario
  • mappa cartografica

Il leafitem può essere strutturato, e rappresentare in maniera complessa l'elenco dei contenuti da cui far partire la visualizzazione delle schede. Ad esempio:

  • albero di navigazione dei layout, per aprire un layout
  • albero di navigazione delle gerarchie di classi, per aprire un determinato sottoinsieme di lista di record

Il leafitem è organizzato con i propri tag nell'XML di Progetto.

  • gwusermanual/interface/interface/menu.txt
  • Ultima modifica: 2023/09/14 10:06
  • da giorgio.scali