2017-05-26 15 views
1

我目前正在嘗試Dygraphs(這似乎真的偉大的順便說一句!),但由於一些奇怪的原因,註釋功能將不適用於我,並且它也失敗了在jsFiddle版本完全相同的方式Dygraphs自己的註釋示例,因此這很可能是開發人員真正想要查看的錯誤/問題(!)。註解不起作用,即使在Dygraphs自己的jsFiddle示例中,爲什麼?

要重現(同樣的事情,在這兩個最新的Firefox和最新的Chrome發生):

1. 查看「註釋」例如,在Dygraphs畫廊,在這裏: http://dygraphs.com/gallery/#g/annotations 它工作得很好,看上去很不錯,像這樣:

Working annotations on Dygraphs gallery page

2. 按 「編輯中的jsfiddle」 按鈕,對於非常頁面上非常的例子。 你現在被髮送到jsFiddle,如果你按下「運行」按鈕,圖表本身(彩色曲線等)顯示得很好,,只顯示註釋「標誌」的「詞根」而註釋的文本內容全部顯示爲圖表左側的普通文本?!就像這樣:

Broken annotations on jsFiddle

好像某種CSS問題或與我相似的,對嗎?

由於這個例子是Dygraphs自己的例子,它也可以在自己的網站上運行,但不能在jsFiddle上運行,所以我猜,所有關於錯誤格式化數據或代碼的猜測都可以放開。它也發生在我自己的計算機上的所有我自己的Dygraphs圖表上,我嘗試對其進行註釋,但這個本機Dygraphs圖庫示例是一個更好的示例,可以從我的猜測中進行調查?

所以,我的問題當然是,爲什麼會發生這種情況,以及如何解決它以使註解工作並正確顯示?


此外:

讓我們把它更簡單,爲了沒有任何猶豫隔離問題。

這裏是我已經把我自己的本地磁盤上Dygraph註釋一個很簡單的例子(即作爲一個獨立的HTML文件):

<html> 
<head> 
<script type="text/javascript" src="dygraph.js"></script> 
<link rel="stylesheet" src="dygraph.css" /> 
</head> 
<body> 
<div id="test_chart" style="width:750px; height:350px;"></div> 

<script type="text/javascript"> 
    var test_annotations = [ 
    { 
     series: "TestCol1", 
     x: "2017-05-26", 
     shortText: "A", 
     text: "Test annotation", 
     cssClass: 'annotation' 
    } 
    ]; 

    testchart = new Dygraph(
    document.getElementById('test_chart'), 
    "Date,TestCol1\n" + 
    "2017-05-25,110\n" + 
    "2017-05-26,80\n" + 
    "2017-05-27,75\n", 
    {} 
); 
    testchart.setAnnotations(test_annotations); 
</script> 
</body> 
</html> 

當我打開這個文件(本地與文件://在Chrome中我的電腦上,其在同一目錄最新dygraph.js和dygraph.css),這是我得到:

Local example

正如你所看到的,完全一樣的問題,如上所述,在這裏出現,即只有「幹」的測試註釋在圖形本身中可見,而註釋文本(「A」)顯示在圖形的左側。

加載此文件後,Firebug控制檯爲空,加載任何圖像的任何嘗試(不成功或以其他方式)都無法在Firebug網絡選項卡中找到。

再說一次,這對我來說很像CSS定位問題,但我當然很可能是錯的?

這個問題的答案提供了對這個問題則是:

如何,在儘可能少的和簡單的改變/步驟有可能,我會得到這個地方例子的PoC代碼Dygraphs註釋工作打算,即顯示在圖中正確位置的正方形中的正方形內的註釋文本「A」(即,在「註釋詞幹」當前剛剛顯示的位置,就像在我上面的第一個screendump的Dygraphs頁面上的工作示例中所做的那樣在這個問題)?

回答

0

該圖庫示例從dygraphs.com加載圖像。當您在jsfiddle上加載演示時,它會嘗試從jsfiddle加載圖像,這不起作用。 dygraphs註釋工作正常,只是圖像文件丟失。

+0

感謝您的回覆!我的確懷疑缺少美元符號(和圖表的jsFiddle版本中的相關碎片圖像標記)是由於這個原因造成的,但是常規的方形註記文本框是否也是圖像?當我在jsFiddle中加載圖形時運行Firebug時,唯一嘗試(並失敗)的圖像加載是'dollar.png'?如果還有正常文本註釋所需的圖像,我在哪裏可以找到這些圖像? – QuestionOverflow

+0

請參閱我上面的問題文本,以避免任何和所有誤解。在這個非常簡單的本地示例中,應該如何更改以使其正確顯示測試註釋? – QuestionOverflow

+0

現在請在下面看到我自己的答案(包含有關此錯誤/問題的更多問題)。 – QuestionOverflow

0

看來我對CSS定位問題畢竟是正確的。

這些註釋通過Dygraphs呈現通過將以下的HTML頁面的DOM(這是在問題的測試我的本地示例代碼我測試註釋精確HTML以上,使用螢火蟲提取活):

<div style="font-size: 14px; left: 392.5px; top: 241.214px; width: 16px; height: 16px; color: rgb(0, 128, 128); border-color: rgb(0, 128, 128);" class="dygraph-annotation dygraphDefaultAnnotation dygraph-default-annotation annotation" title="Test annotation">A</div> 

如果我(由this SO question建議)CSS屬性position: relative添加到這個div(手動,使用螢火蟲),圖形突然看起來是這樣的:

Correct positioning

請參閱註釋文本現在已正確定位!它仍然遺漏了不透明的背景和彩色邊框,但我想這只是由於某些原因丟失了更多CSS屬性的結果?

那麼,讓我們來關注爲什麼我猜測註釋缺失CSS?

我最好的猜測是,dygraph.css文件在某些​​條件下沒有正確加載(顯然,在jsFiddle和本地計算機上,儘管它確實存在於與HTML文件和dygraph相同的目錄中。 JS)?或者我錯了?

註釋div應用CSS的Firebug轉儲似乎支持這一點。下面是螢火蟲的CSS我的本地實例的註釋DIV(還有同在的jsfiddle):

Non-working CSS

這裏是在對Dygraphs畫廊在工作的情況下同樣的事情CSS現場:

Working CSS

看到,從dygraph.css類在我的本地示例和例子的jsfiddle(即使在註釋div的HTML代碼的class屬性確實明確提到是完全缺失的,這可在上面可以看到),儘管如此CSS文件的確在dygraph.js文件所在的目錄中?

@danvk,你有什麼想法爲什麼發生這種情況,如果Dygraphs可以以某種方式修補以避免發生這種情況,並因此加載它應該用於註釋的所有CSS?

唯一的工作下鍋的解決方案,我可以找到的那一刻是轉儲dygraph.css內嵌的全部內容在HTML文件的<head>,像這樣:

<style> 
/** 
* Default styles for the dygraphs charting library. 
*/ 

.dygraph-legend { 
    position: absolute; 
    font-size: 14px; 
    z-index: 10; 
    width: 250px; /* labelsDivWidth */ 
    /* 
    dygraphs determines these based on the presence of chart labels. 
    It might make more sense to create a wrapper div around the chart proper. 
    top: 0px; 
    right: 2px; 
    */ 
    background: white; 
    line-height: normal; 
    text-align: left; 
    overflow: hidden; 
} 

... 

/* For y2-axis label */ 
.dygraph-label-rotate-right { 
    text-align: center; 
    /* See http://caniuse.com/#feat=transforms2d */ 
    transform: rotate(-90deg); 
    -webkit-transform: rotate(-90deg); 
    -moz-transform: rotate(-90deg); 
    -o-transform: rotate(-90deg); 
    -ms-transform: rotate(-90deg); 
} 
</style> 

之後,它終於工作精細:

enter image description here

增加:

看起來也像其他人一樣(1)(2)有關於加載CSS文件的這個一般問題。沒有任何接受的答案,既不是這個問題也不是Mozilla的支持線程,事實上,沒有任何一個建議的答案也適用於我。 WTF,這樣一個巨大的問題怎麼會一般是未知的/沒有答案的?另請注意,在Chrome和Firefox中以及在多臺計算機上都會發生同樣的情況,其中一些計算機之前從未打開過此文件,因此也不會涉及任何與緩存相關的奇怪效果。無論哪種方式,看起來這個bug都不在Dygraphs的範圍之內。

0

恐怕我遲到了派對,但它看起來問題仍然有效(或解決方法沒有很好的記錄)。我能有更好的位置估計加入index.html中:

<style> 
    .dygraph-annotation { 
     position : relative; 
     display:inline-block; 
    } 
</style> 

但是仍然註解沒有關注圖表得好: enter image description here

選項attachAtBottom:真加入註釋可能幫助這裏一點,但仍然註釋懸停圖(我猜這是因爲傳說採取一些地方)

1

設置 位置:絕對

爲我解決了這個問題。

相關問題