# View y paneles de control

> La página View: la columna Visualización con carpetas, sinópticos y paneles de unidad, la barra del sinóptico abierto con Ampliar y Pantalla completa, la cuadrícula sobre la que se compone un sinóptico, y quién puede presionar qué en él.

**View** es la primera entrada de la barra de navegación después de [Bienvenida](welcome), y la página con la que abre la estación siempre que Bienvenida no está en la barra. Enumera todos los sinópticos que esta estación muestra y corre el que usted
elija: los paneles de control que usted arma sobre una cuadrícula, encima del espacio de
direcciones vivo de [Logic](logic), y los paneles que las unidades de Process ponen aquí.
Todos los roles llegan a ella, porque "Ver los paneles de control" es el permiso que
tienen todos los roles (véase [Permisos](users-permissions)); lo que un rol puede hacer
después en la página se lee de sus otros permisos, verbo por verbo.

La página contesta cuatro rutas. `/view` es la dirección canónica y `/` abre esa misma
página; `/home` se conserva para que un atajo viejo siga aterrizando aquí. `/d/{id}` abre
un sinóptico directamente, que es como llegan a él un marcador de una tableta o un enlace
de otra página; un id que el rol de esta conexión no puede ver, o uno que ya no existe,
cae en silencio al sinóptico que la página habría abierto de todos modos.
`/d/{id}?edit=true` abre el sinóptico derecho en el [editor](view-editor), el aterrizaje de un enlace de reparación de [Validación](validation), y se
ignora cuando el sinóptico no se puede editar.

## La columna Visualización {#the-visualization-column}

La columna de la izquierda se titula **Visualización** y lleva una fila por cada cosa que
la estación puede mostrar:

- **Carpetas**, dos niveles de profundidad como máximo, cada una con un galón que pliega
  el grupo y un nombre que abre la carpeta misma en el escenario. Una fila de carpeta
  termina con cuántos sinópticos contiene, subcarpetas incluidas.
- **Sinópticos**, los paneles de control de usted, archivados en carpetas o parados en el
  nivel superior, cada uno con el icono elegido en sus [ajustes](view-settings) y su
  descripción como información emergente de la fila.
- **Paneles de la unidad**, las entradas que los modelos de Process ponen aquí, una por
  unidad, con el nombre `Modelo · Unidad · Superficie`. Los que nadie archivó se paran
  juntos bajo un encabezado **Paneles de la unidad** después del árbol; uno archivado se une
  a su carpeta junto a sus sinópticos.

Un sinóptico que lleva un componente cuyo punto en este momento no logra leer lleva un
punto de atención discreto después de su nombre, y también lo lleva cada carpeta que hay
encima, de modo que una falla se puede encontrar con los grupos plegados. El punto no dice
nada más: sin conteo, sin movimiento.

El pie lleva **Nuevo…** (dibujado solo para un rol que pueda editar paneles de control;
abre un menú con **Nuevo panel de control** y **Nueva carpeta**, los dos en el nivel
superior), luego, mientras el editor está abierto, **Subir el panel de control** y **Bajar
el panel de control** para el sinóptico abierto, y en la esquina de cola **Expandir todo**
y **Contraer todo** sobre las carpetas. Al hacer clic con el botón derecho en la fila de
un sinóptico se abre un menú que empieza por los verbos de su barra (**Copiar**, **Editar** o **Terminar la edición**, y en la entrada de una unidad **Editar en Process**) y sigue con **Mover a**; en la de una carpeta se abre el menú que crea, renombra y quita; todo eso es
[Sinópticos y carpetas](view-screens).

La columna se pliega hasta una barra angosta con el galón de su encabezado. Una pulsación
sobre esa barra abre la lista como una superposición sobre el escenario, para que el
lienzo conserve cada píxel que ganó; elegir una fila la cierra otra vez, y el fijador
regresa la columna fija. El divisor entre la columna y el escenario se arrastra entre 260
y 600 px. Qué carpetas abrió usted, el ancho y el estado plegado son suyos por la sesión:
se guardan por conexión, así que un navegador que pliega un grupo nunca lo pliega en la
ventana de la propia estación, y nada de eso se guarda.

