add download counter

This commit is contained in:
William Bell committed 2023-08-08 19:26:23 +01:00
1 parent 2f5b665714
commit 3c0bae76ec
5 files changed
+26 -3

No files matched your search

+17
View File
@@ -0,0 +1,17 @@
let commaSeperatedNumber(n) = do
if (n % 1 != 0) do
throwError("Runtime Error","commaSeperatedNumber only accepts integers")
num_str = fraction(n)[:-2]
result = ""
if (num_str[0] == '-') do
result += "-"
num_str = num_str[1:]
length = num_str.length
for (i from 0 to length) do
result += num_str[i]
if ((length - i - 1) % 3 == 0 && i != length - 1) do
result += ","
return result
+3 -2
View File
@@ -2,7 +2,7 @@ import "server" as *
import "config" as * import "config" as *
import "database" as * import "database" as *
let search(req, res) = do let download(req, res) = do
let name = req.query.get("name", null) let name = req.query.get("name", null)
let version = req.query.get("version", "latest") let version = req.query.get("version", "latest")
let package = packages.get(name) let package = packages.get(name)
@@ -20,4 +20,5 @@ let search(req, res) = do
let filename = currentVersion.get("filename") let filename = currentVersion.get("filename")
let p = path.join([program.cwd, "data","packages", name, filename]) let p = path.join([program.cwd, "data","packages", name, filename])
res.sendFile(p) res.sendFile(p)
app.route("/isotope-download", null, search) package.download = package.get("download", 0) + 1
app.route("/isotope-download", null, download)
+2 -1
View File
@@ -4,6 +4,7 @@ import "url.ar" as url
import "bleach.ar" as bleach import "bleach.ar" as bleach
import "shlex.ar" as shlex import "shlex.ar" as shlex
import "render" as render import "render" as render
import "commaNumbers" as *
let package(req, res) = do let package(req, res) = do
let acc = account.getByToken(req.cookies.get("token", "")) let acc = account.getByToken(req.cookies.get("token", ""))
@@ -44,5 +45,5 @@ let package(req, res) = do
if (versioni == "latest") versions.insert(0, html) if (versioni == "latest") versions.insert(0, html)
else versions.append(html) else versions.append(html)
let author = account.getById(package.get("owner")) || {username:"Unknown", id:""} let author = account.getById(package.get("owner")) || {username:"Unknown", id:""}
res.renderTemplate("package.html", {name:name, description: package.get("description", ""), 'short-description': package.get("short-description", ""), keywords:package.get("keywords", []).join(', '), repository:package.get("repository", "https://github.com/"), license: package.get("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'")}) res.renderTemplate("package.html", {name:name, description: package.get("description", ""), 'short-description': package.get("short-description", ""), 'downloads': commaSeperatedNumber(package.get("downloads", 0)), keywords:package.get("keywords", []).join(', '), repository:package.get("repository", "https://github.com/"), license: package.get("license", "Unspecified"), author: author.username, authorPage: '/author?'+url.queryStr({id:author.id}), version:version, versions:versions.join(""), command:command, commandComma:command.replace("'", "\\'")})
app.route("/package", null, package) app.route("/package", null, package)
+2
View File
@@ -284,12 +284,14 @@ input:focus {
} }
.package .versions { .package .versions {
margin: 0 1rem;
width: 100%; width: 100%;
max-width: 250px; max-width: 250px;
} }
@media (max-width: 750px) { @media (max-width: 750px) {
.package .versions { .package .versions {
margin: 1rem 0;
max-width: 100%; max-width: 100%;
} }
+2
View File
@@ -84,6 +84,8 @@
>{{command}}<div style="float: right;margin-left: 1rem;">📋 Click to Copy</div></pre> >{{command}}<div style="float: right;margin-left: 1rem;">📋 Click to Copy</div></pre>
</div> </div>
<div class="versions"> <div class="versions">
<h2>{{downloads}} download(s)</h2>
<div class="split"></div>
<h2>Versions</h2> <h2>Versions</h2>
<div class="results">{{%versions}}</div> <div class="results">{{%versions}}</div>
</div> </div>