diff --git a/views/cc7/js/CirclesView.js b/views/cc7/js/CirclesView.js index 851743b9..df7ef2f7 100644 --- a/views/cc7/js/CirclesView.js +++ b/views/cc7/js/CirclesView.js @@ -419,16 +419,19 @@ export class CirclesView { const thisCell = thisRow.cells[c + 1]; if (thisCell && thisCell.innerText) { const thisEntry = thisRow.cells[c + 1].innerText; - - PDFs.thisPDFtextArray.push([ - thisEntry, - 125 + c * 40 + PDFs.thisPDFminX, //+ 140, - 5 + r * 20 + whereY, - "helvetica", - "normal", - 14, - { align: "right", maxWidth: 40, fill: "black", strokeColor: "black" }, - ]); + if (thisEntry.indexOf("True CC7 size ") > -1) { + // do NOT add the message about "True CC7 size may not be accurate" + } else { + PDFs.thisPDFtextArray.push([ + thisEntry, + 125 + c * 40 + PDFs.thisPDFminX, //+ 140, + 5 + r * 20 + whereY, + "helvetica", + "normal", + 14, + { align: "right", maxWidth: 40, fill: "black", strokeColor: "black" }, + ]); + } } } } @@ -715,11 +718,11 @@ export class CirclesView { }); } static connectAllToPrimaryPerson(currentRootID) { - condLog("connectAllToPrimaryPerson", { currentRootID }); - condLog("window.people.size", window.people.size); - condLog("window.people", window.people); + // console.log("connectAllToPrimaryPerson", { currentRootID }); + // console.log("window.people.size", window.people.size); + // console.log("window.people", window.people); let rootPeep = window.people.get(1.0 * currentRootID); - condLog({ rootPeep }); + // console.log({ rootPeep }); if (rootPeep) { CirclesView.updateFieldsInPersonCodesObject(currentRootID, "A0", "A0-" + currentRootID); CirclesView.addConnectionsToThisPerson(currentRootID, "A0"); @@ -727,7 +730,7 @@ export class CirclesView { } static updateFieldsInPersonCodesObject(currentID, code, codeLong) { - condLog("updateFieldsInPersonCodesObject:", currentID, code, codeLong); + // console.log("updateFieldsInPersonCodesObject:", currentID, code, codeLong); let Peep = window.people.get(currentID); let currentIDstr = "" + currentID; if (Peep) { @@ -810,6 +813,7 @@ export class CirclesView { } static addConnectionsToThisPerson(thisID, code, fromWhere = "root", p1 = 0, p2 = 0) { + // console.log("addConnectionsToThisPerson", { thisID }, { code }, { fromWhere }, { p1 }, { p2 }); // thisID = WikiTree ID # for person who we are adding connections for // fromWhere = the type of connection that prompted this call to expand the network /* @@ -1439,7 +1443,7 @@ export class CirclesView { let extraRadiusForCentralPerson = 0; condLog("BEFORE PLACEMENT: dotRadius = " + CirclesView.dotRadius, { radiusMultipler }); - + // console.log(CirclesView.theLeafCollection, Object.keys(CirclesView.theLeafCollection).length); let theCentralPersonObject = CirclesView.PersonCodesObject[CirclesView.theLeafCollection["A0"].Id]; let showPhotoChkBox = document.getElementById("displayType_CentralPhoto"); if ( diff --git a/views/fanChart/AhnenTafel.js b/views/fanChart/AhnenTafel.js index 90ed6e8f..8aa4e5f5 100644 --- a/views/fanChart/AhnenTafel.js +++ b/views/fanChart/AhnenTafel.js @@ -58,7 +58,7 @@ AhnenTafel.Ahnentafel = class Ahnentafel { // Stores the next person's WikiTree ID in position corresponding to their Ahnentafel number // THEN ... if they are a person in thePeopleList collection, check for THEIR parents, and recurse up the tree adding them! - addToAhnenTafel(nextPersonID, ahnNum) { + addToAhnenTafel(nextPersonID, ahnNum, doClimbTree = true, familyType = "") { this.list[ahnNum] = nextPersonID; if (this.listByPerson[nextPersonID] && this.listByPerson[nextPersonID].length > 0) { if (this.listByPerson[nextPersonID].indexOf(ahnNum) > -1) { @@ -72,10 +72,26 @@ AhnenTafel.Ahnentafel = class Ahnentafel { } let nextPerson = thePeopleList[nextPersonID]; - if (nextPerson && nextPerson._data.Father && nextPerson._data.Father > 0) { + if ( + doClimbTree && + familyType == "Bio" && + nextPerson && + nextPerson._data.BioFather && + nextPerson._data.BioFather > 0 + ) { + this.addToAhnenTafel(nextPerson._data.BioFather, 2 * ahnNum); + } else if (doClimbTree && nextPerson && nextPerson._data.Father && nextPerson._data.Father > 0) { this.addToAhnenTafel(nextPerson._data.Father, 2 * ahnNum); } - if (nextPerson && nextPerson._data.Mother && nextPerson._data.Mother > 0) { + if ( + doClimbTree && + familyType == "Bio" && + nextPerson && + nextPerson._data.BioMother && + nextPerson._data.BioMother > 0 + ) { + this.addToAhnenTafel(nextPerson._data.Mother, 2 * ahnNum + 1); + } else if (doClimbTree && nextPerson && nextPerson._data.Mother && nextPerson._data.Mother > 0) { this.addToAhnenTafel(nextPerson._data.Mother, 2 * ahnNum + 1); } } diff --git a/views/fanChart/FanChartView.js b/views/fanChart/FanChartView.js index 04f79456..36cc83cc 100644 --- a/views/fanChart/FanChartView.js +++ b/views/fanChart/FanChartView.js @@ -1985,6 +1985,9 @@ import { PDFs } from "../shared/PDFs.js"; thisElement = null; if (thisPhotoDIV) { thisElement = thisPhotoDIV.children[0]; + if (thisElement == null) { + thisElement = thisPhotoDIV; + } } // thisElement = document.getElementById(thisID); if ( @@ -2003,6 +2006,7 @@ import { PDFs } from "../shared/PDFs.js"; ahnNum: index, }); + // console.log("IF - Adding image to ", thisElement.src, " PDF with base string:", thisBaseString); PDFs.thisPDFimageArray.push([ thisBaseString, // "/apps/clarke11007/images/icons/female.gif", @@ -2027,6 +2031,12 @@ import { PDFs } from "../shared/PDFs.js"; ahnNum: index, }); + // console.log( + // "ELSE IF - Adding image to ", + // thisElement.src, + // " PDF with base string:", + // thisBaseString + // ); PDFs.thisPDFimageArray.push([ thisBaseString, //thisElement.src, "PNG", @@ -2040,6 +2050,8 @@ import { PDFs } from "../shared/PDFs.js"; ]); thisY += (thisElement.height + 20) * thisYdy; thisX += (thisElement.height + 20) * thisYdx; + } else { + console.log("NOT Adding image for ", thisElement); } let thisHereFontSize = PDFs.currentPDFsettings.thisFontSize; // temporary holding variable for font size when we need to squish in names or places in tight wedges diff --git a/views/superBigFamTree/SuperBigFamView.js b/views/superBigFamTree/SuperBigFamView.js index 7b8df01c..d774d7ed 100644 --- a/views/superBigFamTree/SuperBigFamView.js +++ b/views/superBigFamTree/SuperBigFamView.js @@ -14,6 +14,7 @@ * _Kn: for Kids * _Sn: for Siblings * _RM: / _RF: for (pa)Rents (male/female) + * _BM: / _BF: for Bio Parents (male/female) * * (NOTE that there may be multiple s for some unique individuals if they are related to the primary person in multiple ways>, each would have a unique ChunkID) * @@ -26,10 +27,11 @@ * * thePeopleList ==> is a collection of unique individuals, each person has ONE entry in thePeopleList, using the WikiTree ID number as their key * Additional Fields to be added to thePeopleList for this app: - * * Siblings -> howSibling ("Full", "Paternal", "Maternal","Adoptive") + * * Siblings -> howSibling ("Full" - Mom & Dad DNA parents, "Paternal 1/2"- Dad DNA, "Maternal 1/2" - Mom DNA,"Adoptive" - share nonDNA Mom & Dad, + * "Biological" - share BioFather and BioMother, "BioPaternal 1/2" - share BioFather, "BioMaternal 1/2" - share BioMother, "Unknown" - no info on parents) * * Children -> coParent (wikiTree ID number) * * Children -> orderNum (birth order number within nuclear family sharing same coParent) - * * AdoptiveMother / AdoptiveFather for Primary Person only (for now at least) + * * BioFather & BioMother - since update in API * * LeafCodes [ ] -> array of theLeafCollection Codes where this individual appears or could appear, based on ButtonBar settings * * theLeafCollection --> is a collection for every leaf on the Super Big Family Tree @@ -63,7 +65,7 @@ * * CURRENT IMPLEMENTATION: * loadInitial1000: getPeople, nuclear:3 - * loadSiblings : getPeople, anestors:3, siblings:1 + * loadSiblings : getPeople, ancestors:3, siblings:1 * * loadNiblings : I0 * loadAncestors : I1 @@ -172,7 +174,7 @@ import { PDFs } from "../shared/PDFs.js"; const FullAppName = "Super (Big Family) Tree app"; const AboutPreamble = "The Super Big Family Tree app was originally created to be a member of the WikiTree Tree Apps.
It is maintained by the original author plus other WikiTree developers."; - const AboutUpdateDate = "31 Oct 2025"; + const AboutUpdateDate = "27 Feb 2026"; const AboutAppIcon = ``; const AboutOriginalAuthor = "Greg Clarke"; const AboutAdditionalProgrammers = "Steve Adey"; @@ -305,6 +307,8 @@ import { PDFs } from "../shared/PDFs.js"; SuperBigFamView.maxNumDescGens = 7; SuperBigFamView.maxNumCuzGens = 4; + SuperBigFamView.familyType = "A1"; + SuperBigFamView.workingMaxNumAncGens = 3; SuperBigFamView.workingMaxNumDescGens = 2; SuperBigFamView.workingMaxNumCuzGens = 1; @@ -369,6 +373,8 @@ import { PDFs } from "../shared/PDFs.js"; "DeathLocation", "Mother", "Father", + "BioMother", + "BioFather", "Spouses", "Photo", "Name", @@ -381,7 +387,10 @@ import { PDFs } from "../shared/PDFs.js"; "Bio", ]; /** Object to hold the Ahnentafel table for the current primary individual */ - SuperBigFamView.myAhnentafel = new AhnenTafel.Ahnentafel(); + SuperBigFamView.myAhnentafel = new AhnenTafel.Ahnentafel(); // used for PRIMARY (adoptive) family + SuperBigFamView.bioAhnentafel = new AhnenTafel.Ahnentafel(); // used for BIOLOGICAL family + SuperBigFamView.bioAhnentafelsObject = {}; // used to hold the multiple Ahnentafels needed for cases of multiple biological lines (e.g. 2 sets of bio parents, or 1 set of bio parents and 1 set of bio grandparents, etc.) + // STRUCTURE: { bioParentAhnentafelNumber: { bioParentID: X, bioParentName: Y, tag: "0002" or "9995", bioAhnentafel: Ahnentafel Object } } /** Object to hold the Ancestors as they are returned from the getAncestors API call */ SuperBigFamView.theAncestors = []; @@ -2173,7 +2182,12 @@ import { PDFs } from "../shared/PDFs.js"; ' " + - // + // FamilyType selector + "     Family:" + "
" + ' DESCENDANTS: