Die Bildschirme
Die Tabellen-APIs, die die Daten liefern, und die vier Bildschirme der App — Dashboard, Liste der Konten, Datenblatt eines Kontos und Board der Verkaufschancen.
Das ist die längste Etappe des Leitfadens und die, die der App ein Gesicht gibt. Am Ende haben Sie vier Bildschirme entworfen, die auf den echten Daten des Modells laufen: ein Início mit Kennzahlen und einem Diagramm, eine Liste Contas, eine Ficha de Conta, die speichert, und ein Board Oportunidades mit Karten, die sich ziehen lassen.
Vor den Bildschirmen steht allerdings ein kurzer Schritt, der sie erst möglich macht.
Zuerst die Tabellen-APIs
Ein Bildschirm spricht nicht mit der Datenbank. Er spricht mit Datastores — den Datencontainern jedes Bildschirms — und die Datastores lesen und schreiben über die Tabellen-APIs der App. Eine Tabellen-API zeigt auf eine Entität des Modells und erzeugt von allein die Operationen zum Lesen und Schreiben.
Wir erstellen drei, eine pro Entität:
- Wählen Sie in der Seitenleiste das Panel Code.
- Klicken Sie in der Zeile APIs auf das + (Neue API).
- Schreiben Sie in Name
contas. Der Name ist die Basis der Operationen (getContas,addContas,updateContas,deleteContas) — geben Sie ihm deshalb keine Präfixe wiegetoderlistar. - Klicken Sie auf API erstellen. Der Builder öffnet sich im Tab Aufbau.
- Wählen Sie im Abschnitt Pipeline den Block Tabelle.
- Wählen Sie im Feld Tabelle
Dados CRM ▸ Contas. - Lassen Sie unter Bereitgestellte Aktionen Select, Insert, Update und Delete angehakt — das CRM braucht alle vier.
- Lassen Sie Öffentlicher Zugriff (ohne Sitzung) vollständig ausgeschaltet: Diese App ist für Menschen mit angemeldeter Sitzung.
- Prüfen Sie unter Enthaltene Felder, dass die Felder markiert sind, die die Bildschirme verwenden werden. Für die Konten sind es alle.
- Schalten Sie den Schalter Veröffentlicht ein und klicken Sie auf Speichern.

Wiederholen Sie es für die anderen beiden:
| API | Entität | Aktionen | Anmerkungen |
|---|---|---|---|
contas |
Contas | Select, Insert, Update, Delete | Alle Felder. |
contactos |
Contactos | Select, Insert, Update, Delete | Enthält den Navigator conta (nur das Feld nome). |
oportunidades |
Oportunidades | Select, Insert, Update, Delete | Enthält den Navigator conta (nur das Feld nome). |
Die Navigators sind das, was es erlaubt, den Namen des Kontos neben einer
Verkaufschance zu zeigen, ohne eine Zeile SQL zu schreiben: Markieren Sie sie
in der Liste der enthaltenen Felder, und das Feld conta.nome steht in den
Bildschirmen zur Verfügung.
Nota
Eine API im Entwurf ist nur für diejenigen sichtbar, die bauen. Wenn Sie vergessen, sie zu veröffentlichen, finden die Datastores der Bildschirme sie nicht — das ist die Ursache Nummer eins für „der Bildschirm lädt nichts“. Das Kapitel Der Builder der APIs behandelt die APIs im Detail.
Die vier Bildschirme erstellen
Die Bildschirme leben im Panel UI, im Abschnitt Bildschirme.
- Wählen Sie in der Seitenleiste das Panel UI.
- Klicken Sie in der Zeile Bildschirme auf den Button Neuer Bildschirm.
- Schreiben Sie den Namen und bestätigen Sie mit Erstellen. Der Bildschirm öffnet sich sofort im Arbeitsbereich.

