Neriderc / GVExport

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

Organize brothers and sisters in chronogical order #248

Closed Thovi98 closed 1 year ago

Thovi98 commented 1 year ago

Thanks for this amazing app ! I’ve just updated and the new mobile view is awesome 🥳🥳

I’ve only one frustration : I will take the top-to-bottom direction as example, but the issue remains for the letf-to-right direction. I like to have my parents above, and then all my brothers and sisters from left to right on the same line, as following: The oldest; the second; the third; …; the youngest.

Actually it appaers rather in a random order.

I hope it’s clear, I’m still learning English. Don’t hesitate if you have questions !

Thanks for all your work on this 🤗

Neriderc commented 1 year ago

I understand what you mean, thank you for raising it.

This is a bit tricky to do. Because of the way the diagram is compiled, we do not have much control over the order individuals are added to the diagram.

I think the best solution here would be to order the list after it has been compiled (the steps are: collect lists of individuals and family records -> draw diagram using these records. We could add a middle step to make it: collect lists of individuals and family records -> order list -> draw diagram).

The next issue is that if we order all the records by their date of birth, then we will quite likely end up with spouses not listed next to their partners.

I will have to have a think about how to do this. I do have a few ideas, so I hope I can get this to work.

I will have a look, but will make no promises as to whether this can be done :slightly_smiling_face:

hartenthaler commented 1 year ago

@Thovi98 are your brothers and sisters ordered in the right sequence in webtrees already? Are they mixed up by GVExport?

@Neriderc I don't like to reorder individuals in GVExport; they should be ordered already in their families; some members do not have a birth date, but they are ordered maybe by other information (like the date of the baptism). I see in my tree that the sequence of brothers/sisters is ok, but sometimes it is not. What is the reason? The sequence in the internal list of individuals or something what is happening when rendering the boxes?

Neriderc commented 1 year ago

What is the reason? The sequence in the internal list of individuals or something what is happening when rendering the boxes?

