承接 matheusmarnt/livecharts 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

matheusmarnt/livecharts

最新稳定版本:v2.7.4

Composer 安装命令:

composer require matheusmarnt/livecharts

包简介

Elevate your data visualization with reactive charts in Laravel.

README 文档

README

LiveCharts

Latest Version on Packagist Tests Code Style Total Downloads License Laravel Livewire

LiveCharts

Reactive chart abstraction for Laravel — pure PHP API, multi-engine rendering, Livewire delivery.

LiveCharts unifies ApexCharts and Chart.js behind a single fluent PHP API. Define charts in PHP, render them with one Livewire component, and update them reactively from your application state — no JavaScript boilerplate, no engine-specific configuration leaking into your views.

Features

  • Fluent + class-based buildersLiveCharts::line()->labels(...)->dataset(...) or class extends Chart
  • 18 chart types — line, bar, area, pie, donut, radar, scatter, bubble, heatmap, range bar, radial bar, polar area, box plot, treemap, candlestick, matrix, sankey, plus a generic factory
  • Multi-engine — ApexCharts and Chart.js out of the box, with LiveCharts::registerEngine() for custom adapters
  • Livewire-native rendering — single <livewire:livecharts :chart="$chart" /> component handles mount, hydration, and re-render
  • Reactive updates — bind chart data to Livewire properties; the component re-renders when state changes
  • PollingChart::poll(5000) + wire:poll="refresh" integration with a livecharts:refreshed event for userland data hydration
  • Interaction eventsonDataPointClick, onZoom, onSelection, onScroll map directly to Livewire events
  • Broadcasting — push chart updates over Laravel Echo channels with broadcastOn() / broadcastAs()
  • Theme-aware color tokens — 289-case TwColor enum (all Tailwind v4 families + 4 extensions × 11 shades) with dark:/light: named-arg API: ->titleColor(dark: TwColor::Amber300, light: TwColor::Amber600). Charts re-color live on dark-mode toggle — no Livewire roundtrip
  • Palette presets->palette(TwPalette::Vibrant) auto-fills dataset colors from theme-aware preset schemes
  • Typography->titleFont(size: 18, weight: 'bold', family: 'Inter') for title, legend, and tooltip
  • Theme detectionauto, light, or dark modes; JS observer watches <html class="dark"> (or prefers-color-scheme) and re-colors charts live
  • Local-first assets with CDN fallback — engine bundles (apexcharts.js, chartjs.js) and Chart.js plugin bundles (treemap/matrix/sankey/financial/luxon/adapter-luxon) ship pre-built in resources/dist; switch between local, cdn, or both via config
  • Vite build pipeline — lib-mode IIFE outputs for livecharts.js + every engine and plugin shim, verified in CI
  • Stub publishinglivecharts:install can publish chart class stubs to stubs/livecharts for project-level customization
  • Browser previewphp artisan livecharts:preview launches a gallery of every chart type in your default browser
  • i18n — ships with en, pt_BR, and es translations
  • Type-safe — PHPStan level 8, PHP 8.2+, strict types throughout

Quick Start

composer require matheusmarnt/livecharts
php artisan livecharts:install

This will:

  1. Publish config/livecharts.php
  2. Copy the LiveCharts JS runtime + engine bundles to public/vendor/livecharts/js (local-first delivery with CDN fallback by default — LIVECHARTS_ASSETS_MODE=both)
  3. Optionally publish chart class stubs to stubs/livecharts

Note: The default asset mode is both (local first, CDN fallback). The files in public/vendor/livecharts/js/ must exist for this to work. If you skip the install step or need to restore the assets after deployment, run:

php artisan vendor:publish --tag=livecharts-assets --force

If you prefer no local files at all, set LIVECHARTS_ASSETS_MODE=cdn in .env — no publish step needed.

Then build a chart and render it:

use Matheusmarnt\LiveCharts\Facades\LiveCharts;

$chart = LiveCharts::line()
    ->title('Monthly Revenue')
    ->labels(['Jan', 'Feb', 'Mar'])
    ->dataset('2026', [100, 200, 150])
    ->colors(['#3B82F6']);
<livewire:livecharts :chart="$chart" />

Place the asset directive once in your layout, before @livewireScripts and before the closing </body> tag (or in the <head> when using a Blade layout with @extends/@section):

{{-- must come BEFORE @livewireScripts — livecharts.js registers Alpine components before Alpine starts --}}
@liveChartsScripts
@livewireScripts

