2014-11-13 3 views
2

Мы используем BootCards. У меня есть пользовательский контроль для графика Morris.js. Я нашел способ получить данные из выбранного документа из элемента управления повтора.Morris.JS in xPages Обновить

Моя проблема - это обновление графика для другого документа. Когда я устанавливаю «ajaxload» пользовательских свойств «Нет», страница обновляется и отображается мой график. Не все записи в регуляторе повтора изменили график. Выбранный элемент переместился на первый элемент.

Где я могу поместить функцию redraw или setdata для файла morris.js, чтобы использовать функцию AJAX без обновления.

Спасибо!

<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

Если я правильно понимаю, что вы делаете частичное обновление для обновления Repeat Control, а затем хотите перерисовать после обновления не произошло. XPages имеет два способа сделать это:

  1. Если вы работаете SSJS/Java код в случае частичного обновления, view.postScript («») может быть использован для записи CSJS для запуска после того, как сценарий был SSJS обработанный. Параметр представляет собой строку, которая может быть проанализирована как CSJS, например. «alert (« Hello World! »)».
  2. Если вы выбрали eventHandler в контуре или в исходной панели (последнее мое предпочтение), вы увидите на панели «Свойства», что eventHandler имеет свойство onComplete, которое может запускать CSJS.
Смежные вопросы