akaunting / laravel-apexcharts
ApexCharts package for Laravel
Installs: 163 093
Dependents: 0
Suggesters: 0
Security: 0
Stars: 74
Watchers: 4
Forks: 10
Open Issues: 4
Requires
- php: ^8.0
- ext-json: *
- balping/json-raw-encoder: ^1.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^7.4|^8.0|^9.0
- phpunit/phpunit: ^9.5|^10.0|^11.0
README
This package allows you to generate modern and interactive charts using the ApexCharts library directly from Laravel
without interacting with JavaScript, CSS, etc.
It covers all of the chart types and options available within the ApexCharts
library.
Check out the Akaunting project to see it live.
Getting Started
1. Install
Run the following command:
composer require akaunting/laravel-apexcharts
2. Publish
Publish configuration
php artisan vendor:publish --tag=apexcharts
3. Configure
You can change the chart settings of your app from config/apexcharts.php
file
Usage
Blade
Create an instance of the Chart
class and set the data and options according to your needs.
use Akaunting\Apexcharts\Chart; // ... $chart = (new Chart)->setType('donut') ->setWidth('100%') ->setHeight(300) ->setLabels(['Sales', 'Deposit']) ->setDataset('Income by Category', 'donut', [1907, 1923]);
Then, include the JavaScript (on every page using charts).
<!-- layout.blade.php --> <body> <!-- ... --> @apexchartsScripts </body>
Finally, call the container
and script
method wherever you want to display the chart.
<!-- dashboard.blade.php --> {!! $chart->container() !!} {!! $chart->script() !!}
Vue
If you're using Vue and Inertia, install Apexcharts and their Vue 3 adapter:
npm install --save apexcharts npm install --save vue3-apexcharts
// resources/js/app.js import VueApexCharts from 'vue3-apexcharts'; createInertiaApp({ // ... setup({el, App, props, plugin}) { return createApp({ render: () => h(App, props) }) .use(VueApexCharts) .mount(el); }, });
Then, create a simple chart.vue
component:
<!-- components/chart.vue --> <template> <apexchart :id="chart.id" :key="chart.id" :type="chart.type" :width="chart.width" :height="chart.height" :series="chart.series" :options="chart.options" /> </template> <script setup> defineProps({ chart: Object, }); </script>
Create an instance of Chart
and call toVue()
before passing it to your page:
Route::get('dashboard', function () { $chart = (new Chart)->setType('...'); return inertia('dashboard', [ 'chart' => $chart->toVue(), ]); });
Finally, render the chart:
<!-- pages/dashboard.vue --> <template> <Chart :chart="chart" /> </template> <script setup> import Chart from './components/chart.vue'; defineProps({ chart: Object, }); </script>
Testing
composer test
Changelog
Please see Releases for more information what has changed recently.
Contributing
Pull requests are more than welcome. You must follow the PSR coding standards.
Security
Please review our security policy on how to report security vulnerabilities.
Credits
License
The MIT License (MIT). Please see LICENSE for more information.