source: Dev/trunk/src/client/dojox/treemap/ScaledLabel.js @ 529

Last change on this file since 529 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 2.1 KB
Line 
1define(["dojo/_base/declare", "dojo/dom-geometry", "dojo/dom-construct", "dojo/dom-style"],
2        function(declare, domGeom, domConstruct, domStyle) {
3
4        return declare("dojox.treemap.ScaledLabel", null, {
5                // summary:
6                //              Specializes TreeMap to display scaled leaf labels instead of constant size labels.
7
8                onRendererUpdated: function(evt){
9                        if(evt.kind == "leaf"){
10                                var renderer = evt.renderer;
11                                // start back with default size
12                                var oldSize = domStyle.get(renderer, "fontSize");
13                                domStyle.set(renderer.firstChild, "fontSize", oldSize);
14                                oldSize = parseInt(oldSize);
15                                var hRatio = 0.75 * domGeom.getContentBox(renderer).w / domGeom.getMarginBox(renderer.firstChild).w;
16                                var vRatio = domGeom.getContentBox(renderer).h  / domGeom.getMarginBox(renderer.firstChild).h;
17                                var hDiff = domGeom.getContentBox(renderer).w - domGeom.getMarginBox(renderer.firstChild).w;
18                                var vDiff = domGeom.getContentBox(renderer).h - domGeom.getMarginBox(renderer.firstChild).h;
19                                var newSize = Math.floor(oldSize * Math.min(hRatio, vRatio));
20                                while(vDiff > 0 && hDiff > 0){
21                                        domStyle.set(renderer.firstChild, "fontSize", newSize + "px");
22                                        hDiff = domGeom.getContentBox(renderer).w - domGeom.getMarginBox(renderer.firstChild).w;
23                                        vDiff = domGeom.getContentBox(renderer).h - domGeom.getMarginBox(renderer.firstChild).h;
24                                        oldSize = newSize;
25                                        newSize += 1;
26                                }
27                                if(vDiff < 0 || hDiff < 0){
28                                        // back track
29                                        domStyle.set(renderer.firstChild, "fontSize", oldSize + "px");
30                                }
31                        }
32                },
33
34                createRenderer: function(item, level, kind){
35                        var renderer = this.inherited(arguments);
36                        if(kind == "leaf"){
37                                var p = domConstruct.create("div");
38                                domStyle.set(p, {
39                                        "position": "absolute",
40                                        "width": "auto"
41                                });
42                                domConstruct.place(p, renderer);
43                        }
44                        return renderer;
45                },
46               
47                styleRenderer: function(renderer, item, level, kind){
48                        if (kind != "leaf"){
49                                this.inherited(arguments);
50                        }else{
51                                domStyle.set(renderer, "background", this.getColorForItem(item).toHex());
52                                renderer.firstChild.innerHTML = this.getLabelForItem(item);
53                        }
54                }
55        });
56});
Note: See TracBrowser for help on using the repository browser.