Vistes de bases de dades i planificació de projectes¶
Model de coneixement estructurat¶
Una base de dades de Gnosi és una capa d'esquema i de vistes sobre pàgines, normalment arrelada en una carpeta de Vault. El frontmatter de les pàgines conté els valors dels registres. Les dades del registre defineixen els tipus de camp, les configuracions de les vistes, les fórmules, les agregacions, les relacions, les opcions, els paràmetres de visualització i les accions.
Cada Vault actiu es resol en un únic motor SQLite emmagatzemat localment i una fàbrica de sessions tipada. El registre de motors s'indexa per ruta de Vault, utilitza una base declarativa tipada de SQLAlchemy, executa la migració de l'esquema abans de la primera connexió i allibera les connexions del pool quan s'elimina el Vault. Els fitxers SQLite es mantenen fora de l'emmagatzematge de Vault sincronitzat amb el núvol.
L'existència d'almenys una vista principal és un invariant. Els mecanismes de reparació en arrencar i en llegir la restauren quan les escriptures heretades o interrompudes deixen una taula sense cap vista vàlida.
Creació de grups de bases de dades¶
El botó Crea una DB de la pantalla de benvinguda i el control Afegir base de dades
de la barra lateral comparteixen una única acció. Tots dos creen un grup al
registre mitjançant /api/vault/databases, actualitzen el registre i deixen
intactes els documents de pàgina. S'eliminen els espais sobrants del nom;
cancel·lar o deixar-lo buit no escriu res, i una petició fallida conserva el
diàleg de grup per poder tornar-ho a provar.
Una taula és un objecte diferent, creat dins d'un grup seleccionat amb la seva
vista principal. L'API de pàgines continua admetent les pàgines antigues marcades
amb is_database: true; l'acció de benvinguda no les converteix, elimina ni
reinterpreta automàticament.
Dates d'auditoria del sistema¶
Cada taula té propietats de creació i d'última modificació de només lectura. Les taules noves localitzen les seves etiquetes segons l'idioma de la petició o l'idioma actual de la interfície als ajustos, i mantenen totes dues propietats al final de l'esquema. La creació d'un registre assigna tots dos valors; els desaments posteriors preserven el de creació i actualitzen el de modificació.
La migració idempotent només reconeix tipus de sistema explícits i etiquetes
heretades conegudes, de manera que els camps date no relacionats i les
metadades internes created_at o last_edited_at es mantenen intactes.
Les clonacions deterministes de Notion poden completar les marques de temps
d'auditoria amb els valors de la font de veritat mitjançant el mapatge dels
UUID configurats de bases de dades i pàgines, sense coincidències per títol.
L'índex complet de Notion s'obté abans d'escriure, i es fa una còpia de
seguretat de cada registre o fitxer Markdown modificat.
Normalització dels noms de taules i vistes¶
Les etiquetes de les taules i de les vistes desades del registre es
normalitzen als punts de càrrega i escriptura. S'eliminen els emojis
decoratius i els símbols pictogràfics, però es conserven els accents i la
puntuació significativa. La vista principal bloquejada sempre té exactament
el mateix nom que la taula a la qual pertany, i el seu marcador is_main
continua sent la font de veritat.
Jerarquia de navegació de les taules¶
La barra lateral de Vault presenta cada taula com un node pare amb dos grups
fills independents: Content conté els registres de la taula i Views
conté les seves vistes desades. Tots dos grups estan plegats per defecte,
igual que els nodes de taula i les seccions de navegació de primer nivell,
de manera que una taula amb molts registres o vistes continuï sent fàcil de
consultar. Desplegar un grup no ha de desplegar implícitament l'altre; cada
secció conserva el seu propi estat persistent i totes les etiquetes passen
pel catàleg de localització del frontend.
Flux de processament de les vistes¶
VaultTable.tsx delega en el controlador i la composició visual tipats de
vault-table. L'adaptador de taula compartit de VaultViewBody preserva
la identitat dels arrays de files vàlids, les extensions de metadades
desconegudes i les funcions de retorn de selecció. L'edició de cel·les, la
navegació amb teclat, les files virtualitzades i les actualitzacions
d'opcions d'esquema continuen en mòduls separats amb proves de regressió.
SchemaConfigModal.tsx delega l'edició de l'esquema i el desament automàtic
a schema-config, tot conservant els identificadors de camp, els colors
d'opció i els valors per defecte. Aquests canvis interns no alteren les
vistes desades ni les metadades portables de les pàgines.
flowchart LR
Pages["Markdown records"] --> Schema["Typed schema"]
Schema --> Derived["Formulas and rollups"]
Derived --> Filter["Typed filters"]
Filter --> Sort["Stable sort"]
Sort --> Group["Grouping"]
Group --> Projection["Visible fields and layout"]
Projection --> Table["Table / gallery / board / calendar / timeline"]
Els valors tipats s'han de comparar segons el tipus declarat del camp. L'entrada de text per si sola no pot representar tots els valors de filtre; els camps de data, casella de selecció, número, relació, selecció i múltiples valors es normalitzen mitjançant operadors que tenen en compte el tipus de camp.
L'avaluació dels camps derivats té un ordre explícit. Les fórmules que depenen de valors en brut s'executen abans de les agregacions de relacions, i les fórmules dependents es resolen sense permetre que els cicles provoquin recursió indefinida. Les representacions del backend i del frontend han de coincidir en la interpretació booleana de les caselles de selecció, els percentatges, els valors buits i els identificadors d'opció.
Els camps virtuals calculats en llegir utilitzen projeccions del graf i contextos de càlcul tipats. Les arestes estructurals exclouen els nodes no resolts i els de propostes semàntiques; els tipus de les mètriques de NetworkX es concreten quan entren a la memòria cau compartida, mentre que els valors de grau, node concentrador, node orfe i progrés invers de tasques exposen resultats primitius estables. La clau canònica del frontmatter continua sent el nom de la propietat al registre, sense convertir-lo en slug.
El comportament canònic de les bases de dades es divideix per responsabilitat.
tables/rules/ és responsable d'avaluar fórmules, agregacions, cerques i
automatitzacions; tables/catalogs/ és responsable de la normalització
d'opcions, els rols semàntics i el catàleg global d'estats; i els mòduls petits
de vault/views/ són responsables de la sintaxi de les instantànies,
la materialització, els filtres, l'ordenació i les unions. Els imports
històrics de rule_engine.py, option_catalogs.py i view_snapshot.py
continuen sent façanes mínimes de compatibilitat, inclosos els punts de
substitució de rutes i d'enriquiment de relacions amb vinculació tardana
utilitzats per les proves.
El límit HTTP de les taules consumeix directament aquests contractes estrictes de col·lecció, cicle de vida, esquema, opcions, vistes i rutes confinades. Ja no torna a forçar el tipus dels seus resultats, de manera que cada mòdul de domini continua sent l'únic responsable del seu tipus de retorn, mentre que l'inventari històric pla de rutes i el document OpenAPI no canvien.
El graf transitori de composició de taules ara injecta llistes d'opcions concretes, definicions d'unió tipades i un rematerialitzador de Markdown compatible amb el protocol. L'adaptador preserva l'enriquiment heretat amb vinculació tardana i rebutja els resultats d'instantània no textuals abans que puguin arribar a la persistència.
tables/formula_recalculation.py serialitza per taula els canvis que afecten
diversos registres. Les peticions concurrents s'agrupen en una passada pendent;
es recalculen totes les files visibles, s'escriu el Markdown modificat i
l'índex de pàgines i la memòria cau de respostes només s'actualitzen després
d'escriptures correctes.
Els criteris d'ordenació de les vistes desades s'apliquen en l'ordre de l'array amb una comparació estable de múltiples claus. Els valors de propietat buits sempre van després dels valors informats, tant en ordre ascendent com descendent, d'acord amb la semàntica de les vistes importades de Notion. Les vistes del frontend i les instantànies Markdown del backend utilitzen la mateixa regla perquè l'ordre dels registres no divergeixi.
Quan VaultDashboard renderitza una pestanya de taula, passa les
funcionalitats habilitades del registre de la taula a través de
VaultViewBody fins a VaultTable. Així, la pestanya de taula, la taula
independent, el panell dividit i la vista incrustada exposen les mateixes
accions de fila configurades. Si s'omet aquesta cadena de propietats,
una acció queda oculta encara que el registre i l'API indiquin correctament
que està habilitada.
Àmbit de la cerca¶
Les cerques de taula s'apliquen a la vista actual per defecte. El selector pot ampliar una consulta no buida a tota la taula d'origen, inclosos els registres exclosos pels filtres o les unions de la vista, sense modificar la vista desada. Netejar la consulta restaura l'àmbit i els filtres de la vista actual. Quan no hi ha resultats, un missatge explica l'àmbit actiu i ofereix cercar a tota la taula.
Les vistes incrustades fan servir el mateix cercador compartit per als registres i els recomptes. Es recarreguen mitjançant l'API compartida del vault quan es desa una altra pàgina o la finestra recupera el focus. La cerca es manté durant l'actualització, sense reutilitzar una memòria cau de taula de cinc minuts.
Evolució de l'esquema i concurrència¶
Les revisions d'esquema impedeixen que un client desi una llista de camps antiga sobre una de més nova. Canviar el nom d'un camp actualitza els filtres, les ordenacions, les fórmules, les accions i les referències de les vistes desades. El canvi de nom d'una taula detecta les col·lisions de noms de fitxer en carpetes planes abans de moure el contingut.
Els registres s'escriuen atòmicament i s'actualitzen després dels canvis massius de metadades. Les instantànies en memòria cau s'invaliden quan canvien els registres d'origen o la revisió de l'esquema.
Les rutes de vistes per pàgina validen l'arrel del registre, la taula
d'origen, el camp de filtre i la identitat de la pàgina al disc abans de
modificar res. El seu cicle de lectura, modificació i escriptura comparteix
el bloqueig canònic del registre i actualitza la memòria cau de la façana
després d'un desament atòmic; la sincronització opcional de seccions
d'Obsidian continua sent un adaptador tipat que actua en la mesura del
possible. L'identificador estable view_id té prioritat sobre els
encapçalaments durant la inserció o actualització, de manera que les vistes
incrustades en paral·lel no es puguin sobreescriure entre si. Els resultats
de lectura, inserció o actualització i eliminació passen per models
Pydantic específics abans de retornar els mateixos diccionaris heretats;
l'esquema de petició i el document OpenAPI congelat no canvien.
Les edicions massives de camps, la promoció de Zotero Extra i l'aplicació de plantilles comparteixen un únic servei tipat de mutació de pàgines. Cada destinació s'aïlla, comprova un ETag opcional, actualitza l'índex de pàgines després d'una escriptura i informa d'omissions, conflictes i errors sense interrompre les files restants.
Els editors de propietats de pàgina utilitzen controls adaptats al tipus
de camp. Els camps select i status es mostren com a selectors
d'opcions d'un sol valor; els catàlegs d'estats són estrictes i no permeten
crear ni eliminar opcions directament des del selector. La graella de la
taula i el panell de propietats de pàgina han de preservar el mateix tipus
de camp i la mateixa semàntica d'opcions.
Els valors d'estat introduïts per regles d'acció es persisteixen de manera idempotent a través del domini de taules. Les fallades del registre es deixen al log, però mai no converteixen la regla que les ha originat en una acció d'usuari fallida. El límit pur de regles resol els camps per identificador, nom actual o àlies, avalua els prerequisits declarats sense interpretar les dades absents com una denegació, preserva la clau de frontmatter que ja s'utilitza i inicialitza de manera determinista les opcions d'estat que falten. Les regles de botó es mantenen diferenciades de les automatitzacions activades per canvis.
El límit HTTP de Planning té tipatge estricte i preserva el seu contracte OpenAPI congelat. La resolució del vault actiu falla explícitament quan no n'hi ha cap de seleccionat, i la materialització de recurrències consumeix de manera acotada els iteradors d'ocurrències RRULE, tot preservant els identificadors estables de tasca i les comprovacions d'ETag.
Planificació de projectes¶
El frontend amb tipatge estricte de features/planning/ és responsable de
la pàgina de planificació i de les seves proves de comportament, accessibles
a través d'un punt d'entrada públic de càrrega diferida. El renderitzador
de la cronologia continua sent compartit amb les vistes de Vault. La
responsabilitat sobre les rutes no altera les peticions de planificació,
la creació de línies base, els registres de treball ni l'aprovació explícita
de propostes d'anivellament.
Planning consumeix camps de tasques estructurats i produeix un calendari de referència, en lloc de duplicar la lògica de planificació a la interfície. El motor normalitza les dependències, els calendaris, les durades, les restriccions, els recursos, les dates límit, el progrés i la direcció de planificació. Després calcula dates, marges, tasques crítiques, avisos i assignacions de recursos.
El motor determinista ara separa la normalització de dades de fet, la planificació endavant d'una tasca, els diagnòstics de restriccions, la indexació de successors, la passada enrere per calcular marges, la col·locació ALAP i la serialització del payload. Això manté immutables les dades de fet persistides i preserva els calendaris parcials i els diagnòstics davant d'errors recuperables del graf.
El planificador que agrupa les peticions manté l'anàlisi i el desament de Markdown i les comprovacions d'ETag darrere d'un port acotat de Vault amb vinculació tardana, amb registres d'origen tipats per a cada escriptura candidata. Valida l'estructura de l'estat dels plugins abans de llegir-ne la configuració i només escriu els límits automàtics si l'ETag d'origen no ha canviat. Els tipus de l'historial de tarifes dels recursos i de les sobreescriptures d'assignació es concreten al límit del magatzem de planificació, de manera que els càlculs d'assignació i anivellament mantenen el tipatge estricte sense canviar els números persistits ni la semàntica de planificació.
Les durades dels períodes conserven tant el valor numèric com la unitat
configurada (hours, days o years). Els anys naturals se sumen com
a desplaçaments d'any natural, de manera que un any inicial més vuit anys
dona l'any final corresponent, inclosos els anys negatius. L'editor de
propietats elimina els camps redundants de dates reals, recalcula el final
sempre que canvia l'inici, la durada o el predecessor, i utilitza un
selector múltiple amb cerca per als predecessors. Els valors heretats de
durationDays continuen disponibles per mantenir la compatibilitat amb
els registres antics i les instantànies de planificació.
El frontend renderitza el resultat i els controls d'edició. No recalcula de manera independent la semàntica del camí crític. Els calendaris en memòria cau s'indexen segons l'estat d'entrada rellevant i es desen a les dades locals, no als registres d'origen del vault.
Comportament davant de fallades¶
- Les fórmules no vàlides retornen un error de camp controlat en lloc d'interrompre la resposta de la taula.
- Les relacions trencades es mantenen visibles com a valors no resolts sempre que és possible.
- La manca de vistes activa una reparació determinista de la vista principal.
- Els cicles de planificació, les restriccions impossibles o la manca de calendaris produeixen diagnòstics i resultats parcials quan és segur.
- Una revisió d'esquema obsoleta retorna un conflicte i requereix recarregar o fusionar els canvis.
Aspectes que cal verificar¶
Proveu la paritat dels filtres tipats, els conflictes de revisió d'esquema, els canvis de nom de camps i taules, l'ordre d'avaluació de fórmules i agregacions, la sincronització de relacions, l'ordenació d'instantànies, les accions dels catàlegs d'opcions, les restriccions de planificació, els camins crítics i la renderització E2E dels quadres de comandament.
Genogrames¶
El plugin Genogrames, opcional per Vault, afegeix taules familiars enllaçades, vistes SVG i exportació local a SVG/PNG/PDF, sense serveis externs ni IA.
Lectura en galeria i configuració de vistes¶
La configuració de les vistes incrustades parteix dels valors efectius que ja es mostren i conserva filtres, ordenació i aparença mentre es carrega el catàleg. Les consultes fallides permeten reintentar i no poden desar valors per defecte. Les targetes de galeria admeten ample complet i alçada segons el contingut, amb un sol desplaçament de pàgina. Espai entra al grup desplegat; Esquerra torna a la capçalera i el plega, mentre que Esc surt de la navegació de registres. Les comprovacions d’ús de vistes passen per asyncio.to_thread, conserven el context del vault i mantenen les lectures de fitxers del núvol fora del bucle HTTP. Les regressions cobreixen la càrrega del modal, les respostes tardanes del catàleg, el focus del teclat i el fil de comprovació d’ús.
Tots els tipus de vista incrustada ofereixen una política d’alçada desada a General: limitada (fins al 70% de la finestra i després desplaçament intern) o segons el contingut (es desplaça la pàgina). L’opció segueix la pestanya activa i funciona amb vistes compartides del registre i seccions locals. Les vistes existents mantenen el comportament anterior; els feeds creixen amb el contingut i els altres tipus tenen alçada limitada per defecte. Les targetes de galeria d’amplada completa no tenen alçada mínima i les notes curtes queden compactes. La taula continua gestionant el desplaçament horitzontal i les columnes fixades de taula i llista. El límit d’alçada es pot ajustar de l’1 al 100% de la finestra (70% per defecte) i es conserva en canviar de mode. heightPercent es valida en carregar i desar i s’aplica com a límit relatiu a l’alçada de la finestra.
Les propietats de les pàgines utilitzen el tipus de camp registrat per als controls i les icones. Els checkbox conserven els dos estats booleans i el zero numèric es manté visible. Les edicions desen nombres i booleans sense convertir-los en text. En llegir, els identificadors estables dels camps tenen prioritat sobre els noms antics i es desen amb el nom actual. Els resultats de fórmules i agregacions utilitzen els avaluadors compartits; els camps derivats i els valors d’auditoria són de només lectura. El bloqueig de pàgina o el rol de lector també desactiva les dates buides, els períodes i els selectors. El text enriquit conserva els salts de línia i les propietats Zotero ofereixen la mateixa acció d’obertura que les cel·les de la taula.
La pàgina manté l’ordre dels camps desat a la configuració de la taula, també en la navegació amb teclat i les previsualitzacions compactes. El camp de títol no es duplica com a propietat local. Gestionar camps mostra separadament les propietats exclusives de la pàgina, amb els seus valors, i permet eliminar-les d’aquesta pàgina sense modificar l’esquema de la taula. Les eliminacions locals es desen immediatament, recuperen el valor si fallen i preserven les edicions pendents de propietats.
El modal de vista mostra sempre la taula d’origen. Si una vista nova s’obre sense una taula activa, permet seleccionar-la i habilita els camps, filtres, criteris d’ordenació i agrupacions corresponents. Les vistes amb una taula configurada conserven aquest origen.
L’acció Afegir vista d’una vista incrustada permet crear una vista nova o afegir-ne una d’existent de la mateixa taula. Les vistes existents s’afegeixen com a pestanyes sense duplicar-les ni modificar-ne la configuració; les pestanyes ja visibles no apareixen al selector. La pestanya seleccionada i les vistes afegides es conserven en reobrir la pàgina. Les vistes noves hereten la taula d’origen de la vista incrustada.
Els selectors d’agrupació inclouen tots els tipus de camps registrats o descoberts. Galeria, taula/llista i Kanban conserven el zero i el fals, separen i dedupliquen valors múltiples, resolen identificadors estables i títols, i mantenen els buits separats. Les relacions mostren noms sense fusionar identificadors diferents; els valors estructurats tenen claus canòniques i etiquetes llegibles. Fórmules i rollups fan servir els avaluadors compartits i les caselles tenen etiquetes traduïdes. L’arrossegament de Kanban es limita a camps de text editables per no corrompre números, dates o resultats calculats. L’ajuda de les pestanyes s’amaga mentre el menú d’opcions és obert.
Els camps numèrics comparteixen la visualització del progrés a pàgines, taules, galeria, Kanban i feed. La configuració del camp permet triar número, barra o anell de progrés. Els percentatges i els percentatges de caselles marcades mostren una barra per defecte; el zero és visible i els valors buits continuen buits. El dibuix es limita a 0–100 sense modificar el valor desat i admet percentatges calculats amb el símbol de percentatge. El màxim configurable admet tant valors fraccionaris (0,5 sobre 1 és el 50%) com valors expressats sobre 100.
Catàlegs d'estats propis de cada taula¶
Els camps d'estat conserven les opcions pròpies llevat que config.catalog_ref
els vinculi explícitament a un catàleg compartit. Els vincles existents al catàleg
global status continuen sent vàlids. Seleccionar el catàleg propi del camp a
l'editor d'esquema copia les opcions compartides al camp sense modificar altres
taules. L'editor desa aquest canvi abans de reanomenar o eliminar valors. El
manteniment de catàlegs, els editors de registres i la persistència de regles
respecten la referència explícita; les opcions locals no es fusionen
automàticament amb el catàleg global.
Proves: backend/tests/test_status_catalog_isolation.py i
frontend/src/features/vault/schema/schema-config/SchemaConfigOptions.test.tsx.
El desament de l’esquema conserva les opcions, referències, valors predeterminats, grups i vincles de connectors dins del config canònic del camp. Un catàleg d’estats propi buit es desa com a options: []; els estats bàsics només inicialitzen catàlegs inexistents i no es recuperen després d’eliminar-los. Es manté la inicialització dels estats requerits per les funcions de traducció o publicació activades.
Cronograma interactiu de registres¶
El cronograma de registres fa servir límits del calendari traduïts, una columna de títols fixa i ajustable, fases plegables i una visió del projecte adaptada a la finestra. Arrossega una barra per moure la tasca, un extrem per ajustar-ne les dates o el punt de connexió final fins a una successora per crear una dependència de final a inici. El controlador desa el període o els camps d’inici i final amb el mateix callback de metadades que la taula, conserva el progrés i les dependències del període i reconeix les columnes de relació de predecessores. La programació inclou els registres ocults pels filtres, rebutja cicles i propaga les branques convergents segons la predecessora que acaba més tard. Cada registre desa conjuntament la dependència i les dates resultants; si una operació falla, es restauren els canvis completats quan és possible i s’informa de les restauracions incompletes. Desfer restaura els camps canviats durant la sessió de la vista. Els cronogrames incrustats mantenen els controls de zoom i navegació i gestionen el seu límit de desplaçament. Les fletxes mouen la barra enfocada, Majúscules+fletxa ajusta el final i Escape cancel·la l’arrossegament.
El peu del cronograma és fora del desplaçament vertical de les files i es manté visible quan es desplaça la pàgina que el conté. La barra horitzontal persistent se sincronitza amb el cronograma en tots dos sentits, també amb els controls de navegació i l’arrossegament de tasques.
El selector d’escala ofereix dia, setmana, mes i any; la vista d’any alinea anys complets amb columnes mensuals. Les tasques mare poden plegar i recuperar totes les subtasques imbricades.
Clica una línia de dependència, o enfoca-la i prem Enter/Suprimeix, per obrir el diàleg d’eliminació compartit. La confirmació elimina només aquella predecessora del període o la relació, conserva les dates i els detalls de les altres connexions, actualitza la taula i permet desfer. Els cronogrames de només lectura no ofereixen aquesta acció.
Títols visibles i filtres exposats¶
Les vistes tenen un displayTitle opcional independent del name del catàleg.
La llista d’inserció conserva el nom llarg; les capçaleres i pestanyes inserides
mostren el títol curt quan està definit. Si és buit, es conserva el comportament
anterior. El camp funciona en tots els tipus de vista i es conserva tant al
registre com a les seccions locals i al desament automàtic del diàleg.
L’acció «Reanomenar», inclòs el doble clic a les pestanyes inserides, modifica
només displayTitle i parteix del títol visible actual. El nom del catàleg
s’edita a «Configurar». La vista principal també permet canviar aquest títol
i conserva el bloqueig de supressió.
Cada regla de filtre pot activar exposed: true. El control del valor, adaptat
al tipus de camp, i un interruptor apareixen sobre les vistes inserides i les
vistes de taula. Els canvis són temporals per a aquella instància i configuració
de pàgina o pestanya; «Restableix els filtres» recupera els valors desats.
Es respecten els grups AND/OR i les regles fixes. La cerca a tota la taula
desactiva temporalment els controls. El recompte segueix els resultats filtrats
i els canvis de disposició no desen els filtres temporals. Es conserven el zero,
els booleans i el límit del període en serialitzar els filtres.
La cobertura de regressió inclou exposedFilters.test.ts, PageViewModal.test.tsx,
DbViewEmbed.test.tsx, TablePane.test.tsx i
backend/tests/test_exposed_view_configuration.py.
La pestanya General del diàleg de vistes incrustades ofereix controls per pujar i baixar les pestanyes fixades, inclosa la vista àncora. L’àncora continua visible i no es pot desmarcar. El diàleg mostra les vistes fixades en l’ordre desat abans de les disponibles, i el bloc mostra les pestanyes en aquest mateix ordre. Les preferències del bloc es desen per pàgina i vista àncora a l’emmagatzematge local del navegador; les pestanyes del registre només aporten els valors per defecte quan no hi ha cap preferència del bloc. En reobrir o recarregar es conserven tant l’ordre triat com les vistes desmarcades.
Els taulers Kanban incrustats gestionen el límit d’alçada i el desplaçament en els dos eixos. La barra horitzontal queda dins de l’àrea limitada perquè totes les columnes siguin accessibles; els taulers amb alçada segons el contingut creixen sense límit vertical.
Navegació amb teclat i cel·les de full de càlcul¶
Enfoca una vista de registres i prem Retorn per entrar als registres; Esc torna al marc de la vista. Les fletxes mouen entre registres. Les vistes basades en llenç mostren el registre actual en una franja de navegació amb teclat. Els editors i els diàlegs conserven la seva gestió del teclat.
Les taules i les llistes mostren files numerades i columnes amb lletra i nom. Les fletxes mouen entre cel·les; Majúscules+fletxa selecciona un interval. Retorn o F2 edita una cel·la, i Esc cancel·la l’edició abans de sortir de la graella. Copiar i enganxar transfereix intervals rectangulars; una cel·la copiada pot omplir les files seleccionades, també les no consecutives. Ctrl/Cmd+D o el botó d’omplir copia la primera fila seleccionada cap avall, conserva les referències relatives de les fórmules i informa dels errors de desament.
Les cel·les de text i número accepten fórmules que comencen amb =, com =SUM(B1:B3) o =[Amount]*2. La barra de fórmules mostra l’expressió desada i la cel·la mostra el resultat. Les referències segueixen l’ordre de files i columnes de la vista actual; les referències amb nom apunten a camps del mateix registre. Les referències absolutes com $B$1 queden fixes en copiar. S’admeten aritmètica, comparacions, concatenació i funcions bàsiques d’agregació, arrodoniment i condicions, amb àlies traduïts. L’avaluació té límits, detecta cicles i no executa codi dinàmic. És un subconjunt de fórmules propi de la vista, sense compatibilitat completa amb llibres Excel; les fórmules de l’esquema es calculen independentment i són de només lectura.
Selecciona un interval arrossegant o amb Majúscules+clic; Ctrl/Cmd+clic afegeix o treu cel·les individuals. Enganxar un únic valor omple totes les cel·les seleccionades editables, també les no adjacents, sense canviar les cel·les intermèdies. També funcionen els esdeveniments natius d’enganxar, i els títols segueixen el contracte d’actualització del títol. Els canvis s’agrupen en una petició per registre; si un registre falla, recupera els valors anteriors a la pantalla.
Les taules incrustades defineixen una graella no editable dins de l’editor de text enriquit. La selecció amb el ratolí ignora els avantpassats editables fora de la graella, hi transfereix el focus i permet ampliar o reduir l’interval de cel·les amb Majúscules+fletxes abans d’enganxar; els editors de cel·la conserven la selecció de text.
Les cel·les seleccionades de la taula mostren un fons opac amb el color d’accent barrejat amb la superfície del tema i un contorn interior a cada cel·la. Un contorn més gruixut distingeix la cel·la activa. El mateix estil cobreix els títols fixos, els intervals rectangulars i les seleccions separades en els temes clar i fosc.
Les capçaleres de taula separen les accions de l’estat d’ordenació. Un clic ordena pel camp i alterna ascendent/descendent; un doble clic selecciona tota la columna de la vista actual, també els registres més enllà del primer lot carregat, sense canviar l’ordre. Només el camp ordenat mostra una fletxa indicativa del sentit. Retorn o Espai ordenen una capçalera enfocada; Majúscules+Retorn selecciona la columna. L’arrossegament fa servir un agafador separat. L’ordre es mostra localment abans del desament opcional en sèrie, funciona sense una funció de desament, respecta els canvis externs posteriors i recupera l’ordre desat si falla. Les dates del sistema es poden seleccionar i copiar, però continuen sent de només lectura. Les files de tasques permeten ordenar els germans manualment i canviar la jerarquia. Les fletxes de fila o Alt+Amunt/Avall reordenen una tasca amb les seves subtasques; Alt+Dreta la converteix en filla del germà anterior i Alt+Esquerra la col·loca després de la tasca mare. Arrossega el mànec a la part superior, central o inferior del títol d’una altra tasca per col·locar-la abans, dins o després. Les metadades desen l’ordre i la tasca mare sense canviar dates ni dependències. Els moviments rebutgen destinacions descendents, inclouen registres ocults en la planificació de l’ordre i esperen el desament. Cal treure l’ordenació explícita de la vista. Si falla el desament, s’informa que el moviment no s’ha completat; els ordres ja desats poden haver canviat.