From 2133222d67191b9d6d3cf272b726da9d54f492e4 Mon Sep 17 00:00:00 2001 From: tessier Date: Sat, 13 Jun 2020 12:19:44 +0900 Subject: [PATCH] [Web] Continue + add css --- docker/web/app.py | 53 ++++---- docker/web/static/diagrams.css | 6 + docker/web/static/diagrams.js | 30 +++++ .../static/diagrams/grouped_workersぽぽ.png | Bin 54809 -> 0 bytes docker/web/templates/app.html | 117 ++++++++++++++++++ docker/web/templates/builder.html | 6 - docker/web/templates/welcome.html | 3 - 7 files changed, 177 insertions(+), 38 deletions(-) create mode 100644 docker/web/static/diagrams.css create mode 100644 docker/web/static/diagrams.js delete mode 100644 docker/web/static/diagrams/grouped_workersぽぽ.png create mode 100644 docker/web/templates/app.html delete mode 100644 docker/web/templates/builder.html delete mode 100644 docker/web/templates/welcome.html diff --git a/docker/web/app.py b/docker/web/app.py index 32fc9420..9637ea11 100644 --- a/docker/web/app.py +++ b/docker/web/app.py @@ -3,51 +3,46 @@ from flask import Flask, render_template app = Flask(__name__) -@app.route('/') -def welcome(): - """Top welcome page.""" - template = 'welcome.html' - - values = { - "aa": "bjc" - } - - return render_template(template, **values) - - -@app.route('/builder', methods=['POST', 'GET']) +@app.route('/', methods=['POST', 'GET']) def builder(): - """Builder page with python input.""" + """One page app.""" import os import subprocess from flask import request - template = 'builder.html' + template = 'app.html' values = {} diag_folder = "static/diagrams/" - code = request.form.get('code') - if code: + diagrams_data = request.form.get('diagrams_data') + if diagrams_data: # clean the directory _, _, filenames = next(os.walk(diag_folder)) for one_file in filenames: os.remove('%s%s' % (diag_folder, one_file)) - # write the code in a file and execute + # write the diagrams_data in a file and execute with open("%stemp_code.py" % diag_folder, "w") as f: - f.write(code) + f.write(diagrams_data) result = subprocess.run(["python3", "temp_code.py"], cwd=diag_folder, capture_output=True) - # TODO get the result if there's error to display on the template - print('stdout: ', result.stdout) - print('stderr: ', result.stderr) # delete the temp file os.remove("%stemp_code.py" % diag_folder) - # get the pic to display - _, _, filenames = next(os.walk(diag_folder)) - pic_name = filenames[0] - values.update({ - "code": code, - "pic_name": pic_name, - }) + # if there's error display them on the template + if result.stderr: + error_msg = result.stderr.decode("utf-8") + # clean up the error message + error_msg = error_msg.replace('File "temp_code.py", ', '') + values.update({ + "diagrams_data": diagrams_data, + "error": error_msg + }) + else: + # get the pic to display + _, _, filenames = next(os.walk(diag_folder)) + pic_name = filenames[0] + values.update({ + "diagrams_data": diagrams_data, + "pic_name": pic_name, + }) return render_template(template, **values) diff --git a/docker/web/static/diagrams.css b/docker/web/static/diagrams.css new file mode 100644 index 00000000..84fa4421 --- /dev/null +++ b/docker/web/static/diagrams.css @@ -0,0 +1,6 @@ +img { + margin-bottom: 0px; +} +.icon { + width: 100px; +} diff --git a/docker/web/static/diagrams.js b/docker/web/static/diagrams.js new file mode 100644 index 00000000..eaeb3637 --- /dev/null +++ b/docker/web/static/diagrams.js @@ -0,0 +1,30 @@ +jQuery(document).ready(function () { + + var example_1_btn = jQuery('#example_1_btn'); + var example_2_btn = jQuery('#example_2_btn'); + var example_3_btn = jQuery('#example_3_btn'); + var more_example_btn = jQuery('#more_example_btn'); + + var diagrams_form = jQuery('#diagrams_form'); + + var diagrams_data_textarea = jQuery('#diagrams_data'); + + function InsertDiagramsText(text) { + diagrams_data_textarea.val(text); + diagrams_form.submit(); + } + + example_1_btn.click(function(){ + InsertDiagramsText(jQuery("#example_1_text").html().trim()); + }); + example_2_btn.click(function(){ + InsertDiagramsText(jQuery("#example_2_text").html().trim()); + }); + example_3_btn.click(function(){ + InsertDiagramsText(jQuery("#example_3_text").html().trim()); + }); + more_example_btn.click(function(){ + window.open("https://diagrams.mingrammer.com/docs/getting-started/examples", "_blank"); + }); + +}); diff --git a/docker/web/static/diagrams/grouped_workersぽぽ.png b/docker/web/static/diagrams/grouped_workersぽぽ.png deleted file mode 100644 index 86492dbf9a383fb07e56090b504e00249120db3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54809 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 N=9z-`)g9fdWr+s`IqXG}V}a`C;bpfA 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 diff --git a/docker/web/templates/app.html b/docker/web/templates/app.html new file mode 100644 index 00000000..4a9dfde8 --- /dev/null +++ b/docker/web/templates/app.html @@ -0,0 +1,117 @@ + + + + + + Diagrams On Web + + + + + + + + + Diagrams + + + + +
+ + +
+ {% if error %} +

ERROR

+
{{error}}
+ {% else %} + + {% endif %} + + + +

Made with ♥ and cherry_blossom Sakura CSS

+ + + diff --git a/docker/web/templates/builder.html b/docker/web/templates/builder.html deleted file mode 100644 index 2afd5e20..00000000 --- a/docker/web/templates/builder.html +++ /dev/null @@ -1,6 +0,0 @@ -
- - -
- - diff --git a/docker/web/templates/welcome.html b/docker/web/templates/welcome.html deleted file mode 100644 index 65ea2f43..00000000 --- a/docker/web/templates/welcome.html +++ /dev/null @@ -1,3 +0,0 @@ -Diagrams - -You can use the builder Here