Erstellen Sie alle vier auf einmal, in dieser Reihenfolge:
| Name des Bildschirms | Route | Was er werden soll |
|---|---|---|
Início |
/inicio |
Das Vertriebspanel, mit Kennzahlen und Diagramm. |
Contas |
/contas |
Die Liste der Konten. |
Ficha de Conta |
/ficha-de-conta |
Das Formular eines Kontos. |
Oportunidades |
/oportunidades |
Das Kanban-Board. |
Die Route wird aus dem Namen abgeleitet und ist im Inspektor zu sehen (und zu bearbeiten), wenn kein Widget ausgewählt ist. Lassen Sie sie, wie sie sind — der Leitfaden bezieht sich später auf sie.
Dica
Arbeiten Sie in diesem ganzen Leitfaden immer auf dem Gerät Web (1280px). Die anderen beiden — Tablet und Mobil — haben ihr eigenes, unabhängiges Design; sie kommen später an die Reihe, wenn das Design für Web stabil ist.
Der Bildschirm Início — das Vertriebspanel
Öffnen Sie den Bildschirm Início. Das Design hat vier Teile: einen Titel, einen Streifen mit Kennzahlen, ein Diagramm und eine Tabelle.
Der Titel
- Ziehen Sie eine Beschriftung aus der Palette an den oberen Rand des Canvas.
- Schreiben Sie in der Kategorie Inhalt des Inspektors den Text
Vertriebspanel. - Erhöhen Sie in der Kategorie Aussehen die Größe des Textes — es ist der Titel der Seite.
Der Streifen mit Kennzahlen
Vier Zahlen nebeneinander macht man mit einem Widget KPI mit vier Indikatoren, nicht mit vier Widgets: Ausrichtung und Abstände sind damit garantiert.
- Ziehen Sie ein KPI unter den Titel und ziehen Sie es auf die volle Breite.
- In der Kategorie Daten beginnt der Abschnitt Indikatoren mit einem Indikator. Nutzen Sie Indikator hinzufügen, bis Sie vier haben.
- Jeder Indikator hat eine Beschriftung, ein Symbol, eine Eigene Datenmenge (seinen Datastore) und einen Wert mit Aggregation.
Konfigurieren Sie sie so:
| Beschriftung | Datastore (Tabellen-API) | Filter | Wert |
|---|---|---|---|
Aktive Konten |
contas |
— | Anzahl von id |
Offene Verkaufschancen |
oportunidades |
fase ≠ fechada_ganha und fase ≠ fechada_perdida |
Anzahl von id |
Wert in der Pipeline |
oportunidades |
derselbe Filter | Summe von valor |
In diesem Quartal abgeschlossen |
oportunidades |
fase = fechada_ganha |
Summe von valor |
Öffnen Sie bei den beiden Geldindikatoren das Format und wählen Sie die Währung EUR mit null Nachkommastellen — 475.850 liest sich besser als 475850.
Das Diagramm
- Ziehen Sie ein Diagramm in die linke Hälfte, unter das KPI.
- Erstellen Sie in der Kategorie Daten den Listen-Datastore auf der API
oportunidades. - Wählen Sie unter Typ des Diagramms die Option Balken.
- Wählen Sie unter Kategoriefeld (X-Achse / Segmente) das Feld
fase. - Fügen Sie unter Wertfelder
valorhinzu. - Schalten Sie in der Kategorie Aussehen Titel anzeigen ein und
schreiben Sie
Pipeline nach Phase.
Die Tabelle der nächsten Abschlüsse
- Ziehen Sie eine Tabelle in die rechte Hälfte, neben das Diagramm.
- Erstellen Sie in der Kategorie Daten den Listen-Datastore auf
oportunidades, mit dem Filter der offenen Phasen (demselben wie bei den Kennzahlen), sortiert nachdata_fechoaufsteigend und Pro Seite auf - Definieren Sie in der Kategorie Daten, Abschnitt Spalten, vier Spalten:
| Feld | Überschrift |
|---|---|
titulo |
Verkaufschance |
conta.nome |
Konto |
valor |
Wert (€) |
data_fecho |
Abschluss |
- Schalten Sie Titel anzeigen ein und schreiben Sie
Nächste Abschlüsse.

Der Bildschirm Contas — die Liste
Öffnen Sie den Bildschirm Contas. Es sind drei Widgets.
- Eine Beschriftung oben, mit dem Text
Konten. - Ein Button in der oberen rechten Ecke: in der Kategorie Inhalt der
Text
Neues Kontound das Symbolplus. - Eine Tabelle, die den Rest des Bildschirms einnimmt. Erstellen Sie in
der Kategorie Daten den Listen-Datastore auf der API
contas, sortiert nachnomeaufsteigend, und definieren Sie die Spalten:
| Feld | Überschrift |
|---|---|
nome |
Name |
sector |
Branche |
cidade |
Stadt |
telefone |
Telefon |
email |
E-Mail |
estado |
Status |
Es fehlen noch die zwei Gesten, die diese Liste zu etwas nütze machen. Beide schreibt man in der Kategorie Ereignisse, in TypeScript:
Beim Button, im Ereignis onClick — das leere Datenblatt öffnen, um
anzulegen:
keplin.nav.go("/ficha-de-conta");
Bei der Tabelle, im Ereignis onRowClick — das Datenblatt der
angeklickten Zeile öffnen:
keplin.nav.go("/ficha-de-conta/" + keplin.event.row.id);

