Trip
This is the main entity. We create one note for each trip, which then links to all related notes such as Obsidian/Lean Vaults/Lean Travel/Accommodation, Obsidian/Lean Vaults/Lean Travel/FnB, Landmark, or any other Obsidian/Lean Vaults/Lean Travel/Location.
Fields
- Locations (text input)
- Copy the geolocation from the map view and past it here
- Departure (select date value from date picker)
- Return (select date value from date picker)
- Country (select single value from list in a lookup note)
90 Organize/Lookups/Lookup - Country
- Travel Type (select single value from list in a lookup note)
90 Organize/Lookups/Lookup - Travel Type
- .
- Travel Status (select single value from list in a lookup note)
90 Organize/Lookups/Lookup - Travel Status
- Review Status (select single value from list in a lookup note)
90 Organize/Lookups/Lookup - Review Status
- Tags
- Travel/Trip
Inline
- Rating
- Summary
Queries
Embedded Map
dataviewjs
// Access the current file's frontmatter and name
const frontmatter = dv.current().file.frontmatter;
const fileName = dv.current().file.name;
// Check if 'locations' exists in the frontmatter
if (frontmatter && frontmatter.locations) {
// Split the 'locations' string by comma and trim spaces
const [centerLat, centerLng] = frontmatter.locations.toString().split(",").map(coord => coord.trim());
// Construct the mapview block as a string
const mapviewBlock = `\`\`\`mapview
{
"name": "Default",
"mapZoom": 6,
"centerLat": ${centerLat},
"centerLng": ${centerLng},
"query": "linkedfrom:\\"${fileName}\\" OR linkedto:\\"${fileName}\\" ",
"chosenMapSource": 0,
"showLinks": false,
"linkColor": "red",
"markerLabels": "left"
}
\`\`\``;
// Display the mapview block
dv.paragraph(mapviewBlock);
} else {
console.error("Locations field is missing or not in the expected format.");
// Display an error or a message directly on the page
dv.paragraph("Error: Locations field is missing or not in the expected format.");
}
Travel duration
dataviewjs
const currentPage = dv.current();
const departureDate = dv.date(currentPage.Departure);
const returnDate = dv.date(currentPage.Return);
const daysBetween = returnDate.diff(departureDate, 'days').days;
dv.paragraph(`Trip duration: ${daysBetween} days`)