Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[UI] Sortable Tables Header By Click #7980

Merged
merged 24 commits into from
Jun 24, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
73ba43c
[UI] Sortable Tables Header By Click
6543 Mar 11, 2020
ce2f6ab
get rid of padding above header
6543 Mar 11, 2020
36ebfdb
restart CI
6543 Mar 12, 2020
9a9465f
Merge branch 'master' into sortable-tables
6543 Mar 12, 2020
f140fc6
Merge branch 'master' into sortable-tables
6543 Mar 29, 2020
9c27520
Merge branch 'master' into sortable-tables
6543 Apr 1, 2020
3717ab8
Merge branch 'master' into sortable-tables
6543 Apr 11, 2020
666fcb5
Merge branch 'master' into sortable-tables
6543 Apr 20, 2020
b9a4c29
Merge branch 'master' into sortable-tables
6543 Apr 24, 2020
21a7d8a
Merge branch 'master' into sortable-tables
6543 May 18, 2020
f1dc5b1
Merge branch 'master' into sortable-tables
6543 May 28, 2020
77b1eaa
Merge branch 'master' into sortable-tables
6543 May 30, 2020
eed0bd2
Merge branch 'master' into sortable-tables
6543 Jun 11, 2020
1925de7
Merge branch 'master' into sortable-tables
6543 Jun 22, 2020
271ba55
fix lint
6543 Jun 22, 2020
b963964
convert getArrow JS to SortArrow go func
6543 Jun 22, 2020
15a5fee
addopt SortArrow funct
6543 Jun 22, 2020
5fc00a0
Merge branch 'master' into sortable-tables
6543 Jun 22, 2020
ddd7bfd
Merge branch 'master' into sortable-tables
6543 Jun 23, 2020
092f1c6
suggestions from @silverwind - tablesort.js
6543 Jun 23, 2020
0a69d03
Update web_src/js/features/tablesort.js
6543 Jun 23, 2020
ed644f7
Update web_src/js/features/tablesort.js
6543 Jun 23, 2020
1e7ffa5
Merge branch 'master' into sortable-tables
6543 Jun 24, 2020
940b4e7
Merge branch 'master' into sortable-tables
zeripath Jun 24, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 29 additions & 2 deletions modules/templates/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -298,8 +298,30 @@ func NewFuncMap() []template.FuncMap {
}
return false
},
"svg": func(icon string, size int) template.HTML {
return template.HTML(fmt.Sprintf(`<svg class="svg %s" width="%d" height="%d" aria-hidden="true"><use xlink:href="#%s" /></svg>`, icon, size, size, icon))
"svg": SVG,
"SortArrow": func(normSort, revSort, urlSort string, isDefault bool) template.HTML {
// if needed
if len(normSort) == 0 || len(urlSort) == 0 {
return ""
}

if len(urlSort) == 0 && isDefault {
// if sort is sorted as default add arrow tho this table header
if isDefault {
return SVG("octicon-triangle-down", 16)
}
} else {
// if sort arg is in url test if it correlates with column header sort arguments
if urlSort == normSort {
// the table is sorted with this header normal
return SVG("octicon-triangle-down", 16)
} else if urlSort == revSort {
// the table is sorted with this header reverse
return SVG("octicon-triangle-up", 16)
}
}
// the table is NOT sorted with this header
return ""
},
}}
}
Expand Down Expand Up @@ -410,6 +432,11 @@ func NewTextFuncMap() []texttmpl.FuncMap {
}}
}

// SVG render icons
func SVG(icon string, size int) template.HTML {
return template.HTML(fmt.Sprintf(`<svg class="svg %s" width="%d" height="%d" aria-hidden="true"><use xlink:href="#%s" /></svg>`, icon, size, size, icon))
}

