2017 © Pedro Peláez
 

library cockpit

image

mpociot/cockpit

  • Thursday, November 5, 2015
  • by mpociot
  • Repository
  • 2 Watchers
  • 37 Stars
  • 51 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 0 Open issues
  • 2 Versions
  • 6 % Grown

The README.md

Cockpit

Custom widgets for your Laravel app

image image image codecov.io Scrutinizer Code Quality Build Status, (*1)

, (*2)

Easy to use widgets with custom metrics, filters and drag and drop support., (*3)

Note: Documentation is still in progress., (*4)

Contents

, (*5)

Installation

In order to install Cockpit, just add, (*6)

"mpociot/cockpit": "~1.0"

to your composer.json. Then run composer install or composer update., (*7)

(or run composer require mpociot/cockpit if you prefere that), (*8)

Then in your config/app.php add, (*9)

Mpociot\Cockpit\CockpitServiceProvider::class

in the providers array., (*10)

Next, publish Cockpit's views, javascript files and migration and run the migrate command., (*11)

php artisan vendor:publish --provider="Mpociot\Cockpit\CockpitServiceProvider"
php artisan migrate

, (*12)

Usage

After you've published all the needed assets and created the widgets table through the Cockpit migration, you're good to go., (*13)

Cockpit comes with some preconfigured routes, so go ahead and visit: http://your.app/cockpit/., (*14)

This is your "dashboard" which allows you to create custom widgets that will query your application and show some nice charts., (*15)

, (*16)

How does it work?

When you add a new widget, Cockpit will look in a configurable folder for all available metrics your app could define. Each metric can have multiple sub-metrics that can be queried and those sub-metrics are filterable., (*17)

Example to make the concept easier to understand:, (*18)

Your app logs all logins. On your dashboard, you want to be able to show a widget that displays:, (*19)

  • All logins grouped by "time" (this could be day, week, month, year)
  • All logins grouped by specific users

In this case, your metric would be Logins that has two submetrics named per_time and per_user., (*20)

, (*21)

Custom metrics

, (*22)

Cockpit ships a simple Users metric, which will be copied to this directory: app/Cockpit/Metrics. If your app is running in a different namespace or you want to change the path of your custom metrics, modify the appropriate values in the config/cockpit.php file., (*23)

The base structure of a metric is:, (*24)

use Mpociot\Cockpit\Metric;

class Logins extends Metric
{
    // Visible name when selecting the metric in the UI
    protected $name = "My Metric";

    // Define all submetrics and which charts are available for each submetric
    protected $allowedSubMetrics = [
        'per_user' => ['LineChart','ColumnChart','PieChart'],
    ];

    // Define all filters that can be applied to this metric
    protected $allowedFilters = [
        'username' => [
            'type' => 'text',
            'name' => 'Username'
        ]
    ];

    /**
     * Implement date filter functionality.
     * This is needed for all metrics, as the time filter is always available
     */
    protected function filterFromDate($query, $value)
    {
        return $query->where("created_at" , ">", $value);
    }

    protected function filterUntilDate($query, $value)
    {
        return $query->where("created_at" , "<=", $value);
    }

    /**
     * Implement your custom submetrics
     */
     public function calculatePerUser($filters = [])
    {
        // Use this Eloquent model for all queries
        $query = \App\Models\Login::query();

        // Apply each filter method on the query object
        $query = $this->applyFilters($query, $filters);

        // Get the results we need to display
        $results = $query
            ->groupBy("username")
            ->get([
                DB::raw('username, COUNT(*) AS `count`')
            ]);

        // Define the columns our chart will have
        $this->dataTable
                ->addStringColumn("Username")
                ->addNumberColumn("Num Logins");

        // Add the database results to our chart
        foreach ($results as $result) {
            $this->dataTable->addRow([
               $result->username,
                $result->count
            ]);
        }

        return $this->dataTable;
    }

     /**
     * Implement your custom filters
     */
    protected function filterUsername($query, $value)
    {
        return $query->where("username",$value);
    }

}

, (*25)

Custom filters

Not documented yet :(, (*26)

, (*27)

Available chart types

  • Line Chart
  • Area Chart
  • Bar Chart
  • Column Chart
  • Pie Chart
  • Donut Chart
  • Geo Chart
  • Calendar Chart
  • Gauge Chart

For further information about how the DataTable API / Chart API works, please take a look at Lavacharts., (*28)

, (*29)

License

cockpit is free software distributed under the terms of the MIT license., (*30)

The Versions

05/11 2015

dev-master

9999999-dev http://github.com/mpociot/cockpit

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel statistics analytics grid widgets dashboard charts cockpit

04/11 2015

0.9.0

0.9.0.0 http://github.com/mpociot/cockpit

  Sources   Download

MIT

The Requires

 

The Development Requires

laravel statistics analytics grid widgets dashboard charts cockpit