diff --git a/CHANGELOG.md b/CHANGELOG.md index 618ed6c..9079a9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 1.9.2 (2025-11-18) + +- simplification du code + ## 1.9.1 (2025-11-18) - ajout d'un bouton pour sélectionner toutes les troupes diff --git a/manifest.json b/manifest.json index be1dafc..5bee193 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "KAplus", - "version": "1.9.1", + "version": "1.9.2", "developer": { "name": "Samuel Campos", diff --git a/metadata.json b/metadata.json index 2c853f3..31e3eb5 100644 --- a/metadata.json +++ b/metadata.json @@ -5,8 +5,8 @@ "firefox" ], "release_notes": { - "fr": "- ajout d'un bouton pour sélectionner toutes les troupes", - "en-US": " - add button to select all units" + "fr": "- simplification du code", + "en-US": "- code simplification" } } } \ No newline at end of file diff --git a/src/kaplus.js b/src/kaplus.js index 270b6ff..1ad438e 100644 --- a/src/kaplus.js +++ b/src/kaplus.js @@ -23,27 +23,48 @@ function str(n) { return s.replace(/^0+/, ""); } -function createRow(key, value) { - let keyCell = document.createElement("td"); - keyCell.textContent = key; +function createCustomElement(tag, attrs, text, style) { + let elt = document.createElement(tag); + if (attrs) { + for (let [key, value] of Object.entries(attrs)) { + elt.setAttribute(key, value.toString()); + } + } + if (text) { + elt.textContent = text.toString(); + } + if (style) { + for (let [key, value] of Object.entries(style)) { + elt.style[key] = value.toString(); + } + } + return elt; +} - let valueCell = document.createElement("td"); - valueCell.textContent = value; +function createCustomInput(type, name, value, attrs, style) { + let mergedAttrs = {}; + if (attrs) { + mergedAttrs = attrs; + } + mergedAttrs["type"] = type; + if (name) { + mergedAttrs["name"] = name; + } + if (value) { + mergedAttrs["value"] = value; + } + return createCustomElement("input", mergedAttrs, null, style); +} - let row = document.createElement("tr"); +function createKeyValueRow(key, value) { + let row = createCustomElement("tr"); + let keyCell = createCustomElement("td", null, key); + let valueCell = createCustomElement("td", null, value); row.appendChild(keyCell); row.appendChild(valueCell); return row; } -function createInput(type, name, value) { - let elt = document.createElement("input"); - elt.setAttribute("type", type); - elt.setAttribute("name", name); - elt.setAttribute("value", value); - return elt; -} - function searchPoint(text) { let index = text.search(/\d{3}\|\d{3}/); let point = text.slice(index, index + 7).split("|"); @@ -66,20 +87,15 @@ function shortcutElementReplace(elt, img, text) { } } - let spanImageElement = document.createElement("span"); - spanImageElement.classList.add("shortcut_element_image"); - - let imgElement = document.createElement("img"); - imgElement.setAttribute("src", chrome.runtime.getURL("images/" + img + ".svg")); + let spanImageElement = createCustomElement("span", {"class": "shortcut_element_image"}); + let imgElement = createCustomElement("img", {"src": chrome.runtime.getURL("images/" + img + ".svg")}); spanImageElement.appendChild(imgElement); aElements[0].textContent = ""; aElements[0].appendChild(spanImageElement); if (text) { - let spanDescElement = document.createElement("span"); - spanDescElement.classList.add("shortcut_element_desc"); - spanDescElement.textContent = text; + let spanDescElement = createCustomElement("span", {"class": "shortcut_element_desc"}, text); aElements[0].appendChild(spanDescElement); } } @@ -159,8 +175,8 @@ function main() { armyPercent = (Math.round(armyPoints / villagesCount) / 100).toString() + " %"; } - playerPropertiesTable.appendChild(createRow("Points troupes:", str(armyPoints))); - playerPropertiesTable.appendChild(createRow("% points troupes:", armyPercent)); + playerPropertiesTable.appendChild(createKeyValueRow("Points troupes:", str(armyPoints))); + playerPropertiesTable.appendChild(createKeyValueRow("% points troupes:", armyPercent)); } /* Display unit-points on village overview */ @@ -185,9 +201,8 @@ function main() { let barracksCommands = sendCommandForm.getElementsByClassName("barracksCommand"); let borderListTables = sendCommandForm.getElementsByClassName("borderlist"); - let quantityLabel = document.createElement("label"); - let quantityInput = document.createElement("input"); - quantityInput.setAttribute("type", "checkbox"); + let quantityLabel = createCustomElement("label"); + let quantityInput = createCustomElement("input", {"type": "checkbox"}); quantityInput.addEventListener("change", function () { let clickSpans = []; if (barracksCommands.length === 1) { @@ -203,43 +218,34 @@ function main() { } }) quantityLabel.appendChild(quantityInput); - let quantitySpan = document.createElement("span"); - quantitySpan.classList.add("click", "all"); - quantitySpan.textContent = "(Tout sélectionner)"; + let quantitySpan = createCustomElement("span", {"class": "click all"}, "(Tout sélectionner)"); quantityLabel.appendChild(quantitySpan); if (barracksCommands.length === 1) { - let boxCell = document.createElement("div"); - boxCell.classList.add("box"); + let boxCell = createCustomElement("div", {"class": "box"}); - let backgroundCell = document.createElement("div"); - backgroundCell.classList.add("background"); - let backgroundImg = document.createElement("img"); - backgroundImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/modern/card_sendunit.png"); + let backgroundCell = createCustomElement("div", {"class": "background"}); + let backgroundImg = createCustomElement( + "img", {"src": "//s58-fr.kingsage.gameforge.com/img/modern/card_sendunit.png"} + ); backgroundCell.appendChild(backgroundImg); boxCell.appendChild(backgroundCell); - let imageCell = document.createElement("div"); - imageCell.classList.add("image"); - let imageImg = document.createElement("img"); - imageImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png"); - imageImg.style.width = "28px"; + let imageCell = createCustomElement("div", {"class": "image"}); + let imageImg = createCustomElement( + "img", {"src": "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png"}, null, {"width": "28px"} + ); imageCell.appendChild(imageImg); boxCell.appendChild(imageCell); - let nameCell = document.createElement("div"); - nameCell.classList.add("name"); - let nameA = document.createElement("a"); - nameA.setAttribute("href", "help.php?m=units"); - nameA.setAttribute("target", "_help"); - let nameB = document.createElement("b"); - nameB.textContent = "Tout"; + let nameCell = createCustomElement("div", {"class": "name"}); + let nameA = createCustomElement("a", {"href": "help.php?m=units", "target": "_help"}); + let nameB = createCustomElement("b", null, "Tout"); nameA.appendChild(nameB); nameCell.appendChild(nameA); boxCell.appendChild(nameCell); - let quantityCell = document.createElement("div"); - quantityCell.classList.add("quantity"); + let quantityCell = createCustomElement("div", {"class": "quantity"}); quantityCell.appendChild(quantityLabel); boxCell.appendChild(quantityCell); @@ -250,12 +256,10 @@ function main() { let borderListRows = borderListTables[0].getElementsByTagName("tr"); let selectAllCell = borderListRows[1].getElementsByTagName("td")[3]; - let imageA = document.createElement("a"); - imageA.setAttribute("href", "help.php?m=units"); - imageA.setAttribute("target", "_help"); - let imageImg = document.createElement("img"); - imageImg.setAttribute("src", "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png") - imageImg.setAttribute("title", "Tout"); + let imageA = createCustomElement("a", {"href": "help.php?m=units", "target": "_help"}); + let imageImg = createCustomElement( + "img", {"src": "//s58-fr.kingsage.gameforge.com/img/shortcut/barracks.png", "title": "Tout"} + ); imageA.appendChild(imageImg); selectAllCell.appendChild(imageA); @@ -269,30 +273,23 @@ function main() { let oldCell = document.getElementById("countup-time"); let hms = oldCell.parentElement.previousElementSibling.getElementsByTagName("td")[1].textContent.split(":"); movingDuration = parseInt(hms[0]) * 3600 + parseInt(hms[1]) * 60 + parseInt(hms[2]) ; - let newRow = document.createElement("tr"); - let newLeftCell = document.createElement("td"); - newLeftCell.textContent = "Arrivée:"; + let newRow = createCustomElement("tr"); + let newLeftCell = createCustomElement("td", null, "Arrivée:"); newRow.appendChild(newLeftCell); - let newRightCell = document.createElement("td"); - newRightCell.setAttribute("id", "countup-time-ms"); + let newRightCell = createCustomElement("td", {"id": "countup-time-ms"}); newRow.appendChild(newRightCell); oldCell.parentElement.parentElement.insertBefore(newRow, oldCell.parentElement); oldCell.parentElement.style.display = "none"; setInterval(countUpMs, 100); /* Allow multiple occurrences of send */ - let table = document.createElement("table"); - table.classList.add("borderlist"); - let tbody = document.createElement("tbody"); - let tr = document.createElement("tr"); - let th = document.createElement("th"); - th.textContent = "Nombre d'occurrences:"; + let table = createCustomElement("table", {"class": "borderlist"}); + let tbody = createCustomElement("tbody"); + let tr = createCustomElement("tr"); + let th = createCustomElement("th", null, "Nombre d'occurrences:"); tr.appendChild(th) - let td = document.createElement("td"); - let input = document.createElement("input"); - input.setAttribute("type", "number"); - input.setAttribute("name", "occurrences"); - input.setAttribute("value", "1"); + let td = createCustomElement("td"); + let input = createCustomElement("input", {"type": "number", "name": "occurrences", "value": "1"}); td.appendChild(input); tr.appendChild(td); tbody.appendChild(tr); @@ -345,7 +342,7 @@ function main() { let table = contentPane.getElementsByClassName("borderlist")[0]; let rows = table.getElementsByTagName("tr"); - let headCell = document.createElement("th"); + let headCell = createCustomElement("th"); rows[0].appendChild(headCell); for (let i = 1; i < rows.length; i ++) { @@ -360,20 +357,21 @@ function main() { let startPoint = searchPoint(cells[2].textContent); let targetPoint = searchPoint(cells[1].textContent); - let calculatorCell = document.createElement("td"); - let calculatorForm = document.createElement("form"); - calculatorForm.setAttribute("method", "post"); - calculatorForm.setAttribute("action", "/?s=tools&m=runtime_calculator&inta=calculate"); - calculatorForm.appendChild(createInput("hidden", "start_x", startPoint.x)); - calculatorForm.appendChild(createInput("hidden", "start_y", startPoint.y)); - calculatorForm.appendChild(createInput("hidden", "target_x", targetPoint.x)); - calculatorForm.appendChild(createInput("hidden", "target_y", targetPoint.y)); - let calculatorImg = document.createElement("input"); - calculatorImg.setAttribute("type", "image"); - calculatorImg.setAttribute("src", chrome.runtime.getURL("images/calculator.svg")); - calculatorImg.style.width = "20px"; - calculatorImg.style.height = "20px"; - calculatorImg.style.border = "none"; + let calculatorCell = createCustomElement("td"); + let calculatorForm = createCustomElement( + "form", {"method": "post", "action": "/?s=tools&m=runtime_calculator&inta=calculate"} + ); + calculatorForm.appendChild(createCustomInput("hidden", "start_x", startPoint.x)); + calculatorForm.appendChild(createCustomInput("hidden", "start_y", startPoint.y)); + calculatorForm.appendChild(createCustomInput("hidden", "target_x", targetPoint.x)); + calculatorForm.appendChild(createCustomInput("hidden", "target_y", targetPoint.y)); + let calculatorImg = createCustomInput( + "image", + null, + null, + {"src": chrome.runtime.getURL("images/calculator.svg")}, + {"width": "20px", "height": "20px", "border": "none"} + ); calculatorForm.appendChild(calculatorImg); calculatorCell.appendChild(calculatorForm); rows[i].appendChild(calculatorCell);