Kolorowanie rekordów w Oracle Apex

Czyli jak zrobić kolorwanie wierszy w zależności od wartości w kolumnach.

Oracle Apex posiada dostępną także dla użytkownika aplikacji opcję oznaczania rekordów w zależności od wartości w kolumnach. Opcja ta jest dostępna poprzez wybranie z menu 'Actions' Format => Highlight. Po wybraniu tej opcji mamy menu tworzenia warunku po którego spełnieniu rekordy, ich tło i/lub tekst, będzie wyróżniony wybranym kolorem. Możemy kolorować wiersz lub komórkę. Warunków może być wiele i możemy je zapisać do ponownego użycia.

Zaawansowane formatowanie

Niestety nie można tworzyć warunków ktore mają kilka zmiennych. Np. jeśli kolumna A = X i kolumna B contains C. Takie reguły należy utworzyć np. w SQL który jest źródłem raportu. Możemy utworzyć wirtualną kolumnę kótra zwróci kod html (np: '<span class="pomarancz_class">tabela.kolumna</span>')... pamietaj o escape dla tej kolumny. Możemy też w SQL dokonać porównań/obliczeń i zwrócić kokumnę z ustawioną frazą. Np. kolumna 'znacznik' zwraca wartości 'wysoko', 'nisko', 'wlasciwie' i odpowiednio ustawic kolorowanie wierszy, w menu Action=>Format=>Highlight, ktorych kolumny zawierają taki tekst.

Ukrywanie formatowania

Domyślnie utworzone warunki formatowania wierszy lub komórek będą widoczne pod paskiem narzędzi. Zabiera to niepotrzebnie przestrzeń ekranu i raczej nie wygląda zbyt estetycznie. Użytkownik może też usunąć celowo lub przypadkowo te formatowania.

W Interactive Report możemy wyłączyć dostęp do menu tworzenia highlights w Rendering=>Interactive report(wybierz region)=>Attributes=>Actions menu.

Interactive Grid nie posiada takiego menu. Możesz ukryć i wyłączyć dostęp do highlights poprzez wybranie Interactive Grid=>Attributes a następnie wpisanie odpowiedniego kodu JavaScript w polu 'JavaScript inintialization code'. Oto zawartość wyłączająca tę opcję i ukrywająca warunki formatowania (samo formatowanie ciągle będzie działać):

function(config) {
    config.reportSettingsArea = false;
    apex.util.getNestedObject(config, "views.grid.features").highlight = false;
    return config;
}

W tym polu możesz wstawić też inny kod który np dodaje kolejny przycisk do menu lub ukrywa już istniejący. Wiec jeśli masz już tam jakiś kod, wstaw tylko same polecenia (bez wywoływania funkcji i zwracania konfiguracji.