Esempio n. 1
0
 /**
  * {@inheritdoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $currentViewId = $this->getCurrentViewId($config->getName());
     $this->setDefaultParams($config->getName());
     $data->offsetAddToArray('initialState', ['gridView' => self::DEFAULT_VIEW_ID]);
     $data->offsetAddToArray('state', ['gridView' => $currentViewId]);
     $allLabel = null;
     if (isset($config['options'], $config['options']['gridViews'], $config['options']['gridViews']['allLabel'])) {
         $allLabel = $this->translator->trans($config['options']['gridViews']['allLabel']);
     }
     /** @var AbstractViewsList $list */
     $list = $config->offsetGetOr(self::VIEWS_LIST_KEY, false);
     $systemGridView = new View(self::DEFAULT_VIEW_ID);
     $systemGridView->setDefault($this->getDefaultViewId($config->getName()) === null);
     $gridViews = ['choices' => [['label' => $allLabel, 'value' => self::DEFAULT_VIEW_ID]], 'views' => [$systemGridView->getMetadata()]];
     if ($list !== false) {
         $configuredGridViews = $list->getMetadata();
         $configuredGridViews['views'] = array_merge($gridViews['views'], $configuredGridViews['views']);
         $configuredGridViews['choices'] = array_merge($gridViews['choices'], $configuredGridViews['choices']);
         $gridViews = $configuredGridViews;
     }
     if ($this->eventDispatcher->hasListeners(GridViewsLoadEvent::EVENT_NAME)) {
         $event = new GridViewsLoadEvent($config->getName(), $gridViews);
         $this->eventDispatcher->dispatch(GridViewsLoadEvent::EVENT_NAME, $event);
         $gridViews = $event->getGridViews();
     }
     $gridViews['gridName'] = $config->getName();
     $gridViews['permissions'] = $this->getPermissions();
     $data->offsetAddToArray('gridViews', $gridViews);
 }
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $params = $this->getParameters()->get(ParameterBag::ADDITIONAL_PARAMETERS, []);
     $currentView = isset($params[self::VIEWS_PARAM_KEY]) ? $params[self::VIEWS_PARAM_KEY] : null;
     $data->offsetAddToArray('initialState', ['gridView' => '__all__']);
     $data->offsetAddToArray('state', ['gridView' => $currentView]);
     $allLabel = null;
     if (isset($config['options']) && isset($config['options']['gridViews']) && isset($config['options']['gridViews']['allLabel'])) {
         $allLabel = $this->translator->trans($config['options']['gridViews']['allLabel']);
     }
     /** @var AbstractViewsList $list */
     $list = $config->offsetGetOr(self::VIEWS_LIST_KEY, false);
     $gridViews = ['choices' => [['label' => $allLabel, 'value' => '__all__']], 'views' => [(new View('__all__'))->getMetadata()]];
     if ($list !== false) {
         $configuredGridViews = $list->getMetadata();
         $configuredGridViews['views'] = array_merge($gridViews['views'], $configuredGridViews['views']);
         $configuredGridViews['choices'] = array_merge($gridViews['choices'], $configuredGridViews['choices']);
         $gridViews = $configuredGridViews;
     }
     if ($this->eventDispatcher->hasListeners(GridViewsLoadEvent::EVENT_NAME)) {
         $event = new GridViewsLoadEvent($config->getName(), $gridViews);
         $this->eventDispatcher->dispatch(GridViewsLoadEvent::EVENT_NAME, $event);
         $gridViews = $event->getGridViews();
     }
     $gridViews['gridName'] = $config->getName();
     $gridViews['permissions'] = $this->getPermissions();
     $data->offsetSet('gridViews', $gridViews);
 }
Esempio n. 3
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $defaultPage = 1;
     $defaultPerPage = $config->offsetGetByPath(ToolbarExtension::PAGER_DEFAULT_PER_PAGE_OPTION_PATH, 10);
     $initialState = ['currentPage' => $defaultPage, 'pageSize' => $defaultPerPage];
     $state = ['currentPage' => $this->getOr(PagerInterface::PAGE_PARAM, $defaultPage), 'pageSize' => $this->getOr(PagerInterface::PER_PAGE_PARAM, $defaultPerPage)];
     $data->offsetAddToArray('initialState', $initialState);
     $data->offsetAddToArray('state', $state);
 }
