@object-ui/i18n 4.0.12 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,152 @@
1
1
  # @object-ui/i18n
2
2
 
3
+ ## 4.3.0
4
+
5
+ ### Patch Changes
6
+
7
+ - f196cf4: feat(plugin-report): popup picker for groupings + section-aware test ids
8
+
9
+ The matrix/summary "Group by" (rows) and "Columns axis" (cols) sections now
10
+ share the same searchable popup picker as the columns section, with a
11
+ commit-on-select single-pick mode wired through `FieldPickerDialog`.
12
+ - Per-row field buttons display the human-readable field label and open a
13
+ dialog scoped to swap that single field (already-used fields filtered out)
14
+ - "Add grouping" trigger uses the same dialog
15
+ - `GroupingsBuilder` accepts a `testIdPrefix` prop; ReportConfigPanel passes
16
+ `rows-grouping` and `cols-grouping` so both instances no longer share the
17
+ ambiguous `grouping-field-0` testid
18
+ - Bigger row spacing (h-7 / text-xs) — the old `text-[10px]` was unreadable
19
+
20
+ `FieldPickerDialog` gains:
21
+ - `commitOnSelect`: hides the Confirm/Cancel footer; clicking a row commits
22
+ - closes immediately (intended for `singleSelect` flows)
23
+ - `trigger`: custom trigger element override (used by the per-row field button)
24
+
25
+ - ee1cc96: feat(plugin-report): joined-report block editor
26
+
27
+ `type: 'joined'` reports were a black hole in the editor — the type
28
+ selector exposed them but no UI knew how to edit the `blocks` array,
29
+ so users could neither create nor modify joined reports without
30
+ hand-editing JSON.
31
+
32
+ This change adds a `Blocks` section to the report editor, visible only
33
+ when `type === 'joined'`. Each block renders as a collapsible card with
34
+ its own name (required + unique-validated), label, description, block
35
+ type, object override, and reuses the existing `ColumnsEditor`,
36
+ `GroupingsBuilder`, `SpecFilterAdapter`, and `ChartConfig` builders so
37
+ every block behaves like a mini standalone report — matching the
38
+ runtime contract of `JoinedReportRenderer`.
39
+
40
+ Block-level validation is surfaced in the main `ValidationBanner`:
41
+ empty blocks array, missing or duplicate block names, and blocks
42
+ without columns all become editor-time errors so saves stay safe.
43
+
44
+ The non-joined sections (Columns / Rows / Columns axis / Filters /
45
+ Chart) are hidden when `type === 'joined'` since they live per-block
46
+ in the spec.
47
+
48
+ New exports from `@object-ui/plugin-report`:
49
+ - `JoinedBlocksEditor` — standalone component for embedding the
50
+ block editor anywhere.
51
+ - `validateJoinedBlocks` — pure helper returning translated
52
+ problem strings, suitable for custom validation banners.
53
+ - `ColumnsEditor`, `GroupingsBuilder`, `ChartConfig`,
54
+ `SpecFilterAdapter`, `normalizeColumns` are now exported so
55
+ downstream consumers can build their own report-editor surfaces.
56
+
57
+ i18n: added `report.editor.blocks*` / `report.editor.addBlock` /
58
+ `report.editor.removeBlock` / `report.editor.blockName*` /
59
+ `report.editor.blockLabel*` / `report.editor.blockDescription*` /
60
+ `report.editor.validationJoinedNeedsBlocks` /
61
+ `report.editor.validationBlockNameRequired` /
62
+ `report.editor.validationBlockNameDuplicate` /
63
+ `report.editor.validationBlockNeedsColumns` to en + zh.
64
+
65
+ - 0b032be: feat(plugin-report): replace inline column picker with a popup field picker
66
+
67
+ The columns section now opens a Dialog-based multi-select picker (`FieldPickerDialog`)
68
+ instead of rendering the unselected field list inline. The popup supports search,
69
+ batched multi-selection (commit several fields in one click), per-field type badges,
70
+ cancel-discards-pending semantics, and is fully i18n'd. Also fixes a latent
71
+ `ReferenceError: normalizeColumns is not defined` that crashed the editor whenever
72
+ the chart section was expanded.
73
+
74
+ - 115d36a: i18n: native translations for the report editor (`report.editor.*`) in 8 locales — ar, de, es, fr, ja, ko, pt, ru. Previously these locales had the English placeholder strings copy-pasted from `en.ts` and the newer `blocks*`, `addCondition`, `opContains`, `formatCurrency` etc. keys were missing entirely (so the report editor surfaced raw key names in those languages). All locales now carry the full key set with locale-appropriate copy.
75
+ - 4e7bc1b: **Report editor panel overhaul**
76
+
77
+ The report configuration panel is now safe to open on any spec-shape `Report` and only exposes fields that are actually persisted by `@objectstack/spec`.
78
+
79
+ `@object-ui/plugin-report`:
80
+ - Add a bidirectional `SpecFilterAdapter` so `ReportConfigPanel` can edit
81
+ spec `FilterCondition` filters (`{field: value}`, `{field: {$op: value}}`,
82
+ top-level `$and`/`$or`). Complex / nested filters fall back to a
83
+ read-only banner and are preserved verbatim on save.
84
+ - Drop sections that never round-tripped through the spec
85
+ (`conditionalFormatting`, `sections`, `export`, `schedule`, `appearance`)
86
+ and their helper components.
87
+ - Add type-driven section visibility: `tabular` shows Columns/Filters,
88
+ `summary` adds Rows + Chart, `matrix` adds Rows + Columns axis + Chart.
89
+ - New `GroupingsBuilder` covers `groupingsDown`/`groupingsAcross` with
90
+ `sortOrder` and date-aware `dateGranularity` controls.
91
+ - New `ColumnsEditor` lets users reorder picked columns, override labels,
92
+ set aggregates and choose a display format.
93
+ - Chart subset now mirrors the spec: chart `title`, `showLegend`,
94
+ `showDataLabels`, plus `funnel` (scatter removed).
95
+ - Validation banner highlights missing `objectName` and missing
96
+ rows/columns for `matrix`/`summary` reports.
97
+ - All editor labels and hints are i18n-driven (`report.editor.*`).
98
+ - 18 new unit tests cover the filter adapter round-trip.
99
+
100
+ `@object-ui/components`:
101
+ - `FilterBuilder` now guards against malformed external `value` props.
102
+ Previously a spec-shape filter (`{is_active: true}`) would crash the
103
+ component on first render; the builder now falls back to an empty
104
+ AND group whenever `value` is not a valid `FilterGroup`.
105
+
106
+ `@object-ui/i18n`:
107
+ - Add `report.editor.*` strings to `en` and `zh`.
108
+
109
+ - 8442c05: Improve report editor panel usability based on real-user browser testing:
110
+ - **Wider config panel** — the report editor now defaults to a `--config-panel-width`
111
+ of 440px (up from 280px), driven by a new optional `style` prop on
112
+ `ConfigPanelRenderer`. Long field labels, report titles, type labels, and filter
113
+ rows no longer truncate to "Account Na" / "kup" / "ct" / 1-character widths.
114
+ - **Disambiguated "Columns" sections** — for `summary` and `matrix` reports the
115
+ measure list is now labelled **"Values / 度量"** (pivot-style vocabulary) instead
116
+ of "Columns", which previously clashed with the matrix's pivot column axis
117
+ (also called "Columns / 列"). The two sections used to be indistinguishable.
118
+ New i18n key `report.editor.values` / `valuesHint` is shipped for all 10
119
+ locales (en, zh, ar, de, es, fr, ja, ko, pt, ru).
120
+ - **Reordered sections for matrix/summary** — the editor now surfaces _Rows_
121
+ and _Columns_ (the pivot axes) **before** _Values_, mirroring how a business
122
+ user thinks about a pivot table.
123
+ - **Per-row aggregate/format headers** — each column row in `ColumnsEditor` now
124
+ shows small "Aggregate" / "Format" labels above the respective selects, and
125
+ the row uses a 2-line layout so the label input has its own line. The cramped
126
+ 3-dropdowns-side-by-side layout at 10px font is gone.
127
+ - **Searchable field picker** — the "Add columns" list now has a search box,
128
+ a `filtered / total` counter, an empty-state message, and a scrollable bordered
129
+ container. New i18n keys: `report.editor.searchFields`,
130
+ `report.editor.noMatchingFields`.
131
+
132
+ ## 4.2.1
133
+
134
+ ## 4.2.0
135
+
136
+ ### Patch Changes
137
+
138
+ - eb738bd: fix(i18n): add missing top-level `report` key to ar/de/es/fr/ja/ko/pt/ru locales
139
+
140
+ The i18n parity test (`all locales have the same top-level keys`) was failing
141
+ because the `report` key existed only in `en` and `zh`. The other built-in
142
+ locales now include the same `report` block (English fallback strings) so the
143
+ CI parity check passes again.
144
+
145
+ - 650392e: MatrixRenderer now displays i18n-translated labels for picklist (`select` / `status`) groupings instead of raw values (e.g. `Best Case` / `Commit` / `Pipeline` instead of `best_case` / `commit` / `pipeline`). Field labels in the corner cell, row/column total labels, and the `(Empty)` / `(All)` placeholders are also fully translated. Adds `report.*` keys to `en` and `zh` locale bundles.
146
+ - 84b4bf1: Summary reports now render i18n-translated labels in the chart axis, chart series legend, and totals strip. `buildChartData` accepts a new `labels` parameter so callers (currently `SpecReportGrid`) can supply field/column/aggregate/value resolvers. Replaces raw column keys (e.g. `Count of case_number`) and raw picklist values (e.g. `closed`, `in_progress`) with their translated display labels (e.g. `案例编号 · 计数`, `已关闭`, `处理中`). Adds `report.totals` locale key.
147
+
148
+ ## 4.1.0
149
+
3
150
  ## 4.0.12
