# View y paneles de control

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

**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 muestra esta estación y ejecuta el que usted
elija: los paneles de control que usted construye sobre una rejilla, 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 único 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 responde a cuatro rutas. `/view` es la dirección canónica y `/` abre esa misma
página; `/home` se conserva para que un acceso directo antiguo siga aterrizando aquí.
`/d/{id}` abre un sinóptico directamente, que es como llega a él un marcador en una tableta o
un enlace desde 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 directamente en el [editor](view-editor), que es donde se aterriza desde 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 contiene una fila por cada cosa que
la estación puede mostrar:

- **Carpetas**, de dos niveles de profundidad como máximo, cada una con un galón que pliega el
  grupo y un nombre que abre la carpeta en el escenario. Una fila de carpeta termina con
  cuántos sinópticos contiene, subcarpetas incluidas.
- **Sinópticos**, sus propios paneles de control, archivados en carpetas o al 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 ponen aquí los modelos de Process, una por unidad,
  con el nombre `Modelo · Unidad · Superficie`. Los que nadie archivó se agrupan 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 contiene un componente cuyo punto no consigue leer ahora mismo lleva un
punto de atención discreto después de su nombre, y lo mismo hacen todas las carpetas por
encima de él, de modo que un fallo se encuentra con los grupos plegados. El punto no dice
nada más: ni recuento, ni movimiento.

El pie lleva **Nuevo…** (dibujado solo para un rol que puede editar los paneles de control;
abre un menú con **Nuevo panel de control** y **Nueva carpeta**, ambos al nivel superior),
después, 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 fila de
una carpeta se abre el menú que crea, renombra y quita; todo eso está en
[Sinópticos y carpetas](view-screens).

La columna se pliega hasta una barra estrecha con el galón de su cabecera. Al pulsar esa
barra la lista se abre como superposición sobre el escenario, así que el lienzo conserva
todos los píxeles que había ganado; al elegir una fila se vuelve a cerrar, y la chincheta
devuelve 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 durante 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 sus verbos. 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 queda 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 los paneles de control, o la entrada abierta es un panel de unidad o un sinóptico de unidad (no hay nada que copiar: está dispuesto sobre su modelo). |
| Editar / Terminar la edición | Entra en el [editor](view-editor) sobre el sinóptico abierto, o sale de él y vuelve a la vista. 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 los 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 Process: la fila del panel o la fila del sinóptico de su modelo. | Nunca se atenúa; solo se dibuja cuando puede ejecutarse. | La entrada abierta es un sinóptico suyo, o el rol no puede gestionar modelos. |
| Ampliar | Esconde la barra de navegación, la barra de título y la propia barra, y 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 lo relativo a los
dos modos, al menú desplegable y a la barra de estado está en
[Modo operador a pantalla completa](view-fullscreen).

Cuando lo abierto es una carpeta en lugar de un sinóptico, la barra cambia de sujeto: nombra
la carpeta y lleva **Renombrar la carpeta** (abre el campo de nombre en la propia fila de la
carpeta) y, en la tinta de peligro de la derecha, **Quitar la carpeta** (la misma confirmación
que el menú de la fila). Los dos se dibujan solo para un rol que puede editar los 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** se ejecuta sobre el lienzo: su rejilla se escala hasta llenar el escenario,
  sin desplazamiento, y sus componentes leen el espacio de direcciones al ritmo propio de la
  página (cada 150 ms en la ventana de la estación, cada 400 ms en un navegador remoto).
- Una **carpeta** se abre como resumen: una línea que dice qué hay archivado ahí, una fila por
  subcarpeta con su recuento, y una tarjeta por sinóptico con su icono, su nombre y su
  descripción. Al pulsar 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 convierte en una columna con desplazamiento: véase
  [Paneles de unidad en View](view-unit-panels). Un **sinóptico de unidad** (el sinóptico de
  un modelo mostrado en View) se ejecuta sobre el lienzo como cualquier sinóptico, resuelto
  para su unidad.

Sin 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 reunir 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 puede editar; un rol al que se le ocultan
todos los paneles de control lee "Ningún panel de control es visible para su rol."; una lista
con carpetas pero sin ningún sinóptico, o una carpeta abierta sin ningún sinóptico elegido,
dice cuál de las dos cosas es.

## La rejilla {#the-grid}

