Skip to main content

Standardna knjiznica

93 ponovno uporabnih obnasanj, organiziranih kot atomi, molekule in organizmi.


Pregled

Standardna knjiznica zagotavlja 93 ponovno uporabnih obnasanj za aplikacije Orb, organiziranih v treh nivojih:

NivoSteviloVlogaPrimeri
Atomi50Samostojni, nereducibilni avtomati stanjstd-browse, std-modal, std-search, std-filter, std-timer
Molekule18Sestavijo atome prek skupnega vodila dogodkovstd-list, std-cart, std-detail, std-messaging
Organizmi25Sestavijo molekule v celotne aplikacijestd-ecommerce, std-crm, std-lms, std-helpdesk

Vsako obnasanje je cista funkcija, ki vrne celotno OrbitalDefinition (entiteta + lastnosti + strani). Poklicete jo s parametri (ime entitete, polja, pot strani) in dobite strukturo .orb, pripravljeno za prevajanje.

import { stdList } from '@almadar/std/behaviors/functions';

const orbital = stdList({
entityName: 'Product',
fields: [
{ name: 'title', type: 'string', required: true },
{ name: 'price', type: 'number', required: true },
],
pagePath: '/products',
pageTitle: 'Products',
});
// Vrne: entiteta + 4 lastnosti (browse, create, edit, view) + 1 stran

Model sestavljanja

Atomi: gradniki

Atomi so nereducibilni. Vsak je ena lastnost z enim avtomatom stanj. Med seboj se ne poznajo.

std-browse: Browsing ──INIT──► Browsing (fetch + render list)
std-modal: Closed ──OPEN──► Open ──CLOSE──► Closed
std-search: Idle ──SEARCH──► Searching ──RESULTS──► Idle
std-filter: Idle ──FILTER──► Filtered ──CLEAR──► Idle

Molekule: sestavljeni atomi

Molekule kombinirajo atome z uporabo extractTrait (izvlecenje lastnosti) in wire (povezovanje emit/listen dogodkov med lastnostmi). Molekula NI novo obnasanje. So atomi, povezani skupaj.

std-list = std-browse + std-modal(create) + std-modal(edit) + std-modal(view)
└─ browse oddaja SELECT ──► view poslusa
└─ create oddaja SAVED ──► browse poslusa (osvezitev)
└─ edit oddaja SAVED ──► browse poslusa (osvezitev)
import { stdBrowse, stdModal } from '@almadar/std/behaviors/functions';
import { connect, compose } from '@almadar/core/builders';

// std-list je priblizno ta sestava:
const browseTrait = extractTrait(stdBrowse({ entityName: 'Product', ... }));
const createTrait = extractTrait(stdModal({ mode: 'create', ... }));
const editTrait = extractTrait(stdModal({ mode: 'edit', ... }));
const viewTrait = extractTrait(stdModal({ mode: 'view', ... }));

// Povezi dogodke med lastnostmi
wire(createTrait, 'PRODUCT_CREATED', browseTrait, 'INIT');
wire(editTrait, 'PRODUCT_UPDATED', browseTrait, 'INIT');

// Sestavi v eno Orbital enoto
const orbital = compose({
entityName: 'Product',
traits: [browseTrait, createTrait, editTrait, viewTrait],
pages: [{ path: '/products', traits: ['ProductBrowse', 'ProductCreate', 'ProductEdit', 'ProductView'] }],
});

Organizmi: celotne aplikacije

Organizmi sestavijo molekule v vecstranske aplikacije z med-entitetnim povezovanjem.

std-ecommerce = std-list(Product) + std-cart(CartItem) + std-wizard(Checkout)
└─ Product browse oddaja ADD_TO_CART ──► Cart poslusa
└─ Cart oddaja CHECKOUT ──► Checkout poslusa
└─ Checkout oddaja ORDER_PLACED ──► Cart poslusa (pocisti)

Katalog obnasanj

Atomi (50)

Interakcija z UI

ObnasanjeOpis
std-browseSeznam entitet s fetch, upodabljanje kot data-grid ali entity-cards
std-modalOdpri/zapri prekrivanje za ustvarjanje, urejanje ali ogled
std-drawerDrsni panel z roba zaslona
std-tabsPreklapljanje zavihkov s paneli vsebine
std-wizardVeckoracni obrazec z navigacijo naprej/nazaj
std-confirmationDa/ne dialog pred destruktivnimi dejanji
std-displayPodrobnostni pogled entitete samo za branje
std-inputVnos obrazca s preverjanjem
std-uploadNalaganje datotek z napredkom
std-galleryGalerija slik s svetlobnim oknom
std-flip-cardKartica z animacijo obracanja spredaj/zadaj
std-ratingVnos ocene z zvezdami ali stevilkami
std-text-effectsAnimirano besedilo (pisalni stroj, bledenje itd.)
std-themePreklapljanje tem (svetla/temna/prilagojena)

