From 59855a71efe4160e88c3c094152ee6eb6dad8ef3 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Mon, 17 Feb 2020 20:16:30 +0100 Subject: [PATCH] Fix layout bug and improve UI for permission tool, add filterDropDown JS --- .../templates/public/login.html | 10 +-- .../templates/permissions_tool/audit.html | 77 ++++++++++++++----- .../templates/permissions_tool/audit_row.html | 25 ++++-- .../permissions_tool/audit_state_row.html | 11 --- .../templates/permissions_tool/overview.html | 62 +++++++++++---- allianceauth/static/css/auth-base.css | 6 ++ .../js/filterDropDown/filterDropDown.min.js | 1 + .../filterDropDown.min.js:Zone.Identifier | 4 + 8 files changed, 140 insertions(+), 56 deletions(-) delete mode 100644 allianceauth/permissions_tool/templates/permissions_tool/audit_state_row.html create mode 100644 allianceauth/static/js/filterDropDown/filterDropDown.min.js create mode 100644 allianceauth/static/js/filterDropDown/filterDropDown.min.js:Zone.Identifier diff --git a/allianceauth/authentication/templates/public/login.html b/allianceauth/authentication/templates/public/login.html index 0129d058..80d31979 100644 --- a/allianceauth/authentication/templates/public/login.html +++ b/allianceauth/authentication/templates/public/login.html @@ -1,10 +1,8 @@ {% extends 'public/middle_box.html' %} {% load static %} {% block page_title %}Login{% endblock %} -{% block middle_box_content %} -

- - - -

+{% block middle_box_content %} + + + {% endblock %} \ No newline at end of file diff --git a/allianceauth/permissions_tool/templates/permissions_tool/audit.html b/allianceauth/permissions_tool/templates/permissions_tool/audit.html index 2b1c78a4..c967f91f 100644 --- a/allianceauth/permissions_tool/templates/permissions_tool/audit.html +++ b/allianceauth/permissions_tool/templates/permissions_tool/audit.html @@ -8,38 +8,34 @@ {% block content %}

{% trans "Permissions Audit" %}: {{ permission.permission.codename }}

- - {% trans "Back" %} - +

+ + {% trans "Back" %} + +

- +
- - + + + + - {% for user in permission.users %} - - {% include 'permissions_tool/audit_row.html' with group="Permission Granted Directly (No Group)" %} - + {% for user in permission.users %} + {% include 'permissions_tool/audit_row.html' with type="User" name="Permission granted directlty" %} {% endfor %} {% for group in permission.groups %} {% for user in group.user_set.all %} - {% include 'permissions_tool/audit_row.html' %} + {% include 'permissions_tool/audit_row.html' with type="Group" name=group%} {% endfor %} {% endfor %} {% for state in permission.states %} {% for profile in state.userprofile_set.all %} {% with profile.user as user %} - - {% include 'permissions_tool/audit_state_row.html' %} - + {% include 'permissions_tool/audit_row.html' with type="State" name=state%} {% endwith %} {% endfor %} {% endfor %} @@ -49,3 +45,48 @@ {% endblock content %} +{% block extra_javascript %} + {% include 'bundles/datatables-js.html' %} + +{% endblock %} + +{% block extra_css %} + {% include 'bundles/datatables-css.html' %} +{% endblock %} + +{% block extra_script %} + $(document).ready(function() { + var groupColumn = 0; + var table = $('#tab_permissions_audit').DataTable({ + columnDefs: [ + { "visible": false, "targets": groupColumn } + ], + order: [[ groupColumn, 'asc' ], [ 2, 'asc' ] ], + filterDropDown: + { + columns: [ + { + idx: 0, + title: 'Source' + } + ], + bootstrap: true + }, + drawCallback: function ( settings ) { + var api = this.api(); + var rows = api.rows( {page:'current'} ).nodes(); + var last=null; + + api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) { + if ( last !== group ) { + $(rows).eq( i ).before( + '' + ); + + last = group; + } + } ); + } + } ); + } ); +{% endblock %} \ No newline at end of file diff --git a/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html b/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html index 7431556b..390e04d7 100644 --- a/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html +++ b/allianceauth/permissions_tool/templates/permissions_tool/audit_row.html @@ -1,10 +1,25 @@ +{% load evelinks %} + - + + diff --git a/allianceauth/permissions_tool/templates/permissions_tool/audit_state_row.html b/allianceauth/permissions_tool/templates/permissions_tool/audit_state_row.html deleted file mode 100644 index dd8baa5f..00000000 --- a/allianceauth/permissions_tool/templates/permissions_tool/audit_state_row.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n %} - - - - diff --git a/allianceauth/permissions_tool/templates/permissions_tool/overview.html b/allianceauth/permissions_tool/templates/permissions_tool/overview.html index 75b7a0b0..6cb1703c 100644 --- a/allianceauth/permissions_tool/templates/permissions_tool/overview.html +++ b/allianceauth/permissions_tool/templates/permissions_tool/overview.html @@ -8,19 +8,17 @@ {% block content %}

{% trans "Permissions Overview" %}

- {% if request.GET.all != 'yes' %} - - {% blocktrans %}Showing only applied permissions{% endblocktrans %} - {% trans "Show All" %} - +

