Compare commits

...

1 Commits

Author SHA1 Message Date
ShuriZma bdf8824487
update for use with our vehicle.ts 2024-10-02 16:39:29 +02:00
516 changed files with 63868 additions and 1978 deletions

View File

@ -10,6 +10,10 @@ FOOTER_IMAGE=img/header.png # can be any image type. path should start from publ
LANDING_PAGE=false # if set to true a landing page will be added, if false the vehicle list is the landing page LANDING_PAGE=false # if set to true a landing page will be added, if false the vehicle list is the landing page
ACCENT_COLOR=red-400 # https://tailwindcss.com/docs/background-color ACCENT_COLOR=red-400 # https://tailwindcss.com/docs/background-color
ADMIN_NAME=Admin
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=superSecureDefaultPassword
KEYBIND_SEPERATOR=; # seperator for keybind combos, thats being used on the db to seperate multiple keys KEYBIND_SEPERATOR=; # seperator for keybind combos, thats being used on the db to seperate multiple keys
# VEHICLE LIST # VEHICLE LIST

209
_ide_helper_models.php Normal file
View File

@ -0,0 +1,209 @@
<?php
// @formatter:off
/**
* A helper file for your Eloquent Models
* Copy the phpDocs from this file to the correct Model,
* And remove them from this file, to prevent double declarations.
*
* @author Barry vd. Heuvel <barryvdh@gmail.com>
*/
namespace App\Models{
/**
* App\Models\Brand
*
* @property int $brand_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $brand_name
* @property string|null $brand_description
* @method static BrandFactory factory($count = null, $state = [])
* @method static Builder|Manufacturer newModelQuery()
* @method static Builder|Manufacturer newQuery()
* @method static Builder|Manufacturer query()
* @method static Builder|Manufacturer whereBrandDescription($value)
* @method static Builder|Manufacturer whereBrandId($value)
* @method static Builder|Manufacturer whereBrandName($value)
* @method static Builder|Manufacturer whereCreatedAt($value)
* @method static Builder|Manufacturer whereUpdatedAt($value)
* @mixin Eloquent
*/
class Brand extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\FuelType
*
* @property int $fuel_type_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $fuel_type_name
* @property string|null $fuel_type_description
* @property float|null $fuel_type_price
* @method static FuelTypeFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query()
* @method static Builder|FuelType whereCreatedAt($value)
* @method static Builder|FuelType whereFuelTypeDescription($value)
* @method static Builder|FuelType whereFuelTypeId($value)
* @method static Builder|FuelType whereFuelTypeName($value)
* @method static Builder|FuelType whereFuelTypePrice($value)
* @method static Builder|FuelType whereUpdatedAt($value)
* @mixin Eloquent
*/
class FuelType extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Keybind
*
* @property int $keybind_id
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @property string $keybind_keys
* @property string $keybind_description
* @method static \Database\Factories\KeybindFactory factory($count = null, $state = [])
* @method static \Illuminate\Database\Eloquent\Builder|Keybind newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind query()
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindDescription($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindId($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereKeybindKeys($value)
* @method static \Illuminate\Database\Eloquent\Builder|Keybind whereUpdatedAt($value)
*/
class Keybind extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\User
*
* @property int $id
* @property string $name
* @property string $email
* @property Carbon|null $email_verified_at
* @property mixed $password
* @property string|null $remember_token
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property-read DatabaseNotificationCollection<int, DatabaseNotification> $notifications
* @property-read int|null $notifications_count
* @property-read Collection<int, PersonalAccessToken> $tokens
* @property-read int|null $tokens_count
* @method static UserFactory factory($count = null, $state = [])
* @method static Builder|User newModelQuery()
* @method static Builder|User newQuery()
* @method static Builder|User query()
* @method static Builder|User whereCreatedAt($value)
* @method static Builder|User whereEmail($value)
* @method static Builder|User whereEmailVerifiedAt($value)
* @method static Builder|User whereId($value)
* @method static Builder|User whereName($value)
* @method static Builder|User wherePassword($value)
* @method static Builder|User whereRememberToken($value)
* @method static Builder|User whereUpdatedAt($value)
* @mixin Eloquent
*/
class User extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Vehicle
*
* @property int $vehicle_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $name
* @property int $vehicle_storage
* @property int $vehicle_fuel_volume
* @property int $vehicle_seats
* @property float|null $vehicle_price
* @property float|null $vehicle_top_speed
* @property int $vehicle_class_id
* @property int $fuel_type_id
* @property int $brand_id
* @property int $vendor_id
* @method static VehicleFactory factory($count = null, $state = [])
* @method static Builder|Vehicle filter(array $filters)
* @method static Builder|Vehicle newModelQuery()
* @method static Builder|Vehicle newQuery()
* @method static Builder|Vehicle query()
* @method static Builder|Vehicle whereBrandId($value)
* @method static Builder|Vehicle whereCreatedAt($value)
* @method static Builder|Vehicle whereFuelTypeId($value)
* @method static Builder|Vehicle whereName($value)
* @method static Builder|Vehicle whereUpdatedAt($value)
* @method static Builder|Vehicle whereVehicleClassId($value)
* @method static Builder|Vehicle whereVehicleFuelVolume($value)
* @method static Builder|Vehicle whereVehicleId($value)
* @method static Builder|Vehicle whereVehiclePrice($value)
* @method static Builder|Vehicle whereVehicleSeats($value)
* @method static Builder|Vehicle whereVehicleStorage($value)
* @method static Builder|Vehicle whereVehicleTopSpeed($value)
* @method static Builder|Vehicle whereVendorId($value)
* @property string $vehicle_name
* @method static Builder|Vehicle whereVehicleName($value)
* @mixin Eloquent
*/
class Vehicle extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\VehicleClass
*
* @property int $vehicle_class_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vehicle_class_name
* @property string|null $vehicle_class_description
* @method static VehicleClassFactory factory($count = null, $state = [])
* @method static Builder|VehicleClass newModelQuery()
* @method static Builder|VehicleClass newQuery()
* @method static Builder|VehicleClass query()
* @method static Builder|VehicleClass whereCreatedAt($value)
* @method static Builder|VehicleClass whereUpdatedAt($value)
* @method static Builder|VehicleClass whereVehicleClassDescription($value)
* @method static Builder|VehicleClass whereVehicleClassId($value)
* @method static Builder|VehicleClass whereVehicleClassName($value)
* @mixin Eloquent
*/
class VehicleClass extends \Eloquent {}
}
namespace App\Models{
/**
* App\Models\Vendor
*
* @property int $vendor_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vendor_name
* @property string|null $vendor_description
* @property string|null $vendor_position
* @property float|null $vendor_x
* @property float|null $vendor_y
* @method static VendorFactory factory($count = null, $state = [])
* @method static Builder|Vendor newModelQuery()
* @method static Builder|Vendor newQuery()
* @method static Builder|Vendor query()
* @method static Builder|Vendor whereCreatedAt($value)
* @method static Builder|Vendor whereUpdatedAt($value)
* @method static Builder|Vendor whereVendorDescription($value)
* @method static Builder|Vendor whereVendorId($value)
* @method static Builder|Vendor whereVendorName($value)
* @method static Builder|Vendor whereVendorPosition($value)
* @method static Builder|Vendor whereVendorX($value)
* @method static Builder|Vendor whereVendorY($value)
* @mixin Eloquent
*/
class Vendor extends \Eloquent {}
}

View File

@ -2,11 +2,11 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Brand; use App\Models\DriveTrain;
use App\Http\Requests\StoreBrandRequest; use App\Http\Requests\StoreDriveTrainRequest;
use App\Http\Requests\UpdateBrandRequest; use App\Http\Requests\UpdateDriveTrainRequest;
class BrandController extends Controller class DriveTrainController extends Controller
{ {
/** /**
* Display a listing of the resource. * Display a listing of the resource.
@ -27,7 +27,7 @@ class BrandController extends Controller
/** /**
* Store a newly created resource in storage. * Store a newly created resource in storage.
*/ */
public function store(StoreBrandRequest $request) public function store(StoreDriveTrainRequest $request)
{ {
// //
} }
@ -35,7 +35,7 @@ class BrandController extends Controller
/** /**
* Display the specified resource. * Display the specified resource.
*/ */
public function show(Brand $brand) public function show(DriveTrain $driveTrain)
{ {
// //
} }
@ -43,7 +43,7 @@ class BrandController extends Controller
/** /**
* Show the form for editing the specified resource. * Show the form for editing the specified resource.
*/ */
public function edit(Brand $brand) public function edit(DriveTrain $driveTrain)
{ {
// //
} }
@ -51,7 +51,7 @@ class BrandController extends Controller
/** /**
* Update the specified resource in storage. * Update the specified resource in storage.
*/ */
public function update(UpdateBrandRequest $request, Brand $brand) public function update(UpdateDriveTrainRequest $request, DriveTrain $driveTrain)
{ {
// //
} }
@ -59,7 +59,7 @@ class BrandController extends Controller
/** /**
* Remove the specified resource from storage. * Remove the specified resource from storage.
*/ */
public function destroy(Brand $brand) public function destroy(DriveTrain $driveTrain)
{ {
// //
} }

View File

@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Models\Manufacturer;
use App\Http\Requests\StoreManufacturerRequest;
use App\Http\Requests\UpdateManufacturerRequest;
class ManufacturerController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreManufacturerRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(Manufacturer $brand)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(Manufacturer $brand)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateManufacturerRequest $request, Manufacturer $brand)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(Manufacturer $brand)
{
//
}
}

View File

@ -2,12 +2,13 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\Brand; use App\Models\Manufacturer;
use App\Models\FuelType; use App\Models\FuelType;
use App\Models\Vehicle; use App\Models\Vehicle;
use App\Http\Requests\StoreVehicleRequest; use App\Http\Requests\StoreVehicleRequest;
use App\Http\Requests\UpdateVehicleRequest; use App\Http\Requests\UpdateVehicleRequest;
use App\Models\VehicleClass; use App\Models\VehicleClass;
use App\Models\VehicleType;
use App\Models\Vendor; use App\Models\Vendor;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -20,22 +21,22 @@ class VehicleController extends Controller
public function index() public function index()
{ {
$vehicles = Vehicle::filter( $vehicles = Vehicle::filter(
request(['search', 'vehicle_class_id', 'brand_id', 'fuel_type_id', 'vendor_id']) request(['search', 'class', 'manufacturer', 'fuelType', 'type'])
) )
->paginate(24)->withQueryString(); ->paginate(24)->withQueryString();
$brands = Brand::all(); $manufacturers = Manufacturer::all();
$fuelTypes = FuelType::all(); $fuelTypes = FuelType::all();
$vehicleClasses = VehicleClass::all(); $classes = VehicleClass::all();
$vendors = Vendor::all(); $types = VehicleType::all();
return response( return response(
view('vehicles.index', [ view('vehicles.index', [
'vehicles' => $vehicles, 'vehicles' => $vehicles,
'brands' => $brands, 'manufacturers' => $manufacturers,
'fuelTypes' => $fuelTypes, 'fuelTypes' => $fuelTypes,
'vehicleClasses' => $vehicleClasses, 'vehicleClasses' => $classes,
'vendors' => $vendors, 'types' => $types,
]) ])
); );
} }

View File

@ -0,0 +1,66 @@
<?php
namespace App\Http\Controllers;
use App\Models\VehicleType;
use App\Http\Requests\StoreVehicleTypeRequest;
use App\Http\Requests\UpdateVehicleTypeRequest;
class VehicleTypeController extends Controller
{
/**
* Display a listing of the resource.
*/
public function index()
{
//
}
/**
* Show the form for creating a new resource.
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*/
public function store(StoreVehicleTypeRequest $request)
{
//
}
/**
* Display the specified resource.
*/
public function show(VehicleType $vehicleType)
{
//
}
/**
* Show the form for editing the specified resource.
*/
public function edit(VehicleType $vehicleType)
{
//
}
/**
* Update the specified resource in storage.
*/
public function update(UpdateVehicleTypeRequest $request, VehicleType $vehicleType)
{
//
}
/**
* Remove the specified resource from storage.
*/
public function destroy(VehicleType $vehicleType)
{
//
}
}

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class StoreBrandRequest extends FormRequest class StoreDriveTrainRequest extends FormRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StoreManufacturerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
class UpdateBrandRequest extends FormRequest class StoreVehicleTypeRequest extends FormRequest
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateDriveTrainRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateManufacturerRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class UpdateVehicleTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array|string>
*/
public function rules(): array
{
return [
//
];
}
}

View File

@ -1,94 +0,0 @@
<?php
namespace App\Models;
use Database\Factories\BrandFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/**
* App\Models\Brand
*
* @property int $brand_id
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $brand_name
* @property string|null $brand_description
* @method static BrandFactory factory($count = null, $state = [])
* @method static Builder|Brand newModelQuery()
* @method static Builder|Brand newQuery()
* @method static Builder|Brand query()
* @method static Builder|Brand whereBrandDescription($value)
* @method static Builder|Brand whereBrandId($value)
* @method static Builder|Brand whereBrandName($value)
* @method static Builder|Brand whereCreatedAt($value)
* @method static Builder|Brand whereUpdatedAt($value)
* @mixin Eloquent
*/
class Brand extends Model
{
use HasFactory;
/**
* @return int
*/
public function getBrandId(): int
{
return $this->brand_id;
}
/**
* @param int $brand_id
*
* @return Brand
*/
public function setBrandId(int $brand_id): Brand
{
$this->brand_id = $brand_id;
return $this;
}
/**
* @return string
*/
public function getBrandName(): string
{
return $this->brand_name;
}
/**
* @param string $brand_name
*
* @return Brand
*/
public function setBrandName(string $brand_name): Brand
{
$this->brand_name = $brand_name;
return $this;
}
/**
* @return string|null
*/
public function getBrandDescription(): ?string
{
return $this->brand_description;
}
/**
* @param string|null $brand_description
*
* @return Brand
*/
public function setBrandDescription(?string $brand_description): Brand
{
$this->brand_description = $brand_description;
return $this;
}
}

43
app/Models/DriveTrain.php Normal file
View File

@ -0,0 +1,43 @@
<?php
namespace App\Models;
use Database\Factories\DriveTrainFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\DriveTrain
*
* @property string $name
* @method static DriveTrainFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query()
* @method static Builder|FuelType whereName($value)
* @mixin Eloquent
*/
class DriveTrain extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'drive_trains';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function geteName(): string
{
return $this->name;
}
public function setName(string $name): DriveTrain
{
$this->name = $name;
return $this;
}
}

