2014-01-28 46 views
0

我想在删除最大值时在某些图中触发弹出式调整大小。这是我到目前为止有:DC.js - 在满足条件时触发弹性调整大小

dmsn = ndx.dimension(...) 
groupTotal = dmsn.group().reduceSum(...) 

row 
    .width(100) 
    .height(100) 
    .dimension(dmsn) 
    .group(groupTotal) 

document.addEventListener('mouseup',function(){ 
    setTimeout(function(e){ 
    newTop = groupTotal.top(1)[0].value; 
    ratio = newTop/origTop; 
    if(ratio < .1){ 
     row.elasticX(true); 
     dc.redrawAll('groupTotal'); 
    } else { 
     row.elasticX(false); 
     dc.redrawAll('groupTotal'); 
    } 
    },1); 
}, true); 

功能检查,看看新的最高值是否足够小,一个调整是非常有用的。

超时确保在应用过滤器后正确计算比率。然而,这也意味着应用新弹性的机会已经过去了。不幸的是,redrawAll似乎并没有在这里工作。

有关修复此实现或以其他方式达到此目的的任何建议?

回答

2

以下是如何做到这一点,对任何好奇的人。当最大电流条太小(或大)时,这导致轴的条件缩放比较有价值。

var currentMax = 0, 
    ratio, 
    chartMax = groupData.top(1)[0].value; // initialize with largest value 

row 
    .on('postRedraw', function(chart){ 
    currentMax = groupData.top(1)[0].value; // after redraw, capture largest val 
    ratio = currentMax/chartMax; 
    if(ratio < .1 || ratio > 1){ // check if bars are too small or too large 
     row.elasticX(true); 
     chartMax = currentMax; // always be sure to reset the chartMax 
     dc.redrawAll(); 
    } else { 
     row.elasticX(false); 
     chartMax = currentMax; 
    } 
    });