2017-02-09 5 views
1

jQplot에 의존하는 필자의 차트 요구 사항에 Primefaces 6을 사용하고 있습니다. 프로젝트의 , 나는 이런 식으로 뭔가를 얻기 위해, 음의 값으로 누적 막대 차트 선 차트를 오버레이하는 것을 시도하고있다 :Primeface를 사용하여 개별 시리즈에서 스태킹을 비활성화하는 방법 jQplot 구현

Account Retention Visualisation

문제는 그 난에 linechartseries를 추가 할 때 barchartseries과 동일한 모델 인 경우 라인 차트는 모델에 setStacked(true);을 설정할 때 스택의 일부가됩니다. Primefaces가 모델별로 스태킹의 개별 비활성을 허용하지 않는 것 같기 때문입니다. 그래서 나는 jQplot는 JS 옵션에서 disableStack : true을 전달하여 개별 시리즈 스태킹 해제 할 수 있는지 notoced 몇몇 조사 후

<p:chart type="bar" model="#{backingBean.cartesianChartModel}"/> 

Line Chart as part of the Stack

와 차트를 렌더링 할 때이와 끝까지, 그래서 질문 PF를 통해 또는 JS 해킹을 통해 렌더링 된 페이지에서 어떤 식 으로든 이것을 덮어 쓸 가능성이 있다면? 나는 익스텐더를 전체 모델에만 사과로 사용한다고 느낍니까?

관련 문제 : 각각의 시리즈가의 스택에서 excempt 할 수 있도록 Primefaces 허용 것으로 보인다

: Disable individual stacking

+0

관심이 비어있는 당신의 시리즈의 확장 구성을 남겨 그에만 사과 익스텐더를 사용하여 전체 모델? "_ 시도 ... 예제보기 ... 결론을 선명하게 작성하지 마십시오. – Kukeltje

답변

1

문서를 통해 부어 나는하지 않을 경우 질문, 문제에 대한 해결책을 발견 이 버전의 시리즈 작성은 전달하여

LineChartSeries.setDisableStack(true); 

간단합니다.

+0

좋은 조사, upvoted – Kukeltje

1

아마도 그렇게 될 수도 있습니다. 이전에 jqPlot 해킹을 위해 extender 기능을 사용했습니다. 다음과 같이 내 경우

는, 예를 들어, 나는 익스텐더 기능으로 정의 된 도넛 차트를했다 :

private void createDonutModel() { 
     donutModel = new DonutChartModel(); 
     donutModel.setLegendPosition("s"); 
     donutModel.setLegendPlacement(LegendPlacement.OUTSIDE); 
     donutModel.setSliceMargin(4); 
     donutModel.setDataFormat("value"); 
     donutModel.setShadow(false); 
     donutModel.setExtender("donutExtender"); 
     donutModel.setSeriesColors("B81C40, FFA600, 79B54A"); 
    } 

jqPlot을 일부 변경하고 있던 해당 자바 스크립트 :

/** 
* Customized jqPlot JQuery layout of the Donut Chart for Status Dashboard. 
*/ 
function donutExtender() { 
    this.cfg.seriesDefaults = { 
     // make this a donut chart. 
     renderer:$.jqplot.DonutRenderer, 
     rendererOptions:{   
      thickness: 26, 
      ringMargin: 0, 
      fill: true, 
      padding: 0, 
     sliceMargin: 4, 
     // Pies and donuts can start at any arbitrary angle. 
     startAngle: -90, 
     showDataLabels: false, 
     // By default, data labels show the percentage of the donut/pie. 
     // You can show the data 'value' or data 'label' instead, or 'percent' 
     dataLabels: 'value', 
      shadow: false 
     } 
    }     

    this.cfg.gridPadding = { 
     top: 0, right: 0, bottom: 0, left: 0     
    } 

    this.cfg.legend = { 
     show: false 
    } 

    this.cfg.grid = { drawBorder: false, 
     shadow: false,   
     background: "transparent" 
    }; 
} 

을 따라서 당신은 당신의 경우에 이것을 시도 할 수 있습니까? _ "내가 느끼는 사람을 제외하고 당신이 ...

function chartExtender() { 
    this.cfg.series = [ 
    { //... 
    }, 
    { // ... 
    }, 
    { 
     disableStack: true   
    } 
    ] 
} 

총을 가진 가치 ...

+0

좋은 gerenal 제안. Upvoted – Kukeltje