/**
  * @param Collection        $collection
  * @param ConfigIdInterface $fieldConfig
  *
  * @return array
  */
 protected function getValueForCollection(Collection $collection, ConfigIdInterface $fieldConfig)
 {
     $extendConfig = $this->extendProvider->getConfigById($fieldConfig);
     $titleFieldName = $extendConfig->get('target_title');
     $value = $this->getEntityRouteOptions($extendConfig->get('target_entity'));
     $values = [];
     $priorities = [];
     /** @var object $item */
     foreach ($collection as $item) {
         $value['route_params']['id'] = $item->getId();
         $title = [];
         foreach ($titleFieldName as $fieldName) {
             $title[] = $this->propertyAccessor->getValue($item, $fieldName);
         }
         $values[] = ['id' => $item->getId(), 'link' => $value['route'] ? $this->router->generate($value['route'], $value['route_params']) : false, 'title' => implode(' ', $title)];
         if ($item instanceof PriorityItem) {
             $priorities[] = $item->getPriority();
         }
     }
     // sort values by priority if needed
     if (!empty($priorities) && count($priorities) === count($values)) {
         array_multisort($priorities, $values);
     }
     $value['values'] = $values;
     return $value;
 }
 /**
  * @param ConfigInterface $config
  * @return bool
  */
 public function filterFields(ConfigInterface $config)
 {
     $extendConfig = $this->extendProvider->getConfigById($config->getId());
     /** @var FieldConfigId $fieldConfigId */
     $fieldConfigId = $extendConfig->getId();
     // skip system, new and deleted fields
     if (!$config->is('owner', ExtendScope::OWNER_CUSTOM) || $config->is('state', ExtendScope::STATE_NEW) || $config->is('is_deleted')) {
         return false;
     }
     // skip invisible fields
     if (!$this->viewProvider->getConfigById($config->getId())->is('is_displayable')) {
         return false;
     }
     // skip relations if they are referenced to deleted entity
     $underlyingFieldType = $this->fieldTypeHelper->getUnderlyingType($fieldConfigId->getFieldType());
     if (in_array($underlyingFieldType, RelationType::$anyToAnyRelations) && $this->extendProvider->getConfig($extendConfig->get('target_entity'))->is('is_deleted', true)) {
         return false;
     }
     return true;
 }