Hi Doug, Thanks for taking a stab at this.
asprintf is the right idea - except we have our own flavors of that which do work on all our platforms. Look at core/format.h printing things in feet or meters is actually fairly easy. Look at get_depth_string() - you can call this both with a depth_t or with mm and it will do the right thing. And then if you want to group things by a certain distance (30ft or 10m, for example), you can use M_OR_FT(10, 30) (defined in units.h) Does this help? /D > On Mar 5, 2019, at 4:18 PM, Doug Junkins <[email protected]> wrote: > > Here is a quick patch to demo the addition of an “All (by depth stats)” group > in the Yearly Statistics widget. > > Two caveats: > > 1) I used asprintf to format the labels for the depth ranges. That works fine > including <stdio.h> on OS X, but on Linux it looks like I need to define > _GNU_SOURCE in the source file. For now it is simply warning of an implicit > definition of asprintf when compiling on Linux. > > 2) The depth range labels are hardcoded in Meters. I haven’t started figuring > out how to apply the unit preferences to them. The labels are written into > the structure in core/statistics.c (same as the trip location and the dive > mode/type). At some point I think it would make sense to move those into the > Qt widgets since it is a bit of a hack right now using the *location string > to label each line in the statistics that is not a year or month. > > -Doug >
0001-Add-statistics-by-dive-depth.patch
Description: Binary data
> > >> On Mar 5, 2019, at 10:25 AM, Doug Junkins <[email protected]> wrote: >> >> As long as we don’t call it Subsurface X... >> >>> On Mar 5, 2019, at 9:56 AM, Dirk Hohndel <[email protected]> wrote: >>> >>> 4.9 is the next release that I hoped to start working on about two weeks >>> ago (which clearly didn't happen). Just for context. >>> >>> If and when we redo the divesite logic (and discussion on this seems to >>> have fallen dormant again - which could mean that Linus and Berthold are >>> busy writing code... or more likely that Linus is drowning in Linux merge >>> window pull requests and Berthold is back focusing on the undo code) that >>> will likely be a Subsurface 5.0 thing (not that our version numbers mean a >>> lot, but now that Linux is at 5.0, we need to catch up... just kidding... >>> this is a fairly significant change…) >> >> Yeah, I’m watching the discussion in the thread about undo and realize we >> are a ways away from refactoring the divesite logic. >> >>>> On Mar 5, 2019, at 9:50 AM, Doug Junkins <[email protected]> wrote: >>>> >>>> I’m a little late to the game here, but one thing I would like to see >>>> (besides a way to share divesites between multiple users) is some more >>>> detailed statistics. >>>> >>>> The “yearly statistics” are a good starting point, but I would like to see >>>> my statistics based on things like depth of the dive, water temperature, >>>> people I dove with, and tags. I also think now that the filter system is >>>> updated and more usable, the statistics should be based on the filtered >>>> list of dives (or have an option to display statistics on the filtered >>>> divelist.) >>>> >>>> Doing a quick search for “statistics” in the User Forum indicates that >>>> this is something people would like to see, but it was closely tied to the >>>> filter update as far as I can tell. If no one else is already working on >>>> updating the stats widgets, I can take a stab at it. >>> >>> Statistics are definitely something where I'm open to new categories. We >>> should make sure we understand how we want to visualize that - another sad >>> story of me doing a poor job of creating a shared vision with the key >>> developers and then seeing that implemented. >>> So let's talk about what you want to show and how. >> >> 1) I see depth and temperature as the low-hanging fruit since they don’t >> involve the issue with dives having multiple buddies or tags. They would >> make a good first step since the same logic and visualization that is used >> to split the yearly statistics into trips and types could be used with >> depths and temperatures in buckets. Something like 10m buckets for max depth >> and 5ºC for minimum temperature would make sense. This would provide some >> nice additional stats with minimum effort. >> >> 2) Whether to do the statistics on the filtered divelist or the full >> divelist would be the next question to answer. One option would be to add a >> menu item below the “Yearly statistics” called “Filtered statistics.” When >> that is fully functional, it could replace the “Yearly statistics” if we >> decide it makes sense. >> >> 3) People and tags could be added next if we can agree on the logic of how >> to handle dives with multiple people and/or tags. My choice would be that >> the categorization would be for each person you dove with, even if that >> means that a dive shows shows up in multiple people’s stats. For example, if >> I dove with Bob 3 times and Jim 4 times and both Bob and Jim 2 times, the >> stats would show that I dove with Bob 5 times and Jim 6 times, even though >> the summary shows I only dove 9 times. The same logic would apply to tags. >> >> 4) The presentation of the statistics could be addressed later. Some stats >> lend themselves to a bar chart or line chart presentation. Having a >> framework for graphical visualization of stats would be useful, but it is >> probably beyond my capabilities at this point. >> >> Let me see if I can do a mockup of what I’m talking about for #1 and #2. >> >> -Doug >> >> >
_______________________________________________ subsurface mailing list [email protected] http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface
