Skip to content

Commit

Permalink
24.03.10
Browse files Browse the repository at this point in the history
- Se genera el caption de la tabla.
- Se corrige el problema con los iconos de las columnas que no se ordenan.
- Versión de lanzamiento.
  • Loading branch information
Néstor Acevedo committed Mar 10, 2024
1 parent bc44308 commit b05f3d9
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 36 deletions.
57 changes: 32 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
Laravel GridView
============

Laravel GridView es un paquete para generar una tabla con datos. Permite generar de manera rápida una tabla a partir de un array de modelos Eloquent o Collections o también de arrays anidados, usando los atributos como columnas y cada fila es un modelo con sus datos.
Laravel GridView es un paquete para generar una tabla con datos. Permite generar de manera rápida una tabla a partir de un array de modelos Eloquent o Collections, usando los atributos como columnas y cada fila es un modelo con sus datos.

Instalación
------------
## Instalación

La forma preferida de instalar esta extensión es a través de [composer](http://getcomposer.org/download/).

Expand All @@ -29,28 +28,22 @@ Luego ejecute el siguiente comando _artisan_ para copiar los assets en el direct
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-assets
```

Sobrescribir la plantilla `Blade`
---
## Uso

Si desea sobrescribir la vista que genera la tabla, ejecute el siguiente comando para que copie los archivos de vista en
_resources/views/vendor/gridview_:

```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-view
```
Una vez que la extensión está instalada, puede crear la tabla de la siguiente forma:

Si está usando GridView como componente, la vista será copiada en _resources/views/components_:
Registre el servico en el archivo de configuración _app.php_ en la sección `providers`:

```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-component-view
```php
...
/*
* Package Service Providers...
*/
neoacevedo\gridview\Providers\GridViewServiceProvider::class,
...
```

Uso
-----

Una vez que la extensión está instalada, puede crear la tabla de la siguiente forma:

Para Laravel 6+:
Para Laravel 6.x o uso como clase:

```php
{{ gridview()->widget([
Expand Down Expand Up @@ -113,7 +106,7 @@ Para Laravel 6+:
]) }}
```

Para Laravel 7+, se puede de la forma anterior, o como componente:
Para Laravel >=7.x, se puede de la forma anterior, o como componente:

```php
<x-package-gridview id="table" class="dataTable"
Expand Down Expand Up @@ -167,7 +160,7 @@ Para Laravel 7+, se puede de la forma anterior, o como componente:
]" />
```

Para la propiedad `dataProvider` puede pasarse un array o una colección. Para esta última desde el controlador puede pasarla desde la base de datos.
La propiedad `dataProvider` tiene que ser de tipo `\Illuminate\Contracts\Pagination\LengthAwarePaginator` con el fin de generar el paginador.

En el array de columnas, puede especificar la clase que se encargará de renderizar el contenido de toda la columna a través de la propiedad `class`. Las clases de columna que soporta GridView son:

Expand All @@ -177,11 +170,10 @@ En el array de columnas, puede especificar la clase que se encargará de renderi
- `\neoacevedo\gridview\Column\RadioButtonColumn`: Columna que se encarga de renderizar inputs de radio
- `\neoacevedo\gridview\Column\SerialColumn`: Columna que renderiza el número de cada fila.

Con cualquiera de las dos opciones, se obtendrá una tabla como la siguiente:
Con cualquiera de las dos opciones, se obtendrá una tabla parecida a la siguiente:

```html
<table data-toggle="table" data-pagination="true" id="bootstrap-table" class="table table-bordered table-hover">

<table id="bootstrap-table" class="table table-bordered table-hover">
<thead>
<tr>
<th data-field="0">
Expand Down Expand Up @@ -268,3 +260,18 @@ Con cualquiera de las dos opciones, se obtendrá una tabla como la siguiente:
</tbody>
</table>
```

### Sobrescribir la plantilla `Blade`

Si desea sobrescribir la vista que genera la tabla, ejecute el siguiente comando para que copie los archivos de vista en
_resources/views/vendor/gridview_:

```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-view
```

Si está usando GridView como componente, la vista será copiada en _resources/views/components_:

```bash
php artisan vendor:publish --provider="neoacevedo\\gridview\\Providers\\GridViewServiceProvider" --tag=gridview-component-view
```
6 changes: 3 additions & 3 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
"table"
],
"license": "GPL-3.0+",
"minimum-stability": "dev",
"minimum-stability": "stable",
"prefer-stable": true,
"version": "24.03.07-RC2",
"version": "24.03.10",
"authors": [
{
"name": "Néstor Acevedo",
Expand All @@ -37,4 +37,4 @@
]
}
}
}
}
Binary file added example.tar.gz
Binary file not shown.
10 changes: 8 additions & 2 deletions src/Column/DataColumn.php
Original file line number Diff line number Diff line change
Expand Up @@ -164,8 +164,14 @@ protected function renderHeaderCellContent()

