Temporizador para trocar telas gráficas por usuário específico


#1

Bom dia,

Possuímos alguns televisores na qual queremos alternar as telas de tempo em tempo para uma melhor gestão. Pesquisamos aqui no fórum e vimos que podemos utilizar o HTML conforme abaixo:

<META http-equiv= "refresh" content="tempo para alternar(s); URL=http:// Tela a ser utilizada > <p>A questão é que preciso que este temporizador funcione apenas para um usuário especifico ( o que servirá apenas para os televisores).</p> <p>Tentamos utilizar um html para recuperar o nome de usuário conforme abaixo utiliando comparação, caso usuário fosse o correto executaria o script temporizador, no entanto nao funcionou.</p> <p>var usuario = document.querySelector(“span.copyTitle > b”).innerHTML.toString();</p> <p>Alguém possui alguma idéia? poderiam nos ajudar ?</p> <p>Muito Obrigado.</p>

#2

Existem vários modos de criar um código para alternar entre telas do ScadaBR. Segue abaixo um exemplo de código Javascript+JSP que pode ser inserido no arquivo page.tag (WEB-INF/tags/page.tag) para criar uma lista de telas a serem exibidas:

<script>

/* ------ VARIÁVEIS DE CONTROLE ------ */

// Nome do usuário que irá visualizar as telas
var usuario_telas = "visualiza";

// Tempo (em SEGUNDOS) que cada tela será exibida
var tempo_entre_telas = 15;

// URL relativa de cada tela a ser visualizada (separe por vírgulas)
var telas = [ 	"views.shtm?viewId=1",
				"views.shtm?viewId=2",
				"views.shtm?viewId=3",
				"views.shtm?viewId=4"
];




/* ------ CÓDIGO PRINCIPAL (faz a mágica acontecer) ------ */

// Verifica se é o usuário que alterna entre as telas:
if ("${sessionUser.username}" == usuario_telas) {
	
	// Verifica em qual tela está atualmente
	var tela_atual = -1;
	for (var i = 0; i < telas.length; i++) {
		if (window.location.href.includes(telas[i])) {
			tela_atual = i;
		}
	}
	
	// Encontra qual deve ser a próxima tela
	var nova_tela = 0;		
	if (tela_atual == (telas.length - 1)) { 
		// Se estiver na última tela, volta à primeira
		nova_tela = 0;	
	} else { 
		// Nos outros casos, avança uma tela
		nova_tela = tela_atual + 1;
	}
	
	if (tela_atual != -1) {
		// Cria um timer para mudar de tela automaticamente
		window.setTimeout(function() {
			window.location = telas[nova_tela];
		}, (tempo_entre_telas * 1000));
	}

}

</script>

O código acima cria um loop de repetição entre as telas do ScadaBR. Basta fazer login com o usuário escolhido e colocar em qualquer uma das telas especificadas no código, que o ScadaBR irá automaticamente alternar para as próximas da lista.

Espero ter ajudado, abraços!