SaudeBemEstar

From Labmm2

Revision as of 03:18, 22 June 2011 by Ruiespinha (Talk | contribs)
Jump to: navigation, search

Nesta página será divulgado o processo de criação do projecto "Saúde e Bem Estar".


Contents

Alunos

Rui Espinha 45715
Tiago Ferreira 46266
José Rocha 43394


Conceito

O projecto Saúde e Bem Estar trata um dos temas mais importantes da actualidade, pois mais de metade da população portuguesa sofre de excesso de peso.

Além do controlo de peso, a alimentação influencia a nossa saúde em geral, desse modo, o Saúde e Bem Estar mostrará como tratar vários problemas de saúde sem recorrer a medicamentos, consumindo apenas determinados alimentos, de uma forma 100% saudável.
O site foca 8 tratamentos saudáveis para 8 das doenças mais comuns:

- Colesterol
- Ácido Úrico
- Hipertensão
- Constipação
- Alergia
- Obstipação
- Enxaqueca
- Depressão

No site integrará uma lista de receitas saudáveis para todos os momentos de cada refeição, desde as entradas, carnes, peixes, e por fim sobremesas.

Além disso haverá uma ajuda para o controlo total do peso: perder, ganhar e até manter peso.

Arborescencia

Segue aqui a estrotura arborescente do nosso projecto:

Arborescencia.jpg


Javascript

Este site integra uma calculadora de IMC (Índice de Massa Corporal), aqui fica o código, explicado:

