@praxisui/table 9.0.0-beta.73 → 9.0.0-beta.74
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/ai/component-registry.json +2 -2
- package/fesm2022/{praxisui-table-praxisui-table-sX8ASIFR.mjs → praxisui-table-praxisui-table-CdAs3ub8.mjs} +263 -35
- package/fesm2022/{praxisui-table-table-agentic-authoring-turn-flow-Ch_ORcol.mjs → praxisui-table-table-agentic-authoring-turn-flow-DUWbtY_Q.mjs} +2 -2
- package/fesm2022/{praxisui-table-table-ai.adapter-BNA88l5o.mjs → praxisui-table-table-ai.adapter-3pFk4FH1.mjs} +1 -1
- package/fesm2022/praxisui-table.mjs +1 -1
- package/package.json +10 -10
- package/types/praxisui-table.d.ts +25 -3
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-07-
|
|
3
|
+
"generatedAt": "2026-07-16T21:05:04.797Z",
|
|
4
4
|
"packageName": "@praxisui/table",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.74",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 3,
|
|
@@ -127,6 +127,11 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
|
|
|
127
127
|
'table.chrome.actions.disabled.minSelection': 'Selecione ao menos {min} registros para executar esta ação.',
|
|
128
128
|
'table.chrome.actions.disabled.maxSelection': 'A seleção atual excede o limite permitido para esta ação.',
|
|
129
129
|
'table.chrome.actions.disabled.generic': 'Ação indisponível no contexto atual.',
|
|
130
|
+
'table.analytics.comparison.current': 'Atual',
|
|
131
|
+
'table.analytics.comparison.previous': 'Anterior',
|
|
132
|
+
'table.analytics.comparison.delta': 'Variação',
|
|
133
|
+
'table.analytics.comparison.deltaPercent': 'Variação percentual',
|
|
134
|
+
'table.analytics.comparison.baselineMissing': 'Baseline indisponível',
|
|
130
135
|
'table.assistant.context.selectedRecords.label': 'Registros selecionados',
|
|
131
136
|
'table.assistant.context.selectedRecords.value': '{count} registro(s) selecionado(s){ids}',
|
|
132
137
|
'table.assistant.context.selectedRecords.value.singular': '{count} registro selecionado{ids}',
|
|
@@ -262,6 +267,11 @@ const PRAXIS_TABLE_RUNTIME_I18N_CONFIG = {
|
|
|
262
267
|
'table.chrome.actions.disabled.minSelection': 'Select at least {min} records to run this action.',
|
|
263
268
|
'table.chrome.actions.disabled.maxSelection': 'The current selection exceeds the allowed limit for this action.',
|
|
264
269
|
'table.chrome.actions.disabled.generic': 'Action unavailable in the current context.',
|
|
270
|
+
'table.analytics.comparison.current': 'Current',
|
|
271
|
+
'table.analytics.comparison.previous': 'Previous',
|
|
272
|
+
'table.analytics.comparison.delta': 'Change',
|
|
273
|
+
'table.analytics.comparison.deltaPercent': 'Percent change',
|
|
274
|
+
'table.analytics.comparison.baselineMissing': 'Baseline unavailable',
|
|
265
275
|
'table.assistant.context.selectedRecords.label': 'Selected records',
|
|
266
276
|
'table.assistant.context.selectedRecords.value': '{count} selected record(s){ids}',
|
|
267
277
|
'table.assistant.context.selectedRecords.value.singular': '{count} selected record{ids}',
|
|
@@ -394,13 +404,13 @@ function resolveTableRuntimeFallback(key, locale) {
|
|
|
394
404
|
function translateTableRuntimeText(i18n, key, fallback, params, locale) {
|
|
395
405
|
const explicitLocale = typeof locale === 'string' && locale.trim() ? locale.trim() : '';
|
|
396
406
|
const runtimeFallback = resolveTableRuntimeFallback(key, explicitLocale)
|
|
397
|
-
|| resolveTableRuntimeFallback(key, explicitLocale || i18n
|
|
407
|
+
|| resolveTableRuntimeFallback(key, explicitLocale || i18n?.getLocale?.() || i18n?.getFallbackLocale?.() || 'pt-BR')
|
|
398
408
|
|| fallback
|
|
399
409
|
|| key;
|
|
400
410
|
if (explicitLocale) {
|
|
401
411
|
return interpolateTableRuntimeText(runtimeFallback, params);
|
|
402
412
|
}
|
|
403
|
-
return i18n
|
|
413
|
+
return i18n?.t(key, params, runtimeFallback, PRAXIS_TABLE_RUNTIME_I18N_NAMESPACE) || runtimeFallback;
|
|
404
414
|
}
|
|
405
415
|
function interpolateTableRuntimeText(template, params) {
|
|
406
416
|
if (!params)
|
|
@@ -8323,6 +8333,13 @@ const PRAXIS_TABLE_EDITOR_I18N_CONFIG = {
|
|
|
8323
8333
|
'inlineAuthoring.readonlyHint': 'Esta superfície de authoring está somente leitura no contexto atual.',
|
|
8324
8334
|
'connect.resource': 'Recurso',
|
|
8325
8335
|
'connect.resource.placeholder': 'ex.: employees',
|
|
8336
|
+
'connect.tableResource': 'Recurso da tabela',
|
|
8337
|
+
'connect.noResource': 'Nenhum recurso selecionado',
|
|
8338
|
+
'connect.changeResource': 'Alterar recurso',
|
|
8339
|
+
'connect.cancelResourceChange': 'Cancelar alteração',
|
|
8340
|
+
'connect.governedCatalogSource': 'Catálogo governado',
|
|
8341
|
+
'connect.manualSource': 'Rota técnica atual',
|
|
8342
|
+
'connect.resourceDecisionHint': 'Escolha um recurso publicado pelo backend para manter schema, filtros e ações alinhados.',
|
|
8326
8343
|
'connect.primaryKey': 'Chave primária',
|
|
8327
8344
|
'connect.primaryKey.placeholder': 'ex.: id, uuid, código',
|
|
8328
8345
|
'connect.primaryKey.empty': 'Nenhum campo correspondente encontrado.',
|
|
@@ -19667,7 +19684,16 @@ function getTableActionGlobalActionRef(action) {
|
|
|
19667
19684
|
}
|
|
19668
19685
|
function setTableActionGlobalActionRef(action, ref) {
|
|
19669
19686
|
action.globalAction = ref;
|
|
19670
|
-
|
|
19687
|
+
const effects = Array.isArray(action.effects) ? action.effects : [];
|
|
19688
|
+
const nextEffect = { kind: 'global-action', globalAction: ref };
|
|
19689
|
+
const firstGlobalActionEffectIndex = effects.findIndex((effect) => effect?.kind === 'global-action');
|
|
19690
|
+
if (firstGlobalActionEffectIndex === -1) {
|
|
19691
|
+
action.effects = [...effects, nextEffect];
|
|
19692
|
+
return;
|
|
19693
|
+
}
|
|
19694
|
+
action.effects = effects.map((effect, index) => index === firstGlobalActionEffectIndex
|
|
19695
|
+
? { ...effect, kind: 'global-action', globalAction: ref }
|
|
19696
|
+
: effect);
|
|
19671
19697
|
}
|
|
19672
19698
|
function preserveTableActionGlobalActionRefPayload(ref, actionId) {
|
|
19673
19699
|
if (ref?.actionId !== actionId) {
|
|
@@ -30564,12 +30590,9 @@ class TableRulesEditorComponent {
|
|
|
30564
30590
|
return exprOk && hasEffect;
|
|
30565
30591
|
}
|
|
30566
30592
|
toPersistedCellClassAndStyle(effect) {
|
|
30567
|
-
const raw = toCellClassAndStyle(effect);
|
|
30568
|
-
const classList =
|
|
30593
|
+
const raw = toCellClassAndStyle(effect, { includeAnimationPreview: false });
|
|
30594
|
+
const classList = raw.classList || [];
|
|
30569
30595
|
const style = { ...(raw.style || {}) };
|
|
30570
|
-
delete style['animation-duration'];
|
|
30571
|
-
delete style['animation-delay'];
|
|
30572
|
-
delete style['animation-iteration-count'];
|
|
30573
30596
|
const background = effect.background || {};
|
|
30574
30597
|
if (!background.color && !background.gradient && style['background'] === 'transparent') {
|
|
30575
30598
|
delete style['background'];
|
|
@@ -30661,19 +30684,16 @@ class TableRulesEditorComponent {
|
|
|
30661
30684
|
if (this.scope === 'row') {
|
|
30662
30685
|
cloned.rowConditionalStyles = this.rulesRow.filter((r) => r.enabled).map(({ enabled, ...rest }) => rest);
|
|
30663
30686
|
// Build row-level conditional renderers (tooltip/animation)
|
|
30664
|
-
const fromEditorTag = '__fromRulesEditor';
|
|
30665
30687
|
const existingRowRens = Array.isArray(cloned.rowConditionalRenderers) ? cloned.rowConditionalRenderers : [];
|
|
30666
|
-
const keepRow = existingRowRens.filter((it) => !it || it[fromEditorTag] !== true);
|
|
30667
30688
|
const rowNewcomers = [];
|
|
30668
30689
|
for (const r of this.rulesRow) {
|
|
30669
30690
|
if (!r.enabled)
|
|
30670
30691
|
continue;
|
|
30671
30692
|
const rr = this.buildRowRendererOverrideFromRule(r);
|
|
30672
|
-
if (rr)
|
|
30673
|
-
rr[fromEditorTag] = true;
|
|
30693
|
+
if (rr)
|
|
30674
30694
|
rowNewcomers.push(rr);
|
|
30675
|
-
}
|
|
30676
30695
|
}
|
|
30696
|
+
const keepRow = existingRowRens.filter((it) => !this.isGeneratedRendererMatch(it, rowNewcomers));
|
|
30677
30697
|
cloned.rowConditionalRenderers = [...keepRow, ...rowNewcomers];
|
|
30678
30698
|
}
|
|
30679
30699
|
else {
|
|
@@ -30682,24 +30702,42 @@ class TableRulesEditorComponent {
|
|
|
30682
30702
|
const col = cloned.columns[idx];
|
|
30683
30703
|
col.conditionalStyles = this.rulesColumn.filter((r) => r.enabled).map(({ enabled, ...rest }) => rest);
|
|
30684
30704
|
// Build conditionalRenderers from rule effects (renderer and/or animation)
|
|
30685
|
-
const fromEditorTag = '__fromRulesEditor';
|
|
30686
30705
|
const existing = Array.isArray(col.conditionalRenderers) ? col.conditionalRenderers : [];
|
|
30687
|
-
const keep = existing.filter((it) => !it || it[fromEditorTag] !== true);
|
|
30688
30706
|
const newcomers = [];
|
|
30689
30707
|
for (const r of this.rulesColumn) {
|
|
30690
30708
|
if (!r.enabled)
|
|
30691
30709
|
continue;
|
|
30692
30710
|
const ren = this.buildRendererOverrideFromRule(r);
|
|
30693
|
-
if (ren)
|
|
30694
|
-
ren[fromEditorTag] = true;
|
|
30711
|
+
if (ren)
|
|
30695
30712
|
newcomers.push(ren);
|
|
30696
|
-
}
|
|
30697
30713
|
}
|
|
30714
|
+
const keep = existing.filter((it) => !this.isGeneratedRendererMatch(it, newcomers));
|
|
30698
30715
|
col.conditionalRenderers = [...keep, ...newcomers];
|
|
30699
30716
|
}
|
|
30700
30717
|
}
|
|
30701
30718
|
return cloned;
|
|
30702
30719
|
}
|
|
30720
|
+
isGeneratedRendererMatch(candidate, generated) {
|
|
30721
|
+
return generated.some((renderer) => (this.stableRendererSignature(candidate) === this.stableRendererSignature(renderer)));
|
|
30722
|
+
}
|
|
30723
|
+
stableRendererSignature(value) {
|
|
30724
|
+
return JSON.stringify(this.stripRulesEditorMarker(value));
|
|
30725
|
+
}
|
|
30726
|
+
stripRulesEditorMarker(value) {
|
|
30727
|
+
if (Array.isArray(value)) {
|
|
30728
|
+
return value.map((item) => this.stripRulesEditorMarker(item));
|
|
30729
|
+
}
|
|
30730
|
+
if (!value || typeof value !== 'object') {
|
|
30731
|
+
return value;
|
|
30732
|
+
}
|
|
30733
|
+
const out = {};
|
|
30734
|
+
for (const [key, child] of Object.entries(value)) {
|
|
30735
|
+
if (key === '__fromRulesEditor')
|
|
30736
|
+
continue;
|
|
30737
|
+
out[key] = this.stripRulesEditorMarker(child);
|
|
30738
|
+
}
|
|
30739
|
+
return out;
|
|
30740
|
+
}
|
|
30703
30741
|
onApply() {
|
|
30704
30742
|
this.emitRulesConfigChange();
|
|
30705
30743
|
}
|
|
@@ -39669,6 +39707,16 @@ function toBooleanValue(value) {
|
|
|
39669
39707
|
return null;
|
|
39670
39708
|
}
|
|
39671
39709
|
|
|
39710
|
+
/**
|
|
39711
|
+
* Stable backend bucket identity retained on analytics rows for cross-filtering.
|
|
39712
|
+
* It is intentionally not materialized as a visible table column.
|
|
39713
|
+
*/
|
|
39714
|
+
const ANALYTICS_TABLE_ROW_KEY_FIELD = '__praxisAnalyticsKey';
|
|
39715
|
+
/** Returns the deterministic local-data field for one comparison metric value. */
|
|
39716
|
+
function analyticsComparisonMetricField(metricField, valueKind) {
|
|
39717
|
+
return `__praxisAnalyticsComparison_${metricField}_${valueKind}`;
|
|
39718
|
+
}
|
|
39719
|
+
|
|
39672
39720
|
class AnalyticsTableStatsApiService {
|
|
39673
39721
|
http;
|
|
39674
39722
|
apiUrl;
|
|
@@ -39698,6 +39746,13 @@ class AnalyticsTableStatsApiService {
|
|
|
39698
39746
|
...(projection.bindings.primaryMetrics ?? []),
|
|
39699
39747
|
...(projection.bindings.secondaryMetrics ?? []),
|
|
39700
39748
|
].map((metric) => metric.field);
|
|
39749
|
+
if (this.isComparisonResponse(response)) {
|
|
39750
|
+
return response.buckets.map((bucket) => ({
|
|
39751
|
+
[ANALYTICS_TABLE_ROW_KEY_FIELD]: this.resolveBucketKey(bucket),
|
|
39752
|
+
[dimensionField]: this.resolveBucketCategory(bucket),
|
|
39753
|
+
...this.projectComparisonMetricValues(metricFields, bucket.values),
|
|
39754
|
+
}));
|
|
39755
|
+
}
|
|
39701
39756
|
if ('points' in response) {
|
|
39702
39757
|
return response.points.map((point) => ({
|
|
39703
39758
|
[dimensionField]: this.resolveTimeSeriesCategory(point),
|
|
@@ -39706,6 +39761,7 @@ class AnalyticsTableStatsApiService {
|
|
|
39706
39761
|
}
|
|
39707
39762
|
if ('buckets' in response) {
|
|
39708
39763
|
return response.buckets.map((bucket) => ({
|
|
39764
|
+
[ANALYTICS_TABLE_ROW_KEY_FIELD]: this.resolveBucketKey(bucket),
|
|
39709
39765
|
[dimensionField]: this.resolveBucketCategory(bucket),
|
|
39710
39766
|
...this.projectMetricValues(metricFields, bucket.values, bucket.value, bucket.count),
|
|
39711
39767
|
}));
|
|
@@ -39730,6 +39786,26 @@ class AnalyticsTableStatsApiService {
|
|
|
39730
39786
|
}
|
|
39731
39787
|
return '';
|
|
39732
39788
|
}
|
|
39789
|
+
resolveBucketKey(bucket) {
|
|
39790
|
+
if (typeof bucket.key === 'string' || typeof bucket.key === 'number') {
|
|
39791
|
+
return bucket.key;
|
|
39792
|
+
}
|
|
39793
|
+
return null;
|
|
39794
|
+
}
|
|
39795
|
+
projectComparisonMetricValues(metricFields, values) {
|
|
39796
|
+
return metricFields.reduce((acc, field) => {
|
|
39797
|
+
const metric = values?.[field];
|
|
39798
|
+
acc[analyticsComparisonMetricField(field, 'current')] = this.resolveMetricValue(metric?.current, undefined, false);
|
|
39799
|
+
acc[analyticsComparisonMetricField(field, 'previous')] = this.resolveMetricValue(metric?.previous, undefined, false);
|
|
39800
|
+
acc[analyticsComparisonMetricField(field, 'delta')] = this.resolveMetricValue(metric?.delta, undefined, false);
|
|
39801
|
+
acc[analyticsComparisonMetricField(field, 'deltaPercent')] = this.resolveMetricValue(metric?.deltaPercent, undefined, false);
|
|
39802
|
+
acc[analyticsComparisonMetricField(field, 'baselineMissing')] = metric?.baselineMissing === true;
|
|
39803
|
+
return acc;
|
|
39804
|
+
}, {});
|
|
39805
|
+
}
|
|
39806
|
+
isComparisonResponse(response) {
|
|
39807
|
+
return 'periodField' in response;
|
|
39808
|
+
}
|
|
39733
39809
|
projectMetricValues(metricFields, values, primaryValue, count) {
|
|
39734
39810
|
return metricFields.reduce((acc, field, index) => {
|
|
39735
39811
|
const rawValue = values?.[field];
|
|
@@ -42016,7 +42092,7 @@ class PraxisTable {
|
|
|
42016
42092
|
if (this.aiAdapter || this.aiAdapterLoadStarted)
|
|
42017
42093
|
return;
|
|
42018
42094
|
this.aiAdapterLoadStarted = true;
|
|
42019
|
-
import('./praxisui-table-table-ai.adapter-
|
|
42095
|
+
import('./praxisui-table-table-ai.adapter-3pFk4FH1.mjs')
|
|
42020
42096
|
.then(({ TableAiAdapter }) => {
|
|
42021
42097
|
if (!this.isAiAssistantEnabled()) {
|
|
42022
42098
|
this.aiAssistantOpenAfterAdapterLoad = false;
|
|
@@ -42762,7 +42838,7 @@ class PraxisTable {
|
|
|
42762
42838
|
initializeAiAssistantController() {
|
|
42763
42839
|
if (!this.aiAdapter || this.aiAssistantController)
|
|
42764
42840
|
return;
|
|
42765
|
-
import('./praxisui-table-table-agentic-authoring-turn-flow-
|
|
42841
|
+
import('./praxisui-table-table-agentic-authoring-turn-flow-DUWbtY_Q.mjs')
|
|
42766
42842
|
.then(({ TableAgenticAuthoringTurnFlow }) => {
|
|
42767
42843
|
if (this.aiAssistantController || !this.aiAdapter)
|
|
42768
42844
|
return;
|
|
@@ -43033,6 +43109,9 @@ class PraxisTable {
|
|
|
43033
43109
|
};
|
|
43034
43110
|
}
|
|
43035
43111
|
buildRuntimeObservationStateDigest(rowsRendered, selectionDigest) {
|
|
43112
|
+
const filterCriteriaCount = Object.keys(this.filterCriteria ?? {}).length;
|
|
43113
|
+
const queryContextFilterCount = Object.keys(this.queryContext?.filters ?? {}).length;
|
|
43114
|
+
const effectiveFilterCount = Object.keys(this.getEffectiveFilterCriteria()).length;
|
|
43036
43115
|
return {
|
|
43037
43116
|
tableId: this.tableId || undefined,
|
|
43038
43117
|
rowsRendered,
|
|
@@ -43042,19 +43121,123 @@ class PraxisTable {
|
|
|
43042
43121
|
sort: this.sortState?.active
|
|
43043
43122
|
? { active: this.sortState.active, direction: this.sortState.direction || '' }
|
|
43044
43123
|
: undefined,
|
|
43045
|
-
filtersApplied:
|
|
43124
|
+
filtersApplied: effectiveFilterCount > 0,
|
|
43125
|
+
filterCriteriaCount,
|
|
43126
|
+
queryContextFilterCount,
|
|
43127
|
+
effectiveFilterCount,
|
|
43046
43128
|
advancedFilterFieldsVisible: this.advancedFilterRuntimeVisibleFields.length,
|
|
43047
43129
|
selectedCount: Number(selectionDigest?.['selectedCount']) || 0,
|
|
43130
|
+
rendererState: this.buildRuntimeObservationRendererStateDigest(),
|
|
43131
|
+
};
|
|
43132
|
+
}
|
|
43133
|
+
buildRuntimeObservationRendererStateDigest() {
|
|
43134
|
+
const columns = Array.isArray(this.visibleColumns) && this.visibleColumns.length
|
|
43135
|
+
? this.visibleColumns
|
|
43136
|
+
: Array.isArray(this.config?.columns)
|
|
43137
|
+
? this.config.columns
|
|
43138
|
+
: [];
|
|
43139
|
+
const rendererTypes = new Set();
|
|
43140
|
+
let configuredRendererColumns = 0;
|
|
43141
|
+
let conditionalRendererColumns = 0;
|
|
43142
|
+
let conditionalStyleColumns = 0;
|
|
43143
|
+
let conditionalRendererRuleCount = 0;
|
|
43144
|
+
let conditionalStyleRuleCount = 0;
|
|
43145
|
+
let effectRuleCount = 0;
|
|
43146
|
+
let animationRuleCount = 0;
|
|
43147
|
+
const registerAnimation = (value) => {
|
|
43148
|
+
if (value && typeof value === 'object') {
|
|
43149
|
+
animationRuleCount += 1;
|
|
43150
|
+
}
|
|
43151
|
+
};
|
|
43152
|
+
const registerEffects = (value) => {
|
|
43153
|
+
const effects = Array.isArray(value)
|
|
43154
|
+
? value
|
|
43155
|
+
: value && typeof value === 'object'
|
|
43156
|
+
? [value]
|
|
43157
|
+
: [];
|
|
43158
|
+
if (!effects.length)
|
|
43159
|
+
return;
|
|
43160
|
+
effectRuleCount += 1;
|
|
43161
|
+
for (const effect of effects) {
|
|
43162
|
+
if (effect && typeof effect === 'object' && effect['animation']) {
|
|
43163
|
+
registerAnimation(effect['animation']);
|
|
43164
|
+
}
|
|
43165
|
+
}
|
|
43166
|
+
};
|
|
43167
|
+
for (const column of columns) {
|
|
43168
|
+
const renderer = column['renderer'];
|
|
43169
|
+
if (renderer && typeof renderer === 'object') {
|
|
43170
|
+
const rendererType = String(renderer['type'] || '').trim();
|
|
43171
|
+
if (rendererType) {
|
|
43172
|
+
configuredRendererColumns += 1;
|
|
43173
|
+
rendererTypes.add(rendererType);
|
|
43174
|
+
}
|
|
43175
|
+
}
|
|
43176
|
+
const conditionalRenderers = Array.isArray(column['conditionalRenderers'])
|
|
43177
|
+
? column['conditionalRenderers']
|
|
43178
|
+
: [];
|
|
43179
|
+
if (conditionalRenderers.length) {
|
|
43180
|
+
conditionalRendererColumns += 1;
|
|
43181
|
+
conditionalRendererRuleCount += conditionalRenderers.length;
|
|
43182
|
+
}
|
|
43183
|
+
for (const rule of conditionalRenderers) {
|
|
43184
|
+
const ruleRenderer = rule?.['renderer'];
|
|
43185
|
+
if (ruleRenderer && typeof ruleRenderer === 'object') {
|
|
43186
|
+
const rendererType = String(ruleRenderer['type'] || '').trim();
|
|
43187
|
+
if (rendererType)
|
|
43188
|
+
rendererTypes.add(rendererType);
|
|
43189
|
+
}
|
|
43190
|
+
registerAnimation(rule?.['animation']);
|
|
43191
|
+
registerEffects(rule?.['effects']);
|
|
43192
|
+
}
|
|
43193
|
+
const conditionalStyles = Array.isArray(column['conditionalStyles'])
|
|
43194
|
+
? column['conditionalStyles']
|
|
43195
|
+
: [];
|
|
43196
|
+
if (conditionalStyles.length) {
|
|
43197
|
+
conditionalStyleColumns += 1;
|
|
43198
|
+
conditionalStyleRuleCount += conditionalStyles.length;
|
|
43199
|
+
}
|
|
43200
|
+
for (const rule of conditionalStyles) {
|
|
43201
|
+
registerEffects(rule?.['effects']);
|
|
43202
|
+
}
|
|
43203
|
+
}
|
|
43204
|
+
const configRecord = this.config;
|
|
43205
|
+
const rowConditionalRenderers = Array.isArray(configRecord?.['rowConditionalRenderers'])
|
|
43206
|
+
? configRecord['rowConditionalRenderers']
|
|
43207
|
+
: [];
|
|
43208
|
+
for (const rule of rowConditionalRenderers) {
|
|
43209
|
+
registerAnimation(rule?.['animation']);
|
|
43210
|
+
registerEffects(rule?.['effects']);
|
|
43211
|
+
}
|
|
43212
|
+
const rowConditionalStyles = Array.isArray(configRecord?.['rowConditionalStyles'])
|
|
43213
|
+
? configRecord['rowConditionalStyles']
|
|
43214
|
+
: [];
|
|
43215
|
+
for (const rule of rowConditionalStyles) {
|
|
43216
|
+
registerEffects(rule?.['effects']);
|
|
43217
|
+
}
|
|
43218
|
+
return {
|
|
43219
|
+
configuredRendererColumns,
|
|
43220
|
+
conditionalRendererColumns,
|
|
43221
|
+
conditionalStyleColumns,
|
|
43222
|
+
conditionalRendererRuleCount,
|
|
43223
|
+
conditionalStyleRuleCount,
|
|
43224
|
+
rowConditionalRendererRuleCount: rowConditionalRenderers.length,
|
|
43225
|
+
rowConditionalStyleRuleCount: rowConditionalStyles.length,
|
|
43226
|
+
effectRuleCount,
|
|
43227
|
+
animationRuleCount,
|
|
43228
|
+
rendererTypes: [...rendererTypes].sort().slice(0, 40),
|
|
43048
43229
|
};
|
|
43049
43230
|
}
|
|
43050
43231
|
buildRuntimeObservationDataProfileDigest(rowsRendered, selectionDigest) {
|
|
43232
|
+
const dataMode = this.getDataMode();
|
|
43051
43233
|
return {
|
|
43052
|
-
source:
|
|
43234
|
+
source: dataMode === 'remote' ? 'resource' : dataMode === 'local' ? 'local-data' : 'empty',
|
|
43053
43235
|
rowsRendered,
|
|
43054
43236
|
visibleColumnCount: this.visibleColumns.length,
|
|
43055
43237
|
schemaFieldCount: this.schemaFieldsSnapshot.length,
|
|
43056
43238
|
selectedCount: Number(selectionDigest?.['selectedCount']) || 0,
|
|
43057
43239
|
hasResourcePath: !!this.resourcePath,
|
|
43240
|
+
hasLocalDataInput: this.hasLocalDataInput(),
|
|
43058
43241
|
};
|
|
43059
43242
|
}
|
|
43060
43243
|
getRuntimeObservationSchemaFieldRefs() {
|
|
@@ -47931,6 +48114,8 @@ class PraxisTable {
|
|
|
47931
48114
|
metadata: {
|
|
47932
48115
|
tableId: this.tableId,
|
|
47933
48116
|
dataMode: this.isLocalDataModeActive() ? 'local' : this.isRemoteMode() ? 'remote' : 'empty',
|
|
48117
|
+
configuredScope: scope,
|
|
48118
|
+
effectiveScope,
|
|
47934
48119
|
},
|
|
47935
48120
|
};
|
|
47936
48121
|
}
|
|
@@ -50334,7 +50519,10 @@ class PraxisTable {
|
|
|
50334
50519
|
const httpContext = new HttpContext().set(PRAXIS_LOADING_CTX, schemaCtx);
|
|
50335
50520
|
this.emitLoadingState('schema', 'loading', 'Carregando schema da tabela...');
|
|
50336
50521
|
this.crudService
|
|
50337
|
-
.getSchema({
|
|
50522
|
+
.getSchema({
|
|
50523
|
+
httpContext,
|
|
50524
|
+
idField: this.normalizeIdField(this.idField) ?? undefined,
|
|
50525
|
+
})
|
|
50338
50526
|
.pipe(take$1(1))
|
|
50339
50527
|
.subscribe({
|
|
50340
50528
|
next: (fields) => {
|
|
@@ -50498,6 +50686,10 @@ class PraxisTable {
|
|
|
50498
50686
|
if (!field)
|
|
50499
50687
|
continue;
|
|
50500
50688
|
this.applySchemaFieldPresentation(field, column);
|
|
50689
|
+
try {
|
|
50690
|
+
this.applyAutoRenderer(field, column);
|
|
50691
|
+
}
|
|
50692
|
+
catch { }
|
|
50501
50693
|
}
|
|
50502
50694
|
}
|
|
50503
50695
|
applySchemaFieldPresentation(field, col) {
|
|
@@ -50550,6 +50742,13 @@ class PraxisTable {
|
|
|
50550
50742
|
if (col.type === 'boolean' && !col.format) {
|
|
50551
50743
|
col.format = this.resolveSchemaBooleanFormat(field);
|
|
50552
50744
|
}
|
|
50745
|
+
const schemaDataType = this.normalizePresentationToken(field.type);
|
|
50746
|
+
const schemaFormat = this.normalizePresentationToken(field.format);
|
|
50747
|
+
if (col.type === 'number' &&
|
|
50748
|
+
!col.format &&
|
|
50749
|
+
(schemaDataType === 'integer' || schemaFormat === 'int32' || schemaFormat === 'int64')) {
|
|
50750
|
+
col.format = '1.0-0';
|
|
50751
|
+
}
|
|
50553
50752
|
const textMaskFormat = resolveTextMaskFormatFromFieldDefinition(field);
|
|
50554
50753
|
const maskResolvedType = resolveColumnTypeFromFieldDefinition(field, col.type);
|
|
50555
50754
|
if (textMaskFormat && maskResolvedType === 'string') {
|
|
@@ -56930,6 +57129,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImpo
|
|
|
56930
57129
|
}] } });
|
|
56931
57130
|
|
|
56932
57131
|
class AnalyticsTableConfigAdapterService {
|
|
57132
|
+
i18n;
|
|
57133
|
+
constructor(i18n) {
|
|
57134
|
+
this.i18n = i18n;
|
|
57135
|
+
}
|
|
56933
57136
|
toTableConfig(projection, options) {
|
|
56934
57137
|
const dimension = projection.bindings.primaryDimension;
|
|
56935
57138
|
const metrics = this.getDisplayMetrics(projection);
|
|
@@ -56969,13 +57172,15 @@ class AnalyticsTableConfigAdapterService {
|
|
|
56969
57172
|
}
|
|
56970
57173
|
buildColumns(projection) {
|
|
56971
57174
|
const dimension = projection.bindings.primaryDimension;
|
|
56972
|
-
const metricColumns =
|
|
56973
|
-
field
|
|
56974
|
-
|
|
56975
|
-
|
|
56976
|
-
|
|
56977
|
-
|
|
56978
|
-
|
|
57175
|
+
const metricColumns = projection.source.operation === 'comparison'
|
|
57176
|
+
? this.getDisplayMetrics(projection).flatMap((metric) => this.buildComparisonMetricColumns(metric.field, metric.label ?? metric.field))
|
|
57177
|
+
: this.getDisplayMetrics(projection).map((metric) => ({
|
|
57178
|
+
field: metric.field,
|
|
57179
|
+
header: metric.label ?? metric.field,
|
|
57180
|
+
type: 'number',
|
|
57181
|
+
align: 'right',
|
|
57182
|
+
sortable: true,
|
|
57183
|
+
}));
|
|
56979
57184
|
return [
|
|
56980
57185
|
{
|
|
56981
57186
|
field: dimension.field,
|
|
@@ -56986,6 +57191,18 @@ class AnalyticsTableConfigAdapterService {
|
|
|
56986
57191
|
...metricColumns,
|
|
56987
57192
|
];
|
|
56988
57193
|
}
|
|
57194
|
+
buildComparisonMetricColumns(metricField, metricLabel) {
|
|
57195
|
+
return ['current', 'previous', 'delta', 'deltaPercent', 'baselineMissing'].map((valueKind) => ({
|
|
57196
|
+
field: analyticsComparisonMetricField(metricField, valueKind),
|
|
57197
|
+
header: `${metricLabel} - ${this.comparisonValueLabel(valueKind)}`,
|
|
57198
|
+
type: valueKind === 'baselineMissing' ? 'boolean' : valueKind === 'deltaPercent' ? 'percentage' : 'number',
|
|
57199
|
+
align: valueKind === 'baselineMissing' ? 'center' : 'right',
|
|
57200
|
+
sortable: true,
|
|
57201
|
+
}));
|
|
57202
|
+
}
|
|
57203
|
+
comparisonValueLabel(valueKind) {
|
|
57204
|
+
return translateTableRuntimeText(this.i18n, `table.analytics.comparison.${valueKind}`);
|
|
57205
|
+
}
|
|
56989
57206
|
getDisplayMetrics(projection) {
|
|
56990
57207
|
return [
|
|
56991
57208
|
...(projection.bindings.primaryMetrics ?? []),
|
|
@@ -57001,13 +57218,15 @@ class AnalyticsTableConfigAdapterService {
|
|
|
57001
57218
|
}
|
|
57002
57219
|
return value.text ?? value.key ?? undefined;
|
|
57003
57220
|
}
|
|
57004
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsTableConfigAdapterService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57221
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsTableConfigAdapterService, deps: [{ token: i1.PraxisI18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
57005
57222
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsTableConfigAdapterService, providedIn: 'root' });
|
|
57006
57223
|
}
|
|
57007
57224
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: AnalyticsTableConfigAdapterService, decorators: [{
|
|
57008
57225
|
type: Injectable,
|
|
57009
57226
|
args: [{ providedIn: 'root' }]
|
|
57010
|
-
}]
|
|
57227
|
+
}], ctorParameters: () => [{ type: i1.PraxisI18nService, decorators: [{
|
|
57228
|
+
type: Optional
|
|
57229
|
+
}] }] });
|
|
57011
57230
|
|
|
57012
57231
|
class AnalyticsTableContractService {
|
|
57013
57232
|
analyticsSchema;
|
|
@@ -57027,6 +57246,7 @@ class AnalyticsTableContractService {
|
|
|
57027
57246
|
title: definition.title,
|
|
57028
57247
|
subtitle: definition.subtitle,
|
|
57029
57248
|
data: definition.fallbackRows ?? [],
|
|
57249
|
+
source: 'fallback',
|
|
57030
57250
|
});
|
|
57031
57251
|
return acc;
|
|
57032
57252
|
}, {});
|
|
@@ -57056,6 +57276,7 @@ class AnalyticsTableContractService {
|
|
|
57056
57276
|
title: definition.title,
|
|
57057
57277
|
subtitle: definition.subtitle,
|
|
57058
57278
|
data: definition.fallbackRows ?? [],
|
|
57279
|
+
source: 'fallback',
|
|
57059
57280
|
});
|
|
57060
57281
|
try {
|
|
57061
57282
|
const analytics = await this.analyticsSchema.getAnalytics({
|
|
@@ -57076,15 +57297,20 @@ class AnalyticsTableContractService {
|
|
|
57076
57297
|
title: definition.title,
|
|
57077
57298
|
subtitle: definition.subtitle,
|
|
57078
57299
|
data,
|
|
57300
|
+
source: 'remote',
|
|
57079
57301
|
}),
|
|
57080
57302
|
};
|
|
57081
57303
|
}
|
|
57082
57304
|
catch (error) {
|
|
57305
|
+
const normalizedError = normalizeError(error);
|
|
57083
57306
|
return {
|
|
57084
57307
|
key: definition.key,
|
|
57085
57308
|
source: 'fallback',
|
|
57086
|
-
view:
|
|
57087
|
-
|
|
57309
|
+
view: {
|
|
57310
|
+
...fallbackView,
|
|
57311
|
+
error: normalizedError,
|
|
57312
|
+
},
|
|
57313
|
+
error: normalizedError,
|
|
57088
57314
|
};
|
|
57089
57315
|
}
|
|
57090
57316
|
}
|
|
@@ -57096,6 +57322,8 @@ class AnalyticsTableContractService {
|
|
|
57096
57322
|
subtitle: params.subtitle,
|
|
57097
57323
|
}),
|
|
57098
57324
|
data: params.data,
|
|
57325
|
+
projectionId: params.projection.id,
|
|
57326
|
+
source: params.source,
|
|
57099
57327
|
};
|
|
57100
57328
|
}
|
|
57101
57329
|
assertAnalyticTableProjection(projection) {
|
|
@@ -65412,4 +65640,4 @@ function isSupportedJsonLogicComputedOperator(operator) {
|
|
|
65412
65640
|
* Generated bundle index. Do not edit.
|
|
65413
65641
|
*/
|
|
65414
65642
|
|
|
65415
|
-
export {
|
|
65643
|
+
export { compileTableComponentEditPlans as $, ANALYTICS_TABLE_ROW_KEY_FIELD as A, BOOLEAN_PRESETS as B, CURRENCY_PRESETS as C, DATE_PRESETS as D, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS as E, FORMULA_TEMPLATES as F, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA as G, TABLE_COMPONENT_EDIT_PLAN_KIND as H, TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS as I, JsonConfigEditorComponent as J, TABLE_COMPONENT_EDIT_PLAN_VERSION as K, TASK_PRESETS as L, MessagesLocalizationEditorComponent as M, NUMBER_PRESETS as N, TableDefaultsProvider as O, PERCENTAGE_PRESETS as P, TableRulesEditorComponent as Q, ToolbarActionsEditorComponent as R, STRING_PRESETS as S, TABLE_AI_CAPABILITIES as T, VisualFormulaBuilderComponent as U, ValueMappingEditorComponent as V, analyticsComparisonMetricField as W, buildTableApplyPlan as X, coerceTableComponentEditPlan as Y, coerceTableComponentEditPlans as Z, compileTableComponentEditPlan as _, AnalyticsTableConfigAdapterService as a, createTableAuthoringDocument as a0, getActionId as a1, getEnum as a2, getTableCapabilities as a3, getTableComponentEditPlanCapabilities as a4, isTableRendererSupportedByRichContentP0 as a5, mapTableRendererToRichContentP0 as a6, normalizeTableAuthoringDocument as a7, parseLegacyOrTableDocument as a8, providePraxisFilterMetadata as a9, providePraxisTableMetadata as aa, providePraxisTableToolbarAppearance as ab, serializeTableAuthoringDocument as ac, setTableActionGlobalActionRef as ad, toCanonicalTableConfig as ae, validateTableAuthoringDocument as af, AnalyticsTableContractService as b, AnalyticsTableStatsApiService as c, BehaviorConfigEditorComponent as d, ColumnsConfigEditorComponent as e, DataFormatterComponent as f, DataFormattingService as g, FilterConfigService as h, FilterSettingsComponent as i, FormulaGeneratorService as j, PRAXIS_FILTER_COMPONENT_METADATA as k, PRAXIS_TABLE_AUTHORING_MANIFEST as l, PRAXIS_TABLE_COMPONENT_METADATA as m, PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS as n, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE as o, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS as p, PraxisFilter as q, PraxisFilterWidgetConfigEditor as r, PraxisTable as s, PraxisTableConfigEditor as t, PraxisTableInlineAuthoringEditorComponent as u, PraxisTableToolbar as v, PraxisTableWidgetConfigEditor as w, TABLE_COMPONENT_AI_CAPABILITIES as x, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS as y, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND as z };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Observable, firstValueFrom } from 'rxjs';
|
|
2
2
|
import { withAuthoringScopePolicy } from '@praxisui/ai';
|
|
3
|
+
import { ad as setTableActionGlobalActionRef } from './praxisui-table-praxisui-table-CdAs3ub8.mjs';
|
|
3
4
|
|
|
4
5
|
class TableAgenticAuthoringTurnFlow {
|
|
5
6
|
adapter;
|
|
@@ -3966,8 +3967,7 @@ class TableAgenticAuthoringTurnFlow {
|
|
|
3966
3967
|
query: { ids: '${runtime.selectedIds}' },
|
|
3967
3968
|
},
|
|
3968
3969
|
};
|
|
3969
|
-
action
|
|
3970
|
-
action.effects = [{ kind: 'global-action', globalAction }];
|
|
3970
|
+
setTableActionGlobalActionRef(action, globalAction);
|
|
3971
3971
|
if (!this.stringValue(action.action)) {
|
|
3972
3972
|
action.action = 'navigation.openRoute';
|
|
3973
3973
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { firstValueFrom } from 'rxjs';
|
|
2
2
|
import { BaseAiAdapter, sanitizePraxisAssistantText, createComponentAuthoringContext } from '@praxisui/ai';
|
|
3
3
|
import { PRAXIS_GLOBAL_ACTION_CATALOG, deepMerge } from '@praxisui/core';
|
|
4
|
-
import {
|
|
4
|
+
import { I as TABLE_COMPONENT_EDIT_PLAN_OPERATION_IDS, l as PRAXIS_TABLE_AUTHORING_MANIFEST, T as TABLE_AI_CAPABILITIES, Z as coerceTableComponentEditPlans, $ as compileTableComponentEditPlans, L as TASK_PRESETS, a4 as getTableComponentEditPlanCapabilities, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, H as TABLE_COMPONENT_EDIT_PLAN_KIND } from './praxisui-table-praxisui-table-CdAs3ub8.mjs';
|
|
5
5
|
|
|
6
6
|
const TABLE_ROW_EXPRESSION_CONTEXT_OPTION = {
|
|
7
7
|
mode: 'expression',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { A as
|
|
1
|
+
export { A as ANALYTICS_TABLE_ROW_KEY_FIELD, a as AnalyticsTableConfigAdapterService, b as AnalyticsTableContractService, c as AnalyticsTableStatsApiService, B as BOOLEAN_PRESETS, d as BehaviorConfigEditorComponent, C as CURRENCY_PRESETS, e as ColumnsConfigEditorComponent, D as DATE_PRESETS, f as DataFormatterComponent, g as DataFormattingService, F as FORMULA_TEMPLATES, h as FilterConfigService, i as FilterSettingsComponent, j as FormulaGeneratorService, J as JsonConfigEditorComponent, M as MessagesLocalizationEditorComponent, N as NUMBER_PRESETS, P as PERCENTAGE_PRESETS, k as PRAXIS_FILTER_COMPONENT_METADATA, l as PRAXIS_TABLE_AUTHORING_MANIFEST, m as PRAXIS_TABLE_COMPONENT_METADATA, n as PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, o as PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, p as PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, q as PraxisFilter, r as PraxisFilterWidgetConfigEditor, s as PraxisTable, t as PraxisTableConfigEditor, u as PraxisTableInlineAuthoringEditorComponent, v as PraxisTableToolbar, w as PraxisTableWidgetConfigEditor, S as STRING_PRESETS, T as TABLE_AI_CAPABILITIES, x as TABLE_COMPONENT_AI_CAPABILITIES, y as TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, z as TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, E as TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, G as TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, H as TABLE_COMPONENT_EDIT_PLAN_KIND, K as TABLE_COMPONENT_EDIT_PLAN_VERSION, L as TASK_PRESETS, O as TableDefaultsProvider, Q as TableRulesEditorComponent, R as ToolbarActionsEditorComponent, V as ValueMappingEditorComponent, U as VisualFormulaBuilderComponent, W as analyticsComparisonMetricField, X as buildTableApplyPlan, Y as coerceTableComponentEditPlan, Z as coerceTableComponentEditPlans, _ as compileTableComponentEditPlan, $ as compileTableComponentEditPlans, a0 as createTableAuthoringDocument, a1 as getActionId, a2 as getEnum, a3 as getTableCapabilities, a4 as getTableComponentEditPlanCapabilities, a5 as isTableRendererSupportedByRichContentP0, a6 as mapTableRendererToRichContentP0, a7 as normalizeTableAuthoringDocument, a8 as parseLegacyOrTableDocument, a9 as providePraxisFilterMetadata, aa as providePraxisTableMetadata, ab as providePraxisTableToolbarAppearance, ac as serializeTableAuthoringDocument, ae as toCanonicalTableConfig, af as validateTableAuthoringDocument } from './praxisui-table-praxisui-table-CdAs3ub8.mjs';
|
package/package.json
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/table",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.74",
|
|
4
4
|
"description": "Advanced data table for Angular (Praxis UI) with editing, filtering, sorting, virtualization, and settings panel integration.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
8
|
"@angular/platform-browser": "^21.0.0",
|
|
9
|
-
"@praxisui/ai": "^9.0.0-beta.
|
|
10
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
11
|
-
"@praxisui/dynamic-fields": "^9.0.0-beta.
|
|
12
|
-
"@praxisui/dynamic-form": "^9.0.0-beta.
|
|
13
|
-
"@praxisui/metadata-editor": "^9.0.0-beta.
|
|
14
|
-
"@praxisui/rich-content": "^9.0.0-beta.
|
|
15
|
-
"@praxisui/settings-panel": "^9.0.0-beta.
|
|
16
|
-
"@praxisui/table-rule-builder": "^9.0.0-beta.
|
|
9
|
+
"@praxisui/ai": "^9.0.0-beta.74",
|
|
10
|
+
"@praxisui/core": "^9.0.0-beta.74",
|
|
11
|
+
"@praxisui/dynamic-fields": "^9.0.0-beta.74",
|
|
12
|
+
"@praxisui/dynamic-form": "^9.0.0-beta.74",
|
|
13
|
+
"@praxisui/metadata-editor": "^9.0.0-beta.74",
|
|
14
|
+
"@praxisui/rich-content": "^9.0.0-beta.74",
|
|
15
|
+
"@praxisui/settings-panel": "^9.0.0-beta.74",
|
|
16
|
+
"@praxisui/table-rule-builder": "^9.0.0-beta.74",
|
|
17
17
|
"@angular/cdk": "^21.0.0",
|
|
18
18
|
"@angular/forms": "^21.0.0",
|
|
19
19
|
"@angular/material": "^21.0.0",
|
|
20
20
|
"@angular/router": "^21.0.0",
|
|
21
|
-
"@praxisui/dialog": "^9.0.0-beta.
|
|
21
|
+
"@praxisui/dialog": "^9.0.0-beta.74",
|
|
22
22
|
"rxjs": "~7.8.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
@@ -918,9 +918,20 @@ declare function providePraxisFilterMetadata(): Provider;
|
|
|
918
918
|
|
|
919
919
|
type AnalyticsTableRow = Record<string, string | number | boolean | null>;
|
|
920
920
|
type AnalyticsTableContractSource = 'remote' | 'fallback';
|
|
921
|
+
/**
|
|
922
|
+
* Stable backend bucket identity retained on analytics rows for cross-filtering.
|
|
923
|
+
* It is intentionally not materialized as a visible table column.
|
|
924
|
+
*/
|
|
925
|
+
declare const ANALYTICS_TABLE_ROW_KEY_FIELD = "__praxisAnalyticsKey";
|
|
926
|
+
type AnalyticsComparisonMetricValueKind = 'current' | 'previous' | 'delta' | 'deltaPercent' | 'baselineMissing';
|
|
927
|
+
/** Returns the deterministic local-data field for one comparison metric value. */
|
|
928
|
+
declare function analyticsComparisonMetricField(metricField: string, valueKind: AnalyticsComparisonMetricValueKind): string;
|
|
921
929
|
interface AnalyticsTableViewModel {
|
|
922
930
|
config: TableConfig;
|
|
923
931
|
data: AnalyticsTableRow[];
|
|
932
|
+
projectionId?: string;
|
|
933
|
+
source?: AnalyticsTableContractSource;
|
|
934
|
+
error?: string;
|
|
924
935
|
}
|
|
925
936
|
interface AnalyticsTableContractDefinition<TKey extends string = string> {
|
|
926
937
|
key: TKey;
|
|
@@ -950,6 +961,9 @@ declare class AnalyticsTableStatsApiService {
|
|
|
950
961
|
private toTableRows;
|
|
951
962
|
private resolveTimeSeriesCategory;
|
|
952
963
|
private resolveBucketCategory;
|
|
964
|
+
private resolveBucketKey;
|
|
965
|
+
private projectComparisonMetricValues;
|
|
966
|
+
private isComparisonResponse;
|
|
953
967
|
private projectMetricValues;
|
|
954
968
|
private resolveMetricValue;
|
|
955
969
|
private buildStatsUrl;
|
|
@@ -1543,6 +1557,7 @@ declare class PraxisTable implements OnInit, OnChanges, AfterViewInit, AfterCont
|
|
|
1543
1557
|
private getActiveRuntimeObservationSelectedRows;
|
|
1544
1558
|
private buildRuntimeObservationSelectionDigest;
|
|
1545
1559
|
private buildRuntimeObservationStateDigest;
|
|
1560
|
+
private buildRuntimeObservationRendererStateDigest;
|
|
1546
1561
|
private buildRuntimeObservationDataProfileDigest;
|
|
1547
1562
|
private getRuntimeObservationSchemaFieldRefs;
|
|
1548
1563
|
private getRuntimeObservationSchemaFieldDescriptors;
|
|
@@ -3633,6 +3648,9 @@ declare class TableRulesEditorComponent implements OnChanges, OnInit, OnDestroy
|
|
|
3633
3648
|
onRuleToggle(): void;
|
|
3634
3649
|
private emitRulesConfigChange;
|
|
3635
3650
|
buildAppliedConfig(baseConfig?: TableConfig): TableConfig;
|
|
3651
|
+
private isGeneratedRendererMatch;
|
|
3652
|
+
private stableRendererSignature;
|
|
3653
|
+
private stripRulesEditorMarker;
|
|
3636
3654
|
onApply(): void;
|
|
3637
3655
|
isValid(): boolean;
|
|
3638
3656
|
onExportRules(): void;
|
|
@@ -4101,11 +4119,15 @@ interface AnalyticsTableConfigAdapterOptions {
|
|
|
4101
4119
|
subtitle?: PraxisTextValue;
|
|
4102
4120
|
}
|
|
4103
4121
|
declare class AnalyticsTableConfigAdapterService {
|
|
4122
|
+
private readonly i18n?;
|
|
4123
|
+
constructor(i18n?: PraxisI18nService | undefined);
|
|
4104
4124
|
toTableConfig(projection: PraxisAnalyticsProjection, options?: AnalyticsTableConfigAdapterOptions): TableConfig;
|
|
4105
4125
|
private buildColumns;
|
|
4126
|
+
private buildComparisonMetricColumns;
|
|
4127
|
+
private comparisonValueLabel;
|
|
4106
4128
|
private getDisplayMetrics;
|
|
4107
4129
|
private resolveTextValue;
|
|
4108
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableConfigAdapterService,
|
|
4130
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AnalyticsTableConfigAdapterService, [{ optional: true; }]>;
|
|
4109
4131
|
static ɵprov: i0.ɵɵInjectableDeclaration<AnalyticsTableConfigAdapterService>;
|
|
4110
4132
|
}
|
|
4111
4133
|
|
|
@@ -4818,5 +4840,5 @@ declare function coerceTableComponentEditPlan(value: unknown): TableComponentEdi
|
|
|
4818
4840
|
declare function compileTableComponentEditPlans(plans: TableComponentEditPlan[], currentConfig: TableConfig): TableComponentEditPlanCompileResult;
|
|
4819
4841
|
declare function compileTableComponentEditPlan(plan: TableComponentEditPlan, currentConfig: TableConfig): TableComponentEditPlanCompileResult;
|
|
4820
4842
|
|
|
4821
|
-
export { AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_TABLE_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
|
|
4822
|
-
export type { ActionLike, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableConfigPersistenceStrategy, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
|
|
4843
|
+
export { ANALYTICS_TABLE_ROW_KEY_FIELD, AnalyticsTableConfigAdapterService, AnalyticsTableContractService, AnalyticsTableStatsApiService, BOOLEAN_PRESETS, BehaviorConfigEditorComponent, CURRENCY_PRESETS, ColumnsConfigEditorComponent, DATE_PRESETS, DataFormatterComponent, DataFormattingService, FORMULA_TEMPLATES, FilterConfigService, FilterSettingsComponent, FormulaGeneratorService, JsonConfigEditorComponent, MessagesLocalizationEditorComponent, NUMBER_PRESETS, PERCENTAGE_PRESETS, PRAXIS_FILTER_COMPONENT_METADATA, PRAXIS_TABLE_AUTHORING_MANIFEST, PRAXIS_TABLE_COMPONENT_METADATA, PRAXIS_TABLE_TOOLBAR_APPEARANCE_PRESETS, PRAXIS_TABLE_TOOLBAR_DEFAULT_APPEARANCE, PRAXIS_TABLE_TOOLBAR_TOKEN_PRESETS, PraxisFilter, PraxisFilterWidgetConfigEditor, PraxisTable, PraxisTableConfigEditor, PraxisTableInlineAuthoringEditorComponent, PraxisTableToolbar, PraxisTableWidgetConfigEditor, STRING_PRESETS, TABLE_AI_CAPABILITIES, TABLE_COMPONENT_AI_CAPABILITIES, TABLE_COMPONENT_EDIT_PLAN_ALLOWED_CHANGE_KINDS, TABLE_COMPONENT_EDIT_PLAN_BATCH_KIND, TABLE_COMPONENT_EDIT_PLAN_EXPECTED_PATHS, TABLE_COMPONENT_EDIT_PLAN_JSON_SCHEMA, TABLE_COMPONENT_EDIT_PLAN_KIND, TABLE_COMPONENT_EDIT_PLAN_VERSION, TASK_PRESETS, TableDefaultsProvider, TableRulesEditorComponent, ToolbarActionsEditorComponent, ValueMappingEditorComponent, VisualFormulaBuilderComponent, analyticsComparisonMetricField, buildTableApplyPlan, coerceTableComponentEditPlan, coerceTableComponentEditPlans, compileTableComponentEditPlan, compileTableComponentEditPlans, createTableAuthoringDocument, getActionId, getEnum, getTableCapabilities, getTableComponentEditPlanCapabilities, isTableRendererSupportedByRichContentP0, mapTableRendererToRichContentP0, normalizeTableAuthoringDocument, parseLegacyOrTableDocument, providePraxisFilterMetadata, providePraxisTableMetadata, providePraxisTableToolbarAppearance, serializeTableAuthoringDocument, toCanonicalTableConfig, validateTableAuthoringDocument };
|
|
4844
|
+
export type { ActionLike, AnalyticsComparisonMetricValueKind, AnalyticsTableConfigAdapterOptions, AnalyticsTableContractDefinition, AnalyticsTableContractLoadOptions, AnalyticsTableContractLoadResult, AnalyticsTableContractSource, AnalyticsTableRow, AnalyticsTableViewModel, ArithmeticParams, BehaviorConfigChange, BooleanFormatterOptions, BulkAction, Capability$1 as Capability, CapabilityCatalog$1 as CapabilityCatalog, CapabilityCategory$1 as CapabilityCategory, ColumnChange, ColumnDataType$1 as ColumnDataType, ConcatenationParams, ConditionalMappingParams, CurrencyFormatterOptions, DataFormattingOptions, DataMode, DateFormatterOptions, DefaultValueParams, EditorDiagnostic, EditorDocument, FieldSchema, FilterConfig, FilterTag, FormatPreset, FormatterConfig, FormulaDefinition, FormulaParameterSchema, FormulaParams, FormulaTemplate, FormulaType, I18n, JsonEditorEvent, JsonValidationResult, MessagesLocalizationChange, NestedPropertyParams, NumberFormatterOptions, PercentageFormatterOptions, PraxisFilterWidgetEditorInputs, PraxisFilterWidgetEditorValue, PraxisTableWidgetEditorInputs, PraxisTableWidgetEditorValue, ResourcePathIntent, RowAction, RowExpansionChangeBase, RowExpansionChangeEvent, RowExpansionReasonCode, RowExpansionTrigger, StringFormatterOptions, TableAiContext, TableAiNavigationContextPack, TableAiNavigationDestinationContext, TableApplyPlan, TableAuthoringDocument, TableBindings, Capability as TableComponentCapability, CapabilityCatalog as TableComponentCapabilityCatalog, CapabilityCategory as TableComponentCapabilityCategory, TableComponentEditChangeKind, TableComponentEditPlan, TableComponentEditPlanCompileResult, ValueKind as TableComponentValueKind, TableConfigPersistenceStrategy, TableHorizontalScroll, TableProjectionContext, TableRichContentP0Node, TableRuntimeContext, TableValidationContext, ToolbarAction, ToolbarActionsChange, ValueKind$1 as ValueKind, ValueMappingPair };
|