View File

@ -7,110 +7,56 @@ use Eloquent;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/** /**
* App\Models\FuelType * App\Models\FuelType
* *
* @property int $fuel_type_id * @property string $name
* @property Carbon|null $created_at * @property float|null $price
* @property Carbon|null $updated_at
* @property string $fuel_type_name
* @property string|null $fuel_type_description
* @property float|null $fuel_type_price
* @method static FuelTypeFactory factory($count = null, $state = []) * @method static FuelTypeFactory factory($count = null, $state = [])
* @method static Builder|FuelType newModelQuery() * @method static Builder|FuelType newModelQuery()
* @method static Builder|FuelType newQuery() * @method static Builder|FuelType newQuery()
* @method static Builder|FuelType query() * @method static Builder|FuelType query()
* @method static Builder|FuelType whereCreatedAt($value) * @method static Builder|FuelType whereName($value)
* @method static Builder|FuelType whereFuelTypeDescription($value) * @method static Builder|FuelType wherePrice($value)
* @method static Builder|FuelType whereFuelTypeId($value)
* @method static Builder|FuelType whereFuelTypeName($value)
* @method static Builder|FuelType whereFuelTypePrice($value)
* @method static Builder|FuelType whereUpdatedAt($value)
* @mixin Eloquent * @mixin Eloquent
*/ */
class FuelType extends Model class FuelType extends Model
{ {
use HasFactory; use HasFactory;
/** protected $primaryKey = 'name';
* @return int protected $table = 'fuel_types';
*/ public $incrementing = false;
public function getFuelTypeId(): int public $timestamps = false;
protected $guarded = [];
public function getName(): string
{ {
return $this->fuel_type_id; return $this->name;
} }
/** public function setName(string $name): FuelType
* @param int $fuel_type_id
*
* @return FuelType
*/
public function setFuelTypeId(int $fuel_type_id): FuelType
{ {
$this->fuel_type_id = $fuel_type_id; $this->name = $name;
return $this; return $this;
} }
/** public function getPrice(): ?float
* @return string
*/
public function getFuelTypeName(): string
{ {
return $this->fuel_type_name; return $this->price;
} }
/** public function setPrice(?float $price): FuelType
* @param string $fuel_type_name
*
* @return FuelType
*/
public function setFuelTypeName(string $fuel_type_name): FuelType
{ {
$this->fuel_type_name = $fuel_type_name; $this->price = $price;
return $this; return $this;
} }
/** public function getDisplayName(): string
* @return string|null
*/
public function getFuelTypeDescription(): ?string
{ {
return $this->fuel_type_description; return ucwords(str_replace('_', ' ', $this->name));
}
/**
* @param string|null $fuel_type_description
*
* @return FuelType
*/
public function setFuelTypeDescription(?string $fuel_type_description): FuelType
{
$this->fuel_type_description = $fuel_type_description;
return $this;
}
/**
* @return float|null
*/
public function getFuelTypePrice(): ?float
{
return $this->fuel_type_price;
}
/**
* @param float|null $fuel_type_price
*
* @return FuelType
*/
public function setFuelTypePrice(?float $fuel_type_price): FuelType
{
$this->fuel_type_price = $fuel_type_price;
return $this;
} }
} }

View File

@ -11,19 +11,19 @@ use Illuminate\Support\Carbon;
/** /**
* App\Models\Keybind * App\Models\Keybind
* *
* @property int $keybind_id * @property int $id
* @property Carbon|null $created_at * @property Carbon|null $created_at
* @property Carbon|null $updated_at * @property Carbon|null $updated_at
* @property string $keybind_keys * @property string $keys
* @property string $keybind_description * @property string $description
* @method static KeybindFactory factory($count = null, $state = []) * @method static KeybindFactory factory($count = null, $state = [])
* @method static Builder|Keybind newModelQuery() * @method static Builder|Keybind newModelQuery()
* @method static Builder|Keybind newQuery() * @method static Builder|Keybind newQuery()
* @method static Builder|Keybind query() * @method static Builder|Keybind query()
* @method static Builder|Keybind whereCreatedAt($value) * @method static Builder|Keybind whereCreatedAt($value)
* @method static Builder|Keybind whereKeybindDescription($value) * @method static Builder|Keybind whereDescription($value)
* @method static Builder|Keybind whereKeybindId($value) * @method static Builder|Keybind whereId($value)
* @method static Builder|Keybind whereKeybindKeys($value) * @method static Builder|Keybind whereKeys($value)
* @method static Builder|Keybind whereUpdatedAt($value) * @method static Builder|Keybind whereUpdatedAt($value)
* @mixin \Eloquent * @mixin \Eloquent
*/ */
@ -31,62 +31,43 @@ class Keybind extends Model
{ {
use HasFactory; use HasFactory;
/** protected $primaryKey = 'id';
* @return int protected $table = 'keybinds';
*/ public $incrementing = false;
public function getKeybindId(): int protected $guarded = [];
public function getId(): int
{ {
return $this->keybind_id; return $this->id;
} }
/** public function setId(int $id): Keybind
* @param int $keybind_id
*
* @return Keybind
*/
public function setKeybindId(int $keybind_id): Keybind
{ {
$this->keybind_id = $keybind_id; $this->id = $id;
return $this; return $this;
} }
/** public function getKeys(): string
* @return string
*/
public function getKeybindKeys(): string
{ {
return $this->keybind_keys; return $this->keys;
} }
/** public function setKeys(string $keys): Keybind
* @param string $keybind_keys
*
* @return Keybind
*/
public function setKeybindKeys(string $keybind_keys): Keybind
{ {
$this->keybind_keys = $keybind_keys; $this->keys = $keys;
return $this; return $this;
} }
/** public function getDescription(): string
* @return string
*/
public function getKeybindDescription(): string
{ {
return $this->keybind_description; return $this->description;
} }
/** public function setDescription(string $description): Keybind
* @param string $keybind_description
*
* @return Keybind
*/
public function setKeybindDescription(string $keybind_description): Keybind
{ {
$this->keybind_description = $keybind_description; $this->description = $description;
return $this; return $this;
} }

View File

@ -0,0 +1,58 @@
<?php
namespace App\Models;
use Database\Factories\ManufacturerFactory;
use Eloquent;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
/**
* App\Models\Manufacturer
*
* @property string $name
* @property string $displayName
* @method static ManufacturerFactory factory($count = null, $state = [])
* @method static Builder|Manufacturer newModelQuery()
* @method static Builder|Manufacturer newQuery()
* @method static Builder|Manufacturer query()
* @method static Builder|Manufacturer whereName($value)
* @method static Builder|Manufacturer whereDisplayName($value)
* @mixin Eloquent
*/
class Manufacturer extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'manufacturers';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->name;
}
public function setName(string $name): Manufacturer
{
$this->name = $name;
return $this;
}
public function getDisplayName(): string
{
return $this->displayName;
}
public function setDisplayName(string $displayName): Manufacturer
{
$this->displayName = $displayName;
return $this;
}
}

View File

