Generate excel file from results

This commit is contained in:
2023-05-28 18:03:20 +02:00
parent be62e38e77
commit e17e7d4e00
4 changed files with 69 additions and 6 deletions

View File

@@ -2,9 +2,11 @@
import os import os
import json import json
import webbrowser import webbrowser
import xlsxwriter
from benchmark.Utils import Files, Folders from benchmark.Utils import Files, Folders
from benchmark.Arguments import Arguments, EnvData from benchmark.Arguments import Arguments, EnvData
from benchmark.ResultsBase import StubReport from benchmark.ResultsBase import StubReport
from benchmark.ResultsFiles import Excel
from flask import Flask from flask import Flask
from flask import render_template, request, redirect, url_for from flask import render_template, request, redirect, url_for
@@ -13,6 +15,8 @@ from flask import render_template, request, redirect, url_for
app = Flask(__name__) app = Flask(__name__)
FRAMEWORK = "framework" FRAMEWORK = "framework"
FRAMEWORKS = "frameworks" FRAMEWORKS = "frameworks"
COMPARE = "compare"
TEST = "test"
def process_data(file_name, data): def process_data(file_name, data):
@@ -68,6 +72,34 @@ def show():
) )
@app.route("/excel", methods=["post"])
def excel():
if request.is_json:
selected_files = request.json
else:
selected_files = request.form["selected-files"]
book = None
for file_name in selected_files:
file_name_result = os.path.join(Folders.results, file_name)
if book is None:
file_excel = os.path.join(Folders.excel, Files.be_list_excel)
book = xlsxwriter.Workbook(file_excel, {"nan_inf_to_errors": True})
excel = Excel(
file_name=file_name_result,
book=book,
compare=app.config[COMPARE],
)
excel.report()
if book is not None:
book.close()
Files.open(file_excel, test=app.config[TEST])
return (
json.dumps({"success": True, "file": Files.be_list_excel}),
200,
{"ContentType": "application/json"},
)
@app.route("/config/<framework>") @app.route("/config/<framework>")
def config(framework): def config(framework):
if not framework in app.config[FRAMEWORKS]: if not framework in app.config[FRAMEWORKS]:
@@ -82,14 +114,15 @@ def config(framework):
def main(args_test=None): def main(args_test=None):
# arguments = Arguments(prog="be_flask") arguments = Arguments(prog="be_flask")
# arguments.xset("model", required=False) arguments.xset("model", required=False)
# arguments.xset("score", required=False).xset("compare") arguments.xset("score", required=False).xset("compare")
# arguments.xset("nan") args = arguments.parse(args_test)
# args = arguments.parse(args_test)
config = EnvData().load() config = EnvData().load()
app.config[FRAMEWORK] = config[FRAMEWORK] app.config[FRAMEWORK] = config[FRAMEWORK]
app.config[COMPARE] = args.compare
app.config[FRAMEWORKS] = ["bootstrap", "bulma"] app.config[FRAMEWORKS] = ["bootstrap", "bulma"]
app.config[TEST] = args_test is not None
webbrowser.open_new("http://127.0.0.1:1234/") webbrowser.open_new("http://127.0.0.1:1234/")
app.run(port=1234) app.run(port=1234)

View File

@@ -28,4 +28,32 @@
$('body').append(form); $('body').append(form);
form.submit(); form.submit();
} }
function excel() {
var checkbox = document.getElementsByName("selected_files");
var selectedFiles = [];
for (var i = 0; i < checkbox.length; i++) {
if (checkbox[i].checked) {
selectedFiles.push(checkbox[i].value);
}
}
if (selectedFiles.length == 0) {
alert("Select at least one file");
return;
}
// send data to server with ajax post
$.ajax({
type:'POST',
url:'/excel',
data: JSON.stringify(selectedFiles),
contentType: "application/json",
dataType: 'json',
success: function(data){
alert("Se ha generado el archivo "+data.file);
},
error: function (xhr, ajaxOptions, thrownError) {
var mensaje = JSON.parse(xhr.responseText || '{\"mensaje\": \"Error indeterminado\"}');
alert(mensaje.mensaje);
}
});
}
</script> </script>

View File

@@ -27,6 +27,7 @@
<td>{{ "%.6f" % data["score"] }}</td> <td>{{ "%.6f" % data["score"] }}</td>
<td> <td>
{{ button_pre | safe }}{{ file }}{{ button_post | safe }} {{ button_pre | safe }}{{ file }}{{ button_post | safe }}
<input type="checkbox" class="{{ checkbox_class }}" name="selected_files" value="{{ file }}">
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@@ -1,8 +1,9 @@
<div class="container"> <div class="container">
<h1 class="{{ h1_class }}"><b>Benchmark Results</b></h1> <h1 class="{{ h1_class }}"><b>Benchmark Results</b></h1>
<button class="{{ button_class }}" onclick="location.href='/config/{{ candidate }}';">Use {{ candidate <button class="{{ button_class }}" onclick="location.href='/config/{{ candidate }}'">Use {{ candidate
}}</button> }}</button>
{% include "partials/table_select.html" %} {% include "partials/table_select.html" %}
<input type="button" class="{{ button_class }}" onclick="excel()" value="Excel">
</div> </div>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script> <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script>