LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: Maks on October 01, 2020, 09:06:02 AM

Title: Работа в Scrirt. Скрытие элементов
Post by: Maks 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'ы?
Title: Re: Работа в Scrirt. Скрытие элементов
Post by: Arin Alex on October 02, 2020, 01:02:26 AM
Приветствую!
Сейчас уже не вспомню почему, но я не выбрасываю события на элементах отчета :)
События выбрасываюся только у бандов и страниц
Вы можете сесть на beforeRender у банда и скрывать его элементы по условию.
Видимо я решил что обработка событий айтемов в скрипте лишняя :) ибо они сами себя могут обслуживать :)   
Title: Re: Работа в Scrirt. Скрытие элементов
Post by: Maks on October 02, 2020, 07:07:02 AM
Спасибо, помогло  :)

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

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

или

Reportpage1_DataBand1.isVisible = false;

или есть еще варианты?
Title: Re: Работа в Scrirt. Скрытие элементов
Post by: Arin Alex on October 03, 2020, 11:56:58 AM
На данный момент разницы по производительности особой нет, но если на банде много элементов, то проще isVisible у банда установить.
Ваш вопрос навел меня на размышления и в дальнейшем я просто не буду обрабатывать банд у которого стоит флаг isVisible = false