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" %} {% translate "Join Requests" %}
{% if acceptrequests %} {% if acceptrequests %}
<span id="acceptRequestsCounter" class="badge text-bg-secondary">{{ acceptrequests|length }}</span> <span class="badge text-bg-secondary">{{ acceptrequests|length }}</span>
{% endif %} {% endif %}
</a> </a>
</li> </li>
@@ -30,7 +30,7 @@
{% translate "Leave Requests" %} {% translate "Leave Requests" %}
{% if leaverequests %} {% if leaverequests %}
<span id="leaveRequestsCounter" class="badge text-bg-secondary">{{ leaverequests|length }}</span> <span class="badge text-bg-secondary">{{ leaverequests|length }}</span>
{% endif %} {% endif %}
</a> </a>
</li> </li>
@@ -48,7 +48,7 @@
<div id="add" class="tab-pane active"> <div id="add" class="tab-pane active">
{% if acceptrequests %} {% if acceptrequests %}
<div> <div>
<table id="table-add" class="table table-responsive w-100"> <table id="table-add" class="table table-responsive">
<thead> <thead>
<tr> <tr>
<th>{% translate "Character" %}</th> <th>{% translate "Character" %}</th>
@@ -123,7 +123,7 @@
<div id="leave" class="tab-pane"> <div id="leave" class="tab-pane">
{% if leaverequests %} {% if leaverequests %}
<div> <div>
<table id="table-rem" class="table table-responsive w-100"> <table id="table-rem" class="table table-responsive">
<thead> <thead>
<tr> <tr>
<th>{% translate "Character" %}</th> <th>{% translate "Character" %}</th>
@@ -271,48 +271,19 @@
function hitAuth(classLookup, table, URL){ function hitAuth(classLookup, table, URL){
toggleButtons(classLookup); toggleButtons(classLookup);
let output = fetch(URL) fetch(URL)
.then(response => { .then(response => {
if (!response.ok) { if (!response.ok) {
toggleButtons(classLookup); toggleButtons(classLookup);
return true; return
} }
removeRow(table, classLookup) removeRow(table, classLookup)
}) })
.catch(error => { .catch(error => {
toggleButtons(classLookup); toggleButtons(classLookup);
return false; return;
}); });
toggleButtons(classLookup); 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"); let acceptJoinButtons = document.querySelectorAll(".join-accept");
@@ -320,10 +291,7 @@
elem.addEventListener("click", function(event) { elem.addEventListener("click", function(event) {
url = `${acceptJoinURL}${event.target.id}/` url = `${acceptJoinURL}${event.target.id}/`
let elemClass = `.btns-join-${event.target.id}` let elemClass = `.btns-join-${event.target.id}`
if (hitAuth(elemClass, tableAdd, url)){ hitAuth(elemClass, tableAdd, url)
decreaseCounter("acceptRequestsCounter")
decreaseMenuCounter()
}
}); });
}); });
@@ -332,10 +300,7 @@
elem.addEventListener("click", function(event) { elem.addEventListener("click", function(event) {
url = `${rejectJoinURL}${event.target.id}/` url = `${rejectJoinURL}${event.target.id}/`
let elemClass = `.btns-join-${event.target.id}` let elemClass = `.btns-join-${event.target.id}`
if (hitAuth(elemClass, tableAdd, url)){ hitAuth(elemClass, tableAdd, url)
decreaseCounter("acceptRequestsCounter")
decreaseMenuCounter()
}
}); });
}); });
@@ -344,10 +309,7 @@
elem.addEventListener("click", function(event) { elem.addEventListener("click", function(event) {
url = `${acceptLeaveURL}${event.target.id}/` url = `${acceptLeaveURL}${event.target.id}/`
let elemClass = `.btns-leave-${event.target.id}` let elemClass = `.btns-leave-${event.target.id}`
if (hitAuth(elemClass, tableRem, url)){ hitAuth(elemClass, tableRem, url)
decreaseCounter("leaveRequestsCounter")
decreaseMenuCounter()
}
}); });
}); });
@@ -356,23 +318,10 @@
elem.addEventListener("click", function(event) { elem.addEventListener("click", function(event) {
url = `${rejectLeaveURL}${event.target.id}/` url = `${rejectLeaveURL}${event.target.id}/`
let elemClass = `.btns-leave-${event.target.id}` let elemClass = `.btns-leave-${event.target.id}`
if (hitAuth(elemClass, tableRem, url)){ hitAuth(elemClass, tableRem, url)
decreaseCounter("leaveRequestsCounter")
decreaseMenuCounter()
}
}); });
}); });
// 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> </script>
{% endblock extra_javascript %} {% endblock extra_javascript %}

View File

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