@ -7,58 +7,93 @@ use Eloquent;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Carbon;
use Schema; use Schema;
/** /**
* App\Models\Vehicle * App\Models\Vehicle
* *
* @property int $vehicle_id * @property string $model
* @property Carbon|null $created_at * @property string $displayName
* @property Carbon|null $updated_at * @property string $manufacturer
* @property string $name * @property string $description
* @property int $vehicle_storage * @property string $type
* @property int $vehicle_fuel_volume * @property string $class
* @property int $vehicle_seats * @property int $isSold
* @property float|null $vehicle_price * @property float $price
* @property float|null $vehicle_top_speed * @property int $storage
* @property int $vehicle_class_id * @property string $fuelType
* @property int $fuel_type_id * @property int $seats
* @property int $brand_id * @property string $hash
* @property int $vendor_id * @property string|null $signedHash
* @property string|null $hexHash
* @property float $speed
* @property float $acceleration
* @property float $braking
* @property float $traction
* @property float $length
* @property float $width
* @property float $height
* @property float $topSpeed
* @property int $gears
* @property int $mass
* @property string $driveTrain
* @property float $consumption
* @property int $fuelTankVolume
* @property int $oilTankVolume
* @property string $inspiredBy
* @method static VehicleFactory factory($count = null, $state = []) * @method static VehicleFactory factory($count = null, $state = [])
* @method static Builder|Vehicle filter(array $filters) * @method static Builder|Vehicle filter(array $filters)
* @method static Builder|Vehicle newModelQuery() * @method static Builder|Vehicle newModelQuery()
* @method static Builder|Vehicle newQuery() * @method static Builder|Vehicle newQuery()
* @method static Builder|Vehicle query() * @method static Builder|Vehicle query()
* @method static Builder|Vehicle whereBrandId($value) * @method static Builder|Vehicle whereAcceleration($value)
* @method static Builder|Vehicle whereCreatedAt($value) * @method static Builder|Vehicle whereBraking($value)
* @method static Builder|Vehicle whereFuelTypeId($value) * @method static Builder|Vehicle whereClass($value)
* @method static Builder|Vehicle whereName($value) * @method static Builder|Vehicle whereConsumption($value)
* @method static Builder|Vehicle whereUpdatedAt($value) * @method static Builder|Vehicle whereDescription($value)
* @method static Builder|Vehicle whereVehicleClassId($value) * @method static Builder|Vehicle whereDisplayName($value)
* @method static Builder|Vehicle whereVehicleFuelVolume($value) * @method static Builder|Vehicle whereDriveTrain($value)
* @method static Builder|Vehicle whereVehicleId($value) * @method static Builder|Vehicle whereFuelTankVolume($value)
* @method static Builder|Vehicle whereVehiclePrice($value) * @method static Builder|Vehicle whereFuelType($value)
* @method static Builder|Vehicle whereVehicleSeats($value) * @method static Builder|Vehicle whereGears($value)
* @method static Builder|Vehicle whereVehicleStorage($value) * @method static Builder|Vehicle whereHash($value)
* @method static Builder|Vehicle whereVehicleTopSpeed($value) * @method static Builder|Vehicle whereHeight($value)
* @method static Builder|Vehicle whereVendorId($value) * @method static Builder|Vehicle whereHexHash($value)
* @property string $vehicle_name * @method static Builder|Vehicle whereInspiredBy($value)
* @method static Builder|Vehicle whereVehicleName($value) * @method static Builder|Vehicle whereIsSold($value)
* @method static Builder|Vehicle whereLength($value)
* @method static Builder|Vehicle whereManufacturer($value)
* @method static Builder|Vehicle whereMass($value)
* @method static Builder|Vehicle whereModel($value)
* @method static Builder|Vehicle whereOilTankVolume($value)
* @method static Builder|Vehicle wherePrice($value)
* @method static Builder|Vehicle whereSeats($value)
* @method static Builder|Vehicle whereSignedHash($value)
* @method static Builder|Vehicle whereSpeed($value)
* @method static Builder|Vehicle whereStorage($value)
* @method static Builder|Vehicle whereTopSpeed($value)
* @method static Builder|Vehicle whereTraction($value)
* @method static Builder|Vehicle whereType($value)
* @method static Builder|Vehicle whereWidth($value)
* @mixin Eloquent * @mixin Eloquent
*/ */
class Vehicle extends Model class Vehicle extends Model
{ {
use HasFactory; use HasFactory;
protected $primaryKey = 'model';
protected $table = 'vehicles';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function scopeFilter( public function scopeFilter(
$query, $query,
array $filters array $filters
): void { ): void {
$search = $filters['search'] ?? false; $search = $filters['search'] ?? false;
if ($search) { if ($search) {
$query->where('vehicle_name', 'like', '%' . $search . '%'); $query->where('displayName', 'like', '%' . $search . '%');
} }
unset($filters['search']); unset($filters['search']);
@ -84,21 +119,17 @@ class Vehicle extends Model
} }
switch ($field) { switch ($field) {
case 'vehicle_class_id': case 'class':
$query->join('vehicle_classes', 'vehicles.vehicle_class_id', '=', 'vehicle_classes.vehicle_class_id'); $query->join('classes', 'vehicles.class', '=', 'classes.name');
$query->where('vehicle_class_name', '=', $filter); $query->where('classes.name', '=', $filter);
break; break;
case 'brand_id': case 'manufacturer':
$query->join('brands', 'vehicles.brand_id', '=', 'brands.brand_id'); $query->join('manufacturers', 'vehicles.manufacturer', '=', 'manufacturers.name');
$query->where('brand_name', '=', $filter); $query->where('manufacturers.name', '=', $filter);
break; break;
case 'fuel_type_id': case 'fuelType':
$query->join('fuel_types', 'vehicles.fuel_type_id', '=', 'fuel_types.fuel_type_id'); $query->join('fuel_types', 'vehicles.fuelType', '=', 'fuel_types.name');
$query->where('fuel_type_name', '=', $filter); $query->where('fuel_types.name', '=', $filter);
break;
case 'vendor_id':
$query->join('vendors', 'vehicles.vendor_id', '=', 'vendors.vendor_id');
$query->where('vendor_name', '=', $filter);
break; break;
default: default:
Schema::hasColumn('vehicles', $field); Schema::hasColumn('vehicles', $field);
@ -107,222 +138,350 @@ class Vehicle extends Model
} }
} }
/** public function getModel(): string
* @return int
*/
public function getVehicleId(): int
{ {
return $this->vehicle_id; return $this->model;
} }
/** public function setModel(string $model): Vehicle
* @param int $vehicle_id
*
* @return Vehicle
*/
public function setVehicleId(int $vehicle_id): Vehicle
{ {
$this->vehicle_id = $vehicle_id; $this->model = $model;
return $this; return $this;
} }
/** public function getDisplayName(): string
* @return string
*/
public function getVehicleName(): string
{ {
return $this->vehicle_name; return $this->displayName;
} }
/** public function setDisplayName(string $displayName): Vehicle
* @param string $vehicle_name
*
* @return Vehicle
*/
public function setVehicleName(string $vehicle_name): Vehicle
{ {
$this->vehicle_name = $vehicle_name; $this->displayName = $displayName;
return $this; return $this;
} }
/** public function getManufacturer(): string
* @return int
*/
public function getVehicleStorage(): int
{ {
return $this->vehicle_storage; return $this->manufacturer;
} }
/** public function setManufacturer(string $manufacturer): Vehicle
* @param int $vehicle_storage
*
* @return Vehicle
*/
public function setVehicleStorage(int $vehicle_storage): Vehicle
{ {
$this->vehicle_storage = $vehicle_storage; $this->manufacturer = $manufacturer;
return $this; return $this;
} }
/** public function getDescription(): string
* @return int
*/
public function getVehicleFuelVolume(): int
{ {
return $this->vehicle_fuel_volume; return $this->description;
} }
/** public function setDescription(string $description): Vehicle
* @param int $vehicle_fuel_volume
*
* @return Vehicle
*/
public function setVehicleFuelVolume(int $vehicle_fuel_volume): Vehicle
{ {
$this->vehicle_fuel_volume = $vehicle_fuel_volume; $this->description = $description;
return $this; return $this;
} }
/** public function getType(): string
* @return int
*/
public function getVehicleSeats(): int
{ {
return $this->vehicle_seats; return $this->type;
} }
/** public function setType(string $type): Vehicle
* @param int $vehicle_seats
*
* @return Vehicle
*/
public function setVehicleSeats(int $vehicle_seats): Vehicle
{ {
$this->vehicle_seats = $vehicle_seats; $this->type = $type;
return $this; return $this;
} }
/** public function getClass(): string
* @return float|null
*/
public function getVehiclePrice(): ?float
{ {
return $this->vehicle_price; return $this->class;
} }
/** public function setClass(string $class): Vehicle
* @param float|null $vehicle_price
*
* @return Vehicle
*/
public function setVehiclePrice(?float $vehicle_price): Vehicle
{ {
$this->vehicle_price = $vehicle_price; $this->class = $class;
return $this; return $this;
} }
/** public function getIsSold(): int
* @return float|null
*/
public function getVehicleTopSpeed(): ?float
{ {
return $this->vehicle_top_speed; return $this->isSold;
} }
/** public function setIsSold(int $isSold): Vehicle
* @param float|null $vehicle_top_speed
*
* @return Vehicle
*/
public function setVehicleTopSpeed(?float $vehicle_top_speed): Vehicle
{ {
$this->vehicle_top_speed = $vehicle_top_speed; $this->isSold = $isSold;
return $this; return $this;
} }
/** public function getPrice(): float
* @return int
*/
public function getVehicleClassId(): int
{ {
return $this->vehicle_class_id; return $this->price;
} }
/** public function setPrice(float $price): Vehicle
* @param int $vehicle_class_id
*
* @return Vehicle
*/
public function setVehicleClassId(int $vehicle_class_id): Vehicle
{ {
$this->vehicle_class_id = $vehicle_class_id; $this->price = $price;
return $this; return $this;
} }
/** public function getStorage(): int
* @return int
*/
public function getFuelTypeId(): int
{ {
return $this->fuel_type_id; return $this->storage;
} }
/** public function setStorage(int $storage): Vehicle
* @param int $fuel_type_id
*
* @return Vehicle
*/
public function setFuelTypeId(int $fuel_type_id): Vehicle
{ {
$this->fuel_type_id = $fuel_type_id; $this->storage = $storage;
return $this; return $this;
} }
/** public function getFuelType(): string
* @return int
*/
public function getBrandId(): int
{ {
return $this->brand_id; return $this->fuelType;
} }
/** public function setFuelType(string $fuelType): Vehicle
* @param int $brand_id
*
* @return Vehicle
*/
public function setBrandId(int $brand_id): Vehicle
{ {
$this->brand_id = $brand_id; $this->fuelType = $fuelType;
return $this; return $this;
} }
/** public function getSeats(): int
* @return int
*/
public function getVendorId(): int
{ {
return $this->vendor_id; return $this->seats;
} }
/** public function setSeats(int $seats): Vehicle
* @param int $vendor_id
*
* @return Vehicle
*/
public function setVendorId(int $vendor_id): Vehicle
{ {
$this->vendor_id = $vendor_id; $this->seats = $seats;
return $this;
}
public function getHash(): string
{
return $this->hash;
}
public function setHash(string $hash): Vehicle
{
$this->hash = $hash;
return $this;
}
public function getSignedHash(): ?string
{
return $this->signedHash;
}
public function setSignedHash(?string $signedHash): Vehicle
{
$this->signedHash = $signedHash;
return $this;
}
public function getHexHash(): ?string
{
return $this->hexHash;
}
public function setHexHash(?string $hexHash): Vehicle
{
$this->hexHash = $hexHash;
return $this;
}
public function getSpeed(): float
{
return $this->speed;
}
public function setSpeed(float $speed): Vehicle
{
$this->speed = $speed;
return $this;
}
public function getAcceleration(): float
{
return $this->acceleration;
}
public function setAcceleration(float $acceleration): Vehicle
{
$this->acceleration = $acceleration;
return $this;
}
public function getBraking(): float
{
return $this->braking;
}
public function setBraking(float $braking): Vehicle
{
$this->braking = $braking;
return $this;
}
public function getTraction(): float
{
return $this->traction;
}
public function setTraction(float $traction): Vehicle
{
$this->traction = $traction;
return $this;
}
public function getLength(): float
{
return $this->length;
}
public function setLength(float $length): Vehicle
{
$this->length = $length;
return $this;
}
public function getWidth(): float
{
return $this->width;
}
public function setWidth(float $width): Vehicle
{
$this->width = $width;
return $this;
}
public function getHeight(): float
{
return $this->height;
}
public function setHeight(float $height): Vehicle
{
$this->height = $height;
return $this;
}
public function getTopSpeed(): float
{
return $this->topSpeed;
}
public function setTopSpeed(float $topSpeed): Vehicle
{
$this->topSpeed = $topSpeed;
return $this;
}
public function getGears(): int
{
return $this->gears;
}
public function setGears(int $gears): Vehicle
{
$this->gears = $gears;
return $this;
}
public function getMass(): int
{
return $this->mass;
}
public function setMass(int $mass): Vehicle
{
$this->mass = $mass;
return $this;
}
public function getDriveTrain(): string
{
return $this->driveTrain;
}
public function setDriveTrain(string $driveTrain): Vehicle
{
$this->driveTrain = $driveTrain;
return $this;
}
public function getConsumption(): float
{
return $this->consumption;
}
public function setConsumption(float $consumption): Vehicle
{
$this->consumption = $consumption;
return $this;
}
public function getFuelTankVolume(): int
{
return $this->fuelTankVolume;
}
public function setFuelTankVolume(int $fuelTankVolume): Vehicle
{
$this->fuelTankVolume = $fuelTankVolume;
return $this;
}
public function getOilTankVolume(): int
{
return $this->oilTankVolume;
}
public function setOilTankVolume(int $oilTankVolume): Vehicle
{
$this->oilTankVolume = $oilTankVolume;
return $this;
}
public function getInspiredBy(): string
{
return $this->inspiredBy;
}
public function setInspiredBy(string $inspiredBy): Vehicle
{
$this->inspiredBy = $inspiredBy;
return $this; return $this;
} }

