- Notifications
You must be signed in to change notification settings - Fork140
Lavacharts is a graphing / charting library for PHP 5.4+ that wraps Google's Javascript Chart API.
License
kevinkhill/lavacharts
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Lavacharts is a graphing / chart library for PHP5.4+ that wraps the Google Chart API.
Please don't be discouraged if you see that it has been "years" since an update, but rather think that Lavacharts has settled into a "stable" state and requires less tinkering from me. I would love to add new features, but my responsibilities leave little room for my projects. I am happy to field issues, answer questions, debug and help if needed. Lavacharts is not vaporware! 😄
- Updated! Laravel 5.5+ auto-discovery
- Any option for customizing charts that Google supports, Lavacharts should as well. Just use the chart constructor to assign any customization options you wish!
- VisitGoogle's Chart Gallery for details on available options
- Custom JavaScript module for interacting with charts client-side
- AJAX data reloading
- Fetching charts
- Events integration
- Column Formatters & Roles
- Blade template extensions for Laravel
- Twig template extensions for Symfony
- Carbon support for date/datetime/timeofday columns
- Now supporting22 Charts!
- Annotation, Area, Bar, Bubble, Calendar, Candlestick, Column, Combo, Gantt, Gauge, Geo, Histogram, Line, Org, Pie, Sankey, Scatter, SteppedArea, Table, Timeline, TreeMap, and WordTree!
For complete documentation, please visitlavacharts.com
Upgrade guide:Migrating from 2.5.x to 3.0.x
For contributing, a handy guidecan be found here
In your project's maincomposer.json
file, add this line to the requirements:
"khill/lavacharts":"^3.1"
Run Composer to install Lavacharts:
$ composer update
If you are using Lavacharts with Silex, Lumen or your own Composer project, that's no problem! Just make sure to:require 'vendor/autoload.php';
within you project and create an instance of Lavacharts:$lava = new Khill\Lavacharts\Lavacharts;
To integrate Lavacharts into Laravel, a ServiceProvider has been included.
Thanks to the fantastic newPackage Auto-Discovery feature added in 5.5, you're ready to go, no registration required 👍
To modify the default configuration of Lavacharts, datetime formats for datatables or adding your maps api key...Publish the configuration withphp artisan vendor:publish --tag=lavacharts
Register Lavacharts in your app by adding these lines to the respective arrays found inconfig/app.php
:
<?php// config/app.php// ...'providers' => [// ...Khill\Lavacharts\Laravel\LavachartsServiceProvider::class,],// ...'aliases' => [// ...'Lava' =>Khill\Lavacharts\Laravel\LavachartsFacade::class,]
To modify the default configuration of Lavacharts, datetime formats for datatables or adding your maps api key...Publish the configuration withphp artisan vendor:publish --tag=lavacharts
Register Lavacharts in your app by adding these lines to the respective arrays found inapp/config/app.php
:
<?php// app/config/app.php// ...'providers' =>array(// ..."Khill\Lavacharts\Laravel\LavachartsServiceProvider",),// ...'aliases' =>array(// ...'Lava' =>"Khill\Lavacharts\Laravel\LavachartsFacade",)
To modify the default configuration of Lavacharts, datetime formats for datatables or adding your maps api key...Publish the configuration withphp artisan config:publish khill/lavacharts
The package also includes a Bundle for Symfony to enable Lavacharts as a service that can be pulled from the Container.
Add the bundle to the registerBundles method in the AppKernel, found atapp/AppKernel.php
:
<?php// app/AppKernel.phpclass AppKernelextends Kernel{// ..publicfunctionregisterBundles() {$bundles =array(// ...newKhill\Lavacharts\Symfony\Bundle\LavachartsBundle(), ); }}
Add the service definition to theapp/config/config.yml
file
imports:# ... -{ resource: "@LavachartsBundle/Resources/config/services.yml"
The creation of charts is separated into two parts:First, within a route or controller, you define the chart, the data table, and the customization of the output.
Second, within a view, you use one line and the library will output all the necessary JavaScript code for you.
Here is an example of the simplest chart you can create: A line chart with one dataset and a title, no configuration.
Setting up your first chart.
$data =$lava->DataTable();$data->addDateColumn('Day of Month') ->addNumberColumn('Projected') ->addNumberColumn('Official');// Random Data For Examplefor ($a =1;$a <30;$a++) {$rowData = ["2017-4-$a",rand(800,1000),rand(800,1000) ];$data->addRow($rowData);}
Arrays work for datatables as well...
$data->addColumns([ ['date','Day of Month'], ['number','Projected'], ['number','Official']]);
Or you canuse \Khill\Lavacharts\DataTables\DataFactory
to create DataTables in another way
Customize your chart, with any options found in Google's documentation. Break objects down into arrays and pass to the chart.
$lava->LineChart('Stocks',$data, ['title' =>'Stock Market Trends','animation' => ['startup' =>true,'easing' =>'inAndOut' ],'colors' => ['blue','#F4C1D8']]);
The chart will needs to be output into a div on the page, so an html ID for a div is needed.Here is where you want your chart<div></div>
- If no options for the chart are set, then the third parameter is the id of the output:
$lava->LineChart('Stocks',$data,'stocks-div');
- If there are options set for the chart, then the id may be included in the options:
$lava->LineChart('Stocks',$data, ['elementId' =>'stocks-div' 'title' => 'Stock Market Trends']);
- The 4th parameter will also work:
$lava->LineChart('Stocks',$data, ['title' =>'Stock Market Trends'],'stocks-div');
Pass the main Lavacharts instance to the view, because all of the defined charts are stored within, and render!
<?=$lava->render('LineChart','Stocks','stocks-div');?>
Or if you have multiple charts, you can condense theh view code withL
<?=$lava->renderAll();?>
The complete changelog can be foundhere
About
Lavacharts is a graphing / charting library for PHP 5.4+ that wraps Google's Javascript Chart API.