Add a DocumentVersion overview that can be sorted and can be filtered.

This commit is contained in:
Josako
2024-08-20 14:18:07 +02:00
parent 926a4e8cc2
commit 6219d11e56
9 changed files with 316 additions and 5 deletions

View File

@@ -0,0 +1,83 @@
{% extends 'base.html' %}
{% from 'macros.html' import render_selectable_table, render_pagination, render_filter_field, render_date_filter_field, render_collapsible_section, render_selectable_sortable_table %}
{% block title %}Documents{% endblock %}
{% block content_title %}Document Versions{% endblock %}
{% block content_description %}View Document Versions for Tenant{% endblock %}
{% block content_class %}<div class="col-xl-12 col-lg-5 col-md-7 mx-auto"></div>{% endblock %}
{% block content %}
<!-- Filter Form -->
{% set filter_form %}
<form method="GET" action="{{ url_for('document_bp.document_versions_list') }}">
{{ render_filter_field('file_type', 'File Type', filter_options['file_type'], filters.get('file_type')) }}
{{ render_filter_field('processing', 'Processing Status', filter_options['processing'], filters.get('processing')) }}
{{ render_filter_field('processing_error', 'Error Status', filter_options['processing_error'], filters.get('processing_error')) }}
{{ render_date_filter_field('start_date', 'Processing Start Date', filters.get('start_date')) }}
{{ render_date_filter_field('end_date', 'Processing End Date', filters.get('end_date')) }}
<button type="submit" class="btn btn-primary">Apply Filters</button>
</form>
{% endset %}
{{ render_collapsible_section('Filter', 'Filter Options', filter_form) }}
<!-- Document Versions Table -->
{{ render_selectable_sortable_table(
headers=["ID", "File Type", "Processing", "Processing Start", "Processing Finish", "Processing Error"],
rows=rows,
selectable=True,
id="documentVersionsTable",
sort_by=sort_by,
sort_order=sort_order
) }}
{% endblock %}
{% block content_footer %}
{{ render_pagination(pagination, 'document_bp.document_versions_list') }}
{% endblock %}
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
const table = document.getElementById('documentVersionsTable');
const headers = table.querySelectorAll('th.sortable');
headers.forEach(header => {
header.addEventListener('click', function() {
const sortBy = this.dataset.sort;
let sortOrder = 'asc';
if (this.querySelector('.fa-sort-up')) {
sortOrder = 'desc';
} else if (this.querySelector('.fa-sort-down')) {
sortOrder = 'none';
}
window.location.href = updateQueryStringParameter(window.location.href, 'sort_by', sortBy);
window.location.href = updateQueryStringParameter(window.location.href, 'sort_order', sortOrder);
});
});
function updateQueryStringParameter(uri, key, value) {
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
table.addEventListener('change', function(event) {
if (event.target.type === 'radio') {
var selectedRow = event.target.closest('tr');
var documentVersionId = selectedRow.cells[1].textContent;
console.log('Selected Document Version ID:', documentVersionId);
}
});
});
</script>
{% endblock %}