4
151
 
5
152
  ## 4.0.11
@@ -952,5 +952,123 @@ declare const ar: {
952
952
  readonly settings: "Settings";
953
953
  readonly logout: "Log out";
954
954
  };
955
+ readonly report: {
956
+ readonly rowTotal: "Row Total";
957
+ readonly columnTotal: "Column Total";
958
+ readonly grandTotal: "Grand Total";
959
+ readonly totals: "Totals";
960
+ readonly rowsLabel: "Row";
961
+ readonly columnsLabel: "Column";
962
+ readonly allLabel: "(All)";
963
+ readonly emptyLabel: "(Empty)";
964
+ readonly loading: "Loading…";
965
+ readonly failedToLoad: "Failed to load matrix: {{message}}";
966
+ readonly needsAcross: "Matrix report requires at least one `groupingsAcross` field.";
967
+ readonly aggregate: {
968
+ readonly count: "Count";
969
+ readonly countDistinct: "Distinct Count";
970
+ readonly sum: "Sum";
971
+ readonly avg: "Average";
972
+ readonly min: "Min";
973
+ readonly max: "Max";
974
+ readonly first: "First";
975
+ };
976
+ readonly editor: {
977
+ readonly breadcrumb: "الإعدادات";
978
+ readonly basic: "أساسي";
979
+ readonly title: "العنوان";
980
+ readonly titlePlaceholder: "مثال: المسار حسب الربع";
981
+ readonly description: "الوصف";
982
+ readonly descriptionPlaceholder: "ماذا يعرض هذا التقرير؟";
983
+ readonly type: "نوع التقرير";
984
+ readonly typeTabular: "جدولي — قائمة مسطّحة";
985
+ readonly typeSummary: "ملخص — مجمّع مع المجاميع";
986
+ readonly typeMatrix: "مصفوفة — محور صفوف × أعمدة";
987
+ readonly typeJoined: "مدمج — كتل متعددة";
988
+ readonly typeHelp: "اختر التخطيط الذي يطابق ما تريد رؤيته.";
989
+ readonly data: "البيانات";
990
+ readonly objectName: "مصدر البيانات";
991
+ readonly objectNamePlaceholder: "مثال: opportunity";
992
+ readonly objectNameHelp: "أي كائن يجب أن يستعلم عنه هذا التقرير؟";
993
+ readonly limit: "حد عدد الصفوف";
994
+ readonly limitPlaceholder: "مثال: 100";
995
+ readonly columns: "الأعمدة";
996
+ readonly columnsHint: "اختر الحقول التي ستظهر كأعمدة. أضف تجميعًا (مجموع، عدد…) في تقارير الملخص أو المصفوفة.";
997
+ readonly filters: "عوامل التصفية";
998
+ readonly filtersHint: "قيّد الصفوف التي تدخل في هذا التقرير.";
999
+ readonly filtersComplex: "يستخدم هذا التقرير عامل تصفية متقدّمًا لا يمكن تحريره هنا. سيُحتفظ به كما هو عند الحفظ.";
1000
+ readonly groupBy: "التجميع حسب";
1001
+ readonly groupByHint: "جمّع البيانات واحسب المجاميع الفرعية.";
1002
+ readonly rows: "الصفوف";
1003
+ readonly rowsHint: "جمّع الصفوف حسب هذه الحقول.";
1004
+ readonly columnsAxis: "الأعمدة";
1005
+ readonly columnsAxisHint: "اعرض هذه الحقول كمحور في الأعلى.";
1006
+ readonly values: "القيم";
1007
+ readonly valuesHint: "الأرقام التي تظهر في كل خلية. اختر حقلاً واحدًا أو أكثر وأضف تجميعًا (مجموع، عدد…).";
1008
+ readonly grouping: "تجميع";
1009
+ readonly addGrouping: "إضافة تجميع";
1010
+ readonly dateGranularity: "دقة التاريخ";
1011
+ readonly dateGranularityNone: "(استخدام القيمة الأصلية)";
1012
+ readonly day: "يوم";
1013
+ readonly week: "أسبوع";
1014
+ readonly month: "شهر";
1015
+ readonly quarter: "ربع";
1016
+ readonly year: "سنة";
1017
+ readonly sortAsc: "تصاعدي";
1018
+ readonly sortDesc: "تنازلي";
1019
+ readonly chart: "الرسم البياني";
1020
+ readonly chartHint: "عرض مرئي اختياري بجانب الجدول.";
1021
+ readonly chartType: "نوع الرسم";
1022
+ readonly chartTitle: "عنوان الرسم";
1023
+ readonly chartTitlePlaceholder: "افتراضيًا يستخدم عنوان التقرير";
1024
+ readonly chartXAxis: "المحور السيني (الفئة)";
1025
+ readonly chartYAxis: "المحور الصادي (القيمة)";
1026
+ readonly chartShowLegend: "إظهار وسيلة الإيضاح";
1027
+ readonly chartShowDataLabels: "إظهار تسميات البيانات";
1028
+ readonly chartNone: "(بدون رسم)";
1029
+ readonly chartBar: "أعمدة";
1030
+ readonly chartLine: "خطي";
1031
+ readonly chartArea: "منطقة";
1032
+ readonly chartPie: "دائري";
1033
+ readonly chartDonut: "حلقي";
1034
+ readonly chartFunnel: "قمعي";
1035
+ readonly validationNeedsObject: "اختر مصدر بيانات قبل إضافة الأعمدة.";
1036
+ readonly validationMatrixNeedsRowsCols: "تتطلب تقارير المصفوفة صفًا وعمودًا واحدًا على الأقل.";
1037
+ readonly validationSummaryNeedsRows: "تتطلب تقارير الملخص حقل تجميع واحدًا على الأقل.";
1038
+ readonly blocks: "الكتل";
1039
+ readonly blocksHint: "كل كتلة هي جدولها أو رسمها البياني الخاص. عوامل تصفية الكتلة تُدمج مع عامل تصفية التقرير بمنطق AND.";
1040
+ readonly addBlock: "إضافة كتلة";
1041
+ readonly removeBlock: "إزالة الكتلة";
1042
+ readonly blockName: "اسم الكتلة";
1043
+ readonly blockNamePlaceholder: "اسم_فريد_للكتلة";
1044
+ readonly blockLabel: "التسمية المعروضة";
1045
+ readonly blockLabelPlaceholder: "تُعرض فوق الكتلة";
1046
+ readonly blockDescription: "الوصف";
1047
+ readonly blockDescriptionPlaceholder: "سياق اختياري لهذه الكتلة";
1048
+ readonly validationJoinedNeedsBlocks: "تتطلب التقارير المدمجة كتلة واحدة على الأقل.";
1049
+ readonly validationBlockNameRequired: "يجب أن يكون لكل كتلة اسم غير فارغ.";
1050
+ readonly validationBlockNameDuplicate: "يجب أن تكون أسماء الكتل فريدة داخل التقرير.";
1051
+ readonly validationBlockNeedsColumns: "تحتاج كل كتلة إلى عمود واحد على الأقل.";
1052
+ readonly noneOption: "(بلا)";
1053
+ readonly addCondition: "إضافة شرط";
1054
+ readonly combineLogic: "الدمج مع";
1055
+ readonly opContains: "يحتوي على";
1056
+ readonly opIsEmpty: "فارغ";
1057
+ readonly opIsNotEmpty: "ليس فارغًا";
1058
+ readonly formatAuto: "تلقائي";
1059
+ readonly formatCurrency: "عملة";
1060
+ readonly formatPercent: "نسبة مئوية";
1061
+ readonly formatInteger: "عدد صحيح";
1062
+ readonly formatDate: "تاريخ";
1063
+ readonly formatDatetime: "تاريخ ووقت";
1064
+ readonly columnLabelPlaceholder: "تجاوز التسمية";
1065
+ readonly aggregateColumn: "تجميع";
1066
+ readonly formatColumn: "تنسيق";
1067
+ readonly addColumns: "إضافة أعمدة";
1068
+ readonly searchFields: "البحث في الحقول…";
1069
+ readonly noMatchingFields: "لا توجد حقول تطابق بحثك.";
1070
+ readonly noFieldsAvailable: "لا توجد حقول متاحة.";
1071
+ };
1072
+ };
955
1073
  };
