Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: Работа в Scrirt. Скрытие элементов  (Read 1873 times)

Maks

  • Newbie
  • *
  • Posts: 12
    • View Profile
Работа в Scrirt. Скрытие элементов
« on: October 01, 2020, 09:06:02 AM »
Добрый день!


Структура отчета:
- Reportpage1
  - DataBand1
    - TextItem1
- Reportpage2
  - DataBand2
    - TextItem2

Создал 2 страницы(ReportPage1 и ReportPage2), на ReportPage1 первый вариант отчета для первого типа пользователей, на ReportPage2- второй вариант для другого типа пользователей. Мне нужно печатать по-порядку, сначала полностью отчет для первого типа пользователей, потом для второго. В предыдущем топике решали вопрос о пустой странице, которая теперь успешно не печатается. ( http://limereport.ru/forum/index.php?topic=389.0 )

Для проверки типа пользователей использовал

$S{
   if($D{model.typeUser} ==1 ){
      ... (текст отчета с вставками из $D{model}
   }
}

Аналогично и для 2го типа на ReportPage2


Текст, который хранится в TextItem, достаточно большой, при использовании скриптов прямо в TextItem приходится использовать кавычки и сливать все в одну строчку, а это очень не удобно, и я решил прибегнуть к глобальной панельке "Script", там проверять тип пользователя и в зависимости от этого занулять TextItem1.content/ скрывать (TextItem1.isVisible = false) или вовсе его как-то удалять.
 Нашел скриншот на этом сайте с примером и решил сделать по типу него.


Reportpage1_TextItem1.afterRender.connect(checkType1);
Reportpage2_TextItem1.afterRender.connect(checkType2);
function checkType1(){
   if(getField("model.typeUser") != 1){
      Reportpage1_DataBand1.isVisible = false;
       Reportpage1_TextItem1.content = "";
   }
}

function checkType2(){
   if(getField("model.typeUser") != 2){
      Reportpage2_DataBand1.isVisible = false;
       Reportpage2_TextItem1.content = "";
   }
}


Но оно почему-то не работает, так же пробовал и с beforeRender и писал условие вне функции, ничего не меняется.

Что прописать в Script, чтобы проверялись условия и в зависимости от этого скрывались/занулялись/удалялись TextItem'ы?

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Работа в Scrirt. Скрытие элементов
« Reply #1 on: October 02, 2020, 01:02:26 AM »
Приветствую!
Сейчас уже не вспомню почему, но я не выбрасываю события на элементах отчета :)
События выбрасываюся только у бандов и страниц
Вы можете сесть на beforeRender у банда и скрывать его элементы по условию.
Видимо я решил что обработка событий айтемов в скрипте лишняя :) ибо они сами себя могут обслуживать :)   

Maks

  • Newbie
  • *
  • Posts: 12
    • View Profile
Re: Работа в Scrirt. Скрытие элементов
« Reply #2 on: October 02, 2020, 07:07:02 AM »
Спасибо, помогло  :)

Какой вариант скрытия лучше (производительней) ?

Reportpage1_TextItem1.content = ""; и поставить галку у TextItem hideIfEmpty

или

Reportpage1_DataBand1.isVisible = false;

или есть еще варианты?

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 992
    • View Profile
Re: Работа в Scrirt. Скрытие элементов
« Reply #3 on: October 03, 2020, 11:56:58 AM »
На данный момент разницы по производительности особой нет, но если на банде много элементов, то проще isVisible у банда установить.
Ваш вопрос навел меня на размышления и в дальнейшем я просто не буду обрабатывать банд у которого стоит флаг isVisible = false