nova-mega-filter icon indicating copy to clipboard operation
nova-mega-filter copied to clipboard

Error when moving between resources

Open Santukon opened this issue 3 years ago • 1 comments

Hello Team, I having an issue when moving between different resources that have megafilters with different columns. Is there a way to store the column in the session per resource?

Regards.

Santukon avatar Sep 05 '21 23:09 Santukon

Ok just solved it, creating a new trait that extends HasMegaFilterTrait and addind the resource name to the session name.

<?php

namespace App\Nova;

use DigitalCreative\MegaFilter\Column;
use DigitalCreative\MegaFilter\HasMegaFilterTrait;
use DigitalCreative\MegaFilter\MegaFilter;
use Illuminate\Support\Collection;
use Laravel\Nova\Http\Requests\NovaRequest;

trait HasMegaFilterTraitPatch {
	use HasMegaFilterTrait;

	/**
	 * Get the filters for the given request.
	 *
	 * @param NovaRequest $request
	 *
	 * @return mixed
	 */
	public function resolveFilters( NovaRequest $request ) {
		if ( $this->shouldApplyMegaFilter( $request ) && $card = $this->getMegaFilterCard( $request ) ) {
			$filterColumns = $this->getFilterColumns();

			if ( $filterColumns ) {
				session( [ 'mega-filter-columns-' . $request->resource => $filterColumns ] );
			}

			return parent::resolveFilters( $request )->merge( $card->filters() );

		}

		return parent::resolveFilters( $request );

	}

	/**
	 * @param NovaRequest $request
	 * @param MegaFilter $card
	 *
	 * @return Collection
	 */
	private function getFilterState( NovaRequest $request, MegaFilter $card ): Collection {
		$value = $this->getFilterColumns();

		if ( ! $value ) {
			$value = session( 'mega-filter-columns-' . $request->resource );
		}

		$attributes = $card->columns()->filter( static function ( Column $column ) use ( $value ) {

			if ( $column->permanent ) {

				return true;

			}

			if ( is_array( $value ) && is_bool( $value = $value[ $column->attribute ] ) ) {

				return $value;

			}

			return $column->checked;

		} );

		return $attributes->pluck( 'attribute' )->values();

	}
}

Santukon avatar Sep 06 '21 00:09 Santukon