Построение родового дерева на клиенте (браузер) имея входные данные
2000 UAHПостановка задачи:
построить визуальное представление родового дерева на странице .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;
- реализовать задачу так, что бы в будущем возможно было без проблем добавить/удалить новые пункты данных без поломки всей системы.
Дополнительно:
можно активировать один элемент и должно быть выделены все нисходящие родовые ветки, а справа во фрейме должно вывестись вся информация по персоне.
Наши уточнения по проекту и Ваша стоимость работ - в личной переписке.
Приложения 1
Отзыв заказчика о сотрудничестве с Олегом Кириченко
Построение родового дерева на клиенте (браузер) имея входные данныеДействительный профессионал своего дела. Бывает исполнители пытаются увести заказчика в выгодное для себя русло в случае когдане в состоянии выполнить работу в полном соответствии с ТЗ. Олег ни разу не попросил ни об альтернативном варианте, ни об компромиссе. Абсолютно все задачи, которые были поставлены и добавлены по ходу выполнения этапов работы, были выполнены в точном соответствии с ТЗ. Всегда находился на связи, не обрывал общение и постоянно отвечал, участвовал в диалоге. что немало важно для успешного завершения работ. Задача ставилась непростая и, в силу специфики, имела ряд технологических новинок, которые и требовалось внедрить. На этапе отбора исполнителя остановились на Олеге поскольку он сразу направил наши мысли в сторону поиска готового решения с возможностью "докрутить" под нашу нетиповую задачу. Остальные кандидаты предлагали все писать с нуля (ибо задача новая). Олег предложил правильное решение, позволившее существенно сэкономить стоимость работ, что в конечном итоге позволило не только уложиться в выделенный бюджет, но и "накидать" попутно дополнительных фич в разрабатываемый продукт. Соответственно все остались довольны: мы получили больше чем ожидали, исполнитель также финансово получил больше чем оговаривалось.
Придраться не к чему. Человек просто находится на своем месте!
Отзыв фрилансера о сотрудничестве с Александром Алексом
Построение родового дерева на клиенте (браузер) имея входные данныеОтличный заказчик, четкое ТЗ и хорошая оплата труда. Рекомендую!
-
1077 65 1 1 Добрый день. Пишите, обсудим все детали. Опыт c# более 6 лет. Так же большой опыт работы с asp .net. Исходники с классами и базой предоставите? Или хотя бы пару десятков записей из базы, что бы самому их не создавать, а взять уже готовые персоны и отобразить)
-
212 9 0 Добрый день, готов выполнить Ваш заказ быстро и качественно.
-
Александр Алекс Контент услуги
Дело в том, что этот проект есть часть одного более глобального решения, написанного на ASP.NET 4.0. И дополнять его аппачем под рнр явно нет смысла. Все гораздо проще чем кажется.
-
Актуальные фриланс-проекты в категории C#
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x)
1000 UAH
Сравнительный анализ эффективности кастомного ПО (v2.2-field) и эталонного ПО (Meshtastic v2.x) на идентичной аппаратной платформе (ESP32 + SX1268, 2W) по критериям дальности, пропускной способности, стабильности линка и энергопотребления. Провести тесты с замерами с учетом… C и C++, C# ∙ 10 дней 16 часов назад ∙ 2 ставки |
Создание плагина для интеграции с POS-системой Syrve, C#Разработать плагин для POS-системы Syrve (on-premise), который устанавливается на сервер заведения. Плагин должен: (1) передавать на наш сервер данные в режиме реального времени — заказы, статусы столов, платежи, чеки; (2) принимать команды от Reservble — подтверждения… C#, Веб-программирование ∙ 13 дней 13 часов назад ∙ 15 ставок |