2017-02-13 3 views
0

Also die kurze Version der Frage, gibt es eine Möglichkeit, nur einen bestimmten Teil eines Datumsfeldeintrags in einem Modell anzuzeigen?So können Sie einzelne Teile eines Datumseintrags auflisten

Beispiel: Ich gebe den 13.02.2017 als Eintrag ein, aber auf einer separaten Seite möchte ich nur den Tag, den Monat oder das Jahr sehen? Nicht die ganze Sache.

Längere Erklärung.

ich den folgenden Code mit einem in conjuncture bin mit Google charts script (see previous question) eine Zeitleiste zu machen:

function showChart(widget){ 
    google.charts.load('current', {'packages':['timeline']}); 
    function drawChart() { 
     var container = widget.getElement(); 
     var chart = new google.visualization.Timeline(container); 
     var dataTable = new google.visualization.DataTable(); 
     dataTable.addColumn({ type: 'string', id: 'President' }); 
     dataTable.addColumn({ type: 'date', id: 'Start' }); 
     dataTable.addColumn({ type: 'date', id: 'End' }); 
     dataTable.addRows([ 
      [ 'Washington', new Date(1789, 3, 30), new Date(1797, 2, 4) ], 
      [ 'Adams',  new Date(1797, 2, 4), new Date(1801, 2, 4) ], 
      [ 'Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]); 
     chart.draw(dataTable); 
    } 
    google.charts.setOnLoadCallback(drawChart); 
} 

Wenn ich hinzufügen/eine Variable definiere ich die Etiketten für die Zeilen mit Daten von meinem Modell ersetzen . Beispiel: Raumname

function showChart(widget){ 
     google.charts.load('current', {'packages':['timeline']}); 
     function drawChart() { 
      var container = widget.getElement(); 
      var chart = new google.visualization.Timeline(container); 
      var dataTable = new google.visualization.DataTable(); 
      var RoomName = app.datasources.TestModel.item.RoomName; 
      dataTable.addColumn({ type: 'string', id: 'President' }); 
      dataTable.addColumn({ type: 'date', id: 'Start' }); 
      dataTable.addColumn({ type: 'date', id: 'End' }); 
      dataTable.addRows([ 
       [ 'RoomName', new Date(1789, 3, 30), new Date(1797, 2, 4) ], 
       [ 'Adams',  new Date(1797, 2, 4), new Date(1801, 2, 4) ], 
       [ 'Jefferson', new Date(1801, 2, 4), new Date(1809, 2, 4) ]]); 
      chart.draw(dataTable); 
     } 
     google.charts.setOnLoadCallback(drawChart); 
    } 

Ich möchte in den gleichen mit dem Check zu tun und Out Daten ein, aber die neue Option Datum hat das Jahr, Monat und Tag aufgeteilt in 3 Variablen (Beispiel oben: new Date (1789, 3, 30). Also kann ich nicht einfach app.datasources.TestModel.item.CheckIn verwenden.

Gibt es eine Möglichkeit, ich kann app machen zu app.datasources.TestModel.item.CheckIn (Jahr), app.datasources.TestModel.item.CheckIn (Monat), app.datasources.TestModel.item.CheckIn (Tag)?

Vielen Dank für die Hilfe!

+0

Wenn Sie Bindungen verwenden, werde ich mit Datum Transformator vorschlagen https://developers.google.com/appmaker/scripting/api/transformers # formatDate, für den Fall, dass Sie Werte mithilfe von script ... einstellen, können Sie versuchen, Ihrem Spaltenbeschreibungsmuster die dritte Eigenschaft hinzuzufügen (https://developers.google.com/chart/interactive/docs/reference#DataTable_addColumn). –

Antwort

1

Wenn Sie Termine in Ihrem Modell zu speichern, können Sie das Datum in seine Bestandteile aufgespalten Javascript verwenden, mit date.getYear()+1900, date.getMonth()+1 und date.getDate()

Aber es gibt keinen Grund, dies zu tun, die von der Grafik-API akzeptiert Termine sind Regelmäßige Daten, nur weil sie in einem bestimmten Format angezeigt werden, bedeutet nicht, dass Sie dasselbe tun müssen.

dataTable.addRows([ 
       [ 'RoomName', startDate, endDate ], 

wo startDate und endDate aus dem Modell kommen funktioniert genauso gut

+0

Danke Tony! –

+0

Noch eine Frage: Gibt es für die Optionen startDate und endDate eine Möglichkeit, sie so zu filtern, dass sie startDate für Room1, dann startDate für Room2 usw. anzeigen? Ich wollte ursprünglich eine neue Datenquelle erstellen und eine Abfrage verwenden, um den RoomName zu filtern, aber dann wurde mir klar, dass das nicht funktioniert, weil sich die Datenquelle für startDate/endDate dann von dem HTML-Widget unterscheidet. Ist das sinnvoll? –

Verwandte Themen