956
1074
  export default ar;
@@ -947,5 +947,123 @@ const ar = {
947
947
  settings: 'Settings',
948
948
  logout: 'Log out',
949
949
  },
950
+ report: {
951
+ rowTotal: 'Row Total',
952
+ columnTotal: 'Column Total',
953
+ grandTotal: 'Grand Total',
954
+ totals: 'Totals',
955
+ rowsLabel: 'Row',
956
+ columnsLabel: 'Column',
957
+ allLabel: '(All)',
958
+ emptyLabel: '(Empty)',
959
+ loading: 'Loading…',
960
+ failedToLoad: 'Failed to load matrix: {{message}}',
961
+ needsAcross: 'Matrix report requires at least one `groupingsAcross` field.',
962
+ aggregate: {
963
+ count: 'Count',
964
+ countDistinct: 'Distinct Count',
965
+ sum: 'Sum',
966
+ avg: 'Average',
967
+ min: 'Min',
968
+ max: 'Max',
969
+ first: 'First',
970
+ },
971
+ editor: {
972
+ breadcrumb: 'الإعدادات',
973
+ basic: 'أساسي',
974
+ title: 'العنوان',
975
+ titlePlaceholder: 'مثال: المسار حسب الربع',
976
+ description: 'الوصف',
977
+ descriptionPlaceholder: 'ماذا يعرض هذا التقرير؟',
978
+ type: 'نوع التقرير',
979
+ typeTabular: 'جدولي — قائمة مسطّحة',
980
+ typeSummary: 'ملخص — مجمّع مع المجاميع',
981
+ typeMatrix: 'مصفوفة — محور صفوف × أعمدة',
982
+ typeJoined: 'مدمج — كتل متعددة',
983
+ typeHelp: 'اختر التخطيط الذي يطابق ما تريد رؤيته.',
984
+ data: 'البيانات',
985
+ objectName: 'مصدر البيانات',
986
+ objectNamePlaceholder: 'مثال: opportunity',
987
+ objectNameHelp: 'أي كائن يجب أن يستعلم عنه هذا التقرير؟',
988
+ limit: 'حد عدد الصفوف',
989
+ limitPlaceholder: 'مثال: 100',
990
+ columns: 'الأعمدة',
991
+ columnsHint: 'اختر الحقول التي ستظهر كأعمدة. أضف تجميعًا (مجموع، عدد…) في تقارير الملخص أو المصفوفة.',
992
+ filters: 'عوامل التصفية',
993
+ filtersHint: 'قيّد الصفوف التي تدخل في هذا التقرير.',
994
+ filtersComplex: 'يستخدم هذا التقرير عامل تصفية متقدّمًا لا يمكن تحريره هنا. سيُحتفظ به كما هو عند الحفظ.',
995
+ groupBy: 'التجميع حسب',
996
+ groupByHint: 'جمّع البيانات واحسب المجاميع الفرعية.',
997
+ rows: 'الصفوف',
998
+ rowsHint: 'جمّع الصفوف حسب هذه الحقول.',
999
+ columnsAxis: 'الأعمدة',
1000
+ columnsAxisHint: 'اعرض هذه الحقول كمحور في الأعلى.',
1001
+ values: 'القيم',
1002
+ valuesHint: 'الأرقام التي تظهر في كل خلية. اختر حقلاً واحدًا أو أكثر وأضف تجميعًا (مجموع، عدد…).',
1003
+ grouping: 'تجميع',
1004
+ addGrouping: 'إضافة تجميع',
1005
+ dateGranularity: 'دقة التاريخ',
1006
+ dateGranularityNone: '(استخدام القيمة الأصلية)',
1007
+ day: 'يوم',
1008
+ week: 'أسبوع',
1009
+ month: 'شهر',
1010
+ quarter: 'ربع',
1011
+ year: 'سنة',
1012
+ sortAsc: 'تصاعدي',
1013
+ sortDesc: 'تنازلي',
1014
+ chart: 'الرسم البياني',
1015
+ chartHint: 'عرض مرئي اختياري بجانب الجدول.',
1016
+ chartType: 'نوع الرسم',
1017
+ chartTitle: 'عنوان الرسم',
1018
+ chartTitlePlaceholder: 'افتراضيًا يستخدم عنوان التقرير',
1019
+ chartXAxis: 'المحور السيني (الفئة)',
1020
+ chartYAxis: 'المحور الصادي (القيمة)',
1021
+ chartShowLegend: 'إظهار وسيلة الإيضاح',
1022
+ chartShowDataLabels: 'إظهار تسميات البيانات',
1023
+ chartNone: '(بدون رسم)',
1024
+ chartBar: 'أعمدة',
1025
+ chartLine: 'خطي',
1026
+ chartArea: 'منطقة',
1027
+ chartPie: 'دائري',
1028
+ chartDonut: 'حلقي',
1029
+ chartFunnel: 'قمعي',
1030
+ validationNeedsObject: 'اختر مصدر بيانات قبل إضافة الأعمدة.',
1031
+ validationMatrixNeedsRowsCols: 'تتطلب تقارير المصفوفة صفًا وعمودًا واحدًا على الأقل.',
1032
+ validationSummaryNeedsRows: 'تتطلب تقارير الملخص حقل تجميع واحدًا على الأقل.',
1033
+ blocks: 'الكتل',
1034
+ blocksHint: 'كل كتلة هي جدولها أو رسمها البياني الخاص. عوامل تصفية الكتلة تُدمج مع عامل تصفية التقرير بمنطق AND.',
1035
+ addBlock: 'إضافة كتلة',
1036
+ removeBlock: 'إزالة الكتلة',
1037
+ blockName: 'اسم الكتلة',
1038
+ blockNamePlaceholder: 'اسم_فريد_للكتلة',
1039
+ blockLabel: 'التسمية المعروضة',
1040
+ blockLabelPlaceholder: 'تُعرض فوق الكتلة',
1041
+ blockDescription: 'الوصف',
1042
+ blockDescriptionPlaceholder: 'سياق اختياري لهذه الكتلة',
1043
+ validationJoinedNeedsBlocks: 'تتطلب التقارير المدمجة كتلة واحدة على الأقل.',
1044
+ validationBlockNameRequired: 'يجب أن يكون لكل كتلة اسم غير فارغ.',
1045
+ validationBlockNameDuplicate: 'يجب أن تكون أسماء الكتل فريدة داخل التقرير.',
1046
+ validationBlockNeedsColumns: 'تحتاج كل كتلة إلى عمود واحد على الأقل.',
1047
+ noneOption: '(بلا)',
1048
+ addCondition: 'إضافة شرط',
1049
+ combineLogic: 'الدمج مع',
1050
+ opContains: 'يحتوي على',
1051
+ opIsEmpty: 'فارغ',
1052
+ opIsNotEmpty: 'ليس فارغًا',
1053
+ formatAuto: 'تلقائي',
1054
+ formatCurrency: 'عملة',
1055
+ formatPercent: 'نسبة مئوية',
1056
+ formatInteger: 'عدد صحيح',
1057
+ formatDate: 'تاريخ',
1058
+ formatDatetime: 'تاريخ ووقت',
1059
+ columnLabelPlaceholder: 'تجاوز التسمية',
1060
+ aggregateColumn: 'تجميع',
1061
+ formatColumn: 'تنسيق',
1062
+ addColumns: 'إضافة أعمدة',
1063
+ searchFields: 'البحث في الحقول…',
1064
+ noMatchingFields: 'لا توجد حقول تطابق بحثك.',
1065
+ noFieldsAvailable: 'لا توجد حقول متاحة.',
1066
+ },
1067
+ },
950
1068
  };
