Volver a la wiki

Biblioteca de stencils draw.io para Maps — 185 formas profesionales con búsqueda y drag&drop

Descripción

Integración completa de la biblioteca de stencils profesional de draw.io en el Map Editor (página Maps). Sustituye el menú desplegable de 12 formas básicas por un panel lateral estilo draw.io con 185 formas especializadas en DCIM (equipos de red, racks, componentes eléctricos, mobiliario de plano).

Características principales

Implementación

Componentes principales

  1. Conversor mxGraph → SVG (scripts/stencils/convert_mxgraph_stencils.py):

    • Descarga los 5 sets de stencils XML desde el repo jgraph/drawio (fijado al commit 43c1dfa7, Apache 2.0).
    • Interpreta el mini-lenguaje de dibujo mxGraph (path, rect, roundrect, ellipse, estilos, comandos de pintado).
    • Emite catálogo JSON estático con carga perezosa (static/stencils/index.json + <set_id>.json).
    • QA visual: scripts/stencils/preview.html renderiza todas las formas con tematizado dark.
  2. StencilRenderer.js:

    • Instancia Konva.Image desde el SVG completo del stencil.
    • Aplica supersampling 3x para mantener claridad en zoom.
    • Mapea colores: stroke draw.io → currentColor (controlado por el usuario), fill blanco → fondo oscuro del lienzo.
    • Maneja etiqueta editable mediante doble clic (persiste en data.label, PUT parcial de anotaciones).
  3. StencilPanel.js:

    • Panel lateral derecho dockable (hereda .sidebar-panel de editor.css).
    • Búsqueda transversal sobre todas las 185+ formas.
    • Secciones colapsables por set (Basic + 5 sets de catálogo).
    • Drag&drop al lienzo (Konva drag events) o clic = insertar al centro.
  4. Fix de datos: AnnotationsRenderer.js

    • El endpoint /annotations devolvía data como string JSON (serialización en el backend).
    • El modo Sala ya lo parseaba en su carga; el modo mapa no, causando fallos silenciosos cuando los renderers leían campos (data.render, data.svg).
    • Normalización en AnnotationsRenderer.renderAnnotation: si annot.data es string, parsearlo; si falla, defaultear a {}.

Cambios de código

Internacionalización

5 strings nuevos traducidos (django.po + compilemessages):

Licencia

Draw.io stencil libraries (Apache-2.0, commit 43c1dfa7 del repo jgraph/drawio) registradas en core/licenses_data/frontend.py. El LICENSE extra de stencils/ solo restringe productos Atlassian (N/A en nuestro caso, uso comercial permitido).

Verificación E2E

Local (stack Docker dev):

Véase también

Subir