ShammyLevva / FTAnalyzer

Family Tree Analyzer - Finds hidden details in your family tree. Install at
http://www.ftanalyzer.com/install
Apache License 2.0
56 stars 23 forks source link

Sorting of Relation to Root column in Census Research Suggestions is "non-human" #256

Open karlic opened 2 years ago

karlic commented 2 years ago

Mac 12.0.1 FTA 1.3.0 (54) I'm trying to check I have all the censuses for my ancestors by working through them chronologically. I've exported a GEDCOM of just my direct ancestors from FTM2019

BUT, in Census Research Suggestions, sorting on Relation to Root results in an alphanumeric listing rather than "chronological".

If the default sorting cannot be overridden in code, may I suggest the relationships are renamed to avoid "3rd", "2nd", etc? (Maybe, "GGG Grandfather", "GG Grandfather", etc.)

Screenshot 2022-02-15 at 19 33 29
EmmArrBee commented 2 years ago

This request is loosely related to "Add Smart Sequence Option" #140 that I raised a while ago.

M

ShammyLevva commented 2 years ago

Basically the same as issue 140. Finding a way of intelligently sorting generations, that makes sense.

Unfortunately I’ve yet to find a sort ordering that does this not just for the different possible texts but making sure that those people that share the same text eg: all th 5g grandparents are intelligently sorted. It’s a tricky problem.

EmmArrBee commented 2 years ago

OK, so how about this as the basis for an idea.....

Leave the text in the relationship column as it is (at leat for now) and add a couple of new (hidden) sort keys...

First value would be generation relative to the Root person, so root is 0, their child would be -1, grandchild -2, parent +1, grandparent +2, great grand parent +3 &c

The second value would be distance (down the line) from the common relative. So a sibling would take their first value from the shared relative (the roots parent, so +1) and the second value is the generational distance from the shared relative. So a sibling would be (1,1)

An Aunt/Uncle shares a grandparent with root (so first number is +2) and is the child of that grandparent (2, 1). A first cousin would be (2, 2) being the grandchild of a shared grandparent. A second cousin would be (3, 3) being the ggc of a shared ggp

What I think is neat about this approach is that it differentiates senior and junior removed cousins.

A senior 1c1r would be (3, 2) being the grandchild of a shared great grand parent and a junior 1c1r would be (2, 3) the g grandchild of a shared gp

A senior 1c2r would be (4, 2), a senior 2r1r (4, 3), a 2c (4, 4), and a junior 2c1r (4, 5)

(Hopefully I've not messed up these examples, if I have forgive me.) Subtracting the second number from the first gives the generation relative to Root, with negative number being junior to Root. Summing the number gives the relational distance to Root.

I'm guessing there are some useful sort sequences from combinations of these two numbers ...

M

Nichotj commented 2 years ago

An interesting solution that does seem to work except that it doesn't resolve your original concerns. Instead of the 1st number being 1, 2, 3 etc, what if you used a variation of the Ahnentafel number? Sorting now would give you an order grouped by each ancestor. The Budgie Code uses 2D and 3D, I'm wondering if you should use 2F and 2M to show your parents? I think this would help as you go further back and 1 of your ancestors is missing.

EmmArrBee commented 2 years ago

I was trying to follow the KISS principle :-)

Maybe I being stupid, but if an ancestor is missing, then the relationships to root surely end at that point on that line.

My original concern was wrt to the sort sequence resulted from the way the various descriptive text labels sorted. This approach essentially removes the text lables from the consideration and provides (shadow) numeric keys to enable the sorting.

I'm sure, as is, this won't fully resolve those issues and others will help to refine it, but I think it goes some way to doing so.

M

EmmArrBee commented 2 years ago

So simply using the number pair as the sort key, I think we get... (-2, 0) Grandchildren (-1, 0) Children (0, 0) Root (1, 0) Parents (1,1) Siblings (1, 2) nephew & neices (1, 3) great nephews & neices (2, 0) Grandparents (2, 1) Aunts and Uncles (2, 2) 1st Cousins (2, 3) junior 1c1r (2, 4) junior 1c2r and etc (3, 0) Grandparents (3, 1) Great aunts and uncles (3, 2) senior 1st cousin 1 removed (3, 3) 2nd Cousin (3, 4) junior 2c1r (3, 5) junior 2c2r and etc (4, 0) Great grand Parents (4, 1) Great Great Aunt & Uncles (4, 2) senior 1c2r (4, 3) senior 2c1r (4, 4) 3rd Cousin (4, 5) junior 3c1r (4, 6) junior 3c2r and etc

To group by generation subtract second value from the first. All of root's grandchildren's (-2, 0) generation including great nephews & neices (1, 3) , junior 1c2r (2, 4) , 2c2r (3, 5), 3c2r (4, 6) have a value of -2 All of Root's children, his nephew & neice (1,2) junior 1c1r (2, 3), 2c1r (3, 4) have a value of -1 Root, their siblings, 1st cousins, 2c, 3c, have difference of 0 Root's parents (1, 0), Aunts/ Uncles (2, 1), senior 1c1r (3, 2) and etc have a difference of 1

To sort within each generation, use the differeence as shown above and then the first value

Nichotj commented 2 years ago

Quick Question, Now that these forms have filters on them, is this still an issue? Except that filters aren't on the Colour Census Report.

Also, 3,0 should be Great Grand parents and 4,0 should be 2x Great grand parents.

Regarding a missing Ancestor, for my 3GGM (Ahnentafel 37) I am Missing her husband (Ahnentafel 36). My suggestion was to name her 36F and he would have been 36M. Even though he was missing a report on all family starting with 36 could have been created.

I think our biggest problem is trying to understand what we want the final report/sorting to be. I would like things in "Branch" groupings i.e. all descendants of my mother's father's mother's father, whereas M you have proposed a generational view across the tree. Maybe both could be accommodated.