View File

@ -12,83 +12,38 @@ use Illuminate\Support\Carbon;
/** /**
* App\Models\VehicleClass * App\Models\VehicleClass
* *
* @property int $vehicle_class_id * @property string $name
* @property Carbon|null $created_at
* @property Carbon|null $updated_at
* @property string $vehicle_class_name
* @property string|null $vehicle_class_description
* @method static VehicleClassFactory factory($count = null, $state = []) * @method static VehicleClassFactory factory($count = null, $state = [])
* @method static Builder|VehicleClass newModelQuery() * @method static Builder|VehicleClass newModelQuery()
* @method static Builder|VehicleClass newQuery() * @method static Builder|VehicleClass newQuery()
* @method static Builder|VehicleClass query() * @method static Builder|VehicleClass query()
* @method static Builder|VehicleClass whereCreatedAt($value) * @method static Builder|VehicleClass whereName($value)
* @method static Builder|VehicleClass whereUpdatedAt($value)
* @method static Builder|VehicleClass whereVehicleClassDescription($value)
* @method static Builder|VehicleClass whereVehicleClassId($value)
* @method static Builder|VehicleClass whereVehicleClassName($value)
* @mixin Eloquent * @mixin Eloquent
*/ */
class VehicleClass extends Model class VehicleClass extends Model
{ {
use HasFactory; use HasFactory;
/** protected $primaryKey = 'name';
* @return int protected $table = 'classes';
*/ public $incrementing = false;
public function getVehicleClassId(): int public $timestamps = false;
protected $guarded = [];
public function getName(): string
{ {
return $this->vehicle_class_id; return $this->name;
} }
/** public function setName(string $name): VehicleClass
* @param int $vehicle_class_id
*
* @return VehicleClass
*/
public function setVehicleClassId(int $vehicle_class_id): VehicleClass
{ {
$this->vehicle_class_id = $vehicle_class_id; $this->name = $name;
return $this; return $this;
} }
/** public function getDisplayName(): string
* @return string
*/
public function getVehicleClassName(): string
{ {
return $this->vehicle_class_name; return ucwords(str_replace('_', ' ', $this->name));
}
/**
* @param string $vehicle_class_name
*
* @return VehicleClass
*/
public function setVehicleClassName(string $vehicle_class_name): VehicleClass
{
$this->vehicle_class_name = $vehicle_class_name;
return $this;
}
/**
* @return string|null
*/
public function getVehicleClassDescription(): ?string
{
return $this->vehicle_class_description;
}
/**
* @param string|null $vehicle_class_description
*
* @return VehicleClass
*/
public function setVehicleClassDescription(?string $vehicle_class_description): VehicleClass
{
$this->vehicle_class_description = $vehicle_class_description;
return $this;
} }
} }

View File

@ -0,0 +1,45 @@
<?php
namespace App\Models;
use Database\Factories\VehicleTypeFactory;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\VehicleType
*
* @method static VehicleTypeFactory factory($count = null, $state = [])
* @method static Builder|VehicleType newModelQuery()
* @method static Builder|VehicleType newQuery()
* @method static Builder|VehicleType query()
* @mixin \Eloquent
*/
class VehicleType extends Model
{
use HasFactory;
protected $primaryKey = 'name';
protected $table = 'types';
public $incrementing = false;
public $timestamps = false;
protected $guarded = [];
public function getName(): string
{
return $this->name;
}
public function setName(string $name): VehicleType
{
$this->name = $name;
return $this;
}
public function getDisplayName(): string
{
return ucwords(str_replace('_', ' ', $this->name));
}
}

View File

@ -12,148 +12,172 @@ use Illuminate\Support\Carbon;
/** /**
* App\Models\Vendor * App\Models\Vendor
* *
* @property int $vendor_id * @property string $name
* @property Carbon|null $created_at * @property string $description
* @property Carbon|null $updated_at * @property string $manufacturers
* @property string $vendor_name * @property string $types
* @property string|null $vendor_description * @property string $classes
* @property string|null $vendor_position * @property string $fuelTypes
* @property float|null $vendor_x * @property float $maxPrice
* @property float|null $vendor_y * @property float $minPrice
* @property float $x
* @property float $y
* @property float $z
* @method static VendorFactory factory($count = null, $state = []) * @method static VendorFactory factory($count = null, $state = [])
* @method static Builder|Vendor newModelQuery() * @method static Builder|Vendor newModelQuery()
* @method static Builder|Vendor newQuery() * @method static Builder|Vendor newQuery()
* @method static Builder|Vendor query() * @method static Builder|Vendor query()
* @method static Builder|Vendor whereCreatedAt($value) * @method static Builder|Vendor whereClasses($value)
* @method static Builder|Vendor whereUpdatedAt($value) * @method static Builder|Vendor whereDescription($value)
* @method static Builder|Vendor whereVendorDescription($value) * @method static Builder|Vendor whereFuelTypes($value)
* @method static Builder|Vendor whereVendorId($value) * @method static Builder|Vendor whereManufacturers($value)
* @method static Builder|Vendor whereVendorName($value) * @method static Builder|Vendor whereMaxPrice($value)
* @method static Builder|Vendor whereVendorPosition($value) * @method static Builder|Vendor whereMinPrice($value)
* @method static Builder|Vendor whereVendorX($value) * @method static Builder|Vendor whereName($value)
* @method static Builder|Vendor whereVendorY($value) * @method static Builder|Vendor whereTypes($value)
* @method static Builder|Vendor whereX($value)
* @method static Builder|Vendor whereY($value)
* @method static Builder|Vendor whereZ($value)
* @mixin Eloquent * @mixin Eloquent
*/ */
class Vendor extends Model class Vendor extends Model
{ {
use HasFactory; use HasFactory;
/** protected $primaryKey = 'name';
* @return int protected $table = 'vendors';
*/ public $incrementing = false;
public function getVendorId(): int public $timestamps = false;
protected $guarded = [];
public function getName(): string
{ {
return $this->vendor_id; return $this->name;
} }
/** public function setName(string $name): Vendor
* @param int $vendor_id
*
* @return Vendor
*/
public function setVendorId(int $vendor_id): Vendor
{ {
$this->vendor_id = $vendor_id; $this->name = $name;
return $this; return $this;
} }
/** public function getDescription(): string
* @return string
*/
public function getVendorName(): string
{ {
return $this->vendor_name; return $this->description;
} }
/** public function setDescription(string $description): Vendor
* @param string $vendor_name
*
* @return Vendor
*/
public function setVendorName(string $vendor_name): Vendor
{ {
$this->vendor_name = $vendor_name; $this->description = $description;
return $this; return $this;
} }
/** public function getManufacturers(): string
* @return string|null
*/
public function getVendorDescription(): ?string
{ {
return $this->vendor_description; return $this->manufacturers;
} }
/** public function setManufacturers(string $manufacturers): Vendor
* @param string|null $vendor_description
*
* @return Vendor
*/
public function setVendorDescription(?string $vendor_description): Vendor
{ {
$this->vendor_description = $vendor_description; $this->manufacturers = $manufacturers;
return $this; return $this;
} }
/** public function getTypes(): string
* @return string|null
*/
public function getVendorPosition(): ?string
{ {
return $this->vendor_position; return $this->types;
} }
/** public function setTypes(string $types): Vendor
* @param string|null $vendor_position
*
* @return Vendor
*/
public function setVendorPosition(?string $vendor_position): Vendor
{ {
$this->vendor_position = $vendor_position; $this->types = $types;
return $this; return $this;
} }
/** public function getClasses(): string
* @return float|null
*/
public function getVendorX(): ?float
{ {
return $this->vendor_x; return $this->classes;
} }
/** public function setClasses(string $classes): Vendor
* @param float|null $vendor_x
*
* @return Vendor
*/
public function setVendorX(?float $vendor_x): Vendor
{ {
$this->vendor_x = $vendor_x; $this->classes = $classes;
return $this; return $this;
} }
/** public function getFuelTypes(): string
* @return float|null
*/
public function getVendorY(): ?float
{ {
return $this->vendor_y; return $this->fuelTypes;
} }
/** public function setFuelTypes(string $fuel_types): Vendor
* @param float|null $vendor_y
*
* @return Vendor
*/
public function setVendorY(?float $vendor_y): Vendor
{ {
$this->vendor_y = $vendor_y; $this->fuelTypes = $fuel_types;
return $this;
}
public function getMaxPrice(): float
{
return $this->maxPrice;
}
public function setMaxPrice(float $max_price): Vendor
{
$this->maxPrice = $max_price;
return $this;
}
public function getMinPrice(): float
{
return $this->minPrice;
}
public function setMinPrice(float $min_price): Vendor
{
$this->minPrice = $min_price;
return $this;
}
public function getX(): float
{
return $this->x;
}
public function setX(float $x): Vendor
{
$this->x = $x;
return $this;
}
public function getY(): float
{
return $this->y;
}
public function setY(float $y): Vendor
{
$this->y = $y;
return $this;
}
public function getZ(): float
{
return $this->z;
}
public function setZ(float $z): Vendor
{
$this->z = $z;
return $this; return $this;
} }

View File

@ -0,0 +1,61 @@
<?php
namespace App\Modules\Vehicles;
use App\Models\Vehicle;
use Illuminate\Filesystem\FilesystemAdapter;
use Illuminate\Support\Facades\Storage;
class VehicleScraper
{
private FilesystemAdapter $filesystem;
public function getVehicles()
{
$this->filesystem = Storage::disk('pubFiles');
if (!$this->filesystem->exists('vehicles.json')) {
dump('File does not exist');
return;
}
$vehicles = json_decode($this->filesystem->get('vehicles.json'));
foreach ($vehicles as $vehicle) {
Vehicle::updateOrCreate(
[
'model' => $vehicle->model,
],
[
'displayName' => $vehicle->displayName,
'manufacturer' => $vehicle->manufacturer,
'description' => $vehicle->description ?? '',
'type' => $vehicle->type,
'class' => $vehicle->class,
'isSold' => $vehicle->isSold,
'price' => $vehicle->price,
'storage' => $vehicle->storage ?? -1,
'fuelType' => $vehicle->fuelType,
'seats' => $vehicle->seats,
'hash' => $vehicle->hash,
'signedHash' => $vehicle->signedHash,
'hexHash' => $vehicle->hexHash,
'speed' => $vehicle->stats->speed,
'acceleration' => $vehicle->stats->acceleration,
'braking' => $vehicle->stats->braking,
'traction' => $vehicle->stats->traction,
'length' => $vehicle->dimensions->length,
'width' => $vehicle->dimensions->width,
'height' => $vehicle->dimensions->height,
'topSpeed' => $vehicle->topSpeed,
'gears' => $vehicle->gears,
'mass' => $vehicle->mass,
'driveTrain' => $vehicle->driveTrain,
'consumption' => $vehicle->consumption,
'fuelTankVolume' => $vehicle->fuelTankVolume,
'oilTankVolume' => $vehicle->oilTankVolume,
'inspiredBy' => $vehicle->inspiredBy,
]
);
}
}
}

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\DriveTrain;
use App\Models\User;
use Illuminate\Auth\Access\Response;
class DriveTrainPolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, DriveTrain $driveTrain): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, DriveTrain $driveTrain): bool
{
//
}
}

