/**
  * Creates view data for each filter.
  *
  * @param DocumentIterator $result
  * @param SearchRequest    $request
  *
  * @return ViewData[]
  */
 protected function getFiltersViewData(DocumentIterator $result, SearchRequest $request)
 {
     $out = [];
     /** @var FilterInterface[] $filters */
     $filters = $this->container->all();
     foreach ($filters as $name => $filter) {
         if ($filter instanceof ViewDataFactoryInterface) {
             $viewData = $filter->createViewData();
         } else {
             $viewData = new ViewData();
         }
         $viewData->setName($name);
         $viewData->setUrlParameters($this->composeUrlParameters($request, $filter));
         $viewData->setState($request->get($name));
         $viewData->setTags($filter->getTags());
         $viewData->setResetUrlParameters($this->composeUrlParameters($request, $filter, [$name]));
         $out[$name] = $filter->getViewData($result, $viewData);
     }
     return $out;
 }