# Paneles de control de un modelo

> Los paneles de control de forma libre definidos sobre un modelo, el marcador de posición de unidad que llevan sus vínculos, y cómo abre cada unidad su propia copia resuelta.

Un **panel de control de un modelo** es un panel de control corriente que nombra su modelo: se monta
con los mismos componentes y se edita con el mismo editor que cualquier panel de control de la página
View (véase [El editor de paneles de control](view-editor)), y lo que lo hace de un modelo es dónde
vive y qué nombran sus vínculos. Se lista en Process > Modelos > modelo > Visualización > **Paneles de
control**, sus campos de dirección ofrecen los canales del modelo, y escribe un marcador de posición
de unidad donde si no se nombraría una unidad concreta. Una sola definición sirve a todas las unidades
del modelo. Crear, quitar y marcar un panel de control exige el permiso **Gestionar Process**; editar
lo que hay en él exige el permiso **Editar los paneles de control** del área de paneles de control.

## La carpeta Paneles de control {#the-dashboards-folder}

Al seleccionar la fila **Paneles de control** se abre la página de la carpeta: la cabecera ("Paneles
de control de operación definidos sobre este modelo. Una sola definición sirve a todas las unidades:
cada unidad lleva una fila propia que lo abre sobre los canales vinculados de esa unidad.") y una
tarjeta por panel de control, con su icono y su nombre. Al hacer clic en una tarjeta se abre el panel
de control; la X de una tarjeta lo quita. Cuando el modelo no tiene ninguno, la página dice "Todavía
no hay paneles de control. Añada uno y edítelo con la caja de herramientas del editor." El árbol lista
los paneles de control bajo la carpeta por su nombre, y la fila de la carpeta los cuenta.

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
| --- | --- | --- | --- |
| **Panel de control** (barra de detalle, con la carpeta seleccionada; botón derecho **Añadir panel de control**) | Crea un panel de control vacío llamado `Panel de control <n>` (el primer número que no use ya ningún panel de control de este modelo), lo guarda y resalta su tarjeta en esta página, desplazada hasta quedar a la vista; el panel de control no se abre, y lo abren su tarjeta o su fila en el árbol. | Alguna unidad tiene un ensayo, o el runtime está detenido. | Sin Gestionar Process. |

Un panel de control nuevo empieza sin nada. Su nombre, su descripción, su icono y todo lo demás que
lleva un panel de control los cambia el editor (véase [Ajustes del panel de control](view-settings));
la página Process no lleva ningún campo para ellos.

## La página del panel de control {#the-dashboards-page}

Al seleccionar un panel de control se ejecuta en el panel de contenido, a sangre, sin nada delante:
esta es la definición en sí, dibujada en el mismo lienzo en el que se dibuja cualquier otro panel de
control. Como aquí no se nombra ninguna unidad, un componente vinculado a uno de los canales del
modelo dibuja su propia disposición y no lee ningún valor; para un vínculo así la línea de dirección
del editor dice "un punto por cada unidad de este modelo" en lugar de informar de un punto ausente. Un
componente vinculado a un punto de la estación (un tag, una variable) lo lee como siempre.

Un panel de control vacío lo dice en vez de quedarse como una franja en blanco: "Todavía no hay nada
en este sinóptico. Edítelo para colocar componentes: sus campos de dirección ofrecen los canales de
este modelo, y después cada unidad lee los suyos."

La barra de detalle lleva tres cosas para un panel de control seleccionado: **Editar el panel de
control**, el conmutador **Mostrar en View** y, en el grupo de peligro, **Quitar el panel de
control**.

## Editar el panel de control {#edit-dashboard}

**Editar el panel de control** entrega el cuerpo de la página Process al único editor de paneles de
control de la aplicación, montado sobre esta definición: el escenario, su filete y el carril de tareas
ocupan el lugar del panel de contenido, y la tira del editor lleva **Terminar la edición** ("Terminar
la edición y volver a ver este panel de control"), que devuelve el cuerpo al panel de contenido
ejecutando el panel de control tal como está ahora. Nada se confirma al salir: cada edición se guarda
según se hace. La dirección propia del panel de control (`/d/<id>`) sigue siendo un enlace profundo al
editor para quien llegue con una.

| Situación | Qué se ve |
| --- | --- |
| Su rol no tiene Editar los paneles de control | El verbo no se dibuja: lo que el rol nunca puede pulsar se deja fuera en vez de atenuarse. |
| Una unidad tiene un ensayo | El verbo se atenúa con "La configuración está bloqueada mientras una unidad está en marcha." Un bloqueo que llega mientras usted está editando termina el modo de edición; volver cuando la estación esté libre es una pulsación suya. |
| La selección se mueve fuera del panel de control, o el rol pierde el bit | El modo de edición termina igual. |

Eliminar el panel de control desde dentro del editor cierra el editor y aterriza la selección en la
carpeta Paneles de control del modelo.

### El marcador de posición de unidad en los vínculos {#the-unit-placeholder-in-bindings}

En un panel de control de un modelo, cada campo de dirección del editor empieza por los canales del
modelo, una fila por canal en el orden de canales del modelo, cada una escrita como la dirección de
"este canal, en la unidad que abre el sinóptico": `Process.<Model>.{unit}.Channels.<Channel>`. Elegir
una vincula el canal y deja la unidad para responderla más tarde. Los puntos propios de la estación
vienen después de esas filas (un panel de control de un modelo puede legítimamente leer un tag
ambiental o una variable compartida), la lista se corta en 50 sugerencias, y el campo se puede seguir
escribiendo a mano. Un campo que escribe (un Botón, una Entrada) lista solo los canales cuyo rol es
escribible, porque por qué canales se puede escribir en una unidad es el rol del canal.

Las filas se filtran por la categoría de valor que admite el campo, exactamente igual que los puntos
propios de la estación, así que un canal se oculta solo donde nada podría llevarlo.

Hay tres testigos que se responden cuando una unidad abre el panel de control:

| Testigo | Dónde se escribe | En qué se convierte |
| --- | --- | --- |
| `{unit}` | Dentro de una dirección, y como valor entero de una propiedad de componente que vincula una unidad (la Unidad de la cronología de comentarios o de la lista de incidencias, por ejemplo). | El segmento de dirección de la unidad en una dirección; la identidad de la unidad en una propiedad vinculada a una unidad. Escrito dentro de texto corriente (una etiqueta, un pie) se deja exactamente como está. |
| `{unit.name}` | Cualquier texto: el nombre y la descripción del panel de control, el nombre o el pie de un componente, el título de un gráfico o el rótulo de una serie, cualquier propiedad de texto. | El nombre visible de la unidad. |
| `{channel.name:<segment>}` | Cualquier texto. El segmento es el segmento de dirección saneado del canal, la misma clave que usa la dirección que tiene al lado. | El nombre que lleva el canal en esa unidad: su alias por unidad donde el modelo lo permite y la unidad lo puso, y el nombre propio del canal en los demás casos. Un segmento que no nombra ningún canal del modelo se queda como está. |

Mientras el panel de control se edita en el modelo, un componente cuya dirección todavía lleva
`{unit}` se trata como no vinculado: no dibuja nada y no marca nada, porque el silencio solo es real
en la copia resuelta.

## Cómo recibe cada unidad su panel de control resuelto {#how-each-unit-gets-its-resolved-dashboard}

Dentro de **Operar**, cada unidad del modelo lleva una fila por panel de control del modelo, después
de sus filas de panel. Al seleccionar esa fila se ejecuta la definición como propia de esta unidad:

- La definición se copia y se vuelve a identificar (identidades nuevas para el panel de control, sus
  componentes y sus redes de trazos), así que las copias de dos unidades nunca comparten la identidad
  de un componente.
- Cada `{unit}` pasa a ser esta unidad, así que cada dirección sale como el punto corriente
  `Process.<Model>.<Unit>.Channels.<Channel>` y cada propiedad vinculada a una unidad lleva esta
  unidad. Nada de lo que viene después se entera de que la definición era abstracta: los componentes
  leen valores en vivo, los componentes Botón y Entrada escriben, y un gráfico de líneas cuyas series
  leen esta unidad dibuja las bandas de evaluación del ensayo que corre en ella, exactamente igual que
  en cualquier panel de control vinculado a una unidad.
- `{unit.name}` y `{channel.name:...}` pasan a ser el nombre de la unidad y los nombres de canal en
  vigor en ella.

La fila lleva la barra de escenario que usa la página View: el nombre de la entrada
`Modelo · Unidad · Panel de control`, el icono del panel de control, **Ampliar** ("Usar toda la
ventana") y **Pantalla completa** ("Pantalla completa (F11)"). En ella no hay Copiar ni Editar: la
fila de una unidad muestra un panel de control y nunca lo edita. Un panel de control vacío lo dice en
la fila de la unidad: "Todavía no hay nada en este sinóptico. Se dibuja en la fila Paneles de control
del modelo, dentro de Visualización, y lo que se coloque allí aparece aquí para todas las unidades."

Una edición guardada en el modelo llega a la fila de todas las unidades: la fila tiene la definición
del modelo y la vuelve a resolver cada vez que llega una instancia nueva.

## Mostrar en View {#show-on-view}

**Mostrar en View** es el conmutador de la barra de detalle, al lado de Editar el panel de control.
Lee el estado en vigor y su información emergente dice qué hace ese estado:

| Estado | Información emergente |
| --- | --- |
| Activado | "Cada unidad de este modelo tiene una entrada para este panel de control en la columna Visualización." |
| Desactivado | "Este panel de control se abre desde la unidad, en Operar. Nada de él aparece en la página View." |

Activarlo pone una entrada por unidad del modelo en la columna Visualización de la página View,
llamada `Modelo · Unidad · Panel de control` y con el icono del panel de control; cada entrada es la
definición resuelta para esa unidad, el mismo sinóptico que ejecuta la fila de la unidad dentro de
Operar. Las entradas son filas de esa lista y no paneles de control de la estación: allí nunca se
reordenan, se editan ni se copian (Copiar se rechaza sobre ellas), aunque la entrada de cada unidad se
puede archivar por su cuenta en las carpetas de la página View. Un modelo sin unidades no pone nada en
la página View. Un panel de control puede estar en la página View por derecho propio y ser además una
tarjeta de un panel que también esté allí; las dos cosas a la vez son una disposición corriente. El
aspecto de las entradas está en [Paneles de unidad en View](view-unit-panels).

El conmutador no se dibuja para un rol sin Gestionar Process. Se queda dibujado y atenuado bajo el
bloqueo de ingeniería y el runtime detenido, diciendo cuál de los dos es. La decisión se guarda con el
propio panel de control (el mismo guardado automático que toma su nombre), así que una escritura
rechazada devuelve el conmutador.

## Un panel de control como tarjeta de un panel {#a-dashboard-as-a-card-of-a-panel}

Un panel del modelo puede dibujar cualquiera de los paneles de control del modelo como una de sus
tarjetas, a una altura elegida en el panel (de 120 a 1200 px, 320 por defecto). Un panel de control
entra en un panel solo cuando usted lo activa allí; empieza desactivado. Véase
[Paneles](process-panels#the-card-catalogue).

## Quitar el panel de control {#remove-dashboard}

**Quitar el panel de control** está en el grupo de peligro de la barra de detalle con el panel de
control seleccionado, en el menú del botón derecho del árbol, y como la X de la tarjeta de la página
de la carpeta. Pregunta antes ("Eliminar el panel de control": el nombre, y después "Esto elimina el
panel de control y todo lo que hay en él. Las direcciones que leen se quedan en Logic."). Tras la
eliminación, la selección aterriza en la carpeta Paneles de control del modelo, un editor abierto
sobre ese panel de control se cierra, toda fila de panel que lo dibujaba descarta esa tarjeta, y sus
entradas se van de la página View. Exige Gestionar Process y se atenúa bajo el bloqueo de ingeniería y
el runtime detenido.

## Qué no hace esta página {#what-this-page-does-not-do}

- No edita el contenido, el nombre ni los ajustes del panel de control: eso es del editor, que abre
  Editar el panel de control.
- No hace una copia por unidad. Lo que muestra una unidad se resuelve cada vez a partir de la única
  definición; no hay nada que editar por unidad, y un panel de control que el operador quiera cambiar
  para una estación es un segundo panel de control del modelo.
- No pone ningún panel de control en las carpetas propias de la página View. Un panel de control de un
  modelo nunca está en la lista de paneles de control de la estación; llega a la página View solo
  mediante Mostrar en View, con una entrada por unidad.
- No arranca ni gobierna ningún ensayo. Un Botón vinculado a una punta de comando en el panel de
  control resuelto sí lo hace, bajo el permiso Ejecutar procedimientos, exactamente igual que en
  cualquier panel de control; véase [Ensayos y comentarios](process-runs).