+ {% if request.GET.all != 'yes' %} + {% blocktrans %}Showing only applied permissions{% endblocktrans %} + {% trans "Show All" %} {% else %} - - {% blocktrans %}Showing all permissions{% endblocktrans %} - {% trans "Show Applied" %} - + {% blocktrans %}Showing all permissions{% endblocktrans %} + {% trans "Show Applied" %} {% endif %} +

-
- {% trans "Group" %} - - {% trans "User" %} - {% trans "Group" %}{% trans "User / Character" %}{% trans "Organization" %}
' + group + '
- {% if forloop.first %} - {{ group }} - {% endif %} + + {{ type }}: {{ name }} + + - {{ user }} + {{ user }}
+ {{ user.profile.main_character.character_name }} +
+ {% if user.profile.main_character %} + + {{ user.profile.main_character.corporation_name }} +
+ {{ user.profile.main_character.alliance_name|default_if_none:"" }} + {% else %} + (unknown) + {% endif %} +
- {% if forloop.first %} - {% trans 'State' %}: {{ state }} - {% endif %} - - {{ user }} -
+
' + ); + + last = group; + } + } ); + } + } ); + } ); {% endblock %} \ No newline at end of file diff --git a/allianceauth/static/css/auth-base.css b/allianceauth/static/css/auth-base.css index cd069235..1448a323 100644 --- a/allianceauth/static/css/auth-base.css +++ b/allianceauth/static/css/auth-base.css @@ -43,6 +43,12 @@ ul.list-group.list-group-horizontal > li.list-group-item { justify-content: center; } +/* group headers within a table */ +.tr-group { + font-weight: bold; + background-color: #e6e6e6 !important; +} + /* Small devices (tablets, 768px and up) */ @media (min-width: 768px) { diff --git a/allianceauth/static/js/filterDropDown/filterDropDown.min.js b/allianceauth/static/js/filterDropDown/filterDropDown.min.js new file mode 100644 index 00000000..d19686ff --- /dev/null +++ b/allianceauth/static/js/filterDropDown/filterDropDown.min.js @@ -0,0 +1 @@ +!function(t){function e(t){var e={columns:[],columnsIdxList:[],bootstrap:!1,autoSize:!0,label:"Filter "};if("bootstrap"in t&&"boolean"==typeof t.bootstrap&&(e.bootstrap=t.bootstrap),"autoSize"in t&&"boolean"==typeof t.autoSize&&(e.autoSize=t.autoSize),"label"in t&&"string"==typeof t.label&&(e.label=t.label),"columns"in t)for(var i=0;i'+r.label+""),o.columns(r.columnsIdxList).every(function(){var e=this.index(),i=null!==r.columns[e].title?r.columns[e].title:t(this.header()).html();""==i&&(i="column "+(e+1));var n="form-control "+a+"_filterSelect",o=a+"_filterSelect"+e;t("#"+s).append('');var l=t("#"+o).empty().append('");r.autoSize&&r.columns[e].autoSize&&screen.width>768&&l.css("max-width",l.outerWidth()),null!==r.columns[e].maxWidth&&l.css("max-width",r.columns[e].maxWidth)})}}}}),t(document).on("init.dt",function(i,n){if("dt"===i.namespace){var o=new t.fn.dataTable.Api(n),a=o.table().node().id,l=o.init();if("filterDropDown"in l){var r=e(l.filterDropDown);o.table().container();o.columns(r.columnsIdxList).every(function(){var e=this,i=e.index(),n=t("#"+(a+"_filterSelect"+i));n.on("change",function(){var i=t.fn.dataTable.util.escapeRegex(t(this).val());e.search(i?"^"+i+"$":"",!0,!1).draw()}),e.data().unique().sort().each(function(t,e){""!=t&&n.append('")})})}}})}(jQuery); \ No newline at end of file diff --git a/allianceauth/static/js/filterDropDown/filterDropDown.min.js:Zone.Identifier b/allianceauth/static/js/filterDropDown/filterDropDown.min.js:Zone.Identifier new file mode 100644 index 00000000..8408f13c --- /dev/null +++ b/allianceauth/static/js/filterDropDown/filterDropDown.min.js:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://github.com/ErikKalkoken/filterDropDown/blob/master/js/filterDropDown.min.js +HostUrl=https://raw.githubusercontent.com/ErikKalkoken/filterDropDown/master/js/filterDropDown.min.js
@@ -81,7 +79,8 @@ {% endblock content %} {% block extra_javascript %} - {% include 'bundles/datatables-js.html' %} + {% include 'bundles/datatables-js.html' %} + {% endblock %} {% block extra_css %} @@ -89,9 +88,40 @@ {% endblock %} {% block extra_script %} - $(document).ready(function(){ - $('#tab_permissions_overview').DataTable({ - order: [ [ 0, "asc" ], [ 1, "asc" ], [ 2, "asc" ] ] - }); - }); + $(document).ready(function() { + var groupColumn = 0; + var table = $('#tab_permissions_overview').DataTable({ + columnDefs: [ + { "visible": false, "targets": groupColumn } + ], + order: [[ groupColumn, 'asc' ], [ 1, 'asc' ], [ 2, 'asc' ] ], + filterDropDown: + { + columns: [ + { + idx: 0 + }, + { + idx: 1 + } + ], + bootstrap: true + }, + drawCallback: function ( settings ) { + var api = this.api(); + var rows = api.rows( {page:'current'} ).nodes(); + var last=null; + + api.column(groupColumn, {page:'current'} ).data().each( function ( group, i ) { + if ( last !== group ) { + $(rows).eq( i ).before( + '
' + group + '