Skip to content

ardorcode/laravel-table-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table generator

Latest Version on Packagist Total Downloads

A package to create a structured jason that should be consumed with a react component.

Requirements

You have to install:

Installation

You can install the package via composer:

composer require advicepharma/tablegenerator

Basic Usage

use Advicepharma\Tablegenerator\Tablegenerator;
use Advicepharma\Tablegenerator\Elements\Action;
use Advicepharma\Tablegenerator\Elements\Column;
use Advicepharma\Tablegenerator\Elements\ActionColumn;
use Spatie\QueryBuilder\QueryBuilder;

$users = QueryBuilder::for(App\Models\User::class);

$table = new Tablegenerator;
$table->query($users)
        ->paginate()
        ->addFilter()
        ->addSorts()
        ->table()
        ->addColumn(
            [
                (new Column)
                    ->field('id')
                    ->label('ID')
                    ->filtrable()
                    ->sortable(),

                (new Column)
                    ->field('name')
                    ->label('Name')
                    ->filtrable()
            ]
        );

Column object

label(<string>) column label (header) field(<string>) display the field in QueryBuilder object filtrable() set the column filtrable sortable() set the column sortable

Adding column

Adding column accpets array of Column or Column object.

$table->->table()
        ->addColumn(
            [
                (new Column)
                    ->field('name')
                    ->label('Name'),
                (new Column)
                    ->field('email')
                    ->label('Email')
            ]
        )

or:

$table->->table()
        ->addColumn(
            (new Column)
                ->field('name')
                ->label('Name')
                ->filtrable()
                ->sortable()
        )

<<<<<<< HEAD

Action column

Action column are used to render actions in the table. Default action are edit and delete:

(new ActionColumn)
    ->label('')
    ->addAction(
        (new Action)
            ->type(Action::ACTION_EDIT)
            ->properties(
                [
                    'link_to' => '/account/users/#id#'
                ]
            )
    )
    ->addAction(
        (new Action)
            ->type(Action::ACTION_DELETE)
            ->properties(
                [
                    'confirm' => true,
                    'confirm_message' => 'Do you really want to delete this user?',
                    'link_to' => route('user.destroy', '#id#', false)
                ]
            )
    )

type can be whatever you want: this two are the default one.

properties can contains all the properties that are going to be consumed by frontend

4988002 (Update README.md)

Pagination

Pagination is super easy: you have to add ->paginate() to create default pagination structure. If you want, you can specify the pagesize passing an integer value ->paginate(100)

Api resource

If you want to use ApiResource feature, you can add it with

$table->->table()
    ->withResource(YourResource::class)

Relationship column

If you are working with a QueryBuilder with relationship, like:

QueryBuilder::for(App\Models\Post::class)->with('user');

Al you need to do is to specify the colum field with dot notation:

(new Column)->field('user.name')->label('User Name')

Unforturnately sorting a relation field is not yet supported

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email giacomo.garavaglia@advicepharma.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Laravel Package Boilerplate

This package was generated using the Laravel Package Boilerplate.

About

No description, website, or topics provided.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages