From 855250a1c2c93ab175ede8af1c98925ee854f732 Mon Sep 17 00:00:00 2001 From: Leo Herzog Date: Wed, 1 Jul 2020 10:39:12 -0400 Subject: [PATCH] Create Add and Remove Row Buttons --- bundle.js | 56 +++++++++++++++++++++++++++++++++++++++++++----------- index.html | 10 ++++++++-- parse.js | 56 +++++++++++++++++++++++++++++++++++++++++++----------- 3 files changed, 98 insertions(+), 24 deletions(-) diff --git a/bundle.js b/bundle.js index faeaf35..3b143a8 100644 --- a/bundle.js +++ b/bundle.js @@ -11899,9 +11899,11 @@ var createdBy = document.getElementById('createdBy'); var comment = document.getElementById('comment'); var hash = document.getElementById('hash'); var addTrackers = document.getElementById('addTrackers'); +var addTracker = document.getElementById('addTracker'); var removeTrackers = document.getElementById('removeTrackers'); var announce = document.getElementById('announce'); var urlList = document.getElementById('urlList'); +var addWebseed = document.getElementById('addWebseed'); var removeWebseeds = document.getElementById('removeWebseeds'); var files = document.getElementById('filesBody'); var copyURL = document.getElementById('copyURL'); @@ -11948,11 +11950,18 @@ function start() { }); name.addEventListener('input', propertyChange); + name.addEventListener('change', propertyChange); + name.addEventListener('reset', propertyChange); + name.addEventListener('paste', propertyChange); reset.addEventListener('click', resetProperties); - createdBy.addEventListener('change', propertyChange); comment.addEventListener('input', propertyChange); + comment.addEventListener('change', propertyChange); + comment.addEventListener('reset', propertyChange); + comment.addEventListener('paste', propertyChange); addTrackers.addEventListener('click', addCurrentTrackers); + addTracker.addEventListener('click', addRow); removeTrackers.addEventListener('click', removeCurrentTrackers); + addWebseed.addEventListener('click', addRow); removeWebseeds.addEventListener('click', removeCurrentWebseeds); if (window.location.hash) { @@ -12007,14 +12016,22 @@ function display() { announce.innerHTML = ""; if (parsed.announce && parsed.announce.length) { for (let i = 0; i < parsed.announce.length; i++) { + let row = document.createElement('div'); + row.className = 'announce'; + row.dataset.index = i; let tracker = document.createElement('input'); - tracker.className = 'tracker'; tracker.type = 'text'; tracker.value = parsed.announce[i]; tracker.dataset.index = i; tracker.dataset.group = 'announce'; tracker.addEventListener('input', propertyChange); - announce.appendChild(tracker); + row.appendChild(tracker); + let remove = document.createElement('button'); + remove.dataset.index = i; + remove.innerHTML = ''; + remove.addEventListener('click', removeRow); + row.appendChild(remove); + announce.appendChild(row); } } else { announce.innerHTML = "No trackers specified in the URL/File provided"; @@ -12023,14 +12040,22 @@ function display() { urlList.innerHTML = ""; if (parsed.urlList && parsed.urlList.length) { for (let i = 0; i < parsed.urlList.length; i++) { + let row = document.createElement('div'); + row.className = 'urlList'; + row.dataset.index = i; let webseed = document.createElement('input'); - webseed.className = 'webseed'; webseed.type = 'text'; webseed.value = parsed.urlList[i]; webseed.dataset.index = i; webseed.dataset.group = 'urlList'; webseed.addEventListener('input', propertyChange); - urlList.appendChild(webseed); + row.appendChild(webseed); + let remove = document.createElement('button'); + remove.dataset.index = i; + remove.innerHTML = ''; + remove.addEventListener('click', removeRow); + row.appendChild(remove); + urlList.appendChild(row); } } else { urlList.innerHTML = "No webseed URLs in the URL/File provided"; @@ -12109,13 +12134,13 @@ function getFontAwesomeIconForMimetype(mimetype) { } function propertyChange(e) { - if (e.target.dataset.group) { - parsed[e.target.dataset.group][e.target.dataset.index] = e.target.value || ""; + if (this.dataset.group) { + parsed[this.dataset.group][this.dataset.index] = this.value || ""; } else { - parsed[e.target.id] = e.target.value || ""; + parsed[this.id] = this.value || ""; } + window.location.hash = parser.toMagnetURI(parsed); updateModified(); - display(); } function resetProperties() { @@ -12160,6 +12185,17 @@ function removeCurrentTrackers() { display(); } +function addRow() { + console.log(this.dataset.type); + parsed[this.dataset.type].push(""); + display(); +} + +function removeRow() { + parsed[this.parentElement.className].splice(this.parentElement.dataset.index, 1); + display(); +} + function removeCurrentWebseeds() { parsed.urlList = []; updateModified(); @@ -12167,9 +12203,7 @@ function removeCurrentWebseeds() { } function updateModified() { - created.value = new Date().toISOString().slice(0, 19); parsed.created = new Date(); - createdBy.value = "Torrent Parts "; parsed.createdBy = "Torrent Parts "; } diff --git a/index.html b/index.html index f3e1e2c..4d7d3e3 100644 --- a/index.html +++ b/index.html @@ -52,16 +52,22 @@ +
+
diff --git a/parse.js b/parse.js index 1cded72..6802d60 100644 --- a/parse.js +++ b/parse.js @@ -13,9 +13,11 @@ var createdBy = document.getElementById('createdBy'); var comment = document.getElementById('comment'); var hash = document.getElementById('hash'); var addTrackers = document.getElementById('addTrackers'); +var addTracker = document.getElementById('addTracker'); var removeTrackers = document.getElementById('removeTrackers'); var announce = document.getElementById('announce'); var urlList = document.getElementById('urlList'); +var addWebseed = document.getElementById('addWebseed'); var removeWebseeds = document.getElementById('removeWebseeds'); var files = document.getElementById('filesBody'); var copyURL = document.getElementById('copyURL'); @@ -62,11 +64,18 @@ function start() { }); name.addEventListener('input', propertyChange); + name.addEventListener('change', propertyChange); + name.addEventListener('reset', propertyChange); + name.addEventListener('paste', propertyChange); reset.addEventListener('click', resetProperties); - createdBy.addEventListener('change', propertyChange); comment.addEventListener('input', propertyChange); + comment.addEventListener('change', propertyChange); + comment.addEventListener('reset', propertyChange); + comment.addEventListener('paste', propertyChange); addTrackers.addEventListener('click', addCurrentTrackers); + addTracker.addEventListener('click', addRow); removeTrackers.addEventListener('click', removeCurrentTrackers); + addWebseed.addEventListener('click', addRow); removeWebseeds.addEventListener('click', removeCurrentWebseeds); if (window.location.hash) { @@ -121,14 +130,22 @@ function display() { announce.innerHTML = ""; if (parsed.announce && parsed.announce.length) { for (let i = 0; i < parsed.announce.length; i++) { + let row = document.createElement('div'); + row.className = 'announce'; + row.dataset.index = i; let tracker = document.createElement('input'); - tracker.className = 'tracker'; tracker.type = 'text'; tracker.value = parsed.announce[i]; tracker.dataset.index = i; tracker.dataset.group = 'announce'; tracker.addEventListener('input', propertyChange); - announce.appendChild(tracker); + row.appendChild(tracker); + let remove = document.createElement('button'); + remove.dataset.index = i; + remove.innerHTML = ''; + remove.addEventListener('click', removeRow); + row.appendChild(remove); + announce.appendChild(row); } } else { announce.innerHTML = "No trackers specified in the URL/File provided"; @@ -137,14 +154,22 @@ function display() { urlList.innerHTML = ""; if (parsed.urlList && parsed.urlList.length) { for (let i = 0; i < parsed.urlList.length; i++) { + let row = document.createElement('div'); + row.className = 'urlList'; + row.dataset.index = i; let webseed = document.createElement('input'); - webseed.className = 'webseed'; webseed.type = 'text'; webseed.value = parsed.urlList[i]; webseed.dataset.index = i; webseed.dataset.group = 'urlList'; webseed.addEventListener('input', propertyChange); - urlList.appendChild(webseed); + row.appendChild(webseed); + let remove = document.createElement('button'); + remove.dataset.index = i; + remove.innerHTML = ''; + remove.addEventListener('click', removeRow); + row.appendChild(remove); + urlList.appendChild(row); } } else { urlList.innerHTML = "No webseed URLs in the URL/File provided"; @@ -223,13 +248,13 @@ function getFontAwesomeIconForMimetype(mimetype) { } function propertyChange(e) { - if (e.target.dataset.group) { - parsed[e.target.dataset.group][e.target.dataset.index] = e.target.value || ""; + if (this.dataset.group) { + parsed[this.dataset.group][this.dataset.index] = this.value || ""; } else { - parsed[e.target.id] = e.target.value || ""; + parsed[this.id] = this.value || ""; } + window.location.hash = parser.toMagnetURI(parsed); updateModified(); - display(); } function resetProperties() { @@ -274,6 +299,17 @@ function removeCurrentTrackers() { display(); } +function addRow() { + console.log(this.dataset.type); + parsed[this.dataset.type].push(""); + display(); +} + +function removeRow() { + parsed[this.parentElement.className].splice(this.parentElement.dataset.index, 1); + display(); +} + function removeCurrentWebseeds() { parsed.urlList = []; updateModified(); @@ -281,9 +317,7 @@ function removeCurrentWebseeds() { } function updateModified() { - created.value = new Date().toISOString().slice(0, 19); parsed.created = new Date(); - createdBy.value = "Torrent Parts "; parsed.createdBy = "Torrent Parts "; }