2013-08-02 7 views
0

미리 정의 된 헤더 항목을 사용하여 테이블 데이터를 채우기 위해 JSON 객체를 순회합니다.json 데이터 통과를 통한 누적 결과 얻기

(this former question에 대한 답변에서 코드) 지금 현재로

var stories = {}; 
for (var i=0; i<QueryResults.Results.length; i++) { 
    var result = QueryResults.Results[i], 
     name = result.StoryName 
    if (!(name in stories)) 
     stories[name] = {}; 
    stories[name][result.Name] = result.State; 
} 

var keys = ['QA Cycle 1', 'QA Cycle 2', 'Development - GUI', 'Development - Backend']; 

var data = "<table><tr><th>Story Name</th><th colspan='2'>Quality Assuance</th><th colspan='2'>Development</th></tr><tr><td>&nbsp;</td>"; 
for (var i=0; i<keys.length; i++) 
    data += "<th>"+keys[i]+"</th>"; 
data += "</tr>"; 
for (var storyname in stories) { 
    data += "<tr><th>"+storyname+"</th>"; 
    for (var i=0; i<keys.length; i++) 
     data += "<td>"+(stories[storyname][keys[i]] || "n.a.")+"</td>"; 
    data += "</tr>"; 
} 
data += "</table>"; 

$('body').append(data); 

, 모든 작업은 "완료"& "해당 없음.

,"진행 ","정의 "와 같은 상태를 가지고

    : 하나의 주요 임무 "개발"로하고 다음과 같은 규칙을 계산하여 누적 상태를 삽입 "- - GUI 개발"& "백엔드를 개발"

    지금, 나는 두 개의 하위 작업을 병합 할

  • 개발 타스크에서 첫 x 째 서브 타스크가 "완료 됨"상태이고 두 x 째가 "정의 됨"이면 결과는 "진행 중"이됩니다. 서브 태스크 중이, 제 2 열을함으로써

를 "NA"를해질 것이다 "NA"상태 누적 결과가 있으면

  • [즉, 하위는 표에서 삭제되며 누적 결과는 메인 태스크에 렌더링 기둥.

    는 JSFiddle : http://jsfiddle.net/ylokesh/a5HRu/4/

    어떤 제안이나 도움은 좋은 것입니다. 미리 감사드립니다.

  • 답변

    1

    간단하게 변경할 :

    var keys = ['QA Cycle 1', 'QA Cycle 2', 'Development']; 
    
    … 
    for (var storyname in stories) { 
        var story = stories[storyname]; 
    
        // variables for shortening the code 
        var sub1 = story['Development - GUI'], 
         sub2 = story['Development - Backend'], 
         main = 'Development'; 
    
        if (sub1 && sub2) { // neither is NA 
         if (sub1 == sub2) 
          story[main] = sub1; 
         else if (sub1=="Completed" && sub2=="Defined") 
          story[main] = "In-Progress"; 
         else 
          story[main] = "unknown subtask state combination"; 
        } 
        data += "<tr><th>"+storyname+"</th>"; 
        for (var i=0; i<keys.length; i++) 
         data += "<td>"+(story[keys[i]] || "n.a.")+"</td>"; 
        data += "</tr>"; 
    } 
    … 
    
    +0

    내가 열 병합은 "QA주기 1"및 "품질"에서 "품질 보증주기 2"에 필요한 경우 설정 별도의 변수를 작성해야합니까? 아니면 같은 것을하기위한 더 좋은 접근법이 있습니까? 왜냐하면, 나는 미래의 업데이 트에서 더 많은 열 병합을 접할 수 있습니다. 제발 제안 해주세요. 이 바이올린에서 똑같은 시도 : jsfiddle.net/ylokesh/a5HRu/6 –

    +0

    물론 당신은 아이디어를 일반화 할 수 있습니다. 병합 컬렉션을 만들고 각각에 대해 논리를 적용하여 루프를 반복하면됩니다. – Bergi