@object-ui/plugin-dashboard 16.1.0 → 17.2.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 +441 -2
- package/dist/DashboardGridLayout.d.ts +4 -4
- package/dist/DashboardGridLayout.d.ts.map +1 -1
- package/dist/DashboardRenderer.d.ts +2 -2
- package/dist/DashboardRenderer.d.ts.map +1 -1
- package/dist/DashboardWithConfig.d.ts +2 -2
- package/dist/DashboardWithConfig.d.ts.map +1 -1
- package/dist/DatasetWidget.d.ts.map +1 -1
- package/dist/ObjectDataTable.d.ts.map +1 -1
- package/dist/ObjectMetricWidget.d.ts.map +1 -1
- package/dist/ObjectPivotTable.d.ts.map +1 -1
- package/dist/PivotTable.d.ts +10 -0
- package/dist/PivotTable.d.ts.map +1 -1
- package/dist/index.js +881 -802
- package/dist/index.umd.cjs +2 -2
- package/dist/utils.d.ts +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/widgetDispatch.d.ts +76 -0
- package/dist/widgetDispatch.d.ts.map +1 -0
- package/package.json +12 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,444 @@
|
|
|
1
1
|
# @object-ui/plugin-dashboard
|
|
2
2
|
|
|
3
|
+
## 17.2.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d9668a7: Honor the server's declared percent scale, so a ratio of exactly 1 renders as 100.0% (#3136)
|
|
8
|
+
|
|
9
|
+
A dataset measure declared `format: '0.0%'` rendered every ratio below 1
|
|
10
|
+
correctly and got the single most consequential one wrong: a rate of exactly
|
|
11
|
+
`1` printed as **`1.0%`**. On an SLA / pass-rate dashboard that turns
|
|
12
|
+
"everything met the SLA" into "1% met the SLA", on both surfaces the issue
|
|
13
|
+
names — the KPI card and the dataset-bound table (they share `formatMeasure`).
|
|
14
|
+
|
|
15
|
+
The cause was never a bad multiplier; it was a missing fact. `formatMeasure`
|
|
16
|
+
scaled by magnitude — `percentDisplayValue` multiplies by 100 only strictly
|
|
17
|
+
inside `(-1, 1)` — because the column arrived with a `%` format string and
|
|
18
|
+
nothing saying what scale its numbers were on. That guess is undecidable at
|
|
19
|
+
exactly 1, which is both a full-compliance ratio ("100%") and one percentage
|
|
20
|
+
point ("1%"), and it resolved to the reading almost nobody means.
|
|
21
|
+
|
|
22
|
+
The server now answers the question instead (framework: `percentScaleOf` +
|
|
23
|
+
`AnalyticsResult.fields[].percentScale`, the sibling of the ADR-0053 currency
|
|
24
|
+
chain): a `derived: { op: 'ratio' }` measure is a `fraction` by definition, and
|
|
25
|
+
a measure over a `percent` field inherits that field's scale. `formatMeasure`
|
|
26
|
+
takes the declared scale as a fourth argument and, when present, scales by it —
|
|
27
|
+
`fraction` ×100, `whole` verbatim — instead of inspecting the value. Every
|
|
28
|
+
dataset-bound call site passes the column's `percentScale`: the dashboard
|
|
29
|
+
metric/table/pivot cells, the report renderer's cells, totals and KPI, and the
|
|
30
|
+
dataset preview.
|
|
31
|
+
|
|
32
|
+
`percentDisplayValue` is untouched and still the fallback for a column that
|
|
33
|
+
arrives without the annotation (an older server, or a non-dataset percent cell
|
|
34
|
+
in a list view), so nothing that renders correctly today changes.
|
|
35
|
+
|
|
36
|
+
- 022e4c3: Upgrade to `@objectstack/spec@17.0.0-rc.1`, stop offering the retired `wait` timeout fields (#3101), and route the newly-adopted `combo` chart type.
|
|
37
|
+
|
|
38
|
+
**Breaking for authoring, and the reason to do it now**: the `wait` panel no longer offers
|
|
39
|
+
`waitEventConfig.timeoutMs` or `.onTimeout`. Both are `retiredKey()` tombstones as of spec
|
|
40
|
+
17.0.0-rc.1 (framework#4158), which means a value written there is **rejected at load** —
|
|
41
|
+
so until this lands, Studio can produce flow metadata the author's own runtime refuses.
|
|
42
|
+
That hazard opened the moment rc.1 published, independent of when this repo bumps.
|
|
43
|
+
|
|
44
|
+
`wait` never had a timeout: `onTimeout` had zero readers, so neither `'fail'` nor
|
|
45
|
+
`'continue'` ever happened, and `timeoutMs`'s only reader used it as the timer **duration**
|
|
46
|
+
when `timerDuration` was absent. Use **Duration** — it accepts a bare number as
|
|
47
|
+
milliseconds, making the old `timeoutMs: 60000` and `timerDuration: '60000'` the same wait.
|
|
48
|
+
Stored flows are converted by framework's D2 conversion; the designer simply stops offering
|
|
49
|
+
the entry. The two `zh` label overrides go with the fields.
|
|
50
|
+
|
|
51
|
+
#3101 asked for this to ride along with the bump rather than land alone, and that is
|
|
52
|
+
load-bearing: the sibling-block assertion is **bidirectional**, so deleting the fields
|
|
53
|
+
against a spec that still declares them fails in the other direction.
|
|
54
|
+
|
|
55
|
+
**`combo` is now a spec chart type** — the sole addition to `ChartTypeSchema` in rc.1 (19
|
|
56
|
+
members → 20). It had been a renderer-local family the chart renderer derived from the
|
|
57
|
+
series, so nothing classified it on the two surfaces that route a _spec_ chart type: a
|
|
58
|
+
spec-valid `combo` fell through to the red "Unknown component type" panel on a dashboard
|
|
59
|
+
and to the out-of-spec notice on a report. Both now route it
|
|
60
|
+
(`widgetDispatch.SERIES_CHART_TYPES`, `planReportChart`). The renderer-local derivation
|
|
61
|
+
stays — it is what makes an authored `type: 'combo'` render rather than merely validate.
|
|
62
|
+
|
|
63
|
+
**Retired spec exports this repo bound to**, all removed upstream in spec 17.0.0:
|
|
64
|
+
|
|
65
|
+
- `JoinStrategy` / `WindowFunction` (framework#4286 tombstoned `query.joins` and
|
|
66
|
+
`query.windowFunctions`: no engine or driver ever read either on the query path). They
|
|
67
|
+
were derived off the spec enums under objectstack#4115's "come off the spec enum, not a
|
|
68
|
+
restatement" rule; with no enum left, `data-protocol.ts` now restates the members locally
|
|
69
|
+
— verbatim from the last spec that published them — as the objectui query-AST vocabulary
|
|
70
|
+
they have become. The AST itself is unchanged.
|
|
71
|
+
- `PerformanceConfig`, retired with `dashboard.performance` (framework#3896). Nothing bound
|
|
72
|
+
to it — `@object-ui/react`'s `usePerformance` declares its own interface and is untouched.
|
|
73
|
+
The dashboard form is derived from the spec's own `dashboardForm`, so the field
|
|
74
|
+
disappears from the inspector for free; its test now pins the absence.
|
|
75
|
+
|
|
76
|
+
**Three inverted pins fired, and are recorded rather than resolved.** objectstack#4171's
|
|
77
|
+
tripwires asserted that `NavigationItem`, `FormField` and `ConditionalValidation`'s branches
|
|
78
|
+
still erased to `any`/`unknown` upstream — the premise that justified objectui keeping local
|
|
79
|
+
declarations. rc.1 types them properly, so the assertions are inverted to state the new
|
|
80
|
+
fact. The burn-down each one asks for — deriving those types from the spec — touches
|
|
81
|
+
widely-used public types and is deliberately **not** bundled into a version bump; it is
|
|
82
|
+
tracked in #3177. `JoinNode`'s pin is gone outright: the symbol no longer exists.
|
|
83
|
+
|
|
84
|
+
**What the bump arms.** The reconciliation ledger's `subflow` and `decision` panels
|
|
85
|
+
feature-detect their spec exports and had never actually run — rc.0 predates the exports
|
|
86
|
+
(framework#4278). They now execute and pass. The `script` panel's full bidirectional check
|
|
87
|
+
stays deliberately skipped: rc.1 predates framework#4343, so the retired dispatch branches
|
|
88
|
+
are still contract keys there, and only the "offers nothing the executor ignores" direction
|
|
89
|
+
is meaningful. It arms itself on the next rc.
|
|
90
|
+
|
|
91
|
+
- Updated dependencies [4ae0ac4]
|
|
92
|
+
- Updated dependencies [696e3c1]
|
|
93
|
+
- Updated dependencies [bca45cc]
|
|
94
|
+
- Updated dependencies [a889e31]
|
|
95
|
+
- Updated dependencies [09d30a4]
|
|
96
|
+
- Updated dependencies [4bf612c]
|
|
97
|
+
- Updated dependencies [335041c]
|
|
98
|
+
- Updated dependencies [b414983]
|
|
99
|
+
- Updated dependencies [256f8cc]
|
|
100
|
+
- Updated dependencies [d9668a7]
|
|
101
|
+
- Updated dependencies [4b470b9]
|
|
102
|
+
- Updated dependencies [785b8a5]
|
|
103
|
+
- Updated dependencies [cb82705]
|
|
104
|
+
- Updated dependencies [f572849]
|
|
105
|
+
- Updated dependencies [4a51e77]
|
|
106
|
+
- Updated dependencies [f6e8d78]
|
|
107
|
+
- Updated dependencies [ea96284]
|
|
108
|
+
- Updated dependencies [d3584c6]
|
|
109
|
+
- Updated dependencies [a8ad6c0]
|
|
110
|
+
- Updated dependencies [444457c]
|
|
111
|
+
- Updated dependencies [850033c]
|
|
112
|
+
- Updated dependencies [022e4c3]
|
|
113
|
+
- Updated dependencies [009e25d]
|
|
114
|
+
- Updated dependencies [726b89c]
|
|
115
|
+
- @object-ui/types@17.2.0
|
|
116
|
+
- @object-ui/components@17.2.0
|
|
117
|
+
- @object-ui/core@17.2.0
|
|
118
|
+
- @object-ui/react@17.2.0
|
|
119
|
+
- @object-ui/i18n@17.2.0
|
|
120
|
+
- @object-ui/fields@17.2.0
|
|
121
|
+
|
|
122
|
+
## 17.1.0
|
|
123
|
+
|
|
124
|
+
### Patch Changes
|
|
125
|
+
|
|
126
|
+
- Updated dependencies [62311b6]
|
|
127
|
+
- Updated dependencies [fc0272a]
|
|
128
|
+
- Updated dependencies [9e7349e]
|
|
129
|
+
- Updated dependencies [8864971]
|
|
130
|
+
- Updated dependencies [1cf0de7]
|
|
131
|
+
- Updated dependencies [752e18f]
|
|
132
|
+
- Updated dependencies [c785740]
|
|
133
|
+
- Updated dependencies [b41f401]
|
|
134
|
+
- Updated dependencies [19e9fa0]
|
|
135
|
+
- Updated dependencies [d61efd1]
|
|
136
|
+
- Updated dependencies [95b7214]
|
|
137
|
+
- Updated dependencies [7d9734d]
|
|
138
|
+
- Updated dependencies [6ae818e]
|
|
139
|
+
- Updated dependencies [9eb932b]
|
|
140
|
+
- Updated dependencies [746dd00]
|
|
141
|
+
- Updated dependencies [aebfa4f]
|
|
142
|
+
- Updated dependencies [38ca8be]
|
|
143
|
+
- Updated dependencies [3cb9646]
|
|
144
|
+
- Updated dependencies [68ef584]
|
|
145
|
+
- Updated dependencies [4952edf]
|
|
146
|
+
- Updated dependencies [7f0252e]
|
|
147
|
+
- Updated dependencies [c4d7b20]
|
|
148
|
+
- Updated dependencies [c769d3d]
|
|
149
|
+
- Updated dependencies [7639a61]
|
|
150
|
+
- Updated dependencies [94e63ef]
|
|
151
|
+
- Updated dependencies [c735bf7]
|
|
152
|
+
- Updated dependencies [02aef0c]
|
|
153
|
+
- Updated dependencies [6f29aa5]
|
|
154
|
+
- Updated dependencies [d21794c]
|
|
155
|
+
- Updated dependencies [c4db402]
|
|
156
|
+
- Updated dependencies [5319bf1]
|
|
157
|
+
- Updated dependencies [49e5671]
|
|
158
|
+
- Updated dependencies [9a04d25]
|
|
159
|
+
- Updated dependencies [b5b97e2]
|
|
160
|
+
- Updated dependencies [f59f2c1]
|
|
161
|
+
- Updated dependencies [07de839]
|
|
162
|
+
- Updated dependencies [2a40b5e]
|
|
163
|
+
- Updated dependencies [df613fa]
|
|
164
|
+
- Updated dependencies [4874117]
|
|
165
|
+
- Updated dependencies [ad0183a]
|
|
166
|
+
- Updated dependencies [ce08d55]
|
|
167
|
+
- Updated dependencies [eb4b740]
|
|
168
|
+
- Updated dependencies [aecc934]
|
|
169
|
+
- Updated dependencies [5b084eb]
|
|
170
|
+
- Updated dependencies [aa1240a]
|
|
171
|
+
- Updated dependencies [2374a49]
|
|
172
|
+
- Updated dependencies [390c071]
|
|
173
|
+
- Updated dependencies [d10f526]
|
|
174
|
+
- Updated dependencies [2d5d594]
|
|
175
|
+
- Updated dependencies [ea7f477]
|
|
176
|
+
- Updated dependencies [379728f]
|
|
177
|
+
- Updated dependencies [7f23cd0]
|
|
178
|
+
- Updated dependencies [0ded602]
|
|
179
|
+
- Updated dependencies [24e0e0a]
|
|
180
|
+
- Updated dependencies [f8a95e5]
|
|
181
|
+
- Updated dependencies [3a6cf24]
|
|
182
|
+
- Updated dependencies [aa35561]
|
|
183
|
+
- Updated dependencies [03bd53b]
|
|
184
|
+
- Updated dependencies [3c1f321]
|
|
185
|
+
- Updated dependencies [a045a32]
|
|
186
|
+
- Updated dependencies [912496d]
|
|
187
|
+
- Updated dependencies [80edbd4]
|
|
188
|
+
- Updated dependencies [9867281]
|
|
189
|
+
- @object-ui/core@17.1.0
|
|
190
|
+
- @object-ui/components@17.1.0
|
|
191
|
+
- @object-ui/react@17.1.0
|
|
192
|
+
- @object-ui/types@17.1.0
|
|
193
|
+
- @object-ui/i18n@17.1.0
|
|
194
|
+
- @object-ui/fields@17.1.0
|
|
195
|
+
|
|
196
|
+
## 17.0.0
|
|
197
|
+
|
|
198
|
+
### Patch Changes
|
|
199
|
+
|
|
200
|
+
- 7b35e4b: fix(dashboard,charts): resolve `{current_user_id}` in widget filters (framework #3574)
|
|
201
|
+
|
|
202
|
+
A dashboard widget filtered on `{current_user_id}` rendered `0`. The token
|
|
203
|
+
reached SQL as a literal, matched no row, and nothing was logged on the client
|
|
204
|
+
or the server — a silent zero that reads as "you have no work" rather than
|
|
205
|
+
"this filter did not resolve". The same token in a list-view filter resolved
|
|
206
|
+
correctly, so a user-scoped list and a user-scoped widget over the same data
|
|
207
|
+
disagreed.
|
|
208
|
+
|
|
209
|
+
There was no shared resolver. Three ad-hoc implementations had grown up
|
|
210
|
+
independently — `ObjectView` for list views, `ObjectDataPage` for URL filter
|
|
211
|
+
triples, `NavigationRenderer` for hrefs — and each understood only the filter
|
|
212
|
+
shape its own surface used. `ObjectView`'s opened with
|
|
213
|
+
`if (!Array.isArray(filter)) return filter`, so it could not have been reused
|
|
214
|
+
by dashboard widgets even in principle: widget filters are MongoDB-style
|
|
215
|
+
objects. Widgets therefore got no resolution at all — `DatasetWidget` called
|
|
216
|
+
`resolveDateMacros` and nothing else, which is why `{today}` worked in a widget
|
|
217
|
+
and `{current_user_id}` silently did not.
|
|
218
|
+
|
|
219
|
+
- **`@object-ui/core`** — new `utils/filter-tokens.ts` with
|
|
220
|
+
`resolveContextTokens` and `resolveFilterPlaceholders`. The latter expands
|
|
221
|
+
_every_ placeholder vocabulary in one call and is what surfaces should use;
|
|
222
|
+
resolving only some of them is the whole defect. The walk handles arrays and
|
|
223
|
+
plain objects uniformly, so one resolver covers both platform filter shapes.
|
|
224
|
+
- **`@object-ui/react`** — new `FilterScopeProvider` / `useFilterScope`. The
|
|
225
|
+
renderer packages deliberately do not depend on `@object-ui/auth`, so the
|
|
226
|
+
shell supplies the session values. This is a separate context from
|
|
227
|
+
`PredicateScopeContext`, which is the expression evaluation scope and carries
|
|
228
|
+
no organization.
|
|
229
|
+
- **`@object-ui/plugin-dashboard` / `@object-ui/plugin-charts`** — all six
|
|
230
|
+
widgets that previously resolved date macros only now resolve both
|
|
231
|
+
vocabularies: `DatasetWidget`, `ObjectMetricWidget`, `ObjectDataTable`,
|
|
232
|
+
`ObjectPivotTable`, and `ObjectChart` (dataset-bound and inline paths). The
|
|
233
|
+
chart's `compareTo` comparison filter gets the session pass too — otherwise
|
|
234
|
+
the overlay series silently ignored the owner clause the primary series
|
|
235
|
+
honoured.
|
|
236
|
+
- **`@object-ui/app-shell`** — `ObjectView`'s local `substituteFilterTokens`
|
|
237
|
+
and `ObjectDataPage`'s inline `=== '{current_user_id}'` ternary now delegate
|
|
238
|
+
to the shared resolver, so both also gain `{current_org_id}` and date macros.
|
|
239
|
+
Two of the three ad-hoc implementations are gone rather than joined by a
|
|
240
|
+
fourth.
|
|
241
|
+
|
|
242
|
+
An unresolvable token is left intact rather than dropped: leaving it yields an
|
|
243
|
+
empty result, whereas dropping the clause would _widen_ the result set and show
|
|
244
|
+
a signed-out viewer everyone's data. It is no longer silent — the resolver
|
|
245
|
+
warns, naming the token, and suggests the intended spelling for known
|
|
246
|
+
near-misses (`{current_user}`, `{user_id}`, `{organization_id}`). Authoring-time
|
|
247
|
+
enforcement lands separately as `filter-token-unknown` in `@objectstack/lint`.
|
|
248
|
+
|
|
249
|
+
- e16ed2d: fix(dashboard,charts): send widget `dateGranularity`/`sortBy`/`limit` to the query, and give funnels a real stage order (framework#3588)
|
|
250
|
+
|
|
251
|
+
`DatasetWidget` never read `widget.options`. Four keys an author writes there
|
|
252
|
+
change the query the server compiles, so a widget declaring
|
|
253
|
+
`options: { dateGranularity: 'month' }` grouped by the raw timestamp and drew
|
|
254
|
+
one bar per record, and `sortBy`/`sortOrder` produced no ordering at all.
|
|
255
|
+
|
|
256
|
+
- `DatasetWidget` lowers `options.dateGranularity`, `options.sortBy` +
|
|
257
|
+
`options.sortOrder`, and `options.limit` into the `DatasetSelection` it posts.
|
|
258
|
+
A `sortBy` naming something the widget does not project is dropped rather than
|
|
259
|
+
sent, so a stale sort key left by an edit degrades to "unordered" instead of
|
|
260
|
+
failing the widget against the server's stricter validation. These keys also
|
|
261
|
+
join the refetch signature, so editing one in the designer refetches instead
|
|
262
|
+
of re-rendering the previous grid.
|
|
263
|
+
- Funnel stages follow a **declared order**. `AdvancedChartImpl` sorted funnel
|
|
264
|
+
segments by value descending, unconditionally — which overrode any server
|
|
265
|
+
ordering and rendered a sales pipeline as a tidy narrowing shape whatever the
|
|
266
|
+
stages' real sequence, hiding the very anomaly (a bulge at Proposal) the chart
|
|
267
|
+
exists to show. It now honours a `categoryOrder`, which `DatasetWidget`
|
|
268
|
+
derives from the dimension field's picklist option order — the pipeline order
|
|
269
|
+
an author already declared on the object — or from an explicit
|
|
270
|
+
`options.stageOrder`. With no declared order the value-descending default is
|
|
271
|
+
unchanged, and a category missing from the order is kept (after the declared
|
|
272
|
+
ones), never dropped.
|
|
273
|
+
- New `@object-ui/core` helpers `buildCategoryOrder` / `buildCategoryRank`,
|
|
274
|
+
keyed by both the stored value and the display label like the existing
|
|
275
|
+
`buildOptionColorMap`, so ordering works whether or not the server resolved
|
|
276
|
+
the dimension's labels.
|
|
277
|
+
|
|
278
|
+
Requires the framework-side fix in objectstack#3588 for the selection keys to
|
|
279
|
+
take effect server-side.
|
|
280
|
+
|
|
281
|
+
- 2cb8d78: fix(console): dispatch flow actions from every surface, and cover the screen-flow round trip (framework#3528)
|
|
282
|
+
|
|
283
|
+
The resume half of screen flows is fixed; these are the two launch-side holes
|
|
284
|
+
found while mapping every path that dispatches a `type: 'flow'` action — on
|
|
285
|
+
both, a screen flow could not even be started.
|
|
286
|
+
|
|
287
|
+
- **plugin-dashboard** — a dashboard header action only dispatched when its type
|
|
288
|
+
was `modal` or `script`. `flow` (and `api` / `form` / `navigation`) fell
|
|
289
|
+
through to `console.warn("Unknown header actionType")` and did nothing at all.
|
|
290
|
+
The click handler now routes everything that is not a raw `url` navigation
|
|
291
|
+
through the ActionRunner, which owns the type registry; there is nothing for
|
|
292
|
+
the renderer to second-guess.
|
|
293
|
+
- **app-shell** — the console-root `<ActionProvider>` was mounted with no
|
|
294
|
+
`handlers` map. It exists to give every field widget a modal handler, but an
|
|
295
|
+
`ActionProvider` also decides what a `useAction()` consumer _below_ it can
|
|
296
|
+
dispatch, so any `action:button` outside ObjectView / RecordDetailView /
|
|
297
|
+
PageView / DeclaredActionsBar bound to a runner that could only open modals:
|
|
298
|
+
a `flow` action there failed with "Flow handler not registered", and `api` /
|
|
299
|
+
`script` were equally dead. The root now carries the shared console runtime's
|
|
300
|
+
api / flow / script handlers plus its confirm / param / result / screen-flow
|
|
301
|
+
dialogs. `modal` deliberately stays on the client-side `useActionModal`
|
|
302
|
+
handler — registering it in `handlers` would take precedence over `onModal`
|
|
303
|
+
and reroute the inline-create affordance to `/api/v1/actions/...`.
|
|
304
|
+
|
|
305
|
+
Both changes ship with regression tests that were verified to fail without them.
|
|
306
|
+
Also adds the first coverage of the screen-flow seam itself, which had none:
|
|
307
|
+
|
|
308
|
+
- `FlowRunner.suspense.test.tsx` — a lazily-loaded screen body must not unwind
|
|
309
|
+
past the dialog. Reproduces the real shape (lazy body, route-level boundary
|
|
310
|
+
above the host, host state that must survive) and fails against the
|
|
311
|
+
pre-boundary runner, which is how a paused run's screen used to vanish before
|
|
312
|
+
it could be submitted.
|
|
313
|
+
- `e2e/live/screen-flow.spec.ts` — the live round trip: a row flow action
|
|
314
|
+
triggers the run, the paused screen renders, Submit POSTs to
|
|
315
|
+
`/automation/{flow}/runs/{runId}/resume` with the collected values, and the
|
|
316
|
+
flow's downstream `update_record` shows up in the list. The unit tests stub
|
|
317
|
+
the runner out of the action runtime and the runner's own tests feed it a
|
|
318
|
+
screen directly, so trigger → dialog → resume → refresh was previously only
|
|
319
|
+
ever exercised by hand.
|
|
320
|
+
|
|
321
|
+
- 341bfb5: fix: read spec-canonical keys for dashboard header title and field length rules
|
|
322
|
+
|
|
323
|
+
Two naming-drift closeouts (framework#1878 / framework#1891):
|
|
324
|
+
|
|
325
|
+
- `DashboardRenderer` header now falls back to the spec-canonical `label` when
|
|
326
|
+
the legacy `title` is absent (mirrors the `DashboardGridLayout` fallback from
|
|
327
|
+
#2666) — a spec-compliant dashboard gets its header title.
|
|
328
|
+
- Field validation rules now read the spec-canonical camelCase
|
|
329
|
+
`minLength`/`maxLength` (what the server record-validator enforces) with the
|
|
330
|
+
legacy snake_case `min_length`/`max_length` kept as fallback — authored
|
|
331
|
+
length constraints reach the client form.
|
|
332
|
+
|
|
333
|
+
- 5b9cf96: fix(plugin-map): drop the `maplibre-gl@6` default import, and put type-check behind a CI gate that cannot be silently skipped (#2911)
|
|
334
|
+
|
|
335
|
+
`maplibre-gl@6.0.0` removed its default export (arrived via #2848, dependabot),
|
|
336
|
+
so `ObjectMap.tsx`'s `import maplibregl from 'maplibre-gl'` has been a TS1192
|
|
337
|
+
error on `main` for a day. The binding was never used — the map instance comes
|
|
338
|
+
from `react-map-gl/maplibre`, and the stylesheet from the side-effect import on
|
|
339
|
+
the next line — so the import is simply deleted rather than rewritten to
|
|
340
|
+
`import * as`.
|
|
341
|
+
|
|
342
|
+
Removing it is runtime-neutral, which the issue had explicitly left unverified.
|
|
343
|
+
`@vis.gl/react-maplibre` (what `react-map-gl/maplibre` re-exports) does
|
|
344
|
+
`Promise.resolve(mapLib || import('maplibre-gl'))` in `components/map.js`, so it
|
|
345
|
+
loads the library itself when no `mapLib` prop is passed. Verified in a browser
|
|
346
|
+
against the `store-locator-map` catalog schema: `maplibre-gl` is fetched as its
|
|
347
|
+
own lazy chunk, the WebGL canvas comes up 800x600, and all three markers mount —
|
|
348
|
+
byte-identical probe output with and without the static import. That also matches
|
|
349
|
+
what `apps/console/src/main.tsx` already intends, where the plugin is registered
|
|
350
|
+
lazily specifically to keep `maplibre-gl` out of the initial bundle.
|
|
351
|
+
|
|
352
|
+
**The reason it survived a day of green CI is the part worth fixing.** No
|
|
353
|
+
workflow ran `type-check` at all, and `turbo build` only checks types for
|
|
354
|
+
packages whose `build` script happens to invoke `tsc` — the 22 `vite build`
|
|
355
|
+
packages transpile without checking. A sweep of all 45 packages found ten with
|
|
356
|
+
broken types, `plugin-map` merely being the one that had a script to notice it.
|
|
357
|
+
|
|
358
|
+
Adding a `pnpm type-check` job alone would not have been a gate: **turbo silently
|
|
359
|
+
skips any package with no `type-check` script**, so 17 packages read as passing
|
|
360
|
+
because nothing ran. With `plugin-map` fixed, `pnpm type-check` reports 63/63
|
|
361
|
+
green while nine packages are still broken. So:
|
|
362
|
+
|
|
363
|
+
- `plugin-ai` and `plugin-report` gain the `paths` override their type-checked
|
|
364
|
+
peers already carry, which detaches workspace deps from sibling _source_ and
|
|
365
|
+
resolves them through built `.d.ts` — the sole cause of the 104-error TS6059
|
|
366
|
+
`rootDir` floods, and the same trick their own `vite.config.ts` already applies
|
|
367
|
+
to the dts program.
|
|
368
|
+
- Seven packages gain `"type-check": "tsc --noEmit"` (`plugin-ai`,
|
|
369
|
+
`plugin-report`, `plugin-dashboard`, `create-plugin`, `console`, and the two
|
|
370
|
+
console examples). Coverage goes 28 -> 35 of 45.
|
|
371
|
+
- New `scripts/check-type-check-coverage.mjs` makes the invisibility impossible:
|
|
372
|
+
a package with no `type-check` script must be declared, with a reason, and the
|
|
373
|
+
lists only shrink — gaining a script without deleting the entry fails the
|
|
374
|
+
guard. The nine known-broken packages are recorded there with error counts
|
|
375
|
+
(`@object-ui/runner` has no `tsconfig.json` at all), tracked as follow-ups.
|
|
376
|
+
- New `Type Check` CI job runs the coverage guard first (instant, no install),
|
|
377
|
+
then `pnpm type-check`.
|
|
378
|
+
|
|
379
|
+
Both halves were proven to fail before being trusted: the guard was exercised in
|
|
380
|
+
all four of its failure modes, and re-introducing the `maplibre-gl` import turns
|
|
381
|
+
the job red again, as does a fresh error injected into `plugin-ai` — a package
|
|
382
|
+
that had no type checking whatsoever before this change.
|
|
383
|
+
|
|
384
|
+
- Updated dependencies [7b21891]
|
|
385
|
+
- Updated dependencies [0b3be01]
|
|
386
|
+
- Updated dependencies [3c4d935]
|
|
387
|
+
- Updated dependencies [4b1ed7d]
|
|
388
|
+
- Updated dependencies [4b60d2d]
|
|
389
|
+
- Updated dependencies [952b978]
|
|
390
|
+
- Updated dependencies [de5e40c]
|
|
391
|
+
- Updated dependencies [1a03af6]
|
|
392
|
+
- Updated dependencies [3e886eb]
|
|
393
|
+
- Updated dependencies [cfc675e]
|
|
394
|
+
- Updated dependencies [20df08c]
|
|
395
|
+
- Updated dependencies [1767124]
|
|
396
|
+
- Updated dependencies [8ecf5a6]
|
|
397
|
+
- Updated dependencies [af705b9]
|
|
398
|
+
- Updated dependencies [0502a7c]
|
|
399
|
+
- Updated dependencies [7b35e4b]
|
|
400
|
+
- Updated dependencies [8fb1295]
|
|
401
|
+
- Updated dependencies [e16ed2d]
|
|
402
|
+
- Updated dependencies [c6fd752]
|
|
403
|
+
- Updated dependencies [f9bbddb]
|
|
404
|
+
- Updated dependencies [dfd3705]
|
|
405
|
+
- Updated dependencies [c77108c]
|
|
406
|
+
- Updated dependencies [2735de6]
|
|
407
|
+
- Updated dependencies [697cda4]
|
|
408
|
+
- Updated dependencies [c19ac11]
|
|
409
|
+
- Updated dependencies [6dee2cb]
|
|
410
|
+
- Updated dependencies [e05f052]
|
|
411
|
+
- Updated dependencies [0502a7c]
|
|
412
|
+
- Updated dependencies [faad45e]
|
|
413
|
+
- Updated dependencies [09c6a17]
|
|
414
|
+
- Updated dependencies [c7cff19]
|
|
415
|
+
- Updated dependencies [ba73a02]
|
|
416
|
+
- Updated dependencies [cd09a7b]
|
|
417
|
+
- Updated dependencies [f1abf0e]
|
|
418
|
+
- Updated dependencies [f05b84e]
|
|
419
|
+
- Updated dependencies [9b4b952]
|
|
420
|
+
- Updated dependencies [341bfb5]
|
|
421
|
+
- Updated dependencies [2f947e4]
|
|
422
|
+
- Updated dependencies [7d46648]
|
|
423
|
+
- Updated dependencies [9b53d72]
|
|
424
|
+
- Updated dependencies [bb4aa25]
|
|
425
|
+
- Updated dependencies [75f1cdf]
|
|
426
|
+
- Updated dependencies [662bdf9]
|
|
427
|
+
- Updated dependencies [059a052]
|
|
428
|
+
- Updated dependencies [53642d4]
|
|
429
|
+
- Updated dependencies [8aae006]
|
|
430
|
+
- Updated dependencies [c6cfdf1]
|
|
431
|
+
- Updated dependencies [d147a13]
|
|
432
|
+
- Updated dependencies [c6aaed8]
|
|
433
|
+
- Updated dependencies [263f885]
|
|
434
|
+
- Updated dependencies [dc334da]
|
|
435
|
+
- @object-ui/components@17.0.0
|
|
436
|
+
- @object-ui/i18n@17.0.0
|
|
437
|
+
- @object-ui/fields@17.0.0
|
|
438
|
+
- @object-ui/react@17.0.0
|
|
439
|
+
- @object-ui/types@17.0.0
|
|
440
|
+
- @object-ui/core@17.0.0
|
|
441
|
+
|
|
3
442
|
## 16.1.0
|
|
4
443
|
|
|
5
444
|
### Minor Changes
|
|
@@ -69,7 +508,7 @@
|
|
|
69
508
|
and removes both bounds together. A new `drillUrlFilters` module owns the
|
|
70
509
|
write/read serialization so both sides can't drift (round-trip tested).
|
|
71
510
|
|
|
72
|
-
Companion to the framework analytics change (objectstack-ai/
|
|
511
|
+
Companion to the framework analytics change (objectstack-ai/objectstack#3256).
|
|
73
512
|
|
|
74
513
|
- 199fa83: feat(dashboard): retire the pre-ADR-0021 inline-analytics renderer branches (framework#3320)
|
|
75
514
|
|
|
@@ -541,7 +980,7 @@
|
|
|
541
980
|
- A dataset-bound `metric` widget takes the shared Card wrapper (title + border)
|
|
542
981
|
like kpi/gauge, instead of rendering as bare untitled text.
|
|
543
982
|
|
|
544
|
-
Requires `AnalyticsResult.fields[].label`/`format` (objectstack-ai/
|
|
983
|
+
Requires `AnalyticsResult.fields[].label`/`format` (objectstack-ai/objectstack#1683).
|
|
545
984
|
|
|
546
985
|
- 92449ef: Dataset-bound dashboard widgets now render their TRUE chart family instead of
|
|
547
986
|
always a bar chart.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LayoutItem as RGLLayout } from 'react-grid-layout';
|
|
2
|
-
import {
|
|
2
|
+
import { DashboardComponentSchema } from '@object-ui/types';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
export interface DashboardGridLayoutProps {
|
|
5
|
-
schema:
|
|
5
|
+
schema: DashboardComponentSchema;
|
|
6
6
|
className?: string;
|
|
7
7
|
/**
|
|
8
8
|
* Fires on every drag/resize tick with the raw react-grid-layout payload.
|
|
@@ -19,11 +19,11 @@ export interface DashboardGridLayoutProps {
|
|
|
19
19
|
* persist to localStorage or anywhere else (per Rule #1 Protocol Agnostic:
|
|
20
20
|
* persistence is the parent's responsibility, not the renderer's).
|
|
21
21
|
*/
|
|
22
|
-
onSchemaChange?: (schema:
|
|
22
|
+
onSchemaChange?: (schema: DashboardComponentSchema) => void;
|
|
23
23
|
/** Callback invoked when dashboard refresh is triggered (manual or auto) */
|
|
24
24
|
onRefresh?: () => void;
|
|
25
25
|
}
|
|
26
26
|
/** Merge react-grid-layout coordinates back into a DashboardSchema's widgets. */
|
|
27
|
-
export declare function mergeLayoutIntoSchema(schema:
|
|
27
|
+
export declare function mergeLayoutIntoSchema(schema: DashboardComponentSchema, layout: RGLLayout[]): DashboardComponentSchema;
|
|
28
28
|
export declare const DashboardGridLayout: React.FC<DashboardGridLayoutProps>;
|
|
29
29
|
//# sourceMappingURL=DashboardGridLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardGridLayout.d.ts","sourceRoot":"","sources":["../src/DashboardGridLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA2C,KAAK,UAAU,IAAI,SAAS,EAAuC,MAAM,mBAAmB,CAAC;AAC/I,OAAO,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DashboardGridLayout.d.ts","sourceRoot":"","sources":["../src/DashboardGridLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA2C,KAAK,UAAU,IAAI,SAAS,EAAuC,MAAM,mBAAmB,CAAC;AAC/I,OAAO,kCAAkC,CAAC;AAI1C,OAAO,KAAK,EAAE,wBAAwB,EAAyB,MAAM,kBAAkB,CAAC;AA4BxF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC/C;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC5D,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,wBAAwB,EAChC,MAAM,EAAE,SAAS,EAAE,GAClB,wBAAwB,CAa1B;AAcD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA6UlE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DashboardComponentSchema, DashboardWidgetSchema } from '@object-ui/types';
|
|
2
2
|
import { ActionDef, ActionResult, ActionContext, ModalHandler } from '@object-ui/core';
|
|
3
3
|
export interface DashboardRendererProps {
|
|
4
|
-
schema:
|
|
4
|
+
schema: DashboardComponentSchema;
|
|
5
5
|
className?: string;
|
|
6
6
|
/** Callback invoked when dashboard refresh is triggered (manual or auto) */
|
|
7
7
|
onRefresh?: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardRenderer.d.ts","sourceRoot":"","sources":["../src/DashboardRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DashboardRenderer.d.ts","sourceRoot":"","sources":["../src/DashboardRenderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAGxF,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAsJ5F,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,wBAAwB,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iCAAiC;IACjC,WAAW,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,kEAAkE;IAClE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,uDAAuD;IACvD,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,IAAI,CAAC;IAC9D,mGAAmG;IACnG,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,wGAAwG;IACxG,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,CAAC;IACrH;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAyuBD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,gIAiB7B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DashboardComponentSchema } from '@object-ui/types';
|
|
2
2
|
import { WidgetDatasetCatalogEntry } from './dataset-catalog';
|
|
3
3
|
/**
|
|
4
4
|
* ObjectUI
|
|
@@ -10,7 +10,7 @@ import { WidgetDatasetCatalogEntry } from './dataset-catalog';
|
|
|
10
10
|
import * as React from 'react';
|
|
11
11
|
export interface DashboardWithConfigProps {
|
|
12
12
|
/** Dashboard schema for rendering */
|
|
13
|
-
schema:
|
|
13
|
+
schema: DashboardComponentSchema;
|
|
14
14
|
/** Current dashboard configuration (for the config panel) */
|
|
15
15
|
config: Record<string, any>;
|
|
16
16
|
/** Called when config panel saves dashboard-level changes */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardWithConfig.d.ts","sourceRoot":"","sources":["../src/DashboardWithConfig.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"DashboardWithConfig.d.ts","sourceRoot":"","sources":["../src/DashboardWithConfig.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,wBAAwB,EAAyB,MAAM,kBAAkB,CAAC;AAKxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAMnE,MAAM,WAAW,wBAAwB;IACvC,qCAAqC;IACrC,MAAM,EAAE,wBAAwB,CAAC;IACjC,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,6DAA6D;IAC7D,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACpD,iEAAiE;IACjE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;IACvE,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACvC,oDAAoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,WAAW,EACX,iBAAyB,EACzB,SAAS,EACT,QAAQ,EACR,eAAe,GAChB,EAAE,wBAAwB,qBAyJ1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatasetWidget.d.ts","sourceRoot":"","sources":["../src/DatasetWidget.tsx"],"names":[],"mappings":"AA8BA,OAAO,
|
|
1
|
+
{"version":3,"file":"DatasetWidget.d.ts","sourceRoot":"","sources":["../src/DatasetWidget.tsx"],"names":[],"mappings":"AA8BA,OAAO,EAUL,uBAAuB,EAGxB,MAAM,iBAAiB,CAAC;AAezB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,gCAA0B,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACpC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,GACb;IACD,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpD,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,CAcA;AASD,8DAA8D;AAC9D,wBAAgB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,MAAM,CAEpF;AAmDD,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,+BAgezF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectDataTable.d.ts","sourceRoot":"","sources":["../src/ObjectDataTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAerF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAiB9F;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,YAAY,EAAE,GAAG,GAChB,MAAM,EAAE,CAgCV;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ObjectDataTable.d.ts","sourceRoot":"","sources":["../src/ObjectDataTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAerF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;QAChB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6EAA6E;AAC7E,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,gBAAgB,EAAE,CAiB9F;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAChD,YAAY,EAAE,GAAG,GAChB,MAAM,EAAE,CAgCV;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAwT1D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectMetricWidget.d.ts","sourceRoot":"","sources":["../src/ObjectMetricWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,iBAAiB;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;IACF,6BAA6B;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,+CAA+C;IAC/C,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kDAAkD;IAClD,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpG,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iEAAiE;IACjE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"ObjectMetricWidget.d.ts","sourceRoot":"","sources":["../src/ObjectMetricWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAgE,MAAM,OAAO,CAAC;AAIrF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,uBAAuB;IACtC,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,wBAAwB;IACxB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,kCAAkC;IAClC,KAAK,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,sEAAsE;IACtE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,iBAAiB;IACjB,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACzD,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;IACF,6BAA6B;IAC7B,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IAChC,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,+CAA+C;IAC/C,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,kDAAkD;IAClD,YAAY,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACpG,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,iEAAiE;IACjE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuVhE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectPivotTable.d.ts","sourceRoot":"","sources":["../src/ObjectPivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkD,MAAM,OAAO,CAAC;AAQvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gBAAgB,GAAG;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ObjectPivotTable.d.ts","sourceRoot":"","sources":["../src/ObjectPivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkD,MAAM,OAAO,CAAC;AAQvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gBAAgB,GAAG;QACzB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACrD,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,GAAG,CAAC;KACd,CAAC;IACF,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoO5D,CAAC"}
|
package/dist/PivotTable.d.ts
CHANGED
|
@@ -22,6 +22,16 @@ export interface PivotTableProps {
|
|
|
22
22
|
*/
|
|
23
23
|
onDrillDown?: (event: DrillEvent) => void;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* The aggregations this pivot computes — the renderer half of the spec's
|
|
27
|
+
* `ChartAggregateFunctionSchema` (`ui/chart.zod.ts`), the UI-side subset the
|
|
28
|
+
* spec deliberately carved out of the engine's 8-name `AggregationFunction`.
|
|
29
|
+
* Engine-level names (`count_distinct`, `array_agg`, `string_agg`) used to
|
|
30
|
+
* fall into a `default:` branch that returned a SUM — a plausible wrong total
|
|
31
|
+
* with no signal (#2941). They now short-circuit to a visible notice before
|
|
32
|
+
* any cell is computed. Exported for the spec-parity test.
|
|
33
|
+
*/
|
|
34
|
+
export declare const PIVOT_AGGREGATIONS: ReadonlySet<string>;
|
|
25
35
|
/**
|
|
26
36
|
* PivotTable – Cross-tabulation / Pivot Table component.
|
|
27
37
|
*
|
package/dist/PivotTable.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PivotTable.d.ts","sourceRoot":"","sources":["../src/PivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWlE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C;
|
|
1
|
+
{"version":3,"file":"PivotTable.d.ts","sourceRoot":"","sources":["../src/PivotTable.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,kBAAkB,CAAC;AAE3E,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAWlE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CAC3C;AAyDD;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAAkD,CAAC;AAwBtG;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgRhD,CAAC"}
|