@liquidcars/atlas 0.1.29 → 0.1.31
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 +35 -3
- package/demo/model.json +9 -9
- package/dist/liquidcars-atlas.js +774 -459
- package/dist/liquidcars-atlas.js.map +1 -1
- package/package.json +1 -1
- package/src/liquidcars-atlas.js +518 -132
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Después abre <http://localhost:4173/> (o <http://localhost:4173/demo/>). La dem
|
|
|
32
32
|
"p": [0, -3, 0],
|
|
33
33
|
"s": [11, 3.4, 5],
|
|
34
34
|
"c": "#48c8b0",
|
|
35
|
-
"type": "
|
|
35
|
+
"type": "container",
|
|
36
36
|
"text": "..."
|
|
37
37
|
}
|
|
38
38
|
],
|
|
@@ -59,6 +59,9 @@ atlas.panBy(-1.5, 0); // desplazamiento horizontal/vertical en el plano de cáma
|
|
|
59
59
|
atlas.panTo(0, 0, 0); // centra la cámara en un punto del mundo
|
|
60
60
|
atlas.fit();
|
|
61
61
|
atlas.frontView();
|
|
62
|
+
const initialView = atlas.getCameraView();
|
|
63
|
+
atlas.setCameraView(initialView, { animate: false });
|
|
64
|
+
atlas.restoreInitialCamera({ animate: false });
|
|
62
65
|
atlas.setShellLabels(true);
|
|
63
66
|
atlas.openAllContainers();
|
|
64
67
|
atlas.closeAllContainers();
|
|
@@ -97,7 +100,7 @@ por lo que una aplicación puede adaptar la apariencia sin modificar el bundle.
|
|
|
97
100
|
Las propiedades `atlas.theme` y `atlas.styles` son alias prácticos de esta configuración.
|
|
98
101
|
|
|
99
102
|
Eventos disponibles: `lc-ready`, `lc-error`, `lc-warning`, `lc-select`, `lc-model-change`,
|
|
100
|
-
`lc-relation-mode` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
|
|
103
|
+
`lc-relation-mode`, `lc-focus-change` y `lc-disconnect`. `lc-select` usa un detalle discriminado:
|
|
101
104
|
las entidades incluyen `{ kind: 'entity', id, entity, source }` y las relaciones
|
|
102
105
|
`{ kind: 'relation', id, index, relation, source }`. Los campos históricos `id`
|
|
103
106
|
y `entity` se conservan para las selecciones de entidad. Al volver a la vista
|
|
@@ -115,6 +118,8 @@ como `setClickBehavior()`).
|
|
|
115
118
|
|
|
116
119
|
- `palette`: mapa de nombres de color a valores CSS/hex.
|
|
117
120
|
- `theme` (opcional): configuración de `background`, `lighting`, `panel`, `toolbar`, `breadcrumbs`, `hint` y `ui`. `ui` permite mostrar u ocultar `panel`, `toolbar`, `breadcrumbs` y `hint`.
|
|
121
|
+
- `render.camera` (opcional): vista inicial con `position`, `target` y `zoom`. Las coordenadas pertenecen al espacio del modelo; `zoom` conserva el encuadre relativo entre tamaños de visor.
|
|
122
|
+
- `render.focus` (opcional): filtrado visual por selección. `mode` acepta `all` o `connected`, `effect` acepta `dim` o `hide`, y `layout` distingue posiciones estables (`preserve`) de una proyección recompilada (`reflow`).
|
|
118
123
|
- `entities`: objetos con `id`, `name`, `p`, `s`, `c`, `type`, `text` y opcionalmente `parent`, `geometry`, `radius`, `segments`, `frontLabel`, `anchor` y `ports`.
|
|
119
124
|
- `p` es la posición local respecto a `parent`; una entidad sin `parent` usa coordenadas de escena.
|
|
120
125
|
- `s` son dimensiones absolutas locales `[x, y, z]`.
|
|
@@ -127,6 +132,9 @@ como `setClickBehavior()`).
|
|
|
127
132
|
|
|
128
133
|
Geometrías incluidas en esta primera versión: `box`, `cylinder`, `sphere`, `cone`, `frustum-cone`, `frustum-pyramid`, `frustum-triangle`, `prism`, `pyramid-square`, `pyramid-triangle`, `octahedron`, `dodecahedron` e `icosahedron`. Las variantes `frustum-*` son sólidos truncados con dos caras finitas paralelas; las dimensiones `s` se aplican sobre su caja final normalizada.
|
|
129
134
|
|
|
135
|
+
Las etiquetas se rasterizan con relleno claro y un contorno oscuro proporcional
|
|
136
|
+
para mantener el contraste sobre geometrías tanto claras como oscuras.
|
|
137
|
+
|
|
130
138
|
## Geometry packs
|
|
131
139
|
|
|
132
140
|
Las geometrías pueden distribuirse en paquetes independientes. El componente
|
|
@@ -193,7 +201,31 @@ una caja roja de fallback y emite `lc-warning` con el código
|
|
|
193
201
|
|
|
194
202
|
La paleta puede cambiarse después de cargar el modelo mediante `atlas.setPalette({ nombre: color })` o asignando `atlas.palette = { ... }`. El cambio actualiza las piezas, aristas y relaciones sin reconstruir el modelo.
|
|
195
203
|
|
|
196
|
-
Las acciones de navegación y exploración también están disponibles para la página anfitriona: `zoomIn()`, `zoomOut()`, `panBy()`, `panTo()`, `fit()`, `frontView()`, `setShellLabels()`, `toggleShellLabels()`, `openAllContainers()` y `closeAllContainers()`. El usuario puede desplazar la vista con el botón derecho, con `Shift` + arrastre o mediante dos dedos en una pantalla táctil. Así se puede construir una barra de controles propia sin depender de la toolbar interna.
|
|
204
|
+
Las acciones de navegación y exploración también están disponibles para la página anfitriona: `zoomIn()`, `zoomOut()`, `panBy()`, `panTo()`, `fit()`, `frontView()`, `getCameraView()`, `setCameraView()`, `restoreInitialCamera()`, `setShellLabels()`, `toggleShellLabels()`, `setFocusFilter()`, `clearFocusFilter()`, `getFocusedIds()`, `openAllContainers()` y `closeAllContainers()`. El usuario puede desplazar la vista con el botón derecho, con `Shift` + arrastre o mediante dos dedos en una pantalla táctil. Así se puede construir una barra de controles propia sin depender de la toolbar interna.
|
|
205
|
+
|
|
206
|
+
Una vista inicial portable puede declararse dentro del modelo:
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
render:
|
|
210
|
+
focus:
|
|
211
|
+
mode: connected
|
|
212
|
+
effect: dim
|
|
213
|
+
layout: preserve
|
|
214
|
+
opacity: 0.12
|
|
215
|
+
camera:
|
|
216
|
+
position: [12.4, 7.2, 18.6]
|
|
217
|
+
target: [0, 1.5, 0]
|
|
218
|
+
zoom: 1.35
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
La API equivalente es `setFocusFilter({ mode, effect, layout, opacity })`.
|
|
222
|
+
`getFocusedIds()` devuelve la selección, sus vecinos directos y los contenedores
|
|
223
|
+
ancestros necesarios. El evento `lc-focus-change` permite que un host conectado a
|
|
224
|
+
`@liquidcars/atlas-layout` recompile una proyección cuando `layout` es `reflow`.
|
|
225
|
+
|
|
226
|
+
`position` y `target` fijan la dirección observada. Cuando existe `zoom`, éste
|
|
227
|
+
prevalece para calcular la distancia final y mantener el encuadre; si se omite,
|
|
228
|
+
Atlas lo deriva de la distancia declarada.
|
|
197
229
|
|
|
198
230
|
La escena también se puede editar en caliente. `updateModel(patch)` reemplaza
|
|
199
231
|
las secciones indicadas; `addEntity`, `updateEntity` y `removeEntity` gestionan
|
package/demo/model.json
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
5
|
|
29
29
|
],
|
|
30
30
|
"c": "offers",
|
|
31
|
-
"type": "
|
|
31
|
+
"type": "container",
|
|
32
32
|
"text": "La base del modelo contiene inventarios, ofertas y servicios. El dealer aporta la Base Offer, que referencia el vehículo físico; el proveedor aporta el servicio asociado."
|
|
33
33
|
},
|
|
34
34
|
{
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
5
|
|
47
47
|
],
|
|
48
48
|
"c": "ole",
|
|
49
|
-
"type": "
|
|
49
|
+
"type": "container",
|
|
50
50
|
"text": "El Offer Listing Engine aplica revenue management, etiquetas y condiciones de distribución para calcular la oferta que observa cada canal."
|
|
51
51
|
},
|
|
52
52
|
{
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
5
|
|
65
65
|
],
|
|
66
66
|
"c": "agreements",
|
|
67
|
-
"type": "
|
|
67
|
+
"type": "container",
|
|
68
68
|
"text": "Agrupa el acuerdo de distribución y sus ámbitos funcionales: atribución, reservas y pedidos. El acuerdo vincula las ofertas y servicios con su distribución autorizada."
|
|
69
69
|
},
|
|
70
70
|
{
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
5
|
|
83
83
|
],
|
|
84
84
|
"c": "channels",
|
|
85
|
-
"type": "
|
|
85
|
+
"type": "container",
|
|
86
86
|
"text": "Agrupa los canales de distribución. Cada CHANNEL está contenido en CHANNELS y contiene la oferta de canal que presenta al comprador."
|
|
87
87
|
},
|
|
88
88
|
{
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
3.9
|
|
102
102
|
],
|
|
103
103
|
"c": "offers",
|
|
104
|
-
"type": "
|
|
104
|
+
"type": "container",
|
|
105
105
|
"text": "Colección de ofertas alimentada directamente por el dealer o su sistema de stock. Contiene la Base Offer y propaga sus actualizaciones."
|
|
106
106
|
},
|
|
107
107
|
{
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
3.9
|
|
161
161
|
],
|
|
162
162
|
"c": "offers",
|
|
163
|
-
"type": "
|
|
163
|
+
"type": "container",
|
|
164
164
|
"text": "Vista calculada de un inventario mediante filtros y reglas. Está apoyada sobre el inventario físico para expresar su dependencia; no duplica el vehículo."
|
|
165
165
|
},
|
|
166
166
|
{
|
|
@@ -220,7 +220,7 @@
|
|
|
220
220
|
3.8
|
|
221
221
|
],
|
|
222
222
|
"c": "ole",
|
|
223
|
-
"type": "
|
|
223
|
+
"type": "container",
|
|
224
224
|
"text": "Etiquetas estáticas o dinámicas, activas o inactivas, que alimentan las reglas de selección, precio y disponibilidad. Su efecto procede de las fórmulas donde se utilizan."
|
|
225
225
|
},
|
|
226
226
|
{
|
|
@@ -365,7 +365,7 @@
|
|
|
365
365
|
3.8
|
|
366
366
|
],
|
|
367
367
|
"c": "ole",
|
|
368
|
-
"type": "
|
|
368
|
+
"type": "container",
|
|
369
369
|
"text": "Aplica las reglas comerciales autorizadas al contexto de distribución. Contiene la Channel Offer calculada; el sistema ejecuta las decisiones de las partes."
|
|
370
370
|
},
|
|
371
371
|
{
|
|
@@ -546,7 +546,7 @@
|
|
|
546
546
|
4.3
|
|
547
547
|
],
|
|
548
548
|
"c": "channels",
|
|
549
|
-
"type": "
|
|
549
|
+
"type": "container",
|
|
550
550
|
"text": "Representa un canal de distribución dentro de CHANNELS: un marketplace, la web del dealer u otro canal autorizado. Contiene la oferta de canal presentada al comprador."
|
|
551
551
|
},
|
|
552
552
|
{
|