polardbxengine/storage/ndb/mcc/frontend/dojo/dojox/treemap/ScaledLabel.js.uncompressed.js

56 lines
2.1 KiB
JavaScript

define("dojox/treemap/ScaledLabel", ["dojo/_base/declare", "dojo/dom-geometry", "dojo/dom-construct", "dojo/dom-style"],
function(declare, domGeom, domConstruct, domStyle) {
return declare("dojox.treemap.ScaledLabel", null, {
// summary:
// Specializes TreeMap to display scaled leaf labels instead of constant size labels.
onRendererUpdated: function(evt){
if(evt.kind == "leaf"){
var renderer = evt.renderer;
// start back with default size
var oldSize = domStyle.get(renderer, "fontSize");
domStyle.set(renderer.firstChild, "fontSize", oldSize);
oldSize = parseInt(oldSize);
var hRatio = 0.75 * domGeom.getContentBox(renderer).w / domGeom.getMarginBox(renderer.firstChild).w;
var vRatio = domGeom.getContentBox(renderer).h / domGeom.getMarginBox(renderer.firstChild).h;
var hDiff = domGeom.getContentBox(renderer).w - domGeom.getMarginBox(renderer.firstChild).w;
var vDiff = domGeom.getContentBox(renderer).h - domGeom.getMarginBox(renderer.firstChild).h;
var newSize = Math.floor(oldSize * Math.min(hRatio, vRatio));
while(vDiff > 0 && hDiff > 0){
domStyle.set(renderer.firstChild, "fontSize", newSize + "px");
hDiff = domGeom.getContentBox(renderer).w - domGeom.getMarginBox(renderer.firstChild).w;
vDiff = domGeom.getContentBox(renderer).h - domGeom.getMarginBox(renderer.firstChild).h;
oldSize = newSize;
newSize += 1;
}
if(vDiff < 0 || hDiff < 0){
// back track
domStyle.set(renderer.firstChild, "fontSize", oldSize + "px");
}
}
},
createRenderer: function(item, level, kind){
var renderer = this.inherited(arguments);
if(kind == "leaf"){
var p = domConstruct.create("div");
domStyle.set(p, {
"position": "absolute",
"width": "auto"
});
domConstruct.place(p, renderer);
}
return renderer;
},
styleRenderer: function(renderer, item, level, kind){
if (kind != "leaf"){
this.inherited(arguments);
}else{
domStyle.set(renderer, "background", this.getColorForItem(item).toHex());
renderer.firstChild.innerHTML = this.getLabelForItem(item);
}
}
});
});