KEPLIN Docs

Datastorer og data

Hvordan en skjerm laster, filtrerer og lagrer data — post- og liste-datastorer, nøkler, filtre, paginering og databindingene.

En skjerm snakker ikke direkte med databasen: den snakker med datastorer — skjermens databeholdere, som laster poster gjennom tabell-API-ene i appen. Widgetene bindes til datastorene: en Tabell viser radene fra en liste-datastore, feltene i et skjema leser og skriver i en post-datastore.

Dette er leddet mellom to kapitler: tabell-API-ene lages oppå datamodellen (kapitlet API-er & GraphQL); her bindes skjermen til dem.

De to typene datastore

Type Hva den laster Til hva
Post ÉN post (eller en ny, tom post) Skjemaer: feltene bindes til feltene i posten, og til slutt lagres det.
Liste En samling poster Tabeller, lister, kort, diagrammer, kanbaner, kalendere.

Datastorene kan bo på to steder:

  • På skjermen — opprettet i inspektøren uten noe valgt, i kategorien Data. De er delte: flere widgets kan lese fra den samme, og det er det som brukes til skjemaer og til master–detalj-forhold.
  • Inne i en widget — datawidgetene (Tabell, Diagram, KPI…) har sin egen datastore i kategorien Data hos seg. Det er det vanligste tilfellet for uavhengige rutenett og diagrammer.

Motoren er den samme begge steder; den eneste forskjellen ligger i verdikildene som er tilgjengelige i filtrene (se bindingene).

Opprette en datastore på skjermen

  1. Klikk på et tomt område på canvaset så inspektøren viser skjermen.
  2. I kategorien Data, klikk på + post eller + liste.
  3. Klikk på den opprettede datastoren for å åpne vinduet Konfigurer datastore.
  4. Gi den et Navn på datastoren — det er med dette navnet widgetene og koden finner den (f.eks. conta, contas).
  5. Under Tabell-API, velg API-en som leverer dataene. Feltene i API-en blir tilgjengelige for kolonner, bindinger og filtre.

Kategorien Data på skjermen Ficha de Conta: post-datastoren, liste-datastoren og knappene + post / + liste.
Kategorien Data på skjermen Ficha de Conta: post-datastoren, liste-datastoren og knappene + post / + liste.

Nota

Uten publiserte tabell-API-er varsler velgeren: Ingen publiserte tabell-API-er i denne appen. Opprett først API-en oppå entiteten i modellen — det er et steg i kapitlet API-er & GraphQL.

Post-datastore — hvilken post som skal lastes

En post-datastore svarer på ett spørsmål: hvilken post? Svaret gis under Hvilken post som skal lastes (nøkkel):

  1. Klikk på + nøkkelfelt.
  2. Velg feltet (som standard primærnøkkelen), operatoren og verdien — typisk en Param fra ruten: skjermen Ficha de Conta mottar id i adressen og laster kontoen med den id-en.
  3. Flere betingelser danner en sammensatt nøkkel — alle må stemme.

Uten betingelser laster datastoren en ny (tom) post — det er slik den samme skjemaskjermen også tjener til å opprette: åpnet uten id, starter den blank; lagret, gjør den innsettingen.

Liste-datastore — filtre og innlasting

Filtre (where)

Filtre (where) er betingelser som brukes hver gang dataene leses — det er her du begrenser hva som kommer fra databasen. Hver betingelse er felt / operator / verdi; + legg til filter legger til betingelser og + gruppe lager nestede undergrupper, med Alle (AND) eller Minst én (OR) som avgjør hvordan de kombineres.

Eksempel fra Gestão de Clientes: skjermen Contas filtrerer estado eq "activa"; panelet «mine kontoer» legger til gestor eqØktusername.

Innlasting og side

Alternativ Hva det gjør
Last inn alt Henter alle postene i filteret på én gang — sidebytte, sortering og filtrering på skjermen blir umiddelbart.
Én side om gangen Går til serveren ved hvert sidebytte — for store tabeller, der det ikke gir mening å hente alt.
Per side Hvor mange rader som vises av gangen på skjermen — ikke å forveksle med hvor mange poster som leses.
Last inn automatisk Lese dataene så snart skjermen åpnes. Slå av hvis du heller vil laste først etter en handling (en «Søk»-knapp, for eksempel).

Dica

Uansett modus, bruk Filtre (where) til å begrense hva som leses. «Last inn alt» med et anstendig filter er raskt; uten noe filter er det å be om hele tabellen.

