Skip to content

Commit

Permalink
feat: using stringBuilder download the data and appending in list and…
Browse files Browse the repository at this point in the history
… then to string by join.
  • Loading branch information
puni9869 committed Nov 10, 2024
1 parent 25d4531 commit 0834f41
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 16 deletions.
26 changes: 10 additions & 16 deletions frontend/common/index.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import {StringBuilder} from './stringBuilder.js';

export function RedirectToLogin() {
window.location = '/logout';
}
Expand All @@ -13,39 +15,31 @@ export function CloseModal(modalId, toClose) {
});
}

export function JsonToCsv(jsonData) {
let csv = '';
// Get the headers
function jsonToCsv(jsonData) {
const csv = new StringBuilder();
let headers = Object.keys(jsonData[0]);
csv += headers.join(',') + '\n';

// Add the data
csv.write(headers.join(',') + '\n');
jsonData.forEach(function (row) {
let data = headers.map(header => row[header]).join(',');
csv += data + '\n';
csv.write(data + '\n');
});
return csv;
return csv.toString();
}

export function SaveFile(filename, dataObjToWrite, format) {
const blob = new Blob([
format === 'json' ? JSON.stringify(dataObjToWrite) : JsonToCsv(dataObjToWrite)
format === 'json' ? JSON.stringify(dataObjToWrite) : jsonToCsv(dataObjToWrite)
],
{
type: `text/${format}`
});
const link = document.createElement("a");

const link = document.createElement("a");
link.download = filename;
link.href = window.URL.createObjectURL(blob);
link.dataset.downloadurl = [`text/${format}`, link.download, link.href].join(':');

const evt = new MouseEvent("click", {
view: window,
bubbles: true,
cancelable: true,
});

const evt = new MouseEvent("click", {view: window, bubbles: true, cancelable: true,});
link.dispatchEvent(evt);
link.remove()
}
18 changes: 18 additions & 0 deletions frontend/common/stringBuilder.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
export class StringBuilder {
constructor() {
this._lines = [];
}

write(line = "") {
this._lines.push(line);
}

writeln(line = "") {
this._lines.push(line);
this._lines.push("\n");
}

toString() {
return this._lines.join("");
}
}

0 comments on commit 0834f41

Please sign in to comment.