Skip to content

Gestión de parámetros

gdtel-cnig-develop edited this page Jun 7, 2023 · 7 revisions

Supongamos que nuestro plugin acepta en su método constructor uno o varios parámetros que necesita usar internamente, o en su vista/template. Por ejemplo, que muestre en un selector html una serie de escalas pasadas al plugin:

const myPlugin = new M.plugin.miplugin({
      "escalas": [{
          "valor": "1250000",
          "numero": "1.000.000"
        }, {
          "valor": "1000000",
          "numero": "800.000"
        }, {
          "valor": "625000",
          "numero": "500.000"
        }
      });

Los parámetros que recibe están en formato json. En este caso, consiste en un array 'escalas' de tuplas 'valor/numero'. En el método constructor del plugin, necesitamos por tanto declarar este parámetro, que podremos guardar en el atributo correspondiente:

// facade/js/miplugin.js
constructor(params) {
   super();
   this.escalas_ = params.escalas;
});

addTo(map) {
   // Pasamos el parametro al control
   let miControl = new M.control.mipluginControl(this.escalas_);
...
// facade/js/mipluginControl.js
constructor(scales) 
{
...
     this.escalas_ = scales;
...

Y en el método createView del control, que es cuando se procesa el template, se le pueden pasar los parámetros a través de la propiedad vars, que son accedidos mediante notación Handlebars.

// facade/js/mipluginControl.js
createView(map) {
  let this_ = this;    
  let promise = new Promise((success, fail) => {
    M.template.compile('miplugin.html', {
      'vars': {
        'escalas': this_.escalas_
      }
    }).then(function(html) {
      this_.addEvents(html);
      success(html);
    });   
  });
  return promise;
}

💡 Estamos lanzando la compilación de la plantilla como Promise ya que queremos asociar eventos a la misma, y para ello debemos esperar a que esté compilada.

De esta manera, en la propia plantilla podremos acceder al parámetro tratándolo como el objeto json que es. En este caso, queremos que un selector html contenga una opción de selección 'option' por cada posible escala que ha recibido el constructor:

<!--template/miplugin.html-->
<div class="m-scaleSelector-container" id="miplugin-container">
  <div>Escala = 1 :
    <select id="SelectEscala" class="m-scaleSelector-select">
      {{#each escalas}}
      <option value="{{valor}}">{{numero}}</option>
      {{/each}}
    </select>
  </div>   
</div>

En la plantilla podemos usar semántica handlebars.

1.INICIO
   1.1. Componentes de la API-CNIG
   1.2. Documentación y Puntos de acceso
   1.3. Primeros pasos
   1.4. Diagrama API CNIG

2. MAPA
2.1. Capas

 ■ 2.1.1. Fuentes
   • 2.1.1.1. Capas vectoriales
     + Vector
     + WFS
     + GeoJSON
     + KML
     + MVT
     + OGCAPIFeatures
     + MBTilesVector
     + GenericVector
   • 2.1.1.2. Capas ráster
     + WMS
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
   • 2.1.1.3. Capas rápidas

 ■ 2.1.2. Simbolización
   • 2.1.2.1. Genérica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.2. Básica
     + Puntos
     + Líneas
     + Polígonos
   • 2.1.2.3. Avanzada
     + Coropletas
     + Proporcional
     + Categorías
     + Estadísticos
     + Mapas de Calor
     + Cluster
     + Línea de flujo
     + Composición

 ■ 2.1.3. Filtros

    2.3. Plugins

2.4. Paneles

  ■ Creación de panel desde cero sin controles

  ■ Tutorial Panel de un único control

  ■ Tutorial Panel de un único control con más de un botón

  ■ Tutorial Panel con más de un control

2.5. Eventos

  ■ Gestión de eventos
  ■ Gestión de eventos en controles personalizados

    2.6. Internacionalización

    2.7. Configuración

    2.8. Acceso librerías base

3. UTILIDADES

4. PROXY

5. API REST
 5.1. Parametrización API-REST
 5.2. Base de Datos API-REST
 5.3. API REST Actions
 5.4. Servicio de correos electrónicos
 5.5. Capas rápidas

6. PARAMETRIZACIÓN VISUALIZADORES

7. SOLUCIÓN DE PROBLEMAS

8. PROCESO DE VERSIONADO

9. GUÍA DE DESARROLLO
  > Guía de desarrollo de plugins
  > Guía de desarrollo de visualizadores con React
  > Guía de desarrollo de componentes
  > Guía para el desarrollo de API-CNIG
  > Compilación proyecto API-CNIG

Clone this wiki locally