diff --git a/app/Livewire/Nostr/Start.php b/app/Livewire/Nostr/Start.php index afbce9ec..c3bd38ad 100644 --- a/app/Livewire/Nostr/Start.php +++ b/app/Livewire/Nostr/Start.php @@ -2,16 +2,33 @@ namespace App\Livewire\Nostr; +use App\Models\Meetup; use App\Models\User; use Livewire\Component; class Start extends Component { public ?User $user = null; + public array $geoJsons = []; public function setUser($value) { - $this->user = User::query()->with(['meetups'])->where('nostr', $value['npub'])->first(); + $this->user = User::query() + ->with([ + 'meetups.city', + ]) + ->where('nostr', $value['npub']) + ->first(); + + $this->geoJsons = Meetup::query() + ->with([ + 'city', + ]) + ->get() + ->pluck('city.simplified_geojson') + ->filter() + ->values() + ->toArray(); } public function render() diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 8c04cda2..63ee9322 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -14,6 +14,8 @@ {{-- Fonts --}} @googlefonts {{-- Scripts --}} + @mapscripts + @include('components.layouts.scripts') @wireUiScripts diff --git a/resources/views/components/layouts/guest.blade.php b/resources/views/components/layouts/guest.blade.php index 8c04cda2..63ee9322 100644 --- a/resources/views/components/layouts/guest.blade.php +++ b/resources/views/components/layouts/guest.blade.php @@ -14,6 +14,8 @@ {{-- Fonts --}} @googlefonts {{-- Scripts --}} + @mapscripts + @include('components.layouts.scripts') @wireUiScripts diff --git a/resources/views/components/layouts/scripts.blade.php b/resources/views/components/layouts/scripts.blade.php new file mode 100644 index 00000000..d4c545d2 --- /dev/null +++ b/resources/views/components/layouts/scripts.blade.php @@ -0,0 +1,4 @@ + + diff --git a/resources/views/livewire/nostr/start.blade.php b/resources/views/livewire/nostr/start.blade.php index 18fdfd53..39d3f90e 100644 --- a/resources/views/livewire/nostr/start.blade.php +++ b/resources/views/livewire/nostr/start.blade.php @@ -1,12 +1,46 @@
+
+
- @if($user) - @foreach($user->meetups as $meetup) -
- {{ $meetup->name }} -
- @endforeach - @endif + function generateSimilarColor(baseColor, variance) { + var baseR = parseInt(baseColor.slice(1, 3), 16); + var baseG = parseInt(baseColor.slice(3, 5), 16); + var baseB = parseInt(baseColor.slice(5, 7), 16); + var newR = Math.floor((Math.random() - 0.5) * variance + baseR).toString(16).padStart(2, '0'); + var newG = Math.floor((Math.random() - 0.5) * variance + baseG).toString(16).padStart(2, '0'); + var newB = Math.floor((Math.random() - 0.5) * variance + baseB).toString(16).padStart(2, '0'); + return `#${newR}${newG}${newB}`; + } + + this.$watch('geoJsons', (geoJsons) => { + geoJsons.forEach((geoJson) => { + L.geoJSON(geoJson, { + style: function (feature) { + return { + color: generateSimilarColor('#0d579b', 20), + fillColor: generateSimilarColor('#f7931a', 20), + weight: 1, + opacity: 1, + }; + }, + }).addTo(this.map); + }); + }); + } + }" + > +
+