From 0b77656e05a611fa0a7c4e9538475c8db91ad64a Mon Sep 17 00:00:00 2001 From: Marek Baczynski Date: Mon, 19 Feb 2024 22:53:44 +0100 Subject: [PATCH] map with names --- parts/maps/elab-annotated.png | Bin 0 -> 42707 bytes parts/server.py | 9 ++++++++- parts/static/script.js | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 parts/maps/elab-annotated.png diff --git a/parts/maps/elab-annotated.png b/parts/maps/elab-annotated.png new file mode 100644 index 0000000000000000000000000000000000000000..85b4d413d12aa80e3cbfdc6305aaee5f331e8ab0 GIT binary patch literal 42707 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 literal 0 HcmV?d00001 diff --git a/parts/server.py b/parts/server.py index 0f5d227..3ca46bf 100755 --- a/parts/server.py +++ b/parts/server.py @@ -211,7 +211,7 @@ def query(filter_dummy, query): r.close() return json.dumps(l) -@app.route(baseURL+'/map/') +@app.route(baseURL+'/map//', defaults={'annotate': None}) def getMap(containerID): s = 'select map, overlay from containers where id = :id;' r = db_engine.execute(text(s), id=containerID) @@ -233,6 +233,13 @@ def getMap(containerID): # width, height = pointer.size # pointerLayer.paste(pointer, (x - int(width/2), y-int(height/2))) mapimage = Image.alpha_composite(mapImage, overlayImage) + if annotate=='a': + try: + annotationName = mapFile.split('.')[0] + '-annotated.' + mapFile.split('.')[1] + annotationImage = Image.open('maps/' + annotationName).convert("RGBA") + mapimage = Image.alpha_composite(mapimage, annotationImage) + except FileNotFoundError: + pass return serveImage(mapimage) diff --git a/parts/static/script.js b/parts/static/script.js index 7780fd3..1f035dd 100755 --- a/parts/static/script.js +++ b/parts/static/script.js @@ -23,6 +23,8 @@ function init_edit(partID) { $('input[name=notes-input]').show(); $('table#details tr#notes td p').hide(); + $('img#map').attr('src', 'parts/map/' + data.container_id + '/a'); + // var newButton = '
'; // $('.round-button-left').replaceWith(newButton); $('#edit-button').html('');