diff options
| author | Furkan Sahin <furkan-dev@proton.me> | 2021-11-05 09:27:35 -0500 |
|---|---|---|
| committer | Furkan Sahin <furkan-dev@proton.me> | 2021-11-05 09:27:35 -0500 |
| commit | 85380b4b60bf74507a01957b29bd6e3808e216db (patch) | |
| tree | a43784660fdc29e5b95df3e358cf722eec2b092b /src/components/ActionBar.vue | |
| parent | ffef3a6be19d1139b6378c8119d444082dd0cbac (diff) | |
| parent | 29fc563863f561cdc707485289c5580b4397a580 (diff) | |
Merge pull request #10 from cobraguy/rewrite
Update to Svelte app
Diffstat (limited to 'src/components/ActionBar.vue')
| -rw-r--r-- | src/components/ActionBar.vue | 85 |
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> |
