Plakietki

Ninext wzbogaca interfejs Ninox, dodając plakietki do niektórych zakładek, aby uwypuklić ważne informacje.

  • W zakładce „Files” niebieska plakietka pokazuje liczbę załączników dodanych do rekordu.
  • W zakładce „Comments” czerwona plakietka sygnalizuje nowe wiadomości, a szara — starsze komentarze.
  • W zakładkach własnych można zmienić wygląd (kolor, tytuł) i dodać plakietkę, aby zwrócić uwagę na kluczową informację.

Dzięki tym plakietkom szybko dostrzegą Państwo nowe informacje bez otwierania każdej zakładki.

Plakietki, podobnie jak opisane niżej dostosowywanie zakładek, wyłącza się w panelu Ustawienia Ninext, w sekcji „Ulepszenia interfejsu”: Badge na plikach i komentarzach (domyślnie włączone).

Plakietki w zakładkach „Files” i „Comments”

Zakładka „Files”

  • Niebieska plakietka: pojawia się, gdy istnieją pliki niepowiązane z żadnym polem typu „File”, czyli takie, które znajdują się w zakładce załączników. Wyświetlana liczba odpowiada tym samodzielnym załącznikom.
  • Brak plakietki: nie wykryto żadnych samodzielnych załączników.

Zakładka „Comments”

  • Czerwona plakietka: podaje liczbę nowych komentarzy, czyli dodanych mniej niż 24 godziny temu.
  • Szara plakietka: gdy żaden komentarz nie jest młodszy niż 24 godziny, podaje całkowitą liczbę komentarzy.
  • Brak plakietki: rekord nie ma żadnych komentarzy.

obraz.png

Plakietki informują o istniejących wpisach pod odpowiednimi ikonami:

W tym przypadku niebieska 1 oznacza, że do rekordu zapisano jeden załącznik, a szara 1 — że rekord ma jeden komentarz.

Plakietki własne

W formule „Display field only, if” każdej zakładki można zadeklarować funkcję onUpdate, która zwraca obiekt JSON opisujący zakładkę i jej plakietkę. Poniższy przykład pochodzi z tabeli „Badges” bazy demonstracyjnej: Caption, Color, 'badge.caption'… to pola tej tabeli.

Ninox
function onUpdate(event : any) do
 debug(formatJSON(event));
 {
  caption: Caption,
  color: Color,
  backgroundColor: BackgroundColor,
  tooltip: Tooltip,
  badge: {
   caption: 'badge.caption',
   color: 'badge.color',
   backgroundColor: 'badge.backgroundColor'
  }
 }
end;
true

Dostosowywanie zakładek za pomocą Ninext

obraz.png

Dzięki Ninext można zmienić wygląd zakładek zdefiniowanych przez użytkownika w Ninox, definiując funkcję o nazwie onUpdate w formule „Display field only, if” danej zakładki. Funkcja ta zwraca obiekt, który mówi Ninext, które elementy wizualne zmienić. Można:

  • Dostosować tytuł zakładki (caption) i podpowiedź.
  • Zmienić kolory tekstu i tła (w stanie normalnym lub wybranym).
  • Ustawić kolor tła powiązanego formularza.
  • Wyświetlić na zakładce plakietkę uwypuklającą ważną informację.

Krótki przegląd właściwości JSON

WłaściwośćOpisPrzykład / zastosowanie
captionTytuł wyświetlany na zakładce."To Invoice" / "View Invoice"
tooltipTekst pokazywany po najechaniu na zakładkę."Click to view details"
colorKolor tekstu, gdy zakładka nie jest wybrana."#333333"
backgroundColorKolor tła, gdy zakładka nie jest wybrana."#ededed"
formBackgroundColorKolor tła formularza (edytora), gdy zakładka jest aktywna."#fafafa"
selected.colorKolor tekstu, gdy zakładka jest wybrana."#ffffff"
selected.backgroundColorKolor tła, gdy zakładka jest wybrana."#4970ff"
badge.captionTekst, liczba lub symbol pokazywany w plakietce. Zawsze jest to tekst: liczbę należy przekształcić za pomocą text(). Pusty tekst ukrywa plakietkę."3" (dla 3 nowych klientów) lub "!" (alert)
badge.colorKolor tekstu plakietki (domyślnie biały)."#ffffff"
badge.backgroundColorKolor tła plakietki (domyślnie czerwony)."#4970ff"

