diff --git a/automatic-pdf-renamer/app/db.py b/automatic-pdf-renamer/app/db.py index 748bd64..c2ae3e3 100644 --- a/automatic-pdf-renamer/app/db.py +++ b/automatic-pdf-renamer/app/db.py @@ -337,10 +337,16 @@ class SQLiteFileRepository: "emitting_company": "emitting_company", "document_type": "document_type", "period": "period", + "emission_date": "emission_date", "confidence": "confidence", "updated_at": "updated_at", } - order_column = sortable_columns.get(sort_by, "updated_at") + if sort_by.startswith("additional_field__"): + field_name = sort_by.removeprefix("additional_field__") + order_column = "json_extract(optional_fields, ?)" + params.append('$.' + '"' + field_name.replace('"', '\\"') + '"') + else: + order_column = sortable_columns.get(sort_by, "updated_at") order_direction = "ASC" if sort_order.lower() == "asc" else "DESC" query += f" ORDER BY {order_column} {order_direction} LIMIT ? OFFSET ?" params.extend([page_size, (page - 1) * page_size]) diff --git a/automatic-pdf-renamer/web/app.js b/automatic-pdf-renamer/web/app.js index e09c4f4..eb929fb 100644 --- a/automatic-pdf-renamer/web/app.js +++ b/automatic-pdf-renamer/web/app.js @@ -20,7 +20,7 @@ const columnDefinitions = { period: { label: 'Period', filter: 'period', sortable: true }, updated_at: { label: 'Last modified', filter: 'updated_at', sortable: true }, template_name: { label: 'Template', filter: 'template', sortable: true }, - emission_date: { label: 'Emission date', filter: 'emission_date', sortable: false, inputType: 'date' }, + emission_date: { label: 'Emission date', filter: 'emission_date', sortable: true, inputType: 'date' }, confidence: { label: 'Confidence', filter: 'confidence', sortable: true }, }; let visibleColumns = (() => { @@ -57,7 +57,7 @@ const renderColumnPicker = () => { }; const renderTableHead = () => { const header = (key) => { - const def = columnDefinitions[key] || { label: key.replace(/^additional:/, ''), filter: `additional_field__${key.slice(11)}`, sortable: false }; + const def = columnDefinitions[key] || { label: key.replace(/^additional:/, ''), filter: `additional_field__${key.slice(11)}`, sortable: true }; return `