/** * {@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); }
/** * {@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); }
/** * {@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()); } }
/** * {@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']); }
/** * {@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']); }
/** * @param MetadataObject $data * @param array $columnsData */ protected function setColumns(MetadataObject $data, array $columnsData) { $data->offsetAddToArray('columns', $columnsData); }
/** * {@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) { $data->offsetAddToArray(MetadataObject::REQUIRED_MODULES_KEY, ['ororeport/js/view-sql-query-builder']); }
/** * {@inheritDoc} */ public function visitMetadata(DatagridConfiguration $config, MetadataObject $data) { $data->offsetAddToArray(static::METADATA_ACTION_KEY, $this->getActionsMetadata($config)); }