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
> 

Attachment: 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

Reply via email to