Solução para erro: Can't find point view c1

Como eu resolvo o erro Can’t find point view c1?

image

este erro aparece quando eu tento abrir uma tela pop-up por um script html

Segue o código utilizado:

TELA MOTOR

Boa noite. Acho que seu link “TELA MOTOR” está quebrado, ao clicar nele não acontece nada.

Quanto ao erro, tenho a impressão que já me deparei com algo semelhante antes, mas não consigo lembrar o que causou o erro. Se for possível corrigir o link com o código posso tentar reproduzir o erro aqui.

Título Tela do Motor

Infelizmente parece que ainda não está funcionando. Tente tirar um print do código e posta como imagem aqui.

tela

Testei seu código e de fato obtive o mesmo erro. Engraçado que para mim este erro também passou a aparecer quando eu navego pelas as telas das Representações Gráficas através dos botões de avançar e recuar pelo histórico do navegador. Isso também acontece com mais alguém?
Andei pesquisando o que poderia ser a causa desse erro e estou tentando elaborar um paliativo (“gambiarra”), se eu conseguir alguma coisa, posto aqui.

Fiz mais uns testes e o problema parece que é mais complicado do que eu pensei que era. Aparentemente quando você abre duas Representações Gráficas em abas diferentes (ou mesmo em janelas diferentes) do mesmo navegador, o ScadaBR começa a exibir elementos da Representação Gráfica aberta por último naquela que foi aberta por primeiro, além de gerar o erro de “Can’t find point view”. Recarregar a página não resolve o problema, e o conteúdo de uma Representação permanece interferindo no conteúdo da outra.

Não sei se esse bug foi corrigido em alguma versão mais nova do ScadaBR ou no Scada-LTS (estou usando o ScadaBR 1.0CE no Windows XP). A única coisa que posso dizer é que, diante disso, é preferível abrir apenas uma Representação Gráfica por vez em cada navegador.

Sim, para mim ocorreu o mesmo problema… porém quando você está fazendo um supervisorio, fica mais simples para o operador quando tu clica no equipamento e abre uma “telinha” de motores, por isso pensei na solução de abrir uma janela estilo POP UP… será que teria alguma outra solução?

Isso ocorre na 1.1 CE também, o problema está relacionado ao login do usuário, se você abrir representações gráficas diferentes em navegadores, abas ou até dispositivos diferentes usando o mesmo login esse erro acontece. Depois com mais calma vou dar uma olhada nas entranhas do sistema para tentar fazer alguma modificação em relação a isso.

Quando eu estava criando o ScadaBR-EF eu dei uma olhada para entender melhor esse problema.

Basicamente o problema ocorre porque a estrutura do ScadaBR não considerou a possibilidade do acesso simultâneo a várias representações gráficas. O que acontece é que é armazenada a informação sobre a “representação atual” como uma propriedade da sessão de usuário. Toda vez que você abre uma nova representação gráfica, essa propriedade é sobrescrita e as representações anteriores param de ser atualizadas (com os dados corretos).

E por que ocorre o erro Can't find point view c[número]? Ele ocorre porque cada elemento que compõe uma representação gráfica (uma imagem, um botão, uma lista de alarmes, etc.) é salvo no banco de dados com um ID numérico começando em 1.

Suponha que você primeiramente tenha aberto uma representação que tinha elementos com IDs 1, 3 e 4, por exemplo. Ao abrir uma segunda representação no mesmo navegador, o ScadaBR automaticamente entende que você mudou sua “representação atual” e passa a retornar todos os dados como se referindo à representação aberta por último. Assim, se essa última representação contém elementos com IDs 1, 2 e 3 ocorrerá um conflito na aba da primeira representação (porque o ScadaBR não encontrará o ID 2 nessa aba) e será gerado o tal erro Can't find point view c2 .

Esse erro ainda é um alerta importante. Às vezes, por coincidência, duas representações gráficas tem elementos diferentes, mas seus IDs são iguais. Nesse caso, ocorre que o conteúdo da representação aberta por último é inserido naquela aberta por primeiro, gerando um comportamento problemático.

Infelizmente, para alterar essas coisas é necessário um conhecimento razoável em Java, Javascript e da biblioteca DWR, e também tempo. É necessário alterar um pouco da estrutura do ScadaBR para que funcione esse suporte a múltiplas representações. Eu particularmente não consegui fazer isso no ScadaBR-EF. Então, por enquanto, deve-se ter em mente que, para as versões do ScadaBR que temos atualmente (sobre o Scada-LTS eu não sei) não é possível acessar mais de uma representação gráfica simultaneamente no mesmo navegador.

Espero que essa explicação, por mais superficial que tenha sido, possa ajudar quem queira compreender melhor esse erro.

1 curtida

Muito obrigado por sua explicação, foi bem esclarecedora. Aqui eu consegui contornar o problema habilitando o acesso anônimo (public_view.htm?viewId=‘n’) somente leitura nas representações gráficas e colocando em cada uma das telas um botão apontando para o seu próprio link que exige login (views.shtm?viewId=‘n’) para quando for necessário executar algum comando. Pois percebi que pelo acesso anônimo, o acesso simultâneo à várias representações gráficas, iguais e/ou diferentes, o conflito não ocorre.