// Safe render raw as HTML
func Safe(raw string) template.HTML {
return template.HTML(raw)
Expand Down
10 changes: 8 additions & 2 deletions templates/admin/emails/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,15 @@
<table class="ui very basic striped table">
<thead>
<tr>
<th>{{.i18n.Tr "admin.users.name"}}</th>
<th data-sortt-asc="username" data-sortt-desc="reverseusername">
{{.i18n.Tr "admin.users.name"}}
{{SortArrow "username" "reverseusername" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.users.full_name"}}</th>
<th>{{.i18n.Tr "email"}}</th>
<th data-sortt-asc="email" data-sortt-desc="reverseemail" data-sortt-default="true">
{{.i18n.Tr "email"}}
{{SortArrow "email" "reverseemail" $.SortType true}}
</th>
<th>{{.i18n.Tr "admin.emails.primary"}}</th>
<th>{{.i18n.Tr "admin.emails.activated"}}</th>
</tr>
Expand Down
12 changes: 9 additions & 3 deletions templates/admin/org/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,18 @@
<table class="ui very basic striped table">
<thead>
<tr>
<th>ID</th>
<th>{{.i18n.Tr "admin.orgs.name"}}</th>
<th data-sortt-asc="oldest" data-sortt-desc="newest">ID{{SortArrow "oldest" "newest" $.SortType false}}</th>
<th data-sortt-asc="alphabetically" data-sortt-desc="reversealphabetically" data-sortt-default="true">
{{.i18n.Tr "admin.orgs.name"}}
{{SortArrow "alphabetically" "reversealphabetically" $.SortType true}}
</th>
<th>{{.i18n.Tr "admin.orgs.teams"}}</th>
<th>{{.i18n.Tr "admin.orgs.members"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th>
<th data-sortt-asc="recentupdate" data-sortt-desc="leastupdate">
{{.i18n.Tr "admin.users.created"}}
{{SortArrow "recentupdate" "leastupdate" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.users.edit"}}</th>
</tr>
</thead>
Expand Down
22 changes: 17 additions & 5 deletions templates/admin/repo/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,27 @@
<table class="ui very basic striped table">
<thead>
<tr>
<th>ID</th>
<th data-sortt-asc="oldest" data-sortt-desc="newest">ID{{SortArrow "oldest" "newest" $.SortType false}}</th>
<th>{{.i18n.Tr "admin.repos.owner"}}</th>
<th>{{.i18n.Tr "admin.repos.name"}}</th>
<th data-sortt-asc="alphabetically" data-sortt-desc="reversealphabetically">
{{.i18n.Tr "admin.repos.name"}}
{{SortArrow "alphabetically" "reversealphabetically" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.repos.private"}}</th>
<th>{{.i18n.Tr "admin.repos.watches"}}</th>
<th>{{.i18n.Tr "admin.repos.stars"}}</th>
<th>{{.i18n.Tr "admin.repos.forks"}}</th>
<th data-sortt-asc="moststars" data-sortt-desc="feweststars">
{{.i18n.Tr "admin.repos.stars"}}
{{SortArrow "moststars" "feweststars" $.SortType false}}
</th>
<th data-sortt-asc="mostforks" data-sortt-desc="fewestforks">
{{.i18n.Tr "admin.repos.forks"}}
{{SortArrow "mostforks" "fewestforks" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.repos.issues"}}</th>
<th>{{.i18n.Tr "admin.repos.size"}}</th>
<th data-sortt-asc="size" data-sortt-desc="reversesize">
{{.i18n.Tr "admin.repos.size"}}
{{SortArrow "size" "reversesize" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.notices.op"}}</th>
</tr>
Expand Down
12 changes: 9 additions & 3 deletions templates/admin/user/list.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,21 @@
<table class="ui very basic striped table">
<thead>
<tr>
<th>ID</th>
<th>{{.i18n.Tr "admin.users.name"}}</th>
<th data-sortt-asc="oldest" data-sortt-desc="newest">ID{{SortArrow "oldest" "newest" .SortType false}}</th>
<th data-sortt-asc="alphabetically" data-sortt-desc="reversealphabetically" data-sortt-default="true">
{{.i18n.Tr "admin.users.name"}}
{{SortArrow "alphabetically" "reversealphabetically" $.SortType true}}
</th>
<th>{{.i18n.Tr "email"}}</th>
<th>{{.i18n.Tr "admin.users.activated"}}</th>
<th>{{.i18n.Tr "admin.users.admin"}}</th>
<th>{{.i18n.Tr "admin.users.restricted"}}</th>
<th>{{.i18n.Tr "admin.users.repos"}}</th>
<th>{{.i18n.Tr "admin.users.created"}}</th>
<th>{{.i18n.Tr "admin.users.last_login"}}</th>
<th data-sortt-asc="recentupdate" data-sortt-desc="leastupdate">
{{.i18n.Tr "admin.users.last_login"}}
{{SortArrow "recentupdate" "leastupdate" $.SortType false}}
</th>
<th>{{.i18n.Tr "admin.users.edit"}}</th>
</tr>
</thead>
Expand Down
20 changes: 20 additions & 0 deletions web_src/js/features/tablesort.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
export default function initTableSort() {
for (const header of document.querySelectorAll('th[data-sortt-asc]') || []) {
const {sorttAsc, sorttDesc, sorttDefault} = header.dataset;
header.addEventListener('click', () => {
tableSort(sorttAsc, sorttDesc, sorttDefault);
});
}
}

function tableSort(normSort, revSort, isDefault) {
if (!normSort) return false;
if (!revSort) revSort = '';

const url = new URL(window.location);
let urlSort = url.searchParams.get('sort');
if (!urlSort && isDefault) urlSort = normSort;

url.searchParams.set('sort', urlSort !== normSort ? normSort : revSort);
window.location.replace(url.href);
}
2 changes: 2 additions & 0 deletions web_src/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import initUserHeatmap from './features/userheatmap.js';
import initServiceWorker from './features/serviceworker.js';
import attachTribute from './features/tribute.js';
import createDropzone from './features/dropzone.js';
import initTableSort from './features/tablesort.js';
import highlight from './features/highlight.js';
import ActivityTopAuthors from './components/ActivityTopAuthors.vue';
import {initNotificationsTable, initNotificationCount} from './features/notification.js';
Expand Down Expand Up @@ -2450,6 +2451,7 @@ $(document).ready(async () => {
initRepoStatusChecker();
initTemplateSearch();
initContextPopups();
initTableSort();
initNotificationsTable();
initNotificationCount();

Expand Down
2 changes: 0 additions & 2 deletions web_src/less/_admin.less
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@
font-size: 13px;

&:not(.striped) {
padding-top: 5px;

thead {
th:last-child {
padding-right: 5px !important;
Expand Down
11 changes: 11 additions & 0 deletions web_src/less/_base.less
Original file line number Diff line number Diff line change
Expand Up @@ -1223,6 +1223,17 @@ i.icon.centerlock {
margin-top: 1rem;
}

table th[data-sortt-asc],
table th[data-sortt-desc] {
&:hover {
background: rgba(0, 0, 0, .1) !important;
cursor: pointer !important;
}
.svg {
margin-left: .25rem;
}
}

/* limit width of all direct dropdown menu children */
/* https://github.com/go-gitea/gitea/pull/10835 */
.dropdown:not(.selection) > .menu:not(.review-box) > *:not(.header) {
Expand Down
2 changes: 1 addition & 1 deletion web_src/less/themes/theme-arc-green.less
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ a.ui.basic.green.label:hover {

.ui.table thead th,
.ui.table > thead > tr > th {
background: #404552 !important;
background: #404552;
color: #dbdbdb !important;
}

Expand Down