2011-08-21 11 views
6

Jak można wypełnić oś X datami z wartościami dat "od" i "do"?Wypełniać Highcharts X-Axis z datami od do i Od

Zasadniczo użytkownik wprowadzi datę "od" i "do" w moim interfejsie internetowym HTML; na przykład: 24/08/2011 - 28/08/2011

Będzie to za pośrednictwem pól tekstowych HTML, których wartości zostaną przechwycone przy użyciu jQuery, gdy użytkownik naciśnie przycisk "Wyświetl wykres".

Chciałbym utworzyć wykres spline, którego oś X zaczyna się 2 dni przed datą "od" i kończy się 2 dni po dacie "do".

Tak więc w powyższym przykładzie, użytkownik zapewnia:

from -> 24/08/2011 
to -> 28/08/2011 

dlatego

x-axis start -> 22/08/2011 
x-axis ends -> 30/08/2011 

Ja też chcę go mieć odstępach 24-godzinnych wyświetlane jako ich odpowiednich terminach. Na osi x powinna wyglądać mniej więcej tak:

| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|___________________________________________________ 
    |  |  |  |  |  |  |  |  | 
22/08 23/08 24/08 25/08 26/08 27/08 28/08 29/08 30/08 

EDIT:

znalazłem następujący kod:

series: [{ 
     type: 'spline', 
     name: 'USD to EUR', 
     pointInterval: 24 * 3600 * 10, 
     pointStart: Date.UTC(<?php echo($year); ?>, 0, <?php echo($day);?>), 
     data: [ 
      0.8446, 0.8445, 0.8444 
    ] 
     }] 

ale ja po prostu nie może dowiedzieć się, jak HighCharts przyrównuje przedziałów czasowych do części danych .. Wiem oczywiście, że ma to związek z pointInterval ...

Mogę zgadywać, że 24 * 3600 to liczba sekund w ciągu dnia, ale jaka jest * 10? Jak mogę wyświetlać dokładnie 24-godzinne interwały?

+2

Ultra-niejasne pytanie. Potrzebujesz MOAR INFOZ – adlawson

+0

Rozumiesz swój problem, ale nie mamy :) Odejdź na dziesięć minut, a następnie spójrz na to jeszcze raz, a następnie edytuj, aby zawierał nieco więcej kontekstu. Wiem, że trudno jest zapytać, kiedy jesteś w środku czegoś i masz zwiększone poczucie pilności. –

+0

@Tim, co ja muszę wyjaśnić? Mam minimalne i maksymalne zakresy dostarczone mi z przodu. Chcę je wprowadzić do wysokogatunkowych i ustawić interwały jako dni i automatycznie zapełniać między datami ... – user559142

Odpowiedz

10

Oto niektóre odniesienia, które powinny ci pomóc.

stworzył także próbkę jsfiddle, aby pomóc Ci zacząć.

OśX

xAxis: { 
    type: "datetime", 
    dateTimeLabelFormats: { 
     day: '%m-%d' 
    }, 
    tickInterval: 24 * 3600 * 1000, 
    min: Date.UTC(<?php echo $date_from;?>), 
    max: Date.UTC(<?php echo $date_to;?>) 
} 

Zasadniczo, co to robi jest ustawiony typ OśX do „datetime” więc tickInterval rozumie, że to wszystko jest zwiększany przez 86400000 milliseconds, a także ustawić format OśX oparciu na wymaganym date format.
W takim przypadku $date_from i $date_to powinny wyglądać tak od strony PHP obsługującej przesyłanie formularzy.

$date_from = date("Y, m, d",strtotime($_POST['from']) - 2*86400); 
$date_to = date("Y, m, d",strtotime($_POST['to']) + 2*86400); 
+0

Pracuję teraz nad higcharts z selektorem zakresu dat. Zamierzałem użyć AJAX, aby wykonywać nowe połączenia dla tablic JSON'a, usuwać i resetować dane. Używając metody w twojej odpowiedzi, mogę załadować wszystkie dane do serii, a następnie ustawić minimalną datę na to, co znajduje się w moim wyborze zakresu dat i przerysować tabelę lub odświeżyć ją? – Anagio

+0

@Anagio Możesz sprawdzić ich API, myślę, że to powinno działać dla ciebie, [http://api.highcharts.com/highcharts#Chart.redraw()](http://api.highcharts.com/highcharts# Chart.redraw()). Tak, myślę, że możesz załadować zmiany i zaktualizować poprawne pola/parametry (nie rzeczywisty DOM dla wykresu), a następnie przerysować go. – ace