Neriderc / GVExport

Repository for GVExport module for Webtrees
GNU General Public License v2.0
15 stars 6 forks source link

Add "Anybody" option #45

Closed Neriderc closed 2 years ago

Neriderc commented 2 years ago

We claim to create an "all in one" tree, but currently only relatives are included. This options would grow the tree from non-related nodes, i.e. it would include the families of married-in relatives where information exists in the family tree.

This would:

hartenthaler commented 2 years ago

In my opinion, this would be very close to the webtrees 1 custom module "branch export". Maybe it is better to implement such things as own module instead of as part of GVExport. Already now "cousins" in the user interface is not clear. It has only relevance if "siblings" is selected, too. If "siblings" is not checked, then "cousins" should be greyed out. And "cousins" is not only cousins, it includes nices/nephews, too.

Neriderc commented 2 years ago

Doesn't "Branch export" have a different purpose? GVExport is about visualisation. Currently if you want to display everyone in your tree, you have to add them all as starting individuals (or manually add any married-in individuals ). Your clippings cart pull request would make this a little easier, but I don't think the default clippings cart makes it easy to add everyone. While I'm sure there could be an extension to make this easier (by adding all individuals to the clippings cart), from a user perspective it would be even easier to just have a checkbox in GVExport.

I'm presuming it's a minor code change to implement this in GVExport. Having an "everybody" tickbox doesn't seem too difficult to implement, shouldn't clutter the UI, and should make it easy for users to visualise all their data.

In regards to "cousins", perhaps we could change terminology here. Perhaps make it "all relations" or something like that, then require that if it's selected then "siblings" is selected as well.

hartenthaler commented 2 years ago

Yes, Branch export is about selecting people. GVExport is about visualization, as you said. This is my approach separating these two functionalities:

In the default Clippings Cart module, there are functions to add any records to the clippings cart and functions to add ancestors and descendants of persons to the clippings cart. In the Vest-Clippings Cart module, there is a function to add all persons related to a place to the clippings cart. In the Extended Clippings Cart module, there is already a function to add all persons in a tree to the clippings cart, and there are functions to add all chains of partners of partners or all circles of persons in the tree to the clippings cart. And I will integrate the function of GVExport or Branch Export about selecting people to the Extended Clippings Cart.

You are free to add the "everybody" function to GVExport. It will not clutter the UI. So it is ok. But what if somebody likes to select "nearly everybody", i.e select all but exclude some people. The clippings cart has the possibility that allows you to delete some records. I would prefer not to implement functions again and again.

For the presentation of sets of records in the clippings cart, there are now three powerful tools: TAM, Lineage, and GVExport. In the future, I plan to have more, for example, a list view. And I plan to have more sources to copy people to the clippings cart, for example, my module "Extended family" will get a function to copy all (maybe filtered) members of the extended family to the clippings cart in the next release (grandparents, partners, cousins, nieces, siblings-in-law, grandchildren, ...). And I have the idea to use the standard search function of webtrees and to allow the user to copy the search results to the clippings cart.

Neriderc commented 2 years ago

I think there are different target audiences, and I think we should be able to cover the two audiences here.

One audience uses webtrees for their family tree data, and wants to be able to export a tree of everything they have done so they can show their family. They get this module installed, and click "everybody", generate a nice big tree of all their data, and can export it. No other modules needed, no need to get their head around the clippings cart if they haven't used it, easy to include everyone that they've entered data for.

Now there's another audience. This audience perhaps has tens of thousands of records, they are very experienced with webtrees and want fine control. They want to be able select just who they want, they may have lots of modules installed to get all the functionality they need, and have specific requirements for what they are trying to achieve. With the clippings cart support you've added, this caters to this audience as not only can they have the detailed control that the clippings cart offers, it also integrates cleanly with other modules due to using the webtrees clippings cart.

These are two distinct audiences, and I think we can cater to both. From what I'm hearing, you think it should be a separate module. I think this adds an extra layer of complexity for the first audience. But also, GVExport is already recursively crawling the data to built the diagram, stopping when it hits certain stopping criteria (e.g. max levels, non-related, etc). So to include everyone, I'm expecting that we can just add an additional criteria that says if the "Everybody" option is checked, then don't stop if non-related, just keep on following that part of the tree.

hartenthaler commented 2 years ago

Yes, you are right that there are two different target audiences. And my approach is the more complex one because I like it that way. For me, it is ok to support both target audiences in the way you plan to do it for GVExport.

Only one question to have it clear: is "everybody" really

  1. everybody or
  2. is it everybody related or related by marriage to the starting/root persons.

Option 1 would include even isolated persons in the tree. This is what I name "all" persons in a tree.

Neriderc commented 2 years ago

I'm thinking 2, where we follow from the starting person to all parent, child, or spouse connections. It would respect the max levels for ancestors/descendants.

You're right ,"everybody" is a misleading term. Since it sits alongside options like "siblings" and " spouses ", perhaps "Anybody" would be a better term. That's a bit clearer that any linked person can be included, but it doesn't imply that every single person in your tree is necessarily included.

hartenthaler commented 2 years ago

Ok, "Anybody" would be better.

In the direction of ancestors and descendants, there is the defined max level. When you go sidewards to the spouses is there a limit, too? Or will you go infinite to spouses of spouses of spouses?

I assume that the max ancestor/descendant level will be applied to the spouse's family, too. So maybe add the parents and grandparents of the spouses, but not the Greatgrnadparents of a spouse.

Neriderc commented 2 years ago

Yes, there would be the same limit. When you generate the diagram, there is one row/column per generation. This functionality wouldn't add any more rows/columns, it would just fill in anyone in the existing generations that may not be blood related.

hartenthaler commented 2 years ago

fine!

btw: I just finished testing the new function for the clippings cart, one bug was fixed. It seems to work now stable.