Rev 1967 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester" %>
<%@ page
import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--
@section objeto com seccoes e componentes
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
-->
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_CourseUnitsReportsSection">
<div class="sections">
<a name="indexCus"></a>
<span ng-repeat="cu in section.sections" ng-init="cu.taxaAprovacao = 100 * cu.courseUnitEvaluation.numAlunosAprovTotal/(cu.courseUnitEvaluation.numAlunosInscritos - cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao)">
<a href="#cu{{$index}}" ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent < 100) || cu.taxaAprovacao < 75 || !cu.courseUnitEvaluation.closed || !cu.courseUnitEvaluation.teacherComplete}">
{{cu.title}}
</a> |
</span>
<div ng-repeat="cu in section.sections"
class="section panel-primary">
<a name="cu{{$index}}"></a>
<span ng-if="$index != 0" class="glyphicon glyphicon-backward" ></span><a ng-if="$index != 0" href="#indexCus"> Voltar atrás</a>
<div class="panel-heading"><h2>{{cu.title}}</h2></div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Estado do Relatório</label></h3></div>
<div ng-if="cu.courseUnitEvaluation.closed">
Entregue e Aceite
</div>
<div class="alert-danger" ng-if="cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Entregue mas não foi aprovado pela comissão
</div>
<div class="alert-danger" ng-if="!cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
Não foi entregue pelo docente para validação
</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Resultados</label></h3></div>
<div>
<table class="tablesorter-blue" width="100%">
<tr>
<th rowspan="2">
Nº Alunos Inscritos
</th>
<th rowspan="2">
Nº de alunos sem elementos de avaliação
</th>
<th colspan="5">
Nº de alunos aprovados em
</th>
<th colspan="2">
Aprovados com a classificação entre 10 e 13 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 14 e 16 valores
</th>
<th colspan="2">
Aprovados com a classificação entre 17 e 20 valores
</th>
</tr>
<tr>
<th>Avaliação de frequência</th>
<th>Exame Época Normal</th>
<th>Exame Época Recurso</th>
<th>Exame Época Especial</th>
<th>Total</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
<th>Nº</th>
<th>%</th>
</tr>
<tr>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosInscritos}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovFrequencia}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovNormal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovRecurso}}
</td>
<td style="text-align: center">
{{cu.courseUnitEvaluation.numAlunosAprovEspecial}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprovTotal}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1013Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1416Percent}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720}}
</td>
<td class="text-center">
{{cu.courseUnitEvaluation.numAlunosAprov1720Percent}}
</td>
</tr>
</table>
</div>
</div>
<div style="padding-left:20px" >
<div><h3><label class="label label-primary">Taxa de Aprovação</label></h3></div>
<div ng-class="{ 'alert-danger': cu.taxaAprovacao < 75 }">{{cu.taxaAprovacao}}%</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação dos resultados quantitativos obtidos pelos estudantes</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoQuantitivos}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do funcionamento da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoUC}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Percentagem de cumprimento do programa da UC</label></h3></div>
<div ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent < 100) }">
{{cu.courseUnitEvaluation.cumprimentoProgramaPercent}}%
</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Apreciação do cumprimento do programa da UC</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma}}</div>
</div>
<div style="padding-left:20px">
<div><h3><label class="label label-primary">Conclusões</label></h3></div>
<div>{{cu.courseUnitEvaluation.qualConclusoes}}</div>
</div>
</div>
</div>
</script>
<style>
.dtpstats td, .dtpstats th{
text-align: center !important;
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_reportucsummary_UnitsDtpTable">
<div class="sections">
<table class="table dtpstats">
<thead>
<tr>
<th rowspan="2">Unidade Curricular</th>
<th colspan="2">Planeamento</th>
<th rowspan="2">Ficha Curricular</th>
<th rowspan="2">Sumários</th>
<th colspan="2">Avaliação</th>
<th rowspan="2">Relatório de Avaliação</th>
<th rowspan="2">Inquerito Pedagógico</th>
</tr>
<tr>
<th>Conteúdos</th>
<th>Calendarização</th>
<th>Enunciados</th>
<th>Pautas</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="9">Semestre 1</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester1.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
<tr>
<th colspan="9">Semestre 2</th>
</tr>
<tr ng-repeat="dtpStat in comp.semester2.courseUnitDtpStats">
<td>{{dtpStat.name}}</td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox" ng-model="dtpStat.planeamentoConteudos"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox" ng-model="dtpStat.planeamentoCalendarizacao"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox" ng-model="dtpStat.sumarios"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox" ng-model="dtpStat.avaliacaoEnunciados"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox" ng-model="dtpStat.avaliacaoPautas"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox" ng-model="dtpStat.relatorio"/></td>
<td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox" ng-model="dtpStat.inquerito"/></td>
</tr>
</tbody>
</table>
</div>
</script>
<style>
.learning td
{
font-size: 0.7em;
}
.learning td input{
width: 50px;
}
.learning td input:read-only{
width: 50px;
background-color: #cccccc;
}
.learning tr.year td {
vertical-align: top;
background-color: #aaaaaa;
font-weight: bold;
}
.learning tr.period td {
vertical-align: top;
background-color: #dfdfdf;
}
</style>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_UnitsLearningResultsTable">
<unitslearningresultstable>
</unitslearningresultstable>
</script>
<script>
angular.module("courseReportApp").directive('boundModel', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, ngModel) {
scope.$watch(attrs.boundModel, function(newValue, oldValue) {
if(newValue != oldValue) {
ngModel.$setViewValue(newValue);
ngModel.$render();
}
});
}
}
});
angular.module("courseReportApp").directive('unitslearningresultstable', function() {
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.checkedDocuments = [];
$scope.checkUnit = function(document,collection)
{
if(document.checked)
{
var docContainer =
{
"document" : document,
"collection" : collection
}
$scope.checkedDocuments.push(docContainer);
}
else
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
if(documentContainer.document == document)
{
var index = $scope.checkedDocuments.indexOf(documentContainer);
$scope.checkedDocuments.splice(index, 1);
}
});
}
}
$scope.changeDocumentCollection = function(collection)
{
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
collection.ucs.push(documentContainer.document);
delete documentContainer.document.checked;
});
angular.forEach($scope.checkedDocuments, function(documentContainer, key)
{
var index = documentContainer.collection.ucs.indexOf(documentContainer.document);
documentContainer.collection.ucs.splice(index, 1);
});
$scope.checkedDocuments = [];
}
$scope.avg = function(field,container, childs)
{
if(!childs || childs.length == 0)
return 0;
var sum = 0;
var c;
for(c in childs)
{
if(childs[c] && childs[c][field])
sum += 1*childs[c][field];
}
container[field] = sum / childs.length;
return container[field];
}
$scope.percent = function(n,total)
{
if(!n || n == 0 || !total || total == 0)
return 0;
return 100 * n / total;
}
$scope.reprovados = function(comp)
{
if(comp.alunosInscritos && comp.semElementos && comp.aprovados)
return comp.alunosInscritos - comp.semElementos - comp.aprovados;
return 0;
}
$scope.removeComponent = function(index,list)
{
list.splice(index,1);
}
$scope.hasYearUnits = function(year)
{
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
return false;
}
$scope.isInvalidAnfHaveUcs = function(year,years,index)
{
if(year.ano > 0)
return false;
var s;
for(s in year.semesters)
{
if(year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
return true;
}
years.splice(index,1);
return false;
}
$scope.addUc = function(semestre)
{
semestre.ucs.push(
{
"@class" : "<%=UnitsLearningResultUc.class.getName()%>",
manual : true,
periodo : semestre.semestre,
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
sigesCode : 0
}
);
}
$scope.addAno = function(comp)
{
if(!comp.years)
comp.years = [];
comp.years.push(
{
ano : 1,
"@class" : "<%=UnitsLearningResultYear.class.getName()%>",
manual : true,
"alunosInscritos": 0,
"aprovados": 0,
"aprovados1013": 0,
"aprovados1013Percent": 0,
"aprovados1416": 0,
"aprovados1416Percent": 0,
"aprovados1720": 0,
"aprovados1720Percent": 0,
"aprovadosPercent": 0,
"cumprimentoProgramaPercent": 0,
"reprovados": 0,
"reprovadosPercent": 0,
"semElementos": 0,
"semElementosPercent": 0,
semesters : [
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre : "S1",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
},
{
"@class" : "<%=UnitsLearningResultSemester.class.getName()%>",
manual : true,
semestre: "S2",
alunosInscritos: 0,
aprovados: 0,
aprovados1013: 0,
aprovados1013Percent: 0,
aprovados1416: 0,
aprovados1416Percent: 0,
aprovados1720: 0,
aprovados1720Percent: 0,
aprovadosPercent: 0,
cumprimentoProgramaPercent: 0,
reprovados: 0,
reprovadosPercent: 0,
semElementos: 0,
semElementosPercent: 0,
ucs : []
}
]
}
);
}
},
templateUrl: function(elem,attrs) {
return "unitslearningresultstable";
}
}
});
</script>
<script type="text/ng-template" id="unitslearningresultstable">
<div class="sections">
<button class="btn btn-success" ng-click="addAno(comp)"><span class="glyphicon glyphicon-plus"></span> Ano Manual</button>
<table class="table learning">
<thead>
<tr>
<th rowspan="2">Mover</th>
<th rowspan="2">Código</th>
<th rowspan="2">Unidade Curricular</th>
<th rowspan="2">Cumprimento do Programa</th>
<th rowspan="2">Alunos Inscritos</th>
<th colspan="2">Sem Elementos</th>
<th colspan="2">Reprovados</th>
<th colspan="2">Aprovados</th>
<th colspan="2">Aprovados 10-13</th>
<th colspan="2">Aprovados 14-16</th>
<th colspan="2">Aprovados 17-20</th>
</tr>
<tr>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
<th>N</th>
<th>%</th>
</tr>
</thead>
<tbody>
<tr colspan="17" ng-if="false" ng-repeat-start="year in comp.years"></tr>
<tr class="year">
<td colspan="3" ng-if="year.ano > 0">
<button ng-disabled="hasYearUnits(year)" class="btn btn-danger btn-xs" ng-click="removeComponent($index,comp.years)"><span class="glyphicon glyphicon-remove"></span></button>
<span ng-if="!year.manual">{{year.ano}}ª ano</span>
<span ng-if="year.manual">
<select ng-model="year.ano" ng-options="c.v as c.n for c in [{v:1,n:'1º Ano'},{v:2,n:'2º Ano'},{v:3,n:'3º Ano'},{v:4,n:'4º Ano'},{v:5,n:'5º Ano'}]">
</select>
</span>
</td>
<td colspan="3" style="font-size: 1.0em !important" ng-if="isInvalidAnfHaveUcs(year,comp.years,$index)">
Unidades que não constam do plano (Verifique a situação com os serviços Académicos antes de continuar)
poderão constar de um plano antigo ou ter o código siges desatualizado.
</td>
<td><input readonly="true" type="number" ng-model="year.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.alunosInscritos" bound-model="avg('alunosInscritos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementos" bound-model="avg('semElementos',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.semElementosPercent" bound-model="percent(year.semElementos,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovados" bound-model="reprovados(year)"></td>
<td><input readonly="true" type="number" ng-model="year.reprovadosPercent" bound-model="percent(year.reprovados,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados" bound-model="year.aprovados1013*1 + year.aprovados1416*1 + year.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="year.aprovadosPercent" bound-model="percent(year.aprovados,year.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1013" bound-model="avg('aprovados1013',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1013Percent" bound-model="percent(year.aprovados1013,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416" bound-model="avg('aprovados1416',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1416Percent" bound-model="percent(year.aprovados1416,year.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720" bound-model="avg('aprovados1720',year,year.semesters)"></td>
<td><input readonly="true" type="number" ng-model="year.aprovados1720Percent" bound-model="percent(year.aprovados1720,year.aprovados)"></td>
</tr>
<tr ng-if="false" ng-repeat-start="s in year.semesters" ></tr>
<tr class="period" ng-if="year.ano > 0 || s.ucs.length > 0">
<td colspan="3" class="period">Semestre {{s.semestre}} <button ng-click="changeDocumentCollection(s)" data-toggle="tooltip" title="Mover unidades para aqui" class="btn btn-xs btn-warning" ng-show="checkedDocuments.length"><span class="glyphicon glyphicon-arrow-left"></span></button>
<button class="btn btn-success pull-right" ng-click="addUc(s)"><span class="glyphicon glyphicon-plus"></span> UC Manual</button>
</td>
<td><input readonly="true" type="number" ng-model="s.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.alunosInscritos" bound-model="avg('alunosInscritos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementos" bound-model="avg('semElementos',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.semElementosPercent" bound-model="percent(s.semElementos,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovados" bound-model="reprovados(s)"></td>
<td><input readonly="true" type="number" ng-model="s.reprovadosPercent" bound-model="percent(s.reprovados,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados" bound-model="s.aprovados1013*1 + s.aprovados1416*1 + s.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="s.aprovadosPercent" bound-model="percent(s.aprovados,s.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1013" bound-model="avg('aprovados1013',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1013Percent" bound-model="percent(s.aprovados1013,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416" bound-model="avg('aprovados1416',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1416Percent" bound-model="percent(s.aprovados1416,s.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720" bound-model="avg('aprovados1720',s,s.ucs)"></td>
<td><input readonly="true" type="number" ng-model="s.aprovados1720Percent" bound-model="percent(s.aprovados1720,s.aprovados)"></td>
</tr>
<tr ng-repeat="u in s.ucs" ng-class="{'alert-danger': u.error}" >
<td><input ng-model="u.error" type="hidden" bound-model="u.alunosInscritos < (u.aprovados*1 + u.semElementos*1)">
<input ng-model="u.checked" ng-click="checkUnit(u,s)" type="checkbox"></td>
<td><input type="text" ng-readonly="!u.manual || u.manual == false" ng-model="u.sigesCode"></td>
<td>
<input type="text" style="width: 150px" ng-if="!(!u.manual || u.manual == false)" ng-model="u.name">
<span ng-if="(!u.manual || u.manual == false)">{{u.name}}</span>
<button class="btn btn-danger btn-xs pull-right" ng-if="!(!u.manual || u.manual == false)" ng-click="removeComponent(index,s.ucs)"><span class="glyphicon glyphicon-remove"></span></button>
</td>
<td><input type="number" ng-model="u.cumprimentoProgramaPercent"></td>
<td><input type="number" ng-model="u.alunosInscritos"></td>
<td><input type="number" ng-model="u.semElementos"></td>
<td><input readonly="true" type="number" ng-model="u.semElementosPercent" bound-model="percent(u.semElementos,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovados" bound-model="reprovados(u)"></td>
<td><input readonly="true" type="number" ng-model="u.reprovadosPercent" bound-model="percent(u.reprovados,u.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados" bound-model="u.aprovados1013*1 + u.aprovados1416*1 + u.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="u.aprovadosPercent" bound-model="percent(u.aprovados,u.alunosInscritos)"></td>
<td><input type="number" ng-model="u.aprovados1013"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1013Percent" bound-model="percent(u.aprovados1013,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1416"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1416Percent" bound-model="percent(u.aprovados1416,u.aprovados)"></td>
<td><input type="number" ng-model="u.aprovados1720"></td>
<td><input readonly="true" type="number" ng-model="u.aprovados1720Percent" bound-model="percent(u.aprovados1720,u.aprovados)"></td>
</tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr ng-if="false" ng-repeat-end></tr>
<tr class="year">
<td colspan="3">Resultados Globais</td>
<td><input readonly="true" type="number" ng-model="comp.cumprimentoProgramaPercent" bound-model="avg('cumprimentoProgramaPercent',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.alunosInscritos" bound-model="avg('alunosInscritos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementos" bound-model="avg('semElementos',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.semElementosPercent" bound-model="percent(comp.semElementos,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovados" bound-model="reprovados(comp)"></td>
<td><input readonly="true" type="number" ng-model="comp.reprovadosPercent" bound-model="percent(comp.reprovados,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados" bound-model="comp.aprovados1013*1 + comp.aprovados1416*1 + comp.aprovados1720*1"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovadosPercent" bound-model="percent(comp.aprovados,comp.alunosInscritos)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1013" bound-model="avg('aprovados1013',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1013Percent" bound-model="percent(comp.aprovados1013,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416" bound-model="avg('aprovados1416',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1416Percent" bound-model="percent(comp.aprovados1416,comp.aprovados)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720" bound-model="avg('aprovados1720',comp,comp.years)"></td>
<td><input readonly="true" type="number" ng-model="comp.aprovados1720Percent" bound-model="percent(comp.aprovados1720,comp.aprovados)"></td>
</tr>
</tbody>
</table>
<%--<pre class="code">{{ comp | json }}</pre>--%>
</div>
</script>
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg">
<globallearningresultschartimg>
</globallearningresultschartimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartimg', function() {
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartImg",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
comp.image = repositoryFile4JsonView;
comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function(){}
);
}
},
templateUrl: function(elem,attrs) {
return "globallearningresultschartimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartimg">
<div class="imageComponent component">
<div class="componentBody">
<div class="form-group clearfix">
<label class="col-md-2 control-label">Legenda</label>
<div class="col-md-10">
<input type="text" class="form-control" rows="10" ng-model="comp.title">
</div>
</div>
<div class="form-group clearfix">
<div class="col-md-2 control-label">
<button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Gráfico</button>
</div>
<div class="col-md-10">
<label ng-if="comp.image.identifier"> Limites do PDF </label>
<div ng-if="comp.image.identifier" style="text-align: center; width: 595px; border: 1px solid black; padding: 45px">
<center>
<div style="width: 200px;height: 200px; max-width: 500px; max-height: 750px" resizable on-resize="resize($evt, $ui, comp)">
<img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
<img ng-if="!comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
</div>
</div>
</div>
</div>
</script>
<!-- Johny -->
<script type="text/ng-template" id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg">
<globallearningresultschartyearimg>
</globallearningresultschartyearimg>
</script>
<script>
angular.module("courseReportApp").directive('globallearningresultschartyearimg', function() {
return {
restrict: 'E',
link: function($scope, element, attrs)
{
$scope.generateChart = function(comp)
{
widgetCallWithActionParameters(
"<%=request.getContextPath()%>/user/courseReport.do",
"generateGlobalLearningResultsChartYearImg",
{
"courseReportDocument" : BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
},
"#courseReportApp",
function(repositoryFile4JsonView)
{
comp.image = repositoryFile4JsonView;
comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime();
angular.element($("#courseReportApp")).scope().$apply();
},
function(){}
);
}
},
templateUrl: function(elem,attrs) {
return "globallearningresultschartyearimg";
}
}
});
</script>
<script type="text/ng-template" id="globallearningresultschartyearimg">
<div class="imageComponent component">
<div class="componentBody">
<div class="form-group clearfix">
<label class="col-md-2 control-label">Legenda</label>
<div class="col-md-10">
<input type="text" class="form-control" rows="10" ng-model="comp.title">
</div>
</div>
<div class="form-group clearfix">
<div class="col-md-2 control-label">
<button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Gráfico</button>
</div>
<div class="col-md-10">
<label ng-if="comp.image.identifier"> Limites do PDF </label>
<div ng-if="comp.image.identifier" style="text-align: center; width: 595px; border: 1px solid black; padding: 45px">
<center>
<div style="width: 200px;height: 200px; max-width: 500px; max-height: 750px" resizable on-resize="resize($evt, $ui, comp)">
<img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
<img ng-if="!comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}">
</div>
(Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
</center>
</div>
</div>
</div>
</div>
</div>
</script>
Generated by GNU Enscript 1.6.5.2.