xonecode 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +167 -0
- package/dist/agent/authEnDisco.js +56 -0
- package/dist/agent/authEnDisco.js.map +1 -0
- package/dist/agent/configEnDisco.js +109 -0
- package/dist/agent/configEnDisco.js.map +1 -0
- package/dist/agent/crearProyecto.js +34 -0
- package/dist/agent/crearProyecto.js.map +1 -0
- package/dist/agent/entorno.js +124 -0
- package/dist/agent/entorno.js.map +1 -0
- package/dist/agent/guionizado.js +53 -0
- package/dist/agent/guionizado.js.map +1 -0
- package/dist/agent/instantanea.js +129 -0
- package/dist/agent/instantanea.js.map +1 -0
- package/dist/agent/interrupts.js +83 -0
- package/dist/agent/interrupts.js.map +1 -0
- package/dist/agent/mensajes.js +24 -0
- package/dist/agent/mensajes.js.map +1 -0
- package/dist/agent/modelos.js +42 -0
- package/dist/agent/modelos.js.map +1 -0
- package/dist/agent/normalizar.js +20 -0
- package/dist/agent/normalizar.js.map +1 -0
- package/dist/agent/perfiles.js +103 -0
- package/dist/agent/perfiles.js.map +1 -0
- package/dist/agent/proyecto.js +107 -0
- package/dist/agent/proyecto.js.map +1 -0
- package/dist/agent/puente.js +142 -0
- package/dist/agent/puente.js.map +1 -0
- package/dist/agent/resumenDeTool.js +48 -0
- package/dist/agent/resumenDeTool.js.map +1 -0
- package/dist/agent/skills.js +65 -0
- package/dist/agent/skills.js.map +1 -0
- package/dist/agent/textoDeTool.js +113 -0
- package/dist/agent/textoDeTool.js.map +1 -0
- package/dist/agent/turnoReal.js +173 -0
- package/dist/agent/turnoReal.js.map +1 -0
- package/dist/agent/verificador.js +65 -0
- package/dist/agent/verificador.js.map +1 -0
- package/dist/agent/xoneAgent.js +106 -0
- package/dist/agent/xoneAgent.js.map +1 -0
- package/dist/bin.js +9 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/aprobar.js +82 -0
- package/dist/cli/aprobar.js.map +1 -0
- package/dist/cli/config.js +133 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/consola.js +346 -0
- package/dist/cli/consola.js.map +1 -0
- package/dist/cli/describe.js +53 -0
- package/dist/cli/describe.js.map +1 -0
- package/dist/cli/doctor.js +45 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/main.js +520 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/markdown.js +90 -0
- package/dist/cli/markdown.js.map +1 -0
- package/dist/cli/run.js +164 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/spinner.js +89 -0
- package/dist/cli/spinner.js.map +1 -0
- package/dist/cli/stdio.js +193 -0
- package/dist/cli/stdio.js.map +1 -0
- package/dist/cli/tema.js +40 -0
- package/dist/cli/tema.js.map +1 -0
- package/dist/cli/verify.js +62 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/core/bitacora.js +30 -0
- package/dist/core/bitacora.js.map +1 -0
- package/dist/core/config.js +236 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/contextos.js +56 -0
- package/dist/core/contextos.js.map +1 -0
- package/dist/core/deps.js +51 -0
- package/dist/core/deps.js.map +1 -0
- package/dist/core/diff.js +79 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/esqueleto.js +366 -0
- package/dist/core/esqueleto.js.map +1 -0
- package/dist/core/events.js +2 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/modelos.js +85 -0
- package/dist/core/modelos.js.map +1 -0
- package/dist/core/notify.js +106 -0
- package/dist/core/notify.js.map +1 -0
- package/dist/core/ports.js +114 -0
- package/dist/core/ports.js.map +1 -0
- package/dist/core/turno.js +127 -0
- package/dist/core/turno.js.map +1 -0
- package/dist/vendor/hitl.js +103 -0
- package/dist/vendor/hitl.js.map +1 -0
- package/dist/vendor/skillLoaders/catalog.js +74 -0
- package/dist/vendor/skillLoaders/catalog.js.map +1 -0
- package/dist/vendor/tokenTracking.js +58 -0
- package/dist/vendor/tokenTracking.js.map +1 -0
- package/package.json +41 -0
- package/skills/xone-debugging/SKILL.md +52 -0
- package/skills/xone-debugging/references/faq.md +561 -0
- package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
- package/skills/xone-development/SKILL.md +105 -0
- package/skills/xone-development/references/anti-patrones.md +94 -0
- package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
- package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
- package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
- package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
- package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
- package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
- package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
- package/skills/xone-development/references/datos/appdata.md +611 -0
- package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
- package/skills/xone-development/references/datos/http.md +366 -0
- package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
- package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
- package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
- package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
- package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
- package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
- package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
- package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
- package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
- package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
- package/skills/xone-development/references/indice-completo.md +77 -0
- package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
- package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
- package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
- package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
- package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
- package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
- package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
- package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
- package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
- package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
- package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
- package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
- package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
- package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
- package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
- package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
- package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
- package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
- package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
- package/skills/xone-development/references/tipos-de-prop.md +28 -0
- package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
- package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
- package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
- package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
- package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
- package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
- package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
- package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
- package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
- package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
- package/skills/xone-development/references/xml-ui/mapas.md +685 -0
- package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
- package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
- package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
- package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
- package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
- package/skills/xone-plan-builder/SKILL.md +183 -0
- package/skills/xone-plan-builder/agents/openai.yaml +5 -0
- package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
- package/skills/xone-project-generator/SKILL.md +111 -0
- package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
- package/skills/xone-project-generator/references/colecciones-base.md +16 -0
- package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
- package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
- package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
- package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
- package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
- package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
- package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
- package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
- package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
- package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
- package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
- package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
- package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
- package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
- package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
- package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
- package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
- package/skills/xone-review/SKILL.md +189 -0
- package/skills/xone-spec-builder/SKILL.md +235 -0
- package/skills/xone-spec-builder/agents/openai.yaml +5 -0
- package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
- package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
- package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# XOne — Plataforma y anatomía de un proyecto
|
|
2
|
+
|
|
3
|
+
> Fuente: `xone/v2/xone-help-docs/topics/01-xone-fundamentals.md` §1–§3, §5. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
|
|
4
|
+
|
|
5
|
+
Contenido: §1 qué es XOne · §2 arquitectura: modelo declarativo + imperativo, ciclo de vida colección/objeto/propiedad, flujo de datos, sincronización con servidor · §3 anatomía del proyecto: archivos y carpetas obligatorias y opcionales, diagrama de estructura · §5 tipos de archivo
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Que es XOne?
|
|
10
|
+
|
|
11
|
+
XOne es una **plataforma de desarrollo de aplicaciones móviles** que permite generar apps nativas para Android e iOS a partir de un único código fuente. A diferencia de otros frameworks multiplataforma, XOne utiliza un enfoque **declarativo basado en XML** para definir la interfaz de usuario, combinado con **JavaScript** para la lógica de negocio.
|
|
12
|
+
|
|
13
|
+
### Componentes del Ecosistema
|
|
14
|
+
|
|
15
|
+
El ecosistema XOne se compone de tres elementos principales:
|
|
16
|
+
|
|
17
|
+
| Componente | Descripción |
|
|
18
|
+
|------------|-------------|
|
|
19
|
+
| **Framework XOne** | Motor que interpreta los archivos XML, CSS y JS para generar las interfaces nativas en cada plataforma |
|
|
20
|
+
| **Runtime XOne** | Entorno de ejecución que corre en el dispositivo móvil, renderizando la UI y ejecutando la lógica |
|
|
21
|
+
| **Servidor de Replica** | Componente de backend que permite la sincronización bidireccional de datos entre dispositivos y servidor central |
|
|
22
|
+
|
|
23
|
+
### Que hace diferente a XOne?
|
|
24
|
+
|
|
25
|
+
Si vienes del desarrollo web, estas analogias te ayudaran a entender la filosofia de XOne:
|
|
26
|
+
|
|
27
|
+
| Concepto Web | Equivalente XOne | Diferencia Clave |
|
|
28
|
+
|-------------|-----------------|------------------|
|
|
29
|
+
| HTML | Archivos `.xne` (XML) | XOne usa nodos como `<coll>`, `<prop>`, `<frame>` en vez de `<div>`, `<input>`, `<span>` |
|
|
30
|
+
| CSS | `default.css` | Sintaxis similar pero con atributos propietarios; unidades `p` y `%` en vez de `px` y `em` |
|
|
31
|
+
| JavaScript | `functions.js` | API propia (`ui.*`, `self.*`, `appData.*`) en vez de APIs del navegador (`document.*`, `window.*`) |
|
|
32
|
+
| Base de datos | `bd/gestion.db` (SQLite) | Base de datos local integrada que se sincroniza automáticamente con el servidor |
|
|
33
|
+
|
|
34
|
+
> **Nota importante:** Aunque la sintaxis pueda parecer familiar, XOne NO es desarrollo web. No tiene DOM, no tiene navegador, no tiene `document` ni `window`. Las APIs son completamente propias de la plataforma.
|
|
35
|
+
|
|
36
|
+
### Ventajas Principales
|
|
37
|
+
|
|
38
|
+
1. **Código único, apps nativas**: Un solo proyecto genera apps para Android e iOS con rendimiento nativo
|
|
39
|
+
2. **Funcionamiento offline**: La base de datos SQLite local permite trabajar sin conexión
|
|
40
|
+
3. **Sincronización automática**: El sistema de replica sincroniza datos cuando hay conectividad
|
|
41
|
+
4. **Desarrollo rápido**: El modelo declarativo reduce drasticamente el código necesario
|
|
42
|
+
5. **Sin compilación**: Los cambios en XML/CSS/JS se reflejan sin necesidad de recompilar
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Arquitectura de XOne
|
|
47
|
+
|
|
48
|
+
### 2.1 Modelo Declarativo + Imperativo
|
|
49
|
+
|
|
50
|
+
XOne combina dos paradigmas de programación:
|
|
51
|
+
|
|
52
|
+
**Declarativo (XML):** Define QUE mostrar en la pantalla. Se usa para:
|
|
53
|
+
- Estructura de la interfaz de usuario
|
|
54
|
+
- Definición de campos y tipos de datos
|
|
55
|
+
- Layout y posicionamiento de elementos
|
|
56
|
+
- Configuración de eventos
|
|
57
|
+
|
|
58
|
+
**Imperativo (JavaScript):** Define COMO comportarse. Se usa para:
|
|
59
|
+
- Lógica de negocio
|
|
60
|
+
- Validaciones complejas
|
|
61
|
+
- Navegación programatica
|
|
62
|
+
- Integraciones con APIs externas
|
|
63
|
+
- Manipulación de datos
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
+-----------------------+ +------------------------+
|
|
67
|
+
| XML Declarativo | | JavaScript Imperativo |
|
|
68
|
+
| (.xne / .xml / .css)| | (.js) |
|
|
69
|
+
+-----------+-----------+ +-----------+------------+
|
|
70
|
+
| |
|
|
71
|
+
v v
|
|
72
|
+
+-----+-----------------------------+------+
|
|
73
|
+
| Runtime XOne (Dispositivo) |
|
|
74
|
+
| - Renderiza UI nativa |
|
|
75
|
+
| - Ejecuta logica JS |
|
|
76
|
+
| - Gestiona BD local |
|
|
77
|
+
| - Sincroniza con servidor |
|
|
78
|
+
+------------------------------------------+
|
|
79
|
+
|
|
|
80
|
+
+---------+---------+
|
|
81
|
+
| |
|
|
82
|
+
+-----+------+ +------+------+
|
|
83
|
+
| Android | | iOS |
|
|
84
|
+
| (Nativo) | | (Nativo) |
|
|
85
|
+
+------------+ +-------------+
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 2.2 Ciclo de Vida: Coleccion, Objeto, Propiedad
|
|
89
|
+
|
|
90
|
+
El modelo de datos de XOne se organiza en tres niveles jerarquicos. Si vienes de bases de datos, la analogia es directa:
|
|
91
|
+
|
|
92
|
+
| Nivel XOne | Equivalente BD | Equivalente Web | Descripción |
|
|
93
|
+
|------------|---------------|-----------------|-------------|
|
|
94
|
+
| **Coleccion** (`coll`) | Tabla | Página/Componente | Define estructura de datos + UI |
|
|
95
|
+
| **Objeto** (DataObject) | Fila/Registro | Instancia | Una unidad de datos concreta |
|
|
96
|
+
| **Propiedad** (`prop`) | Columna/Campo | Input/Label | Un dato individual + su representación visual |
|
|
97
|
+
|
|
98
|
+
Cada coleccion tiene su propio ciclo de vida con eventos bien definidos:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
Coleccion creada
|
|
102
|
+
|
|
|
103
|
+
v
|
|
104
|
+
[create] --> Se ejecuta una sola vez al crear la instancia
|
|
105
|
+
|
|
|
106
|
+
v
|
|
107
|
+
[load] --> Se ejecuta cada vez que la pantalla se muestra
|
|
108
|
+
|
|
|
109
|
+
v
|
|
110
|
+
[onchange] --> Se ejecuta cuando cambia el valor de un campo
|
|
111
|
+
|
|
|
112
|
+
v
|
|
113
|
+
[onback] --> Se ejecuta cuando el usuario pulsa el boton "atras"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Ejemplo práctico del ciclo de vida:**
|
|
117
|
+
|
|
118
|
+
```xml
|
|
119
|
+
<coll name="DetalleTarea" title="Detalle de Tarea">
|
|
120
|
+
<!-- Se ejecuta UNA vez al crear la coleccion -->
|
|
121
|
+
<create>
|
|
122
|
+
<action name="runscript">
|
|
123
|
+
<script language="javascript">
|
|
124
|
+
// Inicializar valores por defecto
|
|
125
|
+
self.MAP_FECHA = new Date();
|
|
126
|
+
self.MAP_ESTADO = "PENDIENTE";
|
|
127
|
+
</script>
|
|
128
|
+
</action>
|
|
129
|
+
</create>
|
|
130
|
+
|
|
131
|
+
<!-- Se ejecuta CADA VEZ que la pantalla se muestra -->
|
|
132
|
+
<load>
|
|
133
|
+
<action name="runscript">
|
|
134
|
+
<script language="javascript">
|
|
135
|
+
// Actualizar contadores o datos dinamicos
|
|
136
|
+
actualizarContador();
|
|
137
|
+
</script>
|
|
138
|
+
</action>
|
|
139
|
+
</load>
|
|
140
|
+
|
|
141
|
+
<!-- Se ejecuta cuando CAMBIA el valor de un campo -->
|
|
142
|
+
<onchange>
|
|
143
|
+
<field name="MAP_ESTADO">
|
|
144
|
+
<action name="runscript">
|
|
145
|
+
<script language="javascript">
|
|
146
|
+
// Reaccionar al cambio de estado
|
|
147
|
+
if (self.MAP_ESTADO == "COMPLETADA") {
|
|
148
|
+
self.MAP_FECHA_FIN = new Date();
|
|
149
|
+
}
|
|
150
|
+
</script>
|
|
151
|
+
</action>
|
|
152
|
+
</field>
|
|
153
|
+
</onchange>
|
|
154
|
+
|
|
155
|
+
<!-- Contenido de la pantalla aquí -->
|
|
156
|
+
|
|
157
|
+
<!-- Se ejecuta al pulsar ATRAS -->
|
|
158
|
+
<onback>
|
|
159
|
+
<action name="runscript">
|
|
160
|
+
<script language="javascript">
|
|
161
|
+
let window = ui.getView(self);
|
|
162
|
+
if (window) {
|
|
163
|
+
window.exit();
|
|
164
|
+
}
|
|
165
|
+
</script>
|
|
166
|
+
</action>
|
|
167
|
+
</onback>
|
|
168
|
+
</coll>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 2.3 Flujo de Datos
|
|
172
|
+
|
|
173
|
+
El flujo de datos en XOne sigue un patron claro entre la base de datos local, las colecciones en memoria y la interfaz de usuario:
|
|
174
|
+
|
|
175
|
+
```
|
|
176
|
+
+----------------+ +-------------------+ +----------+
|
|
177
|
+
| BD Local | <----> | Coleccion | <----> | UI |
|
|
178
|
+
| (gestion.db) | SQL | (objetos en | binding | (props, |
|
|
179
|
+
| SQLite | | memoria) | | frames) |
|
|
180
|
+
+----------------+ +-------------------+ +----------+
|
|
181
|
+
^
|
|
182
|
+
| Sincronización
|
|
183
|
+
v
|
|
184
|
+
+----------------+
|
|
185
|
+
| Servidor |
|
|
186
|
+
| de Replica |
|
|
187
|
+
+----------------+
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
1. **BD Local -> Coleccion**: Las colecciones cargan datos de SQLite mediante el atributo `sql`
|
|
191
|
+
2. **Coleccion -> UI**: Las propiedades (`prop`) muestran los datos de la coleccion automáticamente
|
|
192
|
+
3. **UI -> Coleccion**: Cuando el usuario edita un campo, el valor se actualiza en el objeto (DataObject)
|
|
193
|
+
4. **Coleccion -> BD Local**: Al llamar a `save()`, los cambios se persisten en SQLite
|
|
194
|
+
5. **BD Local <-> Servidor**: El sistema de replica sincroniza los datos bidireccionalmente
|
|
195
|
+
|
|
196
|
+
### 2.4 Sincronización con Servidor
|
|
197
|
+
|
|
198
|
+
La sincronización es una de las caracteristicas más poderosas de XOne. Cada registro en la base de datos tiene un campo `ROWID` que contiene un GUID (identificador único global) de 32 caracteres hexadecimales. Este GUID permite:
|
|
199
|
+
|
|
200
|
+
- Identificar de forma única cada registro en cualquier dispositivo
|
|
201
|
+
- Resolver conflictos de sincronización
|
|
202
|
+
- Mantener la integridad referencial entre dispositivos
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
Dispositivo A Servidor Dispositivo B
|
|
206
|
+
+----------+ +--------+ +----------+
|
|
207
|
+
| ROWID: | push | | pull | ROWID: |
|
|
208
|
+
| a1b2c3.. | -------> | a1b2.. | -------> | a1b2c3.. |
|
|
209
|
+
+----------+ +--------+ +----------+
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
> **Nota:** El `ROWID` es una **columna de plataforma**: el framework la crea y la rellena sola (autogenera el GUID de 32 caracteres hex en cada alta) y el motor de réplica la usa como clave global de fila. **No hace falta declararla** como `<prop>` (igual que el `ID`); declararla es válido pero redundante, así que mejor omitirla por limpieza.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 3. Anatomia de un Proyecto XOne
|
|
217
|
+
|
|
218
|
+
### 3.1 Archivos Obligatorios
|
|
219
|
+
|
|
220
|
+
Todo proyecto XOne requiere estos archivos en la raiz:
|
|
221
|
+
|
|
222
|
+
| Archivo | Proposito | Equivalente Web |
|
|
223
|
+
|---------|-----------|-----------------|
|
|
224
|
+
| `app.xml` | Configuración global de la aplicación | `package.json` + configuración del framework |
|
|
225
|
+
| `app.ini` | Metadatos de la aplicación (nombre, icono) | `manifest.json` |
|
|
226
|
+
| `mappings.xne` | Colecciones base (Empresas y Usuarios) | Schema de base de datos |
|
|
227
|
+
| `default.css` | Estilos globales de la aplicación | Archivo CSS global |
|
|
228
|
+
| `functions.js` | Funciones JavaScript compartidas | Archivo JS de utilidades |
|
|
229
|
+
| `EntradaApp.xne` | Pantalla de entrada de la aplicación | `index.html` |
|
|
230
|
+
|
|
231
|
+
Además, cada coleccion adicional y cada pantalla se define en su propio archivo `.xne`:
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
MenuPrincipal.xne --> Pantalla del menu principal
|
|
235
|
+
ListaTareas.xne --> Pantalla con lista de tareas
|
|
236
|
+
DetalleTarea.xne --> Pantalla de detalle/edicion
|
|
237
|
+
Tareas.xne --> Definición de coleccion (tabla + campos)
|
|
238
|
+
Categorias.xne --> Otra coleccion
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 3.2 Carpetas Obligatorias
|
|
242
|
+
|
|
243
|
+
| Carpeta | Contenido | Por que es obligatoria |
|
|
244
|
+
|---------|-----------|----------------------|
|
|
245
|
+
| `bd/` | `gestion.db` (base de datos SQLite) | Sin BD la app no puede almacenar ni consultar datos |
|
|
246
|
+
| `icons/` | Iconos y recursos gráficos (PNG, JPG, SVG) | La app necesita iconos para botones, menú, etc. (el splash NO va aquí — ver §4.1) |
|
|
247
|
+
| `files/` | Archivos dinámicos (fotos, firmas, documentos) | Directorio de trabajo para archivos generados en runtime |
|
|
248
|
+
|
|
249
|
+
### 3.3 Carpetas Opcionales
|
|
250
|
+
|
|
251
|
+
| Carpeta | Contenido | Cuando usarla |
|
|
252
|
+
|---------|-----------|---------------|
|
|
253
|
+
| `fonts/` | Fuentes tipograficas (.ttf, .otf) | Cuando necesitas tipografía personalizada |
|
|
254
|
+
| `lang/` | Subcarpetas por idioma (`en/`, `es/`, `fr/`) | Para apps multiidioma |
|
|
255
|
+
| `native/` | Código nativo (`Android/`, `IOS/`) | Para integraciones nativas avanzadas |
|
|
256
|
+
| `scripts/` | Scripts JS organizados en subcarpetas | En proyectos grandes con mucho JS |
|
|
257
|
+
| `certificates/` | Certificados SSL/TLS (.crt, .pem) | Para conexiones seguras personalizadas |
|
|
258
|
+
|
|
259
|
+
### 3.4 Diagrama de Estructura Completa
|
|
260
|
+
|
|
261
|
+
A continuacion, el diagrama de un proyecto XOne típico. Los elementos marcados con `[OBL]` son obligatorios:
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
MiProyectoXOne/
|
|
265
|
+
|
|
|
266
|
+
|-- app.xml [OBL] Configuración de la aplicacion
|
|
267
|
+
|-- app.ini [OBL] Metadatos (nombre, icono)
|
|
268
|
+
|-- mappings.xne [OBL] SOLO Empresas y Usuarios
|
|
269
|
+
|-- default.css [OBL] Estilos globales
|
|
270
|
+
|-- functions.js [OBL] Funciones JS globales
|
|
271
|
+
|-- EntradaApp.xne [OBL] Pantalla de entrada
|
|
272
|
+
|-- splash.png [OPC] Imagen de splash (ver §4.1 "Pantalla de splash")
|
|
273
|
+
|
|
|
274
|
+
|-- MenuPrincipal.xne Pantalla del menu
|
|
275
|
+
|-- Login.xne Pantalla de login
|
|
276
|
+
|-- ListaClientes.xne Pantalla de listado
|
|
277
|
+
|-- DetalleCliente.xne Pantalla de detalle
|
|
278
|
+
|-- Clientes.xne Colección (datos de clientes)
|
|
279
|
+
|-- Productos.xne Colección (datos de productos)
|
|
280
|
+
|
|
|
281
|
+
|-- bd/ [OBL] Base de datos
|
|
282
|
+
| +-- gestion.db Archivo SQLite
|
|
283
|
+
|
|
|
284
|
+
|-- icons/ [OBL] Recursos gráficos
|
|
285
|
+
| |-- app_icon.png Icono de la app (192x192)
|
|
286
|
+
| |-- ic_menu.png Icono de menú (48x48)
|
|
287
|
+
| |-- ic_search.png Icono de búsqueda (48x48)
|
|
288
|
+
| +-- ic_arrow_back.png Flecha atrás (48x48)
|
|
289
|
+
|
|
|
290
|
+
|-- files/ [OBL] Archivos dinamicos
|
|
291
|
+
| |-- fotos/
|
|
292
|
+
| |-- documentos/
|
|
293
|
+
| +-- firmas/
|
|
294
|
+
|
|
|
295
|
+
|-- fonts/ [REC] Fuentes tipograficas
|
|
296
|
+
| |-- Roboto-Regular.ttf
|
|
297
|
+
| +-- Roboto-Bold.ttf
|
|
298
|
+
|
|
|
299
|
+
|-- scripts/ [OPC] Scripts organizados
|
|
300
|
+
| |-- login/
|
|
301
|
+
| +-- general/
|
|
302
|
+
|
|
|
303
|
+
+-- lang/ [OPC] Multiidioma
|
|
304
|
+
|-- en/
|
|
305
|
+
+-- es/
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
> **Regla crítica:** El archivo `mappings.xne` SOLO debe contener las colecciones `Empresas` y `Usuarios`. Todas las demas colecciones van en archivos `.xne` separados, uno por cada coleccion. Ver sección [4.3 mappings.xne](#43-mappingsxne) para más detalle.
|
|
309
|
+
|
|
310
|
+
## 5. Tipos de Archivos en XOne
|
|
311
|
+
|
|
312
|
+
XOne utiliza varios tipos de archivos, cada uno con un proposito especifico:
|
|
313
|
+
|
|
314
|
+
| Extensión | Tipo | Proposito | Equivalente Web |
|
|
315
|
+
|-----------|------|-----------|-----------------|
|
|
316
|
+
| `.xne` | XML propietario | Definición de colecciones y pantallas | `.html` + `.json` (schema) |
|
|
317
|
+
| `.css` | CSS propietario | Estilos visuales (NO es CSS web estándar) | `.css` (con diferencias importantes) |
|
|
318
|
+
| `.js` | JavaScript | Lógica de negocio y funciones | `.js` (API diferente) |
|
|
319
|
+
| `.xml` | XML estándar | Configuración (`app.xml`) | Archivos de configuración |
|
|
320
|
+
| `.ini` | Texto plano | Metadatos (`app.ini`) | `.env` / `manifest.json` |
|
|
321
|
+
| `.db` | SQLite | Base de datos local | Base de datos del backend |
|
|
322
|
+
|
|
323
|
+
### Archivos .xne (fuente) vs .xml (generado por XOneStudio)
|
|
324
|
+
|
|
325
|
+
En XOne hay una distincion fundamental entre **fuente** y **salida generada**:
|
|
326
|
+
|
|
327
|
+
| Extensión | Rol | Quien lo edita |
|
|
328
|
+
|-----------|-----|----------------|
|
|
329
|
+
| `.xne` | **Fichero fuente** de colecciones y pantallas | El programador (y la IA) — es lo único que se edita |
|
|
330
|
+
| `.xml` (de colecciones/pantallas) | **Artefacto generado automáticamente** por XOneStudio a partir del `.xne` correspondiente | **Nadie** — se regenera solo |
|
|
331
|
+
| `app.xml` | Configuración global de la aplicación (única excepción) | El programador — es fuente, no tiene `.xne` que lo genere |
|
|
332
|
+
|
|
333
|
+
Los archivos `.xne` son el corazón de XOne. Aunque tienen contenido XML, usan la extensión `.xne` (XOne Native Extensión). Un mismo archivo `.xne` puede definir:
|
|
334
|
+
|
|
335
|
+
- **Una coleccion de datos** (como una tabla de BD con sus campos)
|
|
336
|
+
- **Una pantalla** (con su layout, botones y lógica)
|
|
337
|
+
- **Ambas cosas a la vez** (coleccion + presentación visual)
|
|
338
|
+
|
|
339
|
+
#### Por que existen los `.xml` de colecciones
|
|
340
|
+
|
|
341
|
+
XOneStudio genera automáticamente un `.xml` por cada `.xne` porque **algunos motores de ejecución del framework todavia leen `.xml`**. No son ficheros legacy ni restos de proyectos antiguos: se generan hoy, en proyectos nuevos, como artefacto de build. El plan de futuro es que desaparezcan y todo quede solo en `.xne`.
|
|
342
|
+
|
|
343
|
+
#### Regla operativa: solo `.xne`
|
|
344
|
+
|
|
345
|
+
> **Al trabajar sobre un proyecto XOne (nuevo o existente), solo se tocan los ficheros `.xne`. Los `.xml` de colecciones o pantallas que aparezcan se ignoran por completo: no se leen, no se editan, no se consultan, no se crean. La única excepción es `app.xml` (configuración global), que SI es fuente.**
|
|
346
|
+
|
|
347
|
+
Esto aplica tanto si el proyecto tiene solo `.xne` como si tiene `.xne` y `.xml` conviviendo. La coexistencia es normal hoy en día; el trabajo con IA se comporta como si los `.xml` (excepto `app.xml`) no existieran.
|
|
348
|
+
|
|
349
|
+
### Archivos .css (Estilos Propietarios)
|
|
350
|
+
|
|
351
|
+
El CSS de XOne se parece al CSS web pero tiene diferencias cruciales:
|
|
352
|
+
|
|
353
|
+
| Caracteristica | CSS Web | CSS XOne |
|
|
354
|
+
|---------------|---------|----------|
|
|
355
|
+
| Unidades de medida | `px`, `em`, `rem`, `vw` | `p` (puntos), `%` (porcentaje) |
|
|
356
|
+
| Selectores | `#id`, `.clase`, `tag`, `[attr]` | `coll`, `prop`, `prop:TYPE`, `.clase` |
|
|
357
|
+
| Herencia | `inherit`, cascada natural | `extends:.otraClase` |
|
|
358
|
+
| Colores | `#RGB`, `rgb()`, `hsl()`, nombres | `#RRGGBB`, `#AARRGGBB` |
|
|
359
|
+
| Modelo de caja | `box-sizing`, `margin`, `padding` | `tmargin`, `bmargin`, `lmargin`, `rmargin` |
|
|
360
|
+
|
|
361
|
+
> Para la referencia completa de atributos CSS, consulta el tópico 04 - Estilos CSS en XOne.
|
|
362
|
+
|
|
363
|
+
### Archivos .js (JavaScript)
|
|
364
|
+
|
|
365
|
+
El JavaScript de XOne usa un motor propio con APIs específicas:
|
|
366
|
+
|
|
367
|
+
```javascript
|
|
368
|
+
// Esto NO funciona en XOne (APIs del DOM):
|
|
369
|
+
document.getElementById("miCampo"); // NO existe
|
|
370
|
+
window.addEventListener("click", fn); // NO existe
|
|
371
|
+
localStorage.setItem("key", "val"); // NO existe
|
|
372
|
+
|
|
373
|
+
// Esto SÍ funciona en XOne (APIs propias):
|
|
374
|
+
self.MAP_CAMPO; // Acceder a un campo
|
|
375
|
+
ui.showToast("Mensaje"); // Mostrar notificación
|
|
376
|
+
appData.getCollection("Tareas"); // Obtener coleccion
|
|
377
|
+
$http.get(url, request, ok, err); // Petición HTTP (forma idiomática)
|
|
378
|
+
|
|
379
|
+
// Esto también funciona (implementación custom XOne, compatible con spec):
|
|
380
|
+
fetch("https://api.com/datos").then(r => r.json()); // sí existe
|
|
381
|
+
new Promise((resolve, reject) => { resolve(42); }); // sí existe (ES2024)
|
|
382
|
+
setTimeout(() => console.log("hola"), 1000); // sí existe
|
|
383
|
+
class Tarea { constructor(t) { this.titulo = t; } } // sí existe
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
> Para la referencia completa de la API JavaScript, consulta el tópico 03 - API JavaScript.
|
|
387
|
+
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Índice completo de las referencias
|
|
2
|
+
|
|
3
|
+
> Referencia de `xone-development`. Sale del `SKILL.md` para que las reglas
|
|
4
|
+
> duras quepan en una lectura por omisión (100 líneas).
|
|
5
|
+
|
|
6
|
+
## Referencias
|
|
7
|
+
|
|
8
|
+
Lee el fichero que corresponda antes de responder sobre atributos concretos, valores admitidos o ejemplos.
|
|
9
|
+
|
|
10
|
+
### Fundamentos
|
|
11
|
+
- [fundamentos/plataforma-y-anatomia-de-proyecto.md](references/fundamentos/plataforma-y-anatomia-de-proyecto.md) — Qué es XOne, arquitectura, ciclo de vida colección/objeto/propiedad, sincronización, anatomía de carpetas y tipos de fichero
|
|
12
|
+
- [fundamentos/configuracion-app-xml-ini-mappings.md](references/fundamentos/configuracion-app-xml-ini-mappings.md) — `app.xml` atributo por atributo, `app.ini` y `mappings.xne`
|
|
13
|
+
- [fundamentos/conceptos-clave.md](references/fundamentos/conceptos-clave.md) — Colecciones, DataObject, props, `##PREF##`, macros del sistema, códigos de error y detalle de la sintaxis JS soportada
|
|
14
|
+
- [fundamentos/navegacion-convenciones-y-primer-proyecto.md](references/fundamentos/navegacion-convenciones-y-primer-proyecto.md) — Flujo Splash→Login→EntradaApp→Menu, convenciones de nombres y creación de un proyecto básico paso a paso
|
|
15
|
+
- [fundamentos/errores-comunes.md](references/fundamentos/errores-comunes.md) — Errores frecuentes al empezar y su corrección
|
|
16
|
+
|
|
17
|
+
### XML / UI
|
|
18
|
+
- [xml-ui/estructura-y-nodo-coll.md](references/xml-ui/estructura-y-nodo-coll.md) — Introducción a la UI y nodo `coll`: colecciones de datos vs especiales, valores de `progid`, `sql`, `loadall`
|
|
19
|
+
- [xml-ui/nodos-group-y-frame.md](references/xml-ui/nodos-group-y-frame.md) — `group` (fijos, drawer, tabs) y `frame` (flotantes, bottom sheet, flujo de layout y `newline`)
|
|
20
|
+
- [xml-ui/prop-atributos-y-condiciones.md](references/xml-ui/prop-atributos-y-condiciones.md) — Atributos comunes de `prop`, visibilidad completa, dimensiones, estilos inline, comportamiento, bordes, `disablevisible`/`disableedit`
|
|
21
|
+
- [xml-ui/prop-tipos-basicos.md](references/xml-ui/prop-tipos-basicos.md) — Props de texto, número, label, botón, checkbox, fecha/hora, imagen (con animaciones Lottie y GIF), foto (con foto en movimiento), vídeo y escáner
|
|
22
|
+
- [xml-ui/prop-tipos-listas-y-mapas.md](references/xml-ui/prop-tipos-listas-y-mapas.md) — Props de mapa, grid/lista, chips, kanban y coverflow
|
|
23
|
+
- [xml-ui/prop-tipos-combos-y-controles.md](references/xml-ui/prop-tipos-combos-y-controles.md) — Combos, web, slider, progress, stepper, OTP, markdown, navbar, password, adjunto, THTML, firma DR, `onchange`, `updates` y `formula`
|
|
24
|
+
- [xml-ui/contents-y-macros.md](references/xml-ui/contents-y-macros.md) — `contents` (vinculación, filtros dinámicos) y macros (sistema, `setMacro`/`getMacro`)
|
|
25
|
+
- [xml-ui/asfilter-visibilidad-eventos-y-macros.md](references/xml-ui/asfilter-visibilidad-eventos-y-macros.md) — `asfilter`, event handlers detallados, sistema de visibilidad y catálogo de macros del sistema
|
|
26
|
+
- [xml-ui/patrones-de-pantalla.md](references/xml-ui/patrones-de-pantalla.md) — Plantillas completas de pantalla: login, menú, lista con filtros, detalle, tabs, mapa, chat, dashboard, maestro-detalle, edición en línea, multi-selección
|
|
27
|
+
- [xml-ui/layouts-herencia-y-buenas-practicas.md](references/xml-ui/layouts-herencia-y-buenas-practicas.md) — Layouts responsive, modales, FAB, herencia con `inherits`, `include-layout`, checklist de validación y unicidad de nombres
|
|
28
|
+
- [xml-ui/atributos-coll-group-frame.md](references/xml-ui/atributos-coll-group-frame.md) — Cualquier atributo de `coll`, `group` o `frame` con tipo, valores y default
|
|
29
|
+
- [xml-ui/atributos-prop.md](references/xml-ui/atributos-prop.md) — Cualquier atributo de `prop`: colores por estado, bordes, entrada, multimedia, ML, `classid`, sliders, stepper, OTP, kanban, coverflow, chips
|
|
30
|
+
- [xml-ui/atributos-method-macro-script-event-app.md](references/xml-ui/atributos-method-macro-script-event-app.md) — Atributos de `method`, `macro`, `script`, `event`, `platform`, tipos y atributos globales de la app
|
|
31
|
+
- [xml-ui/mappings-y-colecciones-separadas.md](references/xml-ui/mappings-y-colecciones-separadas.md) — `mappings.xne` obligatorio y colecciones en archivos separados
|
|
32
|
+
- [xml-ui/mapas.md](references/xml-ui/mapas.md) — Mapas completos: atributos, eventos y API JavaScript del control
|
|
33
|
+
- [xml-ui/eventos-ciclo-de-vida-e-interaccion.md](references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md) — Catálogo de eventos: ciclo de vida e interacción (`onclick`, `onchange`, `selecteditem`, `onlongpressitem`, `onback`)
|
|
34
|
+
- [xml-ui/eventos-sistema-login-y-personalizados.md](references/xml-ui/eventos-sistema-login-y-personalizados.md) — Eventos de drawer y bottom sheet, login, sistema (`onpushreceived`, `maintenance`, `sys-message`), ciclo de aplicación, inactividad, personalizados con `ExecuteNode` y acciones
|
|
35
|
+
- [xml-ui/errores-comunes-xml.md](references/xml-ui/errores-comunes-xml.md) — Errores comunes de XML y su corrección
|
|
36
|
+
|
|
37
|
+
### JavaScript
|
|
38
|
+
- [javascript/motor-js-y-contexto-de-ejecucion.md](references/javascript/motor-js-y-contexto-de-ejecucion.md) — Motor JS, cómo se ejecuta desde eventos XML, diferencias con JS web, ámbitos y persistencia de variables, escape XML/CDATA en `.xne`
|
|
39
|
+
- [javascript/self-y-dataobject.md](references/javascript/self-y-dataobject.md) — `self`: campos, `getOldValue`, `getOwnerCollection`, `getContents`, `setFieldPropertyValue`, `executeNode`, `save`, JSON y métodos de `DataCollection`
|
|
40
|
+
- [javascript/ui-navegacion-mensajes-y-vista.md](references/javascript/ui-navegacion-mensajes-y-vista.md) — `ui`: navegación, `msgBox`/`showToast`/`showSnackbar`, refresco y acceso a controles, showcase, date/time pickers
|
|
41
|
+
- [javascript/ui-gps-camara-y-multimedia.md](references/javascript/ui-gps-camara-y-multimedia.md) — `ui`: GPS completo, cámara (`startCamera` con foto en movimiento), escáner de documentos (`scanDocument`), OCR (`recognizeText`), archivos, firma, escáner QR, sleep y timers
|
|
42
|
+
- [javascript/ui-catalogo-de-metodos.md](references/javascript/ui-catalogo-de-metodos.md) — `ui`: `executeActionAfterDelay`, cronómetros, API de Stepper y OTP, voz (TTS/STT), audio y catálogo completo de métodos
|
|
43
|
+
- [javascript/coleccion-error-y-usuario.md](references/javascript/coleccion-error-y-usuario.md) — API completa de la colección actual (browse, filtros, búsqueda full-text, macros, metadatos, SQL, JSON), objeto de error y usuario logueado
|
|
44
|
+
- [javascript/objetos-creables-a-m.md](references/javascript/objetos-creables-a-m.md) — Creables de FileManager a Animation (SqlManager, IniParser, AndroidIntent, Bluetooth, OAuth2, Worker)
|
|
45
|
+
- [javascript/objetos-creables-n-z.md](references/javascript/objetos-creables-n-z.md) — Creables de Socket a XOneSigner (NFC, ImageDrawing, BarcodeGenerator, XOnePrinter, XOnePDF, OCR) y la lista canónica completa
|
|
46
|
+
- [javascript/singletons-globales.md](references/javascript/singletons-globales.md) — API de cada singleton global
|
|
47
|
+
- [javascript/patrones-criticos-seguridad-y-rendimiento.md](references/javascript/patrones-criticos-seguridad-y-rendimiento.md) — Patrones críticos (lock/unlock, browse, filter/restore, contexto en callbacks), seguridad y rendimiento
|
|
48
|
+
- [javascript/plantillas-y-funciones-utilitarias.md](references/javascript/plantillas-y-funciones-utilitarias.md) — Plantillas completas: CRUD, filtrado, maestro-detalle, GPS, fotos, chat, QR, login; y utilidades para `functions.js`
|
|
49
|
+
- [javascript/debugging-y-best-practices.md](references/javascript/debugging-y-best-practices.md) — Debugging de JavaScript y top 20 de buenas prácticas
|
|
50
|
+
- [javascript/metodos-de-los-controles.md](references/javascript/metodos-de-los-controles.md) — Métodos que expone cada control por tipo: campos, numéricos, multimedia, listas, mapas, gráficas, AR, frames
|
|
51
|
+
- [javascript/metodos-nativos-de-la-vista.md](references/javascript/metodos-nativos-de-la-vista.md) — Métodos que expone la vista nativa de Android/iOS bajo el frame o el control, no XOne: `setBlur`, `setSaturation`, sin contrato de compatibilidad
|
|
52
|
+
- [javascript/patrones-de-navegacion-datos-y-codigo.md](references/javascript/patrones-de-navegacion-datos-y-codigo.md) — Patrones de navegación, de datos y patrones críticos de código
|
|
53
|
+
- [javascript/patrones-de-ui-voz-integracion-y-seguridad.md](references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md) — Patrones de UI, control por voz, integración y seguridad
|
|
54
|
+
- [javascript/objeto-ai-llm-en-dispositivo.md](references/javascript/objeto-ai-llm-en-dispositivo.md) — Objeto `ai`: LLM en el dispositivo, descarga de modelos, `generate`, `chat` con streaming, function calling, skills y formatos
|
|
55
|
+
|
|
56
|
+
### CSS
|
|
57
|
+
- [css/selectores-unidades-colores.md](references/css/selectores-unidades-colores.md) — Selectores en detalle, unidades, paletas y formatos de color
|
|
58
|
+
- [css/propiedades-y-herencia.md](references/css/propiedades-y-herencia.md) — Atributos por categoría con ejemplos largos (dimensiones, márgenes, padding, fuentes, texto, fondo, bordes, sombras, visibilidad, Material) y el sistema `extends` completo
|
|
59
|
+
- [css/atributos-por-categoria.md](references/css/atributos-por-categoria.md) — Tablas compactas de atributos por categoría, incluidas etiquetas, checkbox/toggles, imágenes e iconos, atributos de `coll`, machine learning y la tabla de transparencia alpha
|
|
60
|
+
- [css/dinamicos-cascada-y-componentes.md](references/css/dinamicos-cascada-y-componentes.md) — `##FLD_CAMPO##`, cascada de dispositivo, `strict-mode`, animaciones y tokens, gráficos, calendario y mapa
|
|
61
|
+
- [css/patrones-material-y-temas.md](references/css/patrones-material-y-temas.md) — Patrones Material (header/body/footer, botones, inputs, tarjetas, FAB, toolbar, item de lista), temas light/dark y un `default.css` + `colors.css` completos y comentados
|
|
62
|
+
- [css/buenas-practicas-y-parser.md](references/css/buenas-practicas-y-parser.md) — Buenas prácticas, anti-patrones, checklist de validación y detalle de las funciones del parser (`@import`, variables, `calc()`, `!important`, `!default`, `@extend`, modo estricto)
|
|
63
|
+
|
|
64
|
+
### Datos e integración
|
|
65
|
+
- [datos/appdata.md](references/datos/appdata.md) — `appData` completo: colecciones, login/logout, paso de datos entre pantallas, macros globales, SQL directo, detección de dispositivo, `loadIncludeFile` y `loadCssFile`
|
|
66
|
+
- [datos/http.md](references/datos/http.md) — `$http`: verbos, descarga de fichero, futures y llamadas en paralelo, TLS y mutual TLS, pinning, proxy y WebSocket
|
|
67
|
+
- [datos/oauth2-y-replica.md](references/datos/oauth2-y-replica.md) — OAuth2 completo y objeto `replica`
|
|
68
|
+
- [datos/appdata-referencia-ampliada.md](references/datos/appdata-referencia-ampliada.md) — Segunda redacción del corpus para `appData`, con ejemplos adicionales
|
|
69
|
+
- [datos/http-sqlmanager-y-crypto.md](references/datos/http-sqlmanager-y-crypto.md) — Segunda redacción para `$http`, más `SqlManager` y la API `crypto`
|
|
70
|
+
|
|
71
|
+
### Dispositivo
|
|
72
|
+
- [device/objetos-de-dispositivo.md](references/device/objetos-de-dispositivo.md) — FileManager, XOnePDF, XOnePrinter, BarcodeGenerator, Datawedge, XOneNFC, XOneOCR, BluetoothSerialPort, WifiManager, Animation, deviceInfo, GpsTools, OAuth2, WebSocket y fingerprintManager
|
|
73
|
+
- [device/systemsettings-y-permisos.md](references/device/systemsettings-y-permisos.md) — `systemSettings`: permisos en runtime con futures, brillo, red, batería, memoria y espacio, hardware, rutas, MDM, XOneLive e Intune
|
|
74
|
+
- [device/systemsettings-referencia-ampliada.md](references/device/systemsettings-referencia-ampliada.md) — Segunda redacción del corpus para `systemSettings`, más extensa
|
|
75
|
+
- [device/biometria-imagedrawing-y-otros.md](references/device/biometria-imagedrawing-y-otros.md) — `biometricsManager`, `ImageDrawing`, otros objetos utilitarios y tabla resumen de complementarios
|
|
76
|
+
|
|
77
|
+
Para crear un proyecto completo desde cero, `xone-project-generator`. Para validar y auditar el XML resultante, `xone-review` (`xone-simulator validate`); para diagnosticar un fallo a partir de su síntoma, `xone-debugging`.
|