/** * {@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); } }