|
36 | 36 | <strong>Characters:</strong> |
37 | 37 | <ul class="list-unstyled mb-0"> |
38 | 38 | <li v-for="char in linkedCharacters" :key="char.id"> |
39 | | - <RouterLink :to="{ name: 'character', params: { id: char.id } }" class="link-primary"> |
| 39 | + <a |
| 40 | + :href="`/character/${char.id}`" |
| 41 | + class="link-primary" |
| 42 | + target="_blank" |
| 43 | + rel="noopener noreferrer" |
| 44 | + > |
40 | 45 | {{ char.name }} ({{ char.profession.name }}) |
41 | | - </RouterLink> |
| 46 | + </a> |
42 | 47 | </li> |
43 | 48 | </ul> |
44 | 49 | </div> |
45 | 50 | </div> |
46 | 51 | <div class="col-md-6 mb-3"> |
47 | 52 | <div class="border rounded p-2 overflow-auto" style="max-height: 200px;"> |
48 | | - <strong>Fronts:</strong> |
| 53 | + <span><strong>Fronts:</strong> <small>(☑ completed front)</small></span> |
49 | 54 | <ul class="list-unstyled mb-0"> |
50 | 55 | <li v-for="front in linkedFronts" :key="front.id"> |
51 | 56 | <span v-if="front.resolved" class="me-1">☑</span> |
52 | 57 | <span v-else class="me-1">☐</span> |
53 | | - <RouterLink :to="{ name: 'front', params: { id: front.id } }" class="link-primary"> |
| 58 | + <a |
| 59 | + :href="`/front/${front.id}`" |
| 60 | + class="link-primary" |
| 61 | + target="_blank" |
| 62 | + rel="noopener noreferrer" |
| 63 | + > |
54 | 64 | {{ front.name }} ({{ front.type }}) |
55 | | - </RouterLink> |
| 65 | + </a> |
56 | 66 | </li> |
57 | 67 | </ul> |
58 | 68 | </div> |
|
62 | 72 | <strong>Maps:</strong> |
63 | 73 | <ul class="list-unstyled mb-0"> |
64 | 74 | <li v-for="map in linkedMaps" :key="map.id"> |
65 | | - <RouterLink :to="{ name: 'map', params: { id: map.id } }" class="link-primary"> |
| 75 | + <a |
| 76 | + :href="`/map/${map.id}`" |
| 77 | + class="link-primary" |
| 78 | + target="_blank" |
| 79 | + rel="noopener noreferrer" |
| 80 | + > |
66 | 81 | {{ map.name }} |
67 | | - </RouterLink> |
| 82 | + </a> |
68 | 83 | </li> |
69 | 84 | </ul> |
70 | 85 | </div> |
71 | 86 | </div> |
72 | 87 | <div class="col-md-6 mb-3"> |
73 | 88 | <div class="border rounded p-2 overflow-auto" style="max-height: 200px;"> |
74 | | - <strong>Steadings:</strong> |
| 89 | + <span><strong>Steadings:</strong> <small>(★ current party location)</small></span> |
75 | 90 | <ul class="list-unstyled mb-0"> |
76 | 91 | <li v-for="steading in linkedSteadings" :key="steading.id"> |
77 | | - <RouterLink :to="{ name: 'steading', params: { id: steading.id } }" class="link-primary"> |
| 92 | + <span v-if="isPartyLocation(steading.id)" class="me-1">★</span> |
| 93 | + <a |
| 94 | + :href="`/steading/${steading.id}`" |
| 95 | + class="link-primary" |
| 96 | + target="_blank" |
| 97 | + rel="noopener noreferrer" |
| 98 | + > |
78 | 99 | {{ steading.name }} ({{ steading.type }}) |
79 | | - </RouterLink> |
| 100 | + </a> |
80 | 101 | </li> |
81 | 102 | </ul> |
82 | 103 | </div> |
@@ -341,6 +362,15 @@ const linkedSteadings = computed(() => |
341 | 362 | [...campaignStore.linkedSteadings].sort((a: any, b: any) => a.name.localeCompare(b.name)) |
342 | 363 | ); |
343 | 364 |
|
| 365 | +const isPartyLocation = (steadingId: string): boolean => { |
| 366 | + return linkedMaps.value.some((map: any) => |
| 367 | + (map.locations || []).some((location: any) => |
| 368 | + location.currentPartyLocation === true && |
| 369 | + (location.steading_id === steadingId || (location.fronts || []).includes(steadingId)) |
| 370 | + ) |
| 371 | + ); |
| 372 | +}; |
| 373 | +
|
344 | 374 | onMounted(async () => { |
345 | 375 | userId.value = await globalStore.getUserId(); |
346 | 376 | await loadCampaign(); |
|
0 commit comments