From my understanding, it is partly the ordering in webtrees (which is why you'll see most in the right order). But it's partly a result of how the tree is crawled.

For example, if you start with a child, then the recursive function will next add their parents. Then those parents will add their links, which may include siblings of the starting child. This order would mean that the diagram would display the selected child first, then the others in the order webtrees provides them. This is a problem if the starting child is not the oldest.

Another problem I see is that occasionally partners can be listed very far away from each other. For example. we may have a starting individual. This individual adds their parents. Those parents add their children (which may include siblings of the starting individual), but also the parents add their parents and in turn cousins and nieces and nephews are added. By the time the partner is added, there might already be many more individuals in the same generation, placing the partner far away. In most cases the parents will have already been added so would be skipped over and the partners will be right next to each other.

So I believe there are improvements that can be made here. I am moving away from the idea of sorting the list (array), as then we end up with individuals moving around without moving the order of their ancestors and descendants. It all gets a bit messy. I think small adjustments to the way the tree is crawled would make the most sense.

Currently it is in this order that the tree is crawled (as it's a recursive function, each step is fully completed - all parents, children, etc of the people added in each step are completed before continuing to the next step):

Anyone that already exists is skipped, for the most part.

Is this the most logical order? On first thought it seems that spouses maybe could go first, so they are always next to each other. But thinking a bit deeper about that, it is possible that a spouse could have an entire family tree to display for themselves. Therefore it makes sense to leave them until later in the list so that this tree is not inserted in the middle of the tree we are already developing. On the other hand a spouse might not have any linked family, and then we might end up with a spouse off to the side for no reason.

I'll happily take suggestions on how to improve the current situation!

schuco commented 1 year ago

My comment is without any knowledge of the internal process. I observed that adding a remote family linked by a member of a family already included in the diagram, this member may thereafter be displayed in the diagram far away from its sibs. So I thought this arrangement is done by Graphviz rather than GVE or webtrees. I think Graphviz tries to produce an optimal condensed diagram without caring about keeping sibs or closely related individuals together.

Neriderc commented 1 year ago

My comment is without any knowledge of the internal process. I observed that adding a remote family linked by a member of a family already included in the diagram, this member may thereafter be displayed in the diagram far away from its sibs. So I thought this arrangement is done by Graphviz rather than GVE or webtrees. I think Graphviz tries to produce an optimal condensed diagram without caring about keeping sibs or closely related individuals together.

This is likely true as well! The end result is likely a combination of all of the contributing factors.

I find most are in the correct order, but if the starting person is a middle child, and their parent is a middle child, and their parent is a middle child, then you can get a string of families where the children are not listed in order.

However, the more I think about this the more I think it might not be feasible to solve it without creating more issues.

@Thovi98 does re-ordering the children in the family in webtrees help resolve this for you? (you can reorder children by going to the family record and clicking the "Edit" button in the top right - then choose to re-order children).

If not, try adjusting your starting individual in GVExport to be the oldest child of the family.

hartenthaler commented 1 year ago

I think it would be very complex to resort the individuals and could have many side effects. I had an idea: after the list of individuals and families is filled (by the recursive function) it is possible to identify all children of a family, look up the original sequence in the webtrees/GEDCOM family and reorder those individuals in the internal list in the same sequence. But again, maybe with side effects.

Another approach would be to allow the user using a drag-and-drop function in the final diagram. Maybe not easy to implement.

Another approach would be to use force simulation to arrange the boxes in the diagram. This is used in the custom modules TAM and LIN. But then you can use those modules and do not need GVExport.

For me GVExport has its own value now and should concentrate on that. Maybe it is worth to identify the unique selling point of this very nice module, compare it with other tools like TAM, Topola, the build-in interactive tree diagram of webtrees and others in order to focus more to this USP instead of following all possible development directions.

Neriderc commented 1 year ago

I think it would be very complex to resort the individuals and could have many side effects. I had an idea: after the list of individuals and families is filled (by the recursive function) it is possible to identify all children of a family, look up the original sequence in the webtrees/GEDCOM family and reorder those individuals in the internal list in the same sequence. But again, maybe with side effects.

It's not really practical to do. You can swap the position of the siblings, but then we end up with a brother that was supposed to be at the top of the diagram with all his descendants, now he's at the bottom. The sister is now at the top, but the descendants haven't moved, so arrows are going all over the graph. It would be very messy.

Another approach would be to allow the user using a drag-and-drop function in the final diagram. Maybe not easy to implement.

This isn't practical with our current setup. I would expect this would be a new module not based on GraphViz.

Another approach would be to use force simulation to arrange the boxes in the diagram. This is used in the custom modules TAM and LIN. But then you can use those modules and do not need GVExport.

Exactly, that's a different module.

For me GVExport has its own value now and should concentrate on that. Maybe it is worth to identify the unique selling point of this very nice module, compare it with other tools like TAM, Topola, the build-in interactive tree diagram of webtrees and others in order to focus more to this USP instead of following all possible development directions.

For me, it is that GVE has an almost traditional family tree-like diagram but can handle complex trees. There are others that show more tree-like diagrams, but none of them handle complex trees. In most cases they can only show ancestors or descendants of a starting person. TAM and Lineage are nice, but they are a different style, with a different use-case. I would not use them for saving and sending an image to someone else, they are instead something I would use in the browser.

So in summary, I think the unique selling point of GVE for me is that you can generate a sharable family tree of everyone, not just direct descendants/ancestors.

I'm keen to know other's views on this? @hartenthaler what is GVE's unique selling point for you?

@schuco @Thovi98 feel free to contribute as well!

schuco commented 1 year ago

@hartenthaler For me GVExport has its own value now and should concentrate on that. Maybe it is worth to identify the unique selling point I agree. For me GVE was and after the recent achievements is even more the central tool to work with webtrees. So I prefere to search and navigate with it rather than use the search or list functions of wt. One reason that it is so versatile is the clickability of individuals and families. Unfortunately this functionality is not working on mobiles. Two weeks ago I could not imagine that GVE could ever be used on mobiles. Now that it works so fine in full screen mode the clickability would in my opinion be the last big step to be taken to get the universal tool, Swiss knife, with GVE.

hartenthaler commented 1 year ago

Unique Selling Points:

I will try to build up a table comparing several modules that present a graphical visualization of genealogical data. This should allow to compare GVExport with TAM, LIN, Topola, the build-in interactive tree diagram and other visualization tools that are already used in the webtrees core.

hartenthaler commented 1 year ago

There is a feature table for all webtrees visualization tools in a very first draft in the German webtrees manual: diagram comparison table

@all Please comment here or change in the wiki.

Neriderc commented 1 year ago

For me GVE was and after the recent achievements is even more the central tool to work with webtrees. So I prefer to search and navigate with it rather than use the search or list functions of wt. One reason that it is so versatile is the clickability of individuals and families.

Yes! I didn't think of this, but I generally use GVE for finding my way around my family tree to find the webtrees record for a person. It's a nice easy way to find the person you're looking for, especially if you don't remember their exact name.

Unfortunately this functionality is not working on mobiles. Two weeks ago I could not imagine that GVE could ever be used on mobiles. Now that it works so fine in full screen mode the clickability would in my opinion be the last big step to be taken to get the universal tool, Swiss knife, with GVE.

I am not actually sure why this does not work, I wasn't aware until now (I have not extensively used GVE on mobile). Technically the way the links are added to the SVG by GVE is deprecated (an old way of doing things, no longer recommended) however it is listed as currently still being supported by all major mobile browsers (details are on this page).

I have created #249 to look into this further. Perhaps adjusting the file to use the new method may help. Perhaps not, but I will attempt to find a way to resolve this.

@hartenthaler thanks for your contribution on what the unique selling points are from your perspective. I agree with all your points!

There is a feature table for all webtrees visualization tools in a very first draft in the German webtrees manual: diagram comparison table

I looks like a good first draft to me! I don't speak German but translated the page using Google Translate, and it looked like a good comparison from my perspective.

@Thovi98 Sorry, we have derailed your request with a discussion on the direction and vision of GVExport! But I believe it's an important discussion to have. I believe where we have landed is that there is not really any change we can make to the order without making the rest of the diagram worse. But also that, in most cases, siblings should be listed in the same order as they are in webtrees, so check you have the order right in webtrees. The main exception to this is that ancestors of the starting person(s) (and the starting person(s) themselves) may be out of order, but this is not a simple thing to resolve. Picking a different starting person may help., if you can do this without affecting what you are displaying (possibly by picking the eldest sibling).

If you need more help with changing the order with webtrees or anything else, reply and we will do our best to help.

Thovi98 commented 1 year ago

Whaouw there are interesting thinks here! Sorry for the delay.

As for my issue, this two combined ways solve it : changing the starting person and re-ordering the children in the family.

I find most are in the correct order, but if the starting person is a middle child, and their parent is a middle child, and their parent is a middle child, then you can get a string of families where the children are not listed in order.

However, the more I think about this the more I think it might not be feasible to solve it without creating more issues.

@Thovi98 does re-ordering the children in the family in webtrees help resolve this for you? (you can reorder children by going to the family record and clicking the "Edit" button in the top right - then choose to re-order children).

Thanks for your input :D

Neriderc commented 1 year ago

As for my issue, this two combined ways solve it : changing the starting person and re-ordering the children in the family.

It's great to hear you have it resolved. I will close this issue :)