cms/app-client/lib/scripts/prepare_maps.js
changeset 385 f8200c5482ec
parent 309 6ab16926b675
child 475 dbb941b9fb66
equal deleted inserted replaced
384:5598bad67f8d 385:f8200c5482ec
     3 const path    = require('path');
     3 const path    = require('path');
     4 const Q       = require('q');
     4 const Q       = require('q');
     5 const request = require('request');
     5 const request = require('request');
     6 const _       = require('lodash');
     6 const _       = require('lodash');
     7 const fs      = require('fs');
     7 const fs      = require('fs');
       
     8 const http    = require('http');
     8 
     9 
     9 const continentGeonamesIds = {
    10 const continentGeonamesIds = {
    10   'africa':        '6255146',
    11   'africa':        '6255146',
    11   'asia':          '6255147',
    12   'asia':          '6255147',
    12   'europe':        '6255148',
    13   'europe':        '6255148',
    95 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/worldLow.js'));
    96 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/worldLow.js'));
    96 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/continentsLow.js'));
    97 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/continentsLow.js'));
    97 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/france2016Low.js'));
    98 require(path.join(__dirname,'..','..', 'bower_components/ammap3/ammap/maps/js/france2016Low.js'));
    98 
    99 
    99 
   100 
   100 function convert_path_id(map, ids) {
   101 const geonamesUsername = process.argv[2];
   101   map['svg']['g']['path'] = _.map(map['svg']['g']['path'], function(path) {
   102 
   102     return _.defaults( { 'id': ids[path['id']] } ,path );
   103 http.globalAgent.maxSockets = 20;
   103   })
   104 
   104   return map;
   105 function requestq(url) {
       
   106   var deferred = Q.defer();
       
   107   request(url, (error, resp, body) => {
       
   108     if (!error && resp.statusCode == 200) {
       
   109       deferred.resolve(body);
       
   110     } else {
       
   111       defaultStatus.reject(error, resp);
       
   112     }
       
   113   });
       
   114   return deferred.promise;
   105 }
   115 }
   106 
   116 
   107 fs.writeFileSync(
   117 function convert_path_id(map, ids) {
   108   path.join(__dirname,'..','..','vendor/data/maps/france2016Low.js'),
   118   return Q.all(_.map(map['svg']['g']['path'], (path) => {
   109   "AmCharts.maps.france2016Low=" + JSON.stringify(convert_path_id(AmCharts.maps.france2016Low, regionsGeonamesIds), null, '\t')
   119     let geonamesId = ids[path['id']];
   110 );
   120     return requestq("http://api.geonames.org/getJSON?formatted=true&geonameId="+geonamesId+"&username="+geonamesUsername+"&style=full").then((body)=>{
       
   121       let geoInfo = JSON.parse(body);
       
   122       let name = null;
       
   123       _.each(geoInfo["alternateNames"], (alName) => {
       
   124         if(alName['lang'] == 'fr' && (alName['isPreferredName'] || name == null) && !alName['isHistoric']) {
       
   125           name = alName['name'];
       
   126         }
       
   127       });
       
   128       name = name || path['title'];
       
   129       return _.defaults( { 'id': geonamesId, 'title': name } ,path );
       
   130     });
       
   131   })).then((paths) => {
       
   132     map['svg']['g']['path'] = paths;
       
   133     return map;
       
   134   });
       
   135 }
   111 
   136 
   112 fs.writeFileSync(
   137 convert_path_id(AmCharts.maps.france2016Low, regionsGeonamesIds).then((map)=> {
   113   path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'),
   138   fs.writeFileSync(
   114   "AmCharts.maps.continentsLow=" + JSON.stringify(convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds), null, '\t')
   139     path.join(__dirname,'..','..','vendor/data/maps/france2016Low.js'),
   115 );
   140     "AmCharts.maps.france2016Low=" + JSON.stringify(map, null, '\t')
       
   141   );
       
   142 }).done();
   116 
   143 
   117 fs.writeFileSync(
   144 convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds).then((map)=> {
   118   path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'),
   145   fs.writeFileSync(
   119   "AmCharts.maps.worldLow=" + JSON.stringify(convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds), null, '\t')
   146     path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'),
   120 );
   147     "AmCharts.maps.continentsLow=" + JSON.stringify(map, null, '\t')
       
   148   );
       
   149 }).done();
       
   150 
       
   151 convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds).then((map)=> {
       
   152   fs.writeFileSync(
       
   153     path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'),
       
   154     "AmCharts.maps.worldLow=" + JSON.stringify(map, null, '\t')
       
   155   );
       
   156 }).done();
       
   157 
       
   158 
       
   159 // fs.writeFileSync(
       
   160 //   path.join(__dirname,'..','..','vendor/data/maps/continentsLow.js'),
       
   161 //   "AmCharts.maps.continentsLow=" + JSON.stringify(convert_path_id(AmCharts.maps.continentsLow, continentGeonamesIds), null, '\t')
       
   162 // );
       
   163 
       
   164 // fs.writeFileSync(
       
   165 //   path.join(__dirname,'..','..','vendor/data/maps/worldLow.js'),
       
   166 //   "AmCharts.maps.worldLow=" + JSON.stringify(convert_path_id(AmCharts.maps.worldLow, contriesGeonamesIds), null, '\t')
       
   167 // );