Nota
keplin.event.row ist die Zeile, auf die der Benutzer geklickt hat, mit
allen Feldern des Datastores. Deshalb reicht row.id, um die Adresse des
Datenblatts zusammenzusetzen.
Der Bildschirm Ficha de Conta — das Formular
Das ist der Bildschirm mit den meisten Teilen und der, der am besten zeigt, wie die Daten funktionieren. Öffnen Sie den Bildschirm Ficha de Conta.
Der Parameter der Route
- Klicken Sie auf eine leere Stelle des Canvas — der Inspektor zeigt nun den Bildschirm.
- Klicken Sie im Abschnitt Routen-Parameter auf + Parameter
hinzufügen und schreiben Sie
id. - Lassen Sie Erforderlich ausgeschaltet. Das ist Absicht: Ohne
idöffnet der Bildschirm leer, und genau so dient dasselbe Formular dazu, ein neues Konto anzulegen.
Die Route lautet nun /ficha-de-conta/:id.

Die zwei Datastores des Bildschirms
Noch immer mit ausgewähltem Bildschirm, in der Kategorie Daten:
- Klicken Sie auf + Datensatz. Klicken Sie auf den erstellten Datastore, um das Modal Datastore konfigurieren zu öffnen.
- Schreiben Sie in Name des Datastores
conta. - Wählen Sie unter Tabellen-API
contas. - Klicken Sie unter Welcher Datensatz geladen wird (Schlüssel) auf +
Schlüsselfeld und bauen Sie die Bedingung: Feld
id, Operatoreq, Wert Param ▸id. - Lassen Sie Automatisch laden eingeschaltet und schließen Sie mit Fertig.

Nun der zweite, für die Kontakte des Kontos:
- Klicken Sie auf + Liste und öffnen Sie ihn.
- Name
contactosConta, Tabellen-APIcontactos. - Fügen Sie unter Filter (where) hinzu: Feld
conta_id, Operatoreq, Wert Param ▸id. - Sortieren Sie nach
nomeaufsteigend.
Dica
Ohne Bedingungen im Schlüssel lädt ein Datensatz-Datastore einen neuen,
leeren Datensatz. Genau dieses Verhalten erspart einen zweiten Bildschirm
zum „Konto anlegen“: ohne id geöffnet, beginnt das Formular leer und das
Speichern führt ein Einfügen aus.
Das Formular
- Ziehen Sie ein Panel in die linke Hälfte des Canvas. Schalten Sie in
der Kategorie Aussehen Titel anzeigen ein und schreiben Sie
Daten des Unternehmens. - Ziehen Sie die Textfelder in das Panel hinein — ein Widget innerhalb
eines Panels loszulassen macht es zu dessen Kind. Schreiben Sie für jedes
in der Kategorie Inhalt die Beschriftung und wählen Sie in der
Kategorie Daten, Abschnitt Datenbindung, den Datastore
contaund das Feld:
| Beschriftung | Feld | Erforderlich |
|---|---|---|
Name |
nome |
ja |
Steuernummer |
nif |
nein |
Branche |
sector |
nein |
Stadt |
cidade |
nein |
Telefon |
telefone |
nein |
E-Mail |
email |
nein |
- Nehmen Sie für den Status eine Auswahlliste statt eines Textfelds:
Beschriftung
Status, gebunden anconta▸estado, Erforderlich eingeschaltet, und feste Optionen:
| Wert | Beschriftung |
|---|---|
ativo |
Aktiv |
prospeto |
Interessent |
inativo |
Inaktiv |
- Ziehen Sie eine Tabelle rechts neben das Panel, gebunden an den
Datastore
contactosConta, mit den Spaltennome(Name),cargo(Position) undtelefone(Telefon) und dem TitelKontakte dieses Kontos.
Speichern und zurück
Zwei Buttons unter dem Panel, mit dem jeweiligen Ereignis onClick:
Speichern (Symbol save):
const ok = await keplin.data.store("conta").save();
if (ok) {
keplin.ui.toast("Konto gespeichert");
keplin.nav.go("/contas");
}
Zurück (Symbol arrow-left):
keplin.nav.go("/contas");
save() validiert zuerst — Pflichtfelder und Regeln — und speichert nur,
wenn alles durchgeht; es gibt true zurück, wenn gespeichert wurde. Deshalb
stehen der Hinweis und die Navigation innerhalb des if.
Der Bildschirm Oportunidades — das Kanban-Board
Öffnen Sie den Bildschirm Oportunidades.
- Eine Beschriftung oben, mit dem Text
Verkaufschancen. - Ziehen Sie ein Kanban darunter, über die volle Breite.
- Erstellen Sie in der Kategorie Daten den Listen-Datastore auf der API
oportunidades(ohne Filter — das Board zeigt alles), mit Pro Seite auf 50. - Wählen Sie unter Statusfeld (Spalte) das Feld
fase. Dieses Feld sagt, in welcher Spalte jede Karte lebt — und es ist das, was geschrieben wird, wenn jemand eine Karte zieht. - Wählen Sie unter Quelle der Spalten die Option Statisch und nutzen Sie + Spalte hinzufügen sechsmal:
| Wert | Beschriftung | Farbe |
|---|---|---|
prospecao |
Akquise |
grau |
qualificacao |
Qualifizierung |
blau |
proposta |
Angebot |
bernstein |
negociacao |
Verhandlung |
lila |
fechada_ganha |
Gewonnen |
grün |
fechada_perdida |
Verloren |
rot |
- Schalten Sie Karten ziehen erlauben und Anzahl der Karten ein; lassen Sie Spalte „Ohne Kategorie“ ausgeschaltet.
- Sagen Sie unter Vorlage der Karte, was jede Karte zeigt:
| Feld | Rolle |
|---|---|
titulo |
Titel |
conta.nome |
Beschriftung |
valor |
Wert |
- Fügen Sie unter dem Board eine Tabelle mit dem Titel
Alle Verkaufschancenhinzu, gebunden an einen Listen-Datastore aufoportunidades, mit den Spaltentitulo,conta.nome,valor,fase,data_fechoundresponsavel.