Building Charts

Fluent builder

Every method returns $this, so chains read top-down:

LiveCharts::bar()
    ->title('Sales by Region')
    ->subtitle('Q1 2026')
    ->labels(['North', 'South', 'East', 'West'])
    ->dataset('Sales', [400, 300, 600, 250])
    ->colors(['#10B981'])
    ->stacked()
    ->height(420)
    ->theme('auto');

Available factories: line, bar, area, pie, donut, radar, scatter, bubble, heatmap, rangeBar, radialBar, polarArea, boxPlot, treemap, candlestick, matrix, sankey, plus make() for the generic factory.

Class-based charts

Generate a dedicated class for reusable charts:

php artisan make:chart RevenueChart --type=bar
namespace App\Charts;

use Matheusmarnt\LiveCharts\Charts\Chart;
use Matheusmarnt\LiveCharts\Charts\Dataset;

class RevenueChart extends Chart
{
    protected string $type = 'bar';

    public function __construct()
    {
        parent::__construct();

        $this
            ->title('Revenue')
            ->labels(['Jan', 'Feb', 'Mar'])
            ->datasets([
                Dataset::make('2026')->data([400, 300, 600])->color('#10B981'),
            ]);
    }
}
<livewire:livecharts :chart="new App\Charts\RevenueChart" />

Stubs: running livecharts:install and accepting the stubs prompt publishes the generator stub to stubs/livecharts/chart.stub. Edit that file to customize the boilerplate emitted by make:chart.

Reactive Charts

Polling

$chart->poll(5000); // refresh every 5 seconds

The Livewire component subscribes via wire:poll="refresh" and dispatches a browser event on every tick:

window.addEventListener('livecharts:refreshed', (e) => {
    // e.detail.id — chart DOM id
})

Hydrate fresh data inside refresh() on a parent Livewire component, or react to the event on the client.

Click and zoom events

$chart
    ->onDataPointClick('chart-clicked')
    ->onZoom('chart-zoomed')
    ->onSelection('chart-selected');

In the parent component:

use Livewire\Attributes\On;

#[On('chart-clicked')]
public function handle(array $data): void
{
    // $data: ['seriesIndex' => 0, 'dataPointIndex' => 2, 'value' => 150, 'label' => 'Mar']
}

Broadcasting

$chart->broadcastOn('private-charts.'.$user->id)->broadcastAs('chart.updated');

Subscribe via Laravel Echo and the chart re-renders when the channel fires.

Multi-Engine

The default engine is apexcharts. Override globally in config/livecharts.php or per chart:

LiveCharts::line()->engine('chartjs')->labels(...)->dataset(...);

Register a custom adapter at runtime:

use App\LiveCharts\Engines\HighchartsAdapter;
use Matheusmarnt\LiveCharts\Facades\LiveCharts;

LiveCharts::registerEngine('highcharts', HighchartsAdapter::class);

Implement Matheusmarnt\LiveCharts\Contracts\EngineAdapter and the engine becomes selectable from any chart.

Commands

Command Description
livecharts:install Publish config, copy the JS runtime + engine bundles, optionally publish chart stubs
make:chart {name} {--type=} {--engine=} Generate a new chart class under app/Charts; --type/--engine derived from Chart::TYPES and EngineFactory::names()
livecharts:preview {--no-open} Open the gallery of every chart type at /livecharts/preview in your default browser; --no-open only prints the URL

Documentation

Testing

composer test

Runs the Pest suite (288 tests) against the package's testbench harness — including 17 Pest arch rules, payload + adapter routing for every chart type, Livewire color-roundtrip tests (Bugs 1 & 5), ApexCharts themed-color path tests, script-stack idempotency tests, and integration tests for UC-01 dashboard, UC-02 drill-down, UC-03 polling, and UC-04 multi-tenant flows. CI matrix: PHP 8.2-8.5 × Laravel 11/12/13 × Livewire 3/4 × prefer-lowest/stable × Ubuntu/Windows, with a --min=90 coverage gate and PHPStan level 8 enforcement.

Changelog

See CHANGELOG for release history.

Contributing

See CONTRIBUTING for details.

Security

If you discover a security vulnerability, please email matheusmarnt@gmail.com instead of opening a public issue.

Credits

License

MIT — see LICENSE.

统计信息

  • 总下载量: 17
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-05-02

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固