Code simplification

This commit is contained in:
2025-11-18 20:36:46 +01:00
parent fe33b9a334
commit 952d048b77
4 changed files with 92 additions and 90 deletions

View File

@@ -1,5 +1,9 @@
# Changelog # Changelog
## 1.9.2 (2025-11-18)
- simplification du code
## 1.9.1 (2025-11-18) ## 1.9.1 (2025-11-18)
- ajout d'un bouton pour sélectionner toutes les troupes - ajout d'un bouton pour sélectionner toutes les troupes

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "KAplus", "name": "KAplus",
"version": "1.9.1", "version": "1.9.2",
"developer": { "developer": {
"name": "Samuel Campos", "name": "Samuel Campos",

View File

@@ -5,8 +5,8 @@
"firefox" "firefox"
], ],
"release_notes": { "release_notes": {
"fr": "- ajout d'un bouton pour sélectionner toutes les troupes", "fr": "- simplification du code",
"en-US": " - add button to select all units" "en-US": "- code simplification"
} }
} }
} }

View File

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