Skip to content

Commit

Permalink
Adjust for SortQueryString
Browse files Browse the repository at this point in the history
  • Loading branch information
lrljoe authored Oct 27, 2024
1 parent 3659283 commit 3b28b79
Show file tree
Hide file tree
Showing 3 changed files with 141 additions and 106 deletions.
61 changes: 61 additions & 0 deletions src/Traits/Core/QueryStrings/HasQueryString.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;

use Livewire\Attributes\Locked;

trait HasQueryString
{
#[Locked]
public array $queryStringConfig = [
'columns' => [],
'filter' => [],
'search' => [],
'sorts' => [],
];

protected function getQueryStringConfig(string $type): array
{
return array_merge(['status' => null, 'alias' => null], ($this->queryStringConfig[$type] ?? []));
}

protected function hasQueryStringConfigStatus(string $type): bool
{
return isset($this->getQueryStringConfig($type)['status']);
}

protected function getQueryStringConfigStatus(string $type): bool
{
return $this->getQueryStringConfig($type)['status'] ?? $this->getQueryStringStatus();
}

protected function hasQueryStringConfigAlias(string $type): bool
{
return isset($this->getQueryStringConfig($type)['alias']);
}

protected function getQueryStringConfigAlias(string $type): string
{
return $this->getQueryStringConfig($type)['alias'] ?? $this->getQueryStringAlias()."-".$type;
}


protected function setQueryStringConfig(string $type, array $config): self
{
$this->queryStringConfig[$type] = array_merge($this->getQueryStringConfig($type), $config);

return $this;
}

protected function setQueryStringConfigStatus(string $type, bool $status): self
{
return $this->setQueryStringConfig($type, ['status' => $status]);

}

protected function setQueryStringConfigAlias(string $type, string $alias): self
{
return $this->setQueryStringConfig($type,['alias' => $alias]);
}

}
43 changes: 14 additions & 29 deletions src/Traits/Core/QueryStrings/HasQueryStringForSearch.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,32 @@

namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;

use Livewire\Attributes\Locked;

trait HasQueryStringForSearch
{
#[Locked]
public ?bool $queryStringStatusForSearch;

protected ?string $queryStringAliasForSearch;

protected function queryStringHasQueryStringForSearch(): array
{
return ($this->queryStringForSearchEnabled() && $this->searchIsEnabled()) ? ['search' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSearch()]] : [];

}

public function setupQueryStringStatusForSearch(): void
protected function setupQueryStringStatusForSearch(): void
{
if (! $this->hasQueryStringStatusForSearch()) {
$this->setQueryStringForSearchEnabled();
}
}

public function hasQueryStringStatusForSearch(): bool
protected function hasQueryStringStatusForSearch(): bool
{
return isset($this->queryStringStatusForSearch);
return $this->hasQueryStringConfigStatus('search');
}

public function getQueryStringStatusForSearch(): bool
protected function getQueryStringStatusForSearch(): bool
{
return $this->queryStringStatusForSearch ?? true;
return $this->getQueryStringConfigStatus("search");
}

public function queryStringForSearchEnabled(): bool
protected function queryStringForSearchEnabled(): bool
{
$this->setupQueryStringStatusForSearch();

Expand All @@ -43,39 +36,31 @@ public function queryStringForSearchEnabled(): bool

public function setQueryStringStatusForSearch(bool $status): self
{
$this->queryStringStatusForSearch = $status;

return $this;
return $this->setQueryStringConfigStatus("search", $status);
}

public function setQueryStringForSearchEnabled(): self
{
$this->setQueryStringStatusForSearch(true);

return $this;
return $this->setQueryStringStatusForSearch(true);
}

public function setQueryStringForSearchDisabled(): self
{
$this->setQueryStringStatusForSearch(false);

return $this;
return $this->setQueryStringStatusForSearch(false);
}

public function hasQueryStringAliasForSearch(): bool
protected function hasQueryStringAliasForSearch(): bool
{
return isset($this->queryStringAliasForSearch);
return $this->hasQueryStringConfigAlias('search');
}

public function getQueryStringAliasForSearch(): string
protected function getQueryStringAliasForSearch(): string
{
return $this->queryStringAliasForSearch ?? $this->getQueryStringAlias().'-search';
return $this->getQueryStringConfigAlias("search");
}

public function setQueryStringAliasForSearch(string $alias): self
{
$this->queryStringAliasForSearch = $alias;

return $this;
return $this->setQueryStringConfigAlias("search", $alias);
}
}
143 changes: 66 additions & 77 deletions src/Traits/Core/QueryStrings/HasQueryStringForSort.php
Original file line number Diff line number Diff line change
@@ -1,77 +1,66 @@
<?php

namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;

use Livewire\Attributes\Locked;

trait HasQueryStringForSort
{
#[Locked]
public ?bool $queryStringStatusForSort;

protected ?string $queryStringAliasForSort;

protected function queryStringHasQueryStringForSort(): array
{
return ($this->queryStringForSortEnabled() && $this->sortingIsEnabled()) ? ['sorts' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSort()]] : [];

}

public function setupQueryStringStatusForSort(): void
{
if (! $this->hasQueryStringStatusForSort()) {
$this->setQueryStringForSortEnabled();
}
}

public function hasQueryStringStatusForSort(): bool
{
return isset($this->queryStringStatusForSort);
}

public function getQueryStringStatusForSort(): bool
{
return $this->queryStringStatusForSort ?? true;
}

public function queryStringForSortEnabled(): bool
{
$this->setupQueryStringStatusForSort();

return $this->getQueryStringStatusForSort() && $this->sortingIsEnabled();
}

public function setQueryStringStatusForSort(bool $status): self
{
$this->queryStringStatusForSort = $status;

return $this;
}

public function setQueryStringForSortEnabled(): self
{
return $this->setQueryStringStatusForSort(true);
}

public function setQueryStringForSortDisabled(): self
{
return $this->setQueryStringStatusForSort(false);
}

public function hasQueryStringAliasForSort(): bool
{
return isset($this->queryStringAliasForSort);
}

public function getQueryStringAliasForSort(): string
{
return $this->queryStringAliasForSort ?? $this->getQueryStringAlias().'-sorts';
}

public function setQueryStringAliasForSort(string $alias): self
{
$this->queryStringAliasForSort = $alias;

return $this;
}
}
<?php

namespace Rappasoft\LaravelLivewireTables\Traits\Core\QueryStrings;

trait HasQueryStringForSort
{

protected function queryStringHasQueryStringForSort(): array
{
return ($this->queryStringForSortEnabled() && $this->sortingIsEnabled()) ? ['sorts' => ['except' => null, 'history' => false, 'keep' => false, 'as' => $this->getQueryStringAliasForSort()]] : [];

}
public function setupQueryStringStatusForSort(): void
{
if (! $this->hasQueryStringStatusForSort()) {
$this->setQueryStringForSortEnabled();
}
}

protected function hasQueryStringStatusForSort(): bool
{
return $this->hasQueryStringConfigStatus('sorts');
}

protected function getQueryStringStatusForSort(): bool
{
return $this->getQueryStringConfigStatus("sorts");
}

protected function queryStringForSortEnabled(): bool
{
$this->setupQueryStringStatusForSort();

return $this->getQueryStringStatusForSort() && $this->sortingIsEnabled();
}

public function setQueryStringStatusForSort(bool $status): self
{
return $this->setQueryStringConfigStatus("sorts", $status);
}

public function setQueryStringForSortEnabled(): self
{
return $this->setQueryStringStatusForSort(true);
}

public function setQueryStringForSortDisabled(): self
{
return $this->setQueryStringStatusForSort(false);
}

protected function hasQueryStringAliasForSort(): bool
{
return $this->hasQueryStringConfigAlias('sorts');
}

protected function getQueryStringAliasForSort(): string
{
return $this->getQueryStringConfigAlias("sorts");
}

public function setQueryStringAliasForSort(string $alias): self
{
return $this->setQueryStringConfigAlias("sorts", $alias);
}
}

0 comments on commit 3b28b79

Please sign in to comment.