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ć?
| Element | Opis | Przykład |
|---|---|---|
| Moduł | Grupa powiązanych klas | "Magazyn", "Flota", "Rekrutacja" |
| Klasa | Encja 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" |
| Blok | Konfiguracja UI (formularz, widok, walidacja) | Formularz edycji produktu |
Dostęp do modułu Low-Code
- Przejdź do Administracja w menu bocznym
- Wybierz Klasy (lub Code Classes)
- Zobaczysz listę wszystkich zdefiniowanych klas
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
- Na stronie Klasy kliknij ➕ Dodaj
- Wypełnij formularz:
| Pole | Opis | Przykład |
|---|---|---|
| Moduł | Nazwa modułu (wybierz istniejący lub wpisz nowy) | Magazyn |
| Nazwa klasy | Identyfikator techniczny (bez spacji, łacińskie znaki) | Product |
| Nazwa wyświetlana | Przyjazna nazwa dla użytkowników | Produkt |
| Ikona | Ikona Material Design | inventory_2 |
| Opis | Opcjonalny opis klasy | Produkty w magazynie |
| Klasa abstrakcyjna | Zaznacz jeśli klasa nie ma mieć własnej tabeli | ☐ |
| Aktywna | Czy klasa jest dostępna | ☑ |
- Kliknij Zapisz
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:
| Ikona | Nazwa | Użycie |
|---|---|---|
| 📦 | inventory_2 | Produkty, magazyn |
| 🚗 | directions_car | Pojazdy, flota |
| 👤 | person | Osoby, kandydaci |
| 🏢 | business | Firmy, organizacje |
| 📄 | description | Dokumenty |
| 📅 | event | Wydarzenia, terminy |
| 💰 | payments | Płatności, finanse |
| 📊 | analytics | Raporty, 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
- Otwórz klasę do edycji
- Przewiń do sekcji Właściwości
- Kliknij ➕ Dodaj
Sposób 2: Z menu kontekstowego
- Na liście klas kliknij prawym przyciskiem
- Wybierz Edytuj właściwości
Formularz właściwości
| Pole | Opis | Przykład |
|---|---|---|
| Nazwa | Identyfikator techniczny | ProductName |
| Nazwa wyświetlana | Etykieta dla użytkownika | Nazwa produktu |
| Typ | Typ danych (zobacz tabelę poniżej) | Text |
| Wymagane | Czy pole jest obowiązkowe | ☑ |
| Widoczne | Czy pokazywać w UI | ☑ |
| Kolejność | Pozycja na formularzu | 10 |
| Maksymalna długość | Dla pól tekstowych | 200 |
| Wartość domyślna | Automatyczna wartość | 0 |
| Tekst pomocniczy | Podpowiedź dla użytkownika | Wprowadź pełną nazwę |
Typy właściwości
| Typ | Opis | Przykład użycia |
|---|---|---|
| Text | Tekst (varchar) | Nazwa, opis, email |
| Integer | Liczba całkowita | Ilość, numer, wiek |
| Decimal | Liczba dziesiętna | Cena, waga, procent |
| DateTime | Data i czas | Data utworzenia |
| Date | Tylko data | Data urodzenia |
| Boolean | Tak/Nie | Aktywny, zatwierdzony |
| Reference | Referencja do innej klasy | Klient → Zamówienie |
| Embedded | Obiekt zagnieżdżony | Adres w kliencie |
Przykład: Właściwości dla klasy "Produkt"
| # | Nazwa | Wyświetlana | Typ | Wymagane |
|---|---|---|---|---|
| 10 | Name | Nazwa produktu | Text | ☑ |
| 20 | SKU | Kod SKU | Text | ☑ |
| 30 | Price | Cena jednostkowa | Decimal | ☑ |
| 40 | Quantity | Ilość w magazynie | Integer | ☐ |
| 50 | Category | Kategoria | Reference | ☐ |
| 60 | ExpiryDate | Data ważności | Date | ☐ |
| 70 | IsActive | Aktywny | Boolean | ☐ |
| 80 | Description | Opis | Text | ☐ |
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
- Utwórz klasę
Customerz właściwościami - Utwórz klasę
Order - W
Orderdodaj właściwość:- Nazwa:
CustomerId - Typ: Reference
- Klasa docelowa:
Customer
- Nazwa:
Konfiguracja referencji
| Pole | Opis |
|---|---|
| Klasa docelowa | Do której klasy odnosi się referencja |
| Pole wyświetlane | Które pole pokazać użytkownikowi (np. Name) |
| Kaskadowe usuwanie | Czy usunięcie rodzica usuwa dzieci |
Bloki konfiguracji
Bloki definiują jak dane są prezentowane i walidowane.
Typy bloków
| Typ | Opis |
|---|---|
| Form | Konfiguracja formularza edycji |
| Page | Konfiguracja widoku listy/strony |
| Method | Logika biznesowa |
| Process | Przepływ pracy (workflow) |
| DecisionTable | Tabela decyzyjna |
| Validation | Reguły walidacji |
Dodawanie bloku
- Na liście klas kliknij prawym przyciskiem na klasę
- Wybierz Edytuj bloki
- Kliknij ➕ Dodaj blok
- 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
- Na liście klas kliknij prawym przyciskiem
- Wybierz Przeglądaj dane
- 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ść | Typ | Wymagane |
|---|---|---|
| FirstName | Text | ☑ |
| LastName | Text | ☑ |
| LicenseNumber | Text | ☑ |
| LicenseExpiry | Date | ☑ |
| Phone | Text | ☐ |
| Text | ☐ |
Klasa: Vehicle (Pojazd)
| Właściwość | Typ | Wymagane |
|---|---|---|
| RegistrationNumber | Text | ☑ |
| Brand | Text | ☑ |
| Model | Text | ☑ |
| Year | Integer | ☐ |
| PurchaseDate | Date | ☐ |
| Mileage | Integer | ☐ |
| DriverId | Reference (Driver) | ☐ |
| IsActive | Boolean | ☐ |
Klasa: Refueling (Tankowanie)
| Właściwość | Typ | Wymagane |
|---|---|---|
| VehicleId | Reference (Vehicle) | ☑ |
| Date | Date | ☑ |
| Liters | Decimal | ☑ |
| PricePerLiter | Decimal | ☐ |
| TotalCost | Decimal | ☑ |
| Mileage | Integer | ☐ |
| FuelType | Text | ☐ |
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
- Moduł Flota pojawi się w menu
- Dodaj kierowców
- Dodaj pojazdy i przypisz kierowców
- Rejestruj tankowania
Dobre praktyki
Nazewnictwo
| Zasada | Przykład dobry | Przykład zły |
|---|---|---|
| PascalCase dla klas | ProductCategory | product_category |
| Bez polskich znaków | Customer | Klient |
| Liczba pojedyncza | Order | Orders |
| Opisowe nazwy | InvoiceItem | II |
Struktura właściwości
- Podstawowe pola najpierw (Name, Code, itp.)
- Referencje w środku
- Flagi i statusy na końcu
- 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:
- Utwórz nową klasę z poprawną nazwą
- Przenieś dane (eksport → import)
- Dezaktywuj starą klasę
Nie widzę modułu w menu
- Sprawdź czy klasa jest Aktywna
- Sprawdź czy masz uprawnienia do modułu
- 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
- Szybki start - Podstawy obsługi systemu
- Dashboard i raporty - Tworzenie widgetów z danymi modułów
- AI Assistant - Automatyzacja pracy z danymi