@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
1 lines • 13.5 kB
JavaScript
module.exports=function(i){var r={};function n(t){if(r[t])return r[t].exports;var e=r[t]={exports:{},id:t,loaded:!1};return i[t].call(e.exports,e,e.exports,n),e.loaded=!0,e.exports}return n.m=i,n.c=r,n.p="",n(0)}({0:function(t,e,i){t.exports=i(1191)},3:function(t,e){t.exports=function(){throw Error("define cannot be used indirect")}},1063:function(t,e){t.exports=require("./kendo.data")},1109:function(t,e){t.exports=require("./kendo.dataviz.themes")},1113:function(t,e){t.exports=require("./kendo.userevents")},1191:function(t,e,i){var r;i(3),i=[i(1063),i(1113),i(1109)],void 0===(e="function"==typeof(r=function(){var e={id:"dataviz.treeMap",name:"TreeMap",category:"dataviz",description:"The Kendo DataViz TreeMap",depends:["data","userevents","dataviz.themes"]},r=window.kendo.jQuery,o=void 0,d=Math,f=Array.isArray,s=window.kendo,v=s._outerHeight,l=s._outerWidth,t=s.Class,i=s.ui.Widget,h=s.template,a=s.deepExtend,p=s.data.HierarchicalDataSource,m=s.getter,g=s.dataviz,_=".kendoTreeMap",n="change",w="dataBound",y="itemCreated",x=Number.MAX_VALUE,k="mouseover"+_,C="mouseleave"+_,z="undefined",I=i.extend({init:function(t,e){s.destroy(t);r(t).empty();i.fn.init.call(this,t,e);this.wrapper=this.element;this._initTheme(this.options);this.element.addClass("k-widget k-treemap");this._setLayout();this._originalOptions=a({},this.options);this._initDataSource();this._attachEvents();s.notify(this,g.ui)},options:{name:"TreeMap",theme:"default",autoBind:true,textField:"text",valueField:"value",colorField:"color"},events:[w,y],_initTheme:function(t){var e=this,i=g.ui.themes||{},r=((t||{}).theme||"").toLowerCase(),n=(i[r]||{}).treeMap;e.options=a({},n,t)},_attachEvents:function(){this.element.on(k,this._mouseover.bind(this)).on(C,this._mouseleave.bind(this));this._resizeHandler=this.resize.bind(this,false);s.onResize(this._resizeHandler)},_setLayout:function(){if(this.options.type==="horizontal"){this._layout=new T(false);this._view=new H(this,this.options)}else if(this.options.type==="vertical"){this._layout=new T(true);this._view=new H(this,this.options)}else{this._layout=new S;this._view=new b(this,this.options)}},_initDataSource:function(){var t=this,e=t.options,i=e.dataSource;t._dataChangeHandler=t._onDataChange.bind(t);t.dataSource=p.create(i).bind(n,t._dataChangeHandler);if(i)if(t.options.autoBind)t.dataSource.fetch()},setDataSource:function(t){var e=this;e.dataSource.unbind(n,e._dataChangeHandler);e.dataSource=t.bind(n,e._dataChangeHandler);if(t)if(e.options.autoBind)e.dataSource.fetch()},_onDataChange:function(t){var e=t.node;var i=t.items;var r=this.options;var n,a;if(!e){this._cleanItems();this.element.empty();n=this._wrapItem(i[0]);this._layout.createRoot(n,l(this.element),v(this.element),this.options.type==="vertical");this._view.createRoot(n);this._root=n;this._colorIdx=0}else if(i.length){var o=this._getByUid(e.uid);o.children=[];i=new s.data.Query(i)._sortForGrouping(r.valueField,"desc");for(a=0;a<i.length;a++){n=i[a];o.children.push(this._wrapItem(n))}var h=this._view.htmlSize(o);this._layout.compute(o.children,o.coord,h);this._setColors(o.children);this._view.render(o)}for(a=0;a<i.length;a++)i[a].load();if(e)this.trigger(w,{node:e})},_cleanItems:function(){var t=this;t.angular("cleanup",function(){return{elements:t.element.find(".k-leaf div,.k-treemap-title,.k-treemap-title-vertical")}})},_setColors:function(t){var e=this.options.colors;var i=this._colorIdx;var r=e[i%e.length];var n,a;if(f(r))n=B(r[0],r[1],t.length);var o=false;for(var h=0;h<t.length;h++){a=t[h];if(!u(a.color))if(n)a.color=n[h];else a.color=r;if(!a.dataItem.hasChildren)o=true}if(o)this._colorIdx++},_contentSize:function(t){this.view.renderHeight(t)},_wrapItem:function(t){var e={};if(u(this.options.valueField))e.value=A(this.options.valueField,t);if(u(this.options.colorField))e.color=A(this.options.colorField,t);if(u(this.options.textField))e.text=A(this.options.textField,t);e.level=t.level();e.dataItem=t;return e},_getByUid:function(t){var e=[this._root];var i;while(e.length){i=e.pop();if(i.dataItem.uid===t)return i;if(i.children)e=e.concat(i.children)}},dataItem:function(t){var e=r(t).attr(s.attr("uid")),i=this.dataSource;return i&&i.getByUid(e)},findByUid:function(t){return this.element.find(".k-treemap-tile["+s.attr("uid")+"='"+t+"']")},_mouseover:function(t){var e=r(t.target);if(e.hasClass("k-leaf")){this._removeActiveState();e.removeClass("k-state-hover").addClass("k-state-hover")}},_removeActiveState:function(){this.element.find(".k-state-hover").removeClass("k-state-hover")},_mouseleave:function(){this._removeActiveState()},destroy:function(){i.fn.destroy.call(this);this.element.off(_);if(this.dataSource)this.dataSource.unbind(n,this._dataChangeHandler);this._root=null;s.unbindResize(this._resizeHandler);s.destroy(this.element)},items:function(){return r()},getSize:function(){return s.dimensions(this.element)},_resize:function(){var t=this._root;if(t){var e=this.element;var i=e.children();t.coord.width=l(e);t.coord.height=v(e);i.css({width:t.coord.width,height:t.coord.height});this._resizeItems(t,i)}},_resizeItems:function(t,e){if(t.children&&t.children.length){var i=e.children(".k-treemap-wrap").children();var r,n;this._layout.compute(t.children,t.coord,{text:this._view.titleSize(t,e)});for(var a=0;a<t.children.length;a++){r=t.children[a];n=i.filter("["+s.attr("uid")+"='"+r.dataItem.uid+"']");this._view.setItemSize(r,n);this._resizeItems(r,n)}}},setOptions:function(t){var e=t.dataSource;t.dataSource=o;this._originalOptions=a(this._originalOptions,t);this.options=a({},this._originalOptions);this._setLayout();this._initTheme(this.options);i.fn._setEvents.call(this,t);if(e)this.setDataSource(p.create(e));if(this.options.autoBind)this.dataSource.fetch()}}),S=t.extend({createRoot:function(t,e,i){t.coord={width:e,height:i,top:0,left:0}},leaf:function(t){return!t.children},layoutChildren:function(t,e){var i=e.width*e.height;var r=0,n=[],a;for(a=0;a<t.length;a++){n[a]=parseFloat(t[a].value);r+=n[a]}for(a=0;a<n.length;a++)t[a].area=i*n[a]/r;var o=this.layoutHorizontal()?e.height:e.width;var h=[t[0]];var s=t.slice(1);this.squarify(s,h,o,e)},squarify:function(t,e,i,r){this.computeDim(t,e,i,r)},computeDim:function(t,e,i,r){if(t.length+e.length==1){var n=t.length==1?t:e;this.layoutLast(n,i,r);return}if(t.length>=2&&e.length===0){e=[t[0]];t=t.slice(1)}if(t.length===0){if(e.length>0)this.layoutRow(e,i,r);return}var a=t[0];if(this.worstAspectRatio(e,i)>=this.worstAspectRatio([a].concat(e),i))this.computeDim(t.slice(1),e.concat([a]),i,r);else{var o=this.layoutRow(e,i,r);this.computeDim(t,[],o.dim,o)}},layoutLast:function(t,e,i){t[0].coord=i},layoutRow:function(t,e,i){if(this.layoutHorizontal())return this.layoutV(t,e,i);else return this.layoutH(t,e,i)},orientation:"h",layoutVertical:function(){return this.orientation==="v"},layoutHorizontal:function(){return this.orientation==="h"},layoutChange:function(){this.orientation=this.layoutVertical()?"h":"v"},worstAspectRatio:function(t,e){if(!t||t.length===0)return x;var i=0,r=0,n=x;for(var a=0;a<t.length;a++){var o=t[a].area;i+=o;n=n<o?n:o;r=r>o?r:o}return d.max(e*e*r/(i*i),i*i/(e*e*n))},compute:function(t,e,i){if(!(e.width>=e.height&&this.layoutHorizontal()))this.layoutChange();if(t&&t.length>0){var r={width:e.width,height:e.height-i.text,top:0,left:0};this.layoutChildren(t,r)}},layoutV:function(t,e,i){var r=this._totalArea(t),n=0;e=c(r/e);for(var a=0;a<t.length;a++){var o=c(t[a].area/e);t[a].coord={height:o,width:e,top:i.top+n,left:i.left};n+=o}var h={height:i.height,width:i.width-e,top:i.top,left:i.left+e};h.dim=d.min(h.width,h.height);if(h.dim!=h.height)this.layoutChange();return h},layoutH:function(t,e,i){var r=this._totalArea(t);var n=c(r/e),a=i.top,o=0;for(var h=0;h<t.length;h++){t[h].coord={height:n,width:c(t[h].area/n),top:a,left:i.left+o};o+=t[h].coord.width}var s={height:i.height-n,width:i.width,top:i.top+n,left:i.left};s.dim=d.min(s.width,s.height);if(s.dim!=s.width)this.layoutChange();return s},_totalArea:function(t){var e=0;for(var i=0;i<t.length;i++)e+=t[i].area;return e}}),b=t.extend({init:function(t,e){this.options=a({},this.options,e);this.treeMap=t;this.element=r(t.element);this.offset=0},titleSize:function(t,e){var i=e.children(".k-treemap-title");return i.height()||0},htmlSize:function(t){var e=this._getByUid(t.dataItem.uid);var i={text:0};if(t.children){this._clean(e);var r=this._getText(t);if(r){var n=this._createTitle(t);e.append(n);this._compile(n,t.dataItem);i.text=n.height()}e.append(this._createWrap());this.offset=(l(e)-e.innerWidth())/2}return i},_compile:function(t,e){this.treeMap.angular("compile",function(){return{elements:t,data:[{dataItem:e}]}})},_getByUid:function(t){return this.element.find(".k-treemap-tile["+s.attr("uid")+"='"+t+"']")},render:function(t){var e=this._getByUid(t.dataItem.uid);var i=t.children;if(i){var r=e.find(".k-treemap-wrap");for(var n=0;n<i.length;n++){var a=i[n];var o=this._createLeaf(a);r.append(o);this._compile(o.children(),a.dataItem);this.treeMap.trigger(y,{element:o})}}},createRoot:function(t){var e=this._createLeaf(t);this.element.append(e);this._compile(e.children(),t.dataItem);this.treeMap.trigger(y,{element:e})},_clean:function(t){this.treeMap.angular("cleanup",function(){return{elements:t.children(":not(.k-treemap-wrap)")}});t.css("background-color","");t.removeClass("k-leaf");t.removeClass("k-inverse");t.empty()},_createLeaf:function(t){return this._createTile(t).css("background-color",t.color).addClass("k-leaf").toggleClass("k-inverse",this._tileColorBrightness(t)>180).toggle(t.value!==0).append(r("<div></div>").html(this._getText(t)))},_createTile:function(t){var e=r("<div class='k-treemap-tile'></div>");this.setItemSize(t,e);if(u(t.dataItem)&&u(t.dataItem.uid))e.attr(s.attr("uid"),t.dataItem.uid);return e},_itemCoordinates:function(t){var e={width:t.coord.width,height:t.coord.height,left:t.coord.left,top:t.coord.top};if(e.left&&this.offset)e.width+=this.offset*2;else e.width+=this.offset;if(e.top)e.height+=this.offset*2;else e.height+=this.offset;return e},setItemSize:function(t,e){var i=this._itemCoordinates(t);e.css({width:i.width,height:i.height,left:i.left,top:i.top})},_getText:function(t){var e=t.text;if(this.options.template)e=this._renderTemplate(t);return e},_renderTemplate:function(t){var e=h(this.options.template);return e({dataItem:t.dataItem,text:t.text})},_createTitle:function(t){return r("<div class='k-treemap-title'></div>").append(r("<div></div>").html(this._getText(t)))},_createWrap:function(){return r("<div class='k-treemap-wrap'></div>")},_tileColorBrightness:function(t){return q(t.color)}}),T=t.extend({createRoot:function(t,e,i,r){t.coord={width:e,height:i,top:0,left:0};t.vertical=r},init:function(t){this.vertical=t;this.quotient=t?1:0},compute:function(t,e,i){if(t.length>0){var r=e.width;var n=e.height;if(this.vertical)n-=i.text;else r-=i.text;var a={width:r,height:n,top:0,left:0};this.layoutChildren(t,a)}},layoutChildren:function(t,e){var i=e.width*e.height;var r=0;var n=[];var a;for(a=0;a<t.length;a++){var o=t[a];n[a]=parseFloat(t[a].value);r+=n[a];o.vertical=this.vertical}for(a=0;a<n.length;a++)t[a].area=i*n[a]/r;this.sliceAndDice(t,e)},sliceAndDice:function(t,e){var i=this._totalArea(t);if(t[0].level%2===this.quotient)this.layoutHorizontal(t,e,i);else this.layoutVertical(t,e,i)},layoutHorizontal:function(t,e,i){var r=0;for(var n=0;n<t.length;n++){var a=t[n];var o=a.area/(i/e.width);a.coord={height:e.height,width:o,top:e.top,left:e.left+r};r+=o}},layoutVertical:function(t,e,i){var r=0;for(var n=0;n<t.length;n++){var a=t[n];var o=a.area/(i/e.height);a.coord={height:o,width:e.width,top:e.top+r,left:e.left};r+=o}},_totalArea:function(t){var e=0;for(var i=0;i<t.length;i++)e+=t[i].area;return e}}),H=b.extend({htmlSize:function(t){var e=this._getByUid(t.dataItem.uid);var i={text:0,offset:0};if(t.children){this._clean(e);var r=this._getText(t);if(r){var n=this._createTitle(t);e.append(n);this._compile(n,t.dataItem);if(t.vertical)i.text=n.height();else i.text=n.width()}e.append(this._createWrap());this.offset=(l(e)-e.innerWidth())/2}return i},titleSize:function(t,e){var i;if(t.vertical)i=e.children(".k-treemap-title").height();else i=e.children(".k-treemap-title-vertical").width();return i||0},_createTitle:function(t){var e;if(t.vertical)e=r("<div class='k-treemap-title'></div>");else e=r("<div class='k-treemap-title-vertical'></div>");return e.append(r("<div></div>").html(this._getText(t)))}});function A(t,e){if(e===null)return e;var i=m(t,true);return i(e)}function u(t){return typeof t!==z}function B(t,e,i){var r=M(t);var n=M(e);var a=q(t)-q(e)<0;var o=[];o.push(t);for(var h=0;h<i;h++){var s={r:D(r.r,n.r,h,i,a),g:D(r.g,n.g,h,i,a),b:D(r.b,n.b,h,i,a)};o.push(F(s))}o.push(e);return o}function D(t,e,i,r,n){var a=d.min(d.abs(t),d.abs(e));var o=d.max(d.abs(t),d.abs(e));var h=(o-a)/(r+1);var s=h*(i+1);var l;if(n)l=a+s;else l=o-s;return l}function F(t){return"#"+R(t.r)+R(t.g)+R(t.b)}function M(t){t=t.replace("#","");var e=L(t);return{r:U(e.r),g:U(e.g),b:U(e.b)}}function R(t){var e=d.round(t).toString(16).toUpperCase();if(e.length===1)e="0"+e;return e}function L(t){var e=t.length;var i={};if(e===3){i.r=t[0];i.g=t[1];i.b=t[2]}else{i.r=t.substring(0,2);i.g=t.substring(2,4);i.b=t.substring(4,6)}return i}function U(t){return parseInt(t.toString(16),16)}function q(t){var e=0;if(t){t=M(t);e=d.sqrt(.241*t.r*t.r+.691*t.g*t.g+.068*t.b*t.b)}return e}function c(t){var e=d.pow(10,4);return d.round(t*e)/e}return g.ui.plugin(I),window.kendo})?r.apply(e,i):r)||(t.exports=e)}});