Merge pull request #31469 from sokumon/translate-report-data
feat: translate report data
This commit is contained in:
commit
f423f8bd66
2 changed files with 24 additions and 3 deletions
|
|
@ -111,6 +111,10 @@ def generate_report_result(
|
|||
if cint(report.add_total_row) and result and not skip_total_row:
|
||||
result = add_total_row(result, columns, is_tree=is_tree, parent_field=parent_field)
|
||||
|
||||
if isinstance(filters, dict) and filters.get("translate_data"):
|
||||
total_row = cint(report.add_total_row) and result and not skip_total_row
|
||||
result = translate_report_data(result, total_row)
|
||||
|
||||
return {
|
||||
"result": result,
|
||||
"columns": columns,
|
||||
|
|
@ -809,3 +813,11 @@ def validate_filters_permissions(report_name, filters=None, user=None):
|
|||
linked_doctype, filters[field.fieldname]
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def translate_report_data(data, total_row):
|
||||
for d in data[:-1] if total_row else data:
|
||||
for field, value in d.items():
|
||||
if isinstance(value, str):
|
||||
d[field] = _(value)
|
||||
return data
|
||||
|
|
|
|||
|
|
@ -173,6 +173,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
frappe.run_serially([
|
||||
() => this.get_report_doc(),
|
||||
() => this.get_report_settings(),
|
||||
() => this.add_translate_data_checkbox(),
|
||||
() => this.setup_progress_bar(),
|
||||
() => this.setup_page_head(),
|
||||
() => this.refresh_report(route_options),
|
||||
|
|
@ -529,7 +530,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
const { filters = [] } = this.report_settings;
|
||||
|
||||
let filter_area = this.page.page_form;
|
||||
|
||||
this.filters = filters
|
||||
.map((df) => {
|
||||
if (df.fieldtype === "Break") return;
|
||||
|
|
@ -554,7 +554,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
// filter values have not changed
|
||||
return;
|
||||
}
|
||||
|
||||
// clear previous_filters after 10 seconds, to allow refresh for new data
|
||||
this.previous_filters = current_filters;
|
||||
setTimeout(() => (this.previous_filters = null), 10000);
|
||||
|
|
@ -1249,7 +1248,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
}
|
||||
|
||||
if (column.colIndex === index && !value) {
|
||||
value = "Total";
|
||||
value = __("Total");
|
||||
column = { fieldtype: "Data" }; // avoid type issues for value if Date column
|
||||
} else if (["Currency", "Float"].includes(column.fieldtype)) {
|
||||
// proxy for currency and float
|
||||
|
|
@ -2113,4 +2112,14 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList {
|
|||
get get_values() {
|
||||
return this.get_filter_values;
|
||||
}
|
||||
|
||||
add_translate_data_checkbox() {
|
||||
if (frappe.boot.lang == "en") return;
|
||||
let filter_config = {
|
||||
fieldname: "translate_data",
|
||||
fieldtype: "Check",
|
||||
label: __("Translate Data"),
|
||||
};
|
||||
this.report_settings.filters.push(filter_config);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue