Построение родового дерева на клиенте (браузер) имея входные данные
166 PLNПостановка задачи:
построить визуальное представление родового дерева на странице .html (или любой другой, поддерживаемой браузером, не суть).
Тип исходных данных:
в БД хранятся записи о персонах. Каждая персона располагает собственным набором информации (такие как: фото персоны, дата рождения, имя, дата смерти если уже случилось, описание характера личности и т.п.), содержит ссылки на двух родителей, содержит ссылки на заключенные и, если случилось, расторгнутые браки с иными персонами.
Проект на серверной стороне реализован на c# (ASP.NET). Если кому поможет в понимании с какой стороны подойти к реализации задачи, то во тчто мы имеем:
List<People> peoples - массив людей, входящих в родовое дерево может содержать от 1 до 1000 человек.
Само описание типа People:
namespace Classes
{
public class People
{
#region Основные данные
/// <summary>
/// Идентификатор персоны
/// </summary>
public int Id { get; set; }
/// <summary>
/// Имя персоны
/// </summary>
public string Name { get; set; }
/// <summary>
/// Дата рождения персоны
/// </summary>
public DateTime BirthDay { get; set; }
/// <summary>
/// Дата смерти персоны (если еще жива, то значение минимальное)
/// </summary>
public DateTime DeathDay { get; set; }
/// <summary>
/// Возраст
/// </summary>
public int Age { get; set; }
/// <summary>
/// Идентификатор отца
/// </summary>
public int Parent1_Id { get; set; }
/// <summary>
/// Идентификатор матери
/// </summary>
public int Parent2_Id { get; set; }
/// <summary>
/// Первый родитель (отец)
/// </summary>
public People Parent1 { get; set; }
/// <summary>
/// Второй родитель (мать)
/// </summary>
public People Parent2 { get; set; }
/// <summary>
/// История рождения
/// </summary>
public string BirthDayHistory { get; set; }
/// <summary>
/// Обстоятельства смерти
/// </summary>
public string DeathDayHistory { get; set; }
#endregion
#region дополнительные заметки, особые даты
/// <summary>
/// Дополнительные заметки
/// </summary>
public string Common { get; set; }
/// <summary>
/// Особые даты и события: [дата1][описание1]|[дата2][описание2]
/// </summary>
public string Specials { get; set; }
#endregion
/// <summary>
/// Идентификатор аккаунта в системе
/// </summary>
public int UserId { get; set; }
public List<Classes.Vedding> Veddings { get; set; }
public People()
{
}
}
}
Само описание типа Vedding:
namespace Classes
{
public class Vedding
{
/// <summary>
/// Идентификатор в системе
/// </summary>
public int Id { get; set; }
/// <summary>
/// Идентификатор партнера 1 в системе
/// </summary>
public int Name1_Id { get; set; }
/// <summary>
/// Идентификатор партнера 2 в системе
/// </summary>
public int Name2_Id { get; set; }
/// <summary>
/// Дата росписи
/// </summary>
public DateTime VeddingDate { get; set; }
/// <summary>
/// История бракосочетания
/// </summary>
public string VeddingHistory { get; set; }
/// <summary>
/// История развода
/// </summary>
public string DivorcedHistory { get; set; }
/// <summary>
/// Дата развода
/// </summary>
public DateTime DivorceDate { get; set; }
public Vedding()
{
}
}
}
Особенности задачи:
особенность дерева состоит в том, что оно предусмотрено для отображения не только вертикальных ветвей от основной персоны и через родителей, родителей родителей и дальше пра-пра, но и для отображения паралельных веток братьев и сестер на каждом колене (братья и сестры, в том числе сводные, у главной персоны, у родителей, у прародителей и т.д.). Таким образом, дерево не только вертикально ориентировано, но и горизонтально на различное удаление от центра по горизонтали.
К примеру, в дереве могут присутствовать тети и дяди, а также двоюродные дедушки и бабушки с их потомками, двоюродные братья и сестры.
Думаю, суть ясна.
В приложениях несколько графических файлов, поясняющих примерный вид задуманного.
Возможно для исполнителя станет полезным библиотеки для клиентской реализации:
https://almende.github.io/vis/network_examples.html
https://almende.github.io/vis/examples/network/nodeStyles/imagesWithBorders.html (на примере интерактивных элементов, способных к перемещению мышкой).
Что ожидается от исполнителя:
- предоставить полную реализацию сего на странице .html;
- предоставить требования в каком виде следует поставить пакет данных на страницу .html;
- реализовать задачу так, что бы в будущем возможно было без проблем добавить/удалить новые пункты данных без поломки всей системы.
Дополнительно:
можно активировать один элемент и должно быть выделены все нисходящие родовые ветки, а справа во фрейме должно вывестись вся информация по персоне.
Наши уточнения по проекту и Ваша стоимость работ - в личной переписке.
Załączniki 1
Opinia zleceniodawcy o współpracy z Oleg Kirichenko
Построение родового дерева на клиенте (браузер) имея входные данныеДействительный профессионал своего дела. Бывает исполнители пытаются увести заказчика в выгодное для себя русло в случае когдане в состоянии выполнить работу в полном соответствии с ТЗ. Олег ни разу не попросил ни об альтернативном варианте, ни об компромиссе. Абсолютно все задачи, которые были поставлены и добавлены по ходу выполнения этапов работы, были выполнены в точном соответствии с ТЗ. Всегда находился на связи, не обрывал общение и постоянно отвечал, участвовал в диалоге. что немало важно для успешного завершения работ. Задача ставилась непростая и, в силу специфики, имела ряд технологических новинок, которые и требовалось внедрить. На этапе отбора исполнителя остановились на Олеге поскольку он сразу направил наши мысли в сторону поиска готового решения с возможностью "докрутить" под нашу нетиповую задачу. Остальные кандидаты предлагали все писать с нуля (ибо задача новая). Олег предложил правильное решение, позволившее существенно сэкономить стоимость работ, что в конечном итоге позволило не только уложиться в выделенный бюджет, но и "накидать" попутно дополнительных фич в разрабатываемый продукт. Соответственно все остались довольны: мы получили больше чем ожидали, исполнитель также финансово получил больше чем оговаривалось.
Придраться не к чему. Человек просто находится на своем месте!
Opinia freelancera o współpracy z Aleksandr Aleks
Построение родового дерева на клиенте (браузер) имея входные данныеОтличный заказчик, четкое ТЗ и хорошая оплата труда. Рекомендую!
-
1077 65 1 1 Добрый день. Пишите, обсудим все детали. Опыт c# более 6 лет. Так же большой опыт работы с asp .net. Исходники с классами и базой предоставите? Или хотя бы пару десятков записей из базы, что бы самому их не создавать, а взять уже готовые персоны и отобразить)
-
212 9 0 Добрый день, готов выполнить Ваш заказ быстро и качественно.
-
Aleksandr Aleks Контент услуги
Дело в том, что этот проект есть часть одного более глобального решения, написанного на ASP.NET 4.0. И дополнять его аппачем под рнр явно нет смысла. Все гораздо проще чем кажется.
-
Aktualne zlecenia dla freelancerów w kategorii Aplikacje desktopowe
Narzędzie do porównywania rachunków z bankiem, kartami i księgowymZadanie techniczne: narzędzie do porównywania rachunków z bankiem, kartami i księgowymOgólny cel Potrzebne jest lokalne narzędzie (skrypt/mała aplikacja w Pythonie), które uruchamiane ręcznie co 1-2 miesiące na moim komputerze i dokonuje porównania między: Rachunkami, które… Python, Aplikacje desktopowe ∙ 1 dzień 12 godzin temu ∙ 37 ofert |
Dodać przerwy 10-30 sekund między wysyłkami e-mailiWitam! Szukam doświadczonego programisty 1C / BAS (BAF) do szybkiego rozwiązania problemu technicznego z wysyłką maili.Istota problemu: Używamy programu księgowego BAF (Business Automation Framework), edycja 2.0. Raz w miesiącu pojawia się potrzeba masowego wysyłania klientom… Programowanie stron internetowych, Aplikacje desktopowe ∙ 7 dni 4 godziny temu ∙ 10 ofert |
Rewersowe inżynieria konsolowych narzędzi do ankietowania kontrolerów SSD (Flash ID)1. Cel pracy Wydzielenie interfejsu programowania aplikacji (API) do interakcji z kontrolerami SSD/NVMe z dostarczonego zestawu narzędzi konsolowych (Phison, Silicon Motion, Realtek, Maxiotek, Marvell, JMicron itd.). Wynikiem ma być działający kod w języku C/C++ lub dokładna… C i C++, Aplikacje desktopowe ∙ 7 dni 15 godzin temu ∙ 6 ofert |