2014-01-10 39 views
1

我使用的flot.tooltip插件爲flot,我的數據是時間序列。用戶可以選擇要繪製的數據的時間範圍(從7天到'所有數據'有7個不同的步驟),並且相應地重新格式化X軸 - '1月3日,1月4日等',如果7天,'' 1月,2月等,如果1年,等等。使用flot.tooltip動態時間格式

問題是,當使用工具提示時,日期不會格式化,因爲它只是獲取原始unix時間戳,在工具提示中給我輸出如138887...

有一個時間格式選項,但由於我的數據集可以由用戶更改,此選項不起作用。有沒有辦法用flot.tooltip插件動態格式化時間戳數據?

目前有關的代碼如下:

tooltip: true, 
tooltipOpts: { 
    content: function(label, xval, yval) { 
    var section = $("#select-buttons").find('li.selected a')[0].innerHTML; 
    switch (section) { 
    case "Country": 
     return xval + ':\n ' + yval + ' users from ' + label 
     break; 
    ... 
    } 
    }, 
} 

解決方案:

我不得不接受的答案改變了一些東西,最主要的是plot.getXAxes()>plot.getAxes().xaxis。此外,我必須創建一個名爲變量的情節,所以我可以訪問plot.getAxes().xaxis,然後在最後調用plot.draw(); - 在最初的$.plot(...)剛好在函數內部。

回答

2

您必須自己應用格式。像這樣的事情在content回調:

tooltipOpts: { 
    content: function(label, xval, yval, flotItem){ 
     var xAxis = plot.getXAxes(); 
     var range = (xAxis.max - xAxis.min); 

     if (range > 3.15569e10){ 
      // range is larger than a year, just show year 
      return $.plot.formatDate(new Date(xval), '%Y'); 

     }else if (range > 2.62974e9){ 
      // range is less than a year, larger than a month, show month names 
      return $.plot.formatDate(new Date(xval), '%m'); 

     }else if (range > 604800000){          
      // range is less than a month, larger than a week 
      etc... 

     }else if (range > 86400000){ 
      // range is less than a week, larger than a day 
      etc... 

     }else{ 
      etc... 
     } 

    } 
}, 

我使用弗洛數據從jquery.flot.time.js格式化功能,如果是不夠先進爲您的需求,我建議古老moment.js.

+0

歡呼聲,那工作。我不得不改變一些小的東西,最着名的是'plot.getXAxes()'''plot.getAxes()。xaxis',但我會將它們包含在我的OP中,以防止其他人解決此問題。再次感謝! – dax