mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 05:11:09 -05:00
feat: Add PrimeProgress, PrimeSelect, and PrimeSkeleton components with customizable styles and props
- Implemented PrimeProgress component with support for labels, helper text, and various styles (size, variant, color). - Created PrimeSelect component with dropdown functionality, custom templates, and validation states. - Developed PrimeSkeleton component for loading placeholders with different shapes and animations. - Updated index.ts to export new components for easy import. - Enhanced PrimeVueTest.vue to include tests for new components and their functionalities. - Introduced a custom ThrillWiki theme for PrimeVue with tailored color schemes and component styles. - Added ambient type declarations for various components to improve TypeScript support.
This commit is contained in:
@@ -3,8 +3,12 @@ API serializers for the ride ranking system.
|
||||
"""
|
||||
|
||||
from rest_framework import serializers
|
||||
from drf_spectacular.utils import extend_schema_serializer, OpenApiExample
|
||||
from django.utils.functional import cached_property
|
||||
from drf_spectacular.utils import (
|
||||
extend_schema_serializer,
|
||||
extend_schema_field,
|
||||
OpenApiExample,
|
||||
)
|
||||
from apps.rides.models import RideRanking, RankingSnapshot
|
||||
|
||||
|
||||
@extend_schema_serializer(
|
||||
@@ -44,19 +48,8 @@ class RideRankingSerializer(serializers.ModelSerializer):
|
||||
rank_change = serializers.SerializerMethodField()
|
||||
previous_rank = serializers.SerializerMethodField()
|
||||
|
||||
@cached_property
|
||||
def _model(self):
|
||||
from apps.rides.models import RideRanking
|
||||
|
||||
return RideRanking
|
||||
|
||||
class Meta:
|
||||
@property
|
||||
def model(self):
|
||||
from apps.rides.models import RideRanking
|
||||
|
||||
return RideRanking
|
||||
|
||||
model = RideRanking
|
||||
fields = [
|
||||
"id",
|
||||
"rank",
|
||||
@@ -73,6 +66,7 @@ class RideRankingSerializer(serializers.ModelSerializer):
|
||||
"previous_rank",
|
||||
]
|
||||
|
||||
@extend_schema_field(serializers.DictField())
|
||||
def get_ride(self, obj):
|
||||
"""Get ride details."""
|
||||
return {
|
||||
@@ -87,6 +81,7 @@ class RideRankingSerializer(serializers.ModelSerializer):
|
||||
"category": obj.ride.category,
|
||||
}
|
||||
|
||||
@extend_schema_field(serializers.IntegerField(allow_null=True))
|
||||
def get_rank_change(self, obj):
|
||||
"""Calculate rank change from previous snapshot."""
|
||||
from apps.rides.models import RankingSnapshot
|
||||
@@ -99,6 +94,7 @@ class RideRankingSerializer(serializers.ModelSerializer):
|
||||
return latest_snapshots[0].rank - latest_snapshots[1].rank
|
||||
return None
|
||||
|
||||
@extend_schema_field(serializers.IntegerField(allow_null=True))
|
||||
def get_previous_rank(self, obj):
|
||||
"""Get previous rank."""
|
||||
from apps.rides.models import RankingSnapshot
|
||||
@@ -120,7 +116,7 @@ class RideRankingDetailSerializer(serializers.ModelSerializer):
|
||||
ranking_history = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
model = "rides.RideRanking"
|
||||
model = RideRanking
|
||||
fields = [
|
||||
"id",
|
||||
"rank",
|
||||
@@ -138,6 +134,7 @@ class RideRankingDetailSerializer(serializers.ModelSerializer):
|
||||
"ranking_history",
|
||||
]
|
||||
|
||||
@extend_schema_field(serializers.DictField())
|
||||
def get_ride(self, obj):
|
||||
"""Get detailed ride information."""
|
||||
ride = obj.ride
|
||||
@@ -178,6 +175,7 @@ class RideRankingDetailSerializer(serializers.ModelSerializer):
|
||||
"status": ride.status,
|
||||
}
|
||||
|
||||
@extend_schema_field(serializers.ListField(child=serializers.DictField()))
|
||||
def get_head_to_head_comparisons(self, obj):
|
||||
"""Get top head-to-head comparisons."""
|
||||
from django.db.models import Q
|
||||
@@ -220,6 +218,7 @@ class RideRankingDetailSerializer(serializers.ModelSerializer):
|
||||
|
||||
return results
|
||||
|
||||
@extend_schema_field(serializers.ListField(child=serializers.DictField()))
|
||||
def get_ranking_history(self, obj):
|
||||
"""Get recent ranking history."""
|
||||
from apps.rides.models import RankingSnapshot
|
||||
@@ -245,7 +244,7 @@ class RankingSnapshotSerializer(serializers.ModelSerializer):
|
||||
park_name = serializers.CharField(source="ride.park.name", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = "rides.RankingSnapshot"
|
||||
model = RankingSnapshot
|
||||
fields = [
|
||||
"id",
|
||||
"ride",
|
||||
|
||||
Reference in New Issue
Block a user