From 6b66b70eb1475ec058af3ec7ab4cb1f6f21b5ab6 Mon Sep 17 00:00:00 2001 From: Nick Chambers Date: Sun, 10 Jan 2021 16:49:07 -0600 Subject: [PATCH] Add an uploader for importing game files --- takhta.html | 54 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/takhta.html b/takhta.html index e94da99..656d63f 100644 --- a/takhta.html +++ b/takhta.html @@ -77,6 +77,10 @@ .numentry { white-space: pre-wrap; } + #moveupload { + visibility: hidden; + display: none; + } @@ -205,8 +209,12 @@ - +

+ + + +

@@ -279,6 +287,13 @@ } // List the move + updateMoveTable(move); + + // Empty input field + document.getElementById('move').value = ''; + } + + function updateMoveTable(move) { let listElement = document.createElement('li'); if(moveHistory.length % 2 === 1) { @@ -302,9 +317,6 @@ listElement.appendChild(document.createTextNode(move)); movelist.appendChild(listElement); - - // Empty input field - document.getElementById('move').value = ''; } function doMove(move) { @@ -758,6 +770,40 @@ } } } + + let moveUpload = document.getElementById("moveupload"); + + moveUpload.addEventListener("change", (event) => { + let file = event.target.files[0]; + let reader = new FileReader(); + let moveLine = /^\s*\d+\. /; + + reader.addEventListener("load", (event) => { + let moveFile = event.target; + + if(moveFile.error === null) { + let rows = moveFile.result.split("\n"); + + for(let row of rows) { + if(moveLine.test(row)) { + let entries = row.replace(moveLine, "").split(/\s+/); + + for(let entry of entries) { + let ret = doMove(entry); + + if("error" in ret) { + alert(ret.error); + return; + } + updateMoveTable(entry); + } + } + } + } + }); + + reader.readAsText(file); + });