54497374e4
CI / changes (pull_request) Successful in 1s
CI / unit (pull_request) Successful in 8s
CI / integration (pull_request) Successful in 13s
CI / ui (pull_request) Successful in 27s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m11s
- account.ListUsers/CountUsers with a UserFilter: people vs robots (by a robot identity), case-insensitive '*'/'?' glob masks on display_name and any identity's external_id - admin users list shows the real kind (robot/guest/registered), defaults to people, with a People/Robots toggle + a filter form; pager preserves the filter - integration test for the filter; SQL verified against the live contour DB
38 lines
1.6 KiB
Go Template
38 lines
1.6 KiB
Go Template
{{define "content" -}}
|
|
<h1>Users</h1>
|
|
{{with .Data}}
|
|
<nav class="subnav">
|
|
<a href="/_gm/users"{{if not .Robots}} class="active"{{end}}>People</a> ·
|
|
<a href="/_gm/users?kind=robots"{{if .Robots}} class="active"{{end}}>Robots</a>
|
|
</nav>
|
|
<form class="form" method="get" action="/_gm/users">
|
|
{{if .Robots}}<input type="hidden" name="kind" value="robots">{{end}}
|
|
<input name="name" value="{{.NameMask}}" placeholder="display name mask (* ?)">
|
|
<input name="ext" value="{{.ExternalIDMask}}" placeholder="external id mask (* ?)">
|
|
<button type="submit">Filter</button>
|
|
</form>
|
|
<table class="list">
|
|
<thead><tr><th>Account</th><th>Display name</th><th>Kind</th><th>Lang</th><th>Created</th><th title="per-move think time across all games">Move min</th><th>avg</th><th>max</th></tr></thead>
|
|
<tbody>
|
|
{{range .Items}}
|
|
<tr>
|
|
<td><a href="/_gm/users/{{.ID}}">{{.ID}}</a></td>
|
|
<td>{{.DisplayName}}{{if .Guest}} <span class="pill">guest</span>{{end}}</td>
|
|
<td>{{.Kind}}</td>
|
|
<td>{{.Language}}</td>
|
|
<td>{{.CreatedAt}}</td>
|
|
{{if .HasMoveStats}}<td>{{.MoveMin}}</td><td>{{.MoveAvg}}</td><td>{{.MoveMax}}</td>{{else}}<td colspan="3"><span class="note">—</span></td>{{end}}
|
|
</tr>
|
|
{{else}}
|
|
<tr><td colspan="8"><span class="note">no users</span></td></tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
<nav class="pager">
|
|
{{if .Pager.HasPrev}}<a href="/_gm/users?{{.FilterQuery}}&page={{.Pager.PrevPage}}">« prev</a>{{end}}
|
|
<span>page {{.Pager.Page}} · {{.Pager.Total}} total</span>
|
|
{{if .Pager.HasNext}}<a href="/_gm/users?{{.FilterQuery}}&page={{.Pager.NextPage}}">next »</a>{{end}}
|
|
</nav>
|
|
{{end}}
|
|
{{- end}}
|