Thinking about a dive site "schema"

Dirk Hohndel dirk at hohndel.org
Thu Jan 29 08:49:26 PST 2015


So I've been kicking this around in my mind for quite some time. Henrik
has been asking for it "since the beginning of time". We clearly have a
few more people here who'd love to have this, and I had a few
conversations on my last dive trip that make me think this would be the
right cornerstone feature for 4.5.

Here's the high level idea (and yes, this is pretty raw and needs a lot
more work):

Our "Location" text becomes the key for a dive site data base. How this
key into this data base is structured is primarily up to the user. We
will not enforce any schema on this.

I am unclear how the UI for accessing this dive site data base should
work. Possibly a button next to the Location field in the Dive Notes, but
I'm not sure.

Let's ignore this and say that we switched into "dive site mode". Every
dive site has a number of items associated with it.

GPS coordinates
Site name (= (part of) our location string?)
Description
Local notes

The first two are mandatory. If you don't have a name and GPS coordinates,
you don't have an entry in this data base.

Based on what some website do, we could add more items, but I'm not sure I
want to do that; feedback welcome:

Currents
Hazards
Water type
Marinelife
Maxdepth
Mindepth

This data base is connected with one or more online data bases. I am
talking to a couple of web site maintainers already about this
integration. My expectation is that anyone will be able to search the
data bases, in order to add sites or edit the data for sites you'll have
to have a login on that site.

GPS location, Site name, and Description (and possibly the other items)
come from / are shared with the web site(s), Local notes are just that,
notes that the user locally makes about the dive site.

The dive site view has three panes. The right side is a map (I'm thinking
square, but of course the user can resize).
The left side has a list of dive sites at the bottom, and above that the
details of the one site that's selected in the list.

How does the interaction work?

Search mode:

User enters a geographic region. If the user is looking up a site (i.e.
they enter the dive site screen from a dive that has no location set), the
region is pre-populated based on the location field of the trip, assuming
the dive is part of a trip. Otherwise the region is derived from the IP
address (if possible). Or it is unset and needs to be set by the user.

I'm still trying to crisply define the semantic of "region". This could be
something like a specific city (Hoodsport, WA, USA), or a body of water
(Hood Canal), or a resort (Wananavu, Fiji), or a GPS location. Plus a
radius around that.

The user can then either see all known dive sites in this region. Or they
can search for a dive site by name in this region.

If the user picks a known site, that populates the GPS and site name
accordingly.

If the user doesn't pick a known site but adds a new site, they need to
define a new name and some of the other data. GPS is required (either from
companion app, manual input, or map input).

If the user is authenticated against one or more of the web sites that we
integrate with, they can send that new dive site to that web site. Or in
the case of divelogs.de, uploading the dive to their site will include the
location data.

Browse mode:

When the user enters the dive site data base from a dive that has its
location / GPS set, then the data base shows the data for that site and a
map with known dive sites around it (default radius 40km/25mls or
something). The map is just a Marble map, so zoom and move are available,
if the user zooms or moves then a list of sites that are visible in the
map is updated accordingly.



OK, as I said, all rather rought still, but an idea of the direction I
want to take this. Let's take this as the start of a conversation and try
to really pin down the UI and the interaction model - and then implement
this for 4.5.

/D


More information about the subsurface mailing list