Skip to content

Commit 41b99dc

Browse files
committed
Open links in new window, note party location
1 parent 9583ed8 commit 41b99dc

1 file changed

Lines changed: 40 additions & 10 deletions

File tree

src/views/CampaignDetailView.vue

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,23 +36,33 @@
3636
<strong>Characters:</strong>
3737
<ul class="list-unstyled mb-0">
3838
<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+
>
4045
{{ char.name }} ({{ char.profession.name }})
41-
</RouterLink>
46+
</a>
4247
</li>
4348
</ul>
4449
</div>
4550
</div>
4651
<div class="col-md-6 mb-3">
4752
<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>
4954
<ul class="list-unstyled mb-0">
5055
<li v-for="front in linkedFronts" :key="front.id">
5156
<span v-if="front.resolved" class="me-1">☑</span>
5257
<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+
>
5464
{{ front.name }} ({{ front.type }})
55-
</RouterLink>
65+
</a>
5666
</li>
5767
</ul>
5868
</div>
@@ -62,21 +72,32 @@
6272
<strong>Maps:</strong>
6373
<ul class="list-unstyled mb-0">
6474
<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+
>
6681
{{ map.name }}
67-
</RouterLink>
82+
</a>
6883
</li>
6984
</ul>
7085
</div>
7186
</div>
7287
<div class="col-md-6 mb-3">
7388
<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>
7590
<ul class="list-unstyled mb-0">
7691
<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+
>
7899
{{ steading.name }} ({{ steading.type }})
79-
</RouterLink>
100+
</a>
80101
</li>
81102
</ul>
82103
</div>
@@ -341,6 +362,15 @@ const linkedSteadings = computed(() =>
341362
[...campaignStore.linkedSteadings].sort((a: any, b: any) => a.name.localeCompare(b.name))
342363
);
343364
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+
344374
onMounted(async () => {
345375
userId.value = await globalStore.getUserId();
346376
await loadCampaign();

0 commit comments

Comments
 (0)