Giter VIP home page Giter VIP logo

family-tree's Introduction

Build React app

🌳 About

This is a web application to display family tree data locally in your browser. Just select a GedcomX json file and off you go! There is also a demo button to load some randomly generated example data to explore all features. Try it out over here on GitHub Pages!.

To create a simple GedcomX file, you can create a spreadsheet and convert that with my GedcomX converter. Note that you have to follow a specific format described on that page.

Supported languages1: πŸ‡ΊπŸ‡²/πŸ‡¬πŸ‡§2 πŸ‡©πŸ‡ͺ (See Adding new languages if you want to help translating.)

🚧 GedcomX Support

The following features of GedcomX are not supported:

Source Description

Due to gedcomx-js, the following data can not be stored and therefore not displayed:

  • publisher
  • author
  • created
  • modified
  • published

Source Reference

  • qualifiers

Group

Not supported at all by gedcomx-js

Relationship

Will come in a future release

  • facts

Dates

Date ranges always show start and end dates, never the duration.

Footnotes

  1. No differentiation yet between country specific differences ↩

  2. Default, therefore used while loading and fallback if local language is not supported ↩

family-tree's People

Contributors

dependabot[bot] avatar l0drex avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

family-tree's Issues

Refactor tree page into mvc

As the files get larger and larger, it gets harder to find certain functions. It becomes therefore necessary to refactor the file into mvc

Questions about your project – mesh structure, person attributes, CSS style, etc.

Good morning, @l0drex !

  1. I would like to know if your project can handle a complex family tree. For instance, can I include both my maternal and paternal relatives, such as uncles, aunts, cousins, and their spouses and descendants? Can I also trace back my ancestors up to the 16th generation, along with their siblings and in-laws?
  2. Can I add new person attributes, for example, citizenship and ancestries?
  3. Can I customise the cards style?
  4. Can I unfold and keep expanding the entire genealogy?
  5. Can I export the entire unfolded genealogy to PNG, PDF, and SVG?

Thank you for your attention!

Improve response while loading huge graph

When loading a huge graph with hundreds of people in it, the page becomes really slow and unresponsive. Possible improvements include:

  • Do graph calculation in separate web worker
  • Show a progress bar while the graph gets loaded (there is a progress tag in HTML for that)
  • Use web assembly for the model and view graph

Improve backend

  • Use modules instead of scripts
  • Use promises in load-functions

Size of nodes is fixed

This results in cropped-out information and weird proportions in nodes of dead people.

Proper URI resolution

Currently, I just assume any resource is an id (like #yourId). This doesn't work if multiple gedcomx-json files are used, for example with zip files.

Allow data editing

Create a dedicated way to edit the files. Editing the person-tables works ok, but as soon as one have to deal with families it becomes frustrating.

Support for gedcom files

It would be nice to be able to import and export gedcom files, as most other applications still use that format

Use gedcom for family data

  • Refactor the backend to MVC
  • Change the view to better fit the gedcomx structure (change table to a fact-view, etc.)
  • Change the stored object to be compatible with gedcomx json
  • Change uploaded file to gedcomx forma

Make the chart printable

  • Improve the CSS of @media print
  • Improve layout of the graph:
    • Put as many nodes as possible on one page while avoiding clutter
    • Use numbers and colors to reference nodes between pages

Deflating a family that is not a leave-family does not work correctly

Leaves get removed, but the family does not become an etc and the rest of the branch is still visible.

Possible solutions:

  • Make the family and etc and ignore the leftover branch (not ideal)
  • Calculate the shortest paths of the leaves to the family, filter paths through the start node out and hide the branch with the lowest distance

Improve inputs for navigation

  • move with mouse wheel / finger-drag / mouse-drag
  • zoom with Ctrl + mouse wheel
  • zoom with pinch on touchpad
  • zoom with pinch on touchscreens
  • no zoom on double click
  • improve usability on mobile screens
  • Use Ctrl+F to search while in tree mode

Less generic views

Events

Maybe something like a calendar would suit better.

Place Descriptions

A map (maybe even a 3D globus?) that shows all locations

Source Descriptions

Some sources are part of others, grouping them makes sense.

Document

Seems like they are always connected to a source description, so maybe merge the two?

Provide alternative visualizations

  • Timeline which sets years in context to historical events
    • events: begin and end of world wars, start of industrial revolution, discovery of the USA, invention of the internet and smartphone, cultural epochs
    • events would be stored in a predefined gedcomx root data, so this depends on #197
    • will be visible in the event overview
  • Filter in the current view:
    • Only ancestors
    • Only descendants
    • Only living people
  • Different coloring modes (gender, last name, ...)
    • change the filter selector to a dropdown menu
  • Statistics page
    • number of people and relationships
    • percentage of religion, gender, ...
    • timeline of births and deaths, maybe with timespans or a graph that shows the number of people alive per time
    • most common first names
    • oldest and youngest person
    • common age for marriage and childbirth
    • number of birthdays per month
    • completeness of the data (missing deaths, occupations, etc)
    • Map which shows geographic locations or birth and death, and maybe the movement vectors

Animations

  • Animated CSS, e.g. on mouse hover
  • Animated adding of new persons

Improve data validation

  • Check uploaded file for gedcomx compatibilty, notably if all required attributes are there. Everything else should already be done by gedcomx-js.
  • Use the id of top level data types and add one if its not present, since we use that for urls.
  • Add data that can be added automatically, mark them as extracted:
    • generations
    • events
    • facts that are shared between relationships and persons

Provide csv sample data

I'm trying out this project and I'd love to have some sample csv files. I tried to use the examples in the readme but I get some errors like Assertion Failed: Some people have no generation defined. Is it possible to include one example in the repo that people can just download and upload here? https://l0drex.github.io./family-tree

No error message when file loading failed

FileReader.onerror should be defined in index.js in the upload form.

There seems to be a permission problem on Android in Chrome when the user tries to select a file from Google Drive. A workaround for this is to simply use local files instead, for example by downloading the files from Drive first.

Search bar is read-only

Setting the value of the search input in react makes it read-only, which makes it unusable

Full gedcomx support

Currently, only gedcomx json files are supported, but it would be nice to have full support for images etc

Improve usability

  • #16
  • Allow to deflate the graph to hide nodes: Clicking on family-nodes would hide all leaves (ignoring etc-nodes)
  • Automatically show advanced information when opening a link to a person or searching for one
  • Add tooltips via the title attribute where needed
  • Align each generation on the same level via contraints, depends on #13
  • Allow drag and drop on input container (larger drop area than the buttons alone)

Provide example data

It would be helpful to have:

  • Basic examples in the wiki showing possible values
  • template files to help people creating their own family tree
  • example files with family tree data

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.