diff --git a/app/Filament/Resources/ArticleResource.php b/app/Filament/Resources/ArticleResource.php
index f6cf99cd..86af781f 100644
--- a/app/Filament/Resources/ArticleResource.php
+++ b/app/Filament/Resources/ArticleResource.php
@@ -6,10 +6,17 @@
use App\Filament\Resources\ArticleResource\Pages;
use App\Models\Article;
+use Filament\Forms\Components\RichEditor;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\Toggle;
use Filament\Resources\Form;
use Filament\Resources\Resource;
use Filament\Resources\Table;
use Filament\Tables;
+use Filament\Tables\Filters\Layout;
+use Filament\Tables\Filters\SelectFilter;
class ArticleResource extends Resource
{
@@ -17,6 +24,12 @@ class ArticleResource extends Resource
protected static ?string $navigationGroup = 'Administrează';
+ protected static ?string $navigationLabel = 'Articole';
+
+ protected static ?string $label = 'Articol';
+
+ protected static ?string $pluralLabel = 'Articole';
+
protected static ?int $navigationSort = 7;
protected static ?string $navigationIcon = 'heroicon-o-collection';
@@ -25,22 +38,59 @@ public static function form(Form $form): Form
{
return $form
->schema([
- //
- ]);
+ TextInput::make('title')
+ ->required()
+ ->label(__('article.title'))
+ ->required()
+ ->maxLength(255),
+ Select::make('category_id')
+ ->relationship('category', 'name')
+ ->required()
+ ->label(__('article.category')),
+ RichEditor::make('content')
+ ->required()
+ ->label(__('article.content'))->columnSpanFull(),
+ TextInput::make('author')
+ ->required()
+ ->label(__('article.author'))
+ ->required()
+ ->maxLength(255),
+ Toggle::make('is_active')
+ ->label(__('article.is_active'))
+ ->required(),
+ SpatieMediaLibraryFileUpload::make('cover')
+ ->collection('cover')
+ ->label(__('article.cover_image'))
+ ->required()
+ ->acceptedFileTypes(['image/*'])
+ ->columnSpanFull(),
+ SpatieMediaLibraryFileUpload::make('gallery')->collection('gallery')
+ ->multiple()
+ ->label(__('article.gallery'))
+ ->enableReordering()->columnSpanFull(),
+
+ ]);
}
public static function table(Table $table): Table
{
return $table
->columns([
- //
+ Tables\Columns\TextColumn::make('title')->searchable()->label(__('article.title'))->searchable(),
+ Tables\Columns\TextColumn::make('category.name')->searchable()->label(__('article.category'))->sortable(),
+ Tables\Columns\TextColumn::make('created_at')->label(__('article.created_at'))->sortable(),
+
])
->filters([
- //
+ SelectFilter::make('category')
+ ->multiple()
+ ->relationship('category', 'name')
+ ->label(__('article.filter.category')),
])
->actions([
Tables\Actions\EditAction::make(),
])
+ ->filtersLayout(Layout::AboveContent)
->bulkActions([
Tables\Actions\DeleteBulkAction::make(),
]);
diff --git a/app/Filament/Resources/BadgeResource.php b/app/Filament/Resources/BadgeResource.php
index 80528c19..4f01b711 100644
--- a/app/Filament/Resources/BadgeResource.php
+++ b/app/Filament/Resources/BadgeResource.php
@@ -6,6 +6,8 @@
use App\Filament\Resources\BadgeResource\Pages;
use App\Models\Badge;
+use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
+use Filament\Forms\Components\TextInput;
use Filament\Resources\Form;
use Filament\Resources\Resource;
use Filament\Resources\Table;
@@ -25,7 +27,13 @@ public static function form(Form $form): Form
{
return $form
->schema([
- //
+ TextInput::make('name')->required()->label(__('badge.name'))->maxLength(255),
+ SpatieMediaLibraryFileUpload::make('cover')
+ ->collection('cover')
+ ->label(__('badge.cover_image'))
+ ->required()
+ ->acceptedFileTypes(['image/*'])
+ ->columnSpanFull(),
]);
}
@@ -33,7 +41,9 @@ public static function table(Table $table): Table
{
return $table
->columns([
- //
+ Tables\Columns\TextColumn::make('name')
+ ->searchable()
+ ->sortable(),
])
->filters([
//
diff --git a/app/Filament/Resources/ChampionshipResource/RelationManagers/StagesRelationManager.php b/app/Filament/Resources/ChampionshipResource/RelationManagers/StagesRelationManager.php
index 177abdc0..edcc0dc8 100644
--- a/app/Filament/Resources/ChampionshipResource/RelationManagers/StagesRelationManager.php
+++ b/app/Filament/Resources/ChampionshipResource/RelationManagers/StagesRelationManager.php
@@ -23,7 +23,7 @@ public static function form(Form $form): Form
Forms\Components\TextInput::make('name')
->required()
->maxLength(255),
- Forms\Components\DatePicker::make('start_date')->after(now())->required(),
+ Forms\Components\DatePicker::make('start_date')->after('today')->required(),
Forms\Components\DatePicker::make('end_date')->after('start_date')->required(),
Forms\Components\Toggle::make('is_current')
->nullable(),
diff --git a/app/Http/Controllers/ArticleController.php b/app/Http/Controllers/ArticleController.php
index 7b19aa73..2bd8f79e 100644
--- a/app/Http/Controllers/ArticleController.php
+++ b/app/Http/Controllers/ArticleController.php
@@ -5,6 +5,7 @@
namespace App\Http\Controllers;
use App\Models\Article;
+use App\Models\ArticleCategory;
use Illuminate\Http\Request;
use Inertia\Inertia;
@@ -14,192 +15,34 @@ public function index(Request $request)
{
// $query = Article::query();
- $categories = ['SOCIAL', 'EDUCATIE', 'MEDIU', 'LOREM', 'LOREM IPSUM'];
+ $categories = ArticleCategory::whereHas('articles', function ($query) {
+ $query->where('is_active', true);
+ })->get();
- $query = [
- 'current_page' => 1,
- 'data' => [
- [
- 'id' => 1,
- 'title' => 'Importanța educației remediale în România în timpul pandemiei',
- 'content' => '
Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.
',
- 'author' => 'Ion Popescu',
- 'ong' => 'Asociatia Pentru Tine',
- 'image' => '/images/project_img.png',
- 'category' => 'SOCIAL',
- 'created_at' => '15.02.2022',
- ],
- [
- 'id' => 2,
- 'title' => 'Importanța educației remediale în România în timpul pandemiei',
- 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum. ',
- 'author' => 'Ion Popescu',
- 'ong' => 'Asociatia Pentru Tine',
- 'image' => '/images/project_img.png',
- 'category' => 'SOCIAL',
- 'created_at' => '15.02.2022',
- ],
- [
- 'id' => 3,
- 'title' => 'Importanța educației remediale în România în timpul pandemiei',
- 'content' => '',
- 'author' => 'Ion Popescu',
- 'ong' => 'Asociatia Pentru Tine',
- 'image' => '/images/project_img.png',
- 'category' => 'SOCIAL',
- 'created_at' => '15.02.2022',
- ],
- ],
- 'first_page_url' => 'http://bursabinelui.test/articole?page=1',
- 'from' => 1,
- 'last_page' => 2,
- 'last_page_url'=> 'http://bursabinelui.test/articole?page=2',
- 'links' => [
- [
- 'url' => 'http://bursabinelui.test/articole?page=1',
- 'label' => '1',
- 'active' => true,
- ],
- [
- 'url'=> 'http://bursabinelui.test/articole?page=2',
- 'label'=> '2',
- 'active'=> false,
- ],
- ],
- 'next_page_url'=> 'http://bursabinelui.test/articole?page=1',
- 'path'=> 'http://bursabinelui.test/articole',
- 'per_page' =>15,
- 'prev_page_url' => null,
- 'to' => 15,
- 'total' => 20,
-
- ];
+ $articles = Article::active()->with('category');
+ if ($request->get('category')) {
+ $category = $categories->search(function (ArticleCategory $item) use ($request) {
+ return $item['slug'] == $request->get('category');
+ });
+ $articles = $articles->where('article_category_id', $category);
+ }
+ $articles = $articles->paginate(10);
return Inertia::render('Public/Articles/Articles', [
'categories' => $categories,
- 'query' => $query,
+ 'query' => $articles,
]);
}
public function article(Article $article)
{
- $article = [
- 'id' => 1,
- 'title' => 'Importanța educației remediale în România în timpul pandemiei',
- 'content' => 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Architecto accusantium praesentium eius, ut atque fuga culpa, similique sequi cum eos quis dolorum.
',
- 'author' => 'Ion Popescu',
- 'ong' => 'Asociatia Pentru Tine',
- 'image' => '/images/project_img.png',
- 'category' => 'SOCIAL',
- 'created_at' => '15.02.2022',
- ];
-
- $gallery = [
- [
- 'src' => 'https://youtu.be/f-t2nWVauSE',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => 'https://youtu.be/f-t2nWVauSE',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => 'https://youtu.be/f-t2nWVauSE',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => 'https://youtu.be/f-t2nWVauSE',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => 'https://youtu.be/f-t2nWVauSE',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'video',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- [
- 'src' => '/images/project_img.png',
- 'type' => 'image',
- ],
- ];
+ $article->load('category');
+ $gallery = $article->getMedia('gallery');
return Inertia::render('Public/Articles/Article', [
'article' => $article,
'gallery' => $gallery,
+ 'related' => $article->relatedArticles()->get()
]);
}
}
diff --git a/app/Models/Article.php b/app/Models/Article.php
index e461c7dd..590c140f 100644
--- a/app/Models/Article.php
+++ b/app/Models/Article.php
@@ -4,10 +4,74 @@
namespace App\Models;
+use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\BelongsTo;
+use Illuminate\Support\Str;
+use Spatie\Image\Manipulations;
+use Spatie\MediaLibrary\HasMedia;
+use Spatie\MediaLibrary\InteractsWithMedia;
+use Spatie\MediaLibrary\MediaCollections\Models\Media;
-class Article extends Model
+class Article extends Model implements HasMedia
{
use HasFactory;
+ use InteractsWithMedia;
+
+ protected $fillable = [
+ 'title',
+ 'slug',
+ 'content',
+ 'is_active',
+ 'article_category_id',
+ 'author',
+ ];
+
+ protected static function boot()
+ {
+ parent::boot(); // TODO: Change the autogenerated stub
+ static::creating(function ($article) {
+ $article->slug = Str::slug($article->title);
+ });
+ }
+
+ protected $casts = [
+ 'created_at' => 'date:y-m-d h:i',
+ 'updated_at' => 'date:y-m-d h:i',
+ ];
+ protected $with = ['media'];
+ protected $appends = ['cover_image'];
+
+ public function registerMediaConversions(Media $media = null): void
+ {
+ $this
+ ->addMediaConversion('preview')
+ ->fit(Manipulations::FIT_CROP, 300, 300)
+ ->nonQueued();
+ }
+
+ public function category(): BelongsTo
+ {
+ return $this->belongsTo(ArticleCategory::class, 'article_category_id', 'id');
+ }
+
+ public function scopeActive(Builder $query): Builder
+ {
+ return $query->where('is_active', true);
+ }
+
+ public function getCoverImageAttribute(): string
+ {
+ return $this->getFirstMediaUrl('cover', 'preview') ?? '';
+ }
+
+ public function relatedArticles(): Builder
+ {
+ return self::active()
+ ->where('article_category_id', $this->article_category_id)
+ ->where('id', '!=', $this->id)
+ ->limit(3);
+ }
+
}
diff --git a/app/Models/ArticleCategory.php b/app/Models/ArticleCategory.php
index b1524c4f..7b60dd6e 100644
--- a/app/Models/ArticleCategory.php
+++ b/app/Models/ArticleCategory.php
@@ -6,8 +6,21 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
+use Illuminate\Database\Eloquent\Relations\HasMany;
class ArticleCategory extends Model
{
use HasFactory;
+
+ protected $fillable = [
+ 'name',
+ 'slug',
+ 'is_active',
+ ];
+
+ public function articles(): HasMany
+ {
+ return $this->hasMany(Article::class);
+ }
+
}
diff --git a/app/Models/Badge.php b/app/Models/Badge.php
new file mode 100644
index 00000000..a37de55f
--- /dev/null
+++ b/app/Models/Badge.php
@@ -0,0 +1,33 @@
+addMediaConversion('preview')
+ ->fit(Manipulations::FIT_CROP, 300, 300)
+ ->nonQueued();
+ }
+
+}
diff --git a/app/Models/Testimonial.php b/app/Models/Testimonial.php
new file mode 100644
index 00000000..eb9c3a60
--- /dev/null
+++ b/app/Models/Testimonial.php
@@ -0,0 +1,11 @@
+faker->word;
+ return [
+ 'name' => $name,
+ 'slug' => \Str::slug($name),
+ 'is_active' => $this->faker->boolean,
+ ];
+ }
+}
diff --git a/database/factories/ArticleFactory.php b/database/factories/ArticleFactory.php
index 00907a4a..45aeca3e 100644
--- a/database/factories/ArticleFactory.php
+++ b/database/factories/ArticleFactory.php
@@ -13,8 +13,14 @@ class ArticleFactory extends Factory
public function definition(): array
{
+ $title = $this->faker->sentence;
return [
-
+ 'title' => $title,
+ 'slug' => \Str::slug($title),
+ 'content' => $this->faker->paragraph,
+ 'is_active' => $this->faker->boolean,
+ 'author' => $this->faker->name,
+ 'article_category_id' => ArticleCategoryFactory::new(),
];
}
}
diff --git a/database/factories/BadgeFactory.php b/database/factories/BadgeFactory.php
new file mode 100644
index 00000000..df51e8fe
--- /dev/null
+++ b/database/factories/BadgeFactory.php
@@ -0,0 +1,23 @@
+
+ */
+class BadgeFactory extends Factory
+{
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition(): array
+ {
+ return [
+ 'name' => $this->faker->name,
+ ];
+ }
+}
diff --git a/database/factories/TestimonialFactory.php b/database/factories/TestimonialFactory.php
new file mode 100644
index 00000000..97aa5b5d
--- /dev/null
+++ b/database/factories/TestimonialFactory.php
@@ -0,0 +1,25 @@
+
+ */
+class TestimonialFactory extends Factory
+{
+ /**
+ * Define the model's default state.
+ *
+ * @return array
+ */
+ public function definition(): array
+ {
+ return [
+ 'title' => $this->faker->word,
+ 'content' => $this->faker->paragraph,
+ 'author' => $this->faker->name,
+ ];
+ }
+}
diff --git a/database/migrations/2023_06_25_012356_create_article_categories_table.php b/database/migrations/2023_06_25_012356_create_article_categories_table.php
index 6ee39b9b..b07edb13 100644
--- a/database/migrations/2023_06_25_012356_create_article_categories_table.php
+++ b/database/migrations/2023_06_25_012356_create_article_categories_table.php
@@ -16,6 +16,8 @@ public function up(): void
Schema::create('article_categories', function (Blueprint $table) {
$table->id();
$table->string('name');
+ $table->string('slug');
+ $table->boolean('is_active')->default(true);
$table->timestamps();
});
}
diff --git a/database/migrations/2023_06_25_110506_create_articles_table.php b/database/migrations/2023_06_25_110506_create_articles_table.php
index 66190bf4..05eabb7f 100644
--- a/database/migrations/2023_06_25_110506_create_articles_table.php
+++ b/database/migrations/2023_06_25_110506_create_articles_table.php
@@ -19,8 +19,9 @@ public function up(): void
$table->foreignIdFor(\App\Models\Championship::class)->nullable()->constrained()->cascadeOnDelete();
$table->string('title');
$table->string('slug');
- $table->text('description');
+ $table->text('content');
$table->string('author');
+ $table->boolean('is_active')->default(true);
$table->timestamps();
});
}
diff --git a/database/migrations/2023_07_04_005236_create_badges_table.php b/database/migrations/2023_07_04_005236_create_badges_table.php
new file mode 100644
index 00000000..854fd83d
--- /dev/null
+++ b/database/migrations/2023_07_04_005236_create_badges_table.php
@@ -0,0 +1,28 @@
+id();
+ $table->string('name');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('badges');
+ }
+};
diff --git a/database/migrations/2023_07_04_005415_create_testimonials_table.php b/database/migrations/2023_07_04_005415_create_testimonials_table.php
new file mode 100644
index 00000000..dd702f43
--- /dev/null
+++ b/database/migrations/2023_07_04_005415_create_testimonials_table.php
@@ -0,0 +1,30 @@
+id();
+ $table->string('title');
+ $table->string('content');
+ $table->string('author');
+ $table->timestamps();
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::dropIfExists('testimonials');
+ }
+};
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index 0048e01a..5f625a22 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -7,11 +7,13 @@
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use App\Enums\ActivityDomain as ActivityDomainEnum;
use App\Models\ActivityDomain;
+use App\Models\Article;
use App\Models\Championship;
use App\Models\Organization;
use App\Models\Project;
use App\Models\User;
use App\Models\Volunteer;
+use Database\Factories\ArticleFactory;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
@@ -63,6 +65,12 @@ public function run(): void
for ($i = 0; $i < self::USER_BB_ADMIN_NUMBER; $i++) {
User::factory()->bbAdmin()->create();
}
+
+ $articleCategories = ['Social', 'Educație', 'Sănătate', 'Cultură', 'Mediu', 'Sport', 'Animale', 'Altele'];
+ foreach ($articleCategories as $category) {
+ \App\Models\ArticleCategory::factory(['name' => $category, 'slug' => \Str::slug($category)])
+ ->has(Article::factory()->count(4))->create();
+ }
}
}
}
diff --git a/lang/ro/article.php b/lang/ro/article.php
new file mode 100644
index 00000000..6778ad08
--- /dev/null
+++ b/lang/ro/article.php
@@ -0,0 +1,19 @@
+ 'Articol',
+ 'articles' => 'Articole',
+ 'title' => 'Titlu',
+ 'content' => 'Conținut',
+ 'is_active' => 'Activ',
+ 'category' => 'Categorie articol',
+ 'author' => 'Autor',
+ 'created_at' => 'Creat la',
+ 'updated_at' => 'Actualizat la',
+ 'cover_image' => 'Imagine de copertă',
+ 'gallery' => 'Galerie de imagini',
+ 'filter' => [
+ 'category' => 'Filtreați după categorie',
+ ],
+
+];
diff --git a/lang/ro/badge.php b/lang/ro/badge.php
new file mode 100644
index 00000000..c5161447
--- /dev/null
+++ b/lang/ro/badge.php
@@ -0,0 +1,8 @@
+ 'Nume',
+ 'cover_image' => 'Imagine de copertă',
+
+
+];
diff --git a/lang/ro/testimonial.php b/lang/ro/testimonial.php
new file mode 100644
index 00000000..6778ad08
--- /dev/null
+++ b/lang/ro/testimonial.php
@@ -0,0 +1,19 @@
+ 'Articol',
+ 'articles' => 'Articole',
+ 'title' => 'Titlu',
+ 'content' => 'Conținut',
+ 'is_active' => 'Activ',
+ 'category' => 'Categorie articol',
+ 'author' => 'Autor',
+ 'created_at' => 'Creat la',
+ 'updated_at' => 'Actualizat la',
+ 'cover_image' => 'Imagine de copertă',
+ 'gallery' => 'Galerie de imagini',
+ 'filter' => [
+ 'category' => 'Filtreați după categorie',
+ ],
+
+];
diff --git a/package-lock.json b/package-lock.json
index 00628a00..4882b69c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,9 +8,7 @@
"@headlessui/vue": "^1.7.13",
"@heroicons/vue": "^2.0.17",
"@tailwindcss/aspect-ratio": "^0.4.2",
- "@types/d3": "^7.4.0",
"chart.js": "^4.3.0",
- "d3": "^7.8.5",
"vite-svg-loader": "^4.0.0",
"vue-chartjs": "^5.2.0",
"vue-i18n": "^9.2.2",
@@ -659,233 +657,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/@types/d3": {
- "version": "7.4.0",
- "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.0.tgz",
- "integrity": "sha512-jIfNVK0ZlxcuRDKtRS/SypEyOQ6UHaFQBKv032X45VvxSJ6Yi5G9behy9h6tNTHTDGh5Vq+KbmBjUWLgY4meCA==",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/d3-axis": "*",
- "@types/d3-brush": "*",
- "@types/d3-chord": "*",
- "@types/d3-color": "*",
- "@types/d3-contour": "*",
- "@types/d3-delaunay": "*",
- "@types/d3-dispatch": "*",
- "@types/d3-drag": "*",
- "@types/d3-dsv": "*",
- "@types/d3-ease": "*",
- "@types/d3-fetch": "*",
- "@types/d3-force": "*",
- "@types/d3-format": "*",
- "@types/d3-geo": "*",
- "@types/d3-hierarchy": "*",
- "@types/d3-interpolate": "*",
- "@types/d3-path": "*",
- "@types/d3-polygon": "*",
- "@types/d3-quadtree": "*",
- "@types/d3-random": "*",
- "@types/d3-scale": "*",
- "@types/d3-scale-chromatic": "*",
- "@types/d3-selection": "*",
- "@types/d3-shape": "*",
- "@types/d3-time": "*",
- "@types/d3-time-format": "*",
- "@types/d3-timer": "*",
- "@types/d3-transition": "*",
- "@types/d3-zoom": "*"
- }
- },
- "node_modules/@types/d3-array": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.0.5.tgz",
- "integrity": "sha512-Qk7fpJ6qFp+26VeQ47WY0mkwXaiq8+76RJcncDEfMc2ocRzXLO67bLFRNI4OX1aGBoPzsM5Y2T+/m1pldOgD+A=="
- },
- "node_modules/@types/d3-axis": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.2.tgz",
- "integrity": "sha512-uGC7DBh0TZrU/LY43Fd8Qr+2ja1FKmH07q2FoZFHo1eYl8aj87GhfVoY1saJVJiq24rp1+wpI6BvQJMKgQm8oA==",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-brush": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.2.tgz",
- "integrity": "sha512-2TEm8KzUG3N7z0TrSKPmbxByBx54M+S9lHoP2J55QuLU0VSQ9mE96EJSAOVNEqd1bbynMjeTS9VHmz8/bSw8rA==",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-chord": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.2.tgz",
- "integrity": "sha512-abT/iLHD3sGZwqMTX1TYCMEulr+wBd0SzyOQnjYNLp7sngdOHYtNkMRI5v3w5thoN+BWtlHVDx2Osvq6fxhZWw=="
- },
- "node_modules/@types/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA=="
- },
- "node_modules/@types/d3-contour": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.2.tgz",
- "integrity": "sha512-k6/bGDoAGJZnZWaKzeB+9glgXCYGvh6YlluxzBREiVo8f/X2vpTEdgPy9DN7Z2i42PZOZ4JDhVdlTSTSkLDPlQ==",
- "dependencies": {
- "@types/d3-array": "*",
- "@types/geojson": "*"
- }
- },
- "node_modules/@types/d3-delaunay": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.1.tgz",
- "integrity": "sha512-tLxQ2sfT0p6sxdG75c6f/ekqxjyYR0+LwPrsO1mbC9YDBzPJhs2HbJJRrn8Ez1DBoHRo2yx7YEATI+8V1nGMnQ=="
- },
- "node_modules/@types/d3-dispatch": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.2.tgz",
- "integrity": "sha512-rxN6sHUXEZYCKV05MEh4z4WpPSqIw+aP7n9ZN6WYAAvZoEAghEK1WeVZMZcHRBwyaKflU43PCUAJNjFxCzPDjg=="
- },
- "node_modules/@types/d3-drag": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.2.tgz",
- "integrity": "sha512-qmODKEDvyKWVHcWWCOVcuVcOwikLVsyc4q4EBJMREsoQnR2Qoc2cZQUyFUPgO9q4S3qdSqJKBsuefv+h0Qy+tw==",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-dsv": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.1.tgz",
- "integrity": "sha512-76pBHCMTvPLt44wFOieouXcGXWOF0AJCceUvaFkxSZEu4VDUdv93JfpMa6VGNFs01FHfuP4a5Ou68eRG1KBfTw=="
- },
- "node_modules/@types/d3-ease": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.0.tgz",
- "integrity": "sha512-aMo4eaAOijJjA6uU+GIeW018dvy9+oH5Y2VPPzjjfxevvGQ/oRDs+tfYC9b50Q4BygRR8yE2QCLsrT0WtAVseA=="
- },
- "node_modules/@types/d3-fetch": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.2.tgz",
- "integrity": "sha512-gllwYWozWfbep16N9fByNBDTkJW/SyhH6SGRlXloR7WdtAaBui4plTP+gbUgiEot7vGw/ZZop1yDZlgXXSuzjA==",
- "dependencies": {
- "@types/d3-dsv": "*"
- }
- },
- "node_modules/@types/d3-force": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.4.tgz",
- "integrity": "sha512-q7xbVLrWcXvSBBEoadowIUJ7sRpS1yvgMWnzHJggFy5cUZBq2HZL5k/pBSm0GdYWS1vs5/EDwMjSKF55PDY4Aw=="
- },
- "node_modules/@types/d3-format": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.1.tgz",
- "integrity": "sha512-5KY70ifCCzorkLuIkDe0Z9YTf9RR2CjBX1iaJG+rgM/cPP+sO+q9YdQ9WdhQcgPj1EQiJ2/0+yUkkziTG6Lubg=="
- },
- "node_modules/@types/d3-geo": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.0.3.tgz",
- "integrity": "sha512-bK9uZJS3vuDCNeeXQ4z3u0E7OeJZXjUgzFdSOtNtMCJCLvDtWDwfpRVWlyt3y8EvRzI0ccOu9xlMVirawolSCw==",
- "dependencies": {
- "@types/geojson": "*"
- }
- },
- "node_modules/@types/d3-hierarchy": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
- "integrity": "sha512-9hjRTVoZjRFR6xo8igAJyNXQyPX6Aq++Nhb5ebrUF414dv4jr2MitM2fWiOY475wa3Za7TOS2Gh9fmqEhLTt0A=="
- },
- "node_modules/@types/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==",
- "dependencies": {
- "@types/d3-color": "*"
- }
- },
- "node_modules/@types/d3-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.0.0.tgz",
- "integrity": "sha512-0g/A+mZXgFkQxN3HniRDbXMN79K3CdTpLsevj+PXiTcb2hVyvkZUBg37StmgCQkaD84cUJ4uaDAWq7UJOQy2Tg=="
- },
- "node_modules/@types/d3-polygon": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.0.tgz",
- "integrity": "sha512-D49z4DyzTKXM0sGKVqiTDTYr+DHg/uxsiWDAkNrwXYuiZVd9o9wXZIo+YsHkifOiyBkmSWlEngHCQme54/hnHw=="
- },
- "node_modules/@types/d3-quadtree": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.2.tgz",
- "integrity": "sha512-QNcK8Jguvc8lU+4OfeNx+qnVy7c0VrDJ+CCVFS9srBo2GL9Y18CnIxBdTF3v38flrGy5s1YggcoAiu6s4fLQIw=="
- },
- "node_modules/@types/d3-random": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.1.tgz",
- "integrity": "sha512-IIE6YTekGczpLYo/HehAy3JGF1ty7+usI97LqraNa8IiDur+L44d0VOjAvFQWJVdZOJHukUJw+ZdZBlgeUsHOQ=="
- },
- "node_modules/@types/d3-scale": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.3.tgz",
- "integrity": "sha512-PATBiMCpvHJSMtZAMEhc2WyL+hnzarKzI6wAHYjhsonjWJYGq5BXTzQjv4l8m2jO183/4wZ90rKvSeT7o72xNQ==",
- "dependencies": {
- "@types/d3-time": "*"
- }
- },
- "node_modules/@types/d3-scale-chromatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
- "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw=="
- },
- "node_modules/@types/d3-selection": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.5.tgz",
- "integrity": "sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w=="
- },
- "node_modules/@types/d3-shape": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.1.tgz",
- "integrity": "sha512-6Uh86YFF7LGg4PQkuO2oG6EMBRLuW9cbavUW46zkIO5kuS2PfTqo2o9SkgtQzguBHbLgNnU90UNsITpsX1My+A==",
- "dependencies": {
- "@types/d3-path": "*"
- }
- },
- "node_modules/@types/d3-time": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz",
- "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg=="
- },
- "node_modules/@types/d3-time-format": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.0.tgz",
- "integrity": "sha512-yjfBUe6DJBsDin2BMIulhSHmr5qNR5Pxs17+oW4DoVPyVIXZ+m6bs7j1UVKP08Emv6jRmYrYqxYzO63mQxy1rw=="
- },
- "node_modules/@types/d3-timer": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.0.tgz",
- "integrity": "sha512-HNB/9GHqu7Fo8AQiugyJbv6ZxYz58wef0esl4Mv828w1ZKpAshw/uFWVDUcIB9KKFeFKoxS3cHY07FFgtTRZ1g=="
- },
- "node_modules/@types/d3-transition": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.3.tgz",
- "integrity": "sha512-/S90Od8Id1wgQNvIA8iFv9jRhCiZcGhPd2qX0bKF/PS+y0W5CrXKgIiELd2CvG1mlQrWK/qlYh3VxicqG1ZvgA==",
- "dependencies": {
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/d3-zoom": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.3.tgz",
- "integrity": "sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==",
- "dependencies": {
- "@types/d3-interpolate": "*",
- "@types/d3-selection": "*"
- }
- },
- "node_modules/@types/geojson": {
- "version": "7946.0.10",
- "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.10.tgz",
- "integrity": "sha512-Nmh0K3iWQJzniTuPRcJn5hxXkfB1T1pgB89SBig5PlJQU5yocazeu4jATJlaA0GYFKWMqDdvYemoSnF2pXgLVA=="
- },
"node_modules/@vitejs/plugin-vue": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.1.tgz",
@@ -1342,384 +1113,6 @@
"resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
},
- "node_modules/d3": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz",
- "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==",
- "dependencies": {
- "d3-array": "3",
- "d3-axis": "3",
- "d3-brush": "3",
- "d3-chord": "3",
- "d3-color": "3",
- "d3-contour": "4",
- "d3-delaunay": "6",
- "d3-dispatch": "3",
- "d3-drag": "3",
- "d3-dsv": "3",
- "d3-ease": "3",
- "d3-fetch": "3",
- "d3-force": "3",
- "d3-format": "3",
- "d3-geo": "3",
- "d3-hierarchy": "3",
- "d3-interpolate": "3",
- "d3-path": "3",
- "d3-polygon": "3",
- "d3-quadtree": "3",
- "d3-random": "3",
- "d3-scale": "4",
- "d3-scale-chromatic": "3",
- "d3-selection": "3",
- "d3-shape": "3",
- "d3-time": "3",
- "d3-time-format": "4",
- "d3-timer": "3",
- "d3-transition": "3",
- "d3-zoom": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-array": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz",
- "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
- "dependencies": {
- "internmap": "1 - 2"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-axis": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz",
- "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-brush": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz",
- "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "3",
- "d3-transition": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-chord": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz",
- "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==",
- "dependencies": {
- "d3-path": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-color": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
- "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-contour": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz",
- "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==",
- "dependencies": {
- "d3-array": "^3.2.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-delaunay": {
- "version": "6.0.4",
- "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz",
- "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==",
- "dependencies": {
- "delaunator": "5"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dispatch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz",
- "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-drag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz",
- "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-selection": "3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dsv": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz",
- "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==",
- "dependencies": {
- "commander": "7",
- "iconv-lite": "0.6",
- "rw": "1"
- },
- "bin": {
- "csv2json": "bin/dsv2json.js",
- "csv2tsv": "bin/dsv2dsv.js",
- "dsv2dsv": "bin/dsv2dsv.js",
- "dsv2json": "bin/dsv2json.js",
- "json2csv": "bin/json2dsv.js",
- "json2dsv": "bin/json2dsv.js",
- "json2tsv": "bin/json2dsv.js",
- "tsv2csv": "bin/dsv2dsv.js",
- "tsv2json": "bin/dsv2json.js"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-dsv/node_modules/commander": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
- "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
- "engines": {
- "node": ">= 10"
- }
- },
- "node_modules/d3-ease": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz",
- "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-fetch": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz",
- "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==",
- "dependencies": {
- "d3-dsv": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-force": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz",
- "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-quadtree": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-geo": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz",
- "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==",
- "dependencies": {
- "d3-array": "2.5.0 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-hierarchy": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz",
- "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-interpolate": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
- "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
- "dependencies": {
- "d3-color": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-path": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz",
- "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-polygon": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz",
- "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-quadtree": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz",
- "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-random": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz",
- "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-scale": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz",
- "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
- "dependencies": {
- "d3-array": "2.10.0 - 3",
- "d3-format": "1 - 3",
- "d3-interpolate": "1.2.0 - 3",
- "d3-time": "2.1.1 - 3",
- "d3-time-format": "2 - 4"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-scale-chromatic": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz",
- "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-interpolate": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-selection": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
- "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-shape": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz",
- "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==",
- "dependencies": {
- "d3-path": "^3.1.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-time": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz",
- "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
- "dependencies": {
- "d3-array": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-time-format": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz",
- "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
- "dependencies": {
- "d3-time": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-timer": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz",
- "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==",
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/d3-transition": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz",
- "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==",
- "dependencies": {
- "d3-color": "1 - 3",
- "d3-dispatch": "1 - 3",
- "d3-ease": "1 - 3",
- "d3-interpolate": "1 - 3",
- "d3-timer": "1 - 3"
- },
- "engines": {
- "node": ">=12"
- },
- "peerDependencies": {
- "d3-selection": "2 - 3"
- }
- },
- "node_modules/d3-zoom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz",
- "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==",
- "dependencies": {
- "d3-dispatch": "1 - 3",
- "d3-drag": "2 - 3",
- "d3-interpolate": "1 - 3",
- "d3-selection": "2 - 3",
- "d3-transition": "2 - 3"
- },
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/deepmerge": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
@@ -1729,14 +1122,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/delaunator": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz",
- "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==",
- "dependencies": {
- "robust-predicates": "^3.0.0"
- }
- },
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2057,17 +1442,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -2082,14 +1456,6 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "node_modules/internmap": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz",
- "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==",
- "engines": {
- "node": ">=12"
- }
- },
"node_modules/is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -2633,11 +1999,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/robust-predicates": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz",
- "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg=="
- },
"node_modules/rollup": {
"version": "3.21.4",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.21.4.tgz",
@@ -2676,16 +2037,6 @@
"queue-microtask": "^1.2.2"
}
},
- "node_modules/rw": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
- "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
diff --git a/resources/js/Pages/Auth/Register.vue b/resources/js/Pages/Auth/Register.vue
index d7dab05f..9d425bb8 100644
--- a/resources/js/Pages/Auth/Register.vue
+++ b/resources/js/Pages/Auth/Register.vue
@@ -165,7 +165,7 @@ const submit = () => {
/** After user is registered update data. */
const success = () => {
- social.put(route('register'), {
+ social.put(route('profile.update'), {
onError: (error) => {}
});
}
diff --git a/resources/js/Pages/Public/Articles/Article.vue b/resources/js/Pages/Public/Articles/Article.vue
index 571112da..6017d061 100644
--- a/resources/js/Pages/Public/Articles/Article.vue
+++ b/resources/js/Pages/Public/Articles/Article.vue
@@ -6,14 +6,14 @@
- {{ article.category }}
+ {{ article.category.name }}
@@ -38,8 +38,7 @@
/>
-
{{ article.author }} |
-
{{ article.ong }}
+
{{ article.author }}
{{ article.created_at }}
@@ -59,9 +58,7 @@
@@ -86,6 +83,7 @@ import SharePage from '@/Components/SharePage.vue';
const props = defineProps({
article: Object,
- gallery: Array
+ gallery: Array,
+ related: Array,
});
diff --git a/resources/js/Pages/Public/Articles/Articles.vue b/resources/js/Pages/Public/Articles/Articles.vue
index 7dc6f1fc..261d11af 100644
--- a/resources/js/Pages/Public/Articles/Articles.vue
+++ b/resources/js/Pages/Public/Articles/Articles.vue
@@ -10,20 +10,19 @@
- {{ article.category }}
+ {{ article.category.name }}
-
{{ article.author }} |
-
{{ article.ong }}
+
{{ article.author }}
{{ $t('read_article') }}
@@ -38,7 +37,7 @@
-
+
@@ -64,7 +63,7 @@
]"
>
- {{ article.category }}
+ {{ article.category.name }}
@@ -87,14 +86,14 @@
{{ article.author }}
- {{ article.title }}
+ {{ article.title }}
{{ article.created_at }}
{{ $t('read_article') }}
@@ -125,7 +124,7 @@
class="inline-flex items-center px-3 py-1 text-base font-semibold rounded-full cursor-pointer text-primary-500 bg-primary-50 gap-x-1"
@click="filterArticles(category)"
>
- {{ category }}
+ {{ category.name }}
@@ -138,12 +137,12 @@
class="w-full p-6 mb-6 space-y-6 border-l-8 rounded shadow border-primary-500"
>
- {{ article.category }}
+ {{ article.category.name }}
-
{{ article.author }} |
-
{{ article.ong }}
+
{{ article.author }}
+
{{ article.title }}
@@ -190,7 +189,8 @@ const props = defineProps({
const filter = ref({ category : null });
const filterArticles = (value) => {
- filter.value.category = value;
+ filter.value.category = value.slug;
+ console.log(filter.value);
router.visit(route('articles'), {
method: 'get',
diff --git a/routes/articles.php b/routes/articles.php
index 83358e5d..f84c8a3b 100644
--- a/routes/articles.php
+++ b/routes/articles.php
@@ -7,4 +7,4 @@
/* Public routes. */
Route::get('articole', [ArticleController::class, 'index'])->name('articles');
-Route::get('articol/{id}', [ArticleController::class, 'article'])->name('article');
+Route::get('articol/{article:slug}', [ArticleController::class, 'article'])->name('article');