Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamu <samurey@gmail.com>2013-09-07 14:26:29 (GMT)
committer Samu <samurey@gmail.com>2013-09-07 14:26:29 (GMT)
commit1de73840dc993e07efde511ffe2ccabb28c6b181 (patch)
treea7814467047e498b7ae334a8c216b02c285b5cd0
parent3288bcf2f2f7751c8e4c968050bddaae691e031a (diff)
resultados individuales completo
-rw-r--r--EjercitarWeb/WebContent/js/Attc/attc.css99
-rw-r--r--EjercitarWeb/WebContent/js/Attc/attc.googleCharts.js302
-rw-r--r--EjercitarWeb/WebContent/ver_resultados.jsp43
-rw-r--r--EjercitarWeb/src/src/CargarDatosPersonalesServlet.java73
-rw-r--r--EjercitarWeb/src/src/CargarResultadosGeneralesTemasServlet.java4
-rw-r--r--EjercitarWeb/src/src/CargarResultadosIndividualesServlet.java183
6 files changed, 693 insertions, 11 deletions
diff --git a/EjercitarWeb/WebContent/js/Attc/attc.css b/EjercitarWeb/WebContent/js/Attc/attc.css
new file mode 100644
index 0000000..ac12ee0
--- /dev/null
+++ b/EjercitarWeb/WebContent/js/Attc/attc.css
@@ -0,0 +1,99 @@
+@media screen {
+/* override css in main */
+body{
+ margin-left: auto; margin-right: auto;
+ margin-top:20px;
+ width:100%;
+ position:relative;
+ left:0px;
+ top:0px;
+ z-index:0;
+ background-color:#FFFFFF;
+ color:#47535E;
+ font-size:0.7em;
+ font-family:Arial, sans-serif;
+}
+
+div.mainContent{
+ margin-left: auto; margin-right: auto;
+ width:800px;
+}
+table{
+ margin-left: auto; margin-right: auto;
+ width:98%;
+ border:1px solid #E6E6E6;
+ border-radius:5px;
+ box-sizing: border-box;
+ background-color:#F6F6F6;
+ border-collapse: collapse;
+}
+table td,table th{
+ border:1px solid #E6E6E6;
+ border-top:1px solid #FFFFFF;
+}
+table th{
+ background-color:#FFFFFF;
+}
+/*attc classes*/
+/*attc classes*/
+div.attcControls{
+ width:100%;
+ border:1px solid #E6E6E6;
+ border-radius:5px;
+ box-sizing: border-box;
+ background-color:#F6F6F6;
+}
+div.attcControls ul{
+ overflow:hidden;
+ padding:2px 2px 2px 2px;
+ margin:0px;
+}
+div.attcControls ul li{
+ margin:0px;
+ padding:0px 0px 0px 10px;
+ list-style-type: none;
+ display: inline;
+ float:right;
+ clear:none;
+}
+div.attcControls ul li a{
+ border:1px solid #9CDFF7;
+ border-radius:3px;
+ box-sizing: border-box;
+ background-color:#86D6F5;
+ padding:2px;
+ color:white;
+ text-decoration:none;
+ display:inline-block;
+ background-image:none;
+ font-weight:normal;
+}
+div.attcControls ul li a:hover{
+ border:1px solid white;
+ color:#47535E;
+}
+div.attcControls ul li fieldset{
+ border:1px solid #9CDFF7;
+ border-radius:3px;
+ box-sizing: border-box;
+ background-color:#86D6F5;
+ padding:2px;
+ margin:0px;
+ color:white;
+ text-decoration:none;
+}
+div.attcControls ul li fieldset label{
+ padding-right:5px;
+}
+div.attcControls ul li fieldset select{
+ font-size:1em;
+ padding:0px;
+ margin:0px;
+}
+
+input.attcEditCheckRadioBoxes{
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+} \ No newline at end of file
diff --git a/EjercitarWeb/WebContent/js/Attc/attc.googleCharts.js b/EjercitarWeb/WebContent/js/Attc/attc.googleCharts.js
new file mode 100644
index 0000000..c8bd0fb
--- /dev/null
+++ b/EjercitarWeb/WebContent/js/Attc/attc.googleCharts.js
@@ -0,0 +1,302 @@
+google.load("visualization", "1", {packages:["corechart"]});
+(function( $ ){
+ $.fn.attc = function(options) {
+ var numPattern = /[^0-9\.]/g;
+ var tableEl = this;
+ var dataArray=new Array();
+ var numRows = tableEl.find('tbody tr').length;
+ //defaults
+ var settings = $.extend( {
+ 'location':tableEl.attr('id'),
+ 'hideTable' : false,
+ 'hideChart' : false,
+ 'type':'bar',
+ 'googleOptions':new Object(),
+ 'controls':{
+ showHide:true,
+ create:true,
+ chartType:true
+ },
+ 'controlsLabels':{
+ showChart:"Show chart",
+ hideChart:"Hide chart",
+ showTable:"Show table",
+ hideTable:"Hide table",
+ createChart:"Edit chart",
+ changeChart:"Change chart"
+ },
+ chartOptionList:'<option value="bar">Bar</option><option value="pie">Pie</option><option value="column">Column</option><option value="area">Area</option><option value="line">Line</option>'
+ }, options);
+ //set editing attribute to false so it can be tested:
+ tableEl.attr('data-attc-editing',false);
+ //function to create a table
+ var CreateChart = function(type,location,tableEl)
+ {
+ var dataArray=new Array();
+ switch(type){
+ case 'pie':
+ //console.log("making a pie");
+ var headerValues=$('#'+tableEl.attr('data-attc-colvalues'));
+ var headerDesc=tableEl.attr('data-attc-colDescription');
+ if(headerDesc.split(',').length >0){
+ headerDesc=$('#'+headerDesc.split(',')[0]);
+ }else{
+ headerDesc=$('#'+headerDesc);
+ }
+ var colIndexValues=headerValues.index()+1;
+ var colIndexDesc=headerDesc.index()+1;
+ dataArray[0]=[headerDesc.text(), headerValues.text()];
+ for(i=1;i <=numRows;i++){
+ //loop values and description to get array
+ var value=tableEl.find('tbody tr:nth-child('+i+') td:nth-child('+colIndexValues+')').text();
+ value=parseFloat(value.replace(numPattern,''));
+ var description=tableEl.find('tbody tr:nth-child('+i+') td:nth-child('+colIndexDesc+')').text();
+ //console.log(colIndexDesc+ ':'+description);
+ dataArray[i]=[description,value];
+ }
+ var chart = new google.visualization.PieChart(document.getElementById(location));
+ break;
+
+ case 'bar':
+ case 'column':
+ case 'area':
+ case 'line':
+ var headerDesc=$('#'+tableEl.attr('data-attc-colDescription'));
+ var colIndexDesc=headerDesc.index()+1;
+ var headerValuesArray=tableEl.attr('data-attc-colvalues').split(',');
+ //var headerValuesArray=$('#'+tableEl.attr('data-attc-colvalues')).split(',');
+ var headerIndexArray=new Array();
+ var colIndexValues=0;
+ var value="";
+ var description="";
+ //get index for each column
+ for(x=0;x<headerValuesArray.length;x++){
+ headerIndexArray.push($('#'+headerValuesArray[x]).index()+1);
+ }
+ //console.log(headerIndexArray);
+ var theadEls = tableEl.find('thead th');
+ var headArray=new Array();
+ description=tableEl.find('thead tr:nth-child(1) th:nth-child('+colIndexDesc+')').text();
+ headArray.push(description);
+ for(x=0;x<headerValuesArray.length;x++){
+ colIndexValues=headerIndexArray[x];
+ value=tableEl.find('thead tr:nth-child(1) th:nth-child('+colIndexValues+')').text();
+ headArray.push(value);
+ }
+ dataArray[0]=headArray;
+ for(i=1;i <=numRows;i++){
+ var rowArray=new Array();
+ description=tableEl.find('tbody tr:nth-child('+i+') td:nth-child('+colIndexDesc+')').text();
+
+ rowArray.push(description);
+ for(x=0;x<headerValuesArray.length;x++){
+ colIndexValues=headerIndexArray[x];
+ value=tableEl.find('tbody tr:nth-child('+i+') td:nth-child('+colIndexValues+')').text();
+ value=parseFloat(value.replace(numPattern,''));
+ //console.log(colIndexDesc+ ':'+description);
+ rowArray.push(value);
+ }
+ dataArray[i]=rowArray;
+
+ }
+
+ switch(type){
+ case 'bar':
+ var chart = new google.visualization.BarChart(document.getElementById(location));
+ break;
+ case 'column':
+ var chart = new google.visualization.ColumnChart(document.getElementById(location));
+ break;
+ case 'area':
+ var chart = new google.visualization.AreaChart(document.getElementById(location));
+ break;
+ case 'line':
+ var chart = new google.visualization.LineChart(document.getElementById(location));
+ break;
+
+ default:
+ var chart = new google.visualization.BarChart(document.getElementById(location));
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ var data = google.visualization.arrayToDataTable(dataArray);
+ chart.draw(data, settings.googleOptions);
+ };
+
+ if(tableEl.attr('title')!='' && settings.googleOptions.title==undefined){
+ settings.googleOptions.title=tableEl.attr('title');
+ }
+
+ //look for the settings in the data-attc-googleOptions
+ if(tableEl.attr('data-attc-googleOptions')!=undefined){
+ settings.googleOptions=jQuery.parseJSON(tableEl.attr('data-attc-googleOptions'));
+ }
+ //look for the settings in the data-attc-controls
+ if(tableEl.attr('data-attc-controls')!=undefined){
+ settings.controls=jQuery.parseJSON(tableEl.attr('data-attc-controls'));
+ }
+ //look for type in data-attc-type
+ if(tableEl.attr('data-attc-type')!=undefined){
+ settings.type=tableEl.attr('data-attc-type');
+ }
+
+ if(tableEl.attr('data-attc-hideTable')!=undefined){
+ settings.hideTable=tableEl.attr('data-attc-hideTable');
+ }
+ if(tableEl.attr('data-attc-hideChart')!=undefined){
+ settings.hideChart=tableEl.attr('data-attc-hideChart');
+ }
+ //look for location in data-attc-location
+ if(tableEl.attr('data-attc-location')!=undefined){
+ settings.location=tableEl.attr('data-attc-location');
+ }
+
+ if(tableEl.length>0 ){
+ if(tableEl.get(0).tagName=='TABLE'){
+ //fork depending on the setting
+ CreateChart(settings.type,settings.location,tableEl);
+
+ //hide the table
+ if(settings.hideTable=="true"){
+ tableEl.hide();
+ }
+ if(settings.hideChart=="true"){
+ $('#'+settings.location).hide();
+ }
+ //start making the controls
+ var controls='';
+ if(settings.controls.showHide){
+ controls+='<li><a href="#" \
+ data-attc-textShow="'+settings.controlsLabels.showChart+'" \
+ data-attc-textHide="'+settings.controlsLabels.hideChart+'" \
+ data-attc-controls-showHide="'+settings.location+'" \
+ class="attcChartIcon">'+(settings.hideChart ? settings.controlsLabels.showChart : settings.controlsLabels.hideChart)+'</a></li>';
+
+ controls+='<li><a href="#" \
+ data-attc-textShow="'+settings.controlsLabels.showTable+'" \
+ data-attc-textHide="'+settings.controlsLabels.hideTable+'" \
+ data-attc-controls-showHide="'+tableEl.attr('id')+'" \
+ class="attcTableIcon">'+(settings.hideTable ? settings.controlsLabels.showTable : settings.controlsLabels.hideTable)+'</a></li>';
+ }
+ //start making the controls
+ if(settings.controls.create){
+ controls+='<li><a href="#" \
+ data-attc-controls-addCreateOptions="'+tableEl.attr('id')+'" \
+ class="attcTableIcon">'+(settings.controlsLabels.createChart)+'</a></li>'
+ }
+ if(settings.controls.chartType){
+ controls+='<li><fieldset><label>'+settings.controlsLabels.changeChart+'</label><select data-attc-controls-updateChart="'+tableEl.attr('id')+'" class="attcUpdateChart">'+settings.chartOptionList+'</select></fieldset></li>';
+ }
+ //if there are any controls to show
+ if(controls !=''){
+ controls='<div class="attcControls"><ul>'+controls+'</ul><div>';
+ var controlsEl=$(controls);
+ //set the select list to show current selected chart
+ controlsEl.find("select[data-attc-controls-updateChart]").val(settings.type);
+ //
+ controlsEl.on("click", "a[data-attc-controls-showHide]", function(e){
+ e.preventDefault();
+ var el=$('#'+$(this).attr('data-attc-controls-showHide'));
+ el.find('tbody').show();
+ el.toggle();
+ $(this).text(el.is(':visible') ? $(this).attr('data-attc-textHide') : $(this).attr('data-attc-textShow'));
+ });
+ controlsEl.on("change", "select[data-attc-controls-updateChart]", function(){
+ //update chart type for other functions
+ tableEl.attr('data-attc-type',$(this).val());
+ //grab the new chart and re-run the creation
+ CreateChart($(this).val(),settings.location,tableEl);
+ //if editing then update the editing controls
+ if(tableEl.attr('data-attc-editing')=='true'){
+ controlsEl.find("a[data-attc-controls-addCreateOptions]").click();
+ }
+ });
+ controlsEl.find("a[data-attc-controls-addCreateOptions]").on("click", function(e){
+ e.preventDefault();
+ if(!tableEl.is(':visible')){
+ //show the thead only
+ tableEl.show();
+ tableEl.find('tbody').hide();
+ }
+ //set table as editing
+ tableEl.attr('data-attc-editing',true);
+ //remove existing edit boxes
+ tableEl.find('thead th input.attcEditCheckRadioBoxes').remove();
+ //add check boxes to the th elements
+ tableEl.find('thead th').each(function(index) {
+ //find col type by adding all values together and checking if it's not NaN
+ var items=0;
+ var col=index+1;
+ var inputType='checkbox';
+ var inputColType='value';
+ var descriptionCol=tableEl.attr('data-attc-colDescription');
+ var valuesCols=tableEl.attr('data-attc-colvalues').split(',');
+ valuesCols.push(descriptionCol);
+ tableEl.find('tbody>tr>td:nth-child('+col+')').each( function(){
+ items+=parseFloat($(this).text().replace(numPattern,''));
+ });
+
+ if(isNaN(items)){
+ inputType='radio';
+ inputColType='desc';
+ }
+ //force back to radio if pie chart
+ if(tableEl.attr('data-attc-type')=='pie'){
+ inputType='radio';
+ }
+ var appendEl='<input data-attc-colType="'+inputColType+'" type="'+inputType+'" name=attc'+inputColType+'" value="'+index+'"';
+ if($.inArray($(this).attr('id'), valuesCols)>-1){
+ appendEl+=' checked="checked"';
+ }
+ appendEl+=' class="attcEditCheckRadioBoxes"/>';
+ appendEl=$(appendEl).on("click", function(){
+ //give this col an id if it doesn't have one
+ var myId='attcCol'+$(this).val();
+ if($(this).parents('th').attr('id')!= undefined){
+ myId=$(this).parents('th').attr('id');
+ }else{
+ $(this).parents('th').attr('id',myId);
+ }
+ //change the attribute to this column
+ if($(this).attr('data-attc-colType')=='desc'){
+ tableEl.attr('data-attc-colDescription',myId);
+ }else{
+ //todo remove value if unchecked
+ if(tableEl.attr('data-attc-type') =='pie'){
+ tableEl.attr('data-attc-colValues',myId);
+ }else{
+ //select all the checked inputs
+ var checkedIds=tableEl.find('input[data-attc-colType=value]:checked').parents('th').map(function() { return this.id; }).get().toString();
+ tableEl.attr('data-attc-colValues',checkedIds);
+ }
+ }
+ //re-create chart
+ CreateChart(tableEl.attr('data-attc-type'),settings.location,tableEl);
+ });
+ $(this).prepend(appendEl);
+
+
+ });
+ });
+ //add controls above the table el
+ tableEl.before(controlsEl);
+ }
+ }else{
+ alert(tableEl.attr('id')+' is not a table it\'s a: ' + tableEl.get(0).tagName);
+ }
+ }else{
+ //
+ }
+ //maintain chain
+ return this
+ };
+})( jQuery );
+
+$(document).ready(function(){
+ $('[data-attc-createChart]').attc();
+}); \ No newline at end of file
diff --git a/EjercitarWeb/WebContent/ver_resultados.jsp b/EjercitarWeb/WebContent/ver_resultados.jsp
index e1de21e..3d1d596 100644
--- a/EjercitarWeb/WebContent/ver_resultados.jsp
+++ b/EjercitarWeb/WebContent/ver_resultados.jsp
@@ -16,6 +16,14 @@
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/themes/ui-lightness/jquery-ui.css" type="text/css" />
<%@page import="java.util.List" import="model.Tema" import="model.Alumno" import="model.Profesor"%>
+<style>
+ .ui-tabs-vertical { width: 55em; }
+ .ui-tabs-vertical .ui-tabs-nav { padding: .2em .1em .2em .2em; float: left; width: 12em; }
+ .ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; border-bottom-width: 1px !important; border-right-width: 0 !important; margin: 0 -1px .2em 0; }
+ .ui-tabs-vertical .ui-tabs-nav li a { display:block; }
+ .ui-tabs-vertical .ui-tabs-nav li.ui-tabs-active { padding-bottom: 0; padding-right: .1em; border-right-width: 1px; border-right-width: 1px; }
+ .ui-tabs-vertical .ui-tabs-panel { padding: 1em; float: right; width: 40em;}
+ </style>
</head>
<body>
@@ -30,10 +38,10 @@
<div id=tabs-1 >
<div id="resultados"> </div>
<br>
- Promedio de Temas
+ <h2>Promedio de Temas </h2>
<div id="grafico_temas"> </div>
<br>
- Promedio de Conceptos
+ <h2>Promedio de Conceptos</h2>
<div id="resultados_conceptos"> </div>
<div id="grafico_conceptos"> </div>
@@ -55,8 +63,7 @@
<br>
<div id="tabla" >
-
-
+
</div>
</form>
@@ -77,16 +84,17 @@
</fieldset>
<div id="tabs-individual">
<ul>
- <li><a href="#tabs-11">General</a></li>
+ <li><a href="#tabs-11">Datos Personales</a></li>
<li><a href="#tabs-22">Entorno Personal </a></li>
- <li><a href="#tabs-33">Individual</a></li>
+ <li><a href="#tabs-33">Resultados</a></li>
</ul>
<div id=tabs-11>
- <p> holas1 </p>
+ <div id="datos_personales">Cargando.. </div>
</div>
<div id=tabs-22>
+
<div id="datos_entorno"> </div>
Estados de animo
<div id="grafico_animo"> </div>
@@ -100,7 +108,15 @@
</div>
<div id=tabs-33>
- <p> holas3 </p>
+
+ <div id="resultados_ind"> </div>
+ <br>
+ <h2>Probabilidades de Temas </h2>
+ <div id="grafico_temas_ind"> </div>
+ <br>
+ <h2>Probabilidades de Conceptos</h2>
+ <div id="resultados_conceptos_ind"> </div>
+ <div id="grafico_conceptos_ind"> </div>
</div>
</div>
@@ -120,6 +136,7 @@
function cargarInformacionAlumno(asignatura){
var alumno_id=$("#alumnos").val(); //ya se tiene el objeto select
$("#tabs-individual").slideToggle();
+ $("#datos_personales").load("CargarDatosPersonalesServlet", {alumno_id:alumno_id});
$("#datos_entorno").load("CargarEntornoPersonalServlet", {alumno_id:alumno_id}, function() {
$('#animo_grafico').attc();
@@ -127,6 +144,11 @@
$('#hogar_grafico').attc();
}
);
+ $("#resultados_ind").load("CargarResultadosIndividualesServlet", {asignatura:asignatura, alumno_id:alumno_id}, function() {
+
+ $('#tema_grafico_ind').attc();
+ $('#concepto_grafico_ind').attc();}
+ );
}
function cargarResultadosGenerales(asignatura){
@@ -142,7 +164,9 @@
}
$( "#tabs" ).tabs();
- $( "#tabs-individual" ).tabs();
+ //$( "#tabs-individual" ).tabs();
+ $( "#tabs-individual" ).tabs().addClass( "ui-tabs-vertical ui-helper-clearfix" );
+
$(document).ready(function() {
@@ -153,6 +177,7 @@
</script>
+
</body>
</html> \ No newline at end of file
diff --git a/EjercitarWeb/src/src/CargarDatosPersonalesServlet.java b/EjercitarWeb/src/src/CargarDatosPersonalesServlet.java
new file mode 100644
index 0000000..2d89b45
--- /dev/null
+++ b/EjercitarWeb/src/src/CargarDatosPersonalesServlet.java
@@ -0,0 +1,73 @@
+package src;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.List;
+
+import javax.ejb.EJB;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import model.Alumno;
+import model.Sesion;
+
+import beans.AdministracionBeanRemote;
+
+/**
+ * Servlet implementation class CargarDatosPersonalesServlet
+ */
+@WebServlet("/CargarDatosPersonalesServlet")
+public class CargarDatosPersonalesServlet extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ @PersistenceContext
+ EntityManager em;
+
+ @EJB
+ AdministracionBeanRemote abr;
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public CargarDatosPersonalesServlet() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+
+ response.setContentType("text/html;charset=UTF-8");
+ PrintWriter out = response.getWriter();
+
+ String alumno_id = request.getParameter("alumno_id");
+ Alumno alumno = em.find(Alumno.class, Integer.valueOf(alumno_id));
+
+ try {
+
+ out.printf("<h1>" + alumno.getNombre() + " " + alumno.getApellido() + "</h1>");
+
+
+ out.printf("<p>" + alumno.getFechaNacimiento() + "</p>");
+
+ } finally {
+ out.close();
+ }
+
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ doGet(request, response);
+ }
+
+}
diff --git a/EjercitarWeb/src/src/CargarResultadosGeneralesTemasServlet.java b/EjercitarWeb/src/src/CargarResultadosGeneralesTemasServlet.java
index ad74aee..fe88277 100644
--- a/EjercitarWeb/src/src/CargarResultadosGeneralesTemasServlet.java
+++ b/EjercitarWeb/src/src/CargarResultadosGeneralesTemasServlet.java
@@ -94,9 +94,9 @@ public class CargarResultadosGeneralesTemasServlet extends HttpServlet {
try {
- out.printf(asignatura.getNombre());
+ out.printf("<h1>" + asignatura.getNombre() + "</h2>");
out.printf("</br>");
- out.printf("Promedio: ");
+ out.printf("Promedio general: ");
out.print(promedioGeneral);
out.printf("<table title=\"Resultados\"" +
diff --git a/EjercitarWeb/src/src/CargarResultadosIndividualesServlet.java b/EjercitarWeb/src/src/CargarResultadosIndividualesServlet.java
new file mode 100644
index 0000000..e37eb6c
--- /dev/null
+++ b/EjercitarWeb/src/src/CargarResultadosIndividualesServlet.java
@@ -0,0 +1,183 @@
+package src;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.ejb.EJB;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import model.Alumno;
+import model.Asignatura;
+import model.Concepto;
+import model.Curso;
+import model.Tema;
+
+import beans.AdministracionBeanRemote;
+
+/**
+ * Servlet implementation class CargarResultadosIndividualesServlet
+ */
+@WebServlet("/CargarResultadosIndividualesServlet")
+public class CargarResultadosIndividualesServlet extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+
+ @PersistenceContext
+ EntityManager em;
+
+ @EJB
+ AdministracionBeanRemote abr;
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public CargarResultadosIndividualesServlet() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+ response.setContentType("text/html;charset=UTF-8");
+ PrintWriter out = response.getWriter();
+ //int idTema = Integer.valueOf(request.getParameter("tema_id"));
+ //Tema tema = em.find(Tema.class, idTema);
+
+ String idAsignatura = request.getParameter("asignatura");
+ Asignatura asignatura = em.find(Asignatura.class, Integer.valueOf(idAsignatura));
+ String idAlumno = request.getParameter("alumno_id");
+ Alumno alumno = em.find(Alumno.class, Integer.valueOf(idAlumno));
+
+
+ List<Tema> temaList = em.createQuery("Select e from Tema e where e.asignatura = :asignatura")
+ .setParameter("asignatura", asignatura).getResultList();
+ List<Concepto> conceptoList = new ArrayList();
+ for (Tema tema : temaList) {
+ conceptoList.addAll(em.createQuery("Select e from Concepto e where e.tema = :tema")
+ .setParameter("tema", tema).getResultList());
+ }
+
+ try {
+
+
+ out.printf("<h1>" + asignatura.getNombre() + "</h2>");
+ out.printf("</br>");
+ out.printf("Promedio general: ");
+ out.print(abr.getValorNodoRed(asignatura.getNombre(), asignatura.getIdAsignatura(), alumno.getIdAlumno()));
+
+ out.printf("<table title=\"Resultados\"" +
+ "id=\"tema_grafico_ind\"" +
+ "summary=\"tema\"" +
+ "data-attc-createChart=\"true\" " +
+ "data-attc-colDescription=\"tema\" " +
+ "data-attc-colValues=\"promedio\"" +
+ "data-attc-location=\"grafico_temas_ind\" " +
+ "data-attc-hideTable=\"true\" " +
+ "data-attc-type=\"column\" " +
+ "data-attc-googleOptions=" + "\'" + "{\"is3D\":true}\'" +
+ "data-attc-controls='{\"showHide\":false,\"create\":false,\"chartType\":false}'>");
+ out.printf("<thead>");
+ out.printf("<tr>");
+
+
+ out.printf("<th id=\"tema\">");
+ out.printf("Tema");
+ out.printf("</th>");
+
+ out.printf("<th id=\"promedio\">");
+ out.printf("Promedio");
+ out.printf("</th>");
+
+ out.printf("</tr>");
+ out.printf("</thead>");
+ out.printf("<tbody>");
+
+ int c = 0;
+ for (Tema tema : temaList){
+ out.printf("<tr>");
+
+ out.printf("<td class='lname'>");
+ out.printf(tema.getNombre());
+ out.printf("</td>");
+
+ out.printf("<td class='lname'>");
+ out.printf(abr.getValorNodoRed(tema.getNombre(), asignatura.getIdAsignatura(), alumno.getIdAlumno()));
+ out.printf("</td>");
+
+ out.printf("</tr>");
+ }
+ out.printf("</tbody>");
+ out.printf("</table>");
+
+ // Tabla conceptos
+ out.printf("<table title=\"Resultados\"" +
+ "id=\"concepto_grafico_ind\"" +
+ "summary=\"concepto\"" +
+ "data-attc-createChart=\"true\" " +
+ "data-attc-colDescription=\"concepto\" " +
+ "data-attc-colValues=\"promedio\"" +
+ "data-attc-location=\"grafico_conceptos_ind\" " +
+ "data-attc-hideTable=\"true\" " +
+ "data-attc-type=\"column\" " +
+ "data-attc-googleOptions=" + "\'" + "{\"is3D\":true}\'" +
+ "data-attc-controls='{\"showHide\":false,\"create\":false,\"chartType\":false}'>");
+ out.printf("<thead>");
+ out.printf("<tr>");
+
+
+ out.printf("<th id=\"concepto\">");
+ out.printf("Concepto");
+ out.printf("</th>");
+
+ out.printf("<th id=\"promedio\">");
+ out.printf("Promedio");
+ out.printf("</th>");
+
+ out.printf("</tr>");
+ out.printf("</thead>");
+ out.printf("<tbody>");
+
+ //int c = 0;
+ for (Concepto concepto : conceptoList){
+ out.printf("<tr>");
+
+ out.printf("<td class='lname'>");
+ out.printf(concepto.getNombre());
+ out.printf("</td>");
+
+ out.printf("<td class='lname'>");
+ out.printf(abr.getValorNodoRed(concepto.getNombre(), asignatura.getIdAsignatura(), alumno.getIdAlumno()));
+ out.printf("</td>");
+
+ out.printf("</tr>");
+ }
+ out.printf("</tbody>");
+ out.printf("</table>");
+
+
+ } finally {
+ out.close();
+ }
+
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
+ */
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+ doGet(request, response);
+ }
+
+}