Przejdź do głównej zawartości

Tworzenie własnych modułów, klas i formularzy

HUBanero pozwala administratorom i zaawansowanym użytkownikom tworzyć własne struktury danych bez programowania. Możesz definiować moduły, klasy (encje), właściwości i formularze przez interfejs graficzny.

Przegląd funkcjonalności Low-Code

Co możesz stworzyć?

ElementOpisPrzykład
ModułGrupa powiązanych klas"Magazyn", "Flota", "Rekrutacja"
KlasaEncja z właściwościami (tabela w bazie)"Produkt", "Samochód", "Kandydat"
WłaściwośćPole klasy (kolumna w tabeli)"Nazwa", "Cena", "Data ważności"
BlokKonfiguracja UI (formularz, widok, walidacja)Formularz edycji produktu

Dostęp do modułu Low-Code

  1. Przejdź do Administracja w menu bocznym
  2. Wybierz Klasy (lub Code Classes)
  3. Zobaczysz listę wszystkich zdefiniowanych klas
Uprawnienia

Do tworzenia klas wymagane jest uprawnienie Administrator lub Developer.

Tworzenie nowego modułu

Moduł to logiczna grupa klas. Najpierw zdecyduj jak pogrupować swoje encje.

Przykłady modułów

  • Magazyn → Produkty, Lokalizacje, Ruchy magazynowe
  • Flota → Pojazdy, Kierowcy, Tankowania, Przeglądy
  • Rekrutacja → Kandydaci, Oferty pracy, Rozmowy
  • Projekty → Projekty, Kamienie milowe, Zasoby

Moduł tworzysz automatycznie przy dodawaniu pierwszej klasy - wystarczy wpisać nazwę modułu w odpowiednim polu.

Tworzenie klasy

Klasa to struktura danych - odpowiednik tabeli w bazie danych.

Krok po kroku

  1. Na stronie Klasy kliknij ➕ Dodaj
  2. Wypełnij formularz:
PoleOpisPrzykład
ModułNazwa modułu (wybierz istniejący lub wpisz nowy)Magazyn
Nazwa klasyIdentyfikator techniczny (bez spacji, łacińskie znaki)Product
Nazwa wyświetlanaPrzyjazna nazwa dla użytkownikówProdukt
IkonaIkona Material Designinventory_2
OpisOpcjonalny opis klasyProdukty w magazynie
Klasa abstrakcyjnaZaznacz jeśli klasa nie ma mieć własnej tabeli
AktywnaCzy klasa jest dostępna
  1. Kliknij Zapisz
Nazwa klasy

Nazwa klasy po zapisaniu nie może być zmieniona - staje się nazwą tabeli w bazie danych. Używaj konwencji:

  • PascalCase: ProductCategory, OrderItem
  • Bez spacji i polskich znaków
  • Bez myślników i podkreśleń

Ikony Material Design

Popularne ikony do wyboru:

IkonaNazwaUżycie
📦inventory_2Produkty, magazyn
🚗directions_carPojazdy, flota
👤personOsoby, kandydaci
🏢businessFirmy, organizacje
📄descriptionDokumenty
📅eventWydarzenia, terminy
💰paymentsPłatności, finanse
📊analyticsRaporty, statystyki

Pełna lista: Material Icons

Dodawanie właściwości (pól)

Po utworzeniu klasy dodaj właściwości - pola które będą przechowywać dane.

Dostęp do właściwości

Sposób 1: Z formularza klasy

  1. Otwórz klasę do edycji
  2. Przewiń do sekcji Właściwości
  3. Kliknij ➕ Dodaj

Sposób 2: Z menu kontekstowego

  1. Na liście klas kliknij prawym przyciskiem
  2. Wybierz Edytuj właściwości

Formularz właściwości

PoleOpisPrzykład
NazwaIdentyfikator technicznyProductName
Nazwa wyświetlanaEtykieta dla użytkownikaNazwa produktu
TypTyp danych (zobacz tabelę poniżej)Text
WymaganeCzy pole jest obowiązkowe
WidoczneCzy pokazywać w UI
KolejnośćPozycja na formularzu10
Maksymalna długośćDla pól tekstowych200
Wartość domyślnaAutomatyczna wartość0
Tekst pomocniczyPodpowiedź dla użytkownikaWprowadź pełną nazwę

Typy właściwości

TypOpisPrzykład użycia
TextTekst (varchar)Nazwa, opis, email
IntegerLiczba całkowitaIlość, numer, wiek
DecimalLiczba dziesiętnaCena, waga, procent
DateTimeData i czasData utworzenia
DateTylko dataData urodzenia
BooleanTak/NieAktywny, zatwierdzony
ReferenceReferencja do innej klasyKlient → Zamówienie
EmbeddedObiekt zagnieżdżonyAdres w kliencie

Przykład: Właściwości dla klasy "Produkt"

#NazwaWyświetlanaTypWymagane
10NameNazwa produktuText
20SKUKod SKUText
30PriceCena jednostkowaDecimal
40QuantityIlość w magazynieInteger
50CategoryKategoriaReference
60ExpiryDateData ważnościDate
70IsActiveAktywnyBoolean
80DescriptionOpisText
Kolejność właściwości

Używaj numeracji co 10 (10, 20, 30...) - pozwoli to łatwo wstawiać nowe pola między istniejące.

Referencje między klasami

Typ Reference pozwala łączyć klasy ze sobą (relacja klucz obcy).

