From 4b389be2f5c5f7341e116de36ff05eae1a87f796 Mon Sep 17 00:00:00 2001 From: Pierre Dittgen Date: Thu, 27 Sep 2018 16:09:02 +0200 Subject: [PATCH] Externalize table preview --- validata_ui_next/templates/table_preview.html | 23 +++++++++++++++ .../templates/validation_report.html | 28 ++++--------------- validata_ui_next/views.py | 15 ++++++---- 3 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 validata_ui_next/templates/table_preview.html diff --git a/validata_ui_next/templates/table_preview.html b/validata_ui_next/templates/table_preview.html new file mode 100644 index 0000000..6787216 --- /dev/null +++ b/validata_ui_next/templates/table_preview.html @@ -0,0 +1,23 @@ +

+ Affichage de {{ preview.rows_nb }} lignes sur {{ preview.total_rows_nb }} au total +

+
+ + + + {% for col in preview.header %} + + {% endfor %} + + + + {% for row in preview.data_rows %} + + {% for val in row %} + + {% endfor %} + + {% endfor %} + +
{{ col }}
{{ val }}
+
\ No newline at end of file diff --git a/validata_ui_next/templates/validation_report.html b/validata_ui_next/templates/validation_report.html index 62de883..4460741 100644 --- a/validata_ui_next/templates/validation_report.html +++ b/validata_ui_next/templates/validation_report.html @@ -21,33 +21,17 @@ -

Aperçu

- - - - {% for col in preview.header %} - - {% endfor %} - - - - {% for row in preview.data_rows %} - - {% for val in row %} - - {% endfor %} - - {% endfor %} - -
{{ col }}
{{ val }}
- - {% if report.valid %}

La table est valide

Aucune erreur détectée

+ +{% include 'table_preview.html' %} + {% else %} +

La table est invalide

-

{{ report['error-count'] }} erreur(s) détectée(s)

+

{{ len(report['errors']) }} erreur(s) détectée(s)

+ {% endif %} diff --git a/validata_ui_next/views.py b/validata_ui_next/views.py index 0354cee..8599d53 100644 --- a/validata_ui_next/views.py +++ b/validata_ui_next/views.py @@ -19,15 +19,16 @@ def compute_source_preview(source, max_rows=5): """ Computes table preview """ header = None rows = [] + nb_rows = 0 with tabulator.Stream(source) as stream: for row in stream: if header is None: header = row else: - rows.append(row) - if len(rows) == max_rows: - break - return {'header': header, 'data_rows': rows} + nb_rows += 1 + if len(rows) <= max_rows: + rows.append(row) + return {'header': header, 'data_rows': rows, 'total_rows_nb': nb_rows, 'rows_nb': len(rows)} def validate(schema_code, source, source_type): @@ -36,10 +37,14 @@ def validate(schema_code, source, source_type): report = ValidatorHelper.validate(schema_code, source, source_type) preview = compute_source_preview(source) + # Complete report + val_info = ValidatorHelper.schema_info(schema_code) return render_template('validation_report.html', title='Rapport de validation', val_info=ValidatorHelper.schema_info(schema_code), report=report, source=source, source_type=source_type, preview=preview, - report_str=json.dumps(report, sort_keys=True, indent=2)) + report_str=json.dumps(report, sort_keys=True, indent=2), + breadcrumbs=[{'url': url_for('home'), 'title': 'Accueil'}, + {'url': url_for('scdl_validator', val_code=schema_code), 'title': val_info['title']}]) # Routes -- GitLab