Esempio n. 4
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $params = $this->getParameters()->get(ParameterBag::ADDITIONAL_PARAMETERS, []);
     $currentView = isset($params[self::VIEWS_PARAM_KEY]) ? $params[self::VIEWS_PARAM_KEY] : null;
     $data->offsetAddToArray('initialState', ['gridView' => null]);
     $data->offsetAddToArray('state', ['gridView' => $currentView]);
     /** @var AbstractViewsList $list */
     $list = $config->offsetGetOr(self::VIEWS_LIST_KEY, false);
     if ($list !== false) {
         $data->offsetSet('gridViews', $list->getMetadata());
     }
 }
Esempio n. 5
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $params = $this->getParameters()->all();
     $gridParams = array_filter($params, function ($param) {
         return !is_array($param) && !is_null($param);
     });
     $data->offsetAddToArray('gridParams', $gridParams);
 }
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     /**
      * Default toolbar options
      *  [
      *      'hide'       => false,
      *      'pageSize'   => [
      *          'hide'  => false,
      *          'items' => [10, 25, 50, 100],
      *          'default_per_page' => 10
      *       ],
      *      'pagination' => [
      *          'hide' => false,
      *      ]
      *  ];
      */
     $perPageDefault = $config->offsetGetByPath(self::PAGER_DEFAULT_PER_PAGE_OPTION_PATH);
     $pageSizeItems = $config->offsetGetByPath(self::PAGER_ITEMS_OPTION_PATH);
     $exist = array_filter($pageSizeItems, function ($item) use($perPageDefault) {
         if (is_array($item) && isset($item['size'])) {
             return $perPageDefault == $item['size'];
         } elseif (is_numeric($item)) {
             return $perPageDefault == $item;
         }
         return false;
     });
     if (empty($exist)) {
         throw new \LogicException(sprintf('Default page size "%d" must present in size items array', $perPageDefault));
     }
     $options = $config->offsetGetByPath(ToolbarExtension::OPTIONS_PATH, []);
     // get user specified require js modules from options
     if (isset($options[MetadataObject::REQUIRED_MODULES_KEY])) {
         $data->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, $options[MetadataObject::REQUIRED_MODULES_KEY]);
         unset($options[MetadataObject::REQUIRED_MODULES_KEY]);
     }
     // grid options passed under "options" node
     $data->offsetAddToArray(self::METADATA_KEY, $options);
 }
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     // get only columns here because columns will be represented on frontend
     $columns = $config->offsetGetOr(Configuration::COLUMNS_KEY, []);
     $propertiesMetadata = [];
     foreach ($columns as $name => $fieldConfig) {
         $fieldConfig = PropertyConfiguration::createNamed($name, $fieldConfig);
         $metadata = $this->getPropertyObject($fieldConfig)->getMetadata();
         // translate label on backend
         $metadata['label'] = $this->translator->trans($metadata['label']);
         $propertiesMetadata[] = $metadata;
     }
     $data->offsetAddToArray('columns', $propertiesMetadata);
 }
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $actionsMetadata = [];
     $actions = $config->offsetGetOr(static::ACTION_KEY, []);
     foreach ($actions as $name => $action) {
         $action = $this->getActionObject($name, $action);
         if ($action !== false) {
             $metadata = $action->getOptions()->toArray([], static::$excludeParams);
             $metadata['label'] = isset($metadata['label']) ? $this->translator->trans($metadata['label']) : null;
             $actionsMetadata[$action->getName()] = $metadata;
         }
     }
     $data->offsetAddToArray(static::METADATA_ACTION_KEY, $actionsMetadata);
 }
 /**
  * {@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]);
 }
 /**
  * {@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']);
 }
Esempio n. 11
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $metaData)
 {
     $totals = $config->offsetGetByPath(Configuration::TOTALS_PATH);
     $metaData->offsetAddToArray('initialState', ['totals' => $totals])->offsetAddToArray('state', ['totals' => $totals])->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, ['orodatagrid/js/totals-builder']);
 }
Esempio n. 12
0
 /**
  * @param MetadataObject $data
  * @param array          $columnsData
  */
 protected function setColumns(MetadataObject $data, array $columnsData)
 {
     $data->offsetAddToArray('columns', $columnsData);
 }
Esempio n. 13
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']);
 }
Esempio n. 14
0
 /**
  * {@inheritdoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $data->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, ['ororeport/js/view-sql-query-builder']);
 }
Esempio n. 15
0
 /**
  * {@inheritDoc}
  */
 public function visitMetadata(DatagridConfiguration $config, MetadataObject $data)
 {
     $data->offsetAddToArray(static::METADATA_ACTION_KEY, $this->getActionsMetadata($config));
 }