Nota
Eine Karte von einer Spalte zu ziehen speichert den neuen Wert von fase
im Datensatz, über die Tabellen-API — deshalb funktioniert das Ziehen nur,
wenn der Datastore einen Primärschlüssel hat und die API die Aktion
Update aktiv hat.
Das Ergebnis ansehen
In den Bildschirmen gibt es keinen Speichern-Button: Die Änderungen speichern sich von allein, und die obere rechte Ecke sagt, wie es steht (Wird gespeichert…, Gespeichert).
Um den Bildschirm in echt zu sehen, klicken Sie auf Vorschau: Die Plattform speichert, was noch aussteht, und öffnet den Bildschirm in der echten App, in einem neuen Tab des Browsers. Sie gehen wie jeder Benutzer durch das Login — die Konten, die in die App hereinkommen, werden in der Etappe Veröffentlichen und nutzen angelegt, und bis dahin können Sie das nehmen, was es schon gibt.
Warum nicht…?
- Warum erscheint meine API nicht in der Liste der Datastores? Die API ist ein Entwurf. Öffnen Sie sie und schalten Sie Veröffentlicht ein.
- Warum öffnet sich immer ein leeres Datenblatt? Der Datensatz-Datastore
hat keine Bedingungen unter Welcher Datensatz geladen wird (Schlüssel),
oder der Parameter
idkommt nicht über die Route an. Prüfen Sie, dass die Route/ficha-de-conta/:idlautet. - Warum sehe ich die Spalte
conta.nomenicht? Der Navigator ist nicht in den Enthaltenen Feldern der Tabellen-API enthalten — oder der Datastore wurde konfiguriert, bevor Sie ihn markiert haben. Öffnen Sie Datastore konfigurieren erneut und wählen Sie die API noch einmal, um das Abbild der Felder aufzufrischen. - Warum lässt das Kanban nicht ziehen? Es fehlt der Primärschlüssel im Datastore oder die Aktion Update in der Tabellen-API.
- Warum ist das Diagramm leer? Das Kategoriefeld oder die Wertfelder sind nicht gewählt — oder der Filter des Datastores lässt keine einzige Zeile durch.
Die Bildschirme existieren, aber es gibt noch keinen Weg, zwischen ihnen zu springen. Nächste Etappe: Navigation und Theme.