My most recent problem for my side project was implementing a drag and drop upload for CSV(character separated value) data.
From experience I know that CSV data can fairly easily be malformed so I wanted to be able to present a nice formatted list for a user to be able to preview and opt out of certain items.
I started reading and writing some code to take a dropped file (which turns out to be straight forward in HTML5) and call some sort of preview function with it.
After a few frustrating hours and an active disinterest in node modules, I found a tool that really solved the problem right for me: Papa Parse.
As I would qualify my JavaScript as “learning level”, one of the big wins for me is any tool which solves my problem in a sane and reusable way without going off the deep end into JS land.
This was the entire set of code I needed to take a file object and return a useful set of rows.
let config = {
delimiter: "", // auto-detect
newline: "", // auto-detect
quoteChar: '"',
escapeChar: '"',
header: true,
skipEmptyLines: true,
delimitersToGuess: [',', '\t', '|', ';', Papa.RECORD_SEP, Papa.UNIT_SEP] }
let useful_data = Papa.parse(data, config = config);
Shout out to jQuery for the rest – on finishing the load call a function to draw a form with some checkboxes, and a submission form for them all.