diff --git a/app.py b/app.py index 96c61d581651ca4ec7787676ba4859f65e687df2..f53cdfb08a914c317b535c0e5ab8be3dfd2c9547 100644 --- a/app.py +++ b/app.py @@ -413,18 +413,31 @@ def resizeSVG (m): return f'<svg xmlns="http://www.w3.org/2000/svg" viewbox="{viewbox}" width="{newWidth}mm" height="{newHeight}mm" class="svgbob">' -# @app.route('/svg/<id>') -# def svg (id): -# params = { -# 'pad': id or 'default', -# 'weight': request.args.get('w') or '2', -# } -# params['pad-full'] = etherpad + prefix + params['pad'] - -# # get pad content -# print(' getting ' + params['pad-full']) -# pad_export = requests.get(params['pad-full'] + '/export/txt') -# ascii = pad_export.text +@app.route('/svg/<id>') +def svg (id): + params = { + 'pad': id or 'default', + 'weight': request.args.get('w') or '2', + } + params['pad-full'] = etherpad + prefix + params['pad'] + + # get pad content + print(' getting ' + params['pad-full']) + pad_export = requests.get(params['pad-full'] + '/export/txt') + ascii = pad_export.text + + # to SVG + svg = simplifySVG(ascii2svg(ascii, params['weight'])) + # Remove background rect inserted by SVG Bob + svg = re.sub(r'\<rect class="backdrop" x="\d+" y="\d+" width="\d+" height="\d+">\<\/rect\>', '', svg, flags=re.M) + svg = re.sub(r'<svg xmlns="http://www.w3.org/2000/svg" width="(\d+)" height="(\d+)" class="svgbob">', resizeSVG,svg) + + r = Response(svg, mimetype='application/svg') + r.headers.extend({ + 'Content-Disposition': f'attachment; filename="cobbled-paths-{id}.svg"' + }) + + return r @app.route('/hpgl/<id>') diff --git a/static/css/interface.css b/static/css/interface.css index 93c632bf58c2622dbfee3d90cb28b2405abbb356..64e50619be2050edb23a3b2f25c04002219ef7b8 100644 --- a/static/css/interface.css +++ b/static/css/interface.css @@ -302,6 +302,11 @@ details[open] > summary{ color: white; } +#current-figfont, +.category{ + width: 15em; +} + .collection-menu{ position: relative; } @@ -348,7 +353,7 @@ summary + div{ max-height: calc(100vh - 1px - var(--bar-h)); overflow: auto; - width: calc(100vw - 24rem); + width: calc(100vw - 30rem); display: grid; grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr)); gap: 1px; @@ -394,6 +399,14 @@ summary + div{ mix-blend-mode: darken; display: block; } + + + +.legend{ + width: 24rem; + font-size: 0.825rem; + margin-top: 1em; +} .legend::before{ content: ''; width: 0.75rem; diff --git a/templates/base.html b/templates/base.html index 366b933787d7b99711472367d361c34ba67b679b..d84eadb5116dd41e5b5bbd2717c99a748cab1e8f 100644 --- a/templates/base.html +++ b/templates/base.html @@ -29,8 +29,8 @@ <ul> <li><a {% if request.url_rule.endpoint == "index" %}class="active"{% endif %} href="/">about</a></li> <li><a {% if request.url_rule.endpoint == "draw" %}class="active"{% endif %} href="/draw.html">ASCII draw</a></li> - <li><a {% if request.url_rule.endpoint == "font" %}class="active"{% endif %} href="/font.html">FIGfont make</a></li> <li><a {% if request.url_rule.endpoint == "catalogue" %}class="active"{% endif %} href="/catalogue.html">FIGfont catalogue</a></li> + <li><a {% if request.url_rule.endpoint == "font" %}class="active"{% endif %} href="/font.html">FIGfont make</a></li> <!-- <li><a {% if request.url_rule.endpoint == "image" %}class="active"{% endif %} href="/image.html">image</a></li> --> <li><a {% if request.url_rule.endpoint == "gallery" %}class="active"{% endif %} href="/gallery.html">gallery</a></li> </ul> diff --git a/templates/catalogue.html b/templates/catalogue.html index 4039f368063831cd1850a36f38bccfc33f4621e2..c0b3d70117f61a2e4e112436e99497b5e5c26adb 100644 --- a/templates/catalogue.html +++ b/templates/catalogue.html @@ -22,7 +22,7 @@ </div> {% endfor %} {% endfor %} - <a class="specimen-link" href="/specimen/{{type}}" target="_blank">see all {{type}}</a> + <!-- <a class="specimen-link" href="/specimen/{{type}}" target="_blank">see all {{type}}</a> --> </div> </details> diff --git a/templates/drawing.html b/templates/drawing.html index 84c5289044854a730c736f56ee64e88c9dbf91ba..59c30ce1e67f88e95c5eb698e660f5d559048e22 100644 --- a/templates/drawing.html +++ b/templates/drawing.html @@ -41,18 +41,23 @@ </script> <script> - let save_button = document.getElementById('save-svg'); - - save_button.addEventListener('click', function(){ - //get svg element. - let svg = document.getElementsByTagName("svg")[0]; - - //get svg source. - let serializer = new XMLSerializer(); - let source = serializer.serializeToString(svg); - - let blob = new Blob([source], {type: "text/plain;charset=utf-8"}); - saveAs(blob, 'cobbled-paths.svg'); + let save_button_svg = document.getElementById('save-svg'); + save_button_svg.addEventListener('click', function(){ + let url = document.URL, + parts = url.split('/'), + name = parts[parts.length-1], + svg_url = '/svg/' + name, + a = document.createElement('a'); + a.href = svg_url; + a.setAttribute('download', 'download'); + if (document.createEvent) { + const event = document.createEvent('MouseEvents'); + event.initEvent('click', true, true); + a.dispatchEvent(event); + } + else { + a.click(); + } }); let save_button_hpgl = document.getElementById('save-hpgl'); diff --git a/templates/writing.html b/templates/writing.html index ab8b4eeaa674844ef793077ab071c13e53378451..6c77f9ad985638e8b4e0438bbc95a7c30d6ed4f7 100644 --- a/templates/writing.html +++ b/templates/writing.html @@ -45,18 +45,23 @@ </script> <script> - let save_button = document.getElementById('save-svg'); - - save_button.addEventListener('click', function(){ - //get svg element. - let svg = document.getElementsByTagName("svg")[0]; - - //get svg source. - let serializer = new XMLSerializer(); - let source = serializer.serializeToString(svg); - - let blob = new Blob([source], {type: "text/plain;charset=utf-8"}); - saveAs(blob, 'cobbled-paths.svg'); + let save_button_svg = document.getElementById('save-svg'); + save_button_svg.addEventListener('click', function(){ + let url = document.URL, + parts = url.split('/'), + name = parts[parts.length-1], + svg_url = '/svg/' + name, + a = document.createElement('a'); + a.href = svg_url; + a.setAttribute('download', 'download'); + if (document.createEvent) { + const event = document.createEvent('MouseEvents'); + event.initEvent('click', true, true); + a.dispatchEvent(event); + } + else { + a.click(); + } }); let save_button_hpgl = document.getElementById('save-hpgl');