Zdarzenie przycisku

Rekord ButtonEvent bazy demonstracyjnej: przycisk „Bonjour” ma czerwoną plakietkę „2”

W tabeli „ButtonEvent” bazy demonstracyjnej pola rekordu („caption”, „the color”, „Tooltip”, „badge.caption”, „badge.color”) ustawiają etykietę, kolor, podpowiedź i plakietkę przycisku „Bonjour” za pomocą opisanej poniżej funkcji onUpdate.

Dostosowywanie przycisków za pomocą Ninext

Dzięki Ninext można zmienić wygląd przycisków Ninox, definiując funkcję o nazwie onUpdate w formule „Display field only, if” przycisku. Funkcja ta musi zwrócić obiekt opisujący elementy wizualne do zmiany, a skrypt musi kończyć się wartością logiczną wskazującą, czy przycisk ma być wyświetlany.

W ten sposób można:

  • Zmienić etykietę przycisku.
  • Zaktualizować podpowiedź (tytuł) przycisku.
  • Zmienić kolor przycisku, wybierając jeden z trzech stylów przycisku Ninox: "blue" (niebieskie tło), "red" (różowe tło, czerwony tekst) i "grey" (białe tło, niebieski obrys, jak przycisk „Bonjour” powyżej).
  • Wyświetlić plakietkę uwypuklającą ważną informację.

Tę funkcję wyłącza się w panelu Ustawienia Ninext, w sekcji „Ulepszenia interfejsu”: Zdarzenia przycisków (onUpdate) (domyślnie włączone).

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

WłaściwośćOpisPrzykład / zastosowanie
captionTekst wyświetlany na przycisku."Send" / "Cancel"
tooltip lub titleTekst pokazywany po najechaniu, jako podpowiedź."Click to send"
buttonColorKolor przycisku: "blue", "red" lub "grey", nic innego. Każda inna wartość jest ignorowana, a przycisk zachowuje swój kolor."blue"
badgeObiekt opisujący plakietkę wyświetlaną na przycisku.Zobacz szczegóły poniżej
badge.captionTekst, liczba lub symbol wyświetlany na plakietce. Zawsze jest to tekst: liczbę należy przekształcić za pomocą text(). Pusty tekst ukrywa plakietkę."3" lub "!"
badge.colorKolor tła plakietki (domyślnie czerwony). Tekst plakietki pozostaje biały."red" lub "#4970ff"

Ogólny przebieg pracy

  1. Zdefiniuj funkcję onUpdate
    W formule „Display field only, if” przycisku zadeklaruj funkcję o nazwie onUpdate. Funkcja ta zwraca obiekt (w formacie JSON) opisujący elementy do zmiany. Jako parametr otrzymuje etykietę i kolor przycisku zdefiniowane w Ninox: { caption, buttonColor }.
  2. Zwróć wartość logiczną odpowiadającą za widoczność
    Formuła musi kończyć się zwróceniem wartości logicznej (true lub false), wskazującej, czy przycisk ma być wyświetlany.
  3. Ninext stosuje zmiany
    Gdy rekord zostaje otwarty lub odświeżony, Ninext wykonuje funkcję onUpdate, odczytuje zwrócony obiekt i dynamicznie stosuje zmiany wyglądu przycisku.

Zastosowanie

Pojedynczy blok kodu w formule „Display field only, if”

Ninox
"Declaration of the onUpdate function that customizes the button";
function onUpdate(buttonValues : any) do
 let count := this.Count;
 {
      caption: if count > 0 then
          "Send (" + count + ")"
      else
          "Send"
      end,
      tooltip: "Click to send your request",
      buttonColor: if count > 0 then "red" else "blue" end,
      badge: {
           caption: if count > 0 then text(count) else "" end,
           color: "red"
      }
 }
end;

"Determination of the button's visibility";
this.Count >= 0

Komentarze:

  • Funkcja onUpdate buduje obiekt pozwalający zmienić etykietę przycisku (ze wskaźnikiem liczbowym, jeśli Count jest dodatnie), podpowiedź, kolor przycisku oraz wyświetlić plakietkę.
  • Końcowy blok kodu zwraca wartość logiczną określającą, czy przycisk ma być wyświetlany.

Przykład minimalny (sama plakietka)

Ninox
"Declaration of the onUpdate function to display only a badge";
function onUpdate(buttonValues : any) do
 let newItems := this.newItems;
 {
      badge: {
           caption: if newItems > 0 then text(newItems) else "" end,
           color: "red"
      }
     }
end;
"The button is always displayed";
true

Komentarze:

  • Zwracana jest wyłącznie właściwość badge, aby wyświetlić wartość, gdy newItems jest większe od 0.
  • Przycisk jest wyświetlany bezwarunkowo.

Ważne uwagi

  • Końcowa wartość logiczna
    Bez zwrócenia na końcu true lub false przycisk nie będzie widoczny.
  • 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.Count) i wywoływać funkcje globalne bazy.