Esempio n. 1
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $filtersState = $data->offsetGetByPath('[state][filters]', []);
     $initialFiltersState = $filtersState;
     $filtersMetaData = [];
     $filters = $this->getFiltersToApply($config);
     $values = $this->getValuesToApply($config);
     $initialValues = $this->getValuesToApply($config, false);
     foreach ($filters as $filter) {
         $value = isset($values[$filter->getName()]) ? $values[$filter->getName()] : false;
         $initialValue = isset($initialValues[$filter->getName()]) ? $initialValues[$filter->getName()] : false;
         $filtersState = $this->updateFiltersState($filter, $value, $filtersState);
         $initialFiltersState = $this->updateFiltersState($filter, $initialValue, $initialFiltersState);
         $metadata = $filter->getMetadata();
         $filtersMetaData[] = array_merge($metadata, ['label' => $metadata[FilterUtility::TRANSLATABLE_KEY] ? $this->translator->trans($metadata['label']) : $metadata['label']]);
     }
     $data->offsetAddToArray('initialState', ['filters' => $initialFiltersState])->offsetAddToArray('state', ['filters' => $filtersState])->offsetAddToArray('filters', $filtersMetaData)->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, ['orofilter/js/datafilter-builder']);
 }
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $filtersState = $data->offsetGetByPath('[state][filters]', []);
     $filtersMetaData = [];
     $filters = $this->getFiltersToApply($config);
     $values = $this->getValuesToApply($config);
     foreach ($filters as $filter) {
         $value = isset($values[$filter->getName()]) ? $values[$filter->getName()] : false;
         if ($value !== false) {
             $form = $filter->getForm();
             if (!$form->isSubmitted()) {
                 $form->submit($value);
             }
             if ($form->isValid()) {
                 $filtersState[$filter->getName()] = $value;
             }
         }
         $metadata = $filter->getMetadata();
         $filtersMetaData[] = array_merge($metadata, ['label' => $this->translator->trans($metadata['label'])]);
     }
     $data->offsetAddToArray('state', ['filters' => $filtersState])->offsetAddToArray('filters', $filtersMetaData)->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, ['oro/datafilter-builder']);
 }
 /**
  * {@inheritdoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $multisort = $config->offsetGetByPath(Configuration::MULTISORT_PATH, false);
     $sorters = $this->getSorters($config);
     $proceed = [];
     foreach ($data->offsetGetOr('columns', []) as $key => $column) {
         if (isset($column['name']) && isset($sorters[$column['name']])) {
             $data->offsetSetByPath(sprintf('[columns][%s][sortable]', $key), true);
             $proceed[] = $column['name'];
         }
     }
     $extraSorters = array_diff(array_keys($sorters), $proceed);
     if (count($extraSorters)) {
         throw new \LogicException(sprintf('Could not found column(s) "%s" for sorting', implode(', ', $extraSorters)));
     }
     $data->offsetAddToArray(MetadataObject::OPTIONS_KEY, ['multipleSorting' => $multisort]);
     $sortersState = $data->offsetGetByPath('[state][sorters]', []);
     $sorters = $this->getSortersToApply($config);
     foreach ($sorters as $column => $definition) {
         list($direction) = $definition;
         $sortersState[$column] = $this->normalizeDirection($direction);
     }
     $data->offsetAddToArray('state', ['sorters' => $sortersState]);
 }
Esempio n. 4
0
 /**
  * @param DatagridConfiguration $config
  * @param MetadataObject $data
  * @param bool $readParameters
  * @return array
  */
 protected function getSortersState(DatagridConfiguration $config, MetadataObject $data, $readParameters = true)
 {
     $sortersState = $data->offsetGetByPath('[state][sorters]', []);
     $sorters = $this->getSortersToApply($config, $readParameters);
     foreach ($sorters as $column => $definition) {
         list($direction) = $definition;
         $sortersState[$column] = $this->normalizeDirection($direction);
     }
     return $sortersState;
 }