Orbito - Dokumentacja modułówOrbito - Dokumentacja modułów
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
Wprowadzenie
Pierwsze kroki
API
Komunikacja
Widoki
Wdrożenie
Społeczność
For AI agents
  • Widoki

    • Widoki stron modułu
    • OrbitoViewEngine (OVE)
    • Widoki HTML i Vue
    • Rozszerzanie widoków przez hooki

OrbitoViewEngine (OVE)

Czym jest OVE?

OVE to deklaratywny silnik renderujący widoki na podstawie opisu w formacie JSON. Moduł zwraca strukturę danych – platforma Orbito przekształca ją w spójny interfejs zgodny z aktualnym szablonem wizualnym (Tabler UI / Bootstrap).

Dzięki temu moduł nie musi wiedzieć nic o HTML, CSS ani strukturze strony. Wystarczy opisać co ma się pojawić – silnik zadba o jak.

Struktura odpowiedzi strony

Handler strony musi zwrócić obiekt z type: 'ove' i polem template zawierającym opis widoku:

module.exports = async function(companyId, instanceId, body, params) {
    return {
        type: 'ove',
        template: {
            type: 'card',
            title: 'Moja strona',
            content: [
                { type: 'text', content: 'Witaj!' }
            ]
        }
    };
};

Pole template to obiekt widoku OVE – dowolny komponent z pełnej listy komponentów.

Teksty w schemacie widoku – na razie tylko string

W przeciwieństwie do Pages.registerSettingsSections, Config.registerConfigBlocks, Problems.report i History.add, pola tekstowe w schemacie widoku OVE (title, content itp.) przyjmują wyłącznie zwykły string – panel nie rozwiązuje tu mapy językowej { pl, en }. Jeśli strona ma być dwujęzyczna, zbuduj string po stronie modułu (np. na podstawie języka z ctx/nagłówka żądania).

Dostępne komponenty

Pełna dokumentacja wszystkich komponentów (parametry, przykłady, zdarzenia) dostępna jest tutaj:

➜ Dokumentacja komponentów OVE

Dostępne typy: badge, button, card, datatable, list, input, modal, row, select, text.

Przykłady

Prosta strona z kartą i tekstem

return {
    type: 'ove',
    template: {
        type: 'card',
        title: 'Informacje',
        content: [
            { type: 'text', content: 'Moduł działa poprawnie.' }
        ]
    }
};

Formularz konfiguracyjny z przyciskiem zapisu

return {
    type: 'ove',
    template: {
        type: 'card',
        title: 'Ustawienia',
        content: [
            {
                type: 'row',
                cols: [
                    {
                        size: 6,
                        childs: [
                            {
                                type: 'input',
                                name: 'apiKey',
                                label: 'Klucz API',
                                value: config?.apiKey || '',
                                groups: ['form']
                            }
                        ]
                    }
                ]
            }
        ],
        footer: {
            type: 'button',
            label: 'Zapisz',
            variant: 'primary',
            onClick: {
                action: 'callMethod',
                module: 'my/module',
                method: 'saveConfig',
                withData: ['#form']
            }
        }
    }
};

Tabela danych z akcjami wierszy

return {
    type: 'ove',
    template: {
        type: 'datatable',
        id: 'itemsTable',
        columns: [
            { header: 'Nazwa', field: 'name' },
            {
                header: 'Akcje',
                width: '120px',
                template: {
                    type: 'button',
                    label: 'Edytuj',
                    size: 'sm',
                    outline: true,
                    onClick: {
                        action: 'emit',
                        event: 'generatePage',
                        data: { module: 'my-module', page: 'edit/{{ _id }}' }
                    }
                }
            }
        ],
        dataSource: {
            module: 'my-module',
            method: 'listItems'
        }
    }
};
Ostatnio zaktualizowano:: 24.09.2026, 12:17
Contributors: Wiktor Koźmiński, Claude Opus 5.5 (1M context)
Prev
Widoki stron modułu
Next
Widoki HTML i Vue