Conceptul — formulare nu-s liste, sunt graph-uri
Un formular real are ramificații: dacă utilizatorul răspunde A la întrebarea 3, sare la 7; dacă răspunde B, vede întrebările 4-6 și sare la 8. Cu o listă fixă de câmpuri toate vizibile, completion rate cade pentru că respondentul vede câmpuri irelevante și abandonează. Conditional logic transformă formularul într-un graph orientat aciclic (DAG) — fiecare nod e o întrebare, fiecare muchie e o regulă de tranziție. Engine-ul Megaforms parsează regulile la runtime și decide ce câmp să arate next.
Tipuri de reguli suportate
Patru tipuri: (1) SHOW/HIDE — afișează sau ascunde un câmp bazat pe valori anterioare; (2) JUMP — sare la o întrebare specifică, sărind peste cele intermediare; (3) ROUTE — finalizează formularul cu redirect la URL custom (util pentru lead scoring routing); (4) BLOCK — împiedică submit dacă o condiție e îndeplinită (gating). Condițiile suportă AND, OR, NOT, paranteze, operatori (`==`, `!=`, `>`, `<`, `contains`, `in`, `matches regex`). Pentru detalii engine vezi src/lib/conditionalLogic.ts.
// Regulă exemplu — show field 'asigurare_nume' doar dacă 'are_asigurare' = true
const rule = {
type: 'show',
target: 'asigurare_nume',
when: { all: [{ field: 'are_asigurare', op: '==', value: true }] }
};
// Compound AND+OR
const complexRule = {
type: 'jump',
target: 'question_15',
when: {
any: [
{ all: [{ field: 'varsta', op: '<', value: 18 }] },
{ all: [{ field: 'tip_cont', op: '==', value: 'minor' }] }
]
}
};Anti-cicluri — validare la save
Riscul cu logic complex e crearea unui ciclu infinit (Q1 → Q5 → Q3 → Q1 → ...). Engine-ul Megaforms rulează un cycle detection (topological sort) la fiecare save. Dacă găsește ciclu, save fail cu mesaj specific: «Ciclu detectat: Q1 → Q5 → Q3 → Q1». Owner-ul vede graph-ul vizualizat cu muchia problematică highlighted. Pentru cazuri legit unde vrei loop (ex. «repetă pentru fiecare copil al pacientului»), folosești câmp tip «repeater» — vezi documentația.
Visual builder + debug mode
Builder-ul are tab «Logic» cu reprezentare vizuală: noduri = câmpuri, muchii colorate per tip regulă (verde SHOW, galben JUMP, roșu BLOCK). Click pe muchie → editor regulă inline. Debug mode în preview: simulezi răspunsuri și vezi în real-time ce reguli se activează, care nu, și de ce. Util pentru forms cu 30+ câmpuri și 50+ reguli.
Performance la runtime
Engine-ul evaluează reguli incremental: la fiecare schimbare de valoare, doar regulile care depind de acel câmp se re-evaluează (dependency tracking). Pentru formulare cu 100 câmpuri + 200 reguli, latența de re-render < 8ms median. Engine rulează client-side în JS (fără round-trip server) pentru UX instant; validare anti-cheat se rulează și server-side la submission (preveni respondenți care editează DOM).