Skip to content

Commit

Permalink
feat: add function to standardize uploaded csv in batch signup
Browse files Browse the repository at this point in the history
  • Loading branch information
laporchen committed Sep 12, 2024
1 parent 9b1ac1d commit 7f1ddb7
Showing 1 changed file with 21 additions and 1 deletion.
22 changes: 21 additions & 1 deletion src/pages/course/[name]/members.vue
Original file line number Diff line number Diff line change
Expand Up @@ -48,12 +48,32 @@ const forceUpdate = ref(false);
const isProcessingSignup = ref(false);
const errorMsg = ref("");
const previewCSV = ref<{ headers?: string[]; body?: string[][] }>({});
// no csv validation was handled
const standardizeUsername = (csv: string): string => {
const rows = csv.split("\n");
const header = rows[0];
const body = rows.slice(1).map((r) => r.split(","));
const usernameFieldIndex = header.split(",").findIndex((v) => v === "username");
if (usernameFieldIndex < 0) {
return csv;
}
body.forEach((data) => {
data[usernameFieldIndex] = data[usernameFieldIndex]?.toUpperCase();
});
const bodyString = body.map((data) => data.join(","));
return [header, ...bodyString].join("\n");
};
watch(newMembers, () => {
if (!newMembers.value) return;
const reader = new FileReader();
reader.onload = (evt) => {
if (typeof evt.target?.result !== "string") return;
newMembersCSVString.value = evt.target?.result;
newMembersCSVString.value = standardizeUsername(evt.target?.result || "");
const rows = newMembersCSVString.value.split("\n");
previewCSV.value.headers = rows[0].split(",");
previewCSV.value.body = rows.slice(1).map((r) => r.split(","));
Expand Down

0 comments on commit 7f1ddb7

Please sign in to comment.