Przykład: Zamówienie → Klient

  1. Utwórz klasę Customer z właściwościami
  2. Utwórz klasę Order
  3. W Order dodaj właściwość:
    • Nazwa: CustomerId
    • Typ: Reference
    • Klasa docelowa: Customer

Konfiguracja referencji

PoleOpis
Klasa docelowaDo której klasy odnosi się referencja
Pole wyświetlaneKtóre pole pokazać użytkownikowi (np. Name)
Kaskadowe usuwanieCzy usunięcie rodzica usuwa dzieci

Bloki konfiguracji

Bloki definiują jak dane są prezentowane i walidowane.

Typy bloków

TypOpis
FormKonfiguracja formularza edycji
PageKonfiguracja widoku listy/strony
MethodLogika biznesowa
ProcessPrzepływ pracy (workflow)
DecisionTableTabela decyzyjna
ValidationReguły walidacji

Dodawanie bloku

  1. Na liście klas kliknij prawym przyciskiem na klasę
  2. Wybierz Edytuj bloki
  3. Kliknij ➕ Dodaj blok
  4. Wybierz typ i wypełnij konfigurację

Blok formularza (Form)

Konfiguracja JSON dla formularza:

{
"layout": "vertical",
"sections": [
{
"title": "Dane podstawowe",
"fields": ["Name", "SKU", "Price"]
},
{
"title": "Szczegóły",
"fields": ["Category", "Quantity", "ExpiryDate"]
}
],
"readonly": ["CreatedOn", "CreatedBy"]
}

Blok widoku listy (Page)

{
"columns": ["Name", "SKU", "Price", "Quantity"],
"defaultSort": "Name",
"pageSize": 25,
"filters": ["Category", "IsActive"]
}

Przeglądanie danych

Po zdefiniowaniu klasy możesz przeglądać i edytować dane.

Dostęp do danych

  1. Na liście klas kliknij prawym przyciskiem
  2. Wybierz Przeglądaj dane
  3. Otworzy się zakładka z tabelą danych

Funkcje tabeli danych

  • ➕ Dodaj - nowy rekord
  • Edycja - podwójne kliknięcie na wiersz
  • Usuwanie - menu kontekstowe
  • Filtrowanie - przez nagłówki kolumn
  • Sortowanie - kliknięcie nagłówka
  • Eksport - do Excel/CSV

Przykład: Tworzenie modułu "Flota"

Krok 1: Planowanie struktury

Krok 2: Tworzenie klas

Klasa: Driver (Kierowca)

WłaściwośćTypWymagane
FirstNameText
LastNameText
LicenseNumberText
LicenseExpiryDate
PhoneText
EmailText

Klasa: Vehicle (Pojazd)

WłaściwośćTypWymagane
RegistrationNumberText
BrandText
ModelText
YearInteger
PurchaseDateDate
MileageInteger
DriverIdReference (Driver)
IsActiveBoolean

Klasa: Refueling (Tankowanie)

WłaściwośćTypWymagane
VehicleIdReference (Vehicle)
DateDate
LitersDecimal
PricePerLiterDecimal
TotalCostDecimal
MileageInteger
FuelTypeText

Krok 3: Konfiguracja formularza

Dla klasy Refueling dodaj blok Form:

{
"sections": [
{
"title": "Tankowanie",
"fields": ["VehicleId", "Date", "Mileage"]
},
{
"title": "Paliwo",
"fields": ["FuelType", "Liters", "PricePerLiter", "TotalCost"]
}
],
"calculated": {
"TotalCost": "Liters * PricePerLiter"
}
}

Krok 4: Używanie modułu

  1. Moduł Flota pojawi się w menu
  2. Dodaj kierowców
  3. Dodaj pojazdy i przypisz kierowców
  4. Rejestruj tankowania

Dobre praktyki

Nazewnictwo

ZasadaPrzykład dobryPrzykład zły
PascalCase dla klasProductCategoryproduct_category
Bez polskich znakówCustomerKlient
Liczba pojedynczaOrderOrders
Opisowe nazwyInvoiceItemII

Struktura właściwości

  1. Podstawowe pola najpierw (Name, Code, itp.)
  2. Referencje w środku
  3. Flagi i statusy na końcu
  4. Pola systemowe (CreatedOn, UpdatedOn) automatyczne

Walidacja

  • Oznaczaj pola wymagane świadomie
  • Ustal maksymalne długości tekstów
  • Definiuj wartości domyślne gdzie sensowne

Rozwiązywanie problemów

Nie mogę zmienić nazwy klasy

Nazwy klas są niezmienne po utworzeniu (stają się nazwami tabel). Rozwiązanie:

  1. Utwórz nową klasę z poprawną nazwą
  2. Przenieś dane (eksport → import)
  3. Dezaktywuj starą klasę

Nie widzę modułu w menu

  1. Sprawdź czy klasa jest Aktywna
  2. Sprawdź czy masz uprawnienia do modułu
  3. Odśwież stronę (F5)

Błąd przy dodawaniu właściwości

  • Sprawdź czy nazwa nie zawiera spacji/polskich znaków
  • Upewnij się, że nazwa jest unikalna w klasie
  • Dla Reference: sprawdź czy klasa docelowa istnieje

Dane nie zapisują się

  • Sprawdź wymagane pola (czerwona gwiazdka)
  • Sprawdź format danych (np. data, liczba)
  • Zobacz komunikaty błędów na formularzu

Następne kroki