Skip to content

Commit

Permalink
adding import from app excel download
Browse files Browse the repository at this point in the history
  • Loading branch information
jrmerz committed Nov 12, 2015
1 parent 5a8e1fa commit f9a304c
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 4 deletions.
3 changes: 0 additions & 3 deletions export/nodejs/dss/timeBound.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ module.exports = function(prmname, file) {
return {
csvFilePath : file,
type : 'timeseries',
startTime : '1920-01-01',
endTime : '2000-01-01',
interval : '730',
parameter : '1MON',
xunits : 'FT',
xtype : 'UNT',
Expand Down
99 changes: 99 additions & 0 deletions export/nodejs/excel/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
'use strict';

var xlsx = require('xlsx');
var async = require('async');
var fs = require('fs');
var parse = require('csv-parse');
var stringify = require('csv-stringify');
var path = require('path');
var crawler = require('../crawler');

module.exports = function(args) {
if( !fs.existsSync(args.x) ) {
return console.log('Invalid file: '+args.x);
}

var workbook = xlsx.readFile(args.x);

var items = [];

async.eachSeries(workbook.SheetNames,
function(name, next) {
var worksheet = workbook.Sheets[name];
var csv = xlsx.utils.sheet_to_csv(worksheet);

parse(csv, {}, function(err, data){
var item = parseHeader(data);
if( item === null ) {
console.log('Unable to find valid header in sheet: '+name);
}
items.push(item);
next();
});
},
function(err) {
update(items, args);
}
);
};

function update(items, args) {
crawler(args.data, {parseCsv:false}, function(result){

async.eachSeries(items,
function(item, next){
updateNode(item, result.nodes, args.data.replace(/data\/?$/, ''), next);
},
function(err) {
console.log('done.');
}
);

});
}

function updateNode(item, nodes, root, callback) {
for( var i = 0; i < nodes.length; i++ ) {
if( item.prmname === nodes[i].properties.prmname ) {
var file = path.join(root, nodes[i].properties.repo.dir, item.folder);
console.log('found and updating: '+item.prmname+' '+file);

stringify(item.data, {}, function(err, string){
fs.writeFileSync(file, string);
callback();
});
return;
}
}
}

function parseHeader(data) {
if( data.length === 0 ) {
return null;
} else if( data[0].length < 2 ) {
return null;
}

var parts = data[0][0].split('/');
var item = {
prmname : parts.splice(0,1)[0],
folder : parts.join('/'),
path : data[0][1],
data : [[]]
};

data.splice(0,1);

if( data.length < 1 ) {
return item;
}

if( data[0][0] !== '' ) {
item.data = data;
} else {
data.splice(0,1);
item.data = data;
}

return item;
}
22 changes: 22 additions & 0 deletions export/nodejs/prm/cmds/excel.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
'use strict';

var crawler = require('../../crawler');
var excel = require('../../excel');

module.exports = function(argv) {
if( !argv.data ) {
console.log('No path provided');
process.exit(-1);
}

if( !argv.x ) {
console.log('No excel provided');
process.exit(-1);
}

excel(argv);

/*crawler(argv._[0], function(result){
});*/
};
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@
"dependencies": {
"async": "^1.4.2",
"csv-parse": "^1.0.0",
"csv-stringify": "0.0.8",
"globby": "^2.1.0",
"minimist": "^1.2.0",
"node-getopt": "^0.2.3",
"sphericalmercator": "^1.0.3",
"sprintf-js": "^1.0.3",
"walk": "^2.3.9"
"walk": "^2.3.9",
"xlsx": "^0.8.0"
}
}

0 comments on commit f9a304c

Please sign in to comment.