View File

@ -2,11 +2,11 @@
namespace App\Policies; namespace App\Policies;
use App\Models\Brand; use App\Models\Manufacturer;
use App\Models\User; use App\Models\User;
use Illuminate\Auth\Access\Response; use Illuminate\Auth\Access\Response;
class BrandPolicy class ManufacturerPolicy
{ {
/** /**
* Determine whether the user can view any models. * Determine whether the user can view any models.
@ -19,7 +19,7 @@ class BrandPolicy
/** /**
* Determine whether the user can view the model. * Determine whether the user can view the model.
*/ */
public function view(User $user, Brand $brand): bool public function view(User $user, Manufacturer $brand): bool
{ {
// //
} }
@ -35,7 +35,7 @@ class BrandPolicy
/** /**
* Determine whether the user can update the model. * Determine whether the user can update the model.
*/ */
public function update(User $user, Brand $brand): bool public function update(User $user, Manufacturer $brand): bool
{ {
// //
} }
@ -43,7 +43,7 @@ class BrandPolicy
/** /**
* Determine whether the user can delete the model. * Determine whether the user can delete the model.
*/ */
public function delete(User $user, Brand $brand): bool public function delete(User $user, Manufacturer $brand): bool
{ {
// //
} }
@ -51,7 +51,7 @@ class BrandPolicy
/** /**
* Determine whether the user can restore the model. * Determine whether the user can restore the model.
*/ */
public function restore(User $user, Brand $brand): bool public function restore(User $user, Manufacturer $brand): bool
{ {
// //
} }
@ -59,7 +59,7 @@ class BrandPolicy
/** /**
* Determine whether the user can permanently delete the model. * Determine whether the user can permanently delete the model.
*/ */
public function forceDelete(User $user, Brand $brand): bool public function forceDelete(User $user, Manufacturer $brand): bool
{ {
// //
} }

View File

@ -0,0 +1,66 @@
<?php
namespace App\Policies;
use App\Models\User;
use App\Models\VehicleType;
use Illuminate\Auth\Access\Response;
class VehicleTypePolicy
{
/**
* Determine whether the user can view any models.
*/
public function viewAny(User $user): bool
{
//
}
/**
* Determine whether the user can view the model.
*/
public function view(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
//
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, VehicleType $vehicleType): bool
{
//
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, VehicleType $vehicleType): bool
{
//
}
}

View File

@ -56,18 +56,17 @@ return [
'throw' => false, 'throw' => false,
], ],
'yugiohCards' => [
'driver' => 'local',
'root' =>'public/img/cards/yu-gi-oh/',
'throw' => false,
],
'vehicles' => [ 'vehicles' => [
'driver' => 'local', 'driver' => 'local',
'root' => 'public/img/vehicles/', 'root' => 'public/img/vehicles/',
'throw' => false, 'throw' => false,
], ],
'pubFiles' => [
'driver' => 'local',
'root' => 'public/',
'throw' => false,
],
], ],
/* /*

View File

@ -5,9 +5,9 @@ namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Brand> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\DriveTrain>
*/ */
class BrandFactory extends Factory class DriveTrainFactory extends Factory
{ {
/** /**
* Define the model's default state. * Define the model's default state.

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Manufacturer>
*/
class ManufacturerFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\VehicleType>
*/
class VehicleTypeFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array<string, mixed>
*/
public function definition(): array
{
return [
//
];
}
}

View File

@ -12,15 +12,35 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::create('vehicles', function (Blueprint $table) { Schema::create('vehicles', function (Blueprint $table) {
$table->id(); $table->string('model')->primary();
$table->timestamps(); $table->string('displayName');
$table->string('name'); $table->string('manufacturer');
$table->string('image_path'); $table->text('description');
$table->integer('storage'); $table->string('type')->default('unknown');
$table->integer('fuel_volume'); $table->string('class')->default('unknown');
$table->integer('seats'); $table->boolean('isSold')->default(false);
$table->double('price'); $table->double('price')->default(-1);
$table->double('top_speed'); $table->integer('storage')->default(-1);
$table->string('fuelType')->default('Unknown');
$table->integer('seats')->default(-1);
$table->string('hash')->unique();
$table->string('signedHash')->nullable()->default(null);
$table->string('hexHash')->nullable()->default(null);
$table->double('speed')->default(-1);
$table->double('acceleration')->default(-1);
$table->double('braking')->default(-1);
$table->double('traction')->default(-1);
$table->double('length')->default(-1);
$table->double('width')->default(-1);
$table->double('height')->default(-1);
$table->double('topSpeed')->default(-1);
$table->integer('gears')->default(-1);
$table->integer('mass')->default(-1);
$table->string('driveTrain');
$table->double('consumption')->default(-1);
$table->integer('fuelTankVolume')->default(-1);
$table->integer('oilTankVolume')->default(-1);
$table->string('inspiredBy')->default('unknown');
}); });
} }

View File

@ -12,13 +12,17 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::create('vendors', function (Blueprint $table) { Schema::create('vendors', function (Blueprint $table) {
$table->id(); $table->string('name')->primary();
$table->timestamps(); $table->text('description')->default('');
$table->string('name'); $table->string('manufacturers')->default('');
$table->text('description'); $table->string('types')->default('');
$table->string('position'); $table->string('classes')->default('');
$table->double('x'); $table->string('fuel_types')->default('');
$table->double('y'); $table->double('max_price')->default(0);
$table->double('min_price')->default(0);
$table->double('x')->default(0);
$table->double('y')->default(0);
$table->double('z')->default(0);
}); });
} }

View File

@ -11,11 +11,9 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('brands', function (Blueprint $table) { Schema::create('manufacturers', function (Blueprint $table) {
$table->id(); $table->string('name')->primary();
$table->timestamps(); $table->text('displayName');
$table->string('name');
$table->text('description');
}); });
} }
@ -24,6 +22,6 @@ return new class extends Migration
*/ */
public function down(): void public function down(): void
{ {
Schema::dropIfExists('brands'); Schema::dropIfExists('manufacturers');
} }
}; };

View File

@ -12,11 +12,8 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::create('fuel_types', function (Blueprint $table) { Schema::create('fuel_types', function (Blueprint $table) {
$table->id(); $table->string('name')->primary();
$table->timestamps(); $table->double('price')->default(0);
$table->string('name');
$table->text('description');
$table->double('price');
}); });
} }

View File

@ -11,11 +11,8 @@ return new class extends Migration
*/ */
public function up(): void public function up(): void
{ {
Schema::create('vehicle_classes', function (Blueprint $table) { Schema::create('classes', function (Blueprint $table) {
$table->id(); $table->string('name')->primary();
$table->timestamps();
$table->string('name');
$table->text('description');
}); });
} }
@ -24,6 +21,6 @@ return new class extends Migration
*/ */
public function down(): void public function down(): void
{ {
Schema::dropIfExists('vehicle_classes'); Schema::dropIfExists('classes');
} }
}; };

View File

