2012-07-18 8 views
12

Estoy haciendo un trabajo de gráficos y recibí un mensaje de una sola línea "Error de ejecución de diseño" cuando no se creaba nada en el gráfico. Mirando en esta me encontré con que tengo que añadir algunos archivos de comandos adicionales para generar los archivos de registro como cubiertos here:entendiendo "error de ejecución de diseño" logging

Layout Failures

As result of the design for the layout engine in 4.1, it is possible for improper configuration (or a bug) to cause a layout run to fail to complete all of its calculations. When this occurs, the layout simply stops and the partial results that have been flushed to the DOM are all that is visible. In some cases, the layout may be 99% complete and the failure may go undetected or appear as a minor visual anomaly. In other cases, the layout may fail early and leave the UI in a clearly broken state (much like a JS error during layout would do in previous versions).

Diagnostics

The first step if you suspect you are seeing a layout failure is to enable the layout diagnostics. This is done by replacing the normal "ext-all.js" file with "ext-all-dev.js" and adding a couple additional scripts.

añadí los scripts requeridos:

<script type="text/javascript" src="extjs/src/diag/layout/Context.js"></script> 
<script type="text/javascript" src="extjs/src/diag/layout/ContextItem.js"></script> 

Y ahora puedo recuperar los datos de diagnóstico que no puedo hacer ningún sentido de - no parece para diagnosticar un error:

++printer<autocontainer> - size: configured/shrinkWrap 
    --statprint-1472<autocontainer> - size: configured/configured 
     triggeredBy: count=1 
      statprint-1472.containerChildrenDone:dom() dirty: false, setBy: ? 
     --chart-1473<draw> - size: shrinkWrap/shrinkWrap 
      triggeredBy: count=1 
       chart-1473.containerChildrenDone:dom (true) dirty: false, setBy: ? 
    ++panel-1474<dock> - boxParent: printer - size: natural/configured 
    ++panel-1474<autocontainer> - boxParent: printer - size: natural/configured 
    ++statprint-1472<dock> - size: configured/configured 
     ++statprint-1472_header<body> [isBoxParent] - size: calculated/shrinkWrap 
     ++statprint-1472_header<hbox> [isBoxParent] - size: calculated/shrinkWrap 
      ++statprint-1472_header_hd<autocomponent> [isBoxParent] - size: calculated/shrinkWrap 
      ++tool-1475<autocomponent> [isBoxParent] - size: configured/configured 

¿Alguien sabe donde se explica la información de diagnóstico?

+0

respuesta corta es, es bastante complicado. Si pudieras publicar un caso de prueba (lo más simple posible), puedo probarlo y ayudarlo. –

+0

@EvanTrimboli Voy a publicar una nueva pregunta con el problema que me llevó a intentar diagnosticar "Fallo en la ejecución del diseño". – Geronimo

+0

Me interesa puede poner un enlace de referencia a la pregunta aquí – VDP

Respuesta

13

Creo que estos tipos de errores se resuelven a menudo el más rápido con un enfoque de comentario fuera hasta-que-va-a distancia de aislamiento config qué componente es la causa del fallo de diseño . Comente los componentes secundarios desde adentro hacia afuera, reemplazándolos con una configuración html de relleno, hasta que se haya puesto en cero el componente que causó la falla, luego vea cuánto puede volver a colocar hasta que vuelva el error y debería estar mirando solo unas pocas líneas de configuración restantes que puede mirar contra los documentos/muestras.

+0

+1 Simple pero efectivo. Acabo de hacer esto cuando todos los otros métodos no funcionaron o no se aplicaron. – Matt

+1

definitivamente el camino a seguir, pero es frustrante cómo algunas cosas que parecen tener sentido son totalmente rechazadas por el motor de diseño sin razón aparente. Acabo de obtener uno, lo reduje a agregar 'align: 'stretch'' a un hbox. No sé por qué debería fallar –

+0

Triste pero cierto. Demasiado a menudo necesito recurrir a él con extjs. –

4

Recibí mensajes de "Error de ejecución de diseño" en mi aplicación y descubrí que el problema se debía a que olvidé establecer la propiedad de diseño dentro de mi archivo Viewport.js. Una vez que definí un diseño allí, todo funcionó magníficamente bien. :)

Ejemplo:

Ext.define('MyApp.view.Viewport',{ 
    extend : 'Ext.container.Viewport', 

    layout : 'fit', 

}); 
2

Algunas de las causas pueden atribuirse como -

  1. Overnesting (buscan diseños de interiores diseño Algunas combinaciones de diseño anidado dará este error.)
  2. Un contenedor no se encuentra un diseño.
  3. A un contenedor o a sus hijos les falta información sobre el tamaño. Para ejemplo alto/ancho o flexible.
  4. Usando ui config en un componente que no está definido en el sass.

Para depurar, debemos investigar los diseños en las vistas donde se lanza la excepción.

Desafortunadamente, no hay documentación disponible.

fuente: el apoyo Sencha

+0

¡Guau! Las _ "combinaciones anidadas de diseño" _ ¡fueron la clave! ¡Gracias! En mi caso, un 'hbox/stretch' dentro de un' hbox/stretch' lo hizo fallar. ¡Cambié el interior por 'fit' y trabajé! –