2013-10-14 2 views
1

Google 스프레드 시트의 일부 데이터를 표시하기 위해 Google 차트를 사용하고 있습니다. 이것은 내 코드의 한 부분입니다.Chartwrapper 클래스를 사용할 때 날짜 유형 열 정렬

var queryurl = <link to the Google spreadsheet>; 

function drawVisualization() { 
    var query = new google.visualization.Query(queryurl); 

    // Send the query with a callback function. 
    query.send(handleQueryResponse); 
} 

function handleQueryResponse(response) { 

// Prepare the data 
var data = response.getDataTable(); 

var table = new google.visualization.ChartWrapper({ 
    'chartType': 'Table', 
    'containerId': 'chart2', 
    'options': { 
     'showRowNumber': 'true' 
    } 
}); 
} 

열 중 하나에 실제로 일/월/년 형식의 날짜가 들어 있습니다. 15/10/2013 그러나 헤더를 클릭하여이 특정 열을 정렬하려고하면 각 날짜를 문자열로 처리하여 정렬을 수행합니다. 예를 들어 날짜 중 세 개가 01/02/1999, 01/03/1999 및 01/09/1997 일 때 정렬 된 순서 (오름차순)는 01/09/1997, 01/02/1999, 01의 올바른 순서 대신 01/02/1999, 01/03/1999 및 01/09/1997입니다./03/1999.

내 질문은 : 날짜의 컨텍스트에서 정렬을 보장하기 위해 어떤 방법이 있습니까? 예를 들어 각 열에 포함 된 데이터 유형을 지정해야합니까 (원래 Google 스프레드 시트에서 수행 했습니까?).

미리 감사드립니다.

+1

, 당신의 "날짜"문자열이 아닌 날짜 객체는 실제로. 이 경우인지 확인하려면 날짜 열의 내용을 확인하십시오. 예 :'console.dir (data.getValue (0, ))'; 행을 추가하고 Firefox 또는 Chrome에서 페이지를 열고 개발자 콘솔을보고 출력 내용을 확인하십시오. "01/02/1999"와 같은 문자열이면 문자열을 Date 객체로 변환해야합니다. – asgallant

+0

그게 내가 의심 스럽지만 그것을 확인하는 방법에 대한 팁 주셔서 감사합니다. 따라서 1/1/1997 형식의 날짜는 문자열로 처리됩니다. 테이블을 단일 객체로 가져온 이후 단일 열의 "유형"을 어떻게 변경합니까? – Louis

+0

문자열을 날짜로 변환하려면 DataView를 사용해야합니다. 나는 세부 사항을 가진 응답을 배치 할 것이다. – asgallant

답변

2

"MM/dd/yyyy"형식의 문자열 열을 날짜 열로 변환하는 DataView가 있습니다.

var dateFormatter = new google.visualization.DateFormat({pattern: 'MM/dd/yyyy'}); 
var view = new google.visualization.DataView(data); 
view.setColumns([/* list of column indices that preceed the date column */ { 
    type: 'date', 
    label: data.getColumnLabel(dateColumnIndex), 
    calc: function (dt, row) { 
     var dateArr = dt.getValue(row, dateColumnIndex).split('/'); 
     var year = parseInt(dateArr[2]); 
     var month = parseInt(dateArr[0]) - 1; // adjust month to javascript's 0-indexed months 
     var day = parseInt(dateArr[1]); 
     var date = new Date(year, month, day); 
     return { 
      v: date, 
      f: dateFormatter.formatValue(date) 
     }; 
    } 
} /* list of column indices that follow the date column */]); 

여기 당신이 재생할 수있는 jsfiddle 예제 : 추측에 http://jsfiddle.net/asgallant/tggnC/

+0

고마워, 그게 내가 필요한거야! – Louis