2017-04-24 33 views
2

我正在角度和谷歌图表做一个应用程序,我有一个从GraphQL中提取的数据返回一个数组与日期和两个值,第一行对应于数组中的字段名称:谷歌图表格式字符串值如日期

myArray = [ 
     ["Date", "upx", "upn"], 
     ["2017-02-01", 0.031, 2], 
     ["2017-02-02", 0.051, 1], 
     ["2017-02-03", 0.041, 6], 
    ] 

获得从graphQL数据后,我具有类似于前面的代码数组的数组,我此数组转换为数据表与谷歌可视化arrayToDataTable:

let data = google.visualization.arrayToDataTable(myArray); 

我有结构的文件为每个字符指定模式格式化程序像这个日期栏的T和列位置:

google: { 
    type: 'LineChart', 
    options: { 
    isStacked: true,  
    hAxis: { 
     title: 'Date', 
     type: 'date', 
     format: 'MMM/dd/yy' 
    }, 
    vAxis: { 
     title: 'Absenteeism', 
     format: 'percent', 
     gridlines: { 
     count: 10 
     }, 
     step: 1, 
    } 
    }, 
    formatters: { 
     date: [ 
     { 
      columnNum: 0, 
      pattern: '"MMM/yyyy" 
     } 
     ], 
     number: [ 
     { 
      columnNum: 1, 
      pattern: '#.##', 
      fractionDigits: 2 
     }  
     ] 
    } 
} 

所以我通过这个配置功能绘制图表:

<div [chartData]="data" [chartFormatters]="google.formatters" [chartOptions]="google.options" [chartType]="google.type" GoogleChart></div> 

现在我想CONVER的字符串日期,但没有按”将不起作用:

for (var formatType in chartFormatters) { 
    switch (formatType) { 
     case 'number': 
     chartFormatters[formatType].forEach(ItemFormatter => { 
      let formatter = new google.visualization.NumberFormat(ItemFormatter); 
      formatter.format(data, ItemFormatter.columnNum); 
     }); 
     break; 
     case 'date':   
     chartFormatters[formatType].forEach(ItemFormatter => {    
      let formatter = new google.visualization.DateFormat(ItemFormatter); 
      formatter.format(data, ItemFormatter.columnNum); 
     }); 
     break; 
     default: 
     break; 
    } 
    } 

我怎样才能字符串转换为日期格式在我的第一阵列,我的问题是,我有很多疑问从graphql返回类似的数据使用相同的功能的角度来绘制图表,但日期字段不存在于所有结果中,或者不在所有查询的相同位置。

回答

2

在日期列中的值需要转化为实际日期,

之前格式化会工作,该阵列将需要看​​起来像......

myArray = [ 
    ["Date", "upx", "upn"], 
    [new Date("2017-02-01"), 0.031, 2], 
    [new Date("2017-02-02"), 0.051, 1], 
    [new Date("2017-02-03"), 0.041, 6] 
]; 
+0

谢谢@whiteHat,我问题是,该数组来自graphql,我可以改变日期字符串cuz的格式其实我不知道日期字段在哪里,在0或2或3数组中的索引。 – xzegga

+0

我会尝试一种格式化您的答案 – xzegga