951
1069
  export default ar;
@@ -951,5 +951,123 @@ declare const de: {
951
951
  readonly settings: "Settings";
952
952
  readonly logout: "Log out";
953
953
  };
954
+ readonly report: {
955
+ readonly rowTotal: "Row Total";
956
+ readonly columnTotal: "Column Total";
957
+ readonly grandTotal: "Grand Total";
958
+ readonly totals: "Totals";
959
+ readonly rowsLabel: "Row";
960
+ readonly columnsLabel: "Column";
961
+ readonly allLabel: "(All)";
962
+ readonly emptyLabel: "(Empty)";
963
+ readonly loading: "Loading…";
964
+ readonly failedToLoad: "Failed to load matrix: {{message}}";
965
+ readonly needsAcross: "Matrix report requires at least one `groupingsAcross` field.";
966
+ readonly aggregate: {
967
+ readonly count: "Count";
968
+ readonly countDistinct: "Distinct Count";
969
+ readonly sum: "Sum";
970
+ readonly avg: "Average";
971
+ readonly min: "Min";
972
+ readonly max: "Max";
973
+ readonly first: "First";
974
+ };
975
+ readonly editor: {
976
+ readonly breadcrumb: "Konfiguration";
977
+ readonly basic: "Allgemein";
978
+ readonly title: "Titel";
979
+ readonly titlePlaceholder: "z. B. Pipeline nach Quartal";
980
+ readonly description: "Beschreibung";
981
+ readonly descriptionPlaceholder: "Was zeigt dieser Bericht?";
982
+ readonly type: "Berichtstyp";
983
+ readonly typeTabular: "Tabellarisch — flache Liste";
984
+ readonly typeSummary: "Zusammenfassung — gruppiert mit Summen";
985
+ readonly typeMatrix: "Matrix — Pivot Zeilen × Spalten";
986
+ readonly typeJoined: "Verbunden — mehrere Blöcke";
987
+ readonly typeHelp: "Wählen Sie das Layout, das zu Ihrer gewünschten Ansicht passt.";
988
+ readonly data: "Daten";
989
+ readonly objectName: "Datenquelle";
990
+ readonly objectNamePlaceholder: "z. B. opportunity";
991
+ readonly objectNameHelp: "Welches Objekt soll dieser Bericht abfragen?";
992
+ readonly limit: "Zeilenlimit";
993
+ readonly limitPlaceholder: "z. B. 100";
994
+ readonly columns: "Spalten";
995
+ readonly columnsHint: "Wählen Sie die Felder, die als Spalten erscheinen. Fügen Sie in Zusammenfassungs- oder Matrixberichten Aggregationen (Summe, Anzahl …) hinzu.";
996
+ readonly filters: "Filter";
997
+ readonly filtersHint: "Schränken Sie die Zeilen ein, die in diesen Bericht aufgenommen werden.";
998
+ readonly filtersComplex: "Dieser Bericht verwendet einen erweiterten Filter, der hier nicht bearbeitet werden kann. Beim Speichern bleibt er unverändert.";
999
+ readonly groupBy: "Gruppieren nach";
1000
+ readonly groupByHint: "Daten gruppieren und Zwischensummen berechnen.";
1001
+ readonly rows: "Zeilen";
1002
+ readonly rowsHint: "Zeilen nach diesen Feldern gruppieren.";
1003
+ readonly columnsAxis: "Spalten";
1004
+ readonly columnsAxisHint: "Diese Felder oben als Pivot anordnen.";
1005
+ readonly values: "Werte";
1006
+ readonly valuesHint: "In jeder Zelle angezeigte Zahlen. Wählen Sie ein oder mehrere Felder und setzen Sie eine Aggregation (Summe, Anzahl …).";
1007
+ readonly grouping: "Gruppierung";
1008
+ readonly addGrouping: "Gruppierung hinzufügen";
1009
+ readonly dateGranularity: "Datumsgranularität";
1010
+ readonly dateGranularityNone: "(Rohwert verwenden)";
1011
+ readonly day: "Tag";
1012
+ readonly week: "Woche";
1013
+ readonly month: "Monat";
1014
+ readonly quarter: "Quartal";
1015
+ readonly year: "Jahr";
1016
+ readonly sortAsc: "Aufsteigend";
1017
+ readonly sortDesc: "Absteigend";
1018
+ readonly chart: "Diagramm";
1019
+ readonly chartHint: "Optionale Visualisierung neben der Tabelle.";
1020
+ readonly chartType: "Diagrammtyp";
1021
+ readonly chartTitle: "Diagrammtitel";
1022
+ readonly chartTitlePlaceholder: "Standardmäßig der Berichtstitel";
1023
+ readonly chartXAxis: "X-Achse (Kategorie)";
1024
+ readonly chartYAxis: "Y-Achse (Wert)";
1025
+ readonly chartShowLegend: "Legende anzeigen";
1026
+ readonly chartShowDataLabels: "Datenbeschriftungen anzeigen";
1027
+ readonly chartNone: "(kein Diagramm)";
1028
+ readonly chartBar: "Balken";
1029
+ readonly chartLine: "Linie";
1030
+ readonly chartArea: "Fläche";
1031
+ readonly chartPie: "Kreis";
1032
+ readonly chartDonut: "Donut";
1033
+ readonly chartFunnel: "Trichter";
1034
+ readonly validationNeedsObject: "Wählen Sie eine Datenquelle, bevor Sie Spalten hinzufügen.";
1035
+ readonly validationMatrixNeedsRowsCols: "Matrixberichte benötigen mindestens eine Zeile und eine Spalte.";
1036
+ readonly validationSummaryNeedsRows: "Zusammenfassungsberichte benötigen mindestens ein Gruppierungsfeld.";
1037
+ readonly blocks: "Blöcke";
1038
+ readonly blocksHint: "Jeder Block ist eine eigene Tabelle oder ein eigenes Diagramm. Blockfilter werden mit dem Berichtsfilter UND-verknüpft.";
1039
+ readonly addBlock: "Block hinzufügen";
1040
+ readonly removeBlock: "Block entfernen";
1041
+ readonly blockName: "Blockname";
1042
+ readonly blockNamePlaceholder: "eindeutiger_blockname";
1043
+ readonly blockLabel: "Anzeigename";
1044
+ readonly blockLabelPlaceholder: "Wird über dem Block angezeigt";
1045
+ readonly blockDescription: "Beschreibung";
1046
+ readonly blockDescriptionPlaceholder: "Optionaler Kontext für diesen Block";
1047
+ readonly validationJoinedNeedsBlocks: "Verbundene Berichte benötigen mindestens einen Block.";
1048
+ readonly validationBlockNameRequired: "Jeder Block benötigt einen nicht leeren Namen.";
1049
+ readonly validationBlockNameDuplicate: "Blocknamen müssen innerhalb des Berichts eindeutig sein.";
1050
+ readonly validationBlockNeedsColumns: "Jeder Block benötigt mindestens eine Spalte.";
1051
+ readonly noneOption: "(keine)";
1052
+ readonly addCondition: "Bedingung hinzufügen";
1053
+ readonly combineLogic: "Verknüpfen mit";
1054
+ readonly opContains: "enthält";
1055
+ readonly opIsEmpty: "ist leer";
1056
+ readonly opIsNotEmpty: "ist nicht leer";
1057
+ readonly formatAuto: "Automatisch";
1058
+ readonly formatCurrency: "Währung";
1059
+ readonly formatPercent: "Prozent";
1060
+ readonly formatInteger: "Ganzzahl";
1061
+ readonly formatDate: "Datum";
1062
+ readonly formatDatetime: "Datum und Uhrzeit";
1063
+ readonly columnLabelPlaceholder: "Bezeichnung überschreiben";
1064
+ readonly aggregateColumn: "Aggregation";
1065
+ readonly formatColumn: "Format";
1066
+ readonly addColumns: "Spalten hinzufügen";
1067
+ readonly searchFields: "Felder suchen…";
1068
+ readonly noMatchingFields: "Keine Felder entsprechen Ihrer Suche.";
1069
+ readonly noFieldsAvailable: "Keine Felder verfügbar.";
1070
+ };
1071
+ };
954
1072
  };
