TableConfig.fromJson constructor

TableConfig.fromJson(
  1. Map<String, dynamic> json
)

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),
  );
}