Bindingene — hvor en verdi kommer fra

Hver gang et filter, en nøkkel eller en egenskap trenger en verdi, bruker du den samme brikken: bindingen. Den første velgeren sier kilden; resten endrer seg etter den:

Kilde Hva det er
Fast En verdi skrevet der og da, lik for alle.
Param En ruteparameter for skjermen (seksjonen Ruteparametere).
Økt Et felt fra den påloggede brukeren (userId, username, name).
Tilstand En verdi lagret i appens minne med keplin.state.set() — tilgjengelig på alle skjermer.
Datastore Et felt fra en annen datastore på skjermen — grunnlaget for master–detalj.
Widget Den nåværende verdien til en annen input-widget — grunnlaget for interaktive filtre.

Kildene Datastore og Widget finnes bare i datastorene inne i widgets — de avhenger av resten av skjermen. I skjermens datastorer er det de fire første som gjelder.

Med disse brikkene bygges hverdagsmønstrene uten kode:

  • Master–detalj — tabellen over salgsmuligheter for kontoen: i datastoren til tabellen, filteret contaId eqDatastorecontaid. Å velge en annen konto laster detaljen på nytt.
  • Tekstfilter — et Tekstfelt «søk» og, i datastoren til tabellen, nome containsWidget ▸ feltet. (For å filtrere først ved klikk på en knapp gjøres det via hendelse — se Hendelser og SDK-et.)

Binde skjemafelt til en post

Hvert skjemafelt har, i kategorien Data, seksjonen Databinding: velg post-datastoren og feltet. Fra da av viser inputen den lastede verdien, og endringene blir liggende i datastoren — ulagret — til noen lagrer.

Det siste steget er en knapp hvis hendelse lagrer:

const ok = await keplin.data.store("conta").save();
if (ok) {
  keplin.ui.toast("Gravado.", "success");
}

Denne koden er nøyaktig det den forhåndsdefinerte handlingen Lagre datastore i hendelseseditoren setter inn for deg. save() validerer først (påkrevde felt, regler, valideringsskript) og lagrer bare hvis alt passerer; den gir tilbake true hvis den lagret.

Skjermen Ficha de Conta: skjemafelt bundet til post-datastoren, klare til å lagres.
Skjermen Ficha de Conta: skjemafelt bundet til post-datastoren, klare til å lagres.

Vinduet Konfigurer datastore, felt for felt

Vinduet Konfigurer datastore: API, nøkkel/filtre, innlasting og side.
Vinduet Konfigurer datastore: API, nøkkel/filtre, innlasting og side.

Felt Post Liste
Navn på datastoren
Tabell-API
Hvilken post som skal lastes (nøkkel)
Filtre (where)
Innlasting / Per side
Last inn automatisk

Datastorer på offentlige skjermer

På en skjerm merket Offentlig skjerm (uten økt) kommer dataene kun fra API-er med offentlig lesing: velgeren viser bare dem, og en allerede valgt API som ikke er offentlig blir markert — Denne API-en har ikke offentlig lesing — på en skjerm uten økt laster den ikke data. Lesingen merkes som offentlig i API-editoren.

Dataene i koden

Alt datastorene gjør finnes også i SDK-et for hendelsene — keplin.data.store("navn") gir tilbake datastoren etter navnet, med reload(), setWhere(), get()/set()/save() og resten. Kapitlet Hendelser og SDK-et går gjennom det.

Hvorfor ikke…?

  • Hvorfor lastes det ikke data? Sjekk, i rekkefølge: er Last inn automatisk på? Finnes API-en du valgte, og er den publisert? På en offentlig skjerm, er lesingen i API-en offentlig? Ekskluderer filteret alt?
  • Hvorfor åpnes alltid en tom post? Post-datastoren har ingen betingelser under Hvilken post som skal lastes (nøkkel) — eller parameteren som brukes i betingelsen kommer ikke fram i ruten.
  • Hvorfor endret jeg modellen uten at den nye kolonnen vises? Datastoren tar vare på et bilde av feltene i API-en fra da du valgte den. Åpne Konfigurer datastore på nytt og velg API-en igjen for å oppdatere bildet.
  • Hvorfor er pagineringen treg? Du står i Én side om gangen med mange turer til serveren — eller i Last inn alt uten filtre på en enorm tabell. Tilpass moduset til den virkelige størrelsen på dataene.