From d41d8a577914f873529e7d164d1d6fe758b489f7 Mon Sep 17 00:00:00 2001
From: barredterra <14891507+barredterra@users.noreply.github.com>
Date: Wed, 2 Aug 2023 12:25:25 +0200
Subject: [PATCH 1/2] feat: print all filters in report builder
---
.../js/frappe/views/reports/report_view.js | 84 +++++++++++++++++--
1 file changed, 75 insertions(+), 9 deletions(-)
diff --git a/frappe/public/js/frappe/views/reports/report_view.js b/frappe/public/js/frappe/views/reports/report_view.js
index 2efe2314f5..c7fd865795 100644
--- a/frappe/public/js/frappe/views/reports/report_view.js
+++ b/frappe/public/js/frappe/views/reports/report_view.js
@@ -1345,15 +1345,81 @@ frappe.views.ReportView = class ReportView extends frappe.views.ListView {
get_filters_html_for_print() {
const filters = this.filter_area.get();
- return filters
- .map((f) => {
- const [doctype, fieldname, condition, value] = f;
- if (condition !== "=") return "";
- const label = frappe.meta.get_label(doctype, fieldname);
- const docfield = frappe.meta.get_docfield(doctype, fieldname);
- return `
${__(label)}: ${frappe.format(value, docfield)}
`;
- })
- .join("");
+ return (
+ `${__("Filters:")}
` +
+ filters
+ .map((f) => {
+ const [doctype, fieldname, condition, value] = f;
+ const docfield = frappe.meta.get_docfield(doctype, fieldname);
+ const label = `${__(frappe.meta.get_label(doctype, fieldname))}`;
+ switch (condition) {
+ case "=":
+ return __("{0} is equal to {1}", [
+ label,
+ frappe.format(value, docfield),
+ ]);
+ case "!=":
+ return __("{0} is not equal to {1}", [
+ __(label),
+ frappe.format(value, docfield),
+ ]);
+ case ">":
+ return __("{0} is greater than {1}", [
+ __(label),
+ frappe.format(value, docfield),
+ ]);
+ case "<":
+ return __("{0} is less than {1}", [
+ __(label),
+ frappe.format(value, docfield),
+ ]);
+ case ">=":
+ return __("{0} is greater than or equal to {1}", [
+ __(label),
+ frappe.format(value, docfield),
+ ]);
+ case "<=":
+ return __("{0} is less than or equal to {1}", [
+ __(label),
+ frappe.format(value, docfield),
+ ]);
+ case "Between":
+ return __("{0} is between {1} and {2}", [
+ __(label),
+ frappe.format(value[0], docfield),
+ frappe.format(value[1], docfield),
+ ]);
+ case "Timespan":
+ return __("{0} is within {1}", [__(label), __(value)]);
+ case "in":
+ return __("{0} is one of {1}", [
+ __(label),
+ frappe.utils.comma_or(
+ value.map((v) => frappe.format(v, docfield))
+ ),
+ ]);
+ case "not in":
+ return __("{0} is not one of {1}", [
+ __(label),
+ frappe.utils.comma_or(
+ value.map((v) => frappe.format(v, docfield))
+ ),
+ ]);
+ case "like":
+ return __("{0} is like {1}", [__(label), value]);
+ case "not like":
+ return __("{0} is not like {1}", [__(label), value]);
+ case "is":
+ return value === "set"
+ ? __("{0} is set", [__(label)])
+ : __("{0} is not set", [__(label)]);
+ default:
+ return null;
+ }
+ })
+ .filter(Boolean)
+ .join("
")
+ );
}
get_columns_totals(data) {
From b9cdee844e839e1e1f492d771b4aa5e28a65ff87 Mon Sep 17 00:00:00 2001
From: barredterra <14891507+barredterra@users.noreply.github.com>
Date: Wed, 2 Aug 2023 12:25:37 +0200
Subject: [PATCH 2/2] feat: german translations for printed filters
---
frappe/translations/de.csv | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/frappe/translations/de.csv b/frappe/translations/de.csv
index f8bbd8e22e..cebd3c9d98 100644
--- a/frappe/translations/de.csv
+++ b/frappe/translations/de.csv
@@ -4853,3 +4853,18 @@ Minimal,Minimal,
This value is fetched from {0}'s {1} field,Dieser Wert ergibt sich aus dem Feld {1} von {0},
This form is not editable due to a Workflow.,Dieses Formular kann in diesem Workflow-Status nicht bearbeitet werden.,
{0} role does not have permission on any doctype,Die Rolle {0} hat auf keinen DocType Zugriff,
+Filters:,Filter:,
+{0} is equal to {1},{0} ist gleich {1},
+{0} is not equal to {1},{0} ist ungleich {1},
+{0} is greater than {1},{0} ist größer als {1},
+{0} is less than {1},{0} ist kleiner als {1},
+{0} is greater than or equal to {1},{0} ist größer oder gleich {1},
+{0} is less than or equal to {1},{0} ist kleiner oder gleich {1},
+{0} is between {1} and {2},{0} ist zwischen {1} und {2},
+{0} is within {1},{0} ist innerhalb von {1},
+{0} is one of {1},{0} ist eine von {1},
+{0} is not one of {1},{0} ist keine von {1},
+{0} is like {1},{0} ist wie {1},
+{0} is not like {1},{0} ist nicht wie {1},
+{0} is set,{0} ist eingetragen,
+{0} is not set,{0} ist nicht eingetragen,