forked from abhinemani/mobi-orgchart
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.orgchart.min.js
21 lines (21 loc) · 3.56 KB
/
jquery.orgchart.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* JQuery Organisation Chart Plugin.
*
* Author: Mark Lee
* Copyright (C)2013 Caprica Software Limited
* http://www.capricasoftware.co.uk
*
* Contributions by: Paul Lautman <paul.lautman at gmail.com>
*
* This software is licensed under the Creative Commons Attribution-ShareAlike 3.0 License,
* see here for license terms:
*
* http://creativecommons.org/licenses/by-sa/3.0
*/
(function(a){function n(c,g,h,f,b){var p=a("<table cellpadding='0' cellspacing='0' border='0'/>"),k=a("<tbody/>"),m=a("<tr/>").addClass("nodes"),j=a("<td/>").addClass("node").attr("colspan",2),d=c.children("ul:first").children("li");1<d.length&&j.attr("colspan",2*d.length);var e=a("<h2>").html(b.nodeText(c)),e=a("<div>").addClass("node").addClass("level"+h).addClass("node"+f).addClass("level"+h+"-node"+f).append(e);b.copyClasses&&e.addClass(c.attr("class"));b.copyData&&e.data(c.data());b.copyStyles&&
e.attr("style",c.attr("style"));b.copyTitle&&e.attr("title",c.attr("title"));e.data("orgchart-level",h).data("orgchart-node",c);j.append(e);m.append(j);k.append(m);e.click(function(){var c=a(this);b.nodeClicked(c.data("orgchart-node"));if(b.interactive){var d=c.closest("tr");d.next("tr").is(":visible")?(b.fade?d.nextAll("tr").fadeOut(b.speed):d.nextAll("tr").hide(),c.removeClass("shownChildren").addClass("hiddenChildren")):(c.removeClass("hiddenChildren").addClass("shownChildren"),b.fade?d.nextAll("tr").fadeIn(b.speed):
d.nextAll("tr").show())}});if(0<d.length)if(-1==b.depth||h+1<b.depth){f=a("<tr/>").addClass("lines");c=a("<td/>").attr("colspan",2*d.length);f.append(c);j=a("<table cellpadding='0' cellspacing='0' border='0'>");j.append("<tbody>");var q=a("<tr/>").addClass("lines x"),s=a("<td>").addClass("line left"),t=a("<td>").addClass("line right");q.append(s).append(t);j.children("tbody").append(q);c.append(j);k.append(f);0<d.length&&(e.addClass("hasChildren"),-1==b.showLevels||h<b.showLevels-1?e.addClass("shownChildren"):
e.addClass("hiddenChildren"),b.interactive&&e.hover(function(){a(this).addClass(b.hoverClass)},function(){a(this).removeClass(b.hoverClass)}));var l=a("<tr/>").addClass("lines v");d.each(function(){var b=a("<td/>").addClass("line left top"),d=a("<td/>").addClass("line right top");l.append(b).append(d)});l.find("td:first").removeClass("top");l.find("td:last").removeClass("top");k.append(l);var r=a("<tr/>");d.each(function(d){var c=a("<td/>");c.attr("colspan",2);n(a(this),c,h+1,d,b);r.append(c)});k.append(r)}else b.stack&&
(d=d.clone(),d=a("<ul class='stack'>").append(d).addClass("level"+h).addClass("node"+f).addClass("level"+h+"-node"+f),d=a("<div class='stack-container'>").append(d),e.after(d));-1<b.showLevels&&h>=b.showLevels-1&&m.nextAll("tr").hide();p.append(k);g.append(p)}a.fn.orgChart=function(c){var g=a.extend({},a.fn.orgChart.defaults,c);return this.each(function(){var c=a(this);$this=c.clone();-1<g.levels&&$this.find("ul").andSelf().filter(function(){return c.parents("ul").length+1>g.levels}).remove();$this.data("chart-source",
c);var f=a("<div class='"+g.chartClass+"'/>");g.interactive&&f.addClass("interactive");var b;$this.is("ul")?b=$this.find("li:first"):$this.is("li")&&(b=$this);b&&(n(b,f,0,0,g),f.find("div.node a").click(function(a){a.stopImmediatePropagation()}),g.replace&&g.container.empty(),g.container.append(f))})};a.fn.orgChart.defaults={container:a("body"),depth:-1,levels:-1,showLevels:-1,stack:!1,chartClass:"orgChart",hoverClass:"hover",nodeText:function(a){return a.clone().children("ul,li").remove().end().html()},
interactive:!1,fade:!1,speed:"slow",nodeClicked:function(){},copyClasses:!0,copyData:!0,copyStyles:!0,copyTitle:!0,replace:!0}})(jQuery);