| Current Path : /home/rtorresani/www/vendor/magento/module-catalog/Ui/Component/Listing/ |
| Current File : //home/rtorresani/www/vendor/magento/module-catalog/Ui/Component/Listing/Columns.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Catalog\Ui\Component\Listing;
/**
* Column IU component
*
* @api
* @since 100.0.2
*/
class Columns extends \Magento\Ui\Component\Listing\Columns
{
/**
* Default columns max order value
*/
const DEFAULT_COLUMNS_MAX_ORDER = 100;
/**
* @var \Magento\Catalog\Ui\Component\Listing\Attribute\RepositoryInterface
*/
protected $attributeRepository;
/**
* @var \Magento\Catalog\Ui\Component\ColumnFactory
*/
private $columnFactory;
/**
* @var array
*/
protected $filterMap = [
'default' => 'text',
'select' => 'select',
'boolean' => 'select',
'multiselect' => 'select',
'date' => 'dateRange',
'datetime' => 'datetimeRange',
];
/**
* @param \Magento\Framework\View\Element\UiComponent\ContextInterface $context
* @param \Magento\Catalog\Ui\Component\ColumnFactory $columnFactory
* @param \Magento\Catalog\Ui\Component\Listing\Attribute\RepositoryInterface $attributeRepository
* @param array $components
* @param array $data
*/
public function __construct(
\Magento\Framework\View\Element\UiComponent\ContextInterface $context,
\Magento\Catalog\Ui\Component\ColumnFactory $columnFactory,
\Magento\Catalog\Ui\Component\Listing\Attribute\RepositoryInterface $attributeRepository,
array $components = [],
array $data = []
) {
parent::__construct($context, $components, $data);
$this->columnFactory = $columnFactory;
$this->attributeRepository = $attributeRepository;
}
/**
* @inheritdoc
*/
public function prepare()
{
$columnSortOrder = self::DEFAULT_COLUMNS_MAX_ORDER;
foreach ($this->attributeRepository->getList() as $attribute) {
$config = [];
if (!isset($this->components[$attribute->getAttributeCode()])) {
$config['sortOrder'] = ++$columnSortOrder;
if ($attribute->getIsFilterableInGrid()) {
$config['filter'] = $this->getFilterType($attribute->getFrontendInput());
}
$column = $this->columnFactory->create($attribute, $this->getContext(), $config);
$column->prepare();
$this->addComponent($attribute->getAttributeCode(), $column);
}
}
parent::prepare();
}
/**
* Retrieve filter type by $frontendInput
*
* @param string $frontendInput
* @return string
*/
protected function getFilterType($frontendInput)
{
return $this->filterMap[$frontendInput] ?? $this->filterMap['default'];
}
}