mirror of
https://github.com/YunoHost-Apps/webtrees_ynh.git
synced 2024-09-03 18:26:37 +02:00
1 line
No EOL
5.4 KiB
JavaScript
1 line
No EOL
5.4 KiB
JavaScript
function TreeViewHandler(d){var c=this;this.treeview=jQuery("#"+d+"_in");this.loadingImage=jQuery("#"+d+"_loading");this.toolbox=jQuery("#tv_tools");this.buttons=jQuery(".tv_button:first",this.toolbox);this.zoom=100;this.boxWidth=180;this.boxExpandedWidth=250;this.cookieDays=3;this.ajaxUrl="module.php?mod=tree&ged="+encodeURIComponent(WT_GEDCOM)+"&instance="+d+"&mod_action=";this.container=this.treeview.parent();this.updating=this.auto_box_width=!1;"true"===readCookie("compact")&&c.compact();c.treeview.draggable({cursor:"move",stop:function(){c.updateTree()}});c.toolbox.find("#tvbCompact").each(function(e,b){b.onclick=function(){c.compact()}});c.toolbox.find("#tvbAllPartners").each(function(e,b){b.onclick=function(){createCookie("allPartners","true"===readCookie("allPartners")?"false":"true",c.cookieDays);document.location=document.location}});c.toolbox.find("#tvbOpen").each(function(g,b){var f=jQuery(b,c.toolbox);b.onclick=function(){f.addClass("tvPressed");c.setLoading();var e=jQuery.Event("click");c.treeview.find(".tv_box:not(.boxExpanded)").each(function(i,h){var a=jQuery(h,c.treeview).offset();a.left>=c.leftMin&&a.left<=c.leftMax&&a.top>=c.topMin&&a.top<=c.topMax&&c.expandBox(h,e)});f.removeClass("tvPressed");c.setComplete()}});c.toolbox.find("#tvbClose").each(function(b,g){var f=jQuery(g,c.toolbox);g.onclick=function(){f.addClass("tvPressed");c.setLoading();c.treeview.find(".tv_box.boxExpanded").each(function(h,e){jQuery(e).css("display","none").removeClass("boxExpanded").parent().find(".tv_box.collapsedContent").css("display","block")});f.removeClass("tvPressed");c.setComplete()}});c.centerOnRoot()}TreeViewHandler.prototype.setLoading=function(){this.treeview.css("cursor","wait");this.loadingImage.css("display","block")};TreeViewHandler.prototype.setComplete=function(){this.treeview.css("cursor","move");this.loadingImage.css("display","none")};TreeViewHandler.prototype.getSize=function(){var d=this.container.parent(),c=d.offset();this.leftMin=c.left;this.leftMax=this.leftMin+d.innerWidth();this.topMin=c.top;this.topMax=this.topMin+d.innerHeight()};TreeViewHandler.prototype.updateTree=function(g,f){var j=this,i=[],h=[];this.getSize();j.treeview.find("td[abbr]").each(function(c,d){d=jQuery(d,j.treeview);var e=d.offset();e.left>=j.leftMin&&e.left<=j.leftMax&&e.top>=j.topMin&&e.top<=j.topMax&&(i.push(d.attr("abbr")),h.push(d))});0<i.length?(j.updating=!0,j.setLoading(),jQuery.ajax({url:j.ajaxUrl+"getPersons",dataType:"json",data:"q="+i.join(";"),success:function(m){for(var c=h.length,o=jQuery(".rootPerson",this.treeview),e=o.offset().left,n=0;n<c;n++){h[n].removeAttr("abbr").html(m[n])}j.treeview.offset({left:j.treeview.offset().left-o.offset().left+e});j.getSize()},complete:function(){j.treeview.find("td[abbr]").length&&j.updateTree(g,f);j.auto_box_width&&j.treeview.find(".tv_box").css("width","auto");j.updating=!0;g&&j.centerOnRoot();f&&f.removeClass("tvPressed");j.setComplete();j.updating=!1},timeout:function(){f&&f.removeClass("tvPressed");j.updating=!1;j.setComplete()}})):(f&&f.removeClass("tvPressed"),j.setComplete());return !1};TreeViewHandler.prototype.compact=function(){var e=jQuery("#tvbCompact",this.toolbox);this.setLoading();if(this.auto_box_width){var d=this.zoom/100*this.boxWidth+"px",f=this.zoom/100*this.boxExpandedWidth+"px";this.treeview.find(".tv_box:not(boxExpanded)",this.treeview).css("width",d);this.treeview.find(".boxExpanded",this.treeview).css("width",f);this.auto_box_width=!1;readCookie("compact")&&createCookie("compact",!1,this.cookieDays);e.removeClass("tvPressed")}else{this.treeview.find(".tv_box").css("width","auto"),this.auto_box_width=!0,readCookie("compact")||createCookie("compact",!0,this.cookieDays),this.updating||this.updateTree(),e.addClass("tvPressed")}this.setComplete();return !1};TreeViewHandler.prototype.centerOnRoot=function(){this.loadingImage.css("display","block");var f=this.container,e=f.innerWidth()/2;if(isNaN(e)){return !1}var h=f.innerHeight()/2,g=jQuery(".rootPerson",this.treeview);this.treeview.offset({left:f.offset().left+this.treeview.offset().left+e-g.offset().left-g.outerWidth()/2,top:f.offset().top+this.treeview.offset().top+h-g.offset().top-g.outerHeight()/2});this.updating||this.updateTree(!0);return !1};TreeViewHandler.prototype.expandBox=function(j,i){if(jQuery(i.target).hasClass("tv_link")){return !1}j=jQuery(j,this.treeview);var p=j.parent(),o=j.attr("abbr"),n=this,l,k;if(p.hasClass("detailsLoaded")){k=p.find(".collapsedContent"),l=p.find(".tv_box:not(.collapsedContent)")}else{l=j;k=j.clone();p.append(k.addClass("collapsedContent").css("display","none"));var m=this.loadingImage.find("img").clone().addClass("tv_box_loading").css("display","block");j.prepend(m);n.updating=!0;n.setLoading();j.load(n.ajaxUrl+"getDetails&pid="+o,function(){"function"===typeof CB_Init&&CB_Init();j.css("width",n.zoom/100*n.boxExpandedWidth+"px");m.remove();p.addClass("detailsLoaded");n.setComplete();n.updating=!1})}j.hasClass("boxExpanded")?(l.css("display","none"),k.css("display","block"),j.removeClass("boxExpanded")):(l.css("display","block"),k.css("display","none"),l.addClass("boxExpanded"));this.getSize();return !1};function createCookie(f,e,h){if(h){var g=new Date;g.setTime(g.getTime()+86400000*h);document.cookie=f+"="+e+"; expires="+g.toGMTString()+"; path=/"}else{document.cookie=f+"="+e+"; path=/"}}function readCookie(f){f+="=";for(var e=document.cookie.split(";"),h=0;h<e.length;h++){for(var g=e[h];" "===g.charAt(0);){g=g.substring(1,g.length)}if(0===g.indexOf(f)){return g.substring(f.length,g.length)}}return null}; |