Example #1
0
 /**
  * {@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 = $this->getSortersState($config, $data);
     $initialSortersState = $this->getSortersState($config, $data, false);
     $data->offsetAddToArray('initialState', ['sorters' => $initialSortersState]);
     $data->offsetAddToArray('state', ['sorters' => $sortersState]);
 }
 /**
  * Set Default columns data for default grid view __all__
  *
  * @param MetadataObject $data
  * @param array          $columnsData
  */
 protected function setGridViewDefaultOrder(MetadataObject $data, $columnsData)
 {
     $gridViews = $data->offsetGetOr('gridViews');
     if ($gridViews && isset($gridViews['views'])) {
         foreach ($gridViews['views'] as &$gridView) {
             if (GridViewsExtension::DEFAULT_VIEW_ID === $gridView['name']) {
                 $gridView[self::COLUMNS_PATH] = $columnsData;
             }
         }
         unset($gridView);
         $data->offsetSet('gridViews', $gridViews);
     }
 }