PHP code example of tomshaw / electricgrid
1. Go to this page and download the library: Download tomshaw/electricgrid 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/ */
tomshaw / electricgrid example snippets
use Illuminate\Database\Eloquent\Builder;
use TomShaw\ElectricGrid\Component;
use App\Models\Order;
class OrdersTable extends Component
{
public array $computedColumns = ['posts_count'];
public function builder(): Builder
{
return User::with(['roles', 'profile'])->withCount('posts');
}
}
use TomShaw\ElectricGrid\{Component, Column};
use NumberFormatter;
class OrdersTable extends Component
{
public function columns(): array
{
$numberFormat = new NumberFormatter('en_US', NumberFormatter::CURRENCY);
return [
Column::add('id', 'ID')
->sortable()
->stylable('text-center w-20')
->exportable(),
Column::add('name', 'Customer')
->callback(function (Model $model) {
return view('livewire.tables.users-customer', ['model' => $model]);
})
->searchable()
->sortable()
->exportable(),
Column::add('status', 'Status')
->callback(function (Order $order) {
return OrderStatus::from($order->status)->name();
})
->sortable()
->exportable(),
Column::add('total', 'Total')
->callback(fn (Order $order) => $numberFormat->formatCurrency($order->total, 'USD'))
->searchable()
->sortable()
->exportable(),
Column::add('invoiced', 'Invoiced')
->callback(fn (Order $order) => $order->invoiced ? 'Yes' : 'No')
->sortable()
->exportable(),
Column::add('created_at', 'Created At')
->callback(fn (Order $order) => Carbon::parse($order->created_at)->format('F j, Y, g:i a'))
->sortable()
->exportable(),
Column::add('updated_at', 'Updated At')
->callback(fn (Order $order) => Carbon::parse($order->updated_at)->format('F j, Y, g:i a'))
->sortable()
->exportable()
->visible(false),
];
}
}
use TomShaw\ElectricGrid\{Component, Column, Filter};
use App\Enums\OrderStatus;
class OrdersTable extends Component
{
public function filters(): array
{
return [
Filter::number('id')->placeholders('Min', 'Max'),
Filter::text('name')->placeholder('Customer'),
Filter::select('status')->options(OrderStatus::toOptions()),
Filter::number('total')->placeholders('Min Total', 'Max Total'),
Filter::boolean('invoiced')->labels('Yes', 'No'),
Filter::datepicker('created_at')->addDataAttribute('format', 'H:i'),
Filter::datetimepicker('updated_at'),
];
}
}
use TomShaw\ElectricGrid\{Component, Column, Filter, Action};
use App\Enums\OrderStatus;
class OrdersTable extends Component
{
public bool $showCheckbox = true;
public function actions(): array
{
return [
Action::make('approved', 'Mark Approved')
->group('Status Options')
->callback(fn ($status, $selected) => $this->updateStatusHandler($status, $selected)),
Action::make('completed', 'Mark Completed')
->group('Status Options')
->callback(fn ($status, $selected) => $this->updateStatusHandler($status, $selected)),
Action::make('cancelled', 'Mark Canceled')
->group('Status Options')
->callback(fn ($status, $selected) => $this->updateStatusHandler($status, $selected)),
];
}
public function updateStatusHandler(string $status, array $selectedItems)
{
$status = OrderStatus::fromName($status);
foreach ($selectedItems as $index => $orderId) {
event(new OrderStatusEvent($status->value, $orderId));
}
}
}
use TomShaw\ElectricGrid\{Component, Column, Filter, Action};
use App\Enums\OrderStatus;
class OrdersTable extends Component
{
public bool $showCheckbox = true;
public function actions(): array
{
return [
Action::groupBy('Export Options', function () {
return [
Action::make('csv', 'Export CSV')->export('SalesOrders.csv'),
Action::make('pdf', 'Export PDF')->export('SalesOrders.pdf'),
Action::make('html', 'Export HTML')->export('SalesOrders.html'),
Action::make('xlsx', 'Export XLSX')->export('SalesOrders.xlsx'),
];
}),
];
}
}
public function actions(): array
{
return [
Action::groupBy('Export Options', function () {
return [
Action::make('xlsx', 'Export XLSX')
->export('SalesOrders.xlsx')
->styles($this->exportStyles)
->columnWidths($this->exportWidths),
];
}),
];
}
public function getExportStylesProperty()
{
return [
'1' => ['font' => ['bold' => true]],
'B2' => ['font' => ['italic' => true]],
'C' => ['font' => ['size' => 16]],
];
}
public function getExportWidthsProperty()
{
return [
'A' => 20,
'B' => 30,
];
}
public array $searchTermColumns = ['title', 'description'];
public array $letterSearchColumns = ['name'];
php artisan electricgrid:install
php artisan electricgrid:update