extend('layouts/main') ?> $mode, 'chartId' => isset($cRow['id']) ? (int) $cRow['id'] : null, 'savedQueryId' => (int) ($cRow['saved_query_id'] ?? $preselectQueryId ?? 0), 'chartType' => (string) ($cRow['chart_type'] ?? 'line'), 'name' => (string) ($cRow['name'] ?? ''), 'description' => (string) ($cRow['description'] ?? ''), 'xField' => (string) ($cRow['x_field'] ?? ''), 'yField' => (string) ($cRow['y_field'] ?? ''), 'groupField' => (string) ($cRow['group_field'] ?? ''), 'valueField' => (string) ($cRow['value_field'] ?? ''), 'refreshInterval' => (int) ($cRow['refresh_interval'] ?? 0), 'display' => $displayConfig ?? [], ]; $bootstrapJson = json_encode($bootstrap, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_UNESCAPED_UNICODE) ?: '{}'; ?> section('styles') ?> endSection() ?> section('content') ?>

Visualization-first composer: connect query, pick recommended chart, and tune with live preview.

All charts
getFlashdata('success')): ?>
getFlashdata('success')) ?>
getFlashdata('error')): ?>
getFlashdata('error')) ?>
Query variables

Recommended charts

Run query once to get chart recommendations based on your columns.

All chart types
Field mapping
Basic style
Advanced options
Chart behavior
Live preview
description table_view

Save chart
endSection() ?> section('scripts') ?> include('chart/builder_scripts') ?> endSection() ?>