You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.4 KiB
52 lines
1.4 KiB
3 years ago
|
let fs = require('fs')
|
||
|
|
||
|
function embedSvg(src, dst) {
|
||
|
fs.readFile(src, 'utf8', function(err, data) {
|
||
|
if(err) throw err;
|
||
|
data = data.replace(/<\?xml[^\?]*\?>[\r\n]*/g, '');
|
||
|
data = data.replace(/<svg[^>]*>[\r\n]*/g, '');
|
||
|
data = data.replace(/<\/svg>[\r\n]*/g, '');
|
||
|
|
||
|
data = data.replace(/>\s*<desc[^>]*>/g, ' ');
|
||
|
data = data.replace(/<\/desc>/g, '>');
|
||
|
data = data.replace(/"/g, '"');
|
||
|
|
||
|
data = "(<any>window)['"+src.replace(/^.*[\\\/]/, '')+"'] = `" + data + "`;";
|
||
|
|
||
|
fs.writeFile(dst, data, function(err) {
|
||
|
if(err) throw err;
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function embedCsv(src, dst) {
|
||
|
fs.readFile(src, 'utf8', function(err, csvData) {
|
||
|
if(err) throw err;
|
||
|
|
||
|
let csvLines = csvData.split('\n').map(str => str.split(';'));
|
||
|
|
||
|
let jsData = {};
|
||
|
|
||
|
let zones = csvLines[0];
|
||
|
for(let zoneIdx = 0; zoneIdx < zones.length; ++zoneIdx) {
|
||
|
let zoneName = zones[zoneIdx];
|
||
|
let zoneData = [];
|
||
|
|
||
|
for(let lineIdx = 1; lineIdx < csvLines.length; ++lineIdx) {
|
||
|
zoneData[lineIdx-1] = Math.round(Number(csvLines[lineIdx][zoneIdx]));
|
||
|
}
|
||
|
|
||
|
jsData[zoneName] = zoneData;
|
||
|
}
|
||
|
|
||
|
let content = "(<any>window)['"+src.replace(/^.*[\\\/]/, '')+"'] = " + JSON.stringify(jsData) + ";";
|
||
|
|
||
|
fs.writeFile(dst, content, function(err) {
|
||
|
if(err) throw err;
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
embedSvg('../data/climate-zones-map.svg', 'climate-zones-map.svg.ts');
|
||
|
embedCsv('../data/climate-zones-data.csv', 'climate-zones-data.ts');
|