mirror of
https://github.com/jspsych/jsPsych.git
synced 2025-05-12 08:38:11 +00:00
76 lines
2.0 KiB
TypeScript
76 lines
2.0 KiB
TypeScript
// private function to save text file on local drive
|
|
export function saveTextToFile(textstr: string, filename: string) {
|
|
const blobToSave = new Blob([textstr], {
|
|
type: "text/plain",
|
|
});
|
|
let blobURL = "";
|
|
if (typeof window.webkitURL !== "undefined") {
|
|
blobURL = window.webkitURL.createObjectURL(blobToSave);
|
|
} else {
|
|
blobURL = window.URL.createObjectURL(blobToSave);
|
|
}
|
|
|
|
const link = document.createElement("a");
|
|
link.id = "jspsych-download-as-text-link";
|
|
link.style.display = "none";
|
|
link.download = filename;
|
|
link.href = blobURL;
|
|
link.click();
|
|
}
|
|
|
|
// this function based on code suggested by StackOverflow users:
|
|
// http://stackoverflow.com/users/64741/zachary
|
|
// http://stackoverflow.com/users/317/joseph-sturtevant
|
|
|
|
export function JSON2CSV(objArray) {
|
|
const array = typeof objArray != "object" ? JSON.parse(objArray) : objArray;
|
|
let line = "";
|
|
let result = "";
|
|
const columns = [];
|
|
|
|
for (const row of array) {
|
|
for (const key in row) {
|
|
let keyString = key + "";
|
|
keyString = '"' + keyString.replace(/"/g, '""') + '",';
|
|
if (!columns.includes(key)) {
|
|
columns.push(key);
|
|
line += keyString;
|
|
}
|
|
}
|
|
}
|
|
|
|
line = line.slice(0, -1); // removes last comma
|
|
result += line + "\r\n";
|
|
|
|
for (const row of array) {
|
|
line = "";
|
|
for (const col of columns) {
|
|
let value = typeof row[col] === "undefined" ? "" : row[col];
|
|
if (typeof value == "object") {
|
|
value = JSON.stringify(value);
|
|
}
|
|
const valueString = value + "";
|
|
line += '"' + valueString.replace(/"/g, '""') + '",';
|
|
}
|
|
|
|
line = line.slice(0, -1);
|
|
result += line + "\r\n";
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
// this function is modified from StackOverflow:
|
|
// http://stackoverflow.com/posts/3855394
|
|
|
|
export function getQueryString() {
|
|
const a = window.location.search.substr(1).split("&");
|
|
const b = {};
|
|
for (let i = 0; i < a.length; ++i) {
|
|
const p = a[i].split("=", 2);
|
|
if (p.length == 1) b[p[0]] = "";
|
|
else b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
|
|
}
|
|
return b;
|
|
}
|