TableConfig.fromJson constructor
Parse from visualResponse JSON
Implementation
factory TableConfig.fromJson(Map<String, dynamic> json) {
// Parse columns (handle nested columns by flattening)
final columnsRaw = json['columns'];
final columns = _parseAndFlattenColumns(columnsRaw);
// Parse rowIndex columns if present
final rowIndexRaw = json['rowIndex'];
final rowIndex = _parseAndFlattenColumns(rowIndexRaw);
// Parse valuesConfig if present
final valuesConfigRaw = json['valuesConfig'];
final valuesConfig = _parseAndFlattenColumns(valuesConfigRaw);
return TableConfig(
visualType: json['visualType']?.toString() ?? 'table',
visualName: json['visualName']?.toString() ?? '',
title: json['title']?.toString() ?? '',
query: json['query']?.toString() ?? '',
rowIndex: rowIndex,
valuesConfig: valuesConfig,
columns: columns,
fixedColumns: json['fixedColumns'] ?? 0,
totals: _parseBool(json['totals']),
topN: _parseBool(json['topN']),
sortColumn: json['sortColumn']?.toString(),
sortOrder: json['sortOrder']?.toString(),
dataTreeStartExpanded: _parseBool(json['dataTreeStartExpanded']),
treeEnabled: _parseBool(json['treeEnabled']),
headerFilter: _parseBool(json['headerFilter']),
selectableRows: _parseBool(json['selectableRows']),
showSelectionChips: _parseBool(json['showSelectionChips'], defaultValue: true),
);
}