@object-ui/plugin-report 17.7.0 → 18.0.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,390 @@
1
1
  # @object-ui/plugin-report
2
2
 
3
+ ## 18.0.0
4
+
5
+ ### Dependency floors
6
+
7
+ Computed from `.objectstack-sha` `06cab4849a8a`: the earliest published `@objectstack/spec` that contains it is `18.0.0`.
8
+
9
+ - `@objectstack/spec` (`devDependencies`): `^18.0.0-next.1` → `^18.0.0`
10
+
11
+ ### Major Changes
12
+
13
+ - 6f3299f: objectui moves to major 18, following `@objectstack/*` from 17 to 18 (objectui#12334). objectui's major is not a count of its own breaking changes: it tracks the major of the `@objectstack/spec` its packages depend on, so that the same major means compatible across the two projects. These packages already declare `@objectstack/*` on the 18 line (objectui#12030), so every package in the fixed release group crosses to 18 together. It is the one `major` that rule admits: objectui's own breaking changes ship as `minor`, described in their entries.
14
+
15
+ The 18 line is released from Changesets pre mode on the `next` tag (`.changeset/pre.json`), as `@objectstack/*` 18 is: these releases are `18.0.0-next.N` on the npm `next` dist-tag, and they do not move `latest`. The first `18.0.0` on `latest` comes when `@objectstack` 18 is generally available and this repository leaves pre mode.
16
+
17
+ What a consumer must do to take it is in the `@objectstack/*` 18 entry of this release (objectui#12030): move its own `@objectstack/*` packages to the 18 line at the same time.
18
+
19
+ ### Patch Changes
20
+
21
+ - 2312bd9: A page that declares `print` now prints as a document, and a record page bound to such a page offers a Print action (objectui#11958, the objectui half of the print-page ruling on objectstack#8346, M1, zero server).
22
+
23
+ - **The print stylesheet.** `PageRenderer` mounts a stylesheet built from the page's `print` declaration, only for a page that declares it. Every rule sits inside `@media print`, so the page on screen is drawn as before. `paperSize` and `orientation` set `@page { size }` (A4 and portrait when omitted). `margins` set one `@page` margin per declared side, in millimetres. `pageNumbers` prints "page / pages" in the bottom-right margin. `repeatHeader` and `repeatFooter` repeat the page's own `header` and `footer` regions on every sheet. `repeatTableHeaders` (on when omitted) repeats a table's column headings on every sheet it runs onto. `avoidBreakInside` keeps each block of a region whole on one sheet when it fits. Only the print page reaches paper: the console chrome and the record view's own panels around the page are hidden, and the page runs onto as many sheets as it needs.
24
+ - **The printable blocks print whole.** On a print page, `record:line_items` no longer cuts lines off at its row cap in silence: when the child object has more lines than the cap (500 unless `limit` is set), the panel draws the cap's lines and the shared row-ceiling note under them, naming both numbers when the server reports a total. A collapsible `record:details` section draws open, because a closed section never reaches paper. Off a print page both blocks behave as before.
25
+ - **The record page's Print action.** When the record page bound to a record declares `print`, the record view shows a Print button that opens the browser's print preview of that page.
26
+ - **New exports from `@object-ui/react`:** `PrintPageProvider`, `usePrintPage` and `PrintPageContext`. `usePrintPage()` returns the enclosing page's `print` declaration, or `null` outside a print page.
27
+ - The source comments that described PDF export as declined now say where a printable document lives: a page that declares `print`.
28
+ - e5c8ea7: fix(plugin-report): a report lays out a select dimension in the field's declared option order (objectui#12243)
29
+
30
+ A dataset-bound report used to show its groups in the order the dataset returned them, which is the
31
+ stored values' alphabetical order. A stage dimension read Closed Won, Needs Analysis, Negotiation,
32
+ Proposal, Prospecting, Qualification, and a bar chart beside the table drew the same order.
33
+
34
+ When the report declares no `order`, the table rows, a matrix's row and column headers and the
35
+ embedded chart's categories now follow each select dimension's declared option order, the reading
36
+ grid groups and dashboard charts already use (objectui#11809):
37
+
38
+ - the declared options come first, in their order;
39
+ - a value the options do not declare comes next, in the order the dataset returned it;
40
+ - the empty bucket comes last.
41
+
42
+ With two grouping dimensions, the outer one is laid out first and the inner one within each outer
43
+ group. A dimension whose field declares no options (a lookup, a text field, a date) keeps the order
44
+ the dataset returned it in.
45
+
46
+ A report that declares its own `order` keeps the server's order unchanged. A drill on a row still
47
+ opens that row's records.
48
+ - 2b06a91: A report the viewer may not read shows the no-access state, not the server's refusal (objectui#12330).
49
+
50
+ When the dataset query behind a report was refused because the viewer may not read its object (403 `PERMISSION_DENIED`), the report page drew a red error box with the adapter's message: "Analytics query refused: … (server said: [Analytics] Access denied: reading "…" is not permitted for this user.)". That text quotes the server and names the object. A dashboard widget refused the same way already showed a localized "You don't have access" state.
51
+
52
+ - **The refusal is classified once, in the report's dataset read**, by the shared `classifyLoadError` from `@object-ui/react`, the branch `DatasetWidget` takes for the same refusal. It judges the refusal by status and code, as `DatasetWidget` does; this renderer never matches the adapter's refusal text.
53
+ - **A refused report shows "You don't have access"** (the widget's title, `dashboard.widgetForbiddenTitle`) and "You don't have permission to view the data behind this report." (the new `report.forbiddenMessage`, in all ten language packs). The table, the summary and the cross-tab show it, and so does each joined block. No server text and no object name is drawn.
54
+ - **A report with a chart shows it once.** The chart already hides itself when its own query fails, and the table beside it shows the state.
55
+ - **Any other failure keeps its error box and message**, so a real error (a 500, a rejected query) is not hidden behind "no access".
56
+
57
+ **Clause-②: yes (widening)**: one locale key, `report.forbiddenMessage`, added to `@object-ui/i18n`'s published packs, which widens `TranslationKeys`. No export, prop or schema key is added, and nothing is renamed or removed.
58
+ - Updated dependencies [18d7b48]
59
+ - Updated dependencies [172acc3]
60
+ - Updated dependencies [f0496bd]
61
+ - Updated dependencies [c4c506b]
62
+ - Updated dependencies [9db9ff3]
63
+ - Updated dependencies [c096f03]
64
+ - Updated dependencies [d92b2a1]
65
+ - Updated dependencies [92f4e2b]
66
+ - Updated dependencies [b10c68e]
67
+ - Updated dependencies [bdc9049]
68
+ - Updated dependencies [e8c0b96]
69
+ - Updated dependencies [b92329c]
70
+ - Updated dependencies [2e818d0]
71
+ - Updated dependencies [fd060f0]
72
+ - Updated dependencies [fd060f0]
73
+ - Updated dependencies [8b14aec]
74
+ - Updated dependencies [2abec3a]
75
+ - Updated dependencies [9dfaca6]
76
+ - Updated dependencies [c000398]
77
+ - Updated dependencies [73b5d77]
78
+ - Updated dependencies [7b17705]
79
+ - Updated dependencies [fc3c2cc]
80
+ - Updated dependencies [f9f4a62]
81
+ - Updated dependencies [848ba0e]
82
+ - Updated dependencies [57d82cb]
83
+ - Updated dependencies [de96f3d]
84
+ - Updated dependencies [9ca3cac]
85
+ - Updated dependencies [c910630]
86
+ - Updated dependencies [ce464d9]
87
+ - Updated dependencies [e6dcd85]
88
+ - Updated dependencies [96fcf30]
89
+ - Updated dependencies [7a2c60b]
90
+ - Updated dependencies [055d350]
91
+ - Updated dependencies [834c559]
92
+ - Updated dependencies [22b503c]
93
+ - Updated dependencies [9fc68aa]
94
+ - Updated dependencies [d50f724]
95
+ - Updated dependencies [17acfbb]
96
+ - Updated dependencies [6be0f7a]
97
+ - Updated dependencies [db4cb6b]
98
+ - Updated dependencies [89cc738]
99
+ - Updated dependencies [c0862c1]
100
+ - Updated dependencies [c0862c1]
101
+ - Updated dependencies [c0862c1]
102
+ - Updated dependencies [c0862c1]
103
+ - Updated dependencies [c0862c1]
104
+ - Updated dependencies [c0862c1]
105
+ - Updated dependencies [ded4494]
106
+ - Updated dependencies [d172f63]
107
+ - Updated dependencies [4c0de52]
108
+ - Updated dependencies [a80fef7]
109
+ - Updated dependencies [3bf8894]
110
+ - Updated dependencies [e06365c]
111
+ - Updated dependencies [3035948]
112
+ - Updated dependencies [1e1f09e]
113
+ - Updated dependencies [455c646]
114
+ - Updated dependencies [f34e877]
115
+ - Updated dependencies [f34e877]
116
+ - Updated dependencies [f34e877]
117
+ - Updated dependencies [9844bbf]
118
+ - Updated dependencies [cef0eee]
119
+ - Updated dependencies [7ebff39]
120
+ - Updated dependencies [054fd84]
121
+ - Updated dependencies [5275d1f]
122
+ - Updated dependencies [7241a81]
123
+ - Updated dependencies [74add0c]
124
+ - Updated dependencies [aaba865]
125
+ - Updated dependencies [f1781be]
126
+ - Updated dependencies [5ab2f19]
127
+ - Updated dependencies [fbad078]
128
+ - Updated dependencies [45d5853]
129
+ - Updated dependencies [4f4fc03]
130
+ - Updated dependencies [2312bd9]
131
+ - Updated dependencies [6d5eb34]
132
+ - Updated dependencies [c5406c2]
133
+ - Updated dependencies [c5406c2]
134
+ - Updated dependencies [d99b731]
135
+ - Updated dependencies [2571a3e]
136
+ - Updated dependencies [a368ccb]
137
+ - Updated dependencies [2a48bd4]
138
+ - Updated dependencies [8a55f0c]
139
+ - Updated dependencies [c7b30bd]
140
+ - Updated dependencies [20c6d35]
141
+ - Updated dependencies [417e245]
142
+ - Updated dependencies [69bca0a]
143
+ - Updated dependencies [023f00d]
144
+ - Updated dependencies [158c75d]
145
+ - Updated dependencies [7525045]
146
+ - Updated dependencies [5af42db]
147
+ - Updated dependencies [ce991bd]
148
+ - Updated dependencies [3c0f806]
149
+ - Updated dependencies [1071393]
150
+ - Updated dependencies [5f75cfa]
151
+ - Updated dependencies [29b9949]
152
+ - Updated dependencies [6757a93]
153
+ - Updated dependencies [b7cd5c8]
154
+ - Updated dependencies [5330038]
155
+ - Updated dependencies [2498a07]
156
+ - Updated dependencies [898bd2c]
157
+ - Updated dependencies [c9fc10b]
158
+ - Updated dependencies [dc6d28e]
159
+ - Updated dependencies [c0c2f79]
160
+ - Updated dependencies [0665c3b]
161
+ - Updated dependencies [d2500d8]
162
+ - Updated dependencies [e723f58]
163
+ - Updated dependencies [82bb1d5]
164
+ - Updated dependencies [f3d5408]
165
+ - Updated dependencies [b231607]
166
+ - Updated dependencies [b231607]
167
+ - Updated dependencies [466a219]
168
+ - Updated dependencies [466a219]
169
+ - Updated dependencies [6fb281d]
170
+ - Updated dependencies [54159d3]
171
+ - Updated dependencies [fa778e6]
172
+ - Updated dependencies [334f0cf]
173
+ - Updated dependencies [c08c933]
174
+ - Updated dependencies [92f979d]
175
+ - Updated dependencies [c4dd707]
176
+ - Updated dependencies [c4dd707]
177
+ - Updated dependencies [7578323]
178
+ - Updated dependencies [a491b64]
179
+ - Updated dependencies [38bb373]
180
+ - Updated dependencies [923504f]
181
+ - Updated dependencies [5b45c0d]
182
+ - Updated dependencies [923504f]
183
+ - Updated dependencies [5c2982a]
184
+ - Updated dependencies [97e7d4e]
185
+ - Updated dependencies [5d3f437]
186
+ - Updated dependencies [10aba37]
187
+ - Updated dependencies [5d3f437]
188
+ - Updated dependencies [51c661e]
189
+ - Updated dependencies [7af0ab3]
190
+ - Updated dependencies [b434f5f]
191
+ - Updated dependencies [9f282ef]
192
+ - Updated dependencies [fd4872f]
193
+ - Updated dependencies [f0532d8]
194
+ - Updated dependencies [cea429b]
195
+ - Updated dependencies [3092aca]
196
+ - Updated dependencies [82e5f53]
197
+ - Updated dependencies [d81e460]
198
+ - Updated dependencies [8106db1]
199
+ - Updated dependencies [068a540]
200
+ - Updated dependencies [ca45c6d]
201
+ - Updated dependencies [093d55b]
202
+ - Updated dependencies [b64fda3]
203
+ - Updated dependencies [a8051d6]
204
+ - Updated dependencies [72594f2]
205
+ - Updated dependencies [524136e]
206
+ - Updated dependencies [2b06a91]
207
+ - Updated dependencies [6f3299f]
208
+ - Updated dependencies [065a1cf]
209
+ - Updated dependencies [f2b17c6]
210
+ - Updated dependencies [52d6194]
211
+ - Updated dependencies [23bf859]
212
+ - Updated dependencies [1c72d77]
213
+ - Updated dependencies [789cb16]
214
+ - Updated dependencies [2b4d3f1]
215
+ - Updated dependencies [d75f212]
216
+ - Updated dependencies [37db09f]
217
+ - Updated dependencies [ff9df88]
218
+ - Updated dependencies [70e843f]
219
+ - Updated dependencies [caac3b2]
220
+ - Updated dependencies [a2225f9]
221
+ - Updated dependencies [5c4deb5]
222
+ - Updated dependencies [a8e5b73]
223
+ - Updated dependencies [d9d9d98]
224
+ - Updated dependencies [c950345]
225
+ - Updated dependencies [21f9577]
226
+ - Updated dependencies [044f231]
227
+ - Updated dependencies [f8267df]
228
+ - Updated dependencies [023087f]
229
+ - Updated dependencies [9b82ced]
230
+ - Updated dependencies [3821a3a]
231
+ - Updated dependencies [3eb3ec1]
232
+ - Updated dependencies [92c2a69]
233
+ - Updated dependencies [518a8e3]
234
+ - Updated dependencies [646caea]
235
+ - Updated dependencies [1ffd6a2]
236
+ - Updated dependencies [5f8ecf6]
237
+ - Updated dependencies [7d0c174]
238
+ - Updated dependencies [8ed7e5a]
239
+ - Updated dependencies [6c4d00d]
240
+ - Updated dependencies [db8ce2f]
241
+ - Updated dependencies [726d8c9]
242
+ - Updated dependencies [f0e760a]
243
+ - Updated dependencies [a5bb7ac]
244
+ - Updated dependencies [f78efdd]
245
+ - Updated dependencies [8a8bcf3]
246
+ - Updated dependencies [f74638c]
247
+ - Updated dependencies [278bc29]
248
+ - Updated dependencies [ef71a09]
249
+ - Updated dependencies [8614705]
250
+ - Updated dependencies [619e3f7]
251
+ - Updated dependencies [ca7a4c3]
252
+ - Updated dependencies [c9e6742]
253
+ - Updated dependencies [f62b6ff]
254
+ - Updated dependencies [608033b]
255
+ - Updated dependencies [c6b7d82]
256
+ - Updated dependencies [611566b]
257
+ - Updated dependencies [efa9cb4]
258
+ - Updated dependencies [d66d7e8]
259
+ - Updated dependencies [15d8ca6]
260
+ - Updated dependencies [378896d]
261
+ - Updated dependencies [9d857c9]
262
+ - Updated dependencies [670ea10]
263
+ - Updated dependencies [ff215d9]
264
+ - Updated dependencies [71243db]
265
+ - Updated dependencies [a8add5c]
266
+ - Updated dependencies [33ee9de]
267
+ - Updated dependencies [4839f5c]
268
+ - Updated dependencies [a23e804]
269
+ - Updated dependencies [c7462e7]
270
+ - Updated dependencies [36e2f7b]
271
+ - Updated dependencies [ac59073]
272
+ - Updated dependencies [44cb469]
273
+ - Updated dependencies [e058d76]
274
+ - Updated dependencies [c999d4c]
275
+ - Updated dependencies [8df2608]
276
+ - Updated dependencies [5483297]
277
+ - Updated dependencies [ed43c79]
278
+ - Updated dependencies [260ef71]
279
+ - Updated dependencies [655e897]
280
+ - Updated dependencies [655e897]
281
+ - Updated dependencies [020d178]
282
+ - Updated dependencies [8d80845]
283
+ - Updated dependencies [69a408f]
284
+ - Updated dependencies [d2b21a1]
285
+ - Updated dependencies [5ff64ef]
286
+ - Updated dependencies [64acb7e]
287
+ - Updated dependencies [4ff5b6b]
288
+ - Updated dependencies [473e5a0]
289
+ - Updated dependencies [b279016]
290
+ - Updated dependencies [bb6c38c]
291
+ - Updated dependencies [26323c4]
292
+ - Updated dependencies [9753811]
293
+ - Updated dependencies [2727527]
294
+ - Updated dependencies [3da39ae]
295
+ - Updated dependencies [bc281f4]
296
+ - Updated dependencies [d637be3]
297
+ - Updated dependencies [2cfdc99]
298
+ - Updated dependencies [2cfdc99]
299
+ - Updated dependencies [8523e81]
300
+ - Updated dependencies [1e6d83b]
301
+ - Updated dependencies [1e6d83b]
302
+ - Updated dependencies [32b492b]
303
+ - Updated dependencies [6058bf8]
304
+ - Updated dependencies [c219165]
305
+ - Updated dependencies [a7ae252]
306
+ - Updated dependencies [fb501bc]
307
+ - Updated dependencies [30083da]
308
+ - Updated dependencies [7f9cc37]
309
+ - Updated dependencies [b7fe09e]
310
+ - Updated dependencies [025130c]
311
+ - Updated dependencies [76f91f8]
312
+ - Updated dependencies [ea34d9b]
313
+ - Updated dependencies [8aa8e3e]
314
+ - Updated dependencies [024b7b6]
315
+ - Updated dependencies [cb80001]
316
+ - Updated dependencies [909c64e]
317
+ - Updated dependencies [9e7e1a5]
318
+ - Updated dependencies [2493e85]
319
+ - Updated dependencies [d0b9648]
320
+ - Updated dependencies [46dbf32]
321
+ - Updated dependencies [a928aaa]
322
+ - Updated dependencies [47508f3]
323
+ - Updated dependencies [61ed5ad]
324
+ - Updated dependencies [1b94d50]
325
+ - Updated dependencies [6f877f1]
326
+ - Updated dependencies [988aa9f]
327
+ - Updated dependencies [1ce0711]
328
+ - Updated dependencies [fb85637]
329
+ - Updated dependencies [9f1dd79]
330
+ - Updated dependencies [df71568]
331
+ - Updated dependencies [d11174a]
332
+ - Updated dependencies [2d8a8b7]
333
+ - Updated dependencies [cbac9d7]
334
+ - Updated dependencies [5129caa]
335
+ - Updated dependencies [9eb1479]
336
+ - Updated dependencies [74e37aa]
337
+ - Updated dependencies [961b69f]
338
+ - Updated dependencies [52907d7]
339
+ - Updated dependencies [f466b0a]
340
+ - Updated dependencies [673a71c]
341
+ - Updated dependencies [616df65]
342
+ - Updated dependencies [f48a4d5]
343
+ - Updated dependencies [58798ec]
344
+ - Updated dependencies [8803ca5]
345
+ - Updated dependencies [e70c21d]
346
+ - Updated dependencies [4b92c5a]
347
+ - Updated dependencies [06be396]
348
+ - Updated dependencies [3650d94]
349
+ - Updated dependencies [7c05f21]
350
+ - Updated dependencies [8cd4db4]
351
+ - Updated dependencies [daeb77f]
352
+ - Updated dependencies [eb4552e]
353
+ - Updated dependencies [3c3115e]
354
+ - Updated dependencies [55e90fd]
355
+ - Updated dependencies [9b75509]
356
+ - Updated dependencies [b13ea3c]
357
+ - Updated dependencies [d7e9e9a]
358
+ - Updated dependencies [cf62edf]
359
+ - Updated dependencies [0253416]
360
+ - Updated dependencies [5d77c09]
361
+ - Updated dependencies [3fd8625]
362
+ - Updated dependencies [1473757]
363
+ - Updated dependencies [d73d987]
364
+ - Updated dependencies [12ff256]
365
+ - Updated dependencies [35a2b59]
366
+ - Updated dependencies [26b0bd2]
367
+ - Updated dependencies [26b0bd2]
368
+ - Updated dependencies [d328698]
369
+ - Updated dependencies [d328698]
370
+ - Updated dependencies [d328698]
371
+ - Updated dependencies [b4e0787]
372
+ - Updated dependencies [53ee2f8]
373
+ - Updated dependencies [088e0f7]
374
+ - Updated dependencies [78b07f4]
375
+ - Updated dependencies [0df67f2]
376
+ - Updated dependencies [f962cdc]
377
+ - Updated dependencies [b403bb3]
378
+ - Updated dependencies [8a25fee]
379
+ - Updated dependencies [4016370]
380
+ - Updated dependencies [12dc7b4]
381
+ - @object-ui/types@18.0.0
382
+ - @object-ui/components@18.0.0
383
+ - @object-ui/core@18.0.0
384
+ - @object-ui/i18n@18.0.0
385
+ - @object-ui/react@18.0.0
386
+ - @object-ui/fields@18.0.0
387
+
3
388
  ## 17.7.0
4
389
 
5
390
  ### Minor Changes
package/README.md CHANGED
@@ -227,6 +227,14 @@ order, so ordering by the across dimension is what fixes the column order;
227
227
  declaring nothing still reads correctly, because a selected time dimension
228
228
  defaults to ascending.
229
229
 
230
+ With no `order`, a **select** dimension follows its field's declared option
231
+ order (table rows, matrix headers on both axes, the embedded chart's
232
+ categories): declared options first, values the options do not declare next in
233
+ the dataset's order, the empty bucket last. With several grouping dimensions the
234
+ outer one is laid out first and the inner one within each outer group; a
235
+ dimension whose field declares no options keeps the dataset's order. An
236
+ authored `order` keeps the server's order.
237
+
230
238
  ### Embedded chart
231
239
 
232
240
  `chart.type` is one of the spec's chart names; `xAxis` / `yAxis` are **bare
@@ -273,6 +281,13 @@ pre-aggregated rows it is handed and never re-aggregates bucketed values
273
281
  client-side, since measures like `avg` cannot be recombined without drifting
274
282
  from the semantic layer.
275
283
 
284
+ When the dataset query is refused because the viewer may not read the data
285
+ (`403` / `PERMISSION_DENIED`, as the shared `classifyLoadError` from
286
+ `@object-ui/react` reads it), the report shows a localized "You don't have
287
+ access" state instead of its table, the same title a dataset dashboard widget
288
+ shows, and never the server's message. Any other failure still shows the error
289
+ and its message.
290
+
276
291
  Drill-down is a **host callback, not a registered handler**: pass `onDrill` and
277
292
  every aggregated row / matrix cell becomes clickable. The report emits *what was
278
293
  clicked*; the host decides where that goes, because the renderer only knows
@@ -43,6 +43,17 @@
43
43
  * never a client-side re-sort: sorting here would order the truncated page
44
44
  * rather than the query, and could not sort by a derived measure at all.
45
45
  *
46
+ * Declaring NO `order` leaves the grid in the dataset's `GROUP BY` order — the
47
+ * stored values' alphabetical order — which for a select dimension is not the
48
+ * domain order. So, and only then, this renderer lays a select dimension's
49
+ * groups out in its field's DECLARED option order (objectui#12243, the reading
50
+ * objectui#11809 set for grid groups and dashboard charts): the table rows, the
51
+ * matrix headers on both axes and the embedded chart's categories. Declared
52
+ * options first, undeclared values next in the dataset's order, the empty
53
+ * bucket last; a dimension without options keeps its arrival order. It moves
54
+ * nothing the server ordered on the author's behalf (see
55
+ * `arrangeByDeclaredOptions`).
56
+ *
46
57
  * For a matrix that also decides the ACROSS axis: `colHeaders` are collected in
47
58
  * row-arrival order, so ordering the rows by the across dimension is what makes
48
59
  * the columns read left-to-right in that order. Declaring nothing still reads