42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
|
/*
|
|||
|
Logic Solution
|
|||
|
WeeeCarbonFootprint
|
|||
|
Factory for CarbonFootprint
|
|||
|
*/
|
|||
|
|
|||
|
angular.module('Services')
|
|||
|
.service('ImportCsvService', function ($q) {
|
|||
|
|
|||
|
this.startImportAsync = function (LCAID, modelBuilder, csvFile, processPercentageFn) {
|
|||
|
var deferred = $q.defer();
|
|||
|
var result = {};
|
|||
|
var resultItem;
|
|||
|
result.data = [];
|
|||
|
result.errors = [];
|
|||
|
result.totalParsed = 0;
|
|||
|
Papa.parse(csvFile, { // use papa parse csv convert plugin
|
|||
|
skipEmptyLines: true,
|
|||
|
complete: function (a) {
|
|||
|
a.data.shift() //remove first row because it is headers
|
|||
|
angular.forEach(a.data, function (entry, index) {
|
|||
|
angular.forEach(entry, function (column, index) {//remove new line in data column
|
|||
|
entry[index] = column.replace(/(\r\n|\n|\r)/gm, " ");
|
|||
|
})
|
|||
|
|
|||
|
resultItem = modelBuilder.create(entry, LCAID);
|
|||
|
//line = index +2 : index is 0 base and the start line is 2
|
|||
|
if (resultItem.error) result.errors.push({ line: (index + 2), error: resultItem.error })
|
|||
|
else result.data.push(resultItem);
|
|||
|
|
|||
|
if (processPercentageFn)
|
|||
|
processPercentageFn(index / a.data.length)
|
|||
|
})
|
|||
|
result.totalParsed = a.data.length;
|
|||
|
deferred.resolve(result)
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
return deferred.promise;
|
|||
|
}
|
|||
|
})
|