Cada panel de control tiene una rejilla de **Columnas × Filas** celdas (24 × 12 hasta que
usted la cambie, cada una entre 1 y 96) que llena el escenario y se escala con la ventana. Un
componente ocupa un rectángulo de celdas (su X, su Y, su ancho y su alto); los componentes
pueden solaparse libremente, 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 convierte en un
fondo de verdad: envíelo al fondo y dibuje el grupo por encima. La colocación, el
dimensionado y el orden de capas son cosa del [editor](view-editor); el tamaño de la rejilla
en sí 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 a través del punto único de escritura de Logic de la
estación, con registro en el diario, y responde a un mismo modelo de permisos. Vale para
cualquier mando que se pueda pulsar en un panel, para las tarjetas de Procedimiento que lleva
un panel de unidad y para el reconocimiento en un
[Aviso de alarmas](component-alarm-banner):

- Pulsar un mando en un panel de control suyo necesita el permiso **Operar los paneles de
  control** del rol, concedido por rol en la página [Usuarios](users).
- Una pulsación cuyo objetivo es una mutación de Process (un comando de ensayo de una unidad,
  un campo de preparación, un comentario de ensayo) necesita además **Ejecutar procedimientos**. Lo que necesita una
  pulsación se lee de su objetivo resuelto, nunca del tipo de componente: un Botón que
  escribe un valor o 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 solo el permiso de Process:
  **Ejecutar procedimientos**, nada sobre paneles de control.
- Mientras el runtime está detenido, todos los comandos se rechazan con "Runtime detenido",
  sea cual sea el rol.

Un comando que el rol con la sesión iniciada no puede pulsar se queda en pantalla y lleva la
discreta **marca de candado**: un pequeño candado en la esquina del componente, con el motivo
entero ("Hace falta el permiso de operación de paneles de control." o "Hace falta el permiso
de ejecutar procedimientos.") en la información emergente del componente. Es discreta a
propósito, porque un rol de consulta la ve en todos los mandos a la vez y una planta que
funciona con normalidad no debe leerse como una pantalla de advertencias. La autorización se
vuelve a comprobar en el momento de cada pulsación, así que un cierre de sesión o un cambio
de rol con el sinóptico abierto no pueden despachar un clic caducado.

Cada componente de mando responde en su propia **línea de respuesta** bajo el control
("Escrito", "Correcto · 12 ms", o el rechazo), que caduca 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 responden 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 control y esa
línea a la vez, la respuesta ocupa el lugar del título de esquina mientras se muestra, y el
título vuelve cuando la respuesta caduca. El editor lo advierte en la sección **Tipo** del
control cuando un mando con título de esquina tiene una sola fila de alto, el tamaño que rara
vez da cabida a los tres. Una celda demasiado baja incluso para el título de esquina y el control
cede la fila del título al control, 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 control (no se
escribió ninguno, o cedió su fila), 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 envían la Entrada y el control deslizante, la tecla pulsada 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,
recortada con puntos suspensivos donde el texto tiene menos espacio, y entera en la información
emergente. Nada se mueve: el texto conserva su lugar y su nombre, y vuelve cuando la respuesta
caduca. Los demás mandos mantienen la respuesta en su línea, y una celda más alta devuelve esa
línea.

## Bloqueos {#locks}

Mientras una unidad está en marcha, 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 del ensayo 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 ejecutándose 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 dispuestos), nunca los reordena, y nunca deja que un rol vea un panel de control que se
le oculta, ni por la lista ni por la dirección. No guarda ningún estado de disposición suyo
más allá de la sesión: las carpetas plegadas, el ancho de la columna, la chincheta 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 enumera la columna, el sinóptico de arranque y quién ve qué sinóptico. |
| [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, rejilla, arranque, la barra de estado a pantalla completa, los roles que lo ven, la eliminación. |
| [Modo operador a pantalla completa](view-fullscreen) | Ampliar y Pantalla completa, F11 y Esc, el menú desplegable y la preferencia de barra de estado. |
| [Paneles de unidad en View](view-unit-panels) | La pila de tarjetas con la que se opera una unidad de Process, tal como aparece aquí. |
| [Gráficos](view-charts) | La barra de herramientas que lleva cada gráfico, sus paneles de escala, estadísticas y referencias, y la ventana de gráfico desacoplada. |
| [Componentes de panel de control](components) | El catálogo de tipos de componente, las direcciones que vinculan, cómo se dibuja una lectura, y una página de referencia por tipo. |
