Aggiungere il proprio JavaScript
Regola
Aggiunge un po” di JavaScript (JS) è utile per una varietà di usi avanzati. Per esempio, è possibile:
nasconde alcuni elementi dell’interfaccia utente che non si desidera visualizzare di default
aggiungere un pulsante personalizzato nell’interfaccia utente
aggiungere un popup quando il progetto viene aperto (per visualizzare i finanziatori, i crediti…)
evitare che la gente possa scaricare elementi della pagina cliccandovi sopra con il tasto destro, e naturalmente molto di più.
Prerequisiti
Questa funzione deve essere attivata dall’amministratore dell’istanza Lizmap.
La cartella
media
. Leggi come usare la cartella Media in Lizmap.
Configurazione del plugin
Nel tuo repository (ad esempio
/home/data/repo1/myproject.qgs
), dovresti avere queste directory:media |-- js |-- myproject |-- default
Tutto il codice JavaScript che copiate nella directory
/home/data/rep1/media/js/myproject/
sarà eseguito da Lizmap solo per questo specifico progetto.Tutto il codice JavaScript in
default
sarà eseguito per tutti i progetti.Per permettere l’esecuzione di codice JavaScript, nell’interfaccia di amministrazione di Lizmap, si deve aggiungere il privilegio Allow themes for this repository.
Video tutorial
This video is an quick start how to add a JavaScript to change the default panel in Lizmap.
Libreria di scripts
You can find some examples in the JavaScript library on GitHub.
Also, in the directory lizmap-web-client/lizmap/install/qgis/media/js/
(or in
GitHub),
you can find examples of suitable JavaScript code.
Rimuovi l’estensione .example
e copiali nella tua cartella media/js/default/
per attivarli.
API documentation
An automated generated documentation of the JavaScript API is available on docs.3liz.org.
Eventi Javascript disponibili
Il codice Javascript può utilizzare molti eventi generati da Lizmap Web Client. Ecco una lista di tutti gli eventi disponibili, con le proprietà restituite.
Nome evento |
Descrizione |
Proprietà restituite |
---|---|---|
treecreated |
Generato quando l’albero dei livelli è stato creato nel pannello della leggenda |
|
mapcreated |
Emesso quando una mappa OpenLayers è stata creata |
|
layersadded |
Emesso quando livelli Openlayers sono stati aggiunti |
|
uicreated |
Emesso quando l’interfaccia è stata creata |
|
dockopened |
Emesso quando un dock è aperto (pannello a sinistra) |
id |
dockclosed |
Emesso quando un dock viene chiuso (pannello a sinistra) |
id |
minidockopened |
Emesso quando un mini-dock (contenitore destro per gli strumenti) viene aperto |
id |
minidockclosed |
Emesso quando un mini-dock viene chiuso |
id |
bottomdockopened |
Emesso quando il dock in basso è aperto |
id |
bottomdockclosed |
Emesso quando il dock in basso è chiuso |
id |
lizmapbaselayerchanged |
Emesso quando il baselayer è stato modificato |
layer |
lizmapswitcheritemselected |
Emesso quando un livello è stato evidenziato nel pannello della legenda dei livelli |
name | type | selected |
layerstylechanged |
Emesso quando un layer style è stato modificato |
featureType |
lizmaplocatefeaturecanceled |
Emesso quando l’utente ha annullato lo strumento di localizzazione per livello |
featureType |
lizmaplocatefeaturechanged |
Emesso quando l’utente ha selezionato un elemento nello strumento di localizzazione per livello |
featureType | featureId |
lizmappopupdisplayed |
Emesso quando il contenuto del popup viene visualizzato |
|
lizmappopupallchildrendisplayed |
Emesso quando vengono visualizzati i popup di tutti i figli |
parentPopupElement | childPopupElements |
lizmappopupdisplayed_inattributetable |
Emesso quando il contenuto del popup viene visualizzato nella tabella degli attributi (sotto-pannello destro) |
|
lizmapeditionformdisplayed |
Emesso quando viene visualizzato un modulo di edit |
layerId | featureId | editionConfig |
lizmapeditionfeaturecreated |
Emesso quando un elemento del livello è stato creato con lo strumento di edit |
layerId |
lizmapeditionfeaturemodified |
Emesso quando un elemento del livello è stato modificato con lo strumento di edit |
layerId |
lizmapeditionfeaturedeleted |
Emesso quando un elemento del livello è stato cancellato con lo strumento di edit |
layerId | featureId |
attributeLayersReady |
Emesso quando tutti i livelli da visualizzare nello strumento dei livelli degli attributi sono stati impostati |
layers |
attributeLayerContentReady |
Emesso quando una tabella per un livello è stata visualizzata nel dock inferiore |
featureType |
layerfeaturehighlighted |
Emesso quando un elemento è stato evidenziato nella tabella degli attributi (rettangolo grigio). L’esecuzione manuale di questo evento forza un aggiornamento delle tabelle figlie, per il livello, se ne esistono |
sourceTable | featureType | fid |
layerfeatureselected |
Emetti questo evento per innescare la selezione di un elemento per un livello, passando l’id dell’elemento. Una volta che la selezione è stata fatta, l’evento layerSelectionChanged viene emesso in ritorno. |
featureType | fid | updateDrawing |
layerfeaturefilterselected |
Emettere questo evento per innescare il filtro di un livello per gli elementi selezionati. È necessario selezionare alcune caratteristiche prima di scatenare questo evento. Una volta che il filtro è applicato, Lizmap restituisce l’evento layerFilteredFeaturesChanged. |
featureType |
layerFilteredFeaturesChanged |
Emesso quando un filtro è stato applicato alla mappa per un livello. Questo evento attiva anche il ridisegno della mappa e il contenuto delle tabelle degli attributi. |
featureType | featureIds | updateDrawing |
layerFilterParamChanged |
Emesso quando i parametri richiesti dal WMS sono cambiati per un livello. Per esempio quando uno STILE o un FILTRO è stato modificato per il livello. |
featureType | filter | updateDrawing |
layerfeatureremovefilter |
Emettere questo evento per rimuovere qualsiasi filtro applicato alla mappa. Una volta fatto, l’evento layerFilteredFeaturesChanged viene restituito e il contenuto della mappa e delle tabelle degli attributi viene aggiornato. |
featureType |
layerSelectionChanged |
Emesso quando la selezione è stata cambiata per un livello. Questo attiva anche il ridisegno del contenuto della tabella degli attributi e del contenuto della mappa |
featureType | featureIds | updateDrawing |
layerfeatureselectsearched |
Attiva questo evento per selezionare tutte le caratteristiche corrispondenti alle righe visualizzate della tabella degli attributi, che possono essere filtrate visivamente dall’utente inserendo alcuni caratteri nell’input del testo di ricerca. |
featureType | updateDrawing |
layerfeatureunselectall |
Emetti questo evento per rimuovere tutte le caratteristiche dalla selezione di un livello. Una volta fatto, Lizmap risponde con l’evento layerSelectionChanged |
featureType | updateDrawing |
lizmapexternalsearchitemselected |
Emesso quando l’utente ha selezionato un elemento elencato nei risultati dell’input di ricerca dell’intestazione |
feature |
actionResultReceived |
Emesso quando un’azione popup Lizmap è stata eseguita e il risultato è stato ricevuto |
layerId | featureId | action | features |
Ci sono anche alcune variabili che sono disponibili.
Nome variabile |
Descrizione |
---|---|
lizUrls.media |
URL to get a media |
lizUrls.params.repository |
Nome del repository attuale |
lizUrls.params.project |
Nome del progetto attuale |
Esempi
Legend API
For a given layer buildings
:
var layer = lizMap.mainLizmap.state.rootMapGroup.getMapLayerByName('buildings');
// Name of the current loaded style
layer.wmsSelectedStyleName
// Toggle true or false the layer in the legend
layer.checked = true;
Please have a look to existing online demo, like the Paris by night
Disabilita il click destro
Aggiungi un file chiamato es. disableRightClick.js
con il seguente codice:
lizMap.events.on({
uicreated: function(e) {
$('body').attr('oncontextmenu', 'return false;');
}
});
Se vuoi che questo codice sia eseguito per tutti i progetti del tuo repository, devi copiare il file nella directory
/home/data/rep1/media/js/default/
piuttosto che in/home/data/rep1/media/js/myproject/
.
Invia il login user-ID corrente
Un esempio che permette di inviare l’ID utente di accesso corrente (e/o altri dati utente) alla colonna della tabella PostgreSQL, utilizzando lo strumento di edit:
var formPrefix = 'jforms_view_edition';
// Name of the QGIS vector layer fields which must contain the user info
// In the list below, replace the right side by your own fields in Lizmap
var userFields = {
login: 'your_lizmap_user_login_field',
firstname: 'your_lizmap_user_firstname_field',
lastname: 'your_lizmap_user_lastname_field'
};
lizMap.events.on({
'lizmapeditionformdisplayed': function(e){
// If user is logged in
if( $('#info-user-login').length ){
// Loop through the needed fields
for( var f in userFields ){
// If the user has some data for this property
if( $('#info-user-' + f).text() ){
// If the field exists in the form
var fi = $('#' + formPrefix + '_' + userFields[f]);
if( fi.length ){
// Set val from lizmap user data
fi.val( $('#info-user-' + f).text() )
// Set disabled
fi.hide();
}
}
}
}
}
});
URL di un file statico
Se vuoi ottenere l’URL di un file statico, situato nella cartella Media:
var media = '/media/image/logo.jpg';
// It can also be a media located in the common media folder such as
// var media = '../media/logo.png';
var url = lizUrls.media + '?repository=' + lizUrls.params.repository + '&project=' + lizUrls.params.project + '&path=' + media;
// console.log(url);
var image = '<img src="' + url + '" title="Logo" style="display:inline;height:80px;margin:20px 10px;" />';
It’s possible to use a function from the OpenLayers library to help building the URL :
var mediaUrl = OpenLayers.Util.urlAppend(
lizUrls.media,
OpenLayers.Util.getParameterString({
"repository": lizUrls.params.repository,
"project": lizUrls.params.project,
"path": "picture.png"
})
);