function calculaIMC()
{
var sexo = document.forms.IMC.sexo.value;



var peso=document.getElementById("pes").value;
var altura=document.getElementById("alt").value;
var IMC;
altura= altura/100;
altura= Math.pow(altura,2);
IMC=peso/altura;
IMC= IMC.toFixed(2);
if (isNaN(IMC) ) {alert("Dados inválidos, por favor introduza de novo.")}
else if (IMC>200) {alert("Dados inválidos, por favor introduza de novo.")}
else if  (IMC<3)  {alert("Dados inválidos, por favor introduza de novo.")}
else{
switch (sexo)
{
	case ("Masculino"):
	{
	 if (IMC<20.7){document.getElementById("resultadoz").style.color="#00F" ;
	 		 	document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Tem défice de peso. Para começar a adquirir um peso adquado às suas características de forma saudavel vá ao menú alimentação e clique no sub-menu ganhar peso");}
				
	else if (IMC>=20.7 && IMC<=26.4){document.getElementById("resultadoz").style.color="#0F6" ; document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Parabéns, tem o peso adequado. Para manter o seu peso de forma saudavel vá ao menú alimentação e clique no sub-menu manter peso");}
	
	else if (IMC>=26.5 && IMC<=27.8){document.getElementById("resultadoz").style.color="#FF0" ; document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Tem algum peso em excesso mas nada de grave. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");}
	else if (IMC>=27.9 && IMC<=31.1){document.getElementById("resultadoz").style.color="#F90" ;
	document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Está obeso. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");}
	else if (IMC>31.1){document.getElementById("resultadoz").style.color="#F00" ; 		document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Sofre de obesidade morbida. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");}
	break;
	}
	case ("Feminino"):
	{
		 if (IMC<19.1){document.getElementById("resultadoz").style.color="#00F" ;
		 	document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Tem défice de peso. Para começar a adquirir um peso adquado às suas características de forma saudavel vá ao menú alimentação e clique no sub-menu ganhar peso");
		 }
	else if (IMC>=19.2 && IMC<=25.8){
		document.getElementById("resultadoz").style.color="#0F6" ; 
	document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Parabéns, tem o peso adequado. Para manter o seu peso de forma saudavel vá ao menú alimentação e clique no sub-menu manter peso");
	}
	else if (IMC>=25.9 && IMC<=27.3){document.getElementById("resultadoz").style.color="#FF0" ; 
 document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Tem algum peso em excesso mas nada de grave. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");
	}
	
	else if (IMC>=27.4 && IMC<=32.3){document.getElementById("resultadoz").style.color="#F90" ;
document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Está obesa. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");
	}
	else if (IMC>32.3){document.getElementById("resultadoz").style.color="#F00"; 
		document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC + ": Sofre de obesidade morbida. Para começar a perder peso de forma saudavel vá ao menú alimentação e clique no sub-menu perder peso");
	
	}
	break;	
	}
document.getElementById("resultadoz").innerHTML = ("IMC = "+IMC);<br/>

Para começar o script vai buscar os valores inseridos pelo utilizador e verificar se estão correctos, para isso vai verificar se são números com a função IsNaN. em seguida vai verificar se os valores são "normais", nesse caso os critérios são:
O IMC terá que ser menor que 200, (o grau de obesidade máximo começa em 31.1 nos Homens e em 32.3 nas mulheres, e maior que 3, pois será também impossível.

Depois das validações, o programa verifica se o sexo introduzido foi masculino ou feminino, que apesar de não haver diferença no resultado numérico do IMC, os critérios que definem a categoria do peso da pessoa são ligeiramente diferentes.

Para cada "categoria" de valores o programa irá executar uma função que irá escrever um texto que aconselhará cada pessoa a chegar ao peso ideal, ou manter o mesmo.





Tivémos algumas dificuldades na estrotura de menús "drop-down", que não conseguimos integrar apenas com código CSS e tivémos que procurar ajuda com javascript. Deste modo, quando o utilizador faz mouse over ou mouse out. O código utilizado foi este:

function mostraopcoes1()
{
var coisas1= document.getElementById('aliment11')
coisas1.style.visibility='visible';
var coisas2= document.getElementById('aliment12')
coisas2.style.visibility='visible';
var coisasa= document.getElementById('aliment13')
coisasa.style.visibility='visible';
}
function mostraopcoes3()
{
var coisas5= document.getElementById('aliment31')
coisas5.style.visibility='visible';
var coisas6= document.getElementById('aliment32')
coisas6.style.visibility='visible';
var coisasa9= document.getElementById('aliment33')
coisasa9.style.visibility='visible';
var coisasa13= document.getElementById('aliment34')
coisasa13.style.visibility='visible';
}
function escondeopcoes3()
{	 
var coisas3= document.getElementById('aliment31')
coisas3.style.visibility='hidden'
var coisas4= document.getElementById('aliment32')
coisas4.style.visibility='hidden'
var coisasa11= document.getElementById('aliment33')
coisasa11.style.visibility='hidden'
var coisasa12= document.getElementById('aliment34')
coisasa12.style.visibility='hidden'
}	

function escondeopcoes1()
{

var coisas7= document.getElementById('aliment11')
coisas7.style.visibility='hidden';
var coisas8= document.getElementById('aliment12')
coisas8.style.visibility='hidden';
var coisasa1= document.getElementById('aliment13')
coisasa1.style.visibility='hidden';

}	

function escondetratamentos(){
var trata1= document.getElementById("tratament11")
trata1.style.visibility="hidden";	
var trata2= document.getElementById("tratament12")
trata2.style.visibility="hidden";	
var trata3= document.getElementById("tratament13")
trata3.style.visibility="hidden";	
var trata4= document.getElementById("tratament14")
trata4.style.visibility="hidden";	
var trata5= document.getElementById("tratament15")
trata5.style.visibility="hidden";	
var trata6= document.getElementById("tratament16")
trata6.style.visibility="hidden";	
var trata7= document.getElementById("tratament17")
trata7.style.visibility="hidden";	
var trata8= document.getElementById("tratament18")
trata8.style.visibility="hidden";	
}
function mostratratamentos(){
var atrata1= document.getElementById("tratament11")
atrata1.style.visibility="visible";	
var atrata2= document.getElementById("tratament12")
atrata2.style.visibility="visible";	
var atrata3= document.getElementById("tratament13")
atrata3.style.visibility="visible";	
var atrata4= document.getElementById("tratament14")
atrata4.style.visibility="visible";	
var atrata5= document.getElementById("tratament15")
atrata5.style.visibility="visible";	
var atrata6= document.getElementById("tratament16")
atrata6.style.visibility="visible";	
var atrata7= document.getElementById("tratament17")
atrata7.style.visibility="visible";	
var atrata8= document.getElementById("tratament18")
atrata8.style.visibility="visible";	
}
	

Cada sub-menu é mostrado/escondido através destas funções acima, que são chamadas através de eventos mouse over e mouse out.

Para que a animação dos menus funcionasse foi utilizada esta função:

function imgali(x){
				switch (x){
				case 1:document.getElementById("imgal").src= "imagens/bot_alimentaçao.png";
				break;
				case 0:document.getElementById("imgal").src="imagens/bot_alimen_2.png";
			    break;
			}
	     	  }
function imgex(x){
				switch (x){
				case 1:document.getElementById("imgexe").src="imagens/bot_exec1.png";
				break;
				case 0:document.getElementById("imgexe").src="imagens/bot_exec2.png";
			    break;
			}
	     	  }
function imgmitos(x){
				switch (x){
				case 1:document.getElementById("imgmit").src="imagens/bot_mitos2.png";
				break;
				case 0:document.getElementById("imgmit").src="imagens/bot_mitos1.png";
			    break;
			}
	     	  }
function imgim(x){
				switch (x){
				case 1:document.getElementById("imgimc").src="imagens/bot_imc1.png";
				break;
				case 0:document.getElementById("imgimc").src="imagens/bot_imc2.png";
			    break;
			}
	     	  }
function imgcont(x){
				switch (x){
				case 1:document.getElementById("imgcon").src="imagens/bot_cont1.png";
				break;
				case 0:document.getElementById("imgcon").src="imagens/bot_cont2.png";
			    break;
			}
	     	  }


CSS

#dropdown{position:relative; font-size: 10px; margin:0; padding:0;
top:-30px;
width:inherit;
}
#dropdown ul{font-size: 10px; margin:0; padding:0; line-height:30px;}
#dropdown li{ font-size: 10px; margin:0; padding:0; list-style:none; float:left; position:relative;}

#menus #dropdown ul li {
		padding-right:10px;
		}
        
#menus #dropdown ul li a img{
		border:0px;}
#dropdown ul li a{font-size: 10px; text-align:center; font-family:Arial, Helvetica, sans-serif; text-decoration:none; height:60px; width:125px; display:block; color:#000;}
#dropdown ul li ul a{font-size: 10px; text-align:center; font-family:Arial, Helvetica, sans-serif; text-decoration:none; height:30px; width:125px; display:block; color:#000; border:1px solid #000; background-color:#09F;}
#dropdown ul li ul a:hover{font-size: 10px; text-align:center; font-family:Arial, Helvetica, sans-serif; text-decoration:none; height:30px; width:125px; display:block; color:#000; border:1px solid #000; background-color:#0F0;}


#dropdown ul ul{
	font-size: 10px;
	position:absolute;
	visibility:hidden;
	top:60px;
	left: 6px;
	height: 110px;
}
#dropdown ul li:hover ul{ font-size: 10px; visibility:visible;}


#dropdown ul li ul:hover ul{font-size: 10px; visibility:visible;}

#dropdown ul ul ul{
	font-size: 10px;
	position:absolute;
	left:127px;
	height: 158px;
	width: 138px;
	z-index: 5;
}






#calculadora{float:left; border: solid medium #000;}
body{ font-family: , sans-serif; border:1px #000;}
#topo{
	position:relative;
	position:absolute;
	width:950px;
	height:397px;
	}
#logo{
	position:absolute;
	width:200px;
	height:250px;
	float:left;
	max-width:200px;
	max-height:250px;
	top:8px;
	height:10em;
	left: 18px;
	z-index: 1;
}
#menus{
	width:748px;
	height:250px;
	float:left;
	max-width:750px;
	max-height:250px;
	position:relative;
	left:224px;
	padding-left: 10px;
    padding-top:50px;
	
	top:80px;
	height:323px;
	margin-top:-5em;
	position:relative;
	z-index:2;
	text-align:center;
}

#menus img{ width:130px; height:60px; padding-left:5px;}
#menus img:hover{ width:130px; height:60px; padding-left:5px;}
#conteudos{ position:relative; width:950px; height:450px; max-width:950px; max-height:450px; top:250px; left:14px;}
#sidebar{
	position:absolute;
	width:193px;
	height:458px;
	max-width:200px;
	max-height:450px;
	left: 17px;
	top: 0px;
}
#info{width:710px; height:auto; float:right; max-width:750px; max-height:450px; top:250px; 
padding-left:150px;
}

