public function testSetColumnOptions() { $container = new ContainerBuilder(); $datagridGuesser = new DatagridGuesser($container, []); $config = DatagridConfiguration::create([]); $columnOptions = [DatagridGuesser::FORMATTER => ['formatter_prop' => 'test'], DatagridGuesser::SORTER => ['sorter_prop' => 'test'], DatagridGuesser::FILTER => ['filter_prop' => 'test']]; $datagridGuesser->setColumnOptions($config, 'testColumn', $columnOptions); $this->assertEquals(['columns' => ['testColumn' => ['formatter_prop' => 'test']], 'sorters' => ['columns' => ['testColumn' => ['sorter_prop' => 'test']]], 'filters' => ['columns' => ['testColumn' => ['filter_prop' => 'test']]]], $config->toArray()); }
/** * @param FieldConfigId $field * @param array $columnOptions */ protected function prepareColumnOptions(FieldConfigId $field, array &$columnOptions) { $fieldName = $field->getFieldName(); // if field is visible as mandatory it is required in grid settings and rendered // and not required and hidden by default otherwise. $isMandatory = $this->getFieldConfig('datagrid', $field)->get('is_visible') === DatagridScope::IS_VISIBLE_MANDATORY; $columnOptions = [DatagridGuesser::FORMATTER => ['label' => $this->getFieldConfig('entity', $field)->get('label') ?: $fieldName, 'renderable' => $isMandatory, 'required' => $isMandatory], DatagridGuesser::SORTER => ['data_name' => $fieldName], DatagridGuesser::FILTER => ['data_name' => $fieldName, 'enabled' => false]]; $this->datagridGuesser->applyColumnGuesses($field->getClassName(), $fieldName, $field->getFieldType(), $columnOptions); }
/** * @param FieldConfigId $field * @param array $columnOptions */ protected function prepareColumnOptions(FieldConfigId $field, array &$columnOptions) { $fieldName = $field->getFieldName(); // if field is "visible as mandatory" it is required in grid settings and rendered // if field is just "visible" it's rendered by default and manageable in grid settings // otherwise - not required and hidden by default. $gridVisibilityValue = $this->getFieldConfig('datagrid', $field)->get('is_visible'); $isRequired = $gridVisibilityValue === DatagridScope::IS_VISIBLE_MANDATORY; $isRenderable = $isRequired ?: $gridVisibilityValue === DatagridScope::IS_VISIBLE_TRUE; $columnOptions = [DatagridGuesser::FORMATTER => ['label' => $this->getFieldConfig('entity', $field)->get('label') ?: $fieldName, 'renderable' => $isRenderable, 'required' => $isRequired], DatagridGuesser::SORTER => ['data_name' => $fieldName], DatagridGuesser::FILTER => ['data_name' => $fieldName, 'enabled' => false]]; $this->datagridGuesser->applyColumnGuesses($field->getClassName(), $fieldName, $field->getFieldType(), $columnOptions); }
/** * @param ColumnOptionsGuesserInterface[] $guessers */ public function __construct(array $guessers = []) { $container = new ContainerBuilder(); $ids = ['mock']; $container->set('mock', new ColumnOptionsGuesserMock()); $index = 0; foreach ($guessers as $guesser) { $id = sprintf('guesser%d', ++$index); $ids[] = $id; $container->set($id, $guesser); } parent::__construct($container, $ids); }
/** * {@inheritdoc} */ protected function addSelectColumn($entityClassName, $tableAlias, $fieldName, $columnExpr, $columnAlias, $columnLabel, $functionExpr, $functionReturnType, $isDistinct = false) { if ($isDistinct) { $columnExpr = 'DISTINCT ' . $columnExpr; } if ($functionExpr !== null) { $functionExpr = $this->prepareFunctionExpression($functionExpr, $tableAlias, $fieldName, $columnExpr, $columnAlias); } $this->selectColumns[] = sprintf('%s as %s', $functionExpr !== null ? $functionExpr : $columnExpr, $columnAlias); $fieldType = $functionReturnType; if ($fieldType === null) { $fieldType = $this->getFieldType($entityClassName, $fieldName); } $columnOptions = [DatagridGuesser::FORMATTER => ['label' => $columnLabel, 'translatable' => false], DatagridGuesser::SORTER => ['data_name' => $columnAlias], DatagridGuesser::FILTER => ['data_name' => $this->getFilterByExpr($entityClassName, $tableAlias, $fieldName, $columnAlias), 'translatable' => false]]; if ($functionExpr !== null) { $columnOptions[DatagridGuesser::FILTER][FilterUtility::BY_HAVING_KEY] = true; } $this->datagridGuesser->applyColumnGuesses($entityClassName, $fieldName, $fieldType, $columnOptions); $this->datagridGuesser->setColumnOptions($this->config, $columnAlias, $columnOptions); }
/** * @param FieldConfigId $field * @param array $columnOptions */ protected function prepareColumnOptions(FieldConfigId $field, array &$columnOptions) { $fieldName = $field->getFieldName(); $columnOptions = [DatagridGuesser::FORMATTER => ['label' => $this->getFieldConfig('entity', $field)->get('label') ?: $fieldName], DatagridGuesser::SORTER => ['data_name' => $fieldName], DatagridGuesser::FILTER => ['data_name' => $fieldName, 'enabled' => false]]; $this->datagridGuesser->applyColumnGuesses($field->getClassName(), $fieldName, $field->getFieldType(), $columnOptions); }