34 lines
1.0 KiB
JavaScript
34 lines
1.0 KiB
JavaScript
/**
|
|
* Generates a CSV from all the rows in the view.
|
|
*
|
|
* Takes in a url encoded array of headers as an argument. You can
|
|
* generate this by querying /_list/urlencode/headers. Pass it in
|
|
* as the headers get parameter, e.g.: ?headers=%5B%22_id%22%2C%22_rev%5D
|
|
*
|
|
* @author Max Ogden
|
|
*/
|
|
function(head, req) {
|
|
if ('headers' in req.query) {
|
|
var headers = eval(unescape(req.query.headers.split(',')));
|
|
var row, sep = '\n', headerSent = false, startedOutput = false;
|
|
|
|
start({"headers":{"Content-Type" : "text/x-csv"}});
|
|
send(headers.join(',') + "\n");
|
|
while (row = getRow()) {
|
|
for (var header in headers) {
|
|
if (row.value[headers[header]]) {
|
|
if (startedOutput) send(",");
|
|
send("\"" + row.value[headers[header]] + "\"");
|
|
} else {
|
|
if (startedOutput) send(",");
|
|
}
|
|
startedOutput = true;
|
|
}
|
|
startedOutput = false;
|
|
send('\n');
|
|
}
|
|
} else {
|
|
send("You must pass in the urlencoded headers you wish to build the CSV from. Query /_list/urlencode/headers");
|
|
}
|
|
};
|