|
|
@ -39,6 +39,16 @@ |
|
|
|
<fa icon="calendar" class="fa-fw text-slate-400"></fa> |
|
|
|
{{ timeSince }} |
|
|
|
</div> |
|
|
|
<div v-if="latitude || longitude"> |
|
|
|
<fa icon="location-dot" class="fa-fw text-slate-400"></fa> |
|
|
|
<a |
|
|
|
:href="getOpenStreetMapUrl()" |
|
|
|
target="_blank" |
|
|
|
class="underline" |
|
|
|
> |
|
|
|
Map View |
|
|
|
</a> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -231,6 +241,8 @@ export default class ProjectViewView extends Vue { |
|
|
|
expanded = false; |
|
|
|
givesToThis: Array<GiveServerRecord> = []; |
|
|
|
givesByThis: Array<GiveServerRecord> = []; |
|
|
|
latitude = 0; |
|
|
|
longitude = 0; |
|
|
|
name = ""; |
|
|
|
issuer = ""; |
|
|
|
projectId = localStorage.getItem("projectId") || ""; // handle ID |
|
|
@ -326,6 +338,8 @@ export default class ProjectViewView extends Vue { |
|
|
|
this.name = resp.data.claim?.name || "(no name)"; |
|
|
|
this.description = resp.data.claim?.description || "(no description)"; |
|
|
|
this.truncatedDesc = this.description.slice(0, this.truncateLength); |
|
|
|
this.latitude = resp.data.claim?.location?.geo?.latitude || 0; |
|
|
|
this.longitude = resp.data.claim?.location?.geo?.longitude || 0; |
|
|
|
} else if (resp.status === 404) { |
|
|
|
// actually, axios throws an error so we never get here |
|
|
|
this.$notify( |
|
|
@ -441,6 +455,20 @@ export default class ProjectViewView extends Vue { |
|
|
|
this.$refs.customDialog.open(contact); |
|
|
|
} |
|
|
|
|
|
|
|
getOpenStreetMapUrl() { |
|
|
|
// Google URL is https://maps.google.com/?q=LAT,LONG |
|
|
|
return ( |
|
|
|
"https://www.openstreetmap.org/?mlat=" + |
|
|
|
this.latitude + |
|
|
|
"&mlon=" + |
|
|
|
this.longitude + |
|
|
|
"#map=15/" + |
|
|
|
this.latitude + |
|
|
|
"/" + |
|
|
|
this.longitude |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
handleDialogResult(result) { |
|
|
|
if (result.action === "confirm") { |
|
|
|
return new Promise((resolve) => { |
|
|
|