115 lines
6.0 KiB
HTML
115 lines
6.0 KiB
HTML
{% 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_with_dict_headers %}
|
|
|
|
{% block title %}Complete Document Overview{% endblock %}
|
|
|
|
{% block content_title %}Complete Document Overview{% endblock %}
|
|
{% block content_description %}View Documents with Latest Version for Catalog <b>{% if session.catalog_name %}{{ session.catalog_name }}{% else %}No Catalog{% endif %}</b>{% 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.full_documents') }}">
|
|
{{ render_filter_field('validity', 'Validity', filter_options['validity'], filters.get('validity', [])) }}
|
|
{{ 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) }}
|
|
|
|
<div class="form-group mt-3">
|
|
<form method="POST" action="{{ url_for('document_bp.handle_full_document_selection') }}" id="fullDocumentsForm">
|
|
<!-- Hidden field to store the selected version ID -->
|
|
<input type="hidden" name="version_id" id="selectedVersionId" value="">
|
|
|
|
<!-- Documents Table -->
|
|
{{ render_selectable_sortable_table_with_dict_headers(
|
|
headers=[
|
|
{"text": "Document ID", "sort": "id"},
|
|
{"text": "Name", "sort": "name"},
|
|
{"text": "Valid From", "sort": "valid_from"},
|
|
{"text": "Valid To", "sort": "valid_to"},
|
|
{"text": "Version ID", "sort": ""},
|
|
{"text": "File Type", "sort": "file_type"},
|
|
{"text": "Processing", "sort": "processing"},
|
|
{"text": "Error", "sort": "processing_error"}
|
|
],
|
|
rows=rows,
|
|
selectable=True,
|
|
id="fullDocumentsTable",
|
|
sort_by=sort_by,
|
|
sort_order=sort_order
|
|
) }}
|
|
<div class="form-group mt-3 d-flex justify-content-between">
|
|
<div>
|
|
<button type="submit" name="action" value="edit_document" class="btn btn-primary" onclick="return validateTableSelection('fullDocumentsForm')">Edit Document</button>
|
|
<button type="submit" name="action" value="edit_document_version" class="btn btn-primary" onclick="return validateTableSelection('fullDocumentsForm')">Edit Document Version</button>
|
|
<button type="submit" name="action" value="document_versions" class="btn btn-secondary" onclick="return validateTableSelection('fullDocumentsForm')">Show All Document Versions</button>
|
|
<button type="submit" name="action" value="refresh_document" class="btn btn-secondary" onclick="return validateTableSelection('fullDocumentsForm')">Refresh Document (new version)</button>
|
|
<button type="submit" name="action" value="view_document_version_markdown" class="btn btn-danger" onclick="return validateTableSelection('fullDocumentsForm')">View Processed Document</button>
|
|
<button type="submit" name="action" value="process_document_version" class="btn btn-danger" onclick="return validateTableSelection('fullDocumentsForm')">Process Document Version</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{% endblock %}
|
|
|
|
{% block content_footer %}
|
|
{{ render_pagination(pagination, 'document_bp.full_documents') }}
|
|
{% endblock %}
|
|
|
|
{% block scripts %}
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function() {
|
|
const table = document.getElementById('fullDocumentsTable');
|
|
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 documentId = selectedRow.cells[1].textContent;
|
|
var versionId = selectedRow.cells[5].textContent;
|
|
console.log('Selected Document ID:', documentId, 'Version ID:', versionId);
|
|
|
|
// Update the hidden field with the version ID
|
|
document.getElementById('selectedVersionId').value = versionId;
|
|
}
|
|
});
|
|
});
|
|
</script>
|
|
{% endblock %}
|