Skip to content
Snippets Groups Projects
StudentListReverseMapper.vue 1.12 KiB
<template>
  <v-layout row align-center>
    <file-select v-model="file" display-text="Select map file"/>
    <v-tooltip top>
      <v-btn
        icon slot="activator"
        @click="readMapFileAndApply"
      >
        <v-icon>vpn_key</v-icon>
      </v-btn>
      <span>Apply mapping</span>
    </v-tooltip>
  </v-layout>
</template>

<script>
import FileSelect from '@/components/util/FileSelect'
import { parseCSVMapMixin } from '@/components/mixins/mixins'

export default {
  components: {FileSelect},
  name: 'student-list-reverse-mapper',
  mixins: [parseCSVMapMixin],
  data () {
    return {
      file: null,
      fileReader: new FileReader()
    }
  },
  methods: {
    readMapFileAndApply () {
      this.fileReader.onload = event => {
        const studentMap = this.parseCSVMap(event.target.result)
        this.reverseMapStudents(studentMap)
      }
      this.fileReader.readAsText(this.file)
    },
    reverseMapStudents (studentMap) {
      this.$store.commit('SET_STUDENT_MAP', studentMap)
      this.$store.commit('SET_STUDENTS', Object.values(this.$store.state.students))
    }
  }
}
</script>

<style scoped>

</style>