955
1073
  export default de;
@@ -960,5 +960,123 @@ const de = {
960
960
  settings: 'Settings',
961
961
  logout: 'Log out',
962
962
  },
963
+ report: {
964
+ rowTotal: 'Row Total',
965
+ columnTotal: 'Column Total',
966
+ grandTotal: 'Grand Total',
967
+ totals: 'Totals',
968
+ rowsLabel: 'Row',
969
+ columnsLabel: 'Column',
970
+ allLabel: '(All)',
971
+ emptyLabel: '(Empty)',
972
+ loading: 'Loading…',
973
+ failedToLoad: 'Failed to load matrix: {{message}}',
974
+ needsAcross: 'Matrix report requires at least one `groupingsAcross` field.',
975
+ aggregate: {
976
+ count: 'Count',
977
+ countDistinct: 'Distinct Count',
978
+ sum: 'Sum',
979
+ avg: 'Average',
980
+ min: 'Min',
981
+ max: 'Max',
982
+ first: 'First',
983
+ },
984
+ editor: {
985
+ breadcrumb: 'Konfiguration',
986
+ basic: 'Allgemein',
987
+ title: 'Titel',
988
+ titlePlaceholder: 'z. B. Pipeline nach Quartal',
989
+ description: 'Beschreibung',
990
+ descriptionPlaceholder: 'Was zeigt dieser Bericht?',
991
+ type: 'Berichtstyp',
992
+ typeTabular: 'Tabellarisch — flache Liste',
993
+ typeSummary: 'Zusammenfassung — gruppiert mit Summen',
994
+ typeMatrix: 'Matrix — Pivot Zeilen × Spalten',
995
+ typeJoined: 'Verbunden — mehrere Blöcke',
996
+ typeHelp: 'Wählen Sie das Layout, das zu Ihrer gewünschten Ansicht passt.',
997
+ data: 'Daten',
998
+ objectName: 'Datenquelle',
999
+ objectNamePlaceholder: 'z. B. opportunity',
1000
+ objectNameHelp: 'Welches Objekt soll dieser Bericht abfragen?',
1001
+ limit: 'Zeilenlimit',
1002
+ limitPlaceholder: 'z. B. 100',
1003
+ columns: 'Spalten',
1004
+ columnsHint: 'Wählen Sie die Felder, die als Spalten erscheinen. Fügen Sie in Zusammenfassungs- oder Matrixberichten Aggregationen (Summe, Anzahl …) hinzu.',
1005
+ filters: 'Filter',
1006
+ filtersHint: 'Schränken Sie die Zeilen ein, die in diesen Bericht aufgenommen werden.',
1007
+ filtersComplex: 'Dieser Bericht verwendet einen erweiterten Filter, der hier nicht bearbeitet werden kann. Beim Speichern bleibt er unverändert.',
1008
+ groupBy: 'Gruppieren nach',
1009
+ groupByHint: 'Daten gruppieren und Zwischensummen berechnen.',
1010
+ rows: 'Zeilen',
1011
+ rowsHint: 'Zeilen nach diesen Feldern gruppieren.',
1012
+ columnsAxis: 'Spalten',
1013
+ columnsAxisHint: 'Diese Felder oben als Pivot anordnen.',
1014
+ values: 'Werte',
1015
+ valuesHint: 'In jeder Zelle angezeigte Zahlen. Wählen Sie ein oder mehrere Felder und setzen Sie eine Aggregation (Summe, Anzahl …).',
1016
+ grouping: 'Gruppierung',
1017
+ addGrouping: 'Gruppierung hinzufügen',
1018
+ dateGranularity: 'Datumsgranularität',
1019
+ dateGranularityNone: '(Rohwert verwenden)',
1020
+ day: 'Tag',
1021
+ week: 'Woche',
1022
+ month: 'Monat',
1023
+ quarter: 'Quartal',
1024
+ year: 'Jahr',
1025
+ sortAsc: 'Aufsteigend',
1026
+ sortDesc: 'Absteigend',
1027
+ chart: 'Diagramm',
1028
+ chartHint: 'Optionale Visualisierung neben der Tabelle.',
1029
+ chartType: 'Diagrammtyp',
1030
+ chartTitle: 'Diagrammtitel',
1031
+ chartTitlePlaceholder: 'Standardmäßig der Berichtstitel',
1032
+ chartXAxis: 'X-Achse (Kategorie)',
1033
+ chartYAxis: 'Y-Achse (Wert)',
1034
+ chartShowLegend: 'Legende anzeigen',
1035
+ chartShowDataLabels: 'Datenbeschriftungen anzeigen',
1036
+ chartNone: '(kein Diagramm)',
1037
+ chartBar: 'Balken',
1038
+ chartLine: 'Linie',
1039
+ chartArea: 'Fläche',
1040
+ chartPie: 'Kreis',
1041
+ chartDonut: 'Donut',
1042
+ chartFunnel: 'Trichter',
1043
+ validationNeedsObject: 'Wählen Sie eine Datenquelle, bevor Sie Spalten hinzufügen.',
1044
+ validationMatrixNeedsRowsCols: 'Matrixberichte benötigen mindestens eine Zeile und eine Spalte.',
1045
+ validationSummaryNeedsRows: 'Zusammenfassungsberichte benötigen mindestens ein Gruppierungsfeld.',
1046
+ blocks: 'Blöcke',
1047
+ blocksHint: 'Jeder Block ist eine eigene Tabelle oder ein eigenes Diagramm. Blockfilter werden mit dem Berichtsfilter UND-verknüpft.',
1048
+ addBlock: 'Block hinzufügen',
1049
+ removeBlock: 'Block entfernen',
1050
+ blockName: 'Blockname',
1051
+ blockNamePlaceholder: 'eindeutiger_blockname',
1052
+ blockLabel: 'Anzeigename',
1053
+ blockLabelPlaceholder: 'Wird über dem Block angezeigt',
1054
+ blockDescription: 'Beschreibung',
1055
+ blockDescriptionPlaceholder: 'Optionaler Kontext für diesen Block',
1056
+ validationJoinedNeedsBlocks: 'Verbundene Berichte benötigen mindestens einen Block.',
1057
+ validationBlockNameRequired: 'Jeder Block benötigt einen nicht leeren Namen.',
1058
+ validationBlockNameDuplicate: 'Blocknamen müssen innerhalb des Berichts eindeutig sein.',
1059
+ validationBlockNeedsColumns: 'Jeder Block benötigt mindestens eine Spalte.',
1060
+ noneOption: '(keine)',
1061
+ addCondition: 'Bedingung hinzufügen',
1062
+ combineLogic: 'Verknüpfen mit',
1063
+ opContains: 'enthält',
1064
+ opIsEmpty: 'ist leer',
1065
+ opIsNotEmpty: 'ist nicht leer',
1066
+ formatAuto: 'Automatisch',
1067
+ formatCurrency: 'Währung',
1068
+ formatPercent: 'Prozent',
1069
+ formatInteger: 'Ganzzahl',
1070
+ formatDate: 'Datum',
1071
+ formatDatetime: 'Datum und Uhrzeit',
1072
+ columnLabelPlaceholder: 'Bezeichnung überschreiben',
1073
+ aggregateColumn: 'Aggregation',
1074
+ formatColumn: 'Format',
1075
+ addColumns: 'Spalten hinzufügen',
1076
+ searchFields: 'Felder suchen…',
1077
+ noMatchingFields: 'Keine Felder entsprechen Ihrer Suche.',
1078
+ noFieldsAvailable: 'Keine Felder verfügbar.',
1079
+ },
1080
+ },
963
1081
  };
964
1082
  export default de;