|
@@ -114,7 +114,7 @@
|
|
|
<div class="birds-grid" *ngIf="getBirdsForRoute(route.id).length > 0">
|
|
|
<div class="bird-item" *ngFor="let bird of getBirdsForRoute(route.id)">
|
|
|
<div class="bird-avatar"
|
|
|
- [style.background-image]="'url(' + (bird.get('image') || 'assets/default-bird.png') + ')'">
|
|
|
+ [style.background-image]="'url(' + (bird.get('image') || 'assets/default-bird.png') + ')'" (click)="openBirdModal(bird)">
|
|
|
</div>
|
|
|
<div class="bird-name">
|
|
|
{{ bird.get('name') }}
|
|
@@ -144,4 +144,67 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
+ <!-- 鸟类详情模态框 -->
|
|
|
+ <div class="bird-modal-overlay" *ngIf="showBirdModal" (click)="closeBirdModal()">
|
|
|
+ <div class="bird-modal-content" (click)="$event.stopPropagation()">
|
|
|
+ <ion-icon name="close" class="close-icon" (click)="closeBirdModal()"></ion-icon>
|
|
|
+
|
|
|
+ <div class="bird-card-top">
|
|
|
+ <!-- 动态图片 -->
|
|
|
+ <img [src]="selectedBird.image" alt="鸟类照片" class="bird-modal-avatar">
|
|
|
+
|
|
|
+ <div class="bird-info">
|
|
|
+ <!-- 名称与学名 -->
|
|
|
+ <h2 class="bird-name">
|
|
|
+ {{ selectedBird.name }}
|
|
|
+ <span class="scientific-name">{{ selectedBird.scientificName }}</span>
|
|
|
+ <span *ngIf="selectedBird.conservationStatus" class="conservation-status">
|
|
|
+ {{ selectedBird.conservationStatus }}
|
|
|
+ </span>
|
|
|
+ </h2>
|
|
|
+
|
|
|
+ <!-- 分类信息 -->
|
|
|
+ <p class="bird-taxonomy" *ngIf="selectedBird.taxonomy">
|
|
|
+ {{ selectedBird.taxonomy.order }} >
|
|
|
+ {{ selectedBird.taxonomy.family }} >
|
|
|
+ {{ selectedBird.taxonomy.genus }}
|
|
|
+ </p>
|
|
|
+
|
|
|
+ <!-- 星级评分 -->
|
|
|
+ <div class="bird-rating">
|
|
|
+ <span *ngFor="let star of getStars(selectedBird.rating)" class="star">{{ star }}</span>
|
|
|
+ <span class="rating-text">{{ selectedBird.rating }}分</span>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 标签 -->
|
|
|
+ <div class="bird-tags" *ngIf="selectedBird.tags.length > 0">
|
|
|
+ <span *ngFor="let tag of selectedBird.tags" class="tag">{{ tag }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 描述 -->
|
|
|
+ <p class="bird-description">{{ selectedBird.description }}</p>
|
|
|
+
|
|
|
+ <!-- 特征 -->
|
|
|
+ <div class="bird-section" *ngIf="selectedBird.characteristics">
|
|
|
+ <h3>特征</h3>
|
|
|
+ <ul>
|
|
|
+ <li *ngIf="selectedBird.characteristics.size"><strong>体型:</strong> {{ selectedBird.characteristics.size }}</li>
|
|
|
+ <li *ngIf="selectedBird.characteristics.color"><strong>颜色:</strong> {{ selectedBird.characteristics.color }}</li>
|
|
|
+ <li *ngIf="selectedBird.characteristics.habitat"><strong>栖息地:</strong> {{ selectedBird.characteristics.habitat }}</li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 观察提示 -->
|
|
|
+ <div class="bird-section" *ngIf="selectedBird.observation">
|
|
|
+ <h3>观察提示</h3>
|
|
|
+ <ul>
|
|
|
+ <li *ngIf="selectedBird.observation.season"><strong>最佳季节:</strong> {{ selectedBird.observation.season }}</li>
|
|
|
+ <li *ngIf="selectedBird.observation.time"><strong>最佳时间:</strong> {{ selectedBird.observation.time }}</li>
|
|
|
+ </ul>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
</ion-content>
|