Skip to content

Приложение для отображения генеологического дерева (на оcнове библиотеки dTree)

Notifications You must be signed in to change notification settings

1337haxx0r/family-tree-dTree

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Приложение для отображения генеологического дерева

Отображает семейное дерево и дополнительные сведения о человеке, включая его портрет. Прямые родственники супруг отображаются в отдельных деревьях. Имеется функционал поиска человека и перехода к найденной ноде. Также позволяет редактировать данные о человеке.

В данном проекте используется библиотека для построения семейных деревьев dTree версии 2.4.1 и база данных pocketbase.

Зависимости

Для работы dTree необходимы следующие библиотеки:

  • lodash (версия 4.17.4);
  • d3 (версия 4).

Данные библиотеки уже подключены к проекту и дополнительно их устанавливать не требуется.

Структура проекта

/lib  - файлы библиотеки dTree;
/config - параметры с указанием пути к ресурсам pocketbase (нужно настроить для подключения к вашим данным!);
/js - основные файлы проекта и модули;
/css - стили;
/assets - набор изображений и иконок;
/services - файлы обеспечивающие осуществление запросов к базе данных и обработку ошибок;
/utils - вспомогательные функции;
index.html - корневой файл проекта.

Схема таблицы с данными в pocketbase

База данных pocketbase позволяет импортировать коллекцию (схему данных) в формате json.

Скопировать пример коллекции
[
    {
        "id": "djal99a7q4a4nnb",
        "name": "genealogy",
        "type": "base",
        "system": false,
        "schema": [
            {
                "system": false,
                "id": "1cpdgevn",
                "name": "name",
                "type": "text",
                "required": true,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": null,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "3oxskp1c",
                "name": "gender",
                "type": "select",
                "required": true,
                "presentable": false,
                "unique": false,
                "options": {
                    "maxSelect": 1,
                    "values": [
                        "M",
                        "F"
                    ]
                }
            },
            {
                "system": false,
                "id": "y7f7i70j",
                "name": "portret",
                "type": "file",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "mimeTypes": [
                        "image/jpeg",
                        "image/vnd.mozilla.apng",
                        "image/png"
                    ],
                    "thumbs": [
                        "200x200f"
                    ],
                    "maxSelect": 1,
                    "maxSize": 5242880,
                    "protected": false
                }
            },
            {
                "system": false,
                "id": "rjs05tyj",
                "name": "date_of_birth",
                "type": "text",
                "required": true,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": 20,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "wh80oml2",
                "name": "date_of_death",
                "type": "text",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": 20,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "hj19lfca",
                "name": "place_of_birth",
                "type": "text",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": 50,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "12xua8gn",
                "name": "place_of_birth_coordinates",
                "type": "text",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": null,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "qfatge8n",
                "name": "place_of_death",
                "type": "text",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "min": null,
                    "max": 50,
                    "pattern": ""
                }
            },
            {
                "system": false,
                "id": "n3tnaasl",
                "name": "information",
                "type": "editor",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "convertUrls": false
                }
            },
            {
                "system": false,
                "id": "t5b1guf8",
                "name": "parents",
                "type": "json",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "maxSize": 2000000
                }
            },
            {
                "system": false,
                "id": "uanxbdqu",
                "name": "children",
                "type": "json",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "maxSize": 2000000
                }
            },
            {
                "system": false,
                "id": "vgdxarjd",
                "name": "partner",
                "type": "json",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {
                    "maxSize": 2000000
                }
            },
            {
                "system": false,
                "id": "2tmbacn5",
                "name": "key_node",
                "type": "bool",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {}
            },
            {
                "system": false,
                "id": "5xbc2aun",
                "name": "isLivingPerson",
                "type": "bool",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {}
            },
            {
                "system": false,
                "id": "hpittoif",
                "name": "isMainTree",
                "type": "bool",
                "required": false,
                "presentable": false,
                "unique": false,
                "options": {}
            }
        ],
        "indexes": [],
        "listRule": "",
        "viewRule": null,
        "createRule": null,
        "updateRule": null,
        "deleteRule": null,
        "options": {}
    }
]

Поле "isMainTree" принимает true для отображения ноды в основном дереве.

Поле "isLivingPerson" принимает true отображения информации о живом человеке.

Поле "key_node" устанавливает корневую ноду (единственная со значением true).

Поле "place_of_birth_coordinates" принимает координаты точки на google maps (широта,долгота).

Несколько полей таблицы имеют тип "json" и для формирования дерева должны иметь следующую структуру:

Поле таблицы "parents".

{
  "parents": [
    "parent1Id",
    "parent2Id"
  ]
}

Поле таблицы "children".

{
  "children": [
    "children1Id",
  ]
}

Поле таблицы "partner".

{
  "spouse": "spouseId"
}

Запуск приложения на локальном компьютере

<Будет дополняться>

About

Приложение для отображения генеологического дерева (на оcнове библиотеки dTree)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 71.7%
  • CSS 17.6%
  • HTML 10.7%