2016-12-16 5 views
3

Mit ChartJS 2.4, bin ich für eine Reihe von Datensätzen zwischen zwei Daten abfragt:Diagramm JS - gesetzt Beginn der Woche für x-Achse Zeitreihe

 startDate: '2016-11-05T18:06:17.762Z' 
     endDate: '2016-12-05T18:06:17.762Z' 

die Waage Config gegeben, möchte ich die Woche beginnen auf das ausgewählte Datum des Benutzers Bereich ...

isoWeekday: true, 
type: 'time', 
unitStepSize: 1, 
time: { 
    displayFormats: { 
    'week': 'MMM DD' 
    }, 
    unit: 'week', 
}, 

Dies wird mir ein verkürztes graph:

enter image description here

So

, wenn keine Datensätze für das Startdatum zurückgegeben werden, 11/5, ich manuell Daten einfügen am Anfang des Arrays mit dem Wert 0 nur um sicherzustellen, dass ab heute der Benutzer erwartet wird angezeigt:

if (scope.chart_data.labels.indexOf('11/5') == -1) { 
    scope.chart_data.labels.unshift('11/5'); 
    scope.chart_data.datasets[0].data.unshift(0); 
    } 

Außer tun dies awkardly die Grafik erstreckt sich ohne Daten von einer Woche aus ... und nicht startet die Woche auf 11/5:

enter image description here

Wie kann ich das Diagramm auf 11/5 starten, oder je nachdem, welcher Woche ich will, und haben die unit: week c onfig Inkrementieren von dort?

Wenn ich unit: week entfernen und verwenden unitStepSize: 7 manuell die Schrittgröße zu setzen, tut es das, was ich am Anfang wollen, aber aus irgendeinem Grund mushes im letzten Label:

enter image description here

Mit minmax in das time Objekt,

max: scope.end_display, // 12/05/2016 
    min: scope.start_display // 11/05/2016 

ich:

enter image description here

Warum startet das Liniendiagramm am 11/5 nicht?

Labels:

["11/05/2016", "11/06/2016", "11/07/2016", "11/08/2016", "11/09/2016", "11/13/2016", "11/15/2016", "11/16/2016", "11/17/2016", "11/20/2016", "11/27/2016", "11/28/2016", "11/29/2016", "12/01/2016", "12/04/2016"] 

Daten:

[0, 3, 2, 1, 1, 7, 3, 2, 26, 2, 6, 3, 1, 1, 1] 

Antwort

0

Sie sollten Achseinstellungen ändern Maximal- und Minimalwert einzustellen (Start-Enddatum Bereich wahrscheinlich). Ein Beispiel (NB! Verwenden Sie Ihre eigenen erforderlichen Formate):

time: { 
    unit: 'month', 
    displayFormats: { 
    month: 'MM' 
    }, 
    max: moment(data.end_date).format('MM'), 
    min: monent(data.start_date).format('MM') 
} 
+0

Danke dafür, aber es verursacht das gleiche Problem. Siehe oben Bearbeiten – Growler

+0

Sie sagten, es beginnt nicht am 11/5, aber in dem Bildschirmschoner, den Sie bereitgestellt haben, tut es? Könntest du versuchen, eine Geige zu schaffen? –