if ($this->attribute !== null && $this->enableSorting) {
$sorted = request()->get('sort');
$sortClass = substr($sorted, 0, 1) === '-' ? 'icon-link desc' : 'icon-link asc';
$transform = substr($sorted, 0, 1) === '-' ? 'transform: rotate(-180deg);' : '';

if (substr($sorted, 1) === $this->attribute) {
$sortClass = substr($sorted, 0, 1) === '-' ? 'icon-link desc' : 'icon-link asc';
$transform = substr($sorted, 0, 1) === '-' ? 'transform: rotate(-180deg);' : '';
} else {
$sortClass = 'icon-link asc';
$transform = '';
}

$url = request()->fullUrlWithQuery(['sort' => substr($sorted, 0, 1) === '-' ? $this->attribute : '-' . $this->attribute]);

Expand Down
19 changes: 16 additions & 3 deletions src/GridView.php
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,19 @@ public function getModels()
return $this->dataProvider->items();
}

/**
* Renders the caption element.
* @return bool|HtmlString
*/
public function renderCaption()
{
if (!empty($this->caption)) {
$options = Html::renderTagAttributes($this->captionOptions);
return str("<captions $options>{$this->caption}</caption")->toHtmlString();
}
return false;
}

/**
* Renders the HTML content indicating that the list view has no data.
* @return string|HtmlString
Expand Down Expand Up @@ -373,7 +386,7 @@ public function renderFilters()
*/
public function renderItems(): string
{
// $caption = $this->renderCaption();
$caption = $this->renderCaption();
$columnGroup = $this->renderColumnGroup();
$tableHeader = $this->showHeader ? $this->renderTableHeader() : false;
$tableBody = $this->renderTableBody();
Expand All @@ -382,7 +395,7 @@ public function renderItems(): string
$tableFooter = $this->renderTableFooter();
}
$content = array_filter([
// $caption,
$caption,
$columnGroup,
$tableHeader,
$tableBody,
Expand All @@ -399,7 +412,7 @@ public function renderItems(): string
*/
public function renderPager(): string
{
$pagination = $this->dataProvider->hasPages();
$pagination = $this->dataProvider->hasPages() ?? false;

if ($pagination === false) {
return '';
Expand Down
19 changes: 16 additions & 3 deletions src/View/Components/GridViewComponent.php
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,7 @@ public function __construct(
) {
$this->dataProvider = $dataProvider;

$this->caption = $caption;
$this->caption = (string) $caption;

$this->captionOptions = $captionOptions;

Expand Down Expand Up @@ -397,6 +397,19 @@ public function render()
]);
}

/**
* Renders the caption element.
* @return bool|HtmlString
*/
public function renderCaption()
{
if (!empty($this->caption)) {
$options = Html::renderTagAttributes($this->captionOptions);
return str("<caption $options>{$this->caption}</caption>")->toHtmlString();
}
return false;
}

/**
* Renders the column group HTML.
* @return HtmlString|false
Expand Down Expand Up @@ -468,7 +481,7 @@ public function renderFilters()
*/
public function renderItems(): string
{
// $caption = $this->renderCaption();
$caption = $this->renderCaption();
$columnGroup = $this->renderColumnGroup();
$tableHeader = $this->showHeader ? $this->renderTableHeader() : false;
$tableBody = $this->renderTableBody();
Expand All @@ -477,7 +490,7 @@ public function renderItems(): string
$tableFooter = $this->renderTableFooter();
}
$content = array_filter([
// $caption,
$caption,
$columnGroup,
$tableHeader,
$tableBody,
Expand Down

0 comments on commit b05f3d9

Please sign in to comment.