@praxisui/charts 3.0.0-beta.0 → 3.0.0-beta.2
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/README.md +128 -0
- package/fesm2022/praxisui-charts.mjs +764 -58
- package/fesm2022/praxisui-charts.mjs.map +1 -1
- package/index.d.ts +37 -10
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -110,6 +110,124 @@ export class ChartDemoComponent {
|
|
|
110
110
|
|
|
111
111
|
See the public exports in `projects/praxis-charts/src/public-api.ts`.
|
|
112
112
|
|
|
113
|
+
## Runtime Model
|
|
114
|
+
|
|
115
|
+
O runtime atual de `@praxisui/charts` opera em duas trilhas principais:
|
|
116
|
+
|
|
117
|
+
- `dataSource.kind = "local"` para datasets entregues diretamente ao componente
|
|
118
|
+
- `dataSource.kind = "remote"` para datasets remotos, com foco canônico em `praxis.stats`
|
|
119
|
+
|
|
120
|
+
No modo remoto, o componente:
|
|
121
|
+
|
|
122
|
+
- emite `queryRequest`
|
|
123
|
+
- chama `PraxisChartStatsApiService`
|
|
124
|
+
- transforma a resposta agregada em `PraxisChartDataRow[]`
|
|
125
|
+
- renderiza o estado `loading`, `empty`, `error` ou `ready`
|
|
126
|
+
|
|
127
|
+
### Versão Pedagógica de Alto Nível
|
|
128
|
+
|
|
129
|
+
Esta é a leitura adequada para documentação pública e landing pages.
|
|
130
|
+
|
|
131
|
+
```mermaid
|
|
132
|
+
sequenceDiagram
|
|
133
|
+
participant Host as Host
|
|
134
|
+
participant Chart as praxis-chart
|
|
135
|
+
participant Stats as PraxisChartStatsApiService
|
|
136
|
+
participant Backend as API Praxis Stats
|
|
137
|
+
|
|
138
|
+
Host->>Chart: fornece config local ou remote
|
|
139
|
+
alt fonte local
|
|
140
|
+
Chart->>Chart: transforma dados locais e renderiza
|
|
141
|
+
else fonte remota
|
|
142
|
+
Chart-->>Host: emite queryRequest
|
|
143
|
+
Chart->>Stats: executa consulta praxis.stats
|
|
144
|
+
Stats->>Backend: POST /stats/*
|
|
145
|
+
Backend-->>Stats: retorna buckets/pontos agregados
|
|
146
|
+
Stats-->>Chart: entrega linhas canônicas
|
|
147
|
+
Chart->>Chart: renderiza loading, ready, empty ou error
|
|
148
|
+
end
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Leitura pedagógica:
|
|
152
|
+
|
|
153
|
+
1. **O host entrega um contrato declarativo**, não opções brutas do engine.
|
|
154
|
+
2. **O componente resolve a fonte de dados**: local ou remota.
|
|
155
|
+
3. **Quando a fonte é remota, a integração canônica é `praxis.stats`**.
|
|
156
|
+
4. **O chart renderiza estados de UX e a visualização final a partir de linhas canônicas**.
|
|
157
|
+
|
|
158
|
+
### Versão Detalhada e Fiel ao Runtime Atual
|
|
159
|
+
|
|
160
|
+
```mermaid
|
|
161
|
+
sequenceDiagram
|
|
162
|
+
participant Host as Host
|
|
163
|
+
participant Chart as PraxisChartComponent
|
|
164
|
+
participant Mapper as Canonical Mapper / config remoto
|
|
165
|
+
participant Stats as PraxisChartStatsApiService
|
|
166
|
+
participant Backend as API /stats
|
|
167
|
+
participant Engine as Chart Engine Adapter
|
|
168
|
+
|
|
169
|
+
Host->>Chart: [config] e opcionalmente [data]
|
|
170
|
+
alt data explicito fornecido
|
|
171
|
+
Chart->>Chart: resolvedData = data input
|
|
172
|
+
else fonte local
|
|
173
|
+
Chart->>Chart: resolvedData = dataSource.items
|
|
174
|
+
else fonte remote
|
|
175
|
+
Chart->>Chart: buildRemoteSignature(config)
|
|
176
|
+
Chart-->>Host: queryRequest({ chartId, dataSource, query })
|
|
177
|
+
Chart->>Stats: execute(event, config)
|
|
178
|
+
Stats->>Stats: valida statsPath + statsRequest
|
|
179
|
+
Stats->>Backend: POST {statsPath}
|
|
180
|
+
Backend-->>Stats: envelope com data agregada
|
|
181
|
+
Stats->>Stats: converte buckets/points em PraxisChartDataRow[]
|
|
182
|
+
Stats-->>Chart: rows remotas resolvidas
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
Chart->>Chart: resolve loadState (loading/empty/error/ready)
|
|
186
|
+
alt ready
|
|
187
|
+
Chart->>Engine: render(host, { config, data })
|
|
188
|
+
else not ready
|
|
189
|
+
Chart->>Engine: destroy()
|
|
190
|
+
end
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### Limites Atuais do Contrato Canônico
|
|
194
|
+
|
|
195
|
+
O mapper `x-ui.chart -> PraxisChartConfig` já impõe limites importantes que precisam aparecer na documentação pública:
|
|
196
|
+
|
|
197
|
+
- `source.kind` suportado hoje: `praxis.stats` e `derived`
|
|
198
|
+
- `source.kind = "praxis.stats"` exige `source.resource` e `source.operation`
|
|
199
|
+
- agregações suportadas: `count`, `sum`, `avg`, `min`, `max`
|
|
200
|
+
- `distinct-count` ainda não está implementado
|
|
201
|
+
- charts `pie` e `donut` aceitam apenas uma métrica
|
|
202
|
+
- charts cartesianos `praxis.stats` podem declarar múltiplas métricas apenas em `group-by` e `timeseries`
|
|
203
|
+
- `distribution` continua single-métrica
|
|
204
|
+
- `combo` exige pelo menos duas métricas e, no modo `praxis.stats`, suporta apenas `group-by` ou `timeseries`
|
|
205
|
+
- `axis: "secondary"` é exclusivo de `combo`
|
|
206
|
+
- `selectionChange` e `crossFilter` declarativos ainda não estão implementados
|
|
207
|
+
- `theme.variant` e `theme.palette` por token ainda não estão implementados
|
|
208
|
+
|
|
209
|
+
## Fluxo Canonico de `praxis.stats`
|
|
210
|
+
|
|
211
|
+
Quando o contrato remoto vem do mapper canônico, o caminho gerado hoje segue a forma:
|
|
212
|
+
|
|
213
|
+
- `{resourcePath}/stats/group-by`
|
|
214
|
+
- `{resourcePath}/stats/timeseries`
|
|
215
|
+
- `{resourcePath}/stats/distribution`
|
|
216
|
+
|
|
217
|
+
O `PraxisChartStatsApiService`:
|
|
218
|
+
|
|
219
|
+
- monta a URL final usando `API_URL`
|
|
220
|
+
- normaliza o path remoto
|
|
221
|
+
- envia `statsRequest` via `POST`
|
|
222
|
+
- converte buckets/pontos em linhas canônicas para o runtime do chart
|
|
223
|
+
|
|
224
|
+
Observação importante:
|
|
225
|
+
|
|
226
|
+
- o runtime atual assume envelope com `data`
|
|
227
|
+
- `queryRequest` é emitido para observabilidade do host antes da execução remota
|
|
228
|
+
- a execução remota automática hoje está acoplada a `praxis.stats`; não existe ainda um hook público de override do request dentro do componente
|
|
229
|
+
- a trilha canônica `x-ui.chart -> PraxisChartConfig -> praxis.stats` já promove múltiplas métricas para charts cartesianos suportados; para evitar semântica enganosa, `combo` segue sendo o único caso com eixo secundário e mistura heterogênea de séries
|
|
230
|
+
|
|
113
231
|
## Current Scope
|
|
114
232
|
|
|
115
233
|
This first published version is focused on the core runtime:
|
|
@@ -118,6 +236,16 @@ This first published version is focused on the core runtime:
|
|
|
118
236
|
- canonical chart contracts and runtime models
|
|
119
237
|
- the initial ECharts-based engine adapter
|
|
120
238
|
- metadata and mapping hooks for registry and dynamic widget composition
|
|
239
|
+
- remote execution focused on canonical `praxis.stats`
|
|
240
|
+
|
|
241
|
+
## Current Non-Goals
|
|
242
|
+
|
|
243
|
+
The current runtime does not yet expose as stable public surface:
|
|
244
|
+
|
|
245
|
+
- direct host control over raw ECharts options as the primary contract
|
|
246
|
+
- declarative cross-filter orchestration
|
|
247
|
+
- declarative selectionChange runtime actions
|
|
248
|
+
- palette token indirection or theme variants from `x-ui.chart`
|
|
121
249
|
|
|
122
250
|
## Notes for Hosts
|
|
123
251
|
|