/
familytree.min.js
1 lines (1 loc) · 7.62 KB
/
familytree.min.js
1
$(function(){var c={initialOffsetX:215,height:26,personWidth:126,personFontSize:10,personMaxFontSize:13,personPadding:3,personTipDelay:500,familyWidth:15,familyFontSize:18,familyPaddingTop:3,familyTipDelay:1000,panDistance:200,zoomAmount:200,minHeight:450};$("#personNodeTemplate").template("personNodeTemplate");$("#personPopupTemplate").template("personPopupTemplate");$("#familyPopupTemplate").template("familyPopupTemplate");var g="https://"+window.location.host+"/w/index.php?action=ajax&rs=wfGetTreeData&callback=?";var k=function(l){var m=new RegExp("[\\?&]"+l+"=([^&#]*)").exec(window.location.href);if(!m){return 0}return m[1]||0};var e=decodeURIComponent(k("id"));$jit.ST.Plot.NodeTypes.implement({"stroke-rect":{render:function(p,o){var n=p.getData("width"),y=p.getData("height"),t=p.getData("align"),w=this.getAlignedPos(p.pos.getc(true),n,y,t),q=p.getData("lineWidth"),z=i.canvas.getCtx();z.save();z.lineWidth=q;var x=w.x,v=w.y,u=w.x+n,s=w.y+y,m=p.getData("dim");var l=Math.PI/180;if((u-x)-(2*m)<0){m=((u-x)/2)}if((s-v)-(2*m)<0){m=((s-v)/2)}z.beginPath();z.moveTo(x+m,v);z.lineTo(u-m,v);z.arc(u-m,v+m,m,l*270,l*360,false);z.lineTo(u,s-m);z.arc(u-m,s-m,m,l*0,l*90,false);z.lineTo(x+m,s);z.arc(x+m,s-m,m,l*90,l*180,false);z.lineTo(x,v+m);z.arc(x+m,v+m,m,l*180,l*270,false);z.stroke();z.restore()}}});$jit.ST.Plot.EdgeTypes.implement({boxy:{render:function(p,l){var o=this.getOrientation(p),n=p.nodeFrom,x=p.nodeTo,z=n._depth<x._depth,v=this.viz.geom.getEdge(z?n:x,"begin",o),w=this.viz.geom.getEdge(z?x:n,"end",o),u=Math.round((v.x+w.x)/2),t=Math.round(v.x),s=Math.round(w.x),r=Math.round(v.y),q=Math.round(w.y),m=p.getData("lineWidth"),y=l.getCtx();y.save();y.lineWidth=m;y.beginPath();y.moveTo(t,r);y.lineTo(u,r);y.lineTo(u,q);y.lineTo(s,q);y.stroke();y.restore()}}});var i=new $jit.ST({injectInto:"infovis",duration:400,transition:$jit.Trans.Quart.easeInOut,levelDistance:8,subtreeOffset:8,multitree:true,constrained:false,levelsToShow:10,Navigation:{enable:true,panning:"avoid nodes",zooming:50},Node:{height:32,width:c.personWidth+4,type:"stroke-rect",color:"#FFF",lineWidth:1,align:"center",CanvasStyles:{fillStyle:"#FFF",strokeStyle:"#000",lineWidth:1},overridable:true},Edge:{type:"boxy",lineWidth:1,color:"#87B8FB",overridable:true},request:function(q,r,o){var n=i.graph.getNode(q);var p=q.substr(0,q.indexOf("|"));var l=n.data.$orn;var m="";if(!l){l=n.data.oldOrn=="left"?"right":"left";m="&setRoot=true";delete n.data.oldOrn}$.getJSON(g+"&orn="+l+"&id="+p+m,{},function(s){j(s);o.onComplete(q,s)})},onCreateLabel:function(l,n){l.id=n.id;var m=l.style;m.cursor="pointer";m.overflow="hidden";if(n.data.type=="Family"){m.color="#1111CC";m.textAlign="center";l.innerHTML=""}else{m.color="#333";m.textAlign="left";var o=$.tmpl("personNodeTemplate",n).appendTo(l);d(o)}f(l,n);if(n.data.type=="Family"&&n.data.children.length&&(n.data.husbandurl||n.data.wifeurl)){l.onclick=function(){if(n.data.$orn){if(n.expanded){n.expanded=false;var q={Move:{enable:true,offsetX:i.canvas.translateOffsetX+i.config.offsetX||0,offsetY:i.canvas.translateOffsetY+i.config.offsetY||0},setRightLevelToShowConfig:false,onBeforeRequest:function(){},onBeforeContract:function(){},onBeforeMove:function(){},onBeforeExpand:function(){}};var p=$jit.util.merge(i.controller,q);if(!i.busy){i.busy=true;i.selectPath(n,i.clickedNode);i.clickedNode=n;p.onBeforeCompute(n);n.eachLevel(1,false,function(r){$(i.labels.getLabel(r.id)).poshytip("destroy")});i.removeSubtree(n.id,false,"animate",{hideLabels:false,onComplete:function(){i.busy=false;p.onAfterCompute(n.id);p.onComplete()}})}}else{n.expanded=true;i.onClick(n.id)}}}}var o=$.tmpl((n.data.type=="Person"?"person":"family")+"PopupTemplate",n);if(i.root!=n.id){d(o);$(".popup-setroot",o).click(function(){$(i.labels.getLabel(n.id)).poshytip("hide");i.graph.eachNode(function(v){if(!v.isDescendantOf(n.id)){$(i.labels.getLabel(v.id)).poshytip("destroy");i.graph.removeNode(v.id)}});i.labels.clearLabels();i.root=n.id;n.data.$align="center";i.graph.computeLevels(n.id,0,"ignore");$(".popup-setroot",o).hide();var q=i.canvas.translateOffsetX;var p=i.canvas.translateOffsetY;var u=i.canvas.scaleOffsetX;var s=i.canvas.scaleOffsetY;var t=(-q-c.initialOffsetX)/u;var r=-p/s;i.config.levelsToShow=0;i.onClick(n.id,{Move:{enable:true,offsetX:-t,offsetY:-r},onComplete:function(){i.config.levelsToShow=2;n.data.oldOrn=n.data.$orn;delete n.data.$orn;i.group.requestNodes([n],$jit.util.merge(i.controller,{onComplete:function(){a();i.graph.eachNode(function(v){if(!v.exist){v.exist=true;v.drawn=true;v.visited=n.visited;h(v)}});i.compute("current",false);i.canvas.translate(t,r,true);i.fx.plot(false,true)}}))}});return false})}else{$(".popup-setroot",o).hide()}$(".popup-newwindow",o).click(function(){window.open(n.data.url);return false});$(l).poshytip({className:"tip-yellow",bgImageFrameSize:10,alignTo:"target",alignX:"center",offsetY:5,showTimeout:(n.data.type=="Person"?c.personTipDelay:c.familyTipDelay),hideTimeout:250,fade:false,slide:false,showOn:"hover",allowTipHover:true,content:o})},onPlaceLabel:function(l,m){f(l,m);if(m.data.type=="Family"){if(m.data.children.length===0||!(m.data.husbandurl||m.data.wifeurl)||m.data.$align==="center"){l.innerHTML="·";l.style.cursor="default"}else{l.innerHTML=(m.expanded?"–":"+");l.style.cursor="pointer"}}},onBeforePlotNode:function(l){if(l.selected){l.data.$lineWidth=2}else{delete l.data.$lineWidth}h(l)},onBeforePlotLine:function(l){if(l.nodeFrom.selected&&l.nodeTo.selected){l.data.$lineWidth=2}else{delete l.data.$lineWidth}}});$.getJSON(g,{id:e},function(l){j(l);i.loadJSON(l);i.compute();a();var n=0;i.select(i.root,{offsetX:c.initialOffsetX,onComplete:function(){if(n++){i.config.levelsToShow=2}}});function o(p,s){var r=i.canvas.scaleOffsetX;var q=i.canvas.scaleOffsetY;i.canvas.translate(p*1/r,s*1/q)}function m(r){var q=r/1000,p=1+q;i.canvas.scale(p,p)}$("#mapControlUp").click(function(){o(0,c.panDistance)});$("#mapControlDown").click(function(){o(0,-c.panDistance)});$("#mapControlLeft").click(function(){o(c.panDistance,0)});$("#mapControlRight").click(function(){o(-c.panDistance,0)});$("#mapControlZoomIn").click(function(){m(c.zoomAmount)});$("#mapControlZoomOut").click(function(){m(-c.zoomAmount)});$("#mapControlCenter").click(function(){var r=i.graph.getNode(i.root);var u=r.getPos();var q=i.canvas.translateOffsetX;var p=i.canvas.translateOffsetY;var t=i.canvas.scaleOffsetX;var s=i.canvas.scaleOffsetY;i.canvas.translate(-q/t-u.x-c.initialOffsetX,-p/s-u.y,false);i.canvas.scale(1/t,1/s)});$(window).resize(function(){b()});b()});function b(){var m=$("#infovis");var n=m.width();var l=m.height();i.config.levelsToShow=0;i.canvas.resize(n,l);i.config.levelsToShow=2}function a(){i.graph.eachNode(function(l){if(l.data.type=="Family"&&l.anySubnode()){l.expanded=true}})}function j(l){$jit.json.each(l,function(m){m.id=m.id+"|"+Math.floor(Math.random()*2147483648);m.data.$align=m.data.$orn;if(m.data.$orn=="center"){m.data.$orn=""}if(m.data.type=="Family"){m.data.$type="circle";m.data.$width=c.familyWidth;m.data.$dim=c.familyWidth}})}function d(l){$(".popup-anchor",l).click(function(m){if(window.parent){if(m.ctrlKey){window.open(this.href)}else{window.parent.location.href=this.href}return false}return true})}function f(l,n){var m=l.style;var p=i.canvas.scaleOffsetX;var o=i.canvas.scaleOffsetY;m.height=Math.round(o*c.height)+"px";if(n.data.type=="Family"){m.width=Math.round(p*c.familyWidth)+"px";m.fontSize=Math.round(p*c.familyFontSize)+"px";m.paddingTop=Math.round(o*c.familyPaddingTop)+"px"}else{m.width=Math.round(p*c.personWidth)+"px";m.fontSize=Math.min(c.personMaxFontSize,Math.round(p*c.personFontSize))+"px";m.padding=Math.round(p*c.personPadding)+"px"}}function h(l){if(l.data.type=="Person"){l.setCanvasStyle("strokeStyle",(l.data.gender=="M"?"#87B8FB":"#fba8f4"))}}});