## La barra del sinóptico abierto {#the-open-screens-bar}

La barra que hay sobre el escenario nombra lo que está abierto, con el icono y el nombre
del sinóptico, y lleva los verbos para él. Mientras el editor está abierto el nombre lleva
una pastilla **En edición**.

| Comando | Qué hace | Atenuado cuando (situación) | No se dibuja cuando (rol) |
|---|---|---|---|
| Copiar | Hace una copia editable del sinóptico abierto a su lado, en la misma carpeta, con el nombre del original más "(2)", "(3)" y así hasta que un nombre quede libre, y no la abre: el escenario muestra el muro de esa carpeta (el muro **Nivel superior** para un sinóptico del nivel superior), con la tarjeta de la copia resaltada y desplazada hasta quedar a la vista. | No hay nada abierto ("Abra un sinóptico para copiarlo."), la ingeniería está bloqueada, el runtime está detenido. | El rol no puede editar paneles de control, o la entrada abierta es un panel de unidad o un sinóptico de unidad (no hay nada que copiar: está acomodado en su modelo). |
| Editar / Terminar la edición | Entra en el [editor](view-editor) sobre el sinóptico abierto, o sale de él y regresa a mirar. Salir no se rechaza nunca. | No hay nada abierto ("Abra un sinóptico para editarlo."), la ingeniería está bloqueada ("La configuración está bloqueada mientras una unidad está en marcha."), el runtime está detenido ("Runtime detenido"). | El rol no puede editar paneles de control, o la entrada abierta es un panel de unidad o un sinóptico de unidad. |
| Editar en Process | Abre la definición propia de la entrada en el espacio de trabajo de Process: la fila del panel o la fila del sinóptico de su modelo. | Nunca se atenúa; se dibuja solo cuando puede correr. | La entrada abierta es un sinóptico de usted, o el rol no puede gestionar modelos. |
| Ampliar | Esconde la barra de navegación, la barra de título y la barra misma, y le da al sinóptico toda la ventana; la ventana se queda como está. | No hay nada abierto. | Nunca, pero se retira mientras se edita. |
| Pantalla completa | Lo de verdad: la ventana de la estación cubre el monitor, o un navegador pasa a la pantalla completa del documento. F11 hace lo mismo. | No hay nada abierto. | Nunca, pero se retira mientras se edita. |

Ampliar y Pantalla completa son para operar un sinóptico terminado, así que la barra
retira los dos mientras el editor está abierto y F11 no hace nada entonces. Todo sobre los
dos modos, el desplegable y la barra de estado está en
[Modo operador a pantalla completa](view-fullscreen).

Cuando lo que está abierto es una carpeta y no un sinóptico, la barra cambia de sujeto:
nombra la carpeta y lleva **Renombrar la carpeta** (abre el campo de nombre en la fila de
la propia carpeta) y, en la tinta de peligro de la derecha, **Quitar la carpeta** (la
misma confirmación que la del menú de la fila). Los dos se dibujan solo para un rol que
pueda editar paneles de control y se atenúan mientras la ingeniería está bloqueada.

## El escenario {#the-stage}

Lo que el escenario dibuja sigue a la fila que usted eligió:

- Un **sinóptico** corre sobre el lienzo: su cuadrícula escala hasta llenar el escenario, sin
  desplazamiento, y sus componentes leen el espacio de direcciones al paso de la propia
  página (cada 150 ms en la ventana de la estación, cada 400 ms en un navegador remoto).
- Una **carpeta** se abre como un panorama: una línea que dice qué hay archivado ahí, una
  fila por subcarpeta con su conteo, y una tarjeta por sinóptico con su icono, su nombre y
  su descripción. Al presionar una tarjeta se abre el sinóptico.
- Un **panel de unidad** no es una disposición sino una pila de tarjetas, así que el
  escenario se vuelve una columna de ellas con desplazamiento: véase
  [Paneles de unidad en View](view-unit-panels). Un **sinóptico de unidad** (un sinóptico de un modelo mostrado
  en View) corre sobre el lienzo como cualquier sinóptico, resuelto para su unidad.

Cuando no hay nada que mostrar el escenario lo dice: una estación sin ningún panel de
control lee "Todavía no hay paneles de control. Cree uno para armar lecturas en tiempo
real, gráficos y mandos para su banco de pruebas, y luego ábralo a pantalla completa para
operar." con un botón **Nuevo panel de control** para un rol que pueda editar; un rol al
que se le esconde todo panel de control lee "Ningún panel de control es visible para su
rol."; una lista que tiene carpetas pero ningún sinóptico, o una carpeta abierta sin
sinóptico elegido, dice cuál de las dos cosas es.

## La cuadrícula {#the-grid}

Todo panel de control tiene una cuadrícula de **Columnas × Filas** celdas (24 × 12 hasta que
usted la cambie, cada una entre 1 y 96) que llena el escenario y escala con la ventana. Un
componente ocupa un rectángulo de celdas (su X, su Y, su ancho y su alto); los componentes
se pueden encimar con toda libertad, y cada uno lleva un número de **capa** (Z): la capa
más alta se dibuja encima y se lleva el clic. Así es como un [Marco](component-frame) se
vuelve un fondo de verdad: mándelo al fondo y dibuje el grupo encima de él. La colocación,
el tamaño y el orden de las capas son del [editor](view-editor); el tamaño de la cuadrícula
misma es un [ajuste del panel de control](view-settings).

## Comandos, permisos y la marca de candado {#commands-permissions-and-the-lock-mark}

Todo componente de mando escribe por el punto único de escritura de Logic de la estación, con
registro, y contesta a un solo modelo de permisos. Vale para cualquier mando que se pueda
pulsar en un tablero, para las tarjetas de Procedimiento que lleva un panel de unidad y para
el reconocimiento en un
[Aviso de alarmas](component-alarm-banner):

- Presionar un mando en un panel de control de usted necesita el permiso **Operar los
  paneles de control** del rol, otorgado por rol en la página [Usuarios](users).
- Una pulsación cuyo objetivo es una mutación de Process (un comando de corrida de una
  unidad, un campo de preparación, un comentario de la corrida) necesita además **Ejecutar
  procedimientos**. Lo que una pulsación necesita se lee de su objetivo resuelto, nunca de
  la clase de componente: un Botón que escribe un valor o que abre otro panel de control se
  queda en el permiso de paneles de control.
- En un panel de unidad o en un sinóptico de unidad manda el permiso de Process a solas:
  **Ejecutar procedimientos**, y nada sobre paneles de control.
- Mientras el runtime está detenido todo comando se rechaza con "Runtime detenido", sea
  cual sea el rol.