#imgLogo{
	margin-top:-6em;
	position:absolute;
	left: -8px;
	top: 121px;
}
#imgLogo *{
margin:0px auto;
}



#butoes li{display: inline;
list-style-type: none;
padding-right: 2px;

 }
 #topo {
	position:relative;
	left: 12px;
	top: 0px;
}


#menuAliment{ background-image:url(imagens/bot_alimen_2.png)}
#menuAliment hover{ background-image:url(imagens/bot_alimenta%C3%A7ao.png)}

#menuPrincipal{  width:130px; height:60px; padding-left:5px;}

#aliment11{visibility:hidden; top:-60px; position:absolute;}
#aliment12{visibility:hidden; top:-60px; position:absolute;}
#aliment13{visibility:hidden; top:-60px; position:absolute;}
#aliment31{visibility:hidden; top:-60px; position:absolute;}
#aliment32{visibility:hidden; top:-60px; position:absolute;}
#aliment33{visibility:hidden; top:-60px; position:absolute;}
#aliment34{visibility:hidden; top:-60px; position:absolute;}
#tratament11{visibility:hidden; top:-60px; position:absolute;}
#tratament12{visibility:hidden; top:-60px; position:absolute;}
#tratament13{visibility:hidden; top:-60px; position:absolute;}
#tratament14{visibility:hidden; top:-60px; position:absolute;}
#tratament15{visibility:hidden; top:-60px; position:absolute;}
#tratament16{visibility:hidden; top:-60px; position:absolute;}
#tratament17{visibility:hidden; top:-60px; position:absolute;}
#tratament18{visibility:hidden; top:-60px; position:absolute;}

