2014-11-13 3 views
2

우리는 BootCards를 사용합니다. Morris.js 그래프에 대한 사용자 정의 컨트롤이 있습니다. 반복 컨트롤에서 선택한 문서의 데이터를 가져 오는 방법을 찾았습니다.Morris.JS in xPages Refresh

내 문제는 다른 문서의 그래프를 새로 고치는 것입니다. 사용자 정의 속성 'ajaxload'를 'No'로 설정하면 페이지가 새로 고쳐지고 그래프가 표시됩니다. 반복 컨트롤의 모든 항목이 그래프를 변경하지는 않습니다. 선택한 항목이 첫 번째 항목으로 이동했습니다.

morris.js에 대해 새로 고침없이 AJAX 기능을 사용할 수 있도록 다시 그리기 또는 setdata 기능을 배치 할 수있는 곳은 어디입니까?

감사합니다.

<script 
    src="unp/raphael.min.js" 
    type="text/javascript"> 
</script> 
<script 
    src="unp/morris.min.js" 
    type="text/javascript"> 
</script> 
<xp:scriptBlock id="scriptBlock1"> 
    <xp:this.value><![CDATA[ 
    var chartDataCalc = 
     #{javascript:var chartData = []; 
     var val = docview1.getItemValueArray(compositeData.barvalue); 
     var name = docview1.getItemValueArray(compositeData.barname); 
     for (var i=0; i<name.length; i++) { 
      chartData.push({label : name[i], value : val[i]}); 
     } 
     return toJson(chartData) 
     }; 

    var chartBar = 
     Morris.Bar({ 
     element: #{javascript:compositeData.divid}, 
     data: '', 
     xkey: 'label', 
     ykeys: ['value'], 
     labels: ['#{javascript:compositeData.barlabel}'], 
     resize: true, 
     redraw: true 
     }); 
    chartBar.setData(chartDataCalc, 'True'); 
    ]]> 
    </xp:this.value> 
</xp:scriptBlock> 

답변

2

정확하게 이해하면 반복 제어를 업데이트하기 위해 부분 새로 고침을 수행하고 새로 고침이 발생한 후 다시 그려야합니다. XPages이 일을 두 가지 방법이 다음 SSJS 스크립트가 된 후에

  1. 당신이 부분 리프레시 이벤트 SSJS/Java 코드를 실행하는 경우를 view.postScript ("")로 실행 CSJS를 작성하는 데 사용할 수 있습니다 처리됨. 매개 변수는 CSJS로 구문 분석 될 수있는 문자열입니다 (예 : "경고 ('Hello World!')"
  2. 개요 또는 소스 창에서 eventHandler를 선택하면 (내 선호 사항 임) 속성 창에서 eventHandler에 CSJS를 실행할 수있는 onComplete 속성이 있음을 알 수 있습니다.