diff --git a/resources/cards/svg.css b/resources/cards/svg.css
index 35c4ee8..489a9da 100644
--- a/resources/cards/svg.css
+++ b/resources/cards/svg.css
@@ -41,3 +41,20 @@ body >h1,
form {
text-align: center;
}
+
+h4 {
+ margin:0;
+}
+
+.splitcontainer {
+ width: 100%;
+ overflow: hidden;
+}
+.splitl {
+ width: 45%;
+ float:left;
+}
+.splitr {
+ width: 45%;
+ float:right;
+}
diff --git a/resources/cards/svg.vm b/resources/cards/svg.vm
index 66024a7..56da4ea 100644
--- a/resources/cards/svg.vm
+++ b/resources/cards/svg.vm
@@ -1,38 +1,74 @@
+
SVG list
-SVG list
-
#macro(form)
-
+
+#end
+#macro(pagination)
+
+ #set($self = "svg?")
+ #if($current_collection)
+ #set($self = "${self}collection=$escape_html($current_collection)&")
+ #end
+ #if($filter)
+ #set($self = "${self}filter=$escape_html($filter)&")
+ #end
+ #if($page>1)Previous page - #end
+ Next page
+
#end
Return to cardlist
-
-#form()
+
Available SVGs:
+#pagination()
+
#foreach($name in $svgs)
- -
-
$name
+ -
+
$escape_html($name)
#end
+#pagination()
+
#form()
Return to cardlist
diff --git a/server.py b/server.py
index db558c0..772f641 100755
--- a/server.py
+++ b/server.py
@@ -124,8 +124,19 @@ async def preview_card(request, template={}):
@app.get("/cards/svg")
@withTemplate("cards/svg.vm")
async def svg_list(request, template={}):
- svgs = svg.list_all()
+ filter = request.args.get("filter")
+ page = int(request.args.get("page") or 1)
+ current_collection = request.args.get("collection")
+
+ collections = svg.list_collections()
+ svgs = svg.list_all(current_collection)
+
+ if filter:
+ svgs = [i for i in svgs if filter in i]
+
svgs.sort()
+ svgs = svgs[(page-1)*100:page*100]
+
return response.html(template["svg.vm"].merge(locals()))
@app.post("/cards/svg")
@@ -161,6 +172,9 @@ for j in glob.iglob(os.path.join(config.resourcedir, "**","*"), recursive=True):
@app.get(f"/svg/.svg")
async def get_svg(request, name):
return response.text(svg.get(name), headers={"Content-Type": "image/svg+xml"})
+@app.get(f"/svg//.svg")
+async def get_svg(request, collection, name):
+ return response.text(svg.get(os.path.join(collection, name)), headers={"Content-Type": "image/svg+xml"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
diff --git a/svg.py b/svg.py
index 438c3d7..98e759f 100644
--- a/svg.py
+++ b/svg.py
@@ -3,16 +3,28 @@ import config
from common import memoize, listify_output
@listify_output
-def list_all():
- for i in glob.glob(os.path.join(config.svgdir, "*.svg")):
- yield os.path.basename(i)[:-4]
-
-
+def list_all(collection = None):
+ if collection:
+ for i in glob.glob(os.path.join(config.svgdir, collection, "*.svg")):
+ yield os.path.join(collection, os.path.basename(i)[:-4])
+ else:
+ for i in glob.glob(os.path.join(config.svgdir, "*.svg")):
+ yield os.path.basename(i)[:-4]
+
+@listify_output
+def list_collections():
+ for i in glob.glob(os.path.join(config.svgdir, "*")):
+ if not i.endswith(".svg"):
+ yield os.path.basename(i)
+
+
@memoize
def get(name):
with open(os.path.join(config.svgdir, f"{name}.svg"), "r") as f:
return f.read()
+
+
def store(name, data):
with open(os.path.join(config.svgdir, f"{name}.svg"), "wb" if type(data) is bytes else "w") as f:
return f.write(data)