#conteudos{
	position:relative;
	top:-180px;
	z-index:1;
	border-style:groove;
	border:1px;
     
}



	  
body{
	font-family:Arial, Helvetica, sans-serif;
	background-image:url(imagens/greenPattern.jpg);
	}
p{
	font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
	font-size:18px;
	font-style:italic;
	color:#060;
	}
	
#resultadoz{
	position:absolute;
	width:682px;
	height:446px;
	left: 231px;
	top: 2px;
	}


Melhoramentos Futuros

Devido á quantidade enorme de problemas encontrados durante a contrução do site, muitas coisas não funcionam como nós pretendiamos, para um melhoramento futuro gostariamos de melhorar a estrotura visual do site, alguns menus que não funcionam correctamente, e o posicionamento de alguns textos ficou aquém dos nossos objectivos.


Problemas/Conclusões

Sem dúvida o maior problema que enfrentámos foi com o template, devido á quantidade enorme de erros que ele estava a dar, decidimos deixar de utilizar o mesmo, ou seja, cada alteração na estrotura do site tivémos que alterar "á unha" em todas as páginas do site.
Além disso enfrentámos os típicos problemas com javascript como por exemplo o script conseguir ler e calcular valores (testado com linha de script "alert(nome da variável)") mas simplesmente se recusava a apresentar os mesmos no local que pretendiamos.
Infelizmente chegámos á entrega final do projecto sem conseguir resolver um problema com os menús drop-down, que por vezes desaparecem sem que isso seja suposto, o que prejudica imenso a navegação no site pois ficaram várias páginas inacessíveis.

No fim de tudo o problema maior foi mesmo o tempo, mas esse era já um problema esperado que fez com que o projecto não mostrasse todo o seu potencial tanto informativo como mesmo de entretenimento devido a problemas que chegam ao fim sem ser resolvidos e são entregues assim mesmo como ficaram.
De forma geral com este projecto desenvolvemos a nossa tolerância a ultrapassar problemas, que nem faziamos ideia existirem, e além disso elucidou-nos para a realidade da exigencia do mercado de trabalho a nível de web-design.

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox