Как заставить события onStart и onComplete работать для xp: pager - PullRequest
0 голосов
/ 07 мая 2019

Я использую наложение всей страницы, чтобы отобразить маску загрузки для моих XPages. Это прекрасно работает для большинства элементов управления xp, кнопок, полей со списком, флажков и т. Д., Добавляя CSJS для вызова наложения на события onStart () и onComplete () обработчика событий. Однако это не работает с элементом управления xp: Pager. События onStart и onComplete доступны для каждой части пейджера, но, похоже, они не активируются. У меня есть несколько больших повторяющихся элементов управления, благодаря которым обновление пейджера может занять несколько секунд, поэтому наложение необходимо, чтобы пользователь знал, что пейджер работает.

Я добавил свой код в onStart и onComplete элементов xp: Pager, но они просто не запускаются. Загрузчик работает для всех других элементов xp. Я пробовал частичное обновление и полное обновление, но ни один из них не вызывает события onStart и onComplete?

<xp:pager partialRefresh="true" id="pager1" for="displayData">
 <xp:pagerControl type="First" id="pagerControl1">
  <xp:eventHandler event="onclick" submit="true"
  refreshMode="partial" refreshId="questionBlock" 
  onStart="makeButtonInactive('','');" onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Previous" id="pagerControl2">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Group" id="pagerControl3">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Next" id="pagerControl5">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
  </xp:eventHandler>
 </xp:pagerControl>
 <xp:pagerControl type="Last" id="pagerControl6">
  <xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="pagerControl1" onStart="makeButtonInactive('','');"
onComplete="makeButtonActive('','');">
 </xp:eventHandler>
 </xp:pagerControl>
</xp:pager>

Функции makeButtonActive () и makeButtonInactive () - просто функции CSJS для отображения наложения страницы или отдельного наложения кнопки. В этом случае я пытаюсь сделать наложение всей страницы, поэтому единственный код, который будет выполняться, это

onStart(document.getElementById("overlay").style.display = "block";)

и

onComplete(document.getElementById("overlay").style.display = "none";)

полные функции

function makeButtonActive(btnId, innerId) {
if (btnId=="") {
    document.getElementById("overlay").style.display = "none"; //Full Page
} else {
    document.getElementById(btnId).disabled=false;      //Button Only
    document.getElementById(innerId).className=tmpclassName;
}
}

и

function makeButtonInactive(btnId, innerId) {
if (btnId=="") {
    document.getElementById("overlay").style.display = "block"; //Full Page
} else {    
    document.getElementById(btnId).disabled=true; //Button Only
    tmpclassName=document.getElementById(innerId).className;
    document.getElementById(innerId).className="glyphicon glyphicon-refresh gly-sm gly-spin";
}   
}

1 Ответ

0 голосов
/ 07 мая 2019

Большинство известных мне разработчиков используют пользовательский элемент управления Standby Dialog Фредрика Норлинга из OpenNTF.Возможно, вам удастся выяснить, что отличается, используя перекрестные ссылки, или проще использовать это вместо этого.

Если вы используете тему начальной загрузки, используйте эту .Если вы используете OneUI или нестандартную тему, используйте эту .

...