diff options
-rwxr-xr-x | aports.lua | 33 | ||||
-rw-r--r-- | tpl/packages.tpl | 11 |
2 files changed, 30 insertions, 14 deletions
@@ -46,14 +46,18 @@ function PackagesRenderer:get() local args = { package = self:get_argument("package","", true), arch = self:get_argument("arch", "x86", true), + page = self:get_argument("page", "", true), } local table = { [args.arch] = true } if args.package == "" then args.package = "%" end - local result = QueryPackages(args) + local result = QueryPackages(args, args.page) if next(result) ~= nil then table.rows = result + local rows = (table.rows ~= nil) and (#table.rows) or 0 + table.pager = CreatePagerUri(args, rows) + table.page = (args.page == "") and "1" or args.page end table.packages = true table.header = tpl:render("header.tpl", table) @@ -109,23 +113,24 @@ function QueryContents(filename, pkgname, arch, page) end end -function QueryPackages(terms) +function QueryPackages(terms, page) require('DBI') local dbh = assert(DBI.Connect('SQLite3', 'db/apkindex.db')) - local sth = assert(dbh:prepare('select name, version, url, lic, desc, arch, maintainer, datetime(build_time, \'unixepoch\') as build_time from apkindex where name like ? ORDER BY build_time DESC limit 100')) - sth:execute(terms.package) + local sth = assert(dbh:prepare('select name, version, url, lic, desc, arch, maintainer, datetime(build_time, \'unixepoch\') as build_time from apkindex where name like ? ORDER BY build_time DESC limit ?,50')) + local offset = (tonumber(page) == nil) and 0 or tonumber(page)*50 + sth:execute(terms.package, offset) local r = {} for row in sth:rows(true) do - r[#r+1] = { - package = row.name, - version = row.version, - project = row.url, - license = row.lic, - desc = row.desc, - arch = row.arch, - repo = "unk", - maintainer = string.gsub(row.maintainer, '<.*>', ''), - bdate = row.build_time + r[#r+1] = { + package = row.name, + version = row.version, + project = row.url, + license = row.lic, + desc = row.desc, + arch = row.arch, + repo = "unk", + maintainer = string.gsub(row.maintainer, '<.*>', ''), + bdate = row.build_time } end sth:close() diff --git a/tpl/packages.tpl b/tpl/packages.tpl index 25aa25a..0268b29 100644 --- a/tpl/packages.tpl +++ b/tpl/packages.tpl @@ -48,6 +48,17 @@ {{{/rows}}} </table> </div> + <div class="panel-footer text-center">{{#pager}} + <nav> + <ul class="pagination">{{/pager}}{{#pager}}{{#prev}} + <li class=""><a href="/packages?{{{prev}}}" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{{/prev}}{{/pager}}{{#pager}}{{^prev}} + <li class="disabled"><a href="" aria-label="Previous"><span aria-hidden="true">«</span></a></li>{{/prev}}{{/pager}}{{#pager}} + <li class="active"><a href="#">{{{page}}}</a></li>{{/pager}}{{#pager}}{{#next}} + <li><a href="/packages?{{{next}}}" aria-label="Next"><span aria-hidden="true">»</span></a></li>{{/next}}{{/pager}}{{#pager}}{{^next}} + <li class="disabled"><a href="#" aria-label="Next"><span aria-hidden="true">»</span></a></li>{{/next}}{{/pager}}{{#pager}} + </ul> + </nav>{{/pager}} + </div> </div> </div> {{{footer}}} |