2014-03-29 4 views
0

그래서이 하나는 저를 곤혹스럽게합니다. HTML 테이블을 가져 와서 월별 항목 수를 나타내는 선 그래프를 생성해야합니다. 현재 DataTables이 (가) 테이블을 생성하고 소스 데이터를 수정할 수 없습니다. 나는 나를 위해 선 그래프를 생성하기 위해 Flot을 사용할 것이다. Flot 함수는 아래와 같이 데이터 집합을 필요로합니다.변수를 배열의 배열로 변환

예상 데이터 집합 : 나는 테이블 데이터에서 위의 데이터 세트를 생성하고 Flot 함수에 전달해야합니다 DataTables 기능 fnInitComplete 동안

[ [1, 3], [2, 14], [3, 3] ] 

. 이는 그래프가 요구되는 테이블만큼 동적임을 보장합니다. 여기

는 내가 지금까지 무엇을 가지고 : (불완전 DataTables 기능을하지만, 나머지는이 질문에 필요하지 않습니다)

$(document).ready(function() { 
    // The unimportant DT part 
    var sTable = $('#sTable').dataTable({ ... }); 

    // What I currently have 
    var items=[]; // The wrapper for my dataset (array) 

    //Iterate all td's in eighth column 
    $('#sTable tbody tr td:nth-child(8)').each(function(){ 

     //convert to jsDate from MySQL timestamp 
     var dateParts = $(this).text().split("-"); 
     var jsDate = new Date(dateParts[0], dateParts[1] - 1, dateParts[2].substr(0,2)); 
     var n = jsDate.getMonth(); 
     //In my table I have March (represented as 2) five times so 
     //console.log(n); will print 2 five times. 
    }); 
}); 

그리고 이것은 지금까지 내가 불행하게도 입수했습니다 같습니다. 최선의 방법은 n 값을 가져 와서 변수 이름으로 지정하여 변수를 2로 정의한 다음 2++과 같은 작업을 수행 할 수 있다고 생각합니다. 이 방법은 각 달에 대해 숫자로 반환됩니다. 그 번호 다음에 이름이 지정된 변수가 있고 .each 함수에있는 횟수가 포함됩니다. 또한 변수가 존재하는 곳에서 수개월만으로 제한 할 수 있으므로 전달해야하는 데이터 집합을 간단히 만들 수 있습니다.

JavaScript로 작업하는 데 많은 경험이 없으므로 도움을 주시면 대단히 감사하겠습니다.

+1

원본 데이터 (및 결과 데이터)를 표시 한 다음 하나를 다른 것으로 변환하기 위해 독립 실행 형 함수를 작성하는 데 집중하십시오. –

+0

당신이 원했던 것은 아니지만 [html5csv] (https://github.com/DrPaulBrewer/html5csv)라는 또 다른 lib에서 할 수 있습니다. 플롯과 테이블 데모에 대해서는 http://jsfiddle.net/DrPaulBrewer/XaGUd/를 참조하십시오 - 테이블 데이터를 긁고 'begin()'매개 변수를'#myTableID '와 같은 jQuery 셀렉터로 대체하면 대신에 데이터를 가져옵니다. 그림과 같이 자체 데이터를 생성 할 수 있습니다. 또한 표가 머리글 행의 이점을 얻을 수 있습니다. – Paul

답변

0

매달 포함 whichs 배열이 같은 0으로 시작하는 달의 수를 만들기 :이 코드

[ [1, 0], [2, 0], ..., [12, 0] ] 

: 당신의 each 기능 사용 후

var items = []; 
for (var i = 1; i <= 12; i++) 
    items.push([i, 0]); 

items[n][1]++; 

각 달의 횟수를 늘리려면 012 월 귀하의 테이블에.

그런 다음 items 배열을 사용하여 플롯 차트를 만들 수 있습니다.

+0

그게 내가 한 일을 거의 끝낸거야. – MattSizzle