Compare commits

..

1 Commits

Author SHA1 Message Date
Aaron Kable
3e7d810bb9 Merge branch 'group-manager' into 'master'
[Feature] Group Management - Async Join/Leave and Datatables

See merge request allianceauth/allianceauth!1784
2026-01-02 02:43:29 +00:00
2 changed files with 12 additions and 63 deletions

View File

@@ -19,7 +19,7 @@
{% translate "Join Requests" %}
{% if acceptrequests %}
<span id="acceptRequestsCounter" class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
<span class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
{% endif %}
</a>
</li>
@@ -30,7 +30,7 @@
{% translate "Leave Requests" %}
{% if leaverequests %}
<span id="leaveRequestsCounter" class="badge text-bg-secondary">{{ leaverequests|length }}</span>
<span class="badge text-bg-secondary">{{ leaverequests|length }}</span>
{% endif %}
</a>
</li>
@@ -48,7 +48,7 @@
<div id="add" class="tab-pane active">
{% if acceptrequests %}
<div>
<table id="table-add" class="table table-responsive w-100">
<table id="table-add" class="table table-responsive">
<thead>
<tr>
<th>{% translate "Character" %}</th>
@@ -123,7 +123,7 @@
<div id="leave" class="tab-pane">
{% if leaverequests %}
<div>
<table id="table-rem" class="table table-responsive w-100">
<table id="table-rem" class="table table-responsive">
<thead>
<tr>
<th>{% translate "Character" %}</th>
@@ -271,48 +271,19 @@
function hitAuth(classLookup, table, URL){
toggleButtons(classLookup);
let output = fetch(URL)
fetch(URL)
.then(response => {
if (!response.ok) {
toggleButtons(classLookup);
return true;
return
}
removeRow(table, classLookup)
})
.catch(error => {
toggleButtons(classLookup);
return false;
return;
});
toggleButtons(classLookup);
return output;
}
function decreaseCounterElement(elem){
count = Number(elem.innerText);
count -= 1;
if (!count){
elem.classList.add("d-none");
} else {
elem.innerText = count;
}
}
function decreaseCounter(id){
elem = document.getElementById(id);
if (elem){decreaseCounterElement(elem)}
}
function decreaseMenuCounter(){
decreaseCounter("globalNotificationCount");
let elem = document.querySelector("a[href='{% url "groupmanagement:management" %}']");
if (elem) {
let badge = elem.parentElement.querySelector("span");
if (badge){decreaseCounterElement(badge)}
if (elem.parentElement.parentElement.parentElement.tagName === "LI"){
let folderBadge = elem.parentElement.parentElement.parentElement.querySelector("span");
if (folderBadge){decreaseCounterElement(folderBadge)}
}
}
}
let acceptJoinButtons = document.querySelectorAll(".join-accept");
@@ -320,10 +291,7 @@
elem.addEventListener("click", function(event) {
url = `${acceptJoinURL}${event.target.id}/`
let elemClass = `.btns-join-${event.target.id}`
if (hitAuth(elemClass, tableAdd, url)){
decreaseCounter("acceptRequestsCounter")
decreaseMenuCounter()
}
hitAuth(elemClass, tableAdd, url)
});
});
@@ -332,10 +300,7 @@
elem.addEventListener("click", function(event) {
url = `${rejectJoinURL}${event.target.id}/`
let elemClass = `.btns-join-${event.target.id}`
if (hitAuth(elemClass, tableAdd, url)){
decreaseCounter("acceptRequestsCounter")
decreaseMenuCounter()
}
hitAuth(elemClass, tableAdd, url)
});
});
@@ -344,10 +309,7 @@
elem.addEventListener("click", function(event) {
url = `${acceptLeaveURL}${event.target.id}/`
let elemClass = `.btns-leave-${event.target.id}`
if (hitAuth(elemClass, tableRem, url)){
decreaseCounter("leaveRequestsCounter")
decreaseMenuCounter()
}
hitAuth(elemClass, tableRem, url)
});
});
@@ -356,23 +318,10 @@
elem.addEventListener("click", function(event) {
url = `${rejectLeaveURL}${event.target.id}/`
let elemClass = `.btns-leave-${event.target.id}`
if (hitAuth(elemClass, tableRem, url)){
decreaseCounter("leaveRequestsCounter")
decreaseMenuCounter()
}
hitAuth(elemClass, tableRem, url)
});
});
// Filter Dropdown sets widths so lets remove them when we tab change so they actually show.
$('a[data-bs-toggle="tab"]').on('shown.bs.tab', function (e) {
let elems = document.querySelectorAll(".form-select");
elems.forEach(
function(e) {
e.style.maxWidth = "";
}
);
});
});
</script>
{% endblock extra_javascript %}

View File

@@ -20,7 +20,7 @@ $(document).ready(() => {
if (badges.length > 0 && notificationCount > 0) {
const notificationBadge = document.createElement('span');
notificationBadge.id = "globalNotificationCount";
notificationBadge.classList.add(
'badge',
'text-bg-danger',