added download button
This commit is contained in:
@@ -7,13 +7,13 @@ import strutils
|
||||
import sets
|
||||
from sequtils import map, apply
|
||||
|
||||
var pkgMap : OrderedTable[string, JsonNode]
|
||||
var pkgMap : JsonNode
|
||||
|
||||
type DownloadPanel = ref object
|
||||
badge : Node
|
||||
listgroup : Node
|
||||
pkgs : HashSet[string]
|
||||
body : Node
|
||||
footer : Node
|
||||
|
||||
proc newDownloadPanel(parent : Node) : DownloadPanel =
|
||||
let dp = DownloadPanel()
|
||||
@@ -26,7 +26,6 @@ proc newDownloadPanel(parent : Node) : DownloadPanel =
|
||||
"h3":
|
||||
class ["panel-title"]
|
||||
"a":
|
||||
#attrs {"data-toggle": "collapse", "href": "#dlist"}
|
||||
text "Package list "
|
||||
"span":
|
||||
class ["badge", "pull-right"]
|
||||
@@ -39,7 +38,7 @@ proc newDownloadPanel(parent : Node) : DownloadPanel =
|
||||
cb:
|
||||
dp.listgroup = node
|
||||
"div":
|
||||
class ["panel-body"]
|
||||
class ["panel-footer"]
|
||||
style {
|
||||
"text-align" : "right",
|
||||
"display" :"none"
|
||||
@@ -51,14 +50,33 @@ proc newDownloadPanel(parent : Node) : DownloadPanel =
|
||||
class ["glyphicon", "glyphicon-download"]
|
||||
cb:
|
||||
node.appendChild(document.createTextNode(" Download"))
|
||||
let clickHandler = proc(e : Event) =
|
||||
let pkglist : seq[string] = sequtils.toSeq(dp.pkgs.items())
|
||||
let r = newXMLHTTPRequest()
|
||||
let load_cb = proc(e : Event) =
|
||||
var blob : Blob = r.responseAsBlob #newBlob(r.response, "application/x-tar")
|
||||
let anchor = document.createElement("a")
|
||||
let url = createObjectURL(blob)
|
||||
anchor.setAttribute("href", url)
|
||||
anchor.setAttribute("download", "archive.tar")
|
||||
anchor.click()
|
||||
revokeObjectURL(url)
|
||||
r.addEventListener("load", load_cb)
|
||||
r.open("post", "rest/pkg/downloadTar")
|
||||
r.responseType = "blob"
|
||||
r.setRequestHeader("Accept", "application/x-tar")
|
||||
r.setRequestHeader("Content-Type", "application/json")
|
||||
r.send($(%*pkglist))
|
||||
|
||||
node.addEventListener("click", clickHandler)
|
||||
cb:
|
||||
dp.body = node
|
||||
dp.footer = node
|
||||
dp
|
||||
|
||||
|
||||
proc updateBadge(dp : DownloadPanel) =
|
||||
let st = if dp.pkgs.len() > 0: "block" else: "none"
|
||||
dp.body.style.display = st
|
||||
dp.footer.style.display = st
|
||||
dp.badge.style.display = st
|
||||
dp.badge.textContent = $dp.pkgs.len()
|
||||
|
||||
@@ -257,13 +275,8 @@ htmlDocument document, document.body:
|
||||
|
||||
let r = newXMLHTTPRequest()
|
||||
let load_cb = proc(e : Event) =
|
||||
let response = parseJson($r.responseText)
|
||||
pkgMap = response.getFields()
|
||||
# var keys = newSeq[string]()
|
||||
# for key in response.getFields().keys():
|
||||
# keys.add(key)
|
||||
# echo keys
|
||||
pkgMap = parseJson($r.responseText)
|
||||
r.addEventListener("load", load_cb)
|
||||
r.open("get", "http://oggio88.soon.it/jpacrepo/rest/pkg/map")
|
||||
r.open("get", "rest/pkg/map")
|
||||
r.setRequestHeader("Accept", "application/json")
|
||||
r.send()
|
||||
|
Reference in New Issue
Block a user