Skip to content

Commit 450a8e1

Browse files
authored
Merge pull request #76 from yajra/enhance-export-print-columns
Allow customization of export and print columns.
2 parents b6c04f1 + f32b406 commit 450a8e1

File tree

1 file changed

+31
-9
lines changed

1 file changed

+31
-9
lines changed

src/Services/DataTable.php

Lines changed: 31 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Yajra\DataTables\Services;
44

55
use Illuminate\Http\JsonResponse;
6+
use Yajra\DataTables\Html\Column;
67
use Illuminate\Support\Collection;
78
use Yajra\DataTables\Contracts\DataTableScope;
89
use Yajra\DataTables\Contracts\DataTableButtons;
@@ -238,7 +239,7 @@ protected function getDataForPrint()
238239
*/
239240
protected function printColumns()
240241
{
241-
return is_array($this->printColumns) ? $this->printColumns : $this->getPrintColumnsFromBuilder();
242+
return is_array($this->printColumns) ? $this->toColumnsCollection($this->printColumns) : $this->getPrintColumnsFromBuilder();
242243
}
243244

244245
/**
@@ -300,12 +301,10 @@ public function builder()
300301
*/
301302
protected function mapResponseToColumns($columns, $type)
302303
{
303-
return array_map(function ($row) use ($columns, $type) {
304-
if ($columns) {
305-
return (new DataArrayTransformer())->transform($row, $columns, $type);
306-
}
304+
$transformer = new DataArrayTransformer;
307305

308-
return $row;
306+
return array_map(function ($row) use ($columns, $type, $transformer) {
307+
return $transformer->transform($row, $columns, $type);
309308
}, $this->getAjaxResponseData());
310309
}
311310

@@ -452,7 +451,31 @@ protected function getDataForExport()
452451
*/
453452
private function exportColumns()
454453
{
455-
return is_array($this->exportColumns) ? $this->exportColumns : $this->getExportColumnsFromBuilder();
454+
return is_array($this->exportColumns) ? $this->toColumnsCollection($this->exportColumns) : $this->getExportColumnsFromBuilder();
455+
}
456+
457+
/**
458+
* Convert array to collection of Column class.
459+
*
460+
* @param array $columns
461+
* @return Collection
462+
*/
463+
private function toColumnsCollection(array $columns)
464+
{
465+
$collection = collect();
466+
foreach ($columns as $column) {
467+
if (isset($column['data'])) {
468+
$column['title'] = $column['title'] ?? $column['data'];
469+
$collection->push(new Column($column));
470+
} else {
471+
$data = [];
472+
$data['data'] = $column;
473+
$data['title'] = $column;
474+
$collection->push(new Column($data));
475+
}
476+
}
477+
478+
return $collection;
456479
}
457480

458481
/**
@@ -583,8 +606,7 @@ protected function hasScopes(array $scopes, $validateAll = false)
583606
return in_array(get_class($scope), $scopes);
584607
});
585608

586-
return $validateAll ? count($filteredScopes) === count($scopes) :
587-
! empty($filteredScopes);
609+
return $validateAll ? count($filteredScopes) === count($scopes) : ! empty($filteredScopes);
588610
}
589611

590612
/**

0 commit comments

Comments
 (0)