aboutsummaryrefslogtreecommitdiff
path: root/src/components/ActionBar.vue
diff options
context:
space:
mode:
authorFurkan Sahin <furkan-dev@proton.me>2021-09-05 21:39:24 -0500
committerFurkan Sahin <furkan-dev@proton.me>2021-09-05 21:39:24 -0500
commitd0975a6e7ee57de4debda94e823011d813fbf4a1 (patch)
tree69d61bf6c29104434b9e3de4946e7d5dd549dec0 /src/components/ActionBar.vue
parentffef3a6be19d1139b6378c8119d444082dd0cbac (diff)
Initial rewrite in svelte
Diffstat (limited to 'src/components/ActionBar.vue')
-rw-r--r--src/components/ActionBar.vue85
1 files changed, 0 insertions, 85 deletions
diff --git a/src/components/ActionBar.vue b/src/components/ActionBar.vue
deleted file mode 100644
index bfe3cdb..0000000
--- a/src/components/ActionBar.vue
+++ /dev/null
@@ -1,85 +0,0 @@
-<template>
- <div id="action-bar">
- <FileUpload
- :accept="'text/plain'"
- :multiple="true"
- @fileChanged="handlePtChange">Upload PT Schedule</FileUpload>
- <FileUpload
- :accept="'application/json'"
- @fileChanged="handleLabChange">Import Lab Schedule</FileUpload>
- <UIButton @click="save">Export</UIButton>
- </div>
-</template>
-
-<script lang="ts">
-import { defineComponent } from 'vue';
-import FileUpload from '@/components/FileUpload.vue';
-import { parseLabFile, parsePtSchedule } from '@/features/parser';
-import UIButton from '@/components/UIButton.vue';
-import PeerTeacher from '@/models/PeerTeacher';
-
-export default defineComponent({
- name: 'ActionBar',
- components: {
- FileUpload,
- UIButton,
- },
- methods: {
- async handleLabChange(files: File[]) {
- const data = await parseLabFile(files[0]);
- this.$store.commit('importLabs', data);
- },
- async handlePtChange(files: File[]) {
- const promises: Promise<PeerTeacher>[] = [];
-
- files.forEach((file) => {
- promises.push(parsePtSchedule(file));
- });
-
- const result = await Promise.all(promises);
- this.$store.commit('addPeerTeachers', result);
- },
- save() {
- const database = {
- labs: Object.fromEntries(this.$store.state.labs),
- peerTeachers: Object.fromEntries(this.$store.state.peerTeachers),
- };
-
- const jsonObj = JSON.stringify(database, (_, value) => {
- if (typeof value === 'object' && value instanceof Set) {
- return [...value];
- }
- return value;
- });
-
- const blob = new Blob([jsonObj], { type: 'text/json' });
- const anchor = document.createElement('a');
- const url = window.URL.createObjectURL(blob);
- anchor.href = url;
- anchor.download = 'pt-db.json';
- anchor.style.display = 'none';
-
- document.body.appendChild(anchor);
- anchor.click();
- document.body.removeChild(anchor);
- window.URL.revokeObjectURL(url);
- },
- },
-});
-</script>
-
-<style>
-#action-bar {
- max-width: 100vw;
- overflow-x: auto;
- white-space: nowrap;
-}
-
-#action-bar > * {
- margin-left: 0.5rem;
-}
-
-#action-bar > *:first-child {
- margin-left: 0;
-}
-</style>