# Painéis

> Os painéis de operação de um modelo: os cartões fixos pelos quais cada unidade é operada, arranjados uma vez no modelo, e como um painel alcança a Operação e a página View.

Um **painel** é uma superfície de operação nomeada de um modelo: um conjunto fixo de cartões,
arranjado uma vez no modelo e desenhado igual para toda unidade dele. Ele não é um dashboard: nenhum
editor abre sobre ele, nada é composto num canvas, e a superfície pela qual uma unidade é operada é
a mesma e completa em toda estação. Os painéis vivem em Process > Modelos > modelo > Visualização >
**Painéis**. Arranjar um exige a permissão **Gerenciar o Process**; operar os cartões numa unidade
exige **Executar procedimentos**.

## A pasta Painéis {#the-panels-folder}

Selecionar a linha **Painéis** abre a página da pasta ("Painéis de operação definidos neste modelo.
Cada um vale para todas as unidades, e cada um decide sozinho se a página View o carrega.") com
um cartão por painel; clicar num cartão o abre, e o X o remove. A pasta nunca fica vazia: um modelo
que não declarou painel nenhum se lê como um só, chamado **Overview**, desenhando o catálogo
inteiro de cartões, e a primeira edição feita nele é o que o guarda como linha do modelo.

| Comando | O que faz | Fica cinza quando (situação) | Não é desenhado quando (papel) |
| --- | --- | --- | --- |
| **Painel** (barra de detalhe, com a pasta selecionada; clique direito **Adicionar painel**) | Acrescenta um painel chamado `Painel <n>` ao lado dos que o modelo tem. A linha entra no grupo dela, destacada e rolada até ficar à vista ali; o cartão dela a abre. Um modelo que ainda se lê como o padrão tem o **Overview** guardado primeiro, então o painel novo fica ao lado da superfície pela qual as unidades dele já operam, em vez de substituí-la. | Alguma unidade tem uma execução, ou o runtime está parado. | Sem Gerenciar o Process. |

## A página do painel {#the-panels-page}

Selecionar um painel abre o arranjo dele: o cabeçalho ("Um painel de operação deste modelo: os
cartões que ele desenha, na ordem em que ele os desenha. Toda unidade do modelo o carrega."), um cartão
de Identidade e o próprio arranjo. Toda mudança salva sozinha; uma escrita que a estação recusa
devolve a página exatamente como ela estava.

### Identidade {#identity}

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| **Nome** | Como o painel se chama na linha da árvore dele, na linha de cada unidade sob a Operação e nas entradas dele na página View. | Texto livre; uma entrada em branco é recusada e o nome anterior fica. `Painel <n>` na criação, `Overview` no padrão. | Renomeia toda linha que o nomeia. |
| **Ícone** | A marca desenhada à esquerda do nome do painel, na linha da árvore e na entrada de toda unidade na página View. | Um botão mostrando a marca atual (ou a palavra "Ícone", ou o nome guardado quando a biblioteca não o carrega). Acioná-lo desdobra uma grade da biblioteca de ícones sob o cartão, com um campo **Busca por nome ou tag** ("em inglês: oven, pump, water"); a primeira célula é **Sem ícone**. Escolher uma marca a aplica e fecha a grade; um acionamento fora dela ou no botão também a fecha, e o texto de busca fica para a próxima vez. Sem ícone por padrão. | O painel guarda o nome de biblioteca da marca, nunca um ponto de código. Um nome que a biblioteca não carrega desenha a marca fixa de painel nas duas linhas, então a árvore e a página View nunca discordam. |

### O painel {#the-panel}

O cartão se explica: "A superfície, na ordem em que é desenhada. Desligue um cartão para
deixá-lo de fora, e mova-o para onde ele pertence. Um cartão de dashboard é a tela vazia, do jeito
que o editor a desenha; os outros cartões vêm preenchidos com leituras de exemplo. Um cartão a que
a unidade não dá nada para mostrar é pulado em vez de desenhado vazio."

Sob ele fica uma linha por cartão, na ordem em que toda unidade os desenha. Cada linha é o próprio
cartão, posado com leituras de amostra, para que o arranjo não possa prometer uma aparência que a
unidade não desenha: uma unidade chamada Amostra, o primeiro procedimento do modelo preparado,
"Executando", ciclo "2 / 5", um comentário, um episódio de ocorrência encerrado, um traçado de cinco
minutos dos canais legíveis do modelo, e um livro de produtividade posado com
uma linha por quantidade nomeada do modelo (por procedimento produtivo onde ele não nomeia
nenhuma) e um rendimento que sai das próprias contagens OK e NOK. O que a amostra fornece é apenas o que uma unidade em execução forneceria; o
resto (procedimentos, campos de metadados, canais, bibliotecas) é do próprio modelo, então um modelo
que não declara algo mostra o próprio vazio do cartão. A prévia inteira é inerte: nada nela pode ser
acionado.

| Controle numa linha | O que ele faz |
| --- | --- |
| A caixa de seleção, rotulada com o nome do cartão e seguida da descrição do cartão | Inclui o cartão (ligada) ou o deixa de fora (desligada). A linha fica na lista de qualquer jeito, apagada quando desligada. |
| **Altura na página (px)** (só nas linhas de dashboard) | Qual a altura do dashboard na página: de 120 a 1200, 320 por padrão; um valor fora da faixa é recusado sob o campo. "O dashboard se ajusta para preencher a caixa; a página rola e o dashboard não." Desabilitado enquanto a linha está desligada. |
| **Mover este cartão para cima** / **Mover este cartão para baixo** | Move a linha uma posição. A primeira linha não sobe e a última não desce; a seta diz isso ficando cinza. |

Quando o intertravamento de parada do modelo está habilitado, uma linha fixa fica em primeiro lugar,
antes de todo cartão: **Intertravamento**, "A parada externa que esta unidade observa, e o jeito de
rearmá-la. Ela não desenha nada enquanto a unidade está normal, então também não há o que mostrar
aqui.", marcada como **Sempre**. Ela é o contexto de segurança da superfície, não um cartão, e nunca
é arranjada para fora (veja
[Automação e o intertravamento de parada](process-automation#the-interlock-card-of-the-picked-unit)).

Deixar todo cartão desligado é um painel legítimo, e a página diz o que isso significa: "Todos os
cartões estão desligados, então cada unidade diz isso neste painel e não oferece nada para operar. A execução
ainda começa por outro painel deste modelo, ou por um dashboard."

## O catálogo de cartões {#the-card-catalogue}

Os cartões do catálogo ficam nesta ordem num painel que não arranjou nada. Cada um é desenhado para
a unidade que abre o painel, e um cartão para o qual a estação não dá nada a mostrar é deixado de
fora em vez de desenhado vazio.

| Cartão | O que ele mostra numa unidade | O que você pode fazer nele | Deixado de fora quando |
| --- | --- | --- | --- |
| **Execução** | O cabeçalho do cartão carrega uma lâmpada com o que a unidade está fazendo: **Não está gravando** enquanto nenhuma execução a detém, e fora disso **Preparando**, **Gravando**, **Aguardando os setpoints chegarem ao equipamento**, **Pausada**, **Salvando** ou **Finalizando**, cada uma explicada em [Execuções e comentários](process-runs#the-run-card). Um seletor de **Procedimento** ("(nenhum)" mais os procedimentos do modelo por nome) prepara a próxima partida. Os botões de ciclo de vida vêm em seguida, nesta ordem: **Iniciar** (acentuado), **Pausar**, **Retomar**, **Parar**, **Abortar**, cada um com a dica dele ("Iniciar o procedimento preparado nesta unidade", "Congelar a janela temporizada; o datalog continua gravando", "Soltar a pausa e seguir com a janela", "Encerrar a execução por bem e congelá-la como histórico", "Encerrar a execução como abortada; o bloco de finalização ainda roda"). | Preparar um procedimento e acionar o comando que está pronto agora; todo botão lê a prontidão dele. Pausar e Retomar são desenhados apenas enquanto o procedimento preparado é Temporizado (ou nada está preparado), porque só uma janela temporizada pode ser congelada. Um comando recusado é dito no cartão, numa nota de cautela; os motivos pelos quais a estação ou esta unidade não está aceitando operações de execução (o runtime parado, a unidade travada pelo intertravamento dela) são ditos sob ele. | Nunca. |
| **Metadados** | "Sob o que a próxima execução de “`<procedure>`” é registrada. Um campo marcado com * é pedido por todo procedimento." Uma entrada por campo de metadados que o procedimento preparado pergunta, na ordem do catálogo. Um campo sequencial não é uma caixa de entrada: ele mostra a previsão do que o contador comporia, com a nota "O contador reserva o valor definitivo na partida, então um contador compartilhado pode andar antes disso.", ou "Reservado no início" enquanto nada pode ser previsto. Sem nada preparado: "Prepare um procedimento e os campos que ele pede aparecem aqui." | Digitar os valores que o próximo Iniciar consome. A preparação vale para a estação inteira, então um valor digitado aqui é o que toda outra superfície da unidade vê. | O procedimento preparado não pergunta campo nenhum. |
| **Estado da execução** | Três leituras: **Estado** (o estado da execução, ou **Preparando** enquanto uma execução está sendo reservada, ou **Ociosa**), **Ciclo** ("2 / 5", ou **Sem ciclos**), **Veredito** (o veredito da execução em curso ou da última evidência, ou **Nenhum**; chama-se **Veredito da última execução** enquanto nenhuma execução detém a unidade). | Ler. | Nunca; só a leitura de Ciclo é deixada de fora enquanto o procedimento preparado é Instantâneo ou Controlado. |
| **Comentários** | A linha do tempo de comentários da execução, encabeçada por "Comentários · `<run>`", "Comentários · sem execução ativa" ou "Comentários (indisponível)". | Acrescentar um comentário à execução ativa pela caixa sob a linha do tempo (Executar procedimentos). Veja [Execuções e comentários](process-runs#the-comments-card). | Nunca. |
| **Ocorrências** | Os episódios de ocorrência da unidade, os ativos primeiro, encabeçados por "Ocorrências", "Ocorrências · `<n>` ativas" ou "Ocorrências · fora de execução" ("· desatualizado" enquanto uma atualização falhou). | Ler. | Nunca. |
| **Canais** | Os canais legíveis da unidade num gráfico ao vivo, cada série nomeada pelo nome em vigor nesta unidade, desenhada na cor e na faixa que o canal dela declara, com a barra de ferramentas de todo gráfico da aplicação (veja [Gráficos](view-charts)). | Dar zoom, arrastar, salvar ou copiar a figura, ligar e desligar séries. | O modelo não declara canal legível nenhum. |
| **Produtividade** | As quantidades produzidas, as taxas, o rendimento e o livro de desfechos da unidade em Hoje e no período móvel. Veja [Produtividade](process-productivity). | Ler. | Nunca. |
| **Comandos avulsos** | "Dispare um comando isolado nesta unidade, fora de um procedimento." Três linhas, cada uma desenhada apenas onde o modelo declara a biblioteca de que ela dispara: **Snapshot** (um seletor de datalog e **Capturar**: "Registrar uma linha de datalog agora como uma execução concluída em Históricos"), **Avaliar agora** (um seletor de datalog, um seletor de avaliação e **Avaliar**: "Capturar uma linha e julgá-la contra a avaliação agora"), **Aplicar receita** (um seletor sobre as receitas instantâneas do modelo e **Aplicar**: "Escrever os setpoints da receita uma vez pelo funil (nenhuma execução é registrada)"). | Disparar o comando; o resultado cai no feed de ações ("Snapshot registrado. Veja em Históricos.", "Avaliada. O veredito está registrado em Históricos.", "Receita aplicada."). Capturar e Avaliar exigem Executar procedimentos, uma unidade que não esteja ocupada nem bloqueada, um runtime rodando e uma seleção completa; Aplicar exige o mesmo, exceto que a unidade pode estar ocupada, já que ele não reserva nada. Uma unidade ocupada mostra a nota "Snapshot e Avaliar ficam indisponíveis enquanto esta unidade está preparando, executando, pausada ou salvando. Aplicar receita continua disponível durante uma execução, mas não enquanto o intertravamento segura a unidade: uma cadeia disparada, uma que aguarda rearme e uma cuja leitura está indisponível recusam o comando." | O modelo não tem datalog nem receita instantânea. A linha Avaliar agora precisa de um datalog e de uma avaliação; a linha Aplicar receita precisa de uma receita instantânea. |

Depois do catálogo vêm os dashboards do modelo, uma linha para cada um, nomeados pelo dashboard e
descritos pela descrição do próprio dashboard (ou "Um dashboard deste modelo, desenhado para a
unidade que abre o painel."). Um dashboard fica **desligado até você ligá-lo**, ao contrário dos
cartões do catálogo; numa unidade, ele desenha o dashboard resolvido para aquela unidade, na altura
escolhida na linha, encabeçado pelo nome do dashboard. Ele é deixado de fora numa unidade quando o
dashboard está vazio ou foi excluído.

Os seletores do cartão Comandos únicos começam no primeiro item de cada biblioteca e mantêm a sua
escolha enquanto você fica na unidade.

## Ordem, ligado e desligado {#order-on-and-off}

O arranjo é salvo por inteiro na primeira mudança, então a ordem que a página mostra e a ordem salva
são a mesma. Um cartão de catálogo para o qual o painel não guarda linha se lê como ligado, depois
de tudo o que o painel guarda, que é por que um painel que ninguém arranjou desenha o catálogo
inteiro na ordem do catálogo e por que um cartão que uma versão posterior acrescenta chega visível
no fim. Uma linha de dashboard é o contrário: desligada até você colocá-la, e uma linha que nomeia um
dashboard que o modelo não tem mais é descartada.

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

**Mostrar em View** é o interruptor da barra de detalhe com o painel selecionado. Ele lê o estado em
vigor, e a dica dele diz o que aquele estado faz:

| Estado | Dica |
| --- | --- |
| Ligado | "Cada unidade deste modelo tem uma entrada para este painel na coluna Visualização." |
| Desligado | "Este painel é aberto a partir da unidade, em Operação. Nada dele fica na página View." |

Ligado, ele põe uma entrada por unidade do modelo na coluna de Visualização da página View, chamada
`Modelo · Unidade · Painel` e vestindo o ícone do painel; a entrada abre os cartões do painel
desenhados para aquela unidade. As entradas nunca são reordenadas, editadas ou copiadas na página
View (Copiar é recusado), e a entrada de cada unidade pode ser arquivada nas pastas da página View
por conta própria. Um modelo sem unidades não põe nada lá. O interruptor não é desenhado para um
papel sem Gerenciar o Process; ele continua desenhado e cinza sob a trava de engenharia e o runtime
parado, dizendo qual dos dois é. Como as entradas ficam está em
[Painéis de unidade na View](view-unit-panels).

## Remover painel {#remove-panel}

**Remover painel** fica no grupo de perigo da barra de detalhe com o painel selecionado, no menu de
clique direito da árvore, e como o X no cartão da página da pasta. Ele pergunta antes ("Excluir
painel", "Isso remove o painel do modelo."). O último painel de um modelo é recusado: "Um modelo
guarda ao menos um painel, e este é o único." Depois da exclusão a seleção cai na pasta Painéis do
modelo, toda unidade perde aquela linha, e as entradas dele saem da página View. Ele exige Gerenciar
o Process e fica cinza sob a trava de engenharia e o runtime parado.

## Sob a Operação e na página View {#under-operate-and-on-the-view-page}

Toda unidade do modelo carrega uma linha por painel, antes das linhas de dashboard dela, sob a
**Operação**. Selecioná-la desenha os cartões sobre a execução e os vínculos daquela unidade, sob a
barra de palco que a página View usa: o nome da entrada `Modelo · Unidade · Painel`, o ícone do
painel, **Expandir** ("Usar a janela inteira"), **Tela cheia** ("Tela cheia (F11)"), e uma pílula
com a atividade da unidade enquanto uma execução a detém (**Gravando**, **Pausada**, **Salvando**,
**Preparando**, **Finalizando**, ou **Aguardando os setpoints chegarem ao equipamento** enquanto um
segmento de receita configurado para aguardar ainda espera os setpoints dele chegarem). Não há
Copiar nem Editar: a linha desenha o arranjo e nunca o arranja. Os cartões se atualizam na cadência
deles (a cada 200 ms na janela da própria estação, 400 ms num navegador).

Um papel sem Executar procedimentos lê a nota "Você pode acompanhar aqui o estado de execução desta
unidade, mas iniciá-la ou conduzi-la exige a permissão “Executar procedimentos”." e os
comandos não são desenhados. Um painel cujos cartões estão todos desligados diz "Este painel não
desenha nenhum cartão. Escolha os cartões dele na linha Painéis do modelo, em Visualização." O
painel continua utilizável enquanto a configuração da estação está travada por uma execução: operar
nunca é retido pela fronteira de engenharia.

Os mesmos cartões, desenhados do mesmo jeito, são o que uma entrada da página View abre.

## O que um painel não faz {#what-a-panel-does-not-do}

- Ele não compõe nada livremente. Uma figura sua é um [dashboard do modelo](process-dashboards), que
  um painel pode então desenhar como um dos cartões dele.
- Ele não difere entre unidades em nada. Toda unidade do modelo desenha os mesmos cartões na mesma
  ordem e nas mesmas alturas; uma unidade que precisa de outra superfície precisa de outro painel do
  modelo, que toda unidade então também carrega.
- Ele não pode ser copiado, reordenado nem editado na página View, e nunca está nas pastas da própria
  página View, a não ser como as entradas por unidade que o interruptor cria.
- Ele nunca esconde o aviso de intertravamento, e nunca desenha um cartão que a unidade não tem com
  o que preencher.
