PHP code example of kirschbaum-development / nova-chartjs
1. Go to this page and download the library: Download kirschbaum-development/nova-chartjs library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kirschbaum-development / nova-chartjs example snippets
use KirschbaumDevelopment\NovaChartjs\Traits\HasChart;
use KirschbaumDevelopment\NovaChartjs\Contracts\Chartable;
class Employee extends Model implements Chartable
{
use HasChart;
/**
* Should return settings for Nova Chart in prescribed format
*
* @return array
*/
public static function getNovaChartjsSettings(): array
{
return [
'default' => [
'type' => 'line',
'titleProp' => 'name',
'identProp' => 'id',
'height' => 400,
'indexColor' => '#999999',
'color' => '#FF0000',
'parameters' => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
'options' => ['responsive' => true, 'maintainAspectRatio' => false],
]
];
}
// ...
}
use KirschbaumDevelopment\NovaChartjs\Traits\HasChart;
use KirschbaumDevelopment\NovaChartjs\Contracts\Chartable;
class Employee extends Model implements Chartable
{
use HasChart;
//...
/**
* Return a list of additional datasets added to chart
*
* @return array
*/
public function getAdditionalDatasets(): array
{
return [
'default' => [
[
'label' => 'Average Sales',
'borderColor' => '#f87900',
'data' => [80, 40, 62, 79, 80, 90, 79, 90, 90, 90, 92, 91],
],
]
];
}
// ...
}
use KirschbaumDevelopment\NovaChartjs\Traits\HasChart;
use KirschbaumDevelopment\NovaChartjs\Contracts\Chartable;
class Employee extends Model implements Chartable
{
use HasChart;
//...
/**
* Return a list of additional datasets added to chart
*
* @return array
*/
public function getAdditionalDatasets(): array
{
return [
'default' => [
[
'label' => 'Minimum Required',
'borderColor' => '#f87900',
'fill' => '+1',
'backgroundColor' => 'rgba(20,20,20,0.2)',//For bar charts, this will be the fill color of the bar
'data' => [8, 7, 12, 19, 12, 10, 19, 9, 10, 20, 12, 11],
],
[
'label' => 'Target',
'borderColor' => '#007979',
'fill' => false,
'data' => [80, 40, 62, 79, 80, 90, 79, 90, 90, 90, 92, 91],
],
]
];
}
// ...
}
namespace App\Nova;
use KirschbaumDevelopment\NovaChartjs\InlinePanel;
class Employee extends Resource
{
//...
public function fields(Request $request)
{
return [
//...
InlinePanel::make($this, $request, 'Chart Name'),
];
}
}
namespace App\Nova;
use KirschbaumDevelopment\NovaChartjs\NovaChartjs;
class Employee extends Resource
{
//...
public function fields(Request $request)
{
return [
//...
NovaChartjs::make('Panel Name', 'novaChartjsMetricValue', function () {
return optional($this->novaChartjsMetricValue()->where('chart_name', $chartName)->first())->metric_values ?? [];
}),
];
}
}
namespace App\Nova;
use KirschbaumDevelopment\NovaChartjs\RelationshipPanel;
class Employee extends Resource
{
//...
public function fields(Request $request)
{
return [
//...
RelationshipPanel::make('Chart Name'),
];
}
}
namespace App\Nova;
use KirschbaumDevelopment\NovaChartjs\InlinePanel;
class Employee extends Resource
{
//...
public function fields(Request $request)
{
return [
//...
InlinePanel::make($this, $request, 'First Chart'),
InlinePanel::make($this, $request, 'Second Chart', 'second_chart')
->showLabel()
->notEditable()
->hideFromIndex(),
];
}
}
namespace App;
use KirschbaumDevelopment\NovaChartjs\Traits\HasChart;
use KirschbaumDevelopment\NovaChartjs\Contracts\Chartable;
class Employee extends Model implements Chartable
{
use HasChart;
//...
/**
* Return a list of all models available for comparison to root model
*
* @return \Illuminate\Database\Eloquent\Collection
*/
public static function getNovaChartjsComparisonData(): array
{
return static::with('novaChartjsMetricValue')
->has('novaChartjsMetricValue')
->get()
->map(function ($chartData) use ($chartName) {
$chartData->setAttribute(
'novaChartjsComparisonData',
optional($chartData->novaChartjsMetricValue()->where('chart_name', $chartName)->first())->metric_values
);
return $chartData;
})
->reject(function ($chartData) {
return empty($chartData->novaChartjsComparisonData);
})
->values()
->toArray();
}
}
bash
php artisan migrate
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.