Ogólny przebieg pracy

  • Zdefiniuj funkcję onUpdate
    W formule „Display field only, if” danej zakładki utwórz funkcję o nazwie onUpdate. Funkcja ta musi zwrócić obiekt (w postaci zbliżonej do JSON) opisujący, które elementy wyglądu zmienić. Jako parametr otrzymuje obiekt, który zwróciła przy poprzednim wywołaniu (za pierwszym razem — pusty obiekt).
  • Zwróć wartość logiczną odpowiadającą za widoczność
    Formuła „Display field only, if” musi kończyć się zwróceniem true lub false, co określa, czy zakładka ma być wyświetlana.
  • Ninext stosuje zmiany
    Za każdym razem, gdy użytkownik otwiera lub odświeża rekord, Ninext uruchamia funkcję onUpdate, odczytuje zwrócony obiekt i dynamicznie stosuje zmiany wyglądu zakładki.

Przykłady zastosowania

Pełny przykład (wiele właściwości)

Ninox
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
    let nb := this.NumberTest;
    {
        caption: if nb > 0 then "To Invoice" else "View Invoice" end,
        tooltip: "Click to view details",
        color: "#333333",
        backgroundColor: "#ededed",
        formBackgroundColor: "#fafafa",
        selected: {
            color: "#ffffff",
            backgroundColor: "#4970ff"
        },
        badge: {
            caption: if nb = 3 then "3" else if nb = -1 then "!" else "" end,
            color: "#ffffff",
            backgroundColor: if nb = 3 then "#4970ff" else if nb = -1 then "#ff0000" else "#cccccc" end
        }
    }
end;

"Determine whether the tab is displayed: shown if NumberTest > 0";
if this.NumberTest > 0 then
    true
else
    false
end

Komentarze:

  • Funkcja nie zawiera return: tego słowa nie ma w języku Ninox. Zwraca wartość swojego ostatniego wyrażenia, tutaj obiekt.
  • caption zmienia tytuł zakładki w zależności od NumberTest.
  • tooltip wyświetla komunikat tekstowy po najechaniu kursorem.
  • color i backgroundColor definiują kolory w stanie niewybranym.
  • selected zawiera kolory dla stanu aktywnej zakładki.
  • badge dodaje wskaźnik (liczbę lub wykrzyknik) dla podkreślenia; w pozostałych przypadkach jego etykieta jest pusta i plakietka się nie pojawia.

Przykład minimalny (sama plakietka)

Ninox
"Declaration of the onUpdate function";
function onUpdate(tabValues : any) do
 let newClients := this.NewClients;
 {
  badge: {
   caption: if newClients > 0 then text(newClients) else "" end,
   color: "#ffffff",
   backgroundColor: "#4970ff"
  }
 }
end;
"The tab is always displayed";
true

Komentarze:

  • Zwracana jest wyłącznie właściwość badge.
  • Jeśli NewClients jest większe od 0, wyświetlana jest jego wartość, przekształcona w tekst przez text(); w przeciwnym razie etykieta jest pusta i plakietka się nie pojawia.
  • Plakietka ma biały tekst na niebieskim tle.

Ważne uwagi

  • Końcowa wartość logiczna
    Bez zwrócenia na końcu true lub false zakładka nie będzie widoczna.
  • Etykieta plakietki zawsze jako tekst
    Ninext wyświetla plakietkę tylko wtedy, gdy badge.caption jest niepustym tekstem. Liczba (3 zamiast "3") pozostawia plakietkę ukrytą: należy użyć text().
  • Funkcja obliczana osobno
    Ninext wyodrębnia z formuły samą funkcję onUpdate, a następnie oblicza ją osobno, w kontekście rekordu. Nie widzi ona więc ani zmiennych, ani innych funkcji zadeklarowanych w innym miejscu „Display field only, if”: wszystko, czego potrzebuje, należy zadeklarować wewnątrz onUpdate. Może odczytywać pola rekordu (this.NumberTest) i wywoływać funkcje globalne bazy.