Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle APEX Новый топик    Ответить
 Lazy Load элементов страницы  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
Имею задачу:
отобразить страницу, на которой в зависимости от содержания предыдущих элементов, появляются последующие.
Например: выбираешь тип контрагента "Физ.лицо"/"Юр.лицо" - ниже открывается либо регион с элементами заполнения данных Физ.лица или Юр.лица.
Но далее необходимо еще не раз произвести подобный выбор и визуализировать тот или иной регион.
В результате страница становится очень "тяжелой" и громоздкой.
Нет ли возможности подгрузки необходимого контента по мере необходимости? Типа iFrame или аналогов?

Wizard в данном случае не подходит, т.к. страница должна быть не только формой ввода нового элемента данных, но и формой детального отображения уже существующего.
30 авг 17, 14:05    [20758752]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
iv_roman_vl
Member

Откуда:
Сообщений: 56
Курдль,

Так ведь IR итак загружает данные по lazy.
То есть показывает например первые 50 строк(или скока укажешь).
А потом просто можешь по пагинации смотреть репорт дальше.

Я так понимаю у тебя для юриков один репорт, для физиков другой.
При соответствующем выборе один просто скрывай.

Можешь также репорт через javascript api рефрешить, чтоб всю страницу целиком не перегружать.
11 сен 17, 13:23    [20786571]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
iv_roman_vl,

Нет, я не про отчеты говорил, а про страницу типа Form.
12 сен 17, 09:04    [20788835]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
blkangel
Member

Откуда:
Сообщений: 1664
Курдль
Имею задачу:
овать тот или иной регион.
В результате страница становится очень "тяжелой" и громоздкой.
Нет ли возможности подгрузки необходимого контента по мере необходимости? Типа iFrame или аналогов?

Апекс чем и хорош, моэно использовать любой механизм, было бы желание.
12 сен 17, 09:12    [20788875]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
Курдль
Member

Откуда: Мск
Сообщений: 1062
blkangel
Апекс чем и хорош, можно использовать любой механизм, было бы желание.

Ура! Желание есть!
Осталось дело за умением... Поможете?
Регионы на странице стандартными средствами можно открывать и скрывать по мере необходимости.
А можно ли их "подгружать" динамично, в зависимости от условий?
12 сен 17, 09:26    [20788937]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
blkangel
Member

Откуда:
Сообщений: 1664
Пишите свой плагин, который возращает целиком ваш регион.
Можно и без плагина, через ДА.
Но в любом случае писать много и руками.
12 сен 17, 10:13    [20789087]     Ответить | Цитировать Сообщить модератору
 Re: Lazy Load элементов страницы  [new]
SvDev
Member

Откуда: Челябинск
Сообщений: 1950
Курдль
Регионы на странице стандартными средствами можно открывать и скрывать по мере необходимости.
А можно ли их "подгружать" динамично, в зависимости от условий?

Можно через submit, или грузить скрытыми.
Подгружать регионы полностью динамически - это уже считай фнукционал SPA и в коробке апекса этого пока нет.

Кстати, в копилку, небольшая демонстрация не док. метода через refresh для подгрузки Classic Report:
(правда, к сожалению, при отображении региона он не рисует items-ы, только сам Classic Report)

- вычисляется ИД региона
- грузится js файл виджета
- готовим узлы в DOM структуре под регион
- инициализируем виджет
- меняем значение item и посылаем refresh на регион.
- наблюдаем, как отобразится Classic Report.

+


Cтавим условие отображения региона, например :P3_NEW is not null.
item P3_NEW по умолчанию делаем null
атрибут региона Page Items to Submit устанавливаем в значение P3_NEW
static id в значение R03

SQL вычисляет ид региона, кот. используется дальше в js:

-- вычисляем ид контейнера - обработчика событий региона
-- например "report_21379489948402457913_catch"
select 'report_' || region_id || '_catch' 
  into :PX_DIV_CATCH 
from apex_application_page_regions t 
where t.page_id= :app_page_id
  and t.application_id = :app_id
  and t.static_id = 'R03' -- static region id


JS:

// если classic report на странице еще не использовался, грузим библиотеку
if ( !apex.widget.report ) {

  var lUrl = "/i/libraries/apex/minified/widget.report.min.js?v=5.1.3.00.05";
  $.getScript( lUrl, function() {


    // добавляем регион во второй ряд (пример под универсальную тему)
    $(".container .row:first").after("<div class='row'><div class='col col-12'><div id='R03'></div></div></div>"); 
    $("#R03").append("<div id='report_21379489948402457913_catch'></div>");

    // инициализируем
    apex.widget.report.init("R03",{"pageItems":"#P3_NEW","styleChecked":"#dddddd","internalRegionId":"21379489948402457913"});  

    // меняем значение item, чтобы условие отображения региона вернуло true
    $s("P3_NEW","1");

    // обновляем
    $("#R03").triggerHandler("apexrefresh");
  });
} else {
    // добавляем регион вторым после первого (пример под универсальную тему)
    $(".container .row:first").after("<div class='row'><div class='col col-12'><div id='R03'></div></div></div>"); 
    $("#R03").append("<div id='report_21379489948402457913_catch'></div>");

    // инициализируем
    apex.widget.report.init("R03",{"pageItems":"#P3_NEW","styleChecked":"#dddddd","internalRegionId":"21379489948402457913"});  

    // меняем значение item, чтобы условие отображения региона вернуло true
    $s("P3_NEW","1");

    // обновляем
    $("#R03").triggerHandler("apexrefresh");
}


1 окт 17, 20:08    [20834852]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle APEX Ответить