starfolksoftware/laravel-dashboard-table-tile

A tile for displaying a table in spatie's laravel dashboard.

v2.1.1 2023-12-25 05:53 UTC

This package is auto-updated.

Last update: 2024-04-25 06:40:13 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

A simple and straightforward table tile package.

This tile can be used on the Laravel Dashboard.

Installation

You can install the package via composer:

composer require starfolksoftware/laravel-dashboard-table-tile

Usage

In the dashboard config file, you can optionally add this configuration in the tiles key.

'tiles' => [
    // ...
    'tables' => [
        'refresh_interval_in_seconds' => 300, // Default: 300 seconds (5 minutes)
    ],
],

See a table example below:

<?php

namespace App\Tables;

use StarfolkSoftware\TableTile\Table;

class ExampleTableTile extends Table
{
    /**
     * Get the title of the table.
     * 
     * @return string
     */
    protected function getTitle()
    {
        return 'Example Table Tile';
    }

    /**
     * Get the description of the table.
     * 
     * @return string
     */
    protected function getDescription()
    {
        return 'This is an example table tile.';
    }

    /**
     * Get the columns to be displayed in the table.
     * 
     * @return array
     */
    protected function getColumns()
    {
        return [
            'name' => [
                'label' => 'Name',
            ],
            'email' => [
                'label' => 'Email',
            ],
            'gender' => [
                'label' => 'Gender',
            ],
            'status' => [
                'label' => 'Status',
            ],
        ];
    }

    /**
     * Get the rows to be displayed in the table.
     * 
     * @return array
     */
    protected function getRows()
    {
        $faker = \Faker\Factory::create();

        return collect(range(1, 100))->map(function ($i) use ($faker) {
            return [
                'name' => $faker->name,
                'email' => $faker->email,
                'gender' => $faker->randomElement(['male', 'female']),
                'status' => $faker->randomElement(['paid', 'unpaid']),
            ];
        });
    }

    /**
     * Get the filters to be applied to the table.
     * 
     * @return array
     */
    protected function getAvailableFilters()
    {
        return [
            'gender' => [
                'label' => 'Gender',
                'values' => [
                    'male',
                    'female',
                ],
            ],
            'status' => [
                'label' => 'Status',
                'values' => [
                    'paid',
                    'unpaid'
                ],
            ]
        ];
    }

    /**
     * Get the columns that can be searched.
     * 
     * @return array
     */
    protected function getSearchableColumns()
    {
        return ['name', 'email'];
    }
}

In your dashboard view you use the livewire:table-tile component.

<x-dashboard>
    <livewire:table-tile position="e7:e16" />
</x-dashboard>

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email :author_email instead of using the issue tracker.

Credits

License

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