@ -1,34 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->foreignId('vehicle_class_id')->references('id')->on('vehicle_classes');
$table->foreignId('fuel_type_id')->references('id')->on('fuel_types');
$table->foreignId('brand_id')->references('id')->on('brands');
$table->foreignId('vendor_id')->references('id')->on('vendors');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->dropConstrainedForeignId('vehicle_class_id');
$table->dropConstrainedForeignId('fuel_type_id');
$table->dropConstrainedForeignId('brand_id');
$table->dropConstrainedForeignId('vendor_id');
});
}
};

View File

@ -1,52 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('brands', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
$table->double('price')->nullable(true)->change();
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
});
Schema::table('vendors', function (Blueprint $table) {
$table->string('name')->unique()->change();
$table->text('description')->nullable(true)->change();
$table->string('position')->nullable(true)->change();
$table->double('x')->nullable(true)->change();
$table->double('y')->nullable(true)->change();
});
Schema::table('vehicles', function (Blueprint $table) {
$table->string('image_path')->nullable(true)->change();
$table->double('price')->nullable(true)->change();
$table->double('top_speed')->nullable(true)->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
//
}
};

View File

@ -1,97 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->renameColumn('id', 'vehicle_id');
$table->renameColumn('name', 'vehicle_name');
$table->dropColumn('image_path');
$table->renameColumn('storage', 'vehicle_storage');
$table->renameColumn('fuel_volume', 'vehicle_fuel_volume');
$table->renameColumn('seats', 'vehicle_seats');
$table->renameColumn('price', 'vehicle_price');
$table->renameColumn('top_speed', 'vehicle_top_speed');
});
Schema::table('vendors', function (Blueprint $table) {
$table->renameColumn('id', 'vendor_id');
$table->renameColumn('name', 'vendor_name');
$table->renameColumn('description', 'vendor_description');
$table->renameColumn('position', 'vendor_position');
$table->renameColumn('x', 'vendor_x');
$table->renameColumn('y', 'vendor_y');
});
Schema::table('brands', function (Blueprint $table) {
$table->renameColumn('id', 'brand_id');
$table->renameColumn('name', 'brand_name');
$table->renameColumn('description', 'brand_description');
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->renameColumn('id', 'vehicle_class_id');
$table->renameColumn('name', 'vehicle_class_name');
$table->renameColumn('description', 'vehicle_class_description');
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->renameColumn('id', 'fuel_type_id');
$table->renameColumn('name', 'fuel_type_name');
$table->renameColumn('description', 'fuel_type_description');
$table->renameColumn('price', 'fuel_type_price');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->renameColumn('vehicle_id', 'id');
$table->string('image_path')->nullable(true);
$table->renameColumn('vehicle_storage', 'storage');
$table->renameColumn('vehicle_fuel_volume', 'fuel_volume');
$table->renameColumn('vehicle_seats', 'seats');
$table->renameColumn('vehicle_price', 'price');
$table->renameColumn('vehicle_top_speed', 'top_speed');
});
Schema::table('vendors', function (Blueprint $table) {
$table->renameColumn('vendor_id', 'id');
$table->renameColumn('vendor_name', 'name');
$table->renameColumn('vendor_description', 'description');
$table->renameColumn('vendor_position', 'position');
$table->renameColumn('vendor_x', 'x');
$table->renameColumn('vendor_y', 'y');
});
Schema::table('brands', function (Blueprint $table) {
$table->renameColumn('brand_id', 'id');
$table->renameColumn('brand_name', 'name');
$table->renameColumn('brand_description', 'description');
});
Schema::table('vehicle_classes', function (Blueprint $table) {
$table->renameColumn('vehicle_class_id', 'id');
$table->renameColumn('vehicle_class_name', 'name');
$table->renameColumn('vehicle_class_description', 'description');
});
Schema::table('fuel_types', function (Blueprint $table) {
$table->renameColumn('fuel_type_id', 'id');
$table->renameColumn('fuel_type_name', 'name');
$table->renameColumn('fuel_type_description', 'description');
$table->renameColumn('fuel_type_price', 'price');
});
}
};

View File

@ -12,10 +12,10 @@ return new class extends Migration
public function up(): void public function up(): void
{ {
Schema::create('keybinds', function (Blueprint $table) { Schema::create('keybinds', function (Blueprint $table) {
$table->id('keybind_id'); $table->id();
$table->timestamps(); $table->timestamps();
$table->string('keybind_keys'); $table->string('keys');
$table->text('keybind_description'); $table->text('description');
}); });
} }

View File

@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('drive_trains', function (Blueprint $table) {
$table->string('name')->primary();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('drive_trains');
}
};

View File

@ -0,0 +1,26 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('types', function (Blueprint $table) {
$table->string('name')->primary();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('types');
}
};

View File

@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->foreign('manufacturer')->references('name')->on('manufacturers');
$table->foreign('type')->references('name')->on('types');
$table->foreign('class')->references('name')->on('classes');
$table->foreign('fuelType')->references('name')->on('fuel_types');
$table->foreign('driveTrain')->references('name')->on('drive_trains');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('vehicles', function (Blueprint $table) {
$table->dropForeign('manufacturer');
$table->dropForeign('type');
$table->dropForeign('class');
$table->dropForeign('fuelType');
$table->dropForeign('driveTrain');
});
}
};

View File

