Draft game upload logic (unwritten yet for Analysis mode)
[vchess.git] / client / src / components / UploadGame.vue
diff --git a/client/src/components/UploadGame.vue b/client/src/components/UploadGame.vue
new file mode 100644 (file)
index 0000000..269cc04
--- /dev/null
@@ -0,0 +1,44 @@
+<template lang="pug">
+div
+  input#upload(type="file" @change="upload")
+  button#uploadBtn(
+    @click="uploadTrigger()"
+    aria-label="store.state.tr['Upload a game']"
+  )
+    img.inline(src="/images/icons/upload.svg")
+</template>
+
+<script>
+export default {
+  name: "my-upload-game",
+  methods: {
+    uploadTrigger: function() {
+                 document.getElementById("upload").click();
+               },
+               upload: function(e) {
+                       const file = (e.target.files || e.dataTransfer.files)[0];
+                       var reader = new FileReader();
+                       reader.onloadend = ev => {
+                               this.parseAndEmit(ev.currentTarget.result);
+                       };
+                       reader.readAsText(file);
+               },
+    parseAndEmit: function(pgn) {
+      // TODO: header gives game Info, third secton the moves
+      let game = {};
+      // mark sur ID pour dire import : I_
+      this.$emit("game-uploaded", game);
+    }
+  }
+};
+</script>
+
+<style lang="sass" scoped>
+input#upload
+  display: none
+
+img.inline
+  height: 22px
+  @media screen and (max-width: 767px)
+    height: 18px
+</style>