Upravljanje podatkov

ObnasanjeOpis
std-searchVnos iskanja z zakasnjeno poizvedbo + filtrirani rezultati
std-filterKontrolniki filtrov, ki zozijo nabor podatkov
std-sortKontrolniki razvrscanja za stolpce
std-paginationNavigacija po straneh za velike nabore podatkov
std-selectionVeckratna izbira s potrditvenimi polji
std-undoSklad razveljavi/ponovi za reverzibilna dejanja
std-calendarIzbirnik datumov / pogled koledarja

Asinhrono + stanje

ObnasanjeOpis
std-asyncAvtomat stanj nalaganje/uspeh/napaka za asinhrone operacije
std-loadingVrtalka nalaganja s casom izteka
std-timerOdstevalnik ali stoperica
std-notificationObvestila toast s samodejnim zapiranjem
std-cache-asideVzorec cache-aside (preveri predpomnilnik, pridobi ce ni zadetka)
std-circuit-breakerOdklopnik tokokroga za neuspesne zunanje klice
std-rate-limiterOmejevalnik hitrosti za API klice

Jedro igre

ObnasanjeOpis
std-combatSistem boja na poteze ali v realnem casu
std-movementPremikanje na mrezi ali prosto premikanje na zemljevidu
std-collisionZaznavanje trkov med igralnimi objekti
std-physics2d2D fizikalna simulacija (gravitacija, hitrost)
std-questSledenje nalog/misij s cilji
std-overworldSvetovni zemljevid z izbiro lokacije
std-gameflowAvtomat stanj igre (meni, igranje, pavza, konec igre)
std-spriteAnimacija duhcev s sekvencami okvirjev
std-scoreSledenje rezultatu z mnozevalniki

UI igre

ObnasanjeOpis
std-game-hudPrikazovalnik na zaslonu (zdravje, mana, mini zemljevid)
std-score-boardLestvica / najboljsi rezultati
std-game-menuGlavni meni, nastavitve, zasluge
std-game-over-screenKonec igre s ponovnim poskusom/izhodom
std-dialogue-boxDialog z NPC-ji z izbirami
std-inventory-panelMreza inventarja s potegni in spusti
std-combat-logDrseci dnevnik bojnih dogodkov
std-game-audioUpravljanje glasbe in zvocnih ucinkov

Platno igre

ObnasanjeOpis
std-game-canvas2dZanka za upodabljanje na 2D platnu
std-game-canvas3d3D platno z integracijo Three.js
std-isometric-canvasIzometricno platno igre na plosicah
std-platformer-canvasPlatno za stransko drseco plosincarsko igro
std-simulation-canvasPlatno za fizikalno/delcno simulacijo

Molekule (18)

ObnasanjeSestavljeno izOpis
std-listbrowse + modal(create/edit/view)Celoten CRUD seznam z modalnimi okni za ustvarjanje, urejanje, ogled
std-detaildisplay + modal(edit)Podrobnostni pogled z vgrajenim urejanjem
std-cartbrowse + selection + confirmationNakupovalni voz z dodajanjem/odstranjevanjem/zakluckom nakupa
std-inventorybrowse + selection + modalUpravljanje zalog s sledenjem
std-messagingbrowse + input + asyncSeznam sporocil v realnem casu s posiljanjem
std-geospatialbrowse + modal + mapLokacijski podatki z oznakami na zemljevidu
std-form-advancedwizard + input + validationVecrazdelcni obrazec s pogojnimi polji
std-quizwizard + score + timerCaskovno omejen kviz s tockovanjem
std-turn-based-battlecombat + score + game-hudSistem boja na poteze
std-platformer-gamemovement + collision + physics2dMehanika stranske drsece plosincarke
std-puzzle-gameselection + score + timerIgra ugank s stetjem potez
std-builder-gameselection + inventory + canvasMehanika igre gradnje/obrtnistva
std-classifier-gameselection + score + timerIgra razvrscanja/klasifikacije
std-sequencer-gametimer + score + inputIgra pomnjenja zaporedij
std-debugger-gamebrowse + selection + scoreIgra iskanja napak
std-negotiator-gamedialogue + score + timerIgra pogajanj/dialogov
std-simulator-gamesimulation-canvas + timer + scoreIgra fizikalne simulacije
std-event-handler-gametimer + score + inputReakcijska igra vodena z dogodki

Organizmi (25)