@ -5,7 +5,7 @@ namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class BrandSeeder extends Seeder class DriveTrainSeeder extends Seeder
{ {
/** /**
* Run the database seeds. * Run the database seeds.

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ManufacturerSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class VehicleTypeSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
//
}
}

View File

@ -1,5 +1,5 @@
/*! /*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc. * Copyright 2023 Fonticons, Inc.
*/ */
@ -8228,7 +8228,7 @@ readers do not read off random characters that represent icons */
} }
/*! /*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc. * Copyright 2023 Fonticons, Inc.
*/ */
@ -8242,7 +8242,7 @@ readers do not read off random characters that represent icons */
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: block; font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?b041b1fa4fe241b234458a565482c4c6) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?50701fbb8177c2dde530fc83add388ef) format("truetype"); src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?3223dc79c1adee56370b19dca985aa17) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?d87474231f419288480274125e0e9767) format("truetype");
} }
.far, .far,
.fa-regular { .fa-regular {
@ -8250,7 +8250,7 @@ readers do not read off random characters that represent icons */
} }
/*! /*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc. * Copyright 2023 Fonticons, Inc.
*/ */
@ -8264,7 +8264,7 @@ readers do not read off random characters that represent icons */
font-style: normal; font-style: normal;
font-weight: 900; font-weight: 900;
font-display: block; font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?b6879d41b0852f01ed5b0216c4c72e11) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?d75e3fd1eb12e9bd66550e304bdd1ec7) format("truetype"); src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?bb975c966c37455a1bc3c7e29971386c) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?4a2cd718d7031b732e7610fba99ecf74) format("truetype");
} }
.fas, .fas,
.fa-solid { .fa-solid {
@ -8272,7 +8272,7 @@ readers do not read off random characters that represent icons */
} }
/*! /*!
* Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2023 Fonticons, Inc. * Copyright 2023 Fonticons, Inc.
*/ */
@ -8286,7 +8286,7 @@ readers do not read off random characters that represent icons */
font-style: normal; font-style: normal;
font-weight: 400; font-weight: 400;
font-display: block; font-display: block;
src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?878f31251d960bd6266f20ccdc4d738f) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?016b4a6cdced82ab3aa1907e3855cfd2) format("truetype"); src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?e033a13ee751afc1860c3bc31ede1065) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?150de8eaa454d669c405d810c8dbbf14) format("truetype");
} }
.fab, .fab,
.fa-brands { .fa-brands {
@ -8513,10 +8513,6 @@ readers do not read off random characters that represent icons */
content: "\f282"; content: "\f282";
} }
.fa-threads:before {
content: "\e618";
}
.fa-napster:before { .fa-napster:before {
content: "\f3d2"; content: "\f3d2";
} }
@ -8741,10 +8737,6 @@ readers do not read off random characters that represent icons */
content: "\f28a"; content: "\f28a";
} }
.fa-debian:before {
content: "\e60b";
}
.fa-openid:before { .fa-openid:before {
content: "\f19b"; content: "\f19b";
} }
@ -9065,10 +9057,6 @@ readers do not read off random characters that represent icons */
content: "\f612"; content: "\f612";
} }
.fa-square-threads:before {
content: "\e619";
}
.fa-hackerrank:before { .fa-hackerrank:before {
content: "\f5f7"; content: "\f5f7";
} }
@ -9525,10 +9513,6 @@ readers do not read off random characters that represent icons */
content: "\f39d"; content: "\f39d";
} }
.fa-x-twitter:before {
content: "\e61b";
}
.fa-cotton-bureau:before { .fa-cotton-bureau:before {
content: "\f89e"; content: "\f89e";
} }
@ -10189,10 +10173,6 @@ readers do not read off random characters that represent icons */
content: "\f2c4"; content: "\f2c4";
} }
.fa-square-x-twitter:before {
content: "\e61a";
}
.fa-reacteurope:before { .fa-reacteurope:before {
content: "\f75d"; content: "\f75d";
} }
@ -10976,7 +10956,7 @@ readers do not read off random characters that represent icons */
border-color: rgb(63 63 70 / var(--tw-bg-opacity)) border-color: rgb(63 63 70 / var(--tw-bg-opacity))
} }
/* /*
! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com ! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com
*/ */
/* /*
@ -11146,8 +11126,6 @@ optgroup,
select, select,
textarea { textarea {
font-family: inherit; /* 1 */ font-family: inherit; /* 1 */
font-feature-settings: inherit; /* 1 */
font-variation-settings: inherit; /* 1 */
font-size: 100%; /* 1 */ font-size: 100%; /* 1 */
font-weight: inherit; /* 1 */ font-weight: inherit; /* 1 */
line-height: inherit; /* 1 */ line-height: inherit; /* 1 */
@ -11285,14 +11263,6 @@ menu {
padding: 0; padding: 0;
} }
/*
Reset default styling for dialogs.
*/
dialog {
padding: 0;
}
/* /*
Prevent resizing textareas horizontally by default. Prevent resizing textareas horizontally by default.
*/ */
@ -11368,7 +11338,7 @@ video {
display: none; display: none;
} }
[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{ [type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{
-webkit-appearance: none; -webkit-appearance: none;
-moz-appearance: none; -moz-appearance: none;
appearance: none; appearance: none;
@ -11385,7 +11355,7 @@ video {
--tw-shadow: 0 0 #0000; --tw-shadow: 0 0 #0000;
} }
[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{ [type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{
outline: 2px solid transparent; outline: 2px solid transparent;
outline-offset: 2px; outline-offset: 2px;
--tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);
@ -11414,11 +11384,6 @@ input::placeholder,textarea::placeholder{
::-webkit-date-and-time-value{ ::-webkit-date-and-time-value{
min-height: 1.5em; min-height: 1.5em;
text-align: inherit;
}
::-webkit-datetime-edit{
display: inline-flex;
} }
::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{ ::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{
@ -11436,7 +11401,7 @@ select{
print-color-adjust: exact; print-color-adjust: exact;
} }
[multiple],[size]:where(select:not([size="1"])){ [multiple]{
background-image: initial; background-image: initial;
background-position: initial; background-position: initial;
background-repeat: unset; background-repeat: unset;
@ -13336,6 +13301,18 @@ html{
.select[multiple]{ .select[multiple]{
height: auto; height: auto;
} }
.stats{
display: inline-grid;
--tw-bg-opacity: 1;
background-color: hsl(var(--b1) / var(--tw-bg-opacity));
--tw-text-opacity: 1;
color: hsl(var(--bc) / var(--tw-text-opacity));
border-radius: var(--rounded-box, 1rem);
}
:where(.stats){
grid-auto-flow: column;
overflow-x: auto;
}
.tab{ .tab{
position: relative; position: relative;
display: inline-flex; display: inline-flex;
@ -13609,6 +13586,13 @@ html{
outline: 2px solid hsla(var(--bc) / 0.2); outline: 2px solid hsla(var(--bc) / 0.2);
outline-offset: 2px; outline-offset: 2px;
} }
.input-error{
--tw-border-opacity: 1;
border-color: hsl(var(--er) / var(--tw-border-opacity));
}
.input-error:focus{
outline: 2px solid hsl(var(--er));
}
.input-disabled, .input-disabled,
.input[disabled]{ .input[disabled]{
cursor: not-allowed; cursor: not-allowed;
@ -13888,6 +13872,14 @@ html{
[dir="rtl"] .select{ [dir="rtl"] .select{
background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%); background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%);
} }
:where(.stats) > :not([hidden]) ~ :not([hidden]){
--tw-divide-x-reverse: 0;
border-right-width: calc(1px * var(--tw-divide-x-reverse));
border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse)));
--tw-divide-y-reverse: 0;
border-top-width: calc(0px * calc(1 - var(--tw-divide-y-reverse)));
border-bottom-width: calc(0px * var(--tw-divide-y-reverse));
}
.tab:hover{ .tab:hover{
--tw-text-opacity: 1; --tw-text-opacity: 1;
} }
@ -14101,6 +14093,9 @@ html{
white-space: nowrap; white-space: nowrap;
border-width: 0; border-width: 0;
} }
.visible{
visibility: visible;
}
.fixed{ .fixed{
position: fixed; position: fixed;
} }
@ -14145,6 +14140,10 @@ html{
margin-left: 0.5rem; margin-left: 0.5rem;
margin-right: 0.5rem; margin-right: 0.5rem;
} }
.mx-8{
margin-left: 2rem;
margin-right: 2rem;
}
.mx-auto{ .mx-auto{
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
@ -14157,6 +14156,10 @@ html{
margin-top: 0.75rem; margin-top: 0.75rem;
margin-bottom: 0.75rem; margin-bottom: 0.75rem;
} }
.my-5{
margin-top: 1.25rem;
margin-bottom: 1.25rem;
}
.my-\[1rem\]{ .my-\[1rem\]{
margin-top: 1rem; margin-top: 1rem;
margin-bottom: 1rem; margin-bottom: 1rem;
@ -14171,9 +14174,15 @@ html{
.-ml-px{ .-ml-px{
margin-left: -1px; margin-left: -1px;
} }
.-mt-px{
margin-top: -1px;
}
.mb-0{ .mb-0{
margin-bottom: 0px; margin-bottom: 0px;
} }
.mb-1{
margin-bottom: 0.25rem;
}
.mb-2{ .mb-2{
margin-bottom: 0.5rem; margin-bottom: 0.5rem;
} }
@ -14192,12 +14201,21 @@ html{
.mb-8{ .mb-8{
margin-bottom: 2rem; margin-bottom: 2rem;
} }
.ml-1{
margin-left: 0.25rem;
}
.ml-12{
margin-left: 3rem;
}
.ml-2{ .ml-2{
margin-left: 0.5rem; margin-left: 0.5rem;
} }
.ml-3{ .ml-3{
margin-left: 0.75rem; margin-left: 0.75rem;
} }
.ml-4{
margin-left: 1rem;
}
.ml-\[1rem\]{ .ml-\[1rem\]{
margin-left: 1rem; margin-left: 1rem;
} }
@ -14210,12 +14228,18 @@ html{
.ml-\[4rem\]{ .ml-\[4rem\]{
margin-left: 4rem; margin-left: 4rem;
} }
.mr-1{
margin-right: 0.25rem;
}
.mr-2{ .mr-2{
margin-right: 0.5rem; margin-right: 0.5rem;
} }
.mr-3{ .mr-3{
margin-right: 0.75rem; margin-right: 0.75rem;
} }
.mr-4{
margin-right: 1rem;
}
.mr-\[\.5rem\]{ .mr-\[\.5rem\]{
margin-right: .5rem; margin-right: .5rem;
} }
@ -14264,15 +14288,36 @@ html{
.hidden{ .hidden{
display: none; display: none;
} }
.h-12{
height: 3rem;
}
.h-14{ .h-14{
height: 3.5rem; height: 3.5rem;
} }
.h-16{
height: 4rem;
}
.h-4{
height: 1rem;
}
.h-5{ .h-5{
height: 1.25rem; height: 1.25rem;
} }
.h-6{
height: 1.5rem;
}
.h-7{
height: 1.75rem;
}
.h-8{ .h-8{
height: 2rem; height: 2rem;
} }
.h-\[150px\]{
height: 150px;
}
.h-\[220px\]{
height: 220px;
}
.h-\[2rem\]{ .h-\[2rem\]{
height: 2rem; height: 2rem;
} }
@ -14315,6 +14360,21 @@ html{
.max-h-\[90vh\]{ .max-h-\[90vh\]{
max-height: 90vh; max-height: 90vh;
} }
.min-h-\[15rem\]{
min-height: 15rem;
}
.min-h-\[25rem\]{
min-height: 25rem;
}
.min-h-\[30rem\]{
min-height: 30rem;
}
.min-h-\[4\.5rem\]{
min-height: 4.5rem;
}
.min-h-\[40\.2rem\]{
min-height: 40.2rem;
}
.min-h-\[40rem\]{ .min-h-\[40rem\]{
min-height: 40rem; min-height: 40rem;
} }
@ -14324,6 +14384,9 @@ html{
.min-h-screen{ .min-h-screen{
min-height: 100vh; min-height: 100vh;
} }
.w-1\/5{
width: 20%;
}
.w-14{ .w-14{
width: 3.5rem; width: 3.5rem;
} }
@ -14339,6 +14402,12 @@ html{
.w-60{ .w-60{
width: 15rem; width: 15rem;
} }
.w-8{
width: 2rem;
}
.w-\[1\.5rem\]{
width: 1.5rem;
}
.w-\[11rem\]{ .w-\[11rem\]{
width: 11rem; width: 11rem;
} }
@ -14375,12 +14444,27 @@ html{
.w-\[5\.2rem\]{ .w-\[5\.2rem\]{
width: 5.2rem; width: 5.2rem;
} }
.w-\[560px\]{
width: 560px;
}
.w-\[6\.5rem\]{ .w-\[6\.5rem\]{
width: 6.5rem; width: 6.5rem;
} }
.w-auto{
width: auto;
}
.w-full{ .w-full{
width: 100%; width: 100%;
} }
.min-w-\[1\.5rem\]{
min-width: 1.5rem;
}
.min-w-\[10rem\]{
min-width: 10rem;
}
.min-w-\[20rem\]{
min-width: 20rem;
}
.min-w-\[6rem\]{ .min-w-\[6rem\]{
min-width: 6rem; min-width: 6rem;
} }
@ -14394,12 +14478,21 @@ html{
min-width: -moz-max-content; min-width: -moz-max-content;
min-width: max-content; min-width: max-content;
} }
.max-w-6xl{
max-width: 72rem;
}
.max-w-7xl{ .max-w-7xl{
max-width: 80rem; max-width: 80rem;
} }
.max-w-\[25rem\]{
max-width: 25rem;
}
.max-w-\[2rem\]{ .max-w-\[2rem\]{
max-width: 2rem; max-width: 2rem;
} }
.max-w-\[32rem\]{
max-width: 32rem;
}
.max-w-\[40rem\]{ .max-w-\[40rem\]{
max-width: 40rem; max-width: 40rem;
} }
@ -14422,6 +14515,9 @@ html{
.flex-1{ .flex-1{
flex: 1 1 0%; flex: 1 1 0%;
} }
.flex-shrink-0{
flex-shrink: 0;
}
.grow{ .grow{
flex-grow: 1; flex-grow: 1;
} }
@ -14464,6 +14560,9 @@ html{
.cursor-pointer{ .cursor-pointer{
cursor: pointer; cursor: pointer;
} }
.grid-cols-1{
grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2{ .grid-cols-2{
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));
} }
@ -14568,12 +14667,18 @@ html{
.overflow-y-hidden{ .overflow-y-hidden{
overflow-y: hidden; overflow-y: hidden;
} }
.whitespace-nowrap{
white-space: nowrap;
}
.rounded{ .rounded{
border-radius: 0.25rem; border-radius: 0.25rem;
} }
.rounded-\[1rem\]{ .rounded-\[1rem\]{
border-radius: 1rem; border-radius: 1rem;
} }
.rounded-full{
border-radius: 9999px;
}
.rounded-lg{ .rounded-lg{
border-radius: 0.5rem; border-radius: 0.5rem;
} }
@ -14613,6 +14718,10 @@ html{
border-top-right-radius: 0px; border-top-right-radius: 0px;
border-bottom-right-radius: 0px; border-bottom-right-radius: 0px;
} }
.rounded-t-\[1rem\]{
border-top-left-radius: 1rem;
border-top-right-radius: 1rem;
}
.border{ .border{
border-width: 1px; border-width: 1px;
} }
@ -14622,6 +14731,9 @@ html{
.border-b-2{ .border-b-2{
border-bottom-width: 2px; border-bottom-width: 2px;
} }
.border-b-4{
border-bottom-width: 4px;
}
.border-l{ .border-l{
border-left-width: 1px; border-left-width: 1px;
} }
@ -14634,28 +14746,39 @@ html{
.border-t{ .border-t{
border-top-width: 1px; border-top-width: 1px;
} }
.border-none{
border-style: none;
}
.border-gray-200{
--tw-border-opacity: 1;
border-color: rgb(229 231 235 / var(--tw-border-opacity));
}
.border-gray-300{ .border-gray-300{
--tw-border-opacity: 1; --tw-border-opacity: 1;
border-color: rgb(209 213 219 / var(--tw-border-opacity)); border-color: rgb(209 213 219 / var(--tw-border-opacity));
} }
.border-gray-400{
--tw-border-opacity: 1;
border-color: rgb(156 163 175 / var(--tw-border-opacity));
}
.border-indigo-400{ .border-indigo-400{
--tw-border-opacity: 1; --tw-border-opacity: 1;
border-color: rgb(129 140 248 / var(--tw-border-opacity)); border-color: rgb(129 140 248 / var(--tw-border-opacity));
} }
.border-transparent{
border-color: transparent;
}
.border-cyan-600{
--tw-border-opacity: 1;
border-color: rgb(8 145 178 / var(--tw-border-opacity));
}
.border-red-400{ .border-red-400{
--tw-border-opacity: 1; --tw-border-opacity: 1;
border-color: rgb(248 113 113 / var(--tw-border-opacity)); border-color: rgb(248 113 113 / var(--tw-border-opacity));
} }
.border-transparent{
border-color: transparent;
}
.border-opacity-40{ .border-opacity-40{
--tw-border-opacity: 0.4; --tw-border-opacity: 0.4;
} }
.bg-gray-100{
--tw-bg-opacity: 1;
background-color: rgb(243 244 246 / var(--tw-bg-opacity));
}
.bg-gray-500{ .bg-gray-500{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(107 114 128 / var(--tw-bg-opacity)); background-color: rgb(107 114 128 / var(--tw-bg-opacity));
@ -14664,6 +14787,10 @@ html{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(238 242 255 / var(--tw-bg-opacity)); background-color: rgb(238 242 255 / var(--tw-bg-opacity));
} }
.bg-red-400{
--tw-bg-opacity: 1;
background-color: rgb(248 113 113 / var(--tw-bg-opacity));
}
.bg-red-500{ .bg-red-500{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(239 68 68 / var(--tw-bg-opacity)); background-color: rgb(239 68 68 / var(--tw-bg-opacity));
@ -14687,13 +14814,12 @@ html{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(39 39 42 / var(--tw-bg-opacity)); background-color: rgb(39 39 42 / var(--tw-bg-opacity));
} }
.bg-cyan-600{ .fill-red-400{
--tw-bg-opacity: 1; fill: #f87171;
background-color: rgb(8 145 178 / var(--tw-bg-opacity));
} }
.bg-red-400{ .object-cover{
--tw-bg-opacity: 1; -o-object-fit: cover;
background-color: rgb(248 113 113 / var(--tw-bg-opacity)); object-fit: cover;
} }
.p-2{ .p-2{
padding: 0.5rem; padding: 0.5rem;
@ -14727,6 +14853,10 @@ html{
padding-left: 1.25rem; padding-left: 1.25rem;
padding-right: 1.25rem; padding-right: 1.25rem;
} }
.px-6{
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.px-8{ .px-8{
padding-left: 2rem; padding-left: 2rem;
padding-right: 2rem; padding-right: 2rem;
@ -14751,6 +14881,10 @@ html{
padding-top: 0.75rem; padding-top: 0.75rem;
padding-bottom: 0.75rem; padding-bottom: 0.75rem;
} }
.py-4{
padding-top: 1rem;
padding-bottom: 1rem;
}
.py-6{ .py-6{
padding-top: 1.5rem; padding-top: 1.5rem;
padding-bottom: 1.5rem; padding-bottom: 1.5rem;
@ -14758,6 +14892,9 @@ html{
.pb-4{ .pb-4{
padding-bottom: 1rem; padding-bottom: 1rem;
} }
.pb-6{
padding-bottom: 1.5rem;
}
.pl-3{ .pl-3{
padding-left: 0.75rem; padding-left: 0.75rem;
} }
@ -14770,6 +14907,9 @@ html{
.pt-2{ .pt-2{
padding-top: 0.5rem; padding-top: 0.5rem;
} }
.pt-8{
padding-top: 2rem;
}
.text-left{ .text-left{
text-align: left; text-align: left;
} }
@ -14782,6 +14922,10 @@ html{
.align-middle{ .align-middle{
vertical-align: middle; vertical-align: middle;
} }
.text-2xl{
font-size: 1.5rem;
line-height: 2rem;
}
.text-3xl{ .text-3xl{
font-size: 1.875rem; font-size: 1.875rem;
line-height: 2.25rem; line-height: 2.25rem;
@ -14802,6 +14946,10 @@ html{
font-size: 0.875rem; font-size: 0.875rem;
line-height: 1.25rem; line-height: 1.25rem;
} }
.text-xl{
font-size: 1.25rem;
line-height: 1.75rem;
}
.text-xs{ .text-xs{
font-size: 0.75rem; font-size: 0.75rem;
line-height: 1rem; line-height: 1rem;
@ -14830,6 +14978,12 @@ html{
.leading-5{ .leading-5{
line-height: 1.25rem; line-height: 1.25rem;
} }
.leading-7{
line-height: 1.75rem;
}
.tracking-wider{
letter-spacing: 0.05em;
}
.tracking-widest{ .tracking-widest{
letter-spacing: 0.1em; letter-spacing: 0.1em;
} }
@ -14837,6 +14991,10 @@ html{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity)); color: rgb(229 231 235 / var(--tw-text-opacity));
} }
.text-gray-300{
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
.text-gray-400{ .text-gray-400{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity)); color: rgb(156 163 175 / var(--tw-text-opacity));
@ -14873,6 +15031,10 @@ html{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(254 202 202 / var(--tw-text-opacity)); color: rgb(254 202 202 / var(--tw-text-opacity));
} }
.text-red-400{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.text-red-600{ .text-red-600{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(220 38 38 / var(--tw-text-opacity)); color: rgb(220 38 38 / var(--tw-text-opacity));
@ -14885,14 +15047,6 @@ html{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(161 161 170 / var(--tw-text-opacity)); color: rgb(161 161 170 / var(--tw-text-opacity));
} }
.text-cyan-600{
--tw-text-opacity: 1;
color: rgb(8 145 178 / var(--tw-text-opacity));
}
.text-red-400{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.underline{ .underline{
text-decoration-line: underline; text-decoration-line: underline;
} }
@ -14973,6 +15127,11 @@ html{
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms; transition-duration: 150ms;
} }
.transition-colors{
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.duration-150{ .duration-150{
transition-duration: 150ms; transition-duration: 150ms;
} }
@ -15038,9 +15197,6 @@ html{
.scrollbar-track-zinc-700{ .scrollbar-track-zinc-700{
--scrollbar-track: #3f3f46 !important; --scrollbar-track: #3f3f46 !important;
} }
.scrollbar-thumb-cyan-600{
--scrollbar-thumb: #0891b2 !important;
}
.scrollbar-thumb-red-400{ .scrollbar-thumb-red-400{
--scrollbar-thumb: #f87171 !important; --scrollbar-thumb: #f87171 !important;
} }
@ -15084,6 +15240,10 @@ html{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(153 27 27 / var(--tw-bg-opacity)); background-color: rgb(153 27 27 / var(--tw-bg-opacity));
} }
.hover\:bg-zinc-600:hover{
--tw-bg-opacity: 1;
background-color: rgb(82 82 91 / var(--tw-bg-opacity));
}
.hover\:bg-zinc-700:hover{ .hover\:bg-zinc-700:hover{
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(63 63 70 / var(--tw-bg-opacity)); background-color: rgb(63 63 70 / var(--tw-bg-opacity));
@ -15112,6 +15272,10 @@ html{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(17 24 39 / var(--tw-text-opacity)); color: rgb(17 24 39 / var(--tw-text-opacity));
} }
.hover\:text-red-400:hover{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.hover\:underline:hover{ .hover\:underline:hover{
text-decoration-line: underline; text-decoration-line: underline;
} }
@ -15236,6 +15400,10 @@ html{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity)); color: rgb(55 65 81 / var(--tw-text-opacity));
} }
.active\:text-red-400:active{
--tw-text-opacity: 1;
color: rgb(248 113 113 / var(--tw-text-opacity));
}
.active\:text-zinc-700:active{ .active\:text-zinc-700:active{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(63 63 70 / var(--tw-text-opacity)); color: rgb(63 63 70 / var(--tw-text-opacity));
@ -15245,6 +15413,11 @@ html{
} }
@media (prefers-color-scheme: dark){ @media (prefers-color-scheme: dark){
.dark\:bg-gray-900{
--tw-bg-opacity: 1;
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
}
.dark\:text-gray-400{ .dark\:text-gray-400{
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity)); color: rgb(156 163 175 / var(--tw-text-opacity));
@ -15331,6 +15504,10 @@ html{
align-items: center; align-items: center;
} }
.sm\:justify-start{
justify-content: flex-start;
}
.sm\:justify-between{ .sm\:justify-between{
justify-content: space-between; justify-content: space-between;
} }
@ -15352,6 +15529,10 @@ html{
padding-left: 1.5rem; padding-left: 1.5rem;
padding-right: 1.5rem; padding-right: 1.5rem;
} }
.sm\:pt-0{
padding-top: 0px;
}
} }
@media (min-width: 768px){ @media (min-width: 768px){

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

View File

@ -0,0 +1,20 @@
<link rel="apple-touch-icon-precomposed" sizes="57x57" href="apple-touch-icon-57x57.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114x114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-72x72.png" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="apple-touch-icon-144x144.png" />
<link rel="apple-touch-icon-precomposed" sizes="60x60" href="apple-touch-icon-60x60.png" />
<link rel="apple-touch-icon-precomposed" sizes="120x120" href="apple-touch-icon-120x120.png" />
<link rel="apple-touch-icon-precomposed" sizes="76x76" href="apple-touch-icon-76x76.png" />
<link rel="apple-touch-icon-precomposed" sizes="152x152" href="apple-touch-icon-152x152.png" />
<link rel="icon" type="image/png" href="favicon-196x196.png" sizes="196x196" />
<link rel="icon" type="image/png" href="favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/png" href="favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="favicon-16x16.png" sizes="16x16" />
<link rel="icon" type="image/png" href="favicon-128.png" sizes="128x128" />
<meta name="application-name" content="&nbsp;"/>
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="mstile-70x70.png" />
<meta name="msapplication-square150x150logo" content="mstile-150x150.png" />
<meta name="msapplication-wide310x150logo" content="mstile-310x150.png" />
<meta name="msapplication-square310x310logo" content="mstile-310x310.png" />

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 622 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/img/header.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

BIN
public/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

BIN
public/img/vehicles/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
public/img/vehicles/10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/img/vehicles/100.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/101.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/img/vehicles/102.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
public/img/vehicles/103.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/104.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/img/vehicles/105.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/106.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/img/vehicles/107.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/img/vehicles/108.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/109.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
public/img/vehicles/11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/110.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/111.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/112.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/113.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
public/img/vehicles/114.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/115.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
public/img/vehicles/116.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
public/img/vehicles/117.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
public/img/vehicles/118.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/119.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
public/img/vehicles/12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
public/img/vehicles/120.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
public/img/vehicles/121.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Some files were not shown because too many files have changed in this diff Show More