family tree software..

vasilev

Registered
Здравейте,
искам да направя за себе си семейно дърво, потърсих някой готови скриптове и решения но не попаднах на някое което да ме заинтригува :)
- да има снимки и информация, да има различни родословни разклонения и лесно да се експортне.
Попаднах и на google org chat - от excel да се експортне, но не попадам на възможност за снимки.
други които използват json и снимки, нямат различни родословни разклонения.
Затова и реших да попитам - някой правил ли е нещо подобно което е лесно за поддръжка / export / import.
Не искам да го правя отначало защото ще загубя време , а все пак го правя за себе си, не да печеля. ако има някой започнат проект може да го преработя и да го кача в github.

мерси предварително !
 
Малко като offtopic, но преди около 35 години и аз и брат ми правехме програми за родословни дървета. Ама това бяха едни други времена, когато нямаше интернет, а в много малко къщи имаше компютри.

Така че програми за родословни дървета се пишат лесно, стига да ги искаш да се изобразяват под формата на схеми, а не графично като истинско дърво. Ако искаш може да спретнем една бърза web базирана програма (на html+javascript) заедно, хем да направим актив на сайта тук. И на мен не ми трябва подобен продукт за продан...
 
здравей,
ок !

тук качих какво съм намерил и преработил до момента.

https://gitlab.com/vasilev.link/public/-/tree/master/familytree

не работи - delete member, след малко ще го видя защо.
не може да се добави различно разклонение - например за съпруг, съпруга ..
излиза не много подредено когато се добавят деца.

но от всички това е що годе най доброто което намерих като за начало.
 
При мен пък нещо изобщо не работи както трябва. Само дава да се добавят последователно по диагонал наследници един на друг. Стартирам го локално на компютъра, без сървър, но не мисля че това е проблемът, защото php файлът служи само за да запомня и зарежда направеното.
 
ъпдейтнах го с нова логика.. това използваще ul/li. сега използва array.
имам проблем който съм описал тук - https://web-tourist.net/forum/viewtopic.php?f=5&t=130543

тъй като искам ключовете да са уникални а не .. номера подред, за да може да се оперира с тях без да се бъркат останалите..
 
Ами сега имам други усложнения:
... has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
Накратко иска да го качвам в сайт, за да мога да го отварям както трябва. Не позволява стартиране от папка на компютъра. Не е ли все пак по-добре програмата да си може да си работи и като локално приложение? Не съм ползвам js командата import, че да знам какво промени да направя, за да се реши този проблем.
Ако се направи като локално приложение, тогава записването няма да става с бутон, а с линк от който да се изтегля направената структура. Зареждането също може да се осъществява локално.
 
Не знам как го стартираш от папка, но php има вграден сървър, който се стартира изключително лесно. Влизаш в папката, пишеш php -S 0.0.0.0:8080 и отваряш 127.0.0.1:8080.
 
djman каза:
Не знам как го стартираш от папка, но php има вграден сървър, който се стартира изключително лесно. Влизаш в папката, пишеш php -S 0.0.0.0:8080 и отваряш 127.0.0.1:8080.
Стартирам го като просто отварям html страницата. Нямам никакво php, защото за този проект то е само ненужна екстра за запаметяване на вече представеното. Както отбелязах в предишната тема, последното дори може изцяло да се замени с javascript решение.
 
ние да го направим да работи пък ще го комплектовам на електрон .. и ще е просто едно exe :)
да .. php вади json файла, затова трябва.
ъпдейтнах до вид в който смятам че е по-добре - с unique key. @Revelation удари едно рамо с lodash :)
 
здравейте,
може ли да се добави в обекта точно преди това ИД - нов обект..

Код:
 var dataftnew={};
  dataftnew[uuid]={};
  dataftnew[uuid]['children']= new Array;
  .....
  
 dataft= {"testid":{obect data},"testid2":{obect data2},"testid3":{obect data3}}
  var dataftold = JSON.parse(localStorage.getItem('dataft'));

идеята е да вмъкна dataftnew точно преди testid2 примерно.
 
Подхода е малко грешен. Предполагам искаш да спазваш някаква последователност при рендиране?

Ако е така, то си добави ordering в самия обект, за да държиш информацията, кое кога трябва да се рендира. След това сортираш по този ключ и рендираш. Иначе става голяма хамалогия да идентифицираш ИД-то преди/след което трябва да вмъкнеш елемент.
 
трябваше да използвам уникални ключове а не 0,1,2 ,,...
мерси !
понеже използвам underscore, направих:

Код:
constructor(tree) { 
        this.treeinput = tree;
        this.rootNodes = [];
        this.tree = [];
       ..
    }

    genRootNodes() {
        this.tree = _.sortBy(this.treeinput, ["order"]);
        _.each(this.tree, (value, key) => {
            if (!this.SpouseParent(value)) {
                this.rootNodes.push(key);
            }
        }
        );
    }

но така ключа на this.tree стана 0 .. тоест явно не е array.
нещо бъркам ли :)
 

Горе