Skip to content

Commit 3e195be

Browse files
feat(plugin-report): the report page reads dateRange — a period chip and one timeDimensions window (#27070)
<!-- claude-projects-attribution: {"github_login":"os-warren"} --> _Requested by **Warren** · [project thread](https://claude.ai/code/project/chan_01U5RdnAAmkSQmZbqh6FtqZ8?thread=cmsg_01U5RdnAAmkSQmZbqh6FtqZ8JxkmA6W2aMBEb6B3khkD7o)_ Refs #25873 (item: the report page reads dateRange) Clause-②: no Metadata-protocol: none ## 维护者速读 - 改了什么:报表声明了 `dateRange` 后,报表页顶部出现时间范围选择(全部时间、仪表盘同款预设、可选自定义起止日期),表格、交叉表和内嵌图表都只统计所选时间段。 - 为什么改:裁决 B(时间范围 + 导出)的第一半;规格 #26548 已发布 `dateRange`,但此前没有任何渲染器读取它,报表总是显示全部时间。 - 风险与回滚:未声明 `dateRange` 的报表发出的查询与之前逐字节相同;风险限于声明了它的报表。回滚即还原本 PR。 - 先看:`ui/packages/plugin-report/src/ReportDateRange.tsx`(选择器与维度解析)、`DatasetReportRenderer.tsx` 中 `useDatasetRows` 的 `timeDimensions` 一行、`packages/spec/liveness/report.json` 的 `dateRange` 子树。 - 两分钟验证:`pnpm --dir ui exec vitest run packages/plugin-report/src/__tests__/DatasetReportRenderer.dateRange-25873.test.tsx`,预期 8 个测试全部通过。 - 需要你做的:无,席位落地。 ## What changes - **The chip.** A non-joined report that declares `dateRange` draws a date-range chip above its body (`ReportDateRangeControl`): All time, the dashboard's `DATE_RANGE_PRESETS` under the dashboard's `dashboard.filters.range.*` labels, and Custom… (two date inputs) unless `allowCustomRange: false`. It opens on `defaultRange`, or the spec default `this_month`; `custom` opens the custom pick with no window until both ends are named. - **The window.** The active window rides every dataset query the report makes (grouped table, matrix cross-tab, embedded chart) through the one fetch choke point `useDatasetRows`, as one `selection.timeDimensions` entry `{ dimension, dateRange }` with no `granularity`: a preset by name, a custom pick as `[start, end]`, All time as no entry. The window is part of the refetch signature, so a new pick re-queries. - **The dimension.** A declared `dimension` goes on the wire as written. Omitted, the renderer reads the dataset definition (`/api/v1/meta/dataset/NAME` through the host's `apiFetch`, the read `ObjectChart`'s dataset path makes) before any query and uses its one `type: 'date'` dimension. None or several draws that authoring error in place of the body and queries nothing, so no unwindowed table renders under a period chip. - **Unchanged without it.** No `dateRange` means no chip, no dataset-definition read, and the selection posted before. `joined` reports (where the spec refuses `dateRange`) are not read. - **Liveness.** `packages/spec/liveness/report.json`: `dateRange` and its three children flip `planned` → `live` citing the read points; `authorWarn` / `authorHint` dropped; `state-counts/report.md` regenerated. `exportOptions` stays `planned` (slice 2). - **i18n.** `report.dateRange.{from,to,datasetUnreadable,noSingleDateDimension}` in all ten locale packs (the German pack names the dataset without a „“ pair, which `de-quote-pairing-3876.test.ts` counts). - Changeset: `@object-ui/plugin-report` patch, `@object-ui/i18n` patch. No `@object-ui/core` edit was needed: `DATE_RANGE_PRESETS` is already exported. ## Tests - New `DatasetReportRenderer.dateRange-25873.test.tsx`, 8 cases: the `defaultRange` window on every query (table and chart) with the chip text; chip change re-queries (`this_quarter`, then All time = no entry); custom `[start, end]` only once both ends are set; `allowCustomRange: false` offers no Custom…; absent `defaultRange` = `this_month`; omitted dimension resolved from the dataset definition before the first query; two date dimensions = error, zero queries; CONTROL: no `dateRange` = no chip, no definition read, no `timeDimensions` key. - Ablation (commit `cff7be71`): deleting the `timeDimensions` spread in `useDatasetRows` through `scripts/ablation-replace.mjs` (anchor 1 → 0) turns the 5 cases that assert a posted window red; the 3 that assert none is needed (the control, the two-date-dimension error, the no-Custom case) stay green, as expected. Restored blob = HEAD blob `fe27e545`. <details><summary>Readings</summary> - `pnpm --dir ui exec vitest run packages/i18n/ packages/plugin-report/` after `pnpm --filter @object-ui/plugin-report run type-check`: VERDICT command-exit 0, Test Files 118 passed, Tests 1638 passed / 20 skipped. - `pnpm --dir ui run check:new-line-citations`: 0 new citations, exit 0. - eslint on the three touched plugin-report files: 0 errors (warnings only, the package's existing `react-refresh/only-export-components` / test `any` kinds). - `node scripts/pm/dispatch-gates.mjs --commands`: 69 derived families; `--ran` reconciliation: 68 run, all exit 0, 1 NOT MEASURED (`pnpm check:dual-build-cjs-loads`, exit 3 PREREQUISITE NOT MET: not every package has a `dist/` in this worktree; CI runs it). `check:liveness` first exited 1 (state-counts stale), passed after `gen:liveness-counts`; `check-plugin-teardown-shape.mjs --self-test` first exited 3 (its positive-control sha was outside the shallow clone), passed after fetching it. </details> ## Acceptance notes - Drill-down from a windowed report: the drill event carries `runtimeFilter` and the bucket, not the period, so the record list it opens is not limited to the window (a superset, the same direction the server's drill metadata already takes for unknown date field types). Carrying the window into the drill needs the host (`ReportView`, app-shell), outside this slice's file surface; listed in the report for the seat. - The picked period is component state, not URL state; a refresh reopens on `defaultRange`. ## Verification Gates and tests above were run at head `3bbafe81`. ## Human Minimum - [x] 1. Schemas start as Zod; `packages/spec` holds no runtime logic. - [x] 2. Every name I added uses the casing for its kind. - [ ] 3. No formatter ran; `pnpm lint` passes. (No formatter ran; the repo-wide `pnpm lint` is CI-owned, local eslint on the touched files is 0 errors.) - [x] 4. One issue, one branch off an up-to-date `main`, one pull request. - [x] 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. - [x] 6. `packages/spec` touched: its generated artifacts are regenerated and committed. - [x] 7. No hand edits to `content/docs/references/`, `packages/*/CHANGELOG.md` or `content/docs/releases/`. - [x] 8. Title, body and comments are in English. - [x] The *Before Submitting* list in CONTRIBUTING.md is done. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01JQwxbXUwVZUJzwhehD3YCc --- _Generated by [Claude Code](https://claude.ai/code/session_01JQwxbXUwVZUJzwhehD3YCc)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 74133d9 commit 3e195be

17 files changed

Lines changed: 625 additions & 28 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
'@object-ui/plugin-report': patch
3+
'@object-ui/i18n': patch
4+
---
5+
6+
feat(plugin-report): a report that declares `dateRange` draws a period chip and runs every query inside the chosen window
7+
8+
Clause-②: no
9+
Metadata-protocol: none
10+
11+
`ReportSchema.dateRange` (`{ dimension?, defaultRange, allowCustomRange }`) was accepted but read by nothing, so a report showed every period whatever it declared. The report page now reads it:
12+
13+
- **The chip.** A non-joined report that declares `dateRange` draws a date-range chip above its body: All time, the dashboard's presets under the dashboard's labels, and Custom… (two date inputs) unless `allowCustomRange: false`. It opens on `defaultRange`, or `this_month` when that is absent; `custom` opens the custom pick with no window until both ends are named.
14+
- **The window.** The active window rides every dataset query the report makes (the grouped table, the matrix cross-tab and the embedded chart) as one `selection.timeDimensions` entry `{ dimension, dateRange }` with no `granularity`: a preset goes by name, a custom pick as `[start, end]`, and All time sends no entry. The server ANDs it with `runtimeFilter` and the dataset's own filter. A new pick re-queries.
15+
- **The dimension.** A declared `dimension` is sent as written. Omitted, the renderer reads the dataset definition before any query and uses its one `type: 'date'` dimension; a dataset with none or several draws that authoring error in place of the report and queries nothing.
16+
- **Unchanged without it.** A report that does not declare `dateRange` draws no chip, reads no dataset definition and posts exactly the selection it posted before. A `joined` report (where the spec refuses `dateRange`) is not affected.
17+
18+
`@object-ui/i18n` gains `report.dateRange.from`, `report.dateRange.to`, `report.dateRange.datasetUnreadable` and `report.dateRange.noSingleDateDimension` in all ten locale packs; the preset labels reuse `dashboard.filters.*`.

‎packages/lint/src/lint-liveness-properties.test.ts‎

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2294,23 +2294,27 @@ describe('#26146 — ledger rows below the child level are graded and counted',
22942294
// ── #26548: a report's period and export are declared before the renderer reads them ──
22952295
//
22962296
// `report` joined TYPE_COLLECTIONS with its ledger's first warned rows:
2297-
// `dateRange` and `exportOptions` are `planned` + `authorWarn` until the
2298-
// Console report page reads them. Read off the SHIPPED ledger, so the flip to
2299-
// `live` (which drops `authorWarn`) turns the warning half of this block red
2300-
// on purpose — rewrite it as a silence pin in that same edit.
2301-
describe('report period and export (#26548 — planned until the report renderer reads them)', () => {
2297+
// `dateRange` and `exportOptions` shipped `planned` + `authorWarn` until the
2298+
// Console report page read them. `dateRange` is `live` since #25873's renderer
2299+
// slice (the report page draws its chip and windows every query), so its
2300+
// warning pin turned red at that flip ON PURPOSE and is re-subjected to the
2301+
// silence. `exportOptions` is still `planned` and is authored in the SAME call:
2302+
// one ledger load, one warning, so the silence is a reading and not a lint
2303+
// that stopped loading ledgers (which also answers []).
2304+
describe('report period and export (#26548 — dateRange live, exportOptions planned until the renderer reads it)', () => {
23022305
const report = (extra: Record<string, unknown> = {}) => ({
23032306
reports: [{ name: 'pipeline', label: 'Pipeline', type: 'summary', dataset: 'sales', rows: ['stage'], values: ['revenue'], ...extra }],
23042307
});
23052308

2306-
it('warns on each key, at the report, with the row\'s author hint', () => {
2309+
it('warns on exportOptions only, at the report, with the row\'s author hint; dateRange is silent', () => {
23072310
const findings = lintLivenessProperties(report({ dateRange: { dimension: 'close_date' }, exportOptions: { formats: ['csv'] } }));
23082311
const planned = findings.filter((f) => f.rule === 'liveness-planned-property');
2309-
expect(planned.map((f) => f.message.match(/`(dateRange|exportOptions)`/)?.[1]).sort()).toEqual(['dateRange', 'exportOptions']);
2312+
expect(planned.map((f) => f.message.match(/`(dateRange|exportOptions)`/)?.[1]).sort()).toEqual(['exportOptions']);
23102313
for (const f of planned) {
23112314
expect(f.where).toContain("report 'pipeline'");
23122315
expect(f.hint).toMatch(/^Keep it, but nothing reads it yet: the Console report page draws no /);
23132316
}
2317+
expect(findings.filter((f) => /`dateRange`/.test(f.message))).toEqual([]);
23142318
});
23152319

23162320
it('CONTROL — a report declaring neither key draws no warning', () => {

‎packages/spec/liveness/report.json‎

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -54,29 +54,28 @@
5454
"note": "objectui: DatasetReportChart plots `chart.xAxis` (dataset dimension) × `chart.yAxis` (measure) via useDatasetRows, honoring `type`/`title` (framework#1890/#3441). Supersedes the 2026-06 audit's DEAD finding. Sub-key `groupBy` stays experimental (its own describe marker) — the dataset renderer plots a single series and never reads it. Live on NON-joined reports only (#20161, re-read at the `.objectui-sha` pin f8a9d0fb): the one `report.chart` read (DatasetReportRenderer.tsx:1557) sits after the joined branch's return (:1462-1524), so on a `type: 'joined'` report the schema's refinement REFUSES `chart` rather than accepting a key nothing reads. A `joined` report draws no chart (packages/spec/src/ui/report.zod.ts, the joined-chart prescription, #20161; read point moved out of spec source, #23434): at objectui @f8a9d0fb0596 packages/plugin-report/src/DatasetReportRenderer.tsx#DatasetReportRenderer the joined branch draws each block as a `DatasetMatrixTable` / `DatasetReportTable` and returns before the one `report.chart` read, and no renderer reads a block's `chart`."
5555
},
5656
"dateRange": {
57-
"status": "planned",
58-
"verifiedAt": "2026-10-27",
59-
"authorWarn": true,
60-
"authorHint": "Keep it, but nothing reads it yet: the Console report page draws no date-range chip, so the report still shows every period until the report renderer reads this key.",
61-
"note": "PLANNED RECORD (#26548, the spec half of ruling 6408567749 on #25873, letter B). The report period `{ dimension?, defaultRange, allowCustomRange }`: `defaultRange` / `allowCustomRange` are the dashboard declaration verbatim (DATE_RANGE_DEFAULT_RANGES, defaults this_month / true, held equal by report-date-range-export.test.ts); `dimension` names a dataset dimension that declares `type: date` (omitted = the dataset declares exactly one). The four dataset-aware cases are judged by the `@objectstack/lint` rule validate-report-date-range.ts at os validate / os build and at the report publish door. Refused on a `joined` container. PLANNED, not live: no renderer reads it. The report page posts its selection through `useDatasetRows` in ui/packages/plugin-report/src/DatasetReportRenderer.tsx#DatasetReportRenderer with no `timeDimensions` entry, and no source under ui/packages/plugin-report/src/ names `dateRange` (0 hits outside tests). The renderer contract is the TSDoc on `ReportSchema.dateRange`: the active window rides `selection.timeDimensions: [{ dimension, dateRange }]` with no `granularity` (a filter window ANDed with `runtimeFilter`), which the analytics service already accepts. Carrier: #25873, the ui renderer card, Blocked-by this one. Flip to `live` on the commit that cites the renderer read point, and drop `authorWarn` / `authorHint` in that same edit.",
57+
"status": "live",
58+
"verifiedAt": "2026-10-28",
59+
"evidence": "ui/packages/plugin-report/src/DatasetReportRenderer.tsx#useDatasetRows, ui/packages/plugin-report/src/ReportDateRange.tsx#reportTimeWindow",
60+
"note": "#25873 (ruling 6408567749, letter B; spec half #26548). The report period `{ dimension?, defaultRange, allowCustomRange }`: `defaultRange` / `allowCustomRange` are the dashboard declaration verbatim (DATE_RANGE_DEFAULT_RANGES, defaults this_month / true, held equal by report-date-range-export.test.ts); `dimension` names a dataset dimension that declares `type: date` (omitted = the dataset declares exactly one). The four dataset-aware cases are judged by the `@objectstack/lint` rule validate-report-date-range.ts at os validate / os build and at the report publish door. Refused on a `joined` container, and not read there. LIVE: a non-joined report that declares it draws a date-range chip (ReportDateRange.tsx#ReportDateRangeControl: All time, the dashboard's DATE_RANGE_PRESETS under the `dashboard.filters.range.*` labels, Custom… when allowed), and the active window rides every dataset query the report makes (grouped table, matrix cross-tab, embedded chart) through the single fetch choke point DatasetReportRenderer.tsx#useDatasetRows as ONE `selection.timeDimensions` entry `{ dimension, dateRange }` with no `granularity`: a preset by name, a custom pick as `[start, end]`, All time as no entry. The window is part of the refetch signature, so a new pick re-queries. A report without `dateRange` posts the selection it always did (no `timeDimensions` key, no chip, no dataset-definition read). Pinned by ui/packages/plugin-report/src/__tests__/DatasetReportRenderer.dateRange-25873.test.tsx.",
6261
"children": {
6362
"dimension": {
64-
"status": "planned",
65-
"verifiedAt": "2026-10-27",
66-
"evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `dimension` on the closed `dateRange` block)",
67-
"note": "The dataset dimension the window applies to. Planned with its container: no renderer reads it. Its dataset-aware checks are live in lint (validate-report-date-range.ts: unknown, not a date, omitted with several date dimensions, omitted with none)."
63+
"status": "live",
64+
"verifiedAt": "2026-10-28",
65+
"evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#useReportDateDimension",
66+
"note": "The dataset dimension the window applies to. Declared, it is the `timeDimensions[].dimension` verbatim; omitted, the renderer reads the dataset definition (`/api/v1/meta/dataset/NAME` through the host's `apiFetch`, the ObjectChart dataset read) BEFORE any query and uses its one `type: date` dimension. Zero or several draws the authoring error in place of the report and queries nothing, so no unwindowed table renders under a period chip. Its dataset-aware checks are also live in lint (validate-report-date-range.ts)."
6867
},
6968
"defaultRange": {
70-
"status": "planned",
71-
"verifiedAt": "2026-10-27",
72-
"evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `defaultRange` over DATE_RANGE_DEFAULT_RANGES, default this_month)",
73-
"note": "The preset the report opens on, the dashboard declaration verbatim. Planned with its container: no renderer reads it."
69+
"status": "live",
70+
"verifiedAt": "2026-10-28",
71+
"evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#initialReportPeriod",
72+
"note": "The preset the report opens on, the dashboard declaration verbatim; absent opens on the spec default this_month. `custom` opens the custom pick with no window (the spec's sentinel) until both ends are named."
7473
},
7574
"allowCustomRange": {
76-
"status": "planned",
77-
"verifiedAt": "2026-10-27",
78-
"evidence": "packages/spec/src/ui/report.zod.ts#ReportSchema (declares `allowCustomRange`, default true)",
79-
"note": "Whether the viewer may pick a custom range, the dashboard declaration verbatim. Planned with its container: no renderer reads it."
75+
"status": "live",
76+
"verifiedAt": "2026-10-28",
77+
"evidence": "ui/packages/plugin-report/src/ReportDateRange.tsx#ReportDateRangeControl",
78+
"note": "Whether the chip offers Custom… (two date inputs whose `[start, end]` goes on the wire). `false` removes the item; absent = true."
8079
}
8180
}
8281
},

‎packages/spec/liveness/state-counts/report.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ committed anywhere: `check:liveness` sums the shards when it reads them.
1212

1313
| Type | live | exp | elsewhere | dead | planned | classified |
1414
|---|---|---|---|---|---|---|
15-
| `report` | 21 | 0 | 0 | 0 | 6 | 27 |
15+
| `report` | 24 | 0 | 0 | 0 | 3 | 27 |

‎ui/packages/i18n/src/locales/ar.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3428,6 +3428,12 @@ const ar = {
34283428
totals: "الإجماليات",
34293429
loading: "جارٍ التحميل…",
34303430
forbiddenMessage: "ليست لديك صلاحية لعرض البيانات الخاصة بهذا التقرير.",
3431+
dateRange: {
3432+
from: "من",
3433+
to: "إلى",
3434+
datasetUnreadable: "لا تحدد الفترة الزمنية لهذا التقرير أي بُعد، وتعذّرت قراءة مجموعة البيانات \"{{dataset}}\" للعثور على بُعد التاريخ ({{reason}}).",
3435+
noSingleDateDimension: "لا تحدد الفترة الزمنية لهذا التقرير أي بُعد، وتعلن مجموعة البيانات \"{{dataset}}\" عن {{total}} من أبعاد التاريخ ({{found}}) بينما يلزم بُعد واحد بالضبط. حدّد بُعد التاريخ في dateRange.dimension الخاص بالتقرير.",
3436+
},
34313437
aggregate: {
34323438
count: "عدد",
34333439
countDistinct: "عدد الفريد",

‎ui/packages/i18n/src/locales/de.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3187,6 +3187,12 @@ const de = {
31873187
totals: "Summen",
31883188
loading: "Wird geladen…",
31893189
forbiddenMessage: "Sie haben keine Berechtigung, die Daten dieses Berichts anzuzeigen.",
3190+
dateRange: {
3191+
from: "Von",
3192+
to: "Bis",
3193+
datasetUnreadable: "Der Zeitraum dieses Berichts nennt keine Dimension, und das Dataset {{dataset}} konnte nicht gelesen werden, um seine Datumsdimension zu finden ({{reason}}).",
3194+
noSingleDateDimension: "Der Zeitraum dieses Berichts nennt keine Dimension, und das Dataset {{dataset}} deklariert {{total}} Datumsdimensionen ({{found}}), benötigt wird genau eine. Nennen Sie die Datumsdimension in dateRange.dimension des Berichts.",
3195+
},
31903196
aggregate: {
31913197
count: "Anzahl",
31923198
countDistinct: "Eindeutige Anzahl",

‎ui/packages/i18n/src/locales/en.ts‎

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,6 +1685,13 @@ const en = {
16851685
loading: 'Loading…',
16861686
// objectui#12330 — the report's no-access state; its title is `dashboard.widgetForbiddenTitle`.
16871687
forbiddenMessage: 'You don’t have permission to view the data behind this report.',
1688+
// objectstack-ai/objectstack#25873 — the report period chip (`ReportSchema.dateRange`); its preset labels are `dashboard.filters.*`.
1689+
dateRange: {
1690+
from: 'From',
1691+
to: 'To',
1692+
datasetUnreadable: 'This report’s date range names no dimension, and the “{{dataset}}” dataset could not be read to find its date dimension ({{reason}}).',
1693+
noSingleDateDimension: 'This report’s date range names no dimension, and the “{{dataset}}” dataset declares {{total}} date dimensions ({{found}}) where it needs exactly one. Name the date dimension in the report’s dateRange.dimension.',
1694+
},
16881695
aggregate: {
16891696
count: 'Count',
16901697
countDistinct: 'Distinct Count',

‎ui/packages/i18n/src/locales/es.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3248,6 +3248,12 @@ const es = {
32483248
totals: "Totales",
32493249
loading: "Cargando…",
32503250
forbiddenMessage: "No tienes permiso para ver los datos de este informe.",
3251+
dateRange: {
3252+
from: "Desde",
3253+
to: "Hasta",
3254+
datasetUnreadable: "El periodo de este informe no indica ninguna dimensión y no se pudo leer el conjunto de datos «{{dataset}}» para encontrar su dimensión de fecha ({{reason}}).",
3255+
noSingleDateDimension: "El periodo de este informe no indica ninguna dimensión y el conjunto de datos «{{dataset}}» declara {{total}} dimensiones de fecha ({{found}}) cuando necesita exactamente una. Indique la dimensión de fecha en dateRange.dimension del informe.",
3256+
},
32513257
aggregate: {
32523258
count: "Contar",
32533259
countDistinct: "Contar únicos",

‎ui/packages/i18n/src/locales/fr.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3244,6 +3244,12 @@ const fr = {
32443244
totals: "Totaux",
32453245
loading: "Chargement…",
32463246
forbiddenMessage: "Vous n’avez pas l’autorisation de voir les données de ce rapport.",
3247+
dateRange: {
3248+
from: "Du",
3249+
to: "Au",
3250+
datasetUnreadable: "La période de ce rapport ne nomme aucune dimension, et le jeu de données « {{dataset}} » n’a pas pu être lu pour trouver sa dimension de date ({{reason}}).",
3251+
noSingleDateDimension: "La période de ce rapport ne nomme aucune dimension, et le jeu de données « {{dataset}} » déclare {{total}} dimensions de date ({{found}}) alors qu’il en faut exactement une. Nommez la dimension de date dans dateRange.dimension du rapport.",
3252+
},
32473253
aggregate: {
32483254
count: "Compter",
32493255
countDistinct: "Compter distincts",

‎ui/packages/i18n/src/locales/ja.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3189,6 +3189,12 @@ const ja = {
31893189
totals: "合計",
31903190
loading: "読み込み中…",
31913191
forbiddenMessage: "このレポートのデータを表示する権限がありません。",
3192+
dateRange: {
3193+
from: "開始",
3194+
to: "終了",
3195+
datasetUnreadable: "このレポートの期間はディメンションを指定しておらず、データセット「{{dataset}}」を読み込んで日付ディメンションを特定できませんでした({{reason}})。",
3196+
noSingleDateDimension: "このレポートの期間はディメンションを指定しておらず、データセット「{{dataset}}」は日付ディメンションを {{total}} 個宣言しています({{found}})。ちょうど 1 個である必要があります。レポートの dateRange.dimension で日付ディメンションを指定してください。",
3197+
},
31923198
aggregate: {
31933199
count: "件数",
31943200
countDistinct: "ユニーク件数",

0 commit comments

Comments
 (0)