Skip to content

Guía de desarrollo componentes

IngenieroGeomatico edited this page Aug 12, 2024 · 1 revision

Guía de desarrollo de componentes

Para desarrollar componentes en la API-CNIG:

  1. Crear una carpeta con el componente, esta carpeta se recomienda que esté en la raíz del proyecto.
    Este directorio tiene que contener un archivo pom.xml, que debe contener las dependencias necesarias para usar el componente y la sección del "parent", igual que tienen el resto de componentes. Con esta sección, nuestro componente puede heredar algunas propiedades del POM principal (artefacto padre).

Por ejemplo, si se creara un nuevo componente llamado "api-ign-module", el archivo pom.xml quedaría de la siguiente forma:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <artifactId>api-ign-module</artifactId>
   <packaging>pom</packaging>
   <name>API IGN MODULE</name>
   <!-- SECCION DEL PARENT -->
   <parent>
     <groupId>es.ign.api</groupId>
      <artifactId>api-ign-parent</artifactId>
      <version>4.4.0</version>
      <relativePath>../api-ign-parent/pom.xml</relativePath>
   </parent>
   <!---->
</project>

Dependiendo del componente se tendrá que definir que dependencias y que proceso de "build" se necesita seguir. Por ejemplo, si se quiere cargar un componente de JavaScript quedaría de la siguiente forma:

   <build>
      <finalName>api-core</finalName>
      <plugins>
         <plugin>
            <groupId>com.github.eirslett</groupId>
            <artifactId>frontend-maven-plugin</artifactId>
            <version>1.6</version>
            <configuration>
               <workingDirectory></workingDirectory>
            </configuration>
            <executions>
               <!-- INSTALL NODE AND NPM -->
               <execution>
                  <id>install node and npm</id>
                  <goals>
                     <goal>install-node-and-npm</goal>
                  </goals>
                  <phase>generate-resources</phase>
                  <configuration>
                     <nodeVersion>v12.18.4</nodeVersion>
                     <npmVersion>6.14.8</npmVersion>
                     <!--<nodeDownloadRoot>http://nodejs.org/dist/</nodeDownloadRoot>
                        <npmDownloadRoot>http://nodejs.org/dist/</npmDownloadRoot> -->
                  </configuration>
               </execution>
               <!-- RUNNING NPM -->
               <execution>
                  <id>run npm install</id>
                  <goals>
                     <goal>npm</goal>
                  </goals>
                  <phase>generate-resources</phase>
                  <configuration>
                     <arguments>install</arguments>
                  </configuration>
               </execution>
               <!-- RUNNING NPM BUILD -->
               <execution>
                  <id>run npm build</id>
                  <goals>
                     <goal>npm</goal>
                  </goals>
                  <phase>generate-resources</phase>
                  <configuration>
                     <arguments>run build</arguments>
                  </configuration>
               </execution>
            </executions>
         </plugin>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <executions>
               <execution>
                  <id>packed build javascript</id>
                  <goals>
                     <goal>single</goal>
                  </goals>
                  <phase>package</phase>
                  <configuration>
                     <descriptors>
                        <descriptor>assembly/dist-resources.xml</descriptor>
                        <descriptor>assembly/doc-resources.xml</descriptor>
                        <descriptor>assembly/templates-resources.xml</descriptor>
                     </descriptors>
                  </configuration>
               </execution>
            </executions>
         </plugin>
      </plugins>
   </build>

Todo esto se realiza dentro de la etiqueta <build>, se usan los plugins necesarios para definir que versión de Node.js y de NPM se va a utilizar, genera el "build" con los archivos minificados, ...

  1. Se tiene que configurar el archivo pom.xml que se encuentra dentro de la carpeta api-ign-parent, añadiendo a la etiqueta modules un nuevo componente, por ejemplo "api-ign-module" que quedaría de la siguiente forma:
   <modules>
      <module>../api-ign-js</module>
      <module>../api-ign-proxy</module>
      <module>../api-ign-database</module>
      <module>../api-ign-rest</module>
      <module>../api-ign-module</module>
   </modules>

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
     + MapLibre
   • 2.1.1.2. Capas ráster
     + WMS
     + WMTS
     + TMS
     + XYZ
     + OSM
     + MBTiles
     + GenericRaster
     + GeoTIFF
   • 2.1.1.3. Capas rápidas
   • 2.1.1.4. Grupo de capas

 ■ 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

  > Creación de plugin en cliente

  » Tutorial de creación de un plugin

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 para el desarrollo de API-CNIG
  » Tutorial desarrollo del núcleo de API-CNIG - (Cliente)
  > Guía de desarrollo de componentes
  » Tutorial desarrollo del núcleo de API-CNIG - (Servidor)
  > Guía de desarrollo de plugins
  » Tutorial desarrollo de plugins ya creados
  » Tutorial desarrollo de nuevos plugins
  > Guía de desarrollo de visualizadores con React

  > Compilación proyecto API-CNIG

Clone this wiki locally