簡體   English   中英

Highcharts列范圍日期圖表

[英]Highcharts columnrange date chart

我的目標是制作一個跟蹤用戶活動的圖表。 我希望它在首次登錄時以及上次登錄時進行繪圖。

我傳入此函數的數據( var refarray = [...data here...] )是字符串格式,這意味着我需要將從數據庫中提供給我的日期解析為日期格式,或者我認為。 下面你會看到我的嘗試。

function hc_first_last_logon(selector, refarray){
var categories = [];
var Dat = [];

for(var i = 0; i<refarray.length; i++){    // store all user names and data
    categories.push(refarray.name)
    Dat.push([Date.parse(refarray.FirstLogon), Date.parse(refarray.LastLogon)])
}
//console.log(Dat) returns date time objects as expected
var def = {
    chart: { type: 'columnrange', inverted: true },
    legend: { enabled: false},
    title:{ text: "First and Last Log-on"},
    xAxis:{ categories: categories, title:{text: "User"}},
    yAxis:{ type: 'datetime' },
    series:[{name: "First and Last Log-on", data: Dat}]
};
var div = $('#' + selector);
console.log(div);
div.highcharts(def);
return def;}

我的意圖是這個圖表是多功能的,允許我選擇任意數量的不同用戶,並在我點擊我的html頁面上的刷新按鈕時獲取圖表(它查詢數據庫並將數據發送到此功能)。

我懷疑我的問題與日期變量Dat ,因為字符串和日期變量類型似乎不是highcharts的可接受數據輸入。

這是我在返回的代碼中獲得的錯誤的屏幕截圖。 10x2矩陣幾乎完全相同,所以我只包含一行。 錯誤#17對應於不可接受的數據類型,這證實了我的懷疑。

控制台結果

有什么建議么?

更新:我包括highcharts-more.js,現在擺脫了上面提到的錯誤。 日期范圍仍有點偏差。 下面是現在正在發生的事情的圖像。

當前圖表情況

感謝@GrzegorzBlachliński和他的建議,我能夠找到問題並解決它。 這是出了什么問題:

1)我沒有加載highcharts-more.js包含此文件解決了Highcharts錯誤17。

2)日期需要從1970年1月1日起以毫秒為單位。 輕松修復生成的日期(datevar).getTime()。

3)我沒有工具提示格式化程序。 我復制了一個完成工作的互聯網,它工作了!

以下是感興趣的人的代碼:

function hc_first_last_logon(selector, refarray){
var categories = [];
var Dat = [];

for(var i = 0; i<refarray.length; i++){    // store all user names and data
    categories.push(refarray.name)
    Dat.push([Date.parse(refarray.FirstLogon).getTime(), Date.parse(refarray.LastLogon)].getTime())
}
//console.log(Dat) returns date time objects as expected
var def = {
    chart: { type: 'columnrange', inverted: true },
    legend: { enabled: false},
    title:{ text: "First and Last Log-on"},
    xAxis:{ categories: categories, title:{text: "User"}},
    yAxis:{ type: 'datetime' },
    tooltip: {
        formatter: function() {
            return new Date(this.point.low).toUTCString().substring(0, 22) + ' - ' + new Date(this.point.high).toUTCString().substring(0, 22)
        }
    },
    series:[{name: "First and Last Log-on", data: Dat}]
};
var div = $('#' + selector);
console.log(div);
div.highcharts(def);
return def;}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM