Skip to content

Commit

Permalink
release 3.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
elias75015 committed Mar 23, 2022
2 parents 4eda4ac + d005bfe commit fc92cab
Show file tree
Hide file tree
Showing 22 changed files with 333 additions and 784 deletions.
11 changes: 5 additions & 6 deletions DRAFT_CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
# Bibliothèque d'accès aux services Géoportail, version 3.0.6
# Bibliothèque d'accès aux services Géoportail, version 3.1.0

**25/01/2022 : 3.0.6**
**23/03/2022 : 3.1.0**

> release of geoportal access library
## Summary

Mise à jour de la documentation pour utilisation de clefs génériques multiples

## Changelog

* [Added]

* [Changed]

- refactorisation de la page de documentation pour récupérer l'autoconf en local (#78)
- mise à jour du readme et de la jsdoc (#79 et #80)
- utilisation du service d'isochrone v2 (#70)

* [Removed]

* [Fixed]

- fix coquille chemin vers GpServices dans le tutorial getconfig local

* [Deprecated]

* [Security]
2 changes: 1 addition & 1 deletion doc/tutorials/optimize-getconfig-english.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Click the "Get Config File" button.
</p>
</section>
</form>
<script type="text/javascript" src="../../dist/GpServices.js"></script>
<script type="text/javascript" src="./../dist/GpServices.js"></script>
<script type="text/javascript">
document.getElementById("keyNumber").addEventListener('change', createInput);
document.getElementById("keyNumber").value = 1; //reset the key number input
Expand Down
2 changes: 1 addition & 1 deletion doc/tutorials/optimize-getconfig.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Cliquez sur le bouton "Récupérer le fichier de configuration".
</p>
</section>
</form>
<script type="text/javascript" src="../../dist/GpServices.js"></script>
<script type="text/javascript" src="./../dist/GpServices.js"></script>
<script type="text/javascript">
document.getElementById("keyNumber").addEventListener('change', createInput);
document.getElementById("keyNumber").value = 1; //reset the key number input
Expand Down
Binary file removed geoportal-access-lib-3.0.3.tgz
Binary file not shown.
Binary file added geoportal-access-lib-3.0.6.tgz
Binary file not shown.
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "geoportal-access-lib",
"version": "3.0.6",
"date": "25/01/2022",
"version": "3.1.0",
"date": "23/03/2022",
"description": "French Geoportal resources access library",
"module": "src/Gp.js",
"main": "dist/GpServices-src.js",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ <h2>Avec les paramètres obligatoires seulement</h2>
<code>
var options = {
apiKey : "{{ apikey }}",
serverUrl : "https://wxs.ign.fr/calcul/geoportail/isochrone/rest/1.0.0/isochrone",
onSuccess : function (response) {
print(response);
},
Expand All @@ -32,6 +33,7 @@ <h2>Avec les paramètres obligatoires seulement</h2>
{{#content "js"}}
var options = {
apiKey : "{{ apikey }}",
serverUrl : "https://wxs.ign.fr/calcul/geoportail/isochrone/rest/1.0.0/isochrone",
onSuccess : function (response) {
print(response);
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ <h2>Avec les paramètres obligatoires seulement</h2>
<code>
var options = {
apiKey : "{{ apikey }}",
serverUrl : "https://wxs.ign.fr/calcul/geoportail/isochrone/rest/1.0.0/isochrone",
onSuccess : function (response) {
print(response);
},
Expand All @@ -32,6 +33,7 @@ <h2>Avec les paramètres obligatoires seulement</h2>
{{#content "js"}}
var options = {
apiKey : "{{ apikey }}",
serverUrl : "https://wxs.ign.fr/calcul/geoportail/isochrone/rest/1.0.0/isochrone",
onSuccess : function (response) {
print(response);
},
Expand Down
1 change: 1 addition & 0 deletions samples-src/pages/ProcessIsoCurve/pages-jsfiddle.html
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ <h2>Utilisation de Gp.Services.isoCurve() avec modulation des paramètres <a hre
graph: graph,
reverse: reverse,
apiKey: "{{ apikey }}",
serverUrl : "https://wxs.ign.fr/calcul/geoportail/isochrone/rest/1.0.0/isochrone",
onSuccess: function(result) {
resultDiv.innerHTML = "<p>" + JSON.stringify(result) + "</p>"
},
Expand Down
10 changes: 2 additions & 8 deletions src/Services/DefaultUrlService.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,20 +108,14 @@ var DefaultUrlService = {
* @property {Function} url (key) - Returns isocurve service default urls with or without geoportal access key given as a parameter. The result is a javascript object with different urls given used protocols ("iso-json" or "iso-xml").
*/
ProcessIsoCurve : {
_key : {
"iso-json" : "/isochrone/isochrone.json", // rest (geoconcept)
"iso-xml" : "/isochrone/isochrone.xml" // rest (geoconcept)
},
_key : "/geoportail/isochrone/rest/1.0.0/isochrone",
/**
* url
* @param {String} key - key
* @returns {String} url
*/
url : function (key) {
return {
"iso-json" : DefaultUrlService.url(key, this._key["iso-json"]),
"iso-xml" : DefaultUrlService.url(key, this._key["iso-xml"])
};
return DefaultUrlService.url(key, this._key);
}
},
/**
Expand Down
133 changes: 99 additions & 34 deletions src/Services/ProcessIsoCurve/ProcessIsoCurve.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,9 @@ import ProcessIsoCurveResponseFactory from "./Response/ProcessIsoCurveResponseFa
* @alias Gp.Services.ProcessIsoCurve
* @param {Object} options - options spécifiques au service (+ les options heritées)
*
* @param {String} options.outputFormat - Le format de la réponse du service iso : 'xml' ou 'json'.
* Ce paramètre déterminera l'extension '.xml' ou '.json' du service.
* Nécessaire si serverUrl est renseigné pour connaître le format dans lequel sera fournie la réponse (pour son traitement).
* Par défaut, ce paramètre vaut 'json'.
* @param {String} options.resource - La ressource utilisée pour le calcul. Ce paramètre devrait être obligatoire car il l'est dans l'appel au service. Mais il ne l'est pas pour des raisons de rétrocompatibilité.
*
* @param {String} options.outputFormat - Le format de la réponse du service iso : 'json' uniquement et par défaut.
*
* @param {Object} options.position - Point de départ du calcul.
* Coordonnées exprimées en longitudes, latitudes (EPSG:4326)
Expand All @@ -36,14 +35,25 @@ import ProcessIsoCurveResponseFactory from "./Response/ProcessIsoCurveResponseFa
* @param {String} [options.graph = "voiture"] - Nom du graphe à utiliser pour le calcul (« Pieton » ou « Voiture »).
* La valeur par défaut est : «voiture»
*
* @param {Array.<String>} [options.exclusions] - Critères d'exclusions à appliquer pour le calcul.
* @param {Array.<String>} [options.exclusions] - DEPRECATED: Ce paramètre est conservé pour une rétrocompatibilité de l'api. Le nouveau paramètre à utiliser est options.constraints.
* Critères d'exclusions à appliquer pour le calcul.
* On précise ici le type de tronçons que l'on ne veut pas que l'isochrone/distance emprunte
* (valeurs possibles : « toll » (éviter les péages), « bridge », « tunnel »).
*
* @param {Object[]} [options.constraints] - Critères de contraintes à appliquer sur un itinéraire. Les valeurs disponibles dépendent de la ressource utilisée. Il est donc utile de regarder le getCapabilities.
* @param {String} [options.constraints.constraintType] - Type de la contrainte. Généralement "banned".
* @param {String} [options.constraints.key] - Clé de la contrainte. Généralement "wayType".
* @param {String} [options.constraints.operator] - Opérateur de la contrainte. Généralement "=".
* @param {String} [options.constraints.value] - Valeur de la contrainte. Généralement "autoroute".
*
* @param {String} [options.method = "time"] - Méthode utilisée pour le calcul de la courbe iso.
* Les valeurs possible sont "time" pour un calcul d'isochrone, "distance" pour un calcul d'isodistance.
* Pas de valeur spécifié équivaut à un calcul d'isochrone.
*
* @param {String} [options.distanceUnit = "m"] - Indique si la distance doit être exprimée en km ou m dans la réponse ("m" or "km").
*
* @param {String} [options.timeUnit = "second"] - Indique si la durée doit être exprimée en seconde, minute ou heure dans la réponse ("standard", "second", "minute", "hour"). Il peut-être formatté hh:mm::ss avec la valeur standard.
*
* @param {Float} options.time - Durée maximum (exprimée en secondes) à utiliser pour le calcul de la courbe à partir du ou jusqu'au point « location ».
* Ce paramètre doit être renseigné si l'option "méthod" a la valeur "time".
* Si l'option method n'est pas renseignée, ce paramètre doit être renseigné.
Expand Down Expand Up @@ -82,11 +92,8 @@ import ProcessIsoCurveResponseFactory from "./Response/ProcessIsoCurveResponseFa
* distance : 200,
* [time : ]
* method : "distance",
* exclusions : ["Bridge", "Tunnel", "Toll"],
* graph : "voiture",
* reverse : false,
* smoothing : false,
* holes : false
* reverse : false
* };
* @private
*/
Expand Down Expand Up @@ -149,46 +156,104 @@ function ProcessIsoCurve (options) {
this.options.method = this.options.method || "time";

// options par defaut du service
this.options.exclusions = options.exclusions || null;
this.options.graph = options.graph || "Voiture"; // TODO test de la valeur à faire !
// TODO: modifier la ressource lors de la mise en production du service
this.options.resource = options.resource || "bdtopo-iso";
this.options.exclusions = options.exclusions || [];
this.options.reverse = options.reverse || false;
this.options.smoothing = options.smoothing || false;
this.options.holes = options.holes || false;
this.options.srs = options.srs || "EPSG:4326";
this.options.distanceUnit = options.distanceUnit || "m";
this.options.timeUnit = options.timeUnit || "second";

// options depreciees
if (options.smoothing) {
this.logger.warn("options.smoothing is DEPRECATED");
}
this.options.smoothing = false;
if (options.holes) {
this.logger.warn("options.holes is DEPRECATED");
}
this.options.holes = false;

// Gestion du graphe
if (options.graph) {
if (options.graph === "Voiture") {
this.options.graph = "car";
}
if (options.graph === "Pieton") {
this.options.graph = "pedestrian";
}
} else {
this.options.graph = "car";
}

// Gestions des contraintes
this.options.constraints = [];
if (options.constraints) {
if (Array.isArray(options.constraints)) {
for (var k = 0; k < options.constraints.length; k++) {
this.options.constraints.push(options.constraints[k]);
}
} else {
throw new Error(_.getMessage("PARAM_TYPE", "constraints"));
}
}

// Gestion de l'ancien paramètre exclusions
var constraintTunnel = {};
var constraintPont = {};
var constraintAutoroute = {};
if (options.exclusions) {
if (options.exclusions.length !== 0) {
this.logger.warn("options.exclusions is DEPRECATED !!");
for (var c = 0; c < options.exclusions.length; c++) {
if (typeof options.exclusions[c] === "string") {
options.exclusions[c] = options.exclusions[c].toLowerCase();
} else {
// on ne crée pas une erreur pour rétro-compatibilité avec les anciennes versions
continue;
}
if (options.exclusions[c] === "toll") {
constraintAutoroute.constraintType = "banned";
constraintAutoroute.key = "wayType";
constraintAutoroute.operator = "=";
constraintAutoroute.value = "autoroute";
this.options.constraints.push(constraintAutoroute);
}
if (options.exclusions[c] === "tunnel") {
constraintTunnel.constraintType = "banned";
constraintTunnel.key = "wayType";
constraintTunnel.operator = "=";
constraintTunnel.value = "tunnel";
this.options.constraints.push(constraintTunnel);
}
if (options.exclusions[c] === "bridge") {
constraintPont.constraintType = "banned";
constraintPont.key = "wayType";
constraintPont.operator = "=";
constraintPont.value = "pont";
this.options.constraints.push(constraintPont);
}
}
}
}

// on passe l'option outputFormat en minuscules afin d'éviter des exceptions.
this.options.outputFormat = (typeof options.outputFormat === "string") ? options.outputFormat.toLowerCase() : "json";
if (options.outputFormat && options.outputFormat !== "json") {
throw new Error(_.getMessage("PARAM_NOT_SUPPORT", "outputFormat"));
}
this.options.outputFormat = "json";

// gestion de l'url du service par defaut
// si l'url n'est pas renseignée, il faut utiliser les urls par defaut
if (!this.options.serverUrl) {
var lstUrlByDefault = DefaultUrlService.ProcessIsoCurve.url(this.options.apiKey);

var urlFound = lstUrlByDefault["iso" + "-" + this.options.outputFormat];
var urlFound = DefaultUrlService.ProcessIsoCurve.url(this.options.apiKey);
if (!urlFound) {
throw new Error("Url by default not found !");
}
this.options.serverUrl = urlFound;
this.logger.trace("Serveur URL par defaut : " + this.options.serverUrl);
}

// gestion du type de service
// si l'extension de l'url est .json ou .xml, on surcharge le format de sortie (outputFormat)
var idx = this.options.serverUrl.lastIndexOf(".");
if (idx !== -1) {
var extension = this.options.serverUrl.substring(idx + 1);
if (extension && extension.length < 5) { // FIXME extension de moins de 4 car. ...
this.logger.trace("Serveur Extension URL : " + extension);
switch (extension.toLowerCase()) {
case "json":
case "xml":
this.options.outputFormat = extension.toLowerCase();
break;
default:
throw new Error("type of service : unknown or unsupported (json or xml) !");
}
}
}
}

/**
Expand Down
Loading

0 comments on commit fc92cab

Please sign in to comment.