From 63ff0d85115eb04584ced89714498e85f6a46032 Mon Sep 17 00:00:00 2001 From: Aevann Date: Sat, 25 Feb 2023 23:44:02 +0200 Subject: [PATCH] better UI for ping groups --- files/assets/css/main.css | 31 ++++++-- files/assets/js/group_members_owner.js | 14 ++-- files/routes/groups.py | 17 +++-- files/templates/group_memberships.html | 98 ++++++++++++++++---------- files/templates/groups.html | 15 ++-- 5 files changed, 113 insertions(+), 62 deletions(-) diff --git a/files/assets/css/main.css b/files/assets/css/main.css index 856751247..693d60e23 100644 --- a/files/assets/css/main.css +++ b/files/assets/css/main.css @@ -3131,6 +3131,9 @@ a.bg-light:hover, a.bg-light:focus, button.bg-light:hover, button.bg-light:focus .mb-md-5 { margin-bottom: 3rem !important; } + .mb-md-5 { + margin-bottom: 5rem !important; + } .mb-md-auto { margin-bottom: auto !important; } @@ -3152,6 +3155,9 @@ a.bg-light:hover, a.bg-light:focus, button.bg-light:hover, button.bg-light:focus .ml-md-5 { margin-left: 3rem !important; } + .ml-md-6 { + margin-left: 5rem !important; + } .ml-md-auto { margin-left: auto !important; } @@ -5988,12 +5994,12 @@ li > .sidebar { @media (max-width: 768px) { .table th { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; + padding-left: 0.5rem; + padding-right: 0.5rem; } .table td { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; + padding-left: 0.5rem; + padding-right: 0.5rem; font-size: 0.9rem; } .marseybux { @@ -7186,7 +7192,20 @@ input[type=number] { @media (max-width: 768px) { .award-tab { - font-size: 10px; - letter-spacing: 1px; + font-size: 10px !important; + letter-spacing: 1px !important; + } + + .ping-groups * { + font-size: 12px !important; + } + + .ping-groups .btn { + font-size: 10px !important; + padding: 5px !important; + } + + #ping-groups .members { + padding-right: 3.7rem !important; } } diff --git a/files/assets/js/group_members_owner.js b/files/assets/js/group_members_owner.js index a34115272..d44643bc7 100644 --- a/files/assets/js/group_members_owner.js +++ b/files/assets/js/group_members_owner.js @@ -1,10 +1,16 @@ -function approve_membership(t, url) { +const members_tbody = document.getElementById('Members_tbody') + +function approve_membership(t, url, uid) { postToast(t, url, { }, () => { - t.parentElement.nextElementSibling.classList.remove('d-none'); - t.parentElement.innerHTML = formatDate(new Date()); + document.getElementById(`kick-${uid}`).classList.remove('d-none') + document.getElementById(`time-${uid}`).innerHTML = formatDate(new Date()); + document.getElementById(`counter-${uid}`).innerHTML = parseInt(members_tbody.lastElementChild.firstElementChild.innerHTML) + 1 + + members_tbody.append(document.getElementById(uid)); + t.parentElement.remove() } ); } @@ -14,7 +20,7 @@ function reject_membership(t, url) { { }, () => { - t.parentElement.parentElement.remove(); + t.parentElement.parentElement.parentElement.remove(); } ); } diff --git a/files/routes/groups.py b/files/routes/groups.py index c292a47af..6e1387602 100644 --- a/files/routes/groups.py +++ b/files/routes/groups.py @@ -82,6 +82,8 @@ def leave_group(v:User, group_name): send_notification(group.owner.id, text) g.db.delete(existing) + + return {"message": msg} return {"message": ''} @@ -93,12 +95,17 @@ def memberships(v:User, group_name): group = g.db.get(Group, group_name) if not group: abort(404) - memberships = g.db.query(GroupMembership).filter_by(group_name=group_name).order_by( - GroupMembership.approved_utc.desc(), - GroupMembership.created_utc.desc(), - ).all() + members = g.db.query(GroupMembership).filter( + GroupMembership.group_name == group_name, + GroupMembership.approved_utc != None + ).order_by(GroupMembership.approved_utc).all() - return render_template('group_memberships.html', v=v, group=group, memberships=memberships) + applications = g.db.query(GroupMembership).filter( + GroupMembership.group_name == group_name, + GroupMembership.approved_utc == None + ).order_by(GroupMembership.created_utc).all() + + return render_template('group_memberships.html', v=v, group=group, members=members, applications=applications) @app.post("/!//approve") @limiter.limit(DEFAULT_RATELIMIT_SLOWER, key_func=get_ID) diff --git a/files/templates/group_memberships.html b/files/templates/group_memberships.html index 88a5f5b8a..2a434f2b6 100644 --- a/files/templates/group_memberships.html +++ b/files/templates/group_memberships.html @@ -1,46 +1,66 @@ {% extends "default.html" %} {% block pagetitle %}!{{group}} Members{% endblock %} {% block content %} -
!{{group}} Members
-
- - - - - {% if v.id == group.owner.id %} - - {% endif %} - - - -{% for membership in memberships %} - - - {% if membership.approved_utc %} - - {% elif v.id == group.owner.id %} - - {% else %} - - {% endif %} - - {% if v.id == group.owner.id %} - - {% endif %} - -{% endfor %} - -
NameApproved on
- {% with user=membership.user %} - {% include "user_in_table.html" %} - {% endwith %} - - - - - -
+
+{% macro process_memberships(memberships, name) %} +
!{{group}} {{name}}
+
+ + + + + + + {% if name == 'Members' %} + + {% else %} + + {% endif %} + + {% if v.id == group.owner.id %} + + {% endif %} + + + + {% for membership in memberships %} + + + + + {% if name == 'Members' %} + + {% else %} + + {% endif %} + + {% if v.id == group.owner.id %} + + {% endif %} + + {% endfor %} + +
#NameApproved onApplied on
{{loop.index}} + {% with user=membership.user %} + {% include "user_in_table.html" %} + {% endwith %} + +
+ +
+ +
+ + +
+
+
+{% endmacro %} + +{{process_memberships(members, 'Members')}} + +{{process_memberships(applications, 'Applications')}} {% if v.id == group.owner.id %} diff --git a/files/templates/groups.html b/files/templates/groups.html index 343ffd0da..73fd6766e 100644 --- a/files/templates/groups.html +++ b/files/templates/groups.html @@ -6,13 +6,12 @@

Ping Groups

- +
- - + @@ -21,10 +20,10 @@ - - @@ -43,7 +42,7 @@

Create Ping Group

-
+
# NameMembersMembers Created on
{{loop.index}} {{group.name}}{{group.member_ids | length}} + + {{group.member_ids | length}} {% if v.id != group.owner.id %} - - + {% endif %}