ObnasanjeDomenaOpis
std-ecommerceTrgovinaKatalog izdelkov + voz + zaklucek nakupa
std-crmProdajaUpravljanje kontaktov/poslov/cevovodov
std-lmsIzobrazevanjeSledenje tecajev/lekcij/napredka
std-cmsVsebinaUpravljanje clankov/strani/medijev
std-helpdeskPodporaTriaza zahtevkov, preiskava, resitev
std-hr-portalKadrovskaUpravljanje zaposlenih/dopustov/ocen
std-social-feedDruzabnaVir objav/komentarjev/vseckov
std-project-managerVodenje projektovUpravljanje nalog/sprintov/tabel
std-booking-systemGostinstvoUpravljanje sob/terminov/rezervacij
std-finance-trackerFinanceSledenje transakcij/proracunov/porocil
std-healthcareZdravstvoUpravljanje pacientov/terminov/kartotekov
std-realtime-chatKomunikacijaKlepetalnice z sporocili v realnem casu
std-trading-dashboardFinanceTrzni podatki + izvajanje narocil
std-iot-dashboardIoTNadzor naprav + opozorila
std-devops-dashboardDevOpsZdravje storitev + sledenje namestitev
std-cicd-pipelineDevOpsCevovod gradnje/testiranja/namescanja
std-api-gatewayInfrastrukturaUpravljanje poti/omejitev/avtentikacije
std-coding-academyIzobrazevanjeInteraktivne lekcije programiranja
std-stem-labIzobrazevanjeSimulacije naravoslovnih eksperimentov
std-logic-trainingIzobrazevanjeVadba logicnih ugank
std-rpg-gameIgreIgra vlog s poslanstvi + bojem
std-platformer-appIgreCelotna plosincarjeva igra
std-puzzle-appIgreZbirka ugankacijskih iger
std-strategy-gameIgreStrateska igra na poteze
std-arcade-gameIgreKlasicna arkadna mehanika iger

Uporaba obnasanj

Kot ciste funkcije

import { stdList, stdEcommerce } from '@almadar/std/behaviors/functions';

// Preprosto: ena entiteta s CRUD
const tasks = stdList({
entityName: 'Task',
fields: [
{ name: 'title', type: 'string', required: true },
{ name: 'status', type: 'enum', values: ['todo', 'doing', 'done'] },
],
pagePath: '/tasks',
});

// Kompleksno: vec-entitetna e-trgovina
const shop = stdEcommerce({
productEntity: 'Product',
productFields: [...],
cartEntity: 'CartItem',
orderEntity: 'Order',
});

Kot zlati .orb programi

Vsako obnasanje je tudi izvozeno kot .orb datoteka v @almadar/std/behaviors/exports/:

# Seznam vseh razpolozljivih obnasanj
ls node_modules/@almadar/std/behaviors/exports/atoms/
ls node_modules/@almadar/std/behaviors/exports/molecules/
ls node_modules/@almadar/std/behaviors/exports/organisms/

Ti zlati programi jih uporabljajo:

  • Prevajalnik Orb za ujemanje obnasanj
  • Agent AI za generiranje programov
  • Nacrtovalec Masar za strukturno primerjavo

Sestavljanje prilagojenih obnasanj

import { stdBrowse, stdModal, stdSearch } from '@almadar/std/behaviors/functions';
import { compose, wire, extractTrait } from '@almadar/core/builders';

// Ustvarite prilagojeno molekulo: iskalni seznam z modalnim oknom za ustvarjanje
const searchableCatalog = compose({
appName: 'Catalog',
orbitals: [
stdBrowse({ entityName: 'Item', fields: [...] }),
stdSearch({ entityName: 'Item' }),
stdModal({ entityName: 'Item', mode: 'create' }),
],
});

Integracija vzorcev

Obnasanja uporabljajo vzorce iz registra vzorcev (233 vzorcev) za svoje ucinke render-ui. Vsak vzorec se preslika na React komponento:

Kategorija vzorcaPrimeriUporabljeno v
Prikaz podatkovdata-grid, entity-table, entity-cards, data-liststd-browse
Obrazciform-section, form-field, form-wizardstd-modal, std-wizard
Navigacijapage-header, breadcrumb, tabsstd-tabs, strani
Povratne informacijealert, toast, modal-dialogstd-notification, std-confirmation
Postavitevstack, grid, sidebar-layoutVsi organizmi
Igragame-canvas, game-hud, score-displayIgralna obnasanja

Naslednji koraki

  • Entitete: Kako delujejo podatkovni modeli entitet
  • Lastnosti: Kako avtomati stanj definirajo obnasanje
  • Vzorci: Kako se ucinki render-ui preslikajo na komponente
  • Zaprt krog: Vzorec toka dogodkov