add searchbox select unselect

This commit is contained in:
xiaomlove
2022-11-14 19:02:42 +08:00
parent 81c3b4fa24
commit 96a1146db6
14 changed files with 100 additions and 44 deletions

View File

@@ -3,6 +3,7 @@
namespace App\Filament\Resources\Section;
use App\Filament\OptionsTrait;
use App\Filament\RedirectIndexTrait;
use App\Filament\Resources\Section\IconResource\Pages;
use App\Filament\Resources\Section\IconResource\RelationManagers;
use App\Models\Icon;

View File

@@ -2,12 +2,15 @@
namespace App\Filament\Resources\Section\IconResource\Pages;
use App\Filament\RedirectIndexTrait;
use App\Filament\Resources\Section\IconResource;
use Filament\Pages\Actions;
use Filament\Resources\Pages\EditRecord;
class EditIcon extends EditRecord
{
use RedirectIndexTrait;
protected static string $resource = IconResource::class;
protected static string $view = 'filament.resources.system.category-icon-resource.pages.edit-record';

View File

@@ -98,7 +98,7 @@ class SecondIconResource extends Resource
Tables\Columns\TextColumn::make('class_name')->label(__('label.second_icon.class_name')),
];
$taxonomyList = self::listTaxonomy();
foreach (SearchBox::$taxonomies as $torrentField => $tableName) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$columns[] = Tables\Columns\TextColumn::make($torrentField)->formatStateUsing(function ($state) use ($taxonomyList, $torrentField) {
return $taxonomyList[$torrentField]->get($state);
});
@@ -121,8 +121,8 @@ class SecondIconResource extends Resource
{
static $taxonomyList = [];
if (empty($taxonomyList)) {
foreach (SearchBox::$taxonomies as $torrentField => $tableName) {
$taxonomyList[$torrentField] = NexusDB::table($tableName)->pluck('name', 'id');
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$taxonomyList[$torrentField] = NexusDB::table($taxonomyTableModel['table'])->pluck('name', 'id');
}
}
return $taxonomyList;

View File

@@ -2,6 +2,7 @@
namespace App\Filament\Resources\Section\SecondIconResource\Pages;
use App\Filament\RedirectIndexTrait;
use App\Filament\Resources\Section\SecondIconResource;
use App\Models\SearchBox;
use App\Models\SecondIcon;
@@ -10,6 +11,8 @@ use Filament\Resources\Pages\EditRecord;
class EditSecondIcon extends EditRecord
{
use RedirectIndexTrait;
protected static string $resource = SecondIconResource::class;
protected function getActions(): array
@@ -27,7 +30,7 @@ class EditSecondIcon extends EditRecord
protected function mutateFormDataBeforeFill(array $data): array
{
$mode = $data['mode'];
foreach (SearchBox::$taxonomies as $torrentField => $table) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$taxonomyValue = $data[$torrentField] ?? null;
unset($data[$torrentField]);
$data[$torrentField][$mode] = $taxonomyValue;

View File

@@ -44,13 +44,13 @@ class SearchBox extends NexusModel
const EXTRA_DISPLAY_SEED_BOX_ICON_ON_TORRENT_LIST = 'display_seed_box_icon_on_torrent_list';
public static array $taxonomies = [
'source' => 'sources',
'medium' => 'media',
'codec' => 'codecs',
'audiocodec' => 'audiocodecs',
'standard' => 'standards',
'processing' => 'processings',
'team' => 'teams',
'source' => ['table' => 'sources', 'model' => Source::class],
'medium' => ['table' => 'media', 'model' => Media::class],
'codec' => ['table' => 'codecs', 'model' => Codec::class],
'audiocodec' => ['table' => 'audiocodecs', 'model' => AudioCodec::class],
'standard' => ['table' => 'standards', 'model' => Standard::class],
'processing' => ['table' => 'processings', 'model' => Processing::class],
'team' => ['table' => 'teams', 'model' => Team::class]
];
public static array $extras = [
@@ -143,7 +143,7 @@ class SearchBox extends NexusModel
if (!$searchBox instanceof self) {
$searchBox = self::get(intval($searchBox));
}
$table = self::$taxonomies[$torrentField];
$table = self::$taxonomies[$torrentField]['table'];
return NexusDB::table($table)->where(function (Builder $query) use ($searchBox) {
return $query->where('mode', $searchBox->id)->orWhere('mode', 0);
})->get();

View File

@@ -14,7 +14,7 @@ class SecondIcon extends NexusModel
public static function formatFormData(array $data): array
{
foreach (SearchBox::$taxonomies as $torrentField => $table) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$mode = $data['mode'];
if ($mode === null || empty($data[$torrentField][$mode])) {
unset($data[$torrentField]);

View File

@@ -119,7 +119,7 @@ class SearchBoxRepository extends BaseRepository
$searchBoxList = SearchBox::query()->get();
foreach ($searchBoxList as $searchBox) {
$taxonomies = [];
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTable) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$searchBoxField = "show" . $torrentField;
if ($searchBox->showsubcat && $searchBox->{$searchBoxField}) {
$taxonomies[] = [
@@ -154,7 +154,7 @@ class SearchBoxRepository extends BaseRepository
}
}
} else {
foreach (SearchBox::$taxonomies as $torrentField => $table) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$select = $this->buildTaxonomySelect($searchBox, $torrentField, $torrentInfo);
if ($select) {
$results[] = $select;
@@ -180,7 +180,7 @@ class SearchBoxRepository extends BaseRepository
}
}
} else {
foreach (SearchBox::$taxonomies as $torrentField => $table) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$taxonomy = $this->getTaxonomyInfo($searchBox, $torrentWithTaxonomy, $torrentField);
if ($taxonomy) {
$results[] = $taxonomy;
@@ -208,7 +208,7 @@ class SearchBoxRepository extends BaseRepository
$searchBoxId = $searchBox->id;
$searchBoxField = "show" . $torrentField;
if ($searchBox->showsubcat && $searchBox->{$searchBoxField}) {
$table = SearchBox::$taxonomies[$torrentField];
$table = SearchBox::$taxonomies[$torrentField]['table'];
$select = sprintf("<b>%s: </b>", $searchBox->getTaxonomyLabel($torrentField));
$select .= sprintf('<select name="%s_sel[%s]" data-mode="%s_%s">',$torrentField, $searchBoxId, $torrentField, $searchBoxId);
$select .= sprintf('<option value="%s">%s</option>', 0, nexus_trans('nexus.select_one_please'));
@@ -242,7 +242,7 @@ class SearchBoxRepository extends BaseRepository
}
}
} else {
foreach (SearchBox::$taxonomies as $torrentField => $table) {
foreach (SearchBox::$taxonomies as $torrentField => $taxonomyTableModel) {
$select = $this->buildTaxonomyFormSchema($searchBox, $torrentField);
if ($select) {
$results[] = $select;