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,550 @@
|
|
|
1
|
+
# XOne CSS — Estilos dinámicos, cascada y componentes
|
|
2
|
+
|
|
3
|
+
> Fuente: `xone/v2/xone-help-docs/topics/04-css-styling-guide.md` §7–§13. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
|
|
4
|
+
|
|
5
|
+
Contenido: §7 estilos por estado/valor · §8 referencias ##FLD_CAMPO## · §9 cascada de condiciones de dispositivo y strict-mode · §10 animaciones · §11 gráficos · §12 calendario · §13 mapa
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 7. Selectores Condicionales y Dinámicos
|
|
10
|
+
|
|
11
|
+
### 7.1 Estilos por estado/valor de campo
|
|
12
|
+
|
|
13
|
+
XOne permite aplicar clases CSS dinámicamente desde JavaScript usando la API `self` para cambiar el aspecto de elementos en función del estado de la aplicación. Aunque no existe un selector condicional CSS puro como `:hover` o `[data-attr]`, los estilos pueden cambiarse en tiempo de ejecución.
|
|
14
|
+
|
|
15
|
+
**Desde JavaScript, cambiar la clase de un campo:**
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
// En el evento onchange de un campo ESTADO
|
|
19
|
+
var estado = self.ESTADO;
|
|
20
|
+
var propEstado = ui.getView("badgeEstado");
|
|
21
|
+
|
|
22
|
+
if (estado == "PENDIENTE") {
|
|
23
|
+
propEstado.className = "badgePendiente";
|
|
24
|
+
} else if (estado == "EN_RUTA") {
|
|
25
|
+
propEstado.className = "badgeEnRuta";
|
|
26
|
+
} else if (estado == "ENTREGADO") {
|
|
27
|
+
propEstado.className = "badgeEntregado";
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 7.2 Ejemplo práctico - Colores por estado
|
|
32
|
+
|
|
33
|
+
En los proyectos reales se definen clases CSS para cada estado posible y se asignan desde JavaScript:
|
|
34
|
+
|
|
35
|
+
**CSS (proyecto XOneDelivery):**
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
/* Badge base */
|
|
39
|
+
.badgeEstado {
|
|
40
|
+
height: 28p;
|
|
41
|
+
fontsize: 12;
|
|
42
|
+
fontname: Roboto-Bold.ttf;
|
|
43
|
+
forecolor: #FFFFFF;
|
|
44
|
+
text-align: center;
|
|
45
|
+
border-corner-radius: 14;
|
|
46
|
+
lmargin: 10p;
|
|
47
|
+
rmargin: 10p;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.badgePendiente {
|
|
51
|
+
extends: .badgeEstado;
|
|
52
|
+
bgcolor: #FFC107;
|
|
53
|
+
forecolor: #212121;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.badgeAsignado {
|
|
57
|
+
extends: .badgeEstado;
|
|
58
|
+
bgcolor: #2196F3;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.badgeEnRuta {
|
|
62
|
+
extends: .badgeEstado;
|
|
63
|
+
bgcolor: #FF9800;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.badgeEnDestino {
|
|
67
|
+
extends: .badgeEstado;
|
|
68
|
+
bgcolor: #9C27B0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.badgeEntregado {
|
|
72
|
+
extends: .badgeEstado;
|
|
73
|
+
bgcolor: #4CAF50;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.badgeNoEntregado {
|
|
77
|
+
extends: .badgeEstado;
|
|
78
|
+
bgcolor: #F44336;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.badgeCancelado {
|
|
82
|
+
extends: .badgeEstado;
|
|
83
|
+
bgcolor: #9E9E9E;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**CSS para prioridades (proyecto GestionTareas):**
|
|
88
|
+
|
|
89
|
+
```css
|
|
90
|
+
.prioridadBaja {
|
|
91
|
+
forecolor: #4CAF50;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.prioridadMedia {
|
|
95
|
+
forecolor: #FF9800;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.prioridadAlta {
|
|
99
|
+
forecolor: #F44336;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.prioridadUrgente {
|
|
103
|
+
forecolor: #D32F2F;
|
|
104
|
+
fontbold: true;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
> **Referencia cruzada:** Para ver como manipular clases CSS desde JavaScript, consultar el tópico 03 - API JavaScript.
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 8. Referencias Dinámicas a Campos en CSS
|
|
113
|
+
|
|
114
|
+
### 8.1 Sintaxis `##FLD_NOMBRE_CAMPO##`
|
|
115
|
+
|
|
116
|
+
XOne permite referenciar valores de propiedades del objeto actual directamente en el CSS mediante la sintaxis `##FLD_NOMBRE_CAMPO##`. Esto permite que los estilos se calculen dinámicamente en función de los datos del registro actual.
|
|
117
|
+
|
|
118
|
+
**Sintaxis:**
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
##FLD_NOMBRE_DEL_CAMPO##
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Donde `NOMBRE_DEL_CAMPO` es el nombre de una propiedad (campo) definida en la coleccion. El valor de esa propiedad en el registro actual reemplazara el token en tiempo de ejecución.
|
|
125
|
+
|
|
126
|
+
### 8.2 Uso en CSS
|
|
127
|
+
|
|
128
|
+
```css
|
|
129
|
+
.frmsuperior {
|
|
130
|
+
width: 100%;
|
|
131
|
+
height: 120p;
|
|
132
|
+
bgcolor: ##FLD_MAP_COLORACTIVO##;
|
|
133
|
+
align: left|center;
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
En este ejemplo, el color de fondo del frame se obtiene dinámicamente del valor del campo `MAP_COLORACTIVO` del objeto actual. Si el campo contiene `#1565C0`, el frame tendra ese color de fondo.
|
|
138
|
+
|
|
139
|
+
### 8.3 Uso en atributos inline XML
|
|
140
|
+
|
|
141
|
+
La misma sintaxis funciona en los atributos inline de los nodos XML:
|
|
142
|
+
|
|
143
|
+
```xml
|
|
144
|
+
<prop name="MAP_LABEL" type="L"
|
|
145
|
+
bgcolor="##FLD_MAP_COLOR1##"
|
|
146
|
+
forecolor="##FLD_MAP_COLOR2##" />
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Esto obtiene los valores dinámicos de las propiedades `MAP_COLOR1` y `MAP_COLOR2` del objeto actual, permitiendo cambiar colores en tiempo de ejecución sin necesidad de JavaScript.
|
|
150
|
+
|
|
151
|
+
### 8.4 Casos de uso
|
|
152
|
+
|
|
153
|
+
Las referencias dinámicas son útiles para:
|
|
154
|
+
|
|
155
|
+
- **Colores por estado:** Un campo `COLOR_ESTADO` que cambia según el estado del registro
|
|
156
|
+
- **Temas por usuario/empresa:** Un campo `COLOR_EMPRESA` que define la paleta de colores corporativa
|
|
157
|
+
- **Indicadores visuales:** Cambiar el fondo de un frame según un valor calculado
|
|
158
|
+
- **Personalizacion:** Permitir que el usuario elija colores que se aplican directamente
|
|
159
|
+
|
|
160
|
+
**Ejemplo completo - Frame con color dinámico por estado:**
|
|
161
|
+
|
|
162
|
+
```css
|
|
163
|
+
/* El color del frame depende del campo MAP_COLOR del registro */
|
|
164
|
+
.frameEstadoDinamico {
|
|
165
|
+
width: 100%;
|
|
166
|
+
height: 80p;
|
|
167
|
+
bgcolor: ##FLD_MAP_COLOR##;
|
|
168
|
+
forecolor: #FFFFFF;
|
|
169
|
+
align: center;
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
```xml
|
|
174
|
+
<!-- En la coleccion, MAP_COLOR contiene valores como #4CAF50, #F44336, etc. -->
|
|
175
|
+
<prop name="MAP_COLOR" type="T" visible="0" />
|
|
176
|
+
<frame name="frmEstado" class="frameEstadoDinamico">
|
|
177
|
+
<prop name="ESTADO" type="L" forecolor="#FFFFFF" />
|
|
178
|
+
</frame>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
> **NOTA:** Los valores de los campos referenciados deben contener valores CSS validos (colores en formato `#RRGGBB`, nombres de imágenes, etc.). Si el campo esta vacio o contiene un valor no valido, el comportamiento puede ser inesperado.
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 9. Cascada de Condiciones de Dispositivo
|
|
186
|
+
|
|
187
|
+
### 9.1 Orden de cascada
|
|
188
|
+
|
|
189
|
+
XOne aplica los archivos CSS en un orden especifico de cascada, donde los archivos más especificos sobrescriben a los menos especificos. Este es el orden de prioridad de menor a mayor:
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
1. default.css (Base - MENOR prioridad)
|
|
193
|
+
2. default.ios.css / default.android.css (Plataforma)
|
|
194
|
+
3. default.portrait.css / default.landscape.css (Orientacion)
|
|
195
|
+
4. default.night.css (Modo oscuro/tema)
|
|
196
|
+
5. default.ios.portrait.css (Condiciones combinadas)
|
|
197
|
+
6. Atributos inline en XML (MAYOR prioridad)
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 9.2 Archivos por convencion de nombre
|
|
201
|
+
|
|
202
|
+
XOne reconoce automáticamente los archivos CSS según su nombre. No es necesario declararlos explicitamente en `app.xml` (excepto el archivo base `default.css`):
|
|
203
|
+
|
|
204
|
+
| Archivo | Condición | Prioridad |
|
|
205
|
+
|---------|-----------|:---------:|
|
|
206
|
+
| `default.css` | Siempre se carga (base) | 1 (menor) |
|
|
207
|
+
| `default.android.css` | Solo en dispositivos Android | 2 |
|
|
208
|
+
| `default.ios.css` | Solo en dispositivos iOS | 2 |
|
|
209
|
+
| `default.portrait.css` | Solo en orientación vertical | 3 |
|
|
210
|
+
| `default.landscape.css` | Solo en orientación horizontal | 3 |
|
|
211
|
+
| `default.night.css` | Solo en modo oscuro/nocturno | 4 |
|
|
212
|
+
| `default.day.css` | Solo en modo claro/diurno | 4 |
|
|
213
|
+
| `default.ios.portrait.css` | iOS + orientación vertical | 5 |
|
|
214
|
+
| `default.android.landscape.css` | Android + orientación horizontal | 5 |
|
|
215
|
+
|
|
216
|
+
### 9.3 Estilos condicionales explicitos en app.xml
|
|
217
|
+
|
|
218
|
+
Además de la convencion de nombres, se pueden declarar archivos CSS condicionales de forma explicita usando el atributo `conditions` en el nodo `<style>`:
|
|
219
|
+
|
|
220
|
+
```xml
|
|
221
|
+
<app ...>
|
|
222
|
+
<style url="default.css" strict-mode="true" />
|
|
223
|
+
<style url="default-ios.css" conditions="ios" strict-mode="true" />
|
|
224
|
+
<style url="default_hor.css" conditions="phone:horizontal" strict-mode="true" />
|
|
225
|
+
<style url="tablet_ver.css" conditions="tablet:vertical" />
|
|
226
|
+
<style url="tablet_hor.css" conditions="tablet:horizontal" />
|
|
227
|
+
</app>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
**Valores del atributo `conditions`:**
|
|
231
|
+
|
|
232
|
+
| Condición | Descripción |
|
|
233
|
+
|-----------|-------------|
|
|
234
|
+
| `ios` | Solo en iOS |
|
|
235
|
+
| `android` | Solo en Android |
|
|
236
|
+
| `phone:horizontal` | Telefono en orientación horizontal |
|
|
237
|
+
| `phone:vertical` | Telefono en orientación vertical |
|
|
238
|
+
| `tablet:horizontal` | Tablet en orientación horizontal |
|
|
239
|
+
| `tablet:vertical` | Tablet en orientación vertical |
|
|
240
|
+
|
|
241
|
+
### 9.4 Regla de sobrescritura
|
|
242
|
+
|
|
243
|
+
Las condiciones más especificas **siempre ganan** sobre las menos especificas. Si un atributo se define en multiples archivos CSS, el valor del archivo más especifico es el que se aplica:
|
|
244
|
+
|
|
245
|
+
```css
|
|
246
|
+
/* default.css */
|
|
247
|
+
.frameHeader {
|
|
248
|
+
bgcolor: #1565C0; /* Base: azul */
|
|
249
|
+
height: 140p;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/* default.ios.css */
|
|
253
|
+
.frameHeader {
|
|
254
|
+
bgcolor: #007AFF; /* iOS: azul de Apple */
|
|
255
|
+
height: 120p; /* iOS: header mas bajo */
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
/* default.night.css */
|
|
259
|
+
.frameHeader {
|
|
260
|
+
bgcolor: #1E1E1E; /* Modo oscuro: gris oscuro */
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
En este ejemplo:
|
|
265
|
+
- En **Android modo claro**: `bgcolor: #1565C0`, `height: 140p` (base)
|
|
266
|
+
- En **iOS modo claro**: `bgcolor: #007AFF`, `height: 120p` (plataforma sobrescribe)
|
|
267
|
+
- En **Android modo oscuro**: `bgcolor: #1E1E1E`, `height: 140p` (tema sobrescribe color, pero no altura)
|
|
268
|
+
- En **iOS modo oscuro**: `bgcolor: #1E1E1E`, `height: 120p` (tema sobrescribe color del de plataforma)
|
|
269
|
+
|
|
270
|
+
### 9.5 strict-mode
|
|
271
|
+
|
|
272
|
+
El atributo `strict-mode` en el nodo `<style>` permite validar el CSS durante la carga:
|
|
273
|
+
|
|
274
|
+
```xml
|
|
275
|
+
<style url="default.css" strict-mode="true" />
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Cuando `strict-mode="true"`, XOne valida errores en el CSS y reporta propiedades no reconocidas o valores invalidos. Es recomendable activarlo durante el desarrollo para detectar errores de sintaxis.
|
|
279
|
+
|
|
280
|
+
> **IMPORTANTE:** Solo es necesario declarar `default.css` en `app.xml`. Los archivos variantes (`default.ios.css`, `default.night.css`, etc.) se cargan automáticamente por convencion de nombre. Sin embargo, para archivos con nombres personalizados, es necesario declararlos explicitamente con el atributo `conditions`.
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## 10. Animaciones
|
|
285
|
+
|
|
286
|
+
### 10.1 Atributos de animación
|
|
287
|
+
|
|
288
|
+
| Atributo | Valores | Descripción |
|
|
289
|
+
|----------|---------|-------------|
|
|
290
|
+
| `animation-in` | Token de animación | Animación de entrada de la pantalla/frame |
|
|
291
|
+
| `animation-out` | Token de animación | Animación de salida de la pantalla/frame |
|
|
292
|
+
| `animation-in-delay` | Milisegundos (número) | Retardo de la animación de entrada |
|
|
293
|
+
| `animation-out-delay` | Milisegundos (número) | Retardo de la animación de salida |
|
|
294
|
+
|
|
295
|
+
### 10.2 Tipos de animación disponibles
|
|
296
|
+
|
|
297
|
+
XOne proporciona tokens predefinidos para animaciones. Estos tokens se encierran entre dobles almohadillas (`##`):
|
|
298
|
+
|
|
299
|
+
| Token | Descripción | Uso típico |
|
|
300
|
+
|-------|-------------|------------|
|
|
301
|
+
| `##RIGHT_IN##` | Entra desde la derecha | Navegación hacia adelante |
|
|
302
|
+
| `##LEFT_IN##` | Entra desde la izquierda | Navegación hacia atrás |
|
|
303
|
+
| `##RIGHT_OUT##` | Sale hacia la derecha | Salida al volver atrás |
|
|
304
|
+
| `##LEFT_OUT##` | Sale hacia la izquierda | Salida al avanzar |
|
|
305
|
+
| `##PUSH_IN##` | Entra desde abajo (push up) | Modales, paneles inferiores |
|
|
306
|
+
| `##PUSH_OUT##` | Sale hacia arriba (push up) | Cerrar modales |
|
|
307
|
+
| `##PUSH_DOWN_IN##` | Entra desde arriba | Notificaciones, dropdowns |
|
|
308
|
+
| `##PUSH_DOWN_OUT##` | Sale hacia abajo | Cerrar notificaciones |
|
|
309
|
+
| `##ALPHA_IN##` | Aparece con fade in | Transiciones suaves |
|
|
310
|
+
| `##ALPHA_OUT##` | Desaparece con fade out | Transiciones suaves |
|
|
311
|
+
| `##ZOOM_IN##` | Zoom de entrada (crece) | Detalle, ampliacion |
|
|
312
|
+
| `##ZOOM_OUT##` | Zoom de salida (encoge) | Cerrar detalle |
|
|
313
|
+
| `##ROTATE3D_IN##` | Rotación 3D de entrada | Efectos especiales |
|
|
314
|
+
| `##ROTATE3D_OUT##` | Rotación 3D de salida | Efectos especiales |
|
|
315
|
+
|
|
316
|
+
### 10.3 Cuando usar animaciones
|
|
317
|
+
|
|
318
|
+
- **Navegación entre pantallas:** `##RIGHT_IN##` / `##LEFT_OUT##` para avanzar, `##LEFT_IN##` / `##RIGHT_OUT##` para retroceder
|
|
319
|
+
- **Modales o paneles:** `##PUSH_IN##` / `##PUSH_OUT##` o `##PUSH_DOWN_IN##` / `##PUSH_DOWN_OUT##`
|
|
320
|
+
- **Transiciones suaves:** `##ALPHA_IN##` / `##ALPHA_OUT##`
|
|
321
|
+
- **Evitar en elementos repetitivos:** No aplicar animaciones a items de lista o elementos que se repintan frecuentemente
|
|
322
|
+
|
|
323
|
+
### 10.4 Ejemplo práctico
|
|
324
|
+
|
|
325
|
+
**Clases de animación reutilizables (proyecto SocialNetwork):**
|
|
326
|
+
|
|
327
|
+
```css
|
|
328
|
+
/* Fade in suave */
|
|
329
|
+
.animFadeIn {
|
|
330
|
+
animation-in: ##ALPHA_IN##;
|
|
331
|
+
animation-in-delay: 300;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/* Slide desde abajo */
|
|
335
|
+
.animSlideUp {
|
|
336
|
+
animation-in: ##PUSH_IN##;
|
|
337
|
+
animation-in-delay: 200;
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/* Slide lateral (navegacion) */
|
|
341
|
+
.animSlideRight {
|
|
342
|
+
animation-in: ##RIGHT_IN##;
|
|
343
|
+
animation-in-delay: 200;
|
|
344
|
+
animation-out: ##LEFT_OUT##;
|
|
345
|
+
animation-out-delay: 200;
|
|
346
|
+
}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Clases de animación con diferentes efectos (de la knowledgebase):**
|
|
350
|
+
|
|
351
|
+
```css
|
|
352
|
+
.FrameAnimateFromRight {
|
|
353
|
+
animation-in-delay: 500;
|
|
354
|
+
animation-out-delay: 500;
|
|
355
|
+
animation-in: ##RIGHT_IN##;
|
|
356
|
+
animation-out: ##LEFT_OUT##;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
.FrameAnimateAlpha {
|
|
360
|
+
animation-in-delay: 500;
|
|
361
|
+
animation-out-delay: 500;
|
|
362
|
+
animation-in: ##ALPHA_IN##;
|
|
363
|
+
animation-out: ##ALPHA_OUT##;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
.FrameAnimateZoom {
|
|
367
|
+
animation-in-delay: 500;
|
|
368
|
+
animation-out-delay: 500;
|
|
369
|
+
animation-in: ##ZOOM_IN##;
|
|
370
|
+
animation-out: ##ZOOM_OUT##;
|
|
371
|
+
}
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
**Uso en el selector `coll` para animar toda la coleccion:**
|
|
375
|
+
|
|
376
|
+
```css
|
|
377
|
+
coll {
|
|
378
|
+
animation-in: "##RIGHT_IN##";
|
|
379
|
+
}
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
---
|
|
383
|
+
|
|
384
|
+
## 11. Gráficos (Charts)
|
|
385
|
+
|
|
386
|
+
### 11.1 Tipos de gráfico disponibles
|
|
387
|
+
|
|
388
|
+
Los gráficos se definen mediante el atributo `type="Z"` en la propiedad XML y se configuran con atributos CSS. Los tipos de gráfico se especifican en el atributo XML `viewmode` o como viewmode de la coleccion:
|
|
389
|
+
|
|
390
|
+
- `barchart` - Gráfico de barras
|
|
391
|
+
- `3dbarchart` - Gráfico de barras 3D
|
|
392
|
+
- `slidingbarchart` - Gráfico de barras deslizable
|
|
393
|
+
- `piechart` - Gráfico circular (tarta)
|
|
394
|
+
- `piechart2` - Variante de gráfico circular
|
|
395
|
+
- `linechart` - Gráfico de lineas
|
|
396
|
+
- `areachart` - Gráfico de área
|
|
397
|
+
- `timeserieschart` - Gráfico de series temporales
|
|
398
|
+
|
|
399
|
+
**Atributos XML para datos del gráfico:**
|
|
400
|
+
|
|
401
|
+
| Atributo XML | Descripción |
|
|
402
|
+
|-------------|-------------|
|
|
403
|
+
| `chart-category="true"` | Define el campo como categoría (eje X) |
|
|
404
|
+
| `chart-value="true"` | Define el campo como valor (eje Y) |
|
|
405
|
+
| `chart-color="true"` | Define el campo como color de la serie |
|
|
406
|
+
|
|
407
|
+
### 11.2 Atributos de gráficos
|
|
408
|
+
|
|
409
|
+
| Atributo CSS | Valores | Descripción |
|
|
410
|
+
|--------------|---------|-------------|
|
|
411
|
+
| `chart-serie-color` | `#COLOR1,#COLOR2,...` | Colores de las series |
|
|
412
|
+
| `chart-color-template` | `#COLOR1,#COLOR2,...` | Plantilla de colores |
|
|
413
|
+
| `chart-lock-x-axis` | `true`/`false` | Bloquear eje X (sin zoom/pan) |
|
|
414
|
+
| `chart-lock-y-axis` | `true`/`false` | Bloquear eje Y (sin zoom/pan) |
|
|
415
|
+
| `chart-show-series-item-labels` | `true`/`false` | Mostrar etiquetas de valores |
|
|
416
|
+
| `chart-series-item-label-format` | `##VALUE##` | Formato de las etiquetas |
|
|
417
|
+
| `chart-category-label-rotation` | `up_45`/`up_90`/`down_45`/`down_90` | Rotación de etiquetas de categoría |
|
|
418
|
+
| `chart-category-max-value` | Número | Valor máximo de la categoría |
|
|
419
|
+
| `chart-category-step-size` | Número | Tamaño del paso entre valores |
|
|
420
|
+
| `chart-max-visible-series` | Número | Máximo de series visibles simultaneamente |
|
|
421
|
+
| `show-legend` | `true`/`false` | Mostrar leyenda del gráfico |
|
|
422
|
+
| `fontsize-legend` | Número | Tamaño de fuente de la leyenda |
|
|
423
|
+
|
|
424
|
+
### 11.3 Ejemplo completo
|
|
425
|
+
|
|
426
|
+
```css
|
|
427
|
+
.clsCharts {
|
|
428
|
+
width: 80%;
|
|
429
|
+
height: 75%;
|
|
430
|
+
chart-serie-color: #FF0000,#00FF00,#0000FF;
|
|
431
|
+
chart-lock-x-axis: true;
|
|
432
|
+
chart-lock-y-axis: true;
|
|
433
|
+
show-legend: true;
|
|
434
|
+
chart-show-series-item-labels: true;
|
|
435
|
+
chart-series-item-label-format: ##VALUE##;
|
|
436
|
+
chart-category-label-rotation: up_45;
|
|
437
|
+
}
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**Uso en XML:**
|
|
441
|
+
|
|
442
|
+
```xml
|
|
443
|
+
<prop name="MAP_BARCHART" type="Z" class="clsCharts" viewmode="barchart" visible="1" />
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**Ejemplo XML con campos de datos para el gráfico:**
|
|
447
|
+
|
|
448
|
+
```xml
|
|
449
|
+
<!-- En la coleccion de datos del gráfico -->
|
|
450
|
+
<prop name="CATEGORIA" chart-category="true" />
|
|
451
|
+
<prop name="VALOR" chart-value="true" />
|
|
452
|
+
<prop name="COLOR" chart-color="true" />
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
> **Referencia cruzada:** Para la definición XML completa de gráficos, consultar el tópico 02 - Estructura XML.
|
|
456
|
+
|
|
457
|
+
---
|
|
458
|
+
|
|
459
|
+
## 12. Calendario
|
|
460
|
+
|
|
461
|
+
### 12.1 Atributos de calendario
|
|
462
|
+
|
|
463
|
+
Los calendarios se definen con `type="Z"` y `viewmode="calendarview"` y se configuran con atributos CSS especificos para personalizar la apariencia de días, semanas y selección:
|
|
464
|
+
|
|
465
|
+
| Atributo | Valores | Descripción |
|
|
466
|
+
|----------|---------|-------------|
|
|
467
|
+
| `weekdays-bgcolor` | `#RRGGBB` | Color de fondo de la fila de días de semana |
|
|
468
|
+
| `weekdays-forecolor` | `#RRGGBB` | Color de texto de los días de semana |
|
|
469
|
+
| `weekdays-fontsize` | Número | Tamaño de fuente de los días de semana |
|
|
470
|
+
| `weekdays-longname` | `true`/`false` | Nombres largos (Lunes) vs cortos (Lun) |
|
|
471
|
+
| `weekdays-align` | `top`/`center`/`bottom` + `left`/`right` | Alineacion de los días |
|
|
472
|
+
| `page-swipe` | `true`/`false` | Permitir swipe entre meses |
|
|
473
|
+
| `cell-bgcolor` | `#RRGGBB`/`#AARRGGBB` | Color de fondo de las celdas de día |
|
|
474
|
+
| `cell-forecolor` | `#RRGGBB` | Color de texto de los días |
|
|
475
|
+
| `cell-border-width` | Número | Grosor del borde de celda |
|
|
476
|
+
| `cell-align` | `left`/`center`/`right` | Alineacion del contenido de celda |
|
|
477
|
+
| `cell-selected-bgcolor` | `#RRGGBB`/`#AARRGGBB` | Fondo del día seleccionado |
|
|
478
|
+
| `cell-selected-forecolor` | `#RRGGBB` | Texto del día seleccionado |
|
|
479
|
+
| `cell-selected-border-color` | `#RRGGBB` | Borde del día seleccionado |
|
|
480
|
+
| `cell-other-month-bgcolor` | `#RRGGBB`/`#AARRGGBB` | Fondo de los días de otros meses |
|
|
481
|
+
|
|
482
|
+
### 12.2 Ejemplo completo
|
|
483
|
+
|
|
484
|
+
```css
|
|
485
|
+
.z_calendario {
|
|
486
|
+
cell-bgcolor: #68008CFF;
|
|
487
|
+
cell-forecolor: #000000;
|
|
488
|
+
cell-border-width: 2;
|
|
489
|
+
cell-align: center;
|
|
490
|
+
cell-selected-bgcolor: #00000000;
|
|
491
|
+
cell-selected-forecolor: #0000CC;
|
|
492
|
+
cell-selected-border-color: #0000CC;
|
|
493
|
+
cell-other-month-bgcolor: #39767676;
|
|
494
|
+
weekdays-bgcolor: #00000000;
|
|
495
|
+
weekdays-forecolor: #000000;
|
|
496
|
+
weekdays-fontsize: 4;
|
|
497
|
+
weekdays-longname: true;
|
|
498
|
+
page-swipe: true;
|
|
499
|
+
}
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
**Nota:** Los colores con alpha como `#68008CFF` y `#39767676` usan el formato ARGB. Por ejemplo, `#39767676` es un gris con 22% de opacidad (0x39 = 57 de 255 = ~22%).
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
## 13. Mapa
|
|
507
|
+
|
|
508
|
+
### 13.1 Atributos de mapa
|
|
509
|
+
|
|
510
|
+
Los mapas se configuran estableciendo `viewmode: mapview` en la coleccion o en una clase aplicada a la coleccion. XOne soporta tanto Google Maps (`mapview`) como OpenStreetMap (`openstreetmap`):
|
|
511
|
+
|
|
512
|
+
| Atributo | Valores | Descripción |
|
|
513
|
+
|----------|---------|-------------|
|
|
514
|
+
| `viewmode` | `mapview` / `openstreetmap` | Activar modo mapa en la coleccion |
|
|
515
|
+
| `mapview-embedded` | `true`/`false` | Mapa embebido dentro del layout |
|
|
516
|
+
| `zoom-to-my-location` | `true`/`false` | Centrar automáticamente en la ubicación actual |
|
|
517
|
+
| `show-pois` | `true`/`false` | Mostrar puntos de interes |
|
|
518
|
+
| `clear-lines-on-refresh` | `true`/`false` | Limpiar lineas al refrescar datos |
|
|
519
|
+
| `clear-markers-on-refresh` | `true`/`false` | Limpiar marcadores al refrescar datos |
|
|
520
|
+
| `show-compass` | `true`/`false` | Mostrar brujula en el mapa |
|
|
521
|
+
| `show-minimap` | `true`/`false` | Mostrar minimapa de referencia |
|
|
522
|
+
| `show-scale` | `true`/`false` | Mostrar escala del mapa |
|
|
523
|
+
| `follow-location-on-background` | `true`/`false` | Seguir ubicación en segundo plano |
|
|
524
|
+
| `zoom-buttons-visibility` | `always`/`never` | Visibilidad de botones de zoom |
|
|
525
|
+
| `show-google-buttons` | `true`/`false` | Mostrar botones de Google Maps |
|
|
526
|
+
| `zoom-to-pois` | `true`/`false` | Ajustar zoom para mostrar todos los POIs |
|
|
527
|
+
|
|
528
|
+
### 13.2 Ejemplo completo
|
|
529
|
+
|
|
530
|
+
```css
|
|
531
|
+
.clsmapview {
|
|
532
|
+
viewmode: mapview;
|
|
533
|
+
mapview-embedded: true;
|
|
534
|
+
clear-lines-on-refresh: false;
|
|
535
|
+
clear-markers-on-refresh: false;
|
|
536
|
+
show-pois: false;
|
|
537
|
+
zoom-to-my-location: true;
|
|
538
|
+
}
|
|
539
|
+
```
|
|
540
|
+
|
|
541
|
+
**Uso en XML:**
|
|
542
|
+
|
|
543
|
+
```xml
|
|
544
|
+
<coll name="MapaEntregas" class="clsmapview">
|
|
545
|
+
<!-- Propiedades del mapa -->
|
|
546
|
+
</coll>
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
> **Referencia cruzada:** Para la API JavaScript de mapas (anadir marcadores, dibujar rutas), consultar el tópico 03 - API JavaScript.
|
|
550
|
+
|