Skip to content

Commit

Permalink
can now configure number of results per page
Browse files Browse the repository at this point in the history
  • Loading branch information
SergeyTsalkov committed Nov 14, 2019
1 parent e68f210 commit d3b54e3
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 35 deletions.
2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ require (
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
gopkg.in/yaml.v2 v2.2.1 // indirect
)

go 1.13
34 changes: 25 additions & 9 deletions web/joblist.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ func joblistHandler(req *http.Request, rep *httpReply) (err error) {
queueName := path[1]

page := joblistQueryParams(req.URL.RawQuery)
perpage := joblistPerPage(req)

output := &joblistOutputType{
QueueName: queueName,
Expand All @@ -48,7 +49,7 @@ func joblistHandler(req *http.Request, rep *httpReply) (err error) {
URL: req.URL,
}

err = output.listJobs(listType == "pending")
err = output.listJobs(listType == "pending", perpage)
if err != nil {
return
}
Expand All @@ -58,7 +59,7 @@ func joblistHandler(req *http.Request, rep *httpReply) (err error) {
} else if output.Page > output.Pages {
output.Page = output.Pages

err = output.listJobs(listType == "pending")
err = output.listJobs(listType == "pending", perpage)
if err != nil {
return
}
Expand All @@ -83,6 +84,22 @@ func joblistQueryParams(rq string) (page int) {
return page
}

func joblistPerPage(req *http.Request) (perpage int64) {
perpage = 10

perpageCookie, err := req.Cookie("perpage")
if err != nil {
return
}

perpage, _ = strconv.ParseInt(perpageCookie.Value, 10, 0)
if perpage < 1 || perpage > 100 {
perpage = 10
}

return
}

func (output *joblistOutputType) LinkParamsForPage(page int64) template.URL {
if output.URL == nil {
return template.URL("")
Expand All @@ -102,15 +119,14 @@ func (output *joblistOutputType) LinkParamsForNextPage(page int64) template.URL
return output.LinkParamsForPage(page + 1)
}

func (output *joblistOutputType) listJobs(reverse bool) (err error) {
var perPage int64 = 10
output.Start = (output.Page-1)*perPage + 1
output.End = output.Page * perPage
func (output *joblistOutputType) listJobs(reverse bool, perpage int64) (err error) {
output.Start = (output.Page-1)*perpage + 1
output.End = output.Page * perpage

redisKey := fmt.Sprintf("%s:queue:%s:%s", redisHeader, output.QueueName, output.ListType)

rangeStart := (output.Page - 1) * perPage
rangeEnd := output.Page*perPage - 1
rangeStart := (output.Page - 1) * perpage
rangeEnd := output.Page*perpage - 1

if reverse {
rangeStart, rangeEnd = (rangeEnd+1)*-1, (rangeStart+1)*-1
Expand All @@ -128,7 +144,7 @@ func (output *joblistOutputType) listJobs(reverse bool) (err error) {
}

output.Length = lengthResult.Val()
output.Pages = int64(math.Ceil(float64(output.Length) / float64(perPage)))
output.Pages = int64(math.Ceil(float64(output.Length) / float64(perpage)))
if output.End > output.Length {
output.End = output.Length
}
Expand Down
32 changes: 10 additions & 22 deletions web/tpl/joblist.go
Original file line number Diff line number Diff line change
Expand Up @@ -101,43 +101,31 @@ var jobListTpl = `
</table>
<div class="pages">
<i>Showing results {{ .Start }}-{{ .End }} of {{ .Length }}</i>
<i>
Showing results
<a title="Set Results Per Page" href="#" class="setresults-link">{{ .Start }}-{{ .End }}</a>
of {{ .Length }}
</a>
</i>
{{ if lt $.Page 2 }}
<span class="prevnext">&#10235; Prev</span>
{{ else }}
<a class="prevnext" href="?{{ $.LinkParamsForPrevPage $.Page}}" title="Left arrow">&#10235; Prev</a>
<a class="prevnext prev-link" href="?{{ $.LinkParamsForPrevPage $.Page}}" title="Left arrow">&#10235; Prev</a>
{{ end }}
Page {{ $.Page }} of {{ .Pages }}
{{ if eq $.Page $.Pages }}
<span class="prevnext">Next &#10236;</span>
{{ else }}
<a class="prevnext" href="?{{ $.LinkParamsForNextPage $.Page}}" title="Right arrow">Next &#10236;</a>
<a class="prevnext next-link" href="?{{ $.LinkParamsForNextPage $.Page}}" title="Right arrow">Next &#10236;</a>
{{ end }}
</div>
</div>
</div>
<script>
document.addEventListener('keydown', function(e) {
var code = e.which || e.keyCode;
if (code == 37) {
{{ if lt $.Page 2 }}
// Left
{{ else }}
window.location=window.location.pathname + '?{{ $.LinkParamsForPrevPage $.Page}}'
{{ end }}
} else if (code == 39) {
{{ if eq $.Page $.Pages }}
// Right
{{ else }}
window.location=window.location.pathname + '?{{ $.LinkParamsForNextPage $.Page}}'
{{ end }}
}
}, false);
</script>
{{ template "footer" }}
{{ template "footer" "joblist" }}
{{ end }}
`
33 changes: 29 additions & 4 deletions web/tpl/layout.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ var headerTpl = `
<title>Brooce Job Queue</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" />
<style>
div.header {
Expand All @@ -37,7 +37,7 @@ var headerTpl = `
}
div.pages {
margin-top: 3em;
margin: 3em 0 1em 0;
text-align: center;
}
div.pages i {
Expand Down Expand Up @@ -121,9 +121,34 @@ var footerTpl = `
</div> <!-- container -->
</body>
{{ if . }}
{{ if eq . "joblist" }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/2.2.0/js.cookie.min.js" integrity="sha256-9Nt2r+tJnSd2A2CRUvnjgsD+ES1ExvjbjBNqidm9doI=" crossorigin="anonymous"></script>
<script>
$(document).keydown(function(evt) {
var target = null
if (evt.which == 37) target = $('a.prev-link')
else if (evt.which == 39) target = $('a.next-link')
else return
if (target && target.length > 0) {
window.location.href = target.attr('href')
}
})
$('a.setresults-link').click(function(evt) {
evt.preventDefault()
var perpage = prompt("How may results per page? (1-100, default 10)")
Cookies.set('perpage', parseInt(perpage))
location.reload()
})
</script>
{{ end }}
{{ end }}
<!--
<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script>
-->
</html>
Expand Down

0 comments on commit d3b54e3

Please sign in to comment.