Oracle apex 19.2 показывает пользователю, пуст ли сворачиваемый отчет

Мне нужно показать пользователю, есть ли в каком-либо сворачиваемом отчете строки или он пуст (когда он находится в свернутом состоянии)

Я пытаюсь найти глобальное и простое решение, которое может работать со всеми таблицами.

в настоящее время моя единственная идея - сделать динамическое действие (уведомлять пустым) для каждого отчета после обновления. затем проверьте «Условие на стороне клиента» с помощью javascript, если в нем есть строки с:

$(this.triggeringElement).find('.nodatafound').length==1;

затем я раскрашиваю складной значок в красный / зеленый цвет соответственно:

$(this.triggeringElement).find('.t-Button--icon').css("background-color", "red")

введите описание изображения здесь

Это решение работает (для классических и интерактивных отчетов, но у меня все равно нет интерактивной сетки). Но у меня много таблиц, и даже если я помещаю свой код javascript в функции, он часто повторяется. Ищу более ремонтопригодный вариант. Что-то вроде встроенного динамического действия для всех отчетов, которые я могу разместить в одном месте.

Спасибо


person Izik    schedule 03.05.2021    source источник


Ответы (2)


Я также использую условие на стороне клиента после обновления для проверки любых результатов.

Я некоторое время думал о глобальном методе для этого, поэтому подумал, что наконец-то попробую.

У вас может быть динамическое действие после обновления на глобальной странице, которое проверяет любой классический отчет с помощью селектора jQuery .t-Region

Затем выполните те же условия клиента и действия для инициирующего элемента.

Селектор на глобальной странице также может быть расширен за счет включения IR. Если вы хотите указать, какие регионы нужно тестировать, вы можете добавить для класса атрибут Внешний вид региона - CSS-классы.

В качестве альтернативы вы можете использовать селектор :not() CSS для динамического действия как способ исключить назначенные регионы с использованием того же атрибута.

person Scott    schedule 04.05.2021
comment
Да, я думаю, ваша ссылка - это то, что меня в первую очередь вдохновило. Попробую вашу идею на глобальной странице - person Izik; 05.05.2021
comment
Спасибо, глобальный селектор JQuery работает (я выбрал класс .t-Region - hideShow). Но проблема в этом селекторе в том, что он относится ко всем областям, которые можно сворачивать, даже не табличным, есть ли способ сделать его специфичным только для области таблиц? - person Izik; 05.05.2021
comment
Здесь есть несколько вариантов, о которых я не упомянул в моем первоначальном ответе. Вы можете настроить таргетинг на назначенные регионы, добавив свой собственный класс, игнорировать назначенные регионы, или, возможно, вы можете изменить селектор и последующие действия, чтобы искать '.t-Report .nodatafound', а затем перейти к $ (this.triggeringElement) .closest (' .t-Region '), чтобы действовать в соответствии с вашими потребностями. Вероятно, это не большая проблема, если только скрытие, когда 0 записей, но в вашем случае я предполагаю, что у вас также есть ложное действие, которое вас сбивает. - person Scott; 06.05.2021
comment
Подводя итог, я добавил свой собственный класс в отчеты, который будет использоваться селектором JQuery в P0, а затем в условии на стороне клиента: $ (this.triggeringElement) .find ('. [ELEMENT_TO_FIND]'). Length = = 1 ----------- когда ELEMENT_TO_FIND может быть одним из них, в соответствии с типом отчета 1) .a-IRR-noDataMsg 2) .nodatafound 3) .a-GV-noDataMsg: visible. --------------- Это работает также для ложного действия и специфично для каждой таблицы - person Izik; 06.05.2021

Рассматривали ли вы возможность запрашивать в таблицах количество строк по отдельности / сначала и сохранять каждый счетчик в элемент страницы, который используется для расчета отображения каждого региона?

Давным-давно у меня была похожая потребность, и я решил ее таким образом. Это немного больше кода Oracle, но у Oracle это хорошо получается, верно?

См. Снимок экрана ниже:  введите описание изображения здесь

person StewS2    schedule 03.05.2021
comment
Да, код Oracle легче поддерживать, но насколько я понимаю, это решение не является глобальным и должно обрабатывать каждую таблицу отдельно, верно? - person Izik; 05.05.2021
comment
Думаю, я так и не понял первоначального вопроса. Простите за шум! - person StewS2; 07.05.2021