diff -r 5598bad67f8d -r f8200c5482ec cms/app-client/lib/scripts/prepare_maps.js --- a/cms/app-client/lib/scripts/prepare_maps.js Fri Oct 21 16:54:02 2016 +0200 +++ b/cms/app-client/lib/scripts/prepare_maps.js Sun Oct 23 01:07:09 2016 +0200 @@ -5,6 +5,7 @@ const request = require('request'); const _ = require('lodash'); const fs = require('fs'); +const http = require('http'); const continentGeonamesIds = { 'africa': '6255146', @@ -97,24 +98,70 @@ require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/france2016Low.js')); -function convert_path_id(map, ids) { - map['svg']['g']['path'] = _.map(map['svg']['g']['path'], function(path) { - return _.defaults( { 'id': ids[path['id']] } ,path ); - }) - return map; +const geonamesUsername = process.argv[2]; + +http.globalAgent.maxSockets = 20; + +function requestq(url) { + var deferred = Q.defer(); + request(url, (error, resp, body) => { + if (!error && resp.statusCode == 200) { + deferred.resolve(body); + } else { + defaultStatus.reject(error, resp); + } + }); + return deferred.promise; } -fs.writeFileSync( - path.join(__dirname,'..','..','vendor/data/maps/france2016Low.js'), - "AmCharts.maps.france2016Low=" + JSON.stringify(convert_path_id(AmCharts.maps.france2016Low, regionsGeonamesIds), null, '\t') -); +function convert_path_id(map, ids) { + return Q.all(_.map(map['svg']['g']['path'], (path) => { + let geonamesId = ids[path['id']]; + return requestq("http://api.geonames.org/getJSON?formatted=true&geonameId="+geonamesId+"&username="+geonamesUsername+"&style=full").then((body)=>{ + let geoInfo = JSON.parse(body); + let name = null; + _.each(geoInfo["alternateNames"], (alName) => { + if(alName['lang'] == 'fr' && (alName['isPreferredName'] || name == null) && !alName['isHistoric']) { + name = alName['name']; + } + }); + name = name || path['title']; + return _.defaults( { 'id': geonamesId, 'title': name } ,path ); + }); + })).then((paths) => { + map['svg']['g']['path'] = paths; + return map; + }); +} -fs.writeFileSync( - path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'), - "AmCharts.maps.continentsLow=" + JSON.stringify(convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds), null, '\t') -); +convert_path_id(AmCharts.maps.france2016Low, regionsGeonamesIds).then((map)=> { + fs.writeFileSync( + path.join(__dirname,'..','..','vendor/data/maps/france2016Low.js'), + "AmCharts.maps.france2016Low=" + JSON.stringify(map, null, '\t') + ); +}).done(); + +convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds).then((map)=> { + fs.writeFileSync( + path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'), + "AmCharts.maps.continentsLow=" + JSON.stringify(map, null, '\t') + ); +}).done(); -fs.writeFileSync( - path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'), - "AmCharts.maps.worldLow=" + JSON.stringify(convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds), null, '\t') -); +convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds).then((map)=> { + fs.writeFileSync( + path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'), + "AmCharts.maps.worldLow=" + JSON.stringify(map, null, '\t') + ); +}).done(); + + +// fs.writeFileSync( +// path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'), +// "AmCharts.maps.continentsLow=" + JSON.stringify(convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds), null, '\t') +// ); + +// fs.writeFileSync( +// path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'), +// "AmCharts.maps.worldLow=" + JSON.stringify(convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds), null, '\t') +// );