Sync both clan lists.

This commit is contained in:
MaxJa4
2024-01-15 11:01:51 +01:00
parent fe92068ad3
commit 49a6b8de38
11 changed files with 193 additions and 42 deletions

View File

@@ -36,10 +36,11 @@
if (addClanModal) {
addClanModal.addEventListener('shown.bs.modal', event => {
const submitButton = addClanModal.querySelector('button[name="submit"]');
submitButton.addEventListener('click', function () {
const button = event.relatedTarget;
const clanListId = button.getAttribute('data-bs-list');
const clanList = document.querySelector(clanListId);
submitButton.addEventListener('click', function (e) {
e.preventDefault();
submitButton.onclick = function () {}
const [clanList, otherClanList] = getClanLists(event);
const clanName = addClanModal.querySelector('#clanName');
const clanTag = addClanModal.querySelector('#clanTag');
@@ -61,9 +62,15 @@
const opt = document.createElement('option');
opt.innerText = "[" + clanTag.value + "]" + " " + clanName.value;
opt.value = response.json()['ID'];
clanList.appendChild(opt);
clanList.appendChild(opt.cloneNode(true));
clanList.selectedIndex = clanList.children.length - 1;
clanList.dispatchEvent(new Event('change'));
const lastIndex = otherClanList.selectedIndex;
otherClanList.appendChild(opt);
otherClanList.selectedIndex = lastIndex;
addClanModalBS.hide();
clanName.value = "";
clanTag.value = "";

View File

@@ -26,19 +26,16 @@
const deleteClanModalBS = new bootstrap.Modal('#deleteClanModal');
if (deleteClanModal) {
deleteClanModal.addEventListener('show.bs.modal', event => {
const button = event.relatedTarget;
const clanListId = button.getAttribute('data-bs-list');
const clanList = document.querySelector(clanListId);
const selectedClan = clanList.options[clanList.selectedIndex].text;
const [clanList, otherClanList] = getClanLists(event);
const selectedClan = clanList.options[clanList.selectedIndex].text;
const modalBodyInput = deleteClanModal.querySelector('#clan');
modalBodyInput.innerText = selectedClan;
const submitButton = deleteClanModal.querySelector('button[name="submit"]');
submitButton.addEventListener('click', function () {
const button = event.relatedTarget;
const clanListId = button.getAttribute('data-bs-list');
const clanList = document.querySelector(clanListId);
submitButton.addEventListener('click', function (e) {
e.preventDefault();
submitButton.onclick = function () {}
const clanId = parseInt(clanList.value);
@@ -50,9 +47,19 @@
})
.then((response) => {
if (response.ok) {
clanList.removeChild(clanList.children[clanList.selectedIndex]);
const clanToRemove = clanList.children[clanList.selectedIndex];
const clanIndex = clanToRemove.index;
clanList.removeChild(clanToRemove);
clanList.selectedIndex = 0;
clanList.dispatchEvent(new Event('change'));
const lastOtherIndex = otherClanList.selectedIndex;
otherClanList.children.item(clanIndex).remove();
if (lastOtherIndex === clanIndex) {
otherClanList.selectedIndex = 0;
otherClanList.dispatchEvent(new Event('change'));
}
deleteClanModalBS.hide();
} else
throw new Error(response.error)

View File

@@ -37,10 +37,11 @@
const editClanModalBS = new bootstrap.Modal('#editClanModal');
if (editClanModal) {
editClanModal.addEventListener('show.bs.modal', event => {
const button = event.relatedTarget;
const clanListId = button.getAttribute('data-bs-list');
const clanList = document.querySelector(clanListId);
const selectedClanItem = clanList.options[clanList.selectedIndex];
const [clanList, otherClanList] = getClanLists(event);
const selectedClanIndex = clanList.selectedIndex;
const selectedClanItem = clanList.options[selectedClanIndex];
const otherSelClanItem = otherClanList.options[selectedClanIndex];
const clanName = editClanModal.querySelector('#editClanName');
const clanTag = editClanModal.querySelector('#editClanTag');
@@ -66,7 +67,9 @@
throw new Error(error);
});
submitButton.addEventListener('click', function () {
submitButton.addEventListener('click', function (e) {
e.preventDefault();
submitButton.onclick = function () {}
fetch("/clan/" + clanId, {
method: "PATCH",
body: JSON.stringify({
@@ -80,7 +83,10 @@
})
.then((response) => {
if (response.ok) {
selectedClanItem.innerText = "[" + clanTag.value + "]" + " " + clanName.value;
const newName = "[" + clanTag.value + "]" + " " + clanName.value;
selectedClanItem.innerText = newName;
otherSelClanItem.innerText = newName;
editClanModalBS.hide();
clanName.value = "";
clanTag.value = "";