77 lines
3.5 KiB
PHP
77 lines
3.5 KiB
PHP
<?= $this->extend('layouts/main') ?>
|
|
|
|
<?= $this->section('content') ?>
|
|
<header class="cb-page-header cb-page-header--center">
|
|
<div>
|
|
<h1 class="cb-page-title">Charts</h1>
|
|
<p class="cb-page-subtitle">Build visualizations from your saved queries.</p>
|
|
</div>
|
|
<a href="<?= base_url('chart/create') ?>" class="btn cb-page-primary-btn">+ New Chart</a>
|
|
</header>
|
|
|
|
<div class="cb-page-body">
|
|
<?php if (session()->getFlashdata('success')): ?>
|
|
<div class="alert alert-success"><?= esc(session()->getFlashdata('success')) ?></div>
|
|
<?php endif; ?>
|
|
<?php if (session()->getFlashdata('error')): ?>
|
|
<div class="alert alert-danger"><?= esc(session()->getFlashdata('error')) ?></div>
|
|
<?php endif; ?>
|
|
|
|
<div class="cb-table-shell">
|
|
<div class="table-responsive">
|
|
<table class="table cb-data-table align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Name</th>
|
|
<th>Data Source</th>
|
|
<th>Chart type</th>
|
|
<th>Updated</th>
|
|
<th class="text-end">Actions</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php if ($charts === []): ?>
|
|
<tr>
|
|
<td colspan="5" class="text-center text-muted py-5">No charts yet. Create a query first, then build a chart from it.</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
|
|
<?php foreach ($charts as $c): ?>
|
|
<?php
|
|
$ct = strtoupper((string) ($c['chart_type'] ?? ''));
|
|
$typeClass = match ($ct) {
|
|
'TABLE' => 'cb-badge-type--sql',
|
|
default => 'cb-badge-type--visual',
|
|
};
|
|
?>
|
|
<tr>
|
|
<td>
|
|
<div class="cb-cell-name"><?= esc($c['name']) ?></div>
|
|
<div class="cb-cell-sub"><?= esc($c['saved_query_name'] ?? 'Query') ?></div>
|
|
</td>
|
|
<td><?= esc($c['data_source_name'] ?: '—') ?></td>
|
|
<td><span class="cb-badge-type <?= esc($typeClass, 'attr') ?>"><?= esc($ct) ?></span></td>
|
|
<td class="text-muted small"><?= esc($c['updated_at'] ?? '—') ?></td>
|
|
<td class="text-end">
|
|
<div class="cb-table-actions">
|
|
<button type="button" class="cb-action-btn cb-action-btn--ghost" data-bs-toggle="modal" data-bs-target="#modalShare" data-share-type="chart" data-resource-id="<?= (int) $c['id'] ?>">Share</button>
|
|
<a href="<?= base_url('chart/edit/' . (int) $c['id']) ?>" class="cb-action-btn cb-action-btn--edit">Edit</a>
|
|
<form action="<?= base_url('chart/duplicate/' . (int) $c['id']) ?>" method="post" class="d-inline">
|
|
<?= csrf_field() ?>
|
|
<button type="submit" class="cb-action-btn cb-action-btn--ghost">Duplicate</button>
|
|
</form>
|
|
<form action="<?= base_url('chart/delete/' . (int) $c['id']) ?>" method="post" class="d-inline" onsubmit="return confirm('Delete this chart?');">
|
|
<?= csrf_field() ?>
|
|
<button type="submit" class="cb-action-btn cb-action-btn--delete">Delete</button>
|
|
</form>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<?= $this->endSection() ?>
|