inseecity/script.js
2023-10-12 19:59:08 +02:00

58 lines
1.8 KiB
JavaScript

/**
* @license http://www.cecill.info/licences/Licence_CeCILL-B_V1-fr.html
* @author Francois Merciol <dokuplugin@merciol.fr>
*
* INSEE city: code database
*
* Sources :
* https://www.insee.fr/fr/information/4316069
* http://www.geonames.org/export/codes.html
* http://download.geonames.org/export/dump/
*/
var inseeCityDep;
var inseeCityName;
var inseeCityNameInsee;
var inseeCityNameLatLon;
var inseeCityNameLatLonDep;
if (inseeCityNameLatLonDep === undefined)
inseeCityNameLatLonDep = new Map ();
jQuery (function () {
inseeCityDep = JSINFO['inseeCity']['selectedDeps'];
inseeCityMaxAutocomplete = JSINFO['inseeCity']['maxAutocomplete'];
inseeCityName = new Array ();
inseeCityNameInsee = new Array ();
inseeCityNameLatLon = new Map ();
inseeCityDep.forEach ( (dep, index) => {
for (var cityCode in inseeCityNameLatLonDep[dep]) {
inseeCityNameLatLon [cityCode] = inseeCityNameLatLonDep[dep][cityCode];
inseeCityName.push (inseeCityNameLatLon[cityCode][0]+" ("+cityCode+")");
inseeCityNameInsee [inseeCityNameLatLon[cityCode][0].toLowerCase ()] = cityCode;
}
});
inseeCityName.sort ();
/* autocomplete */
jQuery ('.insee input[name="city"]').autocomplete ({
source: inseeCityName,
source: function (request, response) {
var upper = request.term.toUpperCase ();
var results = jQuery.ui.autocomplete.filter (inseeCityName, request.term);
var startsWith = [];
jQuery.each (results, function (i, v) {
if (v.toUpperCase ().indexOf (upper) == 0)
startsWith.push (v);
});
results = results.slice (0, inseeCityMaxAutocomplete);
jQuery.each (results, function (i, v) {
if (v.toUpperCase ().indexOf (upper) != 0)
startsWith.push (v);
});
response (startsWith.slice (0, inseeCityMaxAutocomplete));
}
});
});