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