Apply Laravel coding style

Shift automatically applies the Laravel coding style - which uses the PSR-12 coding style as a base with some minor additions.

You may customize the code style applied by configuring [Pint](https://laravel.com/docs/pint), [PHP CS Fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer), or [PHP CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer) for your project root.

For more information on customizing the code style applied by Shift, [watch this short video](https://laravelshift.com/videos/shift-code-style).
This commit is contained in:
Shift
2023-02-19 16:18:46 +00:00
committed by HolgerHatGarKeineNode
parent a15ca4a2bc
commit 5776b01d15
333 changed files with 4915 additions and 4967 deletions

View File

@@ -8,6 +8,7 @@ use SimpleSoftwareIO\QrCode\Facades\QrCode;
class Auth47Component extends Component
{
public ?string $k1 = null;
protected ?string $url = null;
public function mount()

View File

@@ -12,8 +12,11 @@ use SimpleSoftwareIO\QrCode\Facades\QrCode;
class LNUrlAuth extends Component
{
public ?string $k1 = null;
protected ?string $url = null;
protected ?string $lnurl = null;
protected ?string $qrCode = null;
public function switchToEmailLogin()

View File

@@ -17,7 +17,7 @@ class BitcoinEventTable extends Component
public function mount()
{
if (!$this->year) {
if (! $this->year) {
$this->year = now()->year;
}
}
@@ -30,30 +30,30 @@ class BitcoinEventTable extends Component
'venue.city.country',
])
->where('bitcoin_events.from', '>=', now())
->where(fn($query) => $query
->where(fn ($query) => $query
->whereHas('venue.city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
->orWhere('show_worldwide', true)
)
->get()
->map(fn($event) => [
'id' => $event->id,
'name' => $event->title,
->map(fn ($event) => [
'id' => $event->id,
'name' => $event->title,
'coords' => [$event->venue->city->latitude, $event->venue->city->longitude],
]),
'events' => BitcoinEvent::query()
'events' => BitcoinEvent::query()
->where('bitcoin_events.from', '>=', now())
->where(fn($query) => $query
->where(fn ($query) => $query
->whereHas('venue.city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
->orWhere('show_worldwide', true)
)
->get()
->map(fn($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->title,
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->title,
'description' => $event->description,
]),
])->layout('layouts.app', [
@@ -61,7 +61,7 @@ class BitcoinEventTable extends Component
title: __('Bitcoin Events'),
description: __('Search out a Bitcoin Event'),
image: asset('img/screenshot.png')
)
),
]);
}
@@ -69,13 +69,13 @@ class BitcoinEventTable extends Component
{
return to_route('bitcoinEvent.table.bitcoinEvent', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'country' => $this->country->code,
'year' => $this->year,
'bitcoin_events' => [
'filters' => [
'byid' => $id,
],
]
],
]);
}
@@ -83,13 +83,13 @@ class BitcoinEventTable extends Component
{
return to_route('bitcoinEvent.table.bitcoinEvent', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'country' => $this->country->code,
'year' => $this->year,
'bitcoin_events' => [
'filters' => [
'byid' => $ids,
]
]
],
],
]);
}
}

View File

@@ -10,7 +10,9 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class BookCaseTable extends Component
{
public ?Country $country = null;
public string $c = 'de';
public array $bookcases = [];
protected $queryString = ['bookcases'];
@@ -18,16 +20,16 @@ class BookCaseTable extends Component
public function render()
{
return view('livewire.book-case.book-case-table', [
'markers' => !isset($this->table['filters']['byids']) ? []
'markers' => ! isset($this->table['filters']['byids']) ? []
: BookCase::query()
->whereIn('id', str($this->table['filters']['byids'] ?? '')->explode(','))
->get()
->map(fn($b) => [
'title' => $b->title,
'lat' => $b->latitude,
'lng' => $b->longitude,
'url' => route('bookCases.comment.bookcase', ['country' => $this->country, 'bookCase' => $b]),
'icon' => asset('img/btc-logo-6219386_1280.png'),
->map(fn ($b) => [
'title' => $b->title,
'lat' => $b->latitude,
'lng' => $b->longitude,
'url' => route('bookCases.comment.bookcase', ['country' => $this->country, 'bookCase' => $b]),
'icon' => asset('img/btc-logo-6219386_1280.png'),
'icon_size' => [42, 42],
])
->toArray(),
@@ -40,7 +42,7 @@ class BookCaseTable extends Component
title: __('Bookcases'),
description: __('Search out a public bookcase'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -17,7 +17,7 @@ class CityTable extends Component
title: __('Bookcases'),
description: __('Search out a public bookcase'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -21,8 +21,6 @@ class CommentBookCase extends Component
public BookCase $bookCase;
public function render()
{
return view('livewire.book-case.comment-book-case')
@@ -31,7 +29,7 @@ class CommentBookCase extends Component
title: $this->bookCase->title,
description: $this->bookCase->address,
image: $this->bookCase->getFirstMediaUrl('images') ?? asset('img/bookcase.jpg'),
)
),
]);
}
@@ -43,7 +41,7 @@ class CommentBookCase extends Component
$this->bookCase
->addMedia($this->photo)
->usingFileName(md5($this->photo->getClientOriginalName()) . '.' . $this->photo->getClientOriginalExtension())
->usingFileName(md5($this->photo->getClientOriginalName()).'.'.$this->photo->getClientOriginalExtension())
->toMediaCollection('images');
return to_route('bookCases.comment.bookcase', ['country' => $this->country, 'bookCase' => $this->bookCase->id]);
@@ -62,7 +60,7 @@ class CommentBookCase extends Component
if (str($url)->contains('http')) {
return $url;
}
if (!str($url)->contains('http')) {
if (! str($url)->contains('http')) {
return str($url)->prepend('https://');
}
}

View File

@@ -15,6 +15,7 @@ class OrangePillForm extends Component
public Country $country;
public BookCase $bookCase;
public ?OrangePill $orangePill = null;
public $image;
@@ -27,22 +28,22 @@ class OrangePillForm extends Component
{
return [
'orangePill.book_case_id' => 'required',
'orangePill.user_id' => 'required',
'orangePill.amount' => 'required|numeric',
'orangePill.date' => 'required|date',
'orangePill.comment' => 'required|string',
'image' => 'image|max:8192', // 8MB Max
'orangePill.user_id' => 'required',
'orangePill.amount' => 'required|numeric',
'orangePill.date' => 'required|date',
'orangePill.comment' => 'required|string',
'image' => 'image|max:8192', // 8MB Max
];
}
public function mount()
{
if (!$this->orangePill) {
if (! $this->orangePill) {
$this->orangePill = new OrangePill([
'user_id' => auth()->id(),
'user_id' => auth()->id(),
'book_case_id' => $this->bookCase->id,
'date' => now(),
'amount' => 1,
'date' => now(),
'amount' => 1,
]);
} elseif ($this->orangePill->user_id !== auth()->id()) {
abort(403);

View File

@@ -16,7 +16,7 @@ class Heatmap extends Component
->active()
->whereHas('orangePills')
->get()
->map(fn($bookCase) => [
->map(fn ($bookCase) => [
'lat' => $bookCase->latitude,
'lng' => $bookCase->longitude,
]);
@@ -28,7 +28,7 @@ class Heatmap extends Component
title: __('Heatmap of Bookcases'),
description: __('On this map you can see the success and spread of the Bitcoin books.'),
image: asset('img/heatmap_bookcases.png'),
)
),
]);
}
}

View File

@@ -10,7 +10,9 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class HighscoreTable extends Component
{
public Country $country;
public bool $viewingModal = false;
public ?User $modal = null;
public function render()
@@ -31,7 +33,7 @@ class HighscoreTable extends Component
title: __('Highscore Table'),
description: __('Hall of fame of our honorable plebs'),
image: asset('img/highscore_table_screenshot.png'),
)
),
]);
}

View File

@@ -19,15 +19,15 @@ class WorldMap extends Component
->withCount('orangePills')
->active()
->get()
->map(fn($bookCase) => [
->map(fn ($bookCase) => [
'lat' => $bookCase->latitude,
'lng' => $bookCase->longitude,
'url' => url()->route('bookCases.comment.bookcase',
[
'country' => $this->country,
'country' => $this->country,
'bookCase' => $bookCase,
]),
'op' => $bookCase->orange_pills_count,
'op' => $bookCase->orange_pills_count,
])
->toArray(),
])->layout('layouts.app', [
@@ -35,7 +35,7 @@ class WorldMap extends Component
title: __('World Map of Bookcases'),
description: __('On this map you can see bookcases that have been orange pilled. You can also click on a marker to go to the search result.'),
image: asset('img/world_map_bookcases.png')
)
),
]);
}
}

View File

@@ -10,6 +10,7 @@ class HighscoreChat extends Component
public bool $open = false;
public array $messages = [];
public string $myNewMessage = '';
public function rules()
@@ -22,7 +23,7 @@ class HighscoreChat extends Component
public function getListeners()
{
return [
'toggleHighscoreChat' => 'toggle',
'toggleHighscoreChat' => 'toggle',
'echo:plebchannel,.App\Events\ChatMessageSentEvent' => 'chatMessageSent',
];
}
@@ -34,7 +35,7 @@ class HighscoreChat extends Component
public function toggle()
{
$this->open = !$this->open;
$this->open = ! $this->open;
}
public function chatMessageSent()
@@ -50,11 +51,11 @@ class HighscoreChat extends Component
$this->validate();
$newMessages = collect(cache()->get('highscore_chat_messages', []))
->push([
'fromId' => auth()->id(),
'fromId' => auth()->id(),
'fromName' => str(auth()->user()->name)->limit(2),
'userImg' => str(auth()->user()->profile_photo_url)->replace('background=EBF4FF', 'background=F7931A'),
'message' => $this->myNewMessage,
'time' => now()->asDateTime(),
'userImg' => str(auth()->user()->profile_photo_url)->replace('background=EBF4FF', 'background=F7931A'),
'message' => $this->myNewMessage,
'time' => now()->asDateTime(),
])
->take(-21)
->toArray();

View File

@@ -21,18 +21,18 @@ class CityForm extends Component
{
return [
'city.country_id' => 'required',
'city.name' => 'required|string',
'city.longitude' => 'required',
'city.latitude' => 'required',
'city.name' => 'required|string',
'city.longitude' => 'required',
'city.latitude' => 'required',
];
}
public function mount()
{
if (!$this->city) {
if (! $this->city) {
$this->city = new City();
}
if (!$this->fromUrl) {
if (! $this->fromUrl) {
$this->fromUrl = url()->previous();
}
}

View File

@@ -12,6 +12,7 @@ class ContentCreatorForm extends Component
use WithFileUploads;
public ?Lecturer $lecturer = null;
public $image;
public ?string $fromUrl = '';
@@ -21,30 +22,30 @@ class ContentCreatorForm extends Component
public function rules()
{
return [
'image' => [Rule::requiredIf(!$this->lecturer->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'image' => [Rule::requiredIf(! $this->lecturer->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'lecturer.name' => 'required',
'lecturer.active' => 'boolean',
'lecturer.subtitle' => 'required',
'lecturer.intro' => 'required',
'lecturer.twitter_username' => 'nullable|string',
'lecturer.website' => 'nullable|url',
'lecturer.name' => 'required',
'lecturer.active' => 'boolean',
'lecturer.subtitle' => 'required',
'lecturer.intro' => 'required',
'lecturer.twitter_username' => 'nullable|string',
'lecturer.website' => 'nullable|url',
'lecturer.lightning_address' => 'nullable|string',
'lecturer.lnurl' => 'nullable|string',
'lecturer.node_id' => 'nullable|string',
'lecturer.lnurl' => 'nullable|string',
'lecturer.node_id' => 'nullable|string',
];
}
public function mount()
{
if (!$this->lecturer) {
if (! $this->lecturer) {
$this->lecturer = new Lecturer([
'intro' => '',
'active' => true,
'intro' => '',
'active' => true,
'team_id' => true,
]);
}
if (!$this->fromUrl) {
if (! $this->fromUrl) {
$this->fromUrl = url()->previous();
}
}

View File

@@ -26,7 +26,7 @@ class Footer extends Component
return view('livewire.frontend.footer', [
'percentTranslated' => $l === 'en' ? 100 : round(($translated / $toTranslate) * 100),
'language' => $language,
'language' => $language,
]);
}
}

View File

@@ -11,8 +11,11 @@ use Livewire\Component;
class Header extends Component
{
public ?Country $country = null;
public $currentRouteName;
public string $c = 'de';
public string $l = 'de';
public $bgColor = 'bg-21gray';
@@ -30,7 +33,7 @@ class Header extends Component
public function mount()
{
$this->l = Cookie::get('lang') ?: config('app.locale');
if (!$this->country) {
if (! $this->country) {
$this->country = Country::query()
->where('code', $this->c)
->first();
@@ -56,7 +59,7 @@ class Header extends Component
Cookie::queue('lang', $this->l, 60 * 24 * 365);
return view('livewire.frontend.header', [
'cities' => City::query()
'cities' => City::query()
->select(['latitude', 'longitude'])
->get(),
'countries' => Country::query()

View File

@@ -10,9 +10,10 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class Welcome extends Component
{
public string $c = 'de';
public string $l = 'de';
protected $queryString = ['c','l'];
protected $queryString = ['c', 'l'];
public function rules()
{
@@ -67,7 +68,7 @@ class Welcome extends Component
title: __('Welcome'),
description: __('Welcome to the portal of the Einundzwanzig Community.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -16,14 +16,14 @@ class LaravelEcho extends Component
if (auth()->check()) {
$this->notification()
->confirm([
'img' => $data['img'],
'title' => 'Pleb alert!',
'img' => $data['img'],
'title' => 'Pleb alert!',
'description' => $data['name'].' logged in',
'icon' => 'bell',
'icon' => 'bell',
'acceptLabel' => '',
'rejectLabel' => '',
'iconColor' => 'primary',
'timeout' => 60000,
'iconColor' => 'primary',
'timeout' => 60000,
]);
}
}

View File

@@ -19,53 +19,58 @@ class LibraryItemForm extends Component
public Country $country;
public ?LibraryItem $libraryItem = null;
public $library;
public $image;
public $file;
public array $selectedTags = [];
public bool $lecturer = false;
public ?string $fromUrl = '';
protected $queryString = [
'fromUrl' => ['except' => ''],
'fromUrl' => ['except' => ''],
'lecturer' => ['except' => false],
];
public function rules()
{
return [
'image' => [Rule::requiredIf(!$this->libraryItem->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'image' => [Rule::requiredIf(! $this->libraryItem->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'library' => 'required',
'selectedTags' => 'array|min:1',
'libraryItem.lecturer_id' => 'required',
'libraryItem.name' => 'required',
'libraryItem.type' => 'required',
'libraryItem.language_code' => 'required',
'libraryItem.value' => [
'libraryItem.lecturer_id' => 'required',
'libraryItem.name' => 'required',
'libraryItem.type' => 'required',
'libraryItem.language_code' => 'required',
'libraryItem.value' => [
'required',
Rule::when(
$this->libraryItem->type !== LibraryItemType::MarkdownArticle
&& $this->libraryItem->type !== LibraryItemType::MarkdownArticleExtern
&& $this->libraryItem->type !== LibraryItemType::DownloadableFile, ['url']
)
),
],
'libraryItem.subtitle' => 'required',
'libraryItem.excerpt' => 'required',
'libraryItem.subtitle' => 'required',
'libraryItem.excerpt' => 'required',
'libraryItem.main_image_caption' => 'required',
'libraryItem.read_time' => 'required',
'libraryItem.approved' => 'boolean',
'libraryItem.read_time' => 'required',
'libraryItem.approved' => 'boolean',
];
}
public function mount()
{
if (!$this->libraryItem) {
if (! $this->libraryItem) {
$this->libraryItem = new LibraryItem([
'approved' => true,
'approved' => true,
'read_time' => 1,
]);
if ($this->lecturer) {
@@ -76,13 +81,13 @@ class LibraryItemForm extends Component
$this->selectedTags = $this->libraryItem->tags()
->where('type', 'library_item')
->get()
->map(fn($tag) => $tag->name)
->map(fn ($tag) => $tag->name)
->toArray();
$this->library = $this->libraryItem->libraries()
->first()
->id;
}
if (!$this->fromUrl) {
if (! $this->fromUrl) {
$this->fromUrl = url()->previous();
}
}
@@ -118,7 +123,7 @@ class LibraryItemForm extends Component
{
$selectedTags = collect($this->selectedTags);
if ($selectedTags->contains($name)) {
$selectedTags = $selectedTags->filter(fn($tag) => $tag !== $name);
$selectedTags = $selectedTags->filter(fn ($tag) => $tag !== $name);
} else {
$selectedTags->push($name);
}
@@ -129,21 +134,21 @@ class LibraryItemForm extends Component
public function render()
{
return view('livewire.library.form.library-item-form', [
'types' => Options::forEnum(LibraryItemType::class)
'types' => Options::forEnum(LibraryItemType::class)
->filter(
fn($type) => $type !== LibraryItemType::PodcastEpisode
fn ($type) => $type !== LibraryItemType::PodcastEpisode
&& $type !== LibraryItemType::MarkdownArticle
)
->toArray(),
'libraries' => Library::query()
->where('is_public', true)
->get()
->map(fn($library) => [
'id' => $library->id,
->map(fn ($library) => [
'id' => $library->id,
'name' => $library->name,
])
->toArray(),
'tags' => Tag::query()
'tags' => Tag::query()
->where('type', 'library_item')
->get(),
]);

View File

@@ -12,7 +12,9 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class LibraryTable extends Component
{
public Country $country;
public array $filters = [];
public bool $isLecturerPage = false;
public string $search = '';
@@ -23,8 +25,8 @@ class LibraryTable extends Component
protected $queryString = [
'currentTab' => ['except' => '*'],
'filters' => ['except' => ''],
'search' => ['except' => ''],
'filters' => ['except' => ''],
'search' => ['except' => ''],
];
public function loadMore()
@@ -52,7 +54,7 @@ class LibraryTable extends Component
public function render()
{
$shouldBePublic = !$this->isLecturerPage;
$shouldBePublic = ! $this->isLecturerPage;
$libraries = \App\Models\Library::query()
->whereNull('parent_id')
->where('is_public', $shouldBePublic)
@@ -61,7 +63,7 @@ class LibraryTable extends Component
$tabs = collect([
[
'name' => '*',
]
],
]);
foreach ($libraries as $library) {
$tabs->push([
@@ -82,32 +84,32 @@ class LibraryTable extends Component
}
return view('livewire.library.library-table', [
'libraries' => $tabs,
'libraries' => $tabs,
'libraryItems' => LibraryItem::query()
->with([
'lecturer',
'tags',
])
->when($this->search, fn($query) => $query
->when($this->search, fn ($query) => $query
->where('name', 'ilike', '%'.$this->search.'%')
->orWhere(fn($query) => $query
->orWhere(fn ($query) => $query
->when(count($searchTags) > 0 && count($this->filters) < 1,
fn($query) => $query->whereHas('tags',
fn($query) => $query->whereIn('tags.id', $searchTags)))
fn ($query) => $query->whereHas('tags',
fn ($query) => $query->whereIn('tags.id', $searchTags)))
)
)
->when($this->currentTab !== '*', fn($query) => $query
->when($this->currentTab !== '*', fn ($query) => $query
->whereHas('libraries',
fn($query) => $query
fn ($query) => $query
->where('libraries.name', $this->currentTab)
)
)
->when(isset($this->filters['tag']), fn($query) => $query->whereHas('tags',
fn($query) => $query->whereIn('tags.id', $this->filters['tag'])))
->when(isset($this->filters['tag']), fn ($query) => $query->whereHas('tags',
fn ($query) => $query->whereIn('tags.id', $this->filters['tag'])))
->when(isset($this->filters['language']),
fn($query) => $query->whereIn('language_code', $this->filters['language']))
fn ($query) => $query->whereIn('language_code', $this->filters['language']))
->whereHas('libraries',
fn($query) => $query->where('libraries.is_public', $shouldBePublic))
fn ($query) => $query->where('libraries.is_public', $shouldBePublic))
->orderByDesc('library_items.created_at')
->paginate($this->perPage),
])->layout('layouts.app', [
@@ -115,7 +117,7 @@ class LibraryTable extends Component
title: __('Library'),
description: __('Here you can find all content that are available in the library.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -9,6 +9,7 @@ use Livewire\Component;
class SearchByTagComponent extends Component
{
public string $country = 'de';
public array $filters = [];
protected $queryString = [
@@ -26,12 +27,12 @@ class SearchByTagComponent extends Component
->pluck('language_code')
->unique()
->sort()
->map(fn($item) => str($item)
->map(fn ($item) => str($item)
->before('_')
->toString())
->values()
->toArray(),
'tags' => Tag::query()
'tags' => Tag::query()
->with([
'libraryItems.libraries',
'libraryItems.lecturer',
@@ -41,7 +42,7 @@ class SearchByTagComponent extends Component
])
->where('type', 'library_item')
->whereHas('libraryItems.libraries',
fn($query) => $query->where('is_public', $shouldBePublic))
fn ($query) => $query->where('is_public', $shouldBePublic))
->orderByDesc('library_items_count')
->orderBy('tags.id')
->get(),

View File

@@ -12,31 +12,34 @@ class MeetupEventForm extends Component
use Actions;
public string $country;
public ?MeetupEvent $meetupEvent = null;
public bool $recurring = false;
public int $repetitions = 52;
public array $series = [];
public function rules()
{
return [
'meetupEvent.meetup_id' => 'required',
'meetupEvent.start' => 'required',
'meetupEvent.location' => 'string|nullable',
'meetupEvent.meetup_id' => 'required',
'meetupEvent.start' => 'required',
'meetupEvent.location' => 'string|nullable',
'meetupEvent.description' => 'string|nullable',
'meetupEvent.link' => 'string|url|nullable',
'meetupEvent.link' => 'string|url|nullable',
'series.*.start' => 'required',
'recurring' => 'bool',
'recurring' => 'bool',
'repetitions' => 'numeric|min:1',
];
}
public function mount()
{
if (!$this->meetupEvent) {
if (! $this->meetupEvent) {
$this->meetupEvent = new MeetupEvent(
[
'start' => now()
@@ -44,7 +47,7 @@ class MeetupEventForm extends Component
->addHours(17),
]
);
} elseif (!auth()
} elseif (! auth()
->user()
->can('update', $this->meetupEvent)) {
abort(403);
@@ -86,15 +89,15 @@ class MeetupEventForm extends Component
$this->dialog()
->confirm(
[
'title' => __('Delete event'),
'title' => __('Delete event'),
'description' => __('Are you sure you want to delete this event? This action cannot be undone.'),
'icon' => 'warning',
'accept' => [
'label' => __('Yes, delete'),
'icon' => 'warning',
'accept' => [
'label' => __('Yes, delete'),
'method' => 'deleteEvent',
],
'reject' => [
'label' => __('No, cancel'),
'reject' => [
'label' => __('No, cancel'),
'method' => 'cancel',
],
]
@@ -111,7 +114,7 @@ class MeetupEventForm extends Component
public function submit()
{
$this->validate();
if (!$this->meetupEvent->id) {
if (! $this->meetupEvent->id) {
$hasAppointmentsOnThisDate = MeetupEvent::query()
->where('meetup_id', $this->meetupEvent->meetup_id)
->where('start', '>', Carbon::parse($this->meetupEvent->start)
@@ -129,7 +132,7 @@ class MeetupEventForm extends Component
$this->meetupEvent->save();
if (!$this->meetupEvent->id && $this->recurring) {
if (! $this->meetupEvent->id && $this->recurring) {
foreach ($this->series as $event) {
$hasAppointmentsOnThisDate = MeetupEvent::query()
->where('meetup_id', $this->meetupEvent->meetup_id)

View File

@@ -11,7 +11,9 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class LandingPage extends Component
{
public Meetup $meetup;
public Country $country;
public ?int $activeEvent = null;
public ?int $year = null;
@@ -34,7 +36,7 @@ class LandingPage extends Component
->where('meetup_events.start', '>=', now())
->orderBy('start')
->get(),
'events' => MeetupEvent::query()
'events' => MeetupEvent::query()
->with([
'meetup.city.country',
])
@@ -42,11 +44,11 @@ class LandingPage extends Component
->where('meetup_events.start', '>=', now())
->orderBy('start')
->get()
->map(fn($event) => [
'id' => $event->id,
'startDate' => $event->start,
'endDate' => $event->start->addHours(1),
'location' => $event->location,
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->start,
'endDate' => $event->start->addHours(1),
'location' => $event->location,
'description' => $event->description,
]),
])
@@ -55,7 +57,7 @@ class LandingPage extends Component
title: $this->meetup->name,
description: __('Bitcoiner Meetups are a great way to meet other Bitcoiners in your area. You can learn from each other, share ideas, and have fun!'),
image: $this->meetup->getFirstMediaUrl('logo'),
)
),
]);
}

View File

@@ -12,10 +12,15 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class LandingPageEvent extends Component
{
public MeetupEvent $meetupEvent;
public Country $country;
public ?Meetup $meetup = null;
public bool $willShowUp = false;
public bool $perhapsShowUp = false;
public string $name = '';
public function rules()
@@ -23,7 +28,7 @@ class LandingPageEvent extends Component
return [
'name' => [
'required',
new UniqueAttendeeName($this->meetupEvent)
new UniqueAttendeeName($this->meetupEvent),
],
];
}
@@ -40,33 +45,33 @@ class LandingPageEvent extends Component
$attendees = collect($this->meetupEvent->attendees);
$mightAttendees = collect($this->meetupEvent->might_attendees);
if (auth()->check() && $attendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) {
$this->name = str($attendees->filter(fn($value) => str($value)->contains('id_'.auth()->id()))
if (auth()->check() && $attendees->contains(fn ($value) => str($value)->contains('id_'.auth()->id()))) {
$this->name = str($attendees->filter(fn ($value) => str($value)->contains('id_'.auth()->id()))
->first())
->after('|')
->toString();
$this->willShowUp = true;
}
if (!auth()->check() && $attendees->contains(fn($value) => str($value)->contains('anon_'.session()->getId()))) {
$this->name = str($attendees->filter(fn($value) => str($value)->contains('anon_'.session()->getId()))
if (! auth()->check() && $attendees->contains(fn ($value) => str($value)->contains('anon_'.session()->getId()))) {
$this->name = str($attendees->filter(fn ($value) => str($value)->contains('anon_'.session()->getId()))
->first())
->after('|')
->toString();
$this->willShowUp = true;
}
if (auth()->check() && $mightAttendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) {
$this->name = str($mightAttendees->filter(fn($value) => str($value)->contains('id_'.auth()->id()))
if (auth()->check() && $mightAttendees->contains(fn ($value) => str($value)->contains('id_'.auth()->id()))) {
$this->name = str($mightAttendees->filter(fn ($value) => str($value)->contains('id_'.auth()->id()))
->first())
->after('|')
->toString();
$this->perhapsShowUp = true;
}
if (!auth()->check() && $mightAttendees->contains(fn($value
if (! auth()->check() && $mightAttendees->contains(fn ($value
) => str($value)->contains('anon_'.session()->getId()))) {
$this->name = str($mightAttendees->filter(fn($value) => str($value)->contains('anon_'.session()->getId()))
$this->name = str($mightAttendees->filter(fn ($value) => str($value)->contains('anon_'.session()->getId()))
->first())
->after('|')
->toString();
@@ -79,29 +84,29 @@ class LandingPageEvent extends Component
$attendees = collect($this->meetupEvent->attendees);
$mightAttendees = collect($this->meetupEvent->might_attendees);
if (auth()->check() && $attendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) {
$attendees = $attendees->filter(fn($value) => !str($value)->contains('id_'.auth()->id()));
if (auth()->check() && $attendees->contains(fn ($value) => str($value)->contains('id_'.auth()->id()))) {
$attendees = $attendees->filter(fn ($value) => ! str($value)->contains('id_'.auth()->id()));
$this->willShowUp = false;
}
if (!auth()->check() && $attendees->contains(fn($value) => str($value)->contains('anon_'.session()->getId()))) {
$attendees = $attendees->filter(fn($value) => !str($value)->contains('anon_'.session()->getId()));
if (! auth()->check() && $attendees->contains(fn ($value) => str($value)->contains('anon_'.session()->getId()))) {
$attendees = $attendees->filter(fn ($value) => ! str($value)->contains('anon_'.session()->getId()));
$this->willShowUp = false;
}
if (auth()->check() && $mightAttendees->contains(fn($value) => str($value)->contains('id_'.auth()->id()))) {
$mightAttendees = $mightAttendees->filter(fn($value) => !str($value)->contains('id_'.auth()->id()));
if (auth()->check() && $mightAttendees->contains(fn ($value) => str($value)->contains('id_'.auth()->id()))) {
$mightAttendees = $mightAttendees->filter(fn ($value) => ! str($value)->contains('id_'.auth()->id()));
$this->perhapsShowUp = false;
}
if (!auth()->check() && $mightAttendees->contains(fn($value
if (! auth()->check() && $mightAttendees->contains(fn ($value
) => str($value)->contains('anon_'.session()->getId()))) {
$mightAttendees = $mightAttendees->filter(fn($value) => !str($value)->contains('anon_'.session()->getId()));
$mightAttendees = $mightAttendees->filter(fn ($value) => ! str($value)->contains('anon_'.session()->getId()));
$this->perhapsShowUp = false;
}
$this->meetupEvent->update([
'attendees' => $attendees->toArray(),
'attendees' => $attendees->toArray(),
'might_attendees' => $mightAttendees->toArray(),
]);
}
@@ -111,12 +116,12 @@ class LandingPageEvent extends Component
$this->validate();
$attendees = collect($this->meetupEvent->attendees);
if (auth()->check() && !$attendees->contains('id_'.auth()->id().'|'.$this->name)) {
if (auth()->check() && ! $attendees->contains('id_'.auth()->id().'|'.$this->name)) {
$attendees->push('id_'.auth()->id().'|'.$this->name);
$this->willShowUp = true;
}
if (!auth()->check() && !$attendees->contains('anon_'.session()->getId().'|'.$this->name)) {
if (! auth()->check() && ! $attendees->contains('anon_'.session()->getId().'|'.$this->name)) {
$attendees->push('anon_'.session()->getId().'|'.$this->name);
$this->willShowUp = true;
}
@@ -131,12 +136,12 @@ class LandingPageEvent extends Component
$this->validate();
$mightAttendees = collect($this->meetupEvent->might_attendees);
if (auth()->check() && !$mightAttendees->contains('id_'.auth()->id().'|'.$this->name)) {
if (auth()->check() && ! $mightAttendees->contains('id_'.auth()->id().'|'.$this->name)) {
$mightAttendees->push('id_'.auth()->id().'|'.$this->name);
$this->perhapsShowUp = true;
}
if (!auth()->check() && !$mightAttendees->contains('anon_'.session()->getId().'|'.$this->name)) {
if (! auth()->check() && ! $mightAttendees->contains('anon_'.session()->getId().'|'.$this->name)) {
$mightAttendees->push('anon_'.session()->getId().'|'.$this->name);
$this->perhapsShowUp = true;
}
@@ -153,7 +158,7 @@ class LandingPageEvent extends Component
title: $this->meetupEvent->start->asDateTime().' - '.$this->meetup->name,
description: __('Here you can confirm your participation and find more information about the Meetup.').' - '.$this->meetupEvent->description,
image: $this->meetup->getFirstMediaUrl('logo'),
)
),
]);
}
}

View File

@@ -20,7 +20,7 @@ class MeetupEventTable extends Component
public function mount()
{
if (!$this->year) {
if (! $this->year) {
$this->year = now()->year;
}
}
@@ -34,26 +34,26 @@ class MeetupEventTable extends Component
])
->where('meetup_events.start', '>=', now())
->whereHas('meetup.city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
->get()
->map(fn($event) => [
'id' => $event->id,
'name' => $event->meetup->name.': '.$event->location,
->map(fn ($event) => [
'id' => $event->id,
'name' => $event->meetup->name.': '.$event->location,
'coords' => [$event->meetup->city->latitude, $event->meetup->city->longitude],
]),
'events' => MeetupEvent::query()
'events' => MeetupEvent::query()
->with([
'meetup.city.country',
])
->where('meetup_events.start', '>=', now())
->whereHas('meetup.city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
->get()
->map(fn($event) => [
'id' => $event->id,
'startDate' => $event->start,
'endDate' => $event->start->addHours(1),
'location' => $event->location,
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->start,
'endDate' => $event->start->addHours(1),
'location' => $event->location,
'description' => $event->description,
]),
])->layout('layouts.app', [
@@ -61,7 +61,7 @@ class MeetupEventTable extends Component
title: __('Meetup dates'),
description: __('List of all meetup dates'),
image: asset('img/screenshot.png')
)
),
]);
}
@@ -69,28 +69,27 @@ class MeetupEventTable extends Component
{
return to_route('meetup.table.meetupEvent', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'country' => $this->country->code,
'year' => $this->year,
'meetup_events' => [
'filters' => [
'byid' => $id,
],
]
],
]);
}
public function popover($content, $ids)
{
return to_route('meetup.table.meetupEvent', [
'#table',
'year' => $this->year,
'year' => $this->year,
'country' => $this->country->code,
'meetup_events' => [
'meetup_events' => [
'filters' => [
'byid' => $ids,
]
]
],
],
]);
}
}

View File

@@ -18,7 +18,7 @@ class MeetupTable extends Component
return to_route('meetup.landing', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
'meetup' => $meetup,
]);
}
@@ -32,11 +32,11 @@ class MeetupTable extends Component
'city.country',
])
->whereHas('city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
->get()
->map(fn($meetup) => [
'id' => $meetup->id,
'name' => $meetup->name,
->map(fn ($meetup) => [
'id' => $meetup->id,
'name' => $meetup->name,
'coords' => [$meetup->city->latitude, $meetup->city->longitude],
]),
])->layout('layouts.app', [
@@ -44,7 +44,7 @@ class MeetupTable extends Component
title: __('Meetups'),
description: __('Bitcoiner Meetups are a great way to meet other Bitcoiners in your area. You can learn from each other, share ideas, and have fun!'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -20,6 +20,7 @@ class PrepareForBtcMapItem extends Component
public string $search = '';
public $population;
public $population_date = '';
public ?int $osm_id = null;
@@ -52,7 +53,7 @@ class PrepareForBtcMapItem extends Component
public function rules(): array
{
return [
'search' => 'required|string',
'search' => 'required|string',
'currentPercentage' => 'required|numeric',
'model.simplified_geojson' => 'nullable',
@@ -60,7 +61,7 @@ class PrepareForBtcMapItem extends Component
'OSMBoundaries' => 'bool',
'polygonsOSMfr' => 'bool',
'population' => 'nullable|numeric',
'population' => 'nullable|numeric',
'population_date' => 'nullable|string',
'polygonsOSMfrX' => 'numeric|max:1',
@@ -84,7 +85,7 @@ class PrepareForBtcMapItem extends Component
private function getSearchResults(): void
{
$responses = Http::pool(fn(Pool $pool) => [
$responses = Http::pool(fn (Pool $pool) => [
$pool->acceptJson()
->get(
sprintf('https://nominatim.openstreetmap.org/search?q=%s&format=json&polygon_geojson=1&polygon_threshold=0.0003&email='.config('services.nominatim.email'),
@@ -93,7 +94,7 @@ class PrepareForBtcMapItem extends Component
]);
$this->osmSearchResults = collect($responses[0]->json())
->filter(fn($item
->filter(fn ($item
) => (
$item['geojson']['type'] === 'Polygon'
|| $item['geojson']['type'] === 'MultiPolygon'
@@ -156,7 +157,6 @@ class PrepareForBtcMapItem extends Component
// emit event for AlpineJS
$this->emit('geoJsonUpdated');
} catch (\Exception $e) {
$this->notification()
->error('Error', $e->getMessage());
@@ -180,9 +180,9 @@ class PrepareForBtcMapItem extends Component
->post(
'https://polygons.openstreetmap.fr/?id='.$this->selectedItemOSMPolygons['osm_id'],
[
'x' => $this->polygonsOSMfrX,
'y' => $this->polygonsOSMfrY,
'z' => $this->polygonsOSMfrZ,
'x' => $this->polygonsOSMfrX,
'y' => $this->polygonsOSMfrY,
'z' => $this->polygonsOSMfrZ,
'generate' => 'Submit+Query',
]
);
@@ -247,9 +247,9 @@ class PrepareForBtcMapItem extends Component
$response = Http::acceptJson()
->asForm()
->post('https://osm-boundaries.com/Ajax/GetBoundary', [
'db' => 'osm20221205',
'db' => 'osm20221205',
'waterOrLand' => 'water',
'osmId' => '-'.$this->selectedItemOSMPolygons['osm_id'],
'osmId' => '-'.$this->selectedItemOSMPolygons['osm_id'],
]);
if ($response->json()) {
if (count($response->json()['coordinates'], COUNT_RECURSIVE) > 100000) {
@@ -286,7 +286,7 @@ class PrepareForBtcMapItem extends Component
$this->model->population = str($value)
->replace(['.', ','], '')
->toInteger();
if (!$this->model->population_date) {
if (! $this->model->population_date) {
$this->model->population_date = '2021-12-31';
}
$this->model->save();

View File

@@ -4,7 +4,6 @@ namespace App\Http\Livewire\Meetup;
use App\Models\Country;
use App\Models\Meetup;
use App\Models\MeetupEvent;
use Livewire\Component;
use RalphJSmit\Laravel\SEO\Support\SEOData;
@@ -19,7 +18,7 @@ class WorldMap extends Component
return to_route('meetup.landing', [
'country' => $meetup->city->country->code,
'meetup' => $meetup,
'meetup' => $meetup,
]);
}
@@ -31,16 +30,16 @@ class WorldMap extends Component
'city.country',
])
->get()
->map(fn($meetup) => [
'id' => $meetup->id,
'name' => $meetup->name,
->map(fn ($meetup) => [
'id' => $meetup->id,
'name' => $meetup->name,
'coords' => [$meetup->city->latitude, $meetup->city->longitude],
]),
])->layout('layouts.app', [
'SEOData' => new SEOData(
title: __('World map of meetups'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -31,7 +31,7 @@ class ArticleOverview extends Component
if ($libraryItem->lecturer->twitter_username && $libraryItem->type !== 'markdown_article') {
$libraryItemName .= ' von @'.$libraryItem->lecturer->twitter_username;
}
if (!$libraryItem->lecturer->twitter_username) {
if (! $libraryItem->lecturer->twitter_username) {
$libraryItemName .= ' von '.$libraryItem->lecturer->name;
}
@@ -39,7 +39,7 @@ class ArticleOverview extends Component
if (config('feeds.services.twitterAccountId')) {
$this->setNewAccessToken(1);
if (!$libraryItem->approved) {
if (! $libraryItem->approved) {
$this->notification()
->error(__('Article not approved yet'));
@@ -98,7 +98,7 @@ class ArticleOverview extends Component
title: __('News'),
description: __('Here we post important news that is relevant for everyone.'),
image: asset('img/einundzwanzig-news-colored.png'),
)
),
]);
}
}

View File

@@ -12,28 +12,33 @@ class NewsArticleForm extends Component
use WithFileUploads;
public ?LibraryItem $libraryItem = null;
public $image;
public $currentImage = 0;
public $images;
public $imagesCloned = [];
public array $temporaryUrls = [];
public function rules()
{
return [
'image' => [Rule::requiredIf(!$this->libraryItem->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'image' => [Rule::requiredIf(! $this->libraryItem->id), 'nullable', 'mimes:jpeg,png,jpg,gif', 'max:10240'],
'libraryItem.lecturer_id' => 'required',
'libraryItem.name' => 'required',
'libraryItem.type' => 'required',
'libraryItem.language_code' => 'required',
'libraryItem.value' => 'required',
'libraryItem.subtitle' => 'required',
'libraryItem.excerpt' => 'required',
'libraryItem.lecturer_id' => 'required',
'libraryItem.name' => 'required',
'libraryItem.type' => 'required',
'libraryItem.language_code' => 'required',
'libraryItem.value' => 'required',
'libraryItem.subtitle' => 'required',
'libraryItem.excerpt' => 'required',
'libraryItem.main_image_caption' => 'required',
'libraryItem.read_time' => 'required',
'libraryItem.approved' => 'boolean',
'libraryItem.news' => 'boolean',
'libraryItem.read_time' => 'required',
'libraryItem.approved' => 'boolean',
'libraryItem.news' => 'boolean',
];
}
@@ -41,12 +46,12 @@ class NewsArticleForm extends Component
{
if ($this->libraryItem === null) {
$this->libraryItem = new LibraryItem([
'type' => 'markdown_article',
'value' => '',
'read_time' => 1,
'news' => true,
'type' => 'markdown_article',
'value' => '',
'read_time' => 1,
'news' => true,
'language_code' => 'de',
'approved' => auth()
'approved' => auth()
->user()
->hasRole('news-editor'),
]);

View File

@@ -17,7 +17,7 @@ class InternArticleView extends Component
'libraries',
]);
if ($this->libraryItem->libraries->where('is_public', false)
->count() > 0 && !auth()->check()) {
->count() > 0 && ! auth()->check()) {
abort(403, __('Sorry! You are not authorized to perform this action.'));
}
}
@@ -38,7 +38,7 @@ class InternArticleView extends Component
image: $this->libraryItem->getFirstMedia('main') ? $this->libraryItem->getFirstMediaUrl('main') : asset('img/einundzwanzig-wallpaper-benrath.png'),
published_time: Carbon::parse($this->libraryItem->created_at),
type: 'article',
)
),
]);
}
}

View File

@@ -11,9 +11,13 @@ class Meetups extends Component
use Actions;
public $search = '';
public $meetups;
public $myMeetups = [];
public $myMeetupNames = [];
public $hasMeetups = false;
public function rules()
@@ -25,7 +29,7 @@ class Meetups extends Component
public function mount()
{
if (!auth()->user()) {
if (! auth()->user()) {
return to_route('auth.ln');
}

View File

@@ -17,7 +17,7 @@ class CityTable extends Component
title: __('Courses'),
description: __('Choose your city, search for courses in the surrounding area and select a topic that suits you.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -17,7 +17,7 @@ class CourseTable extends Component
title: __('Courses'),
description: __('Choose your city, search for courses in the surrounding area and select a topic that suits you.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -17,7 +17,7 @@ class EventTable extends Component
public function mount()
{
if (!$this->year) {
if (! $this->year) {
$this->year = now()->year;
}
}
@@ -31,28 +31,28 @@ class EventTable extends Component
'venue.city.country',
])
->where('from', '>=', now())
->where(fn($query) => $query
->where(fn ($query) => $query
->whereHas('venue.city.country',
fn($query) => $query->where('countries.code', $this->country->code))
fn ($query) => $query->where('countries.code', $this->country->code))
)
->get()
->map(fn($event) => [
'id' => $event->id,
'name' => $event->course->name,
->map(fn ($event) => [
'id' => $event->id,
'name' => $event->course->name,
'coords' => [$event->venue->city->latitude, $event->venue->city->longitude],
]),
'events' => CourseEvent::query()
'events' => CourseEvent::query()
->with([
'course',
'venue.city.country',
])
->where('from', '>=', now())
->get()
->map(fn($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->course->name,
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->course->name,
'description' => $event->venue->name,
]),
])->layout('layouts.app', [
@@ -60,7 +60,7 @@ class EventTable extends Component
title: __('Dates'),
description: __('Dates for courses about Bitcoin.'),
image: asset('img/screenshot.png')
)
),
]);
}
@@ -69,12 +69,12 @@ class EventTable extends Component
return to_route('school.table.event', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'course_events' => [
'year' => $this->year,
'course_events' => [
'filters' => [
'byid' => $id,
],
]
],
]);
}
@@ -83,12 +83,12 @@ class EventTable extends Component
return to_route('school.table.event', [
'#table',
'country' => $this->country->code,
'year' => $this->year,
'course_events' => [
'year' => $this->year,
'course_events' => [
'filters' => [
'byid' => $ids,
]
]
],
],
]);
}
}

View File

@@ -11,9 +11,11 @@ use RalphJSmit\Laravel\SEO\Support\SEOData;
class LecturerLandingPage extends Component
{
public Lecturer $lecturer;
public Country $country;
public ?int $year = null;
public ?int $activeEvent = null;
public function render()
@@ -26,18 +28,18 @@ class LecturerLandingPage extends Component
})
->orderBy('from')
->get(),
'events' => CourseEvent::query()
'events' => CourseEvent::query()
->where('from', '>=', now())
->whereHas('course', function ($query) {
$query->where('lecturer_id', $this->lecturer->id);
})
->orderBy('from')
->get()
->map(fn($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->course->name,
->map(fn ($event) => [
'id' => $event->id,
'startDate' => $event->from,
'endDate' => $event->to,
'location' => $event->course->name,
'description' => $event->venue->name,
]),
])
@@ -46,7 +48,7 @@ class LecturerLandingPage extends Component
title: $this->lecturer->name,
description: $this->lecturer->intro ?? __('This lecturer has not yet written an introduction.'),
image: $this->lecturer->getFirstMediaUrl('avatar'),
)
),
]);
}

View File

@@ -17,7 +17,7 @@ class LecturerTable extends Component
title: __('Lecturers'),
description: __('Lecturers in the surrounding area.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -8,6 +8,7 @@ use Livewire\Component;
class SearchByTagComponent extends Component
{
public string $country = 'de';
public ?array $courses = [];
protected $queryString = [

View File

@@ -17,7 +17,7 @@ class VenueTable extends Component
title: __('Venues'),
description: __('Venues in the surrounding area.'),
image: asset('img/screenshot.png')
)
),
]);
}
}

View File

@@ -10,8 +10,8 @@ use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
class BitcoinEventTable extends DataTableComponent
{
public string $country;
public string $tableName = 'bitcoin_events';
public function configure(): void
@@ -20,17 +20,17 @@ class BitcoinEventTable extends DataTableComponent
->setDefaultSort('from', 'asc')
->setAdditionalSelects([
'bitcoin_events.id',
'bitcoin_events.venue_id'
'bitcoin_events.venue_id',
])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -54,29 +54,29 @@ class BitcoinEventTable extends DataTableComponent
return [
Column::make(__('Country'), 'venue.city.country.name')
->format(
fn($value, $row, Column $column) => view('columns.bitcoin_events.country')->withRow($row)
fn ($value, $row, Column $column) => view('columns.bitcoin_events.country')->withRow($row)
)
->sortable()
->collapseOnMobile(),
Column::make(__('Title'), 'title')
->format(
fn($value, $row, Column $column) => view('columns.bitcoin_events.title')->withRow($row)
fn ($value, $row, Column $column) => view('columns.bitcoin_events.title')->withRow($row)
)
->sortable(),
Column::make(__('From'), 'from')
->format(
fn($value, $row, Column $column) => $value->asDateTime()
fn ($value, $row, Column $column) => $value->asDateTime()
),
Column::make(__('To'), 'to')
->format(
fn($value, $row, Column $column) => $value->asDateTime()
fn ($value, $row, Column $column) => $value->asDateTime()
)
->collapseOnMobile(),
Column::make(__('Venue'), 'venue.name')
->collapseOnMobile(),
Column::make(__('Link'), 'link')
->format(
fn($value, $row, Column $column) => view('columns.bitcoin_events.link')->withRow($row)
fn ($value, $row, Column $column) => view('columns.bitcoin_events.link')->withRow($row)
)
->sortable()
->collapseOnMobile(),
@@ -87,12 +87,12 @@ class BitcoinEventTable extends DataTableComponent
{
return BitcoinEvent::query()
->with([
'venue.city.country'
'venue.city.country',
])
->where('bitcoin_events.from', '>=', now())
->where(fn($query) => $query
->where(fn ($query) => $query
->whereHas('venue.city.country',
fn($query) => $query->where('code', $this->country))
fn ($query) => $query->where('code', $this->country))
->orWhere('show_worldwide', true)
);
}

View File

@@ -3,9 +3,7 @@
namespace App\Http\Livewire\Tables;
use App\Models\BookCase;
use App\Models\OrangePill;
use Illuminate\Database\Eloquent\Builder;
use Livewire\WithFileUploads;
use Rappasoft\LaravelLivewireTables\DataTableComponent;
use Rappasoft\LaravelLivewireTables\Views\Column;
use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
@@ -16,6 +14,7 @@ class BookCaseTable extends DataTableComponent
use Actions;
public string $country;
public string $tableName = 'bookcases';
public function configure(): void
@@ -24,14 +23,13 @@ class BookCaseTable extends DataTableComponent
->setAdditionalSelects(['id', 'homepage'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -39,7 +37,6 @@ class BookCaseTable extends DataTableComponent
->setPerPage(10);
}
public function filters(): array
{
return [
@@ -54,27 +51,27 @@ class BookCaseTable extends DataTableComponent
public function columns(): array
{
return [
Column::make("Name", "title")
Column::make('Name', 'title')
->sortable()
->searchable(
function (Builder $query, $searchTerm) {
$query->where('title', 'ilike', '%'.$searchTerm.'%');
}
),
Column::make("Adresse", "address")
Column::make('Adresse', 'address')
->sortable()
->searchable(),
Column::make("Bitcoin-Bücher")
Column::make('Bitcoin-Bücher')
->label(
fn(
fn (
$row,
Column $column
) => $row->orangePills->sum('amount')
)
->collapseOnMobile(),
Column::make("Letzter Input")
Column::make('Letzter Input')
->label(
fn(
fn (
$row,
Column $column
) => $row->orangePills()
@@ -82,9 +79,9 @@ class BookCaseTable extends DataTableComponent
->first()?->date->asDate()
)
->collapseOnMobile(),
Column::make("Link")
Column::make('Link')
->label(
fn(
fn (
$row,
Column $column
) => $row->homepage ? '<a target="_blank" class="underline text-amber-500" href="'.$this->url_to_absolute($row->homepage).'">Link</a>' : null
@@ -92,7 +89,7 @@ class BookCaseTable extends DataTableComponent
->html()
->collapseOnMobile(),
Column::make('Orange-Pilled', 'orange_pilled')
->label(fn($row, Column $column) => view('columns.book_cases.oranged-pilled')
->label(fn ($row, Column $column) => view('columns.book_cases.oranged-pilled')
->withRow($row)
->withCountry($this->country))
->collapseOnMobile(),
@@ -104,7 +101,7 @@ class BookCaseTable extends DataTableComponent
if (str($url)->contains('http')) {
return $url;
}
if (!str($url)->contains('http')) {
if (! str($url)->contains('http')) {
return str($url)->prepend('https://');
}
}

View File

@@ -14,6 +14,7 @@ class CityTable extends DataTableComponent
use Actions;
public string $country;
public string $type;
public string $tableName = 'cities';
@@ -24,44 +25,44 @@ class CityTable extends DataTableComponent
->setAdditionalSelects(['id'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
->setColumnSelectStatus(false)
->setPerPage(10)
->setConfigurableAreas([
'toolbar-left-end' => [
'columns.cities.areas.toolbar-left-end', [
'country' => $this->country,
],
],
]);
'toolbar-left-end' => [
'columns.cities.areas.toolbar-left-end', [
'country' => $this->country,
],
],
]);
}
public function columns(): array
{
$columns = collect([
Column::make("Stadt Name", "name")
Column::make('Stadt Name', 'name')
->sortable()
->searchable(fn($builder, $term) => $builder->where('cities.name', 'ilike', '%'.$term.'%')),
->searchable(fn ($builder, $term) => $builder->where('cities.name', 'ilike', '%'.$term.'%')),
]);
if ($this->type === 'school') {
$columns = $columns->merge([
Column::make('Veranstaltungs-Orte')
->label(
fn($row, Column $column) => $row->venues_count
fn ($row, Column $column) => $row->venues_count
)
->collapseOnMobile(),
Column::make('Termine')
->label(
fn($row, Column $column) => $row->course_events_count
fn ($row, Column $column) => $row->course_events_count
)
->collapseOnMobile(),
]);
@@ -70,7 +71,7 @@ class CityTable extends DataTableComponent
return $columns->merge([
Column::make('')
->label(
fn($row, Column $column) => view('columns.cities.action')
fn ($row, Column $column) => view('columns.cities.action')
->withRow($row)
->withType($this->type)
),
@@ -85,7 +86,7 @@ class CityTable extends DataTableComponent
'venues',
'courseEvents',
])
->whereHas('country', fn($query) => $query->where('code', $this->country))
->whereHas('country', fn ($query) => $query->where('code', $this->country))
->orderByDesc('course_events_count')
->orderBy('cities.id');
}
@@ -96,16 +97,17 @@ class CityTable extends DataTableComponent
->find($id);
$query = City::radius($city->latitude, $city->longitude, 100)
->where('id', '!=', $id);
return to_route('school.table.event', [
'#table',
'country' => $this->country,
'course_events' => [
'course_events' => [
'filters' => [
'stadt' => $query->pluck('name')
->push($city->name)
->implode(',')
->implode(','),
],
]
],
]);
}
@@ -118,17 +120,18 @@ class CityTable extends DataTableComponent
if ($ids->isEmpty()) {
$this->notification()
->error(__('No bookcases found in the radius of 5km'));
return;
}
return to_route('bookCases.table.bookcases', [
'#table',
'country' => $this->country,
'bookcases' => [
'bookcases' => [
'filters' => [
'byids' => $ids->implode(',')
'byids' => $ids->implode(','),
],
]
],
]);
}
}

View File

@@ -12,6 +12,7 @@ use Rappasoft\LaravelLivewireTables\Views\Filters\MultiSelectFilter;
class CourseTable extends DataTableComponent
{
public string $country;
public string $tableName = 'courses';
public function configure(): void
@@ -20,13 +21,13 @@ class CourseTable extends DataTableComponent
->setAdditionalSelects(['id'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -42,7 +43,7 @@ class CourseTable extends DataTableComponent
Tag::query()
->withType('course')
->get()
->mapWithKeys(fn($item, $key) => [$item->name => $item->name])
->mapWithKeys(fn ($item, $key) => [$item->name => $item->name])
->toArray()
)
->filter(function (Builder $builder, array $values) {
@@ -54,33 +55,33 @@ class CourseTable extends DataTableComponent
public function columns(): array
{
return [
Column::make('Dozent', "lecturer.name")
Column::make('Dozent', 'lecturer.name')
->label(
fn($row, Column $column) => view('columns.courses.lecturer')->withRow($row)
fn ($row, Column $column) => view('columns.courses.lecturer')->withRow($row)
)
->sortable()
->collapseOnMobile(),
Column::make("Name", "name")
->searchable(fn(Builder $query, string $term) => $query->where('name', 'ilike', '%'.$term.'%'))
Column::make('Name', 'name')
->searchable(fn (Builder $query, string $term) => $query->where('name', 'ilike', '%'.$term.'%'))
->sortable(),
Column::make("Tags")
Column::make('Tags')
->label(
fn($row, Column $column) => view('columns.courses.tags')->withRow($row)
fn ($row, Column $column) => view('columns.courses.tags')->withRow($row)
)
->collapseOnMobile(),
Column::make("Termine")
Column::make('Termine')
->label(
fn($row, Column $column) => '<strong>'.$row->course_events_count.'</strong>'
fn ($row, Column $column) => '<strong>'.$row->course_events_count.'</strong>'
)
->html()
->sortable()
->collapseOnMobile(),
Column::make("Erstellt am", "created_at")
Column::make('Erstellt am', 'created_at')
->sortable()
->collapseOnMobile(),
Column::make('')
->label(
fn($row, Column $column) => view('columns.courses.action')->withRow($row)
fn ($row, Column $column) => view('columns.courses.action')->withRow($row)
),
];
}
@@ -96,7 +97,7 @@ class CourseTable extends DataTableComponent
'courseEvents',
])
->whereHas('courseEvents.venue.city.country',
fn($query) => $query->where('countries.code', $this->country))
fn ($query) => $query->where('countries.code', $this->country))
->orderByDesc('course_events_count')
->orderBy('courses.id');
}
@@ -105,12 +106,12 @@ class CourseTable extends DataTableComponent
{
return to_route('school.table.event', [
'#table',
'country' => $this->country,
'country' => $this->country,
'course_events' => [
'filters' => [
'course_id' => $id,
],
]
],
]);
}
}

View File

@@ -15,8 +15,11 @@ use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
class EventTable extends DataTableComponent
{
public string $country;
public bool $viewingModal = false;
public $currentModal;
public string $tableName = 'course_events';
public function configure(): void
@@ -31,13 +34,13 @@ class EventTable extends DataTableComponent
])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -66,7 +69,7 @@ class EventTable extends DataTableComponent
});
} else {
$builder->whereHas('venue.city',
fn($query) => $query->where('cities.name', 'ilike', "%$value%"));
fn ($query) => $query->where('cities.name', 'ilike', "%$value%"));
}
}),
TextFilter::make(__('Venue'), 'venue')
@@ -75,7 +78,7 @@ class EventTable extends DataTableComponent
])
->filter(function (Builder $builder, string $value) {
$builder->whereHas('venue',
fn($query) => $query->where('venues.name', 'ilike', "%$value%"));
fn ($query) => $query->where('venues.name', 'ilike', "%$value%"));
}),
TextFilter::make(__('Course'))
->config([
@@ -83,13 +86,13 @@ class EventTable extends DataTableComponent
])
->filter(function (Builder $builder, string $value) {
$builder->whereHas('course',
fn($query) => $query->where('courses.name', 'ilike', "%$value%"));
fn ($query) => $query->where('courses.name', 'ilike', "%$value%"));
}),
TextFilter::make('Course by ID', 'course_id')
->hiddenFromMenus()
->filter(function (Builder $builder, string $value) {
$builder->whereHas('course',
fn($query) => $query->where('courses.id', '=', $value));
fn ($query) => $query->where('courses.id', '=', $value));
}),
MultiSelectFilter::make(__('Type'))
->options(
@@ -99,7 +102,7 @@ class EventTable extends DataTableComponent
)
->filter(function (Builder $builder, array $values) {
$builder->whereHas('course.categories',
fn($query) => $query->whereIn('categories.id', $values));
fn ($query) => $query->whereIn('categories.id', $values));
}),
SelectFilter::make(__('Lecturer'))
->options(
@@ -109,7 +112,7 @@ class EventTable extends DataTableComponent
)
->filter(function (Builder $builder, string $value) {
$builder->whereHas('course.lecturer',
fn($query) => $query->where('lecturers.id', $value));
fn ($query) => $query->where('lecturers.id', $value));
}),
];
}
@@ -117,33 +120,33 @@ class EventTable extends DataTableComponent
public function columns(): array
{
return [
Column::make(_('City'), "venue.city.name")
Column::make(_('City'), 'venue.city.name')
->sortable()
->collapseOnMobile(),
Column::make(__('Venue'), "venue.name")
Column::make(__('Venue'), 'venue.name')
->sortable()
->collapseOnMobile(),
Column::make(__('Lecturer'), "course.lecturer.name")
Column::make(__('Lecturer'), 'course.lecturer.name')
->label(
fn($row, Column $column) => view('columns.events.lecturer')->withRow($row)
fn ($row, Column $column) => view('columns.events.lecturer')->withRow($row)
)
->sortable()
->collapseOnMobile(),
Column::make(__('Course'), "course.name")
Column::make(__('Course'), 'course.name')
->sortable(),
Column::make(__('Type'))
->label(
fn($row, Column $column) => view('columns.events.categories')->withRow($row)
fn ($row, Column $column) => view('columns.events.categories')->withRow($row)
)
->collapseOnMobile(),
Column::make(__('From'), "from")
Column::make(__('From'), 'from')
->format(
fn($value, $row, Column $column) => $value->asDateTime()
fn ($value, $row, Column $column) => $value->asDateTime()
)
->sortable(),
Column::make(__('To'), "to")
Column::make(__('To'), 'to')
->format(
fn($value, $row, Column $column) => $value->asDateTime()
fn ($value, $row, Column $column) => $value->asDateTime()
)
->sortable()
->collapseOnMobile(),
@@ -155,7 +158,7 @@ class EventTable extends DataTableComponent
->sortable(),*/
Column::make(__('Actions'))
->label(
fn($row, Column $column) => view('columns.events.action')->withRow($row)
fn ($row, Column $column) => view('columns.events.action')->withRow($row)
)
->collapseOnMobile(),
];
@@ -170,7 +173,7 @@ class EventTable extends DataTableComponent
])
->where('from', '>=', now())
->whereHas('venue.city.country',
fn($query) => $query->where('countries.code', $this->country));
fn ($query) => $query->where('countries.code', $this->country));
}
public function viewHistoryModal($modelId): void

View File

@@ -12,6 +12,7 @@ use Rappasoft\LaravelLivewireTables\Views\Columns\ImageColumn;
class LecturerTable extends DataTableComponent
{
public string $country;
public string $tableName = 'lecturers';
public function configure(): void
@@ -20,13 +21,13 @@ class LecturerTable extends DataTableComponent
->setAdditionalSelects(['id'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -39,32 +40,32 @@ class LecturerTable extends DataTableComponent
return [
ImageColumn::make('Bild')
->location(
fn($row) => $row->getFirstMediaUrl('avatar', 'thumb')
fn ($row) => $row->getFirstMediaUrl('avatar', 'thumb')
)
->attributes(fn($row) => [
->attributes(fn ($row) => [
'class' => 'rounded h-16 w-16',
'alt' => $row->name.' Avatar',
'alt' => $row->name.' Avatar',
])
->collapseOnMobile(),
Column::make("Name", "name")
->searchable(fn($query, $term) => $query->where('name', 'ilike', '%'.$term.'%'))
Column::make('Name', 'name')
->searchable(fn ($query, $term) => $query->where('name', 'ilike', '%'.$term.'%'))
->sortable(),
BooleanColumn::make("Aktiv", 'active')
BooleanColumn::make('Aktiv', 'active')
->sortable()
->collapseOnMobile(),
Column::make('Kurse')
->label(
fn($row, Column $column) => $row->courses_count
fn ($row, Column $column) => $row->courses_count
)
->collapseOnMobile(),
Column::make('Inhalte')
->label(
fn($row, Column $column) => $row->library_items_count
fn ($row, Column $column) => $row->library_items_count
)
->collapseOnMobile(),
Column::make('')
->label(
fn($row, Column $column) => view('columns.lectures.action')
fn ($row, Column $column) => view('columns.lectures.action')
->withRow($row)
->withCountry($this->country)
),
@@ -89,22 +90,22 @@ class LecturerTable extends DataTableComponent
if ($event) {
return to_route('school.table.event', [
'#table',
'country' => $this->country,
'country' => $this->country,
'course_events' => [
'filters' => [
'dozent' => $lecturer->id,
],
]
],
]);
} else {
return to_route('library.table.libraryItems', [
'#table',
'country' => $this->country,
'country' => $this->country,
'library_items' => [
'filters' => [
'lecturer_id' => $lecturer->id,
],
]
],
]);
}
}

View File

@@ -17,6 +17,7 @@ use Spatie\LaravelOptions\Options;
class LibraryItemTable extends DataTableComponent
{
public string $currentTab;
public string $tableName = 'library_items';
public function configure(): void
@@ -27,13 +28,13 @@ class LibraryItemTable extends DataTableComponent
->setDefaultSort('order_column', 'asc')
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -88,7 +89,7 @@ class LibraryItemTable extends DataTableComponent
});
} else {
$builder->whereHas('libraries',
fn($query) => $query->where('libraries.name', 'ilike', "%$value%"));
fn ($query) => $query->where('libraries.name', 'ilike', "%$value%"));
}
}),
SelectFilter::make('Art')
@@ -97,7 +98,7 @@ class LibraryItemTable extends DataTableComponent
Options::forEnum(LibraryItemType::class)
->toArray()
)
->mapWithKeys(fn($value, $key) => [$value['value'] => $value['label']])
->mapWithKeys(fn ($value, $key) => [$value['value'] => $value['label']])
->prepend('*', '')
->toArray()
)
@@ -115,18 +116,18 @@ class LibraryItemTable extends DataTableComponent
return [
Column::make(__('Image'))
->label(
fn($row, Column $column) => view('columns.library_items.image')->withRow($row)
fn ($row, Column $column) => view('columns.library_items.image')->withRow($row)
)
->collapseOnMobile(),
Column::make(__('Creator'), "lecturer.name")
Column::make(__('Creator'), 'lecturer.name')
->label(
fn($row, Column $column) => view('columns.courses.lecturer')->withRow($row)
fn ($row, Column $column) => view('columns.courses.lecturer')->withRow($row)
)
->sortable()
->collapseOnMobile(),
Column::make("Name", "name")
Column::make('Name', 'name')
->sortable(),
Column::make("Art", "type")
Column::make('Art', 'type')
->format(
function ($value, $row, Column $column) {
return '<span class="whitespace-nowrap inline-flex items-center rounded-full bg-amber-400 px-2.5 py-0.5 text-base font-medium text-gray-900"><i class="mr-2 fa fa-thin fa-'
@@ -138,14 +139,14 @@ class LibraryItemTable extends DataTableComponent
->html()
->sortable()
->collapseOnMobile(),
Column::make("Tags")
Column::make('Tags')
->label(
fn($row, Column $column) => view('columns.library_items.tags')->withRow($row)
fn ($row, Column $column) => view('columns.library_items.tags')->withRow($row)
)
->collapseOnMobile(),
Column::make('')
->label(
fn($row, Column $column) => view('columns.library_items.action')->withRow($row)
fn ($row, Column $column) => view('columns.library_items.action')->withRow($row)
),
];
}
@@ -167,14 +168,14 @@ class LibraryItemTable extends DataTableComponent
'lecturer',
'tags',
])
->whereHas('libraries', fn($query) => $query->where('libraries.is_public', $shouldBePublic))
->when($this->currentTab !== '*', fn($query) => $query
->whereHas('libraries', fn ($query) => $query->where('libraries.is_public', $shouldBePublic))
->when($this->currentTab !== '*', fn ($query) => $query
->whereHas('libraries',
fn($query) => $query
fn ($query) => $query
->where('libraries.name', $this->currentTab)
)
->orWhereHas('libraries',
fn($query) => $query
fn ($query) => $query
->where('libraries.parent_id', $parentLibrary->id)
)
)

View File

@@ -21,13 +21,13 @@ class MeetupEventTable extends DataTableComponent
->setDefaultSort('start', 'asc')
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -63,31 +63,31 @@ class MeetupEventTable extends DataTableComponent
$columns = [
Column::make(__('Meetup'), 'meetup.name')
->format(
fn($value, $row, Column $column) => view('columns.meetup_events.name')
fn ($value, $row, Column $column) => view('columns.meetup_events.name')
->withRow($row)
->withCountry($this->country)
)
->searchable(fn($builder, $term) => $builder->where('meetups.name', 'ilike', '%'.$term.'%'))
->searchable(fn ($builder, $term) => $builder->where('meetups.name', 'ilike', '%'.$term.'%'))
->sortable(),
Column::make(__('Location'), 'location')
->searchable(fn($builder, $term) => $builder->where('location', 'ilike', '%'.$term.'%'))
->searchable(fn ($builder, $term) => $builder->where('location', 'ilike', '%'.$term.'%'))
->sortable()
->collapseOnMobile(),
Column::make(__('Start'), 'start')
->format(
fn($value, $row, Column $column) => $value->asDateTime()
fn ($value, $row, Column $column) => $value->asDateTime()
)
->sortable()
->collapseOnMobile(),
Column::make(__('Confirmations'))
->label(
fn($row, Column $column) => view('columns.meetup_events.confirmations')
fn ($row, Column $column) => view('columns.meetup_events.confirmations')
->withRow($row)
)
->collapseOnMobile(),
Column::make(__('Link'))
->label(
fn($row, Column $column) => view('columns.meetup_events.link')
fn ($row, Column $column) => view('columns.meetup_events.link')
->withRow($row)
)
->collapseOnMobile(),
@@ -96,7 +96,7 @@ class MeetupEventTable extends DataTableComponent
$adminColumns = auth()->check() ? [
Column::make(__('Actions'))
->label(
fn($row, Column $column) => view('columns.meetup_events.manage')
fn ($row, Column $column) => view('columns.meetup_events.manage')
->withRow($row)
)
->collapseOnMobile(),
@@ -109,7 +109,7 @@ class MeetupEventTable extends DataTableComponent
{
return MeetupEvent::query()
->where('meetup_events.start', '>=', now())
->whereHas('meetup.city.country', fn($query) => $query->where('code', $this->country))
->whereHas('meetup.city.country', fn ($query) => $query->where('code', $this->country))
->with([
'meetup.city.country',
]);

View File

@@ -29,16 +29,16 @@ class MeetupForBtcMapTable extends DataTableComponent
public function columns(): array
{
return [
Column::make("Id", "id")
Column::make('Id', 'id')
->sortable(),
Column::make("Name", "name")
Column::make('Name', 'name')
->sortable(),
Column::make("City", "city.name")
Column::make('City', 'city.name')
->sortable(),
Column::make("Country", "city.country.name")
Column::make('Country', 'city.country.name')
->sortable(),
Column::make("Actions")
->label(fn($row, Column $column) => view('columns.meetups.osm-actions', ['row' => $row])),
Column::make('Actions')
->label(fn ($row, Column $column) => view('columns.meetups.osm-actions', ['row' => $row])),
];
}

View File

@@ -11,6 +11,7 @@ use Rappasoft\LaravelLivewireTables\Views\Filters\TextFilter;
class MeetupTable extends DataTableComponent
{
public ?string $country = null;
public string $tableName = 'meetups';
public function configure(): void
@@ -19,13 +20,13 @@ class MeetupTable extends DataTableComponent
->setAdditionalSelects(['id', 'slug'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -49,16 +50,16 @@ class MeetupTable extends DataTableComponent
return [
Column::make(__('Name'), 'name')
->format(
fn($value, $row, Column $column) => view('columns.meetups.name')
fn ($value, $row, Column $column) => view('columns.meetups.name')
->withRow($row)
)
->searchable(fn($builder, $term) => $builder->where('meetups.name', 'ilike', '%'.$term.'%')),
->searchable(fn ($builder, $term) => $builder->where('meetups.name', 'ilike', '%'.$term.'%')),
Column::make(__('Plebs'))
->label(fn($row, Column $column) => $row->users_count)
->label(fn ($row, Column $column) => $row->users_count)
->collapseOnMobile(),
Column::make(__('Links'))
->label(
fn($row, Column $column) => view('columns.meetups.action')
fn ($row, Column $column) => view('columns.meetups.action')
->withRow($row)
->withIcs(route('meetup.ics',
['country' => $this->country ?? $row->city->country->code, 'meetup' => $row->id]))
@@ -77,15 +78,15 @@ class MeetupTable extends DataTableComponent
'meetupEvents',
])
->when($this->country,
fn($query, $country) => $query->whereRelation('city.country', 'code', $this->country))
fn ($query, $country) => $query->whereRelation('city.country', 'code', $this->country))
->withCount([
'users',
'meetupEvents' => fn($query) => $query->where('start', '>=',
'meetupEvents' => fn ($query) => $query->where('start', '>=',
now()),
])
->when(!$this->country, fn($query) => $query->orderByDesc('users_count')
->when(! $this->country, fn ($query) => $query->orderByDesc('users_count')
->orderBy('meetups.id'))
->when($this->country, fn($query) => $query->orderByDesc('meetup_events_count')
->when($this->country, fn ($query) => $query->orderByDesc('meetup_events_count')
->orderBy('meetups.id'));
}
@@ -95,10 +96,10 @@ class MeetupTable extends DataTableComponent
->find($id);
return to_route('meetup.table.meetupEvent', [
'country' => $this->country ?? $meetup->city->country->code,
'country' => $this->country ?? $meetup->city->country->code,
'meetup_events' => [
'filters' => ['bymeetupid' => $id],
]
],
]);
}
}

View File

@@ -20,13 +20,13 @@ class VenueTable extends DataTableComponent
->setAdditionalSelects(['id'])
->setThAttributes(function (Column $column) {
return [
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'class' => 'px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider dark:bg-gray-800 dark:text-gray-400',
'default' => false,
];
})
->setTdAttributes(function (Column $column, $row, $columnIndex, $rowIndex) {
return [
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'class' => 'px-6 py-4 text-sm font-medium dark:text-white',
'default' => false,
];
})
@@ -39,27 +39,27 @@ class VenueTable extends DataTableComponent
return [
ImageColumn::make('Bild')
->location(
fn($row) => $row->getFirstMediaUrl('images', 'thumb')
fn ($row) => $row->getFirstMediaUrl('images', 'thumb')
)
->attributes(fn($row) => [
->attributes(fn ($row) => [
'class' => 'rounded h-16 w-16',
'alt' => $row->name.' Avatar',
'alt' => $row->name.' Avatar',
])
->collapseOnMobile(),
Column::make("Name", "name")
->searchable(fn($query, $term) => $query->where('name', 'ilike', '%'.$term.'%'))
Column::make('Name', 'name')
->searchable(fn ($query, $term) => $query->where('name', 'ilike', '%'.$term.'%'))
->sortable(),
Column::make("Street", "street")
Column::make('Street', 'street')
->sortable()
->collapseOnMobile(),
Column::make('Termine')
->label(
fn($row, Column $column) => $row->course_events_count
fn ($row, Column $column) => $row->course_events_count
)
->collapseOnMobile(),
Column::make('')
->label(
fn($row, Column $column) => view('columns.venues.action')->withRow($row)
fn ($row, Column $column) => view('columns.venues.action')->withRow($row)
),
];
}
@@ -70,7 +70,7 @@ class VenueTable extends DataTableComponent
->withCount([
'courseEvents',
])
->whereHas('city.country', fn($query) => $query->where('code', $this->country))
->whereHas('city.country', fn ($query) => $query->where('code', $this->country))
->orderByDesc('course_events_count')
->orderBy('venues.id');
}
@@ -82,12 +82,12 @@ class VenueTable extends DataTableComponent
return to_route('school.table.event', [
'#table',
'country' => $this->country,
'country' => $this->country,
'course_events' => [
'filters' => [
'venue' => $venue->name,
],
]
],
]);
}
}