コード例 #1
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $currentUser = $this->getCurrentUser();
     if (!$currentUser) {
         return;
     }
     $gridName = $config->getName();
     $gridViews = $this->getGridViewRepository()->findGridViews($this->aclHelper, $currentUser, $gridName);
     /** Set default columns data to initial state from config */
     $this->setInitialStateColumnsOrder($config, $data);
     /** Set default columns data to metadata */
     $this->setColumnsOrder($config, $data);
     if (!$gridViews) {
         $this->setStateColumnsOrder($config, $data);
     }
     /** Update columns data from url if exists */
     $urlColumnsData = $this->updateColumnsDataFromUrl($config, $data);
     if (!$gridViews) {
         return;
     }
     $newGridView = $this->createNewGridView($config, $data);
     $currentState = $data->offsetGet('state');
     /** Get columns data from config */
     $columnsData = $this->getColumnsWithOrder($config);
     /** Get columns data from grid view */
     $gridViewColumnsData = null;
     if (isset($currentState['gridView'])) {
         foreach ($gridViews as $gridView) {
             if ((int) $currentState['gridView'] === $gridView->getId()) {
                 /** Get columns state from current view */
                 $gridViewColumnsData = $gridView->getColumnsData();
                 /** Get columns data from current view */
                 $columnsData = $gridViewColumnsData;
                 break;
             }
         }
     }
     /** Get columns data from config or current view if no data in URL */
     if (!empty($urlColumnsData)) {
         if ($this->columnsHelper->compareColumnsData($gridViewColumnsData, $urlColumnsData)) {
             $columnsData = $gridViewColumnsData;
         } else {
             $columnsData = $urlColumnsData;
         }
     }
     /** Save current columns state or restore to default view __all__ setting config columns data */
     $this->setState($data, $columnsData);
     /** Set config columns data */
     $this->setGridViewDefaultOrder($data, $newGridView->getColumnsData());
 }
コード例 #2
0
 /**
  * @param array $viewData
  * @param array $urlData
  * @param array $result
  *
  * @dataProvider compareColumnsDataProvider
  */
 public function testCompareColumnsData($viewData, $urlData, $result)
 {
     $isEqual = $this->columnsHelper->compareColumnsData($viewData, $urlData);
     static::assertEquals($isEqual, $result);
 }