Un comando que el rol con la sesión iniciada no puede presionar se queda en pantalla y
lleva la discreta **marca de candado**: un candado pequeño en la esquina del componente,
con el motivo entero ("Se requiere el permiso de operación de paneles de control." o "Se
requiere el permiso de ejecutar procedimientos.") en la información emergente del
componente. Es deliberadamente discreta, porque un rol de consulta la ve en todos los
mandos a la vez y una planta que corre con normalidad no debe leerse como una pantalla de
advertencias. La autorización se vuelve a verificar en el momento de cada pulsación, así
que cerrar la sesión o cambiar de rol con el sinóptico abierto no puede despachar un clic
viejo.

Cada componente de mando contesta en su propia **línea de respuesta** bajo el mando
("Escrito", "Ejecutado · 12 ms", o el rechazo), que vence a los cinco segundos. Esa línea es la
única superficie que queda cuando un sinóptico a pantalla completa esconde la barra de
estado, y por eso los comandos contestan ahí y no en el registro de acciones de la barra
de estado. En una celda demasiado baja para el título de esquina del componente, el mando y
esa línea a la vez, la respuesta toma el lugar del título de esquina mientras se muestra, y el
título regresa cuando la respuesta vence. El editor lo avisa en la sección **Tipo** del mando
cuando un mando con título de esquina mide una sola fila de alto, el tamaño que casi nunca tiene
espacio para los tres. Una celda demasiado baja incluso para el título de esquina y el mando le da
la fila del título al mando, así que un campo o una tecla nunca se dibujan cortados. Donde la
respuesta no tiene línea propia y ningún título de esquina queda sobre el mando (no se escribió
ninguno, o le dio su fila al mando), el Botón, el Conmutador, la Entrada, el Control deslizante
de consigna, el Selector de opciones y las Teclas de paso dibujan la respuesta en el lugar de
su propio texto mientras se muestra: el rótulo del Botón, la etiqueta del Conmutador, la tecla
con la que mandan la Entrada y el control deslizante, la tecla presionada del Selector de
opciones o de las Teclas de paso, y la opción que muestra la lista cerrada en un Selector de opciones mostrado como lista. La respuesta queda sobre ese texto con la tinta de la línea de
respuesta (en el Botón, un tono más discreto de la tinta de su propio rótulo), un rechazo con
la tinta de error, cortada con puntos suspensivos donde el texto tiene menos espacio, y
completa en la información emergente. Nada se mueve: el texto conserva su lugar y su nombre, y
regresa cuando la respuesta vence. Los demás mandos mantienen la respuesta en su línea, y una
celda más alta trae de vuelta esa línea.

## Bloqueos {#locks}

Mientras una unidad corre, la página muestra el aviso **Ingeniería bloqueada**: "Hay una
operación de unidad activa. La configuración queda en solo lectura hasta que todas las
unidades terminen; los mandos de la corrida y las demás acciones del operador siguen
disponibles." Crear, copiar, editar, archivar, renombrar y reordenar quedan atenuados con
ese motivo, un editor abierto se cierra, y los sinópticos siguen corriendo y aceptando los
comandos permitidos. Un runtime detenido cierra esos mismos verbos y también los comandos;
el propio aviso de pausa del shell dice dónde se hace el reinicio.

## Lo que la página no hace {#what-the-page-does-not-do}

Nunca edita un panel de unidad ni un sinóptico de unidad (Editar en Process lleva a donde
están acomodados), nunca los reordena, y nunca deja que un rol vea un panel de control que
se le esconde, ni por la lista ni por dirección. No guarda ningún estado de disposición de
usted más allá de la sesión: las carpetas plegadas, el ancho de la columna, el fijador y el
sinóptico seleccionado se restablecen con la conexión. Eliminar un sinóptico se hace dentro
de los [Ajustes del panel de control](view-settings) del editor, no desde la columna.

## En esta área {#in-this-area}

| Página | Qué cubre |
|---|---|
| [Sinópticos y carpetas](view-screens) | Crear, copiar, archivar, renombrar, reordenar y quitar lo que la columna enumera, el sinóptico de arranque y quién ve cuál. |
| [El editor de paneles de control](view-editor) | El taller: la paleta, el lienzo, la selección, las secciones de propiedades que comparten todos los componentes, y los trazos dibujados entre bornes de símbolos. |
| [Ajustes del panel de control](view-settings) | Lo que un sinóptico declara sobre sí mismo: nombre, descripción, icono, cuadrícula, arranque, la barra de estado a pantalla completa, roles visibles, eliminación. |
| [Modo operador a pantalla completa](view-fullscreen) | Ampliar y Pantalla completa, F11 y Esc, el desplegable y la preferencia de la barra de estado. |
| [Paneles de unidad en View](view-unit-panels) | La pila de tarjetas por la que se opera una unidad de Process, tal como se ve aquí. |
| [Gráficos](view-charts) | La barra de herramientas que lleva todo gráfico, sus paneles de escala, estadísticas y referencias, y la ventana de gráfico desprendida. |
| [Componentes de panel de control](components) | El catálogo de clases de componente, las direcciones que vinculan, cómo se dibuja una lectura, y una página de referencia por clase. |
