2016-07-30 2 views
1

들어오는 데이터를 식별하고 동일한 색을 정확히 적용해야합니다.JSON 데이터를 사용하여 특정 값에 특정 색 얻기

데이터 시퀀스는 고정되어 있지만 (모두 존재할 수도 있고 없을 수도 있음) 아래와 같이 고정 색상을 적용해야합니다.

예 : 예상 데이터 시퀀스 및 색상 순서는 다음과 같다 :

CLOSED   GREEN 
VERIFIED   GREEN 
RESOLVED   YELLOW 
REOPENED   RED 
IN_PROGRESS  BLUE 
ASSIGNED   BROWN 
NEW    BROWN 
UNCONFIRMED  BROWN 

그래서 CLOSEDGREEN 색상 RESOLVED를 들어, 적용되어야 온다 때마다 -> BROWN- UNCONFIRMED을 위해 ...> YELLOW합니다.

이제 모든 데이터가 올 수 있고 예를 들어 오지 않을 수도 있습니다. 같은 자바 스크립트

CLOSED 
VERIFIED 
IN_PROGRESS 
UNCONFIRMED 

그래서 작성의 기본 논리 :

if (jsonData.search("CLOSED") != -1 
    && jsonData.search("VERIFIED") != -1 
    && jsonData.search("IN_PROGRESS") != -1 
    && jsonData.search("UNCONFIRMED") != -1) { 

    colors: ['green', 'green', 'blue', 'brown'], 

} else if (jsonData.search("IN_PROGRESS") 
    && jsonData.search("ASSIGNED") != -1) { 

    colors: ['blue', 'brown'], 

} else if (jsonData.search("IN_PROGRESS")) { 

    colors: ['blue'], 

} else if (jsonData.search("CLOSED") != -1 
    || jsonData.search("VERIFIED") != -1) { 

    colors: ['green'], 
} 

이 위의 순서를 위해 작동하지만 때마다 데이터는 예를 들어, 다른 것

IN_PROGRESS 
NEW 

또는

RESOLVED 
REOPENED 
NEW 

또는

CLOSED 
IN_PROGRESS 

또는

RESOLVED 
NEW 

.. 많은 많은 조합 ...

그러면 데이터에 잘못된 색상이 적용되고 실패합니다. 만약 내가 각각의 모든 데이터와 각각의 시퀀스의 상태를 작성한다면 나는 미쳐서 완전히 비 효과적이고 지루하고 복잡해질 것이다. 언급 한 것처럼

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"VERIFIED"},{"v":16}]},{"c":[{"v":"RESOLVED"},{"v":1}]},{"c":[{"v":"IN_PROGRESS"},{"v":14}]},{"c":[{"v":"ASSIGNED"},{"v":39}]},{"c":[{"v":""},{"v":0}]}]} 

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"CLOSED"},{"v":3}]},{"c":[{"v":"VERIFIED"},{"v":13}]},{"c":[{"v":"RESOLVED"},{"v":2}]},{"c":[{"v":"IN_PROGRESS"},{"v":26}]},{"c":[{"v":"ASSIGNED"},{"v":2}]},{"c":[{"v":""},{"v":0}]}]} 

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"IN_PROGRESS"},{"v":3}]},{"c":[{"v":"NEW"},{"v":8}]},{"c":[{"v":""},{"v":0}]}]} 

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"RESOLVED"},{"v":12}]},{"c":[{"v":"IN_PROGRESS"},{"v":9}]},{"c":[{"v":"ASSIGNED"},{"v":15}]},{"c":[{"v":""},{"v":0}]}]} 

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"VERIFIED"},{"v":6}]},{"c":[{"v":"IN_PROGRESS"},{"v":40}]},{"c":[{"v":"ASSIGNED"},{"v":7}]},{"c":[{"v":"NEW"},{"v":8}]},{"c":[{"v":""},{"v":0}]}]} 

{"cols":[{"label":"status","type":"string"},{"label":"count","type":"string"}],"rows":[{"c":[{"v":"CLOSED"},{"v":3}]},{"c":[{"v":"VERIFIED"},{"v":35}]},{"c":[{"v":"RESOLVED"},{"v":15}]},{"c":[{"v":"IN_PROGRESS"},{"v":92}]},{"c":[{"v":"ASSIGNED"},{"v":63}]},{"c":[{"v":"NEW"},{"v":16}]},{"c":[{"v":""},{"v":0}]}]} 

수있는 사람이 효과적인 논리보다는 정확한 시퀀스에 대한 개별 데이터 + 색상 작성에 대한 생각 : 여기

은 샘플 JSON 데이터입니까?

질문이나 문의 사항이 있으면 알려주십시오.

const DataMap = { 
    CLOSED: 'green', 
    VERIFIED: 'green', 
    RESOLVED: 'yellow', 
    REOPENED: 'red', 
    IN_PROGRESS: 'blue', 
    ASSIGNED: 'brown', 
    NEW: 'brown', 
    UNCONFIRMED: 'brown' 
}; 

let colors = []; 

Object.keys(DataMap).forEach((key, index) => { 
    if (jsonData.search(key) !== -1) { 
    colors.push(DataMap[key]); 
    } 
}); 

jsFiddle를보고하십시오 : 데이터 시퀀스는 고정 된 순서에 당신이 문자열로 JSON을 치료하는 것을 고려하면

+0

왜 데이터의 각 줄을 시퀀스로 처리하는 대신 개별적으로 처리 할 수 ​​없습니까? –

+1

JSON 데이터는 정확히 어떻게 보이나요? –

+0

시퀀스를 기반으로 색상을 적용하고 싶습니다. 데이터를 별도로 처리하여 어떻게 알 수 있습니까? –

답변

1

, 나는 다음과 같은 솔루션을 제안 할 것입니다.

+0

안녕하세요, Alex, thanks; 당신의 대답을 받아 들였습니다! 구글 차트에 데이터를 넣을 때 이것을 확장합니다. 데이터 맵의 색상을 허용하지 않습니다. http://stackoverflow.com/questions/38673317/google-chart-throws-error-for-invalid-color-due-to-values-received-using-datamap에서 나를 도울 수 있습니까? –

+0

@Jits 분명히 곧 살펴 보겠습니다. –

+0

http://stackoverflow.com/questions/38816339/json-response-incorrectly-matches-partial-key-for-color-data에서 저를 도울 수 있습니까? 미리 감사드립니다! –

관련 문제