4,8 → 4,9 |
<%@ page import="pt.estgp.estgweb.domain.CourseStudiesPlanImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="pt.estgp.estgweb.services.courses.CoursesService" %> |
<%@ page import="pt.estgp.estgweb.services.courses.xsd.Curso" %> |
<%@ page import="pt.estgp.estgweb.services.courses.xsd.CursoImpl" %> |
<%@ page import="pt.estgp.estgweb.web.form.courses.CourseStudiesPlansAdminForm" %> |
<%@ page import="java.util.List" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
15,6 → 16,12 |
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm"%> |
<% |
|
|
//TODO NOVO JSON |
//O SALVAR TEM DE SER UMA FuncTION E DEIXAR DE SER UM SUBMIT PARA PODERMOS TRASNFERIR O JSON |
//PARA UMA VAR DE TEXTO |
|
//todo temos de ter aqui o id do curso para o carregar aqui mesmo |
|
//se queremos barras de navegação então temos de ter ser acedidos de um |
79,7 → 86,7 |
*/ |
|
%> |
<div class="panel panel-default"> |
<div class="panel panel-default" id="planoApp" ng-app="planoApp" ng-controller="planoController"> |
<div class="panel-heading"> |
Edição do plano de estudos. Versão <%=versaoPlano%> <%=ultimaVersao? "(<u>é a versão em vigor</u>)":""%> do curso de <%=course.getName()%> (<%=course.getCode()%>) |
</div> |
213,7 → 220,7 |
<p>exemplo para a ESTG: http://www.estgp.pt/startLoadCourseUnitProgramSiges.do?unitCode={SIGES_UNIT}&courseCode={SIGES_CURSO}&semestre={UNIT_SEMESTRE}</p> |
<p>Nenhum dos campos é obrigatório, o sistema substitui se existir no padrão, Na estg o Semestre é obrigatório para diferenciar unidades que são lecionadas em ambos os semestres</p> |
<p>O semestre presente neste sistema e que vai ser preenchido vai de S1 a S6 e de T1 a T8 ou A, portanto se o semestre for usado à que ter isto em atenção</p> |
<input type="text" class="form-control" id="urlPadraoFicha" placeholder="http://exemplo.com/exemplo/{SIGES_CURSO}/{SEMESTRE}/{SIGES_UNIT}.pdf"> |
<input type="text" class="form-control" id="urlPadraoFicha" placeholder="http://exemplo.com/exemplo/{SIGES_CURSO}/{UNIT_SEMESTRE}/{SIGES_UNIT}.pdf"> |
</div> |
</div> |
<div class="form-group"> |
236,14 → 243,21 |
|
<% |
CourseStudiesPlansAdminForm courseStudiesPlansAdminForm = (CourseStudiesPlansAdminForm) request.getAttribute("CourseStudiesPlansAdminForm"); |
//Isto corre sempre que se entra no Editor a primeira vez e não apenas quando é um plano novo |
//Form ainda não iniciado vai iniciar é a primeira vez |
if(courseStudiesPlansAdminForm.getCourseStudiesPlan().getId() <= 0) |
{ |
courseStudiesPlansAdminForm.setCourseStudiesPlan(planoEdicao); |
courseStudiesPlansAdminForm.setCourseId(courseId); |
courseStudiesPlansAdminForm.setVersaoVigor(ultimaVersao); |
courseStudiesPlansAdminForm.setPlanoEstudos(new CoursesService().loadCursoPlanoFromXml(planoEdicao.getXml())); |
Curso cPlanoDoXml2Json = new CoursesService().loadCursoPlanoFromXml(planoEdicao.getXml()); |
if(cPlanoDoXml2Json == null) |
courseStudiesPlansAdminForm.setPlanoEstudos(new CursoImpl()); |
else |
courseStudiesPlansAdminForm.setPlanoEstudos(new CoursesService().loadCursoPlanoFromXml(planoEdicao.getXml())); |
} |
//LINHA NOVA PARA JSON DE INTERFACE |
courseStudiesPlansAdminForm.setPlanoEstudosJsonInterface(CursoImpl.toJson(courseStudiesPlansAdminForm.getPlanoEstudos())); |
%> |
<logic:notEmpty name="CourseStudiesPlansAdminForm" property="courseStudiesPlan.importLog"> |
<div class="panel panel-warning"> |
269,7 → 283,7 |
<html:file styleClass="form-control" property="formFileImport"/> |
</div> |
</div> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="set($('#CourseStudiesPlansAdminForm').get(0),'importarPlano');$('#CourseStudiesPlansAdminForm').get(0).submit();"> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="angular.element($('#planoApp')).scope().fundirPlano();"> |
Importar o ficheiro sobrepondo esta versão do plano |
</button> |
</div> |
284,7 → 298,7 |
<html:file styleClass="form-control" property="formFileImport2"/> |
</div> |
</div> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="set($('#CourseStudiesPlansAdminForm').get(0),'mergePlano');$('#CourseStudiesPlansAdminForm').get(0).submit();"> |
<button class="btn btn-warning" type="button" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai sobrepor os dados do plano de estudos atual com os dados da versão escolhida!! Tem a certeza que deseja prosseguir?" data-script="angular.element($('#planoApp')).scope().fundirPlano();"> |
FUNDIR o ficheiro com esta versão do plano |
</button> |
</div> |
297,12 → 311,7 |
|
|
<div class="panel panel-default"> |
<div class="panel-heading">Plano de Estudos |
|
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" onclick="set(this.form,'addNewSemestre');this.form.submit()"> |
<span class="glyphicon glyphicon-plus"> </span> Semestre |
</button> |
</div> |
<div class="panel-heading">Plano de Estudos</div> |
<div class="panel-body"> |
|
|
312,6 → 321,7 |
<html:hidden property="courseStudiesPlan.id"/> |
<html:hidden styleId="semestreId" property="semestreId"/> |
<html:hidden styleId="perfilId" property="perfilId"/> |
<html:hidden styleId="planoEstudosJsonInterface" property="planoEstudosJsonInterface"/> |
|
<div class="form-group"> |
<label class="control-label col-sm-2">Versão</label> |
329,582 → 339,499 |
|
|
|
<% |
int dummyIndexIdUnidades = 0; |
int dummyIndexPerfilId = 0; |
int dummyIndexSemestreId = 0; |
|
%> |
<script> |
|
function sendUpUnidadeCurricular(dummyIndexId) |
{ |
sendFieldUp("removed",dummyIndexId); |
sendFieldUp("siges",dummyIndexId); |
sendFieldUp("nome",dummyIndexId); |
sendFieldUp("nomeEn",dummyIndexId); |
sendFieldUp("nomeEs",dummyIndexId); |
sendFieldUp("nomeFr",dummyIndexId); |
|
sendFieldUp("totalHoras",dummyIndexId); |
sendFieldUp("horasContactoT",dummyIndexId); |
sendFieldUp("horasContactoTP",dummyIndexId); |
sendFieldUp("horasContactoP",dummyIndexId); |
sendFieldUp("horasContactoPL",dummyIndexId); |
sendFieldUp("horasContactoPD",dummyIndexId); |
sendFieldUp("horasContactoOT",dummyIndexId); |
sendFieldUp("horasContactoE",dummyIndexId); |
sendFieldUp("horasContactoS",dummyIndexId); |
sendFieldUp("horasContactoTC",dummyIndexId); |
sendFieldUp("horasContactoO",dummyIndexId); |
sendFieldUp("ECTS",dummyIndexId); |
sendFieldUp("urlUnidadeCurricular",dummyIndexId); |
sendFieldUp("urlFichaCurricular",dummyIndexId); |
<div> |
<script> |
var planoApp = angular.module('planoApp', ['ui.tree']); |
GLOBAL_BacoAngularAppDependencies.push('planoApp'); |
planoApp.controller('planoController', function ($scope) { |
$scope.treeOptions = { |
accept: function(sourceNodeScope, destNodesScope, destIndex) { |
|
} |
function sendDownUnidadeCurricular(dummyIndexId) |
{ |
sendFieldDown("removed",dummyIndexId); |
sendFieldDown("siges",dummyIndexId); |
sendFieldDown("nome",dummyIndexId); |
sendFieldDown("nomeEn",dummyIndexId); |
sendFieldDown("nomeEs",dummyIndexId); |
sendFieldDown("nomeFr",dummyIndexId); |
//if(destNodesScope) |
//console.log(destNodesScope); |
//console.log(sourceNodeScope); |
//console.log(destIndex); |
//console.log(destNodesScope.$parent.$modelValue.title); |
//console.log(destNodesScope.$modelValue[0].type); |
if(sourceNodeScope.$modelValue.type == destNodesScope.$modelValue[0].type) |
return true; |
return false; |
}, |
dropped: function(e) { |
//console.log (e.source.nodeScope.$modelValue); |
//alert ("Largado o nó com nome: " + e.source.nodeScope.$modelValue.name + " sobre " + e.dest.nodesScope.$parent.$modelValue.name); |
} |
}; |
$scope.json = <%=courseStudiesPlansAdminForm.getPlanoEstudosJsonInterface()%> |
|
sendFieldDown("totalHoras",dummyIndexId); |
sendFieldDown("horasContactoT",dummyIndexId); |
sendFieldDown("horasContactoTP",dummyIndexId); |
sendFieldDown("horasContactoP",dummyIndexId); |
sendFieldDown("horasContactoPL",dummyIndexId); |
sendFieldDown("horasContactoPD",dummyIndexId); |
sendFieldDown("horasContactoOT",dummyIndexId); |
sendFieldDown("horasContactoE",dummyIndexId); |
sendFieldDown("horasContactoS",dummyIndexId); |
sendFieldDown("horasContactoTC",dummyIndexId); |
sendFieldDown("horasContactoO",dummyIndexId); |
sendFieldDown("ECTS",dummyIndexId); |
sendFieldDown("urlUnidadeCurricular",dummyIndexId); |
sendFieldDown("urlFichaCurricular",dummyIndexId); |
$scope.confView = |
{ |
"SIGES" : true , |
"Nome" : true , |
"ECTS" : true, |
"Total" : true , |
"T" : true , |
"TP" : true , |
"P" : true , |
"PL" : true , |
"PD" : true , |
"OT" : true , |
"E" : true , |
"S" : true , |
"TC" : true , |
"O" : true , |
"URL_UNIDADE" : true , |
"FICHA_URL" : true |
} |
|
} |
function sendFieldUp(field,dummyIndexId){ |
nome = $("#" + field + "dummyIndex" + dummyIndexId).val(); |
$("#" + field + "dummyIndex" + (dummyIndexId)).val($("#" + field + "dummyIndex" + (dummyIndexId-1)).val()); |
$("#" + field + "dummyIndex" + (dummyIndexId-1)).val(nome); |
} |
function sendFieldDown(field,dummyIndexId){ |
nome = $("#" + field + "dummyIndex" + dummyIndexId).val(); |
$("#" + field + "dummyIndex" + (dummyIndexId)).val($("#" + field + "dummyIndex" + (dummyIndexId+1)).val()); |
$("#" + field + "dummyIndex" + (dummyIndexId+1)).val(nome); |
} |
function removeUnit(dummyIndexId) |
{ |
$("#removed" + "dummyIndex" + dummyIndexId).val("true"); |
$("#removed" + "dummyIndex" + dummyIndexId).closest("tr").hide("slow"); |
$scope.submeterForm = function() |
{ |
$("#planoEstudosJsonInterface").val( |
JSON.stringify($scope.json) |
); |
$("#CourseStudiesPlansAdminForm").submit(); |
} |
|
} |
$scope.fundirPlano = function() |
{ |
set($("#CourseStudiesPlansAdminForm").get(0),"mergePlano"); |
$scope.submeterForm(); |
} |
|
function sendUpSemestre(dummySemestreId,form) |
{ |
$(form.semestreId).val("semestreDummy" + dummySemestreId); |
$(form.dispatch).val("sendUpSemestre"); |
form.submit(); |
} |
function sendDownSemestre(dummySemestreId,form) |
{ |
$(form.semestreId).val("semestreDummy" +dummySemestreId); |
$(form.dispatch).val("sendDownSemestre"); |
form.submit(); |
} |
$scope.importarPlano = function() |
{ |
set($("#CourseStudiesPlansAdminForm").get(0),"importarPlano"); |
$scope.submeterForm(); |
} |
$scope.salvar = function() |
{ |
set($("#CourseStudiesPlansAdminForm").get(0),"savePlano"); |
$scope.submeterForm(); |
} |
|
function sendUpPerfil(dummyPerfilId,form,dummySemestreId) |
{ |
form.action = form.action + "#" + dummySemestreId; |
$(form.perfilId).val("perfilDummy" + dummyPerfilId); |
$(form.dispatch).val("sendUpPerfil"); |
form.submit(); |
} |
function sendDownPerfil(dummyPerfilId,form,dummySemestreId) |
{ |
form.action = form.action + "#" + dummySemestreId; |
$(form.perfilId).val("perfilDummy" + dummyPerfilId); |
$(form.dispatch).val("sendDownPerfil"); |
form.submit(); |
} |
</script> |
<nested:notEmpty property="planoEstudos"> |
$scope.removeSemestre = function($index) |
{ |
if(confirm("Tem a certeza que deseja remover o Semestre " + $scope.json.semestre[$index].id + "?")) |
$scope.json.semestre.splice($index,1); |
} |
$scope.removePerfil = function(semestre,$index) |
{ |
if(confirm("Tem a certeza que deseja remover o Perfil " + semestre.perfil[$index].nome + "?")) |
semestre.perfil.splice($index,1); |
} |
$scope.removeUnidade = function(semestreOuperfil,$index) |
{ |
if(confirm("Tem a certeza que deseja remover a Unidade " + semestreOuperfil.unidade[$index].nome + "?")) |
semestreOuperfil.unidade.splice($index,1); |
} |
$scope.addSemestre = function() |
{ |
$scope.json.semestre.push( |
{ |
"id": "S1", |
"notas": null, |
"perfil": [], |
"semestreDesc": "Semestre 1", |
"semestreDescEn": "Semester 1", |
"semestreDescEs": "Semestre 1", |
"semestreDescFr": "Semestre 1", |
"semestreId": null, |
"unidade": [], |
"type" : "semestre" |
} |
); |
} |
|
<div class="panel panel-default"> |
<div class="panel-heading"> |
Informação obtida do Siges (Auxiliar) |
$scope.addPerfil = function(semestre) |
{ |
semestre.perfil.push( |
{ |
"nome": "", |
"perfilId": null, |
"unidade" : [], |
"type" : "perfil" |
} |
); |
} |
|
$scope.addUnidade = function(semestreOuPerfil) |
{ |
semestreOuPerfil.unidade.push( |
{ |
"dep": "", |
"ects": "", |
"nome": "", |
"nomeEn": null, |
"nomeEs": null, |
"nomeFr": null, |
"obs": "", |
"removed": null, |
"siges": null, |
"totalHoras": 0, |
"urlFichaCurricular": "", |
"urlUnidadeCurricular": "", |
"type": "unidade" |
} |
); |
} |
}); |
|
|
</script> |
<div class="panel panel-info"> |
<div class="panel-heading">Configuração de Visualização</div> |
<div class="panel-body"> |
<table class="table"> |
<thead> |
<tr> |
<th>SIGES</th> |
<th>Nome</th> |
<th>ECTS</th> |
<th>Total</th> |
<th>T</th> |
<th>TP</th> |
<th>P</th> |
<th>PL</th> |
<th>PD</th> |
<th>OT</th> |
<th>E</th> |
<th>S</th> |
<th>TC</th> |
<th>O</th> |
|
<th>URL UNIDADE</th> |
<th>FICHA URL</th> |
</tr> |
</thead> |
<tbody> |
<tr> |
<td><input type="checkbox" ng-model="confView.SIGES"></td> |
<td><input type="checkbox" ng-model="confView.Nome"></td> |
<td><input type="checkbox" ng-model="confView.ECTS"></td> |
<td><input type="checkbox" ng-model="confView.Total"></td> |
<td><input type="checkbox" ng-model="confView.T"></td> |
<td><input type="checkbox" ng-model="confView.TP"></td> |
<td><input type="checkbox" ng-model="confView.P"></td> |
<td><input type="checkbox" ng-model="confView.PL"></td> |
<td><input type="checkbox" ng-model="confView.PD"></td> |
<td><input type="checkbox" ng-model="confView.OT"></td> |
<td><input type="checkbox" ng-model="confView.E"></td> |
<td><input type="checkbox" ng-model="confView.S"></td> |
<td><input type="checkbox" ng-model="confView.TC"></td> |
<td><input type="checkbox" ng-model="confView.O"></td> |
<td><input type="checkbox" ng-model="confView.URL_UNIDADE"></td> |
<td><input type="checkbox" ng-model="confView.FICHA_URL"></td> |
</tr> |
</tbody> |
</table> |
</div> |
</div> |
<div class="panel-body"> |
<div class="form-group"> |
<label class="control-label col-sm-2">Ano do Plano no Siges</label> |
<div class="col-sm-10"> |
<html:text styleClass="form-control" property="planoEstudos.anoPlanoSiges"/> |
</div> |
|
<div class="panel panel-default"> |
<div class="panel-heading"> |
Informação obtida do Siges (Auxiliar) |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2">Código do Plano no Siges</label> |
<div class="col-sm-10"> |
<html:text styleClass="form-control" property="planoEstudos.codigoPlanoSiges"/> |
<div class="panel-body"> |
<div class="form-group"> |
<label class="control-label col-sm-2">Ano do Plano no Siges</label> |
<div class="col-sm-10"> |
<input type="text" class="form-control" ng-model="json.anoPlanoSiges"/> |
</div> |
</div> |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2">Linha Descritiva do Plano no Siges</label> |
<div class="col-sm-10"> |
<html:text styleClass="form-control" property="planoEstudos.descPlanoSiges"/> |
<div class="form-group"> |
<label class="control-label col-sm-2">Código do Plano no Siges</label> |
<div class="col-sm-10"> |
<input type="text" class="form-control" ng-model="json.codigoPlanoSiges"/> |
</div> |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2">Linha Descritiva do Plano no Siges</label> |
<div class="col-sm-10"> |
<input type="text" class="form-control" ng-model="json.descPlanoSiges"/> |
</div> |
</div> |
</div> |
</div> |
</div> |
|
<html:hidden property="planoEstudos.siges"/> |
<html:hidden property="planoEstudos.nome"/> |
<html:hidden property="planoEstudos.dep"/> |
<nested:size id="tamanhoSemestre" property="planoEstudos.semestre"/> |
<nested:iterate id="semestre" indexId="semestreIndexId" property="planoEstudos.semestre" type="pt.estgp.estgweb.services.courses.xsd.Curso.Semestre"> |
<div class="panel panel-primary"> |
<div class="panel panel-default"> |
<div class="panel-heading"> |
Semestres |
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" ng-click="addSemestre()"> |
<span class="glyphicon glyphicon-plus"> </span> Semestre |
</button> |
</div> |
<div class="panel-body"> |
<div ui-tree="treeOptions" id="page-content-root"> |
<div ui-tree-nodes ng-model="json.semestre"> |
<div class="panel panel-primary" ng-repeat="s in json.semestre" ui-tree-node ng-include="'semestre_renderer.html'" ng-init="s.type='semestre'"> |
</div> |
</div> |
</div> |
</div> |
|
<script type="text/ng-template" id="semestre_renderer.html"> |
<div class="panel-heading"> |
<div class="form-group"> |
<% |
dummyIndexSemestreId++; |
request.setAttribute("dummyIndexSemestreId",dummyIndexSemestreId); |
%> |
<nested:hidden property="semestreId" value="semestreDummy${dummyIndexSemestreId}"/> |
<div class="col-sm-2"> |
<button type="button" class="btn btn-warning" onclick="sendUpSemestre('<%=dummyIndexSemestreId%>',this.form)"> |
<span class="glyphicon glyphicon-arrow-up"> </span> |
</button> |
<button type="button" class="btn btn-warning" onclick="sendDownSemestre('<%=dummyIndexSemestreId%>',this.form)"> |
<span class="glyphicon glyphicon-arrow-down"> </span> |
</button> |
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai remover todas as unidades e perfis deste semestre!! Tem a certeza que deseja prosseguir? A operação não afeta as unidades nem os cursos do PAE, apenas o plano." data-script="$('#semestreId').val('semestreDummy${dummyIndexSemestreId}');set($('#CourseStudiesPlansAdminForm').get(0),'removeSemestre');$('#CourseStudiesPlansAdminForm').get(0).submit()"> |
|
<div class="col-sm-1"> |
<button type="button" class="btn btn-danger" ng-click="removeSemestre($index)"> |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</div> |
<div class="col-sm-1"> |
<div class="col-sm-4" ui-tree-handle> |
<span class="btn btn-info"><i class="glyphicon glyphicon-resize-vertical"></i></span> |
Duração |
</div> |
<div class="col-sm-3"> |
<script> |
$(document).ready( |
function() |
{ |
showHideSemestreDesc${dummyIndexSemestreId}(); |
} |
); |
|
|
function showHideSemestreDesc${dummyIndexSemestreId}() |
{ |
if($("#selectSemestreDesc${dummyIndexSemestreId}").val()=='OP') |
{ |
$('#semestreDescContainer${dummyIndexSemestreId}').show(); |
} |
else |
{ |
$('#semestreDescContainer${dummyIndexSemestreId}').hide(); |
} |
} |
</script> |
<nested:select styleClass="form-control" property="id" styleId="selectSemestreDesc${dummyIndexSemestreId}" onchange="showHideSemestreDesc${dummyIndexSemestreId}(this)"> |
<html:option value="S1">Semestre 1</html:option> |
<html:option value="S2">Semestre 2</html:option> |
<html:option value="S3">Semestre 3</html:option> |
<html:option value="S4">Semestre 4</html:option> |
<html:option value="S5">Semestre 5</html:option> |
<html:option value="S6">Semestre 6</html:option> |
<html:option value="S7">Semestre 7</html:option> |
<html:option value="S8">Semestre 8</html:option> |
<html:option value="A1">Anual 1</html:option> |
<html:option value="A2">Anual 2</html:option> |
<html:option value="A3">Anual 3</html:option> |
<html:option value="A4">Anual 4</html:option> |
<html:option value="T1">Trimestre 1</html:option> |
<html:option value="T2">Trimestre 2</html:option> |
<html:option value="T3">Trimestre 3</html:option> |
<html:option value="T4">Trimestre 4</html:option> |
<html:option value="T5">Trimestre 5</html:option> |
<html:option value="T6">Trimestre 6</html:option> |
<html:option value="T7">Trimestre 7</html:option> |
<html:option value="T8">Trimestre 8</html:option> |
<html:option value="OP">Opcionais</html:option> |
</nested:select> |
<div id="semestreDescContainer${dummyIndexSemestreId}"> |
Descrição (PT) <nested:text property="semestreDesc" styleClass="form-control"/> |
Descrição (EN) <nested:text property="semestreDescEn" styleClass="form-control"/> |
Descrição (ES) <nested:text property="semestreDescEs" styleClass="form-control"/> |
Descrição (FR) <nested:text property="semestreDescFr" styleClass="form-control"/> |
<select class="form-control chosenOff" ng-model="s.id"> |
<option value="S1">Semestre 1</option> |
<option value="S2">Semestre 2</option> |
<option value="S3">Semestre 3</option> |
<option value="S4">Semestre 4</option> |
<option value="S5">Semestre 5</option> |
<option value="S6">Semestre 6</option> |
<option value="S7">Semestre 7</option> |
<option value="S8">Semestre 8</option> |
<option value="A1">Anual 1</option> |
<option value="A2">Anual 2</option> |
<option value="A3">Anual 3</option> |
<option value="A4">Anual 4</option> |
<option value="T1">Trimestre 1</option> |
<option value="T2">Trimestre 2</option> |
<option value="T3">Trimestre 3</option> |
<option value="T4">Trimestre 4</option> |
<option value="T5">Trimestre 5</option> |
<option value="T6">Trimestre 6</option> |
<option value="T7">Trimestre 7</option> |
<option value="T8">Trimestre 8</option> |
<option value="OP">Opcionais</option> |
</select> |
<div ng-show="s.id == 'OP'"> |
Descrição (PT) <input type="text" ng-model="s.semestreDesc" class="form-control"/> |
Descrição (EN) <input type="text" ng-model="s.semestreDescEn" class="form-control"/> |
Descrição (ES) <input type="text" ng-model="s.semestreDescEs" class="form-control"/> |
Descrição (FR) <input type="text" ng-model="s.semestreDescFr" class="form-control"/> |
</div> |
</div> |
<div class="col-sm-6"> |
<div class="col-sm-4"> |
|
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" onclick="form.action=form.action+'#semestreDummy${dummyIndexSemestreId}';$('#semestreId').val('semestreDummy${dummyIndexSemestreId}');set(this.form,'addUnidadeSemestre');this.form.submit()"> |
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" ng-click="addUnidade(s)"> |
<span class="glyphicon glyphicon-plus"> </span> Unidade |
</button> |
|
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" onclick="form.action=form.action+'#semestreDummy${dummyIndexSemestreId}';$('#semestreId').val('semestreDummy${dummyIndexSemestreId}');set(this.form,'addPerfilSemestre');this.form.submit()"> |
<button style="margin-left: 4px" type="button" class="btn btn-success pull-right" ng-click="addPerfil(s)"> |
<span class="glyphicon glyphicon-plus"> </span> Perfil |
</button> |
|
<a name="semestreDummy${dummyIndexSemestreId}"></a> |
</div> |
</div> |
</div> |
<div class="panel-body"> |
|
<div class="form-group"> |
|
<div class="col-sm-2"> |
Notas do Semestre (Pode ser utilizado para mostrar Optativas) |
</div> |
<div class="col-sm-10"> |
<nested:textarea property="notas" rows="5" styleClass="form-control"/> |
<textarea ng-model="s.notas" rows="5" class="form-control"></textarea> |
</div> |
</div> |
|
<button class="btn btn-default" data-toggle="collapse" type="button" data-target=".langs">Ver Campos Multingua</button> |
<div ui-tree-nodes="" ng-model="s.perfil" ng-show="s.perfil.length > 0"> |
<div class="panel panel-info" ng-repeat="p in s.perfil" ui-tree-node ng-include="'perfil_renderer.html'" ng-init="p.type='perfil';parent=s"> |
</div> |
</div> |
<div ng-show="s.unidade.length > 0" class="table-responsive"> |
<table class="table clearfix"> |
<thead> |
<tr> |
<td></td> |
<td></td> |
<th ng-show="confView.SIGES">SIGES</th> |
<th ng-show="confView.Nome">Nome</th> |
<th ng-show="confView.ECTS">ECTS</th> |
<th ng-show="confView.Total">Total</th> |
<th ng-show="confView.T">T</th> |
<th ng-show="confView.TP">TP</th> |
<th ng-show="confView.P">P</th> |
<th ng-show="confView.PL">PL</th> |
<th ng-show="confView.PD">PD</th> |
<th ng-show="confView.OT">OT</th> |
<th ng-show="confView.E">E</th> |
<th ng-show="confView.S">S</th> |
<th ng-show="confView.TC">TC</th> |
<th ng-show="confView.O">O</th> |
<th ng-show="confView.URL_UNIDADE">URL UNIDADE</th> |
<th ng-show="confView.FICHA_URL">FICHA URL</th> |
</tr> |
</thead> |
<tbody ui-tree-nodes="" ng-model="s.unidade"> |
|
<nested:size id="tamanhoPerfil" property="perfil"/> |
<nested:iterate id="perfil" indexId="perfilIndexId" property="perfil" type="pt.estgp.estgweb.services.courses.xsd.Curso.Semestre.Perfil"> |
<div class="panel panel-info"> |
<div class="panel-heading"> |
<div class="form-group"> |
<% |
dummyIndexPerfilId++; |
request.setAttribute("dummyIndexPerfilId",dummyIndexPerfilId); |
%> |
<a name="perfilDummy${dummyIndexPerfilId}"></a> |
<nested:hidden property="perfilId" value="perfilDummy${dummyIndexPerfilId}"/> |
<div class="col-sm-2"> |
<button type="button" class="btn btn-warning" onclick="sendUpPerfil('<%=dummyIndexPerfilId%>',this.form,'semestreDummy${dummyIndexSemestreId}')"> |
<span class="glyphicon glyphicon-arrow-up"> </span> |
</button> |
<button type="button" class="btn btn-warning" onclick="sendDownPerfil('<%=dummyIndexPerfilId%>',this.form,'semestreDummy${dummyIndexSemestreId}')"> |
<span class="glyphicon glyphicon-arrow-down"> </span> |
</button> |
<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#confirm-ModalFunction" data-message="Esta operação vai remover todas as unidades deste perfil!! Tem a certeza que deseja prosseguir? A operação não afeta as unidades nem os cursos do PAE, apenas o plano." data-script="$('#CourseStudiesPlansAdminForm').get(0).action=$('#CourseStudiesPlansAdminForm').get(0).action+'#semestreDummy${dummyIndexSemestreId}';$('#perfilId').val('perfilDummy${dummyIndexPerfilId}');set($('#CourseStudiesPlansAdminForm').get(0),'removePerfil');$('#CourseStudiesPlansAdminForm').get(0).submit()"> |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</div> |
<div class="col-sm-1"> |
Perfil |
</div> |
<div class="col-sm-5"> |
<nested:text styleClass="form-control" property="nome"/> |
</div> |
<div class="col-sm-4"> |
<button type="button" class="btn btn-success pull-right" onclick="form.action=form.action+'#perfilDummy${dummyIndexPerfilId}';$('#perfilId').val('perfilDummy${dummyIndexPerfilId}');set(this.form,'addUnidadePerfil');this.form.submit()"> |
<span class="glyphicon glyphicon-plus"> </span> Unidade |
</button> |
</div> |
</div> |
</div> |
<div class="panel-body"> |
<table class="tablesorterfiltered"> |
<thead> |
<tr> |
<td></td> |
<td></td> |
<th>SIGES</th> |
<th>Nome</th> |
<th>Total</th> |
<th>T</th> |
<th>TP</th> |
<th>P</th> |
<th>PL</th> |
<th>PD</th> |
<th>OT</th> |
<th>E</th> |
<th>S</th> |
<th>TC</th> |
<th>O</th> |
<th>ECTS</th> |
<th>URL UNIDADE</th> |
<th>FICHA URL</th> |
</tr> |
</thead> |
<tbody> |
<nested:size id="tamanho" property="unidade"/> |
<nested:iterate id="unit" indexId="indexId" property="unidade" type="pt.estgp.estgweb.services.courses.xsd.UnidadeType"> |
<!-- UNIDADE TEMPLATE START--> |
<tr ng-repeat="u in s.unidade" ui-tree-node ng-include="'unidade_renderer.html'" ng-init="u.type='unidade';parent=s"> |
</tr> |
<!--UNIDADE TEMPLATE END--> |
|
<% |
dummyIndexIdUnidades++; |
request.setAttribute("dummyIndexIdUnidades","dummyIndex" + dummyIndexIdUnidades); |
%> |
<% |
int tamanhoMinus1 = tamanho - 1; |
request.setAttribute("tamanhoMinus1",tamanhoMinus1); |
</tbody> |
</table> |
</div> |
</div> |
</script> |
<!-- PERFIL TEMPLATE START --> |
<script type="text/ng-template" id="perfil_renderer.html"> |
|
%> |
<tr <nested:equal property="removed" value="true">class="hidden"</nested:equal>> |
<td class="text-nowrap"> |
<div class="panel-heading"> |
|
<%-- |
Usando o dummyIndex apenas não colocamos botao de up na primeira de todas as unidades de todos os semestres |
Antes usavamos o indexId e trabalhavamos lista a lista considerando semestres e perfis independentes |
--%> |
<nested:notEqual value="dummyIndex1" name="dummyIndexIdUnidades"> |
<button type="button" class="btn btn-warning" onclick="sendUpUnidadeCurricular(<%=dummyIndexIdUnidades%>)"> |
<span class="glyphicon glyphicon-arrow-up"> </span> |
</button> |
</nested:notEqual> |
<% |
boolean perfilMaximoAtingido = perfilIndexId >= tamanhoPerfil - 1; |
boolean semestreMaximoAtingido = semestreIndexId >= tamanhoSemestre - 1; |
boolean tamanhoMaximoAtingido = indexId >= tamanho - 1; |
if(!perfilMaximoAtingido || !semestreMaximoAtingido || !tamanhoMaximoAtingido) |
{ |
%> |
<button type="button" class="btn btn-warning" onclick="sendDownUnidadeCurricular(<%=dummyIndexIdUnidades%>)"> |
<span class="glyphicon glyphicon-arrow-down"> </span> |
</button> |
<% |
} |
%> |
</td> |
<td> |
<nested:hidden styleId="removed${dummyIndexIdUnidades}" property="removed"/> |
<button type="button" class="btn btn-danger" onclick="removeUnit(<%=dummyIndexIdUnidades%>)"> |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</td> |
<td> |
<script> |
$(document).ready( |
function() |
{ |
$("#siges${dummyIndexIdUnidades}").focusout( |
function(){ |
var code = $("#siges${dummyIndexIdUnidades}").val(); |
$.getJSON("<%=request.getContextPath()%>/user/courses/courseApiJson.jsp", |
{ service:"findCourseUnit", |
siges: code, |
courseSigesCode: "${course.code}" |
}, |
function(data) |
{ |
if(data.response == "ok") |
{ |
$("#nome${dummyIndexIdUnidades}").val(data.courseUnitName); |
$("#sigesResponse${dummyIndexIdUnidades}").html(""); |
} |
else |
{ |
$("#sigesResponse${dummyIndexIdUnidades}").html("Não encontrado"); |
} |
} |
); |
} |
); |
} |
); |
</script> |
|
<nested:text styleId="siges${dummyIndexIdUnidades}" styleClass="form-control" property="siges"/> |
<div id="sigesResponse${dummyIndexIdUnidades}"></div> |
</td> |
<td> |
<div> |
<div class="col-sm-1">(PT)</div> |
<div class="col-sm-11"><nested:text styleId="nome${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nome"/></div> |
|
<div class="langs collapse" > |
<div class="col-sm-1">(EN)</div> |
<div class="col-sm-11"><nested:text styleId="nomeEn${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeEn"/></div> |
<div class="col-sm-1">(ES)</div> |
<div class="col-sm-11"><nested:text styleId="nomeEs${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeEs"/></div> |
<div class="col-sm-1">(FR)</div> |
<div class="col-sm-11"><nested:text styleId="nomeFr${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeFr"/></div> |
</div> |
</div> |
|
</td> |
<td><nested:text styleClass="form-control" styleId="totalHoras${dummyIndexIdUnidades}" property="totalHoras"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoT${dummyIndexIdUnidades}" property="horasContacto.t"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoTP${dummyIndexIdUnidades}" property="horasContacto.TP"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoP${dummyIndexIdUnidades}" property="horasContacto.p"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoPL${dummyIndexIdUnidades}" property="horasContacto.PL"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoPD${dummyIndexIdUnidades}" property="horasContacto.PD"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoOT${dummyIndexIdUnidades}" property="horasContacto.OT"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoE${dummyIndexIdUnidades}" property="horasContacto.e"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoS${dummyIndexIdUnidades}" property="horasContacto.s"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoTC${dummyIndexIdUnidades}" property="horasContacto.TC"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoO${dummyIndexIdUnidades}" property="horasContacto.o"/></td> |
<td><nested:text styleClass="form-control" styleId="ECTS${dummyIndexIdUnidades}" property="ECTS"/></td> |
<td><nested:text styleClass="form-control" styleId="urlUnidadeCurricular${dummyIndexIdUnidades}" style="width:600px" property="urlUnidadeCurricular"/></td> |
<td data-unit-semestre="${semestre.id}" data-course-siges-code="${courseSigesCode}" data-unit-siges-code="${unit.siges}" data-unit-ficha-url-target-id="urlFichaCurricular${dummyIndexIdUnidades}" data-unit-site-url-target-id="urlUnidadeCurricular${dummyIndexIdUnidades}"> |
<nested:text styleClass="form-control" styleId="urlFichaCurricular${dummyIndexIdUnidades}" style="width:600px" property="urlFichaCurricular"/> |
</td> |
</tr> |
</nested:iterate> |
</tbody> |
</table> |
</div> |
<div class="form-group"> |
<div class="col-sm-1"> |
<button type="button" class="btn btn-danger" ng-click="removePerfil(parent,$index)"> |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</div> |
|
</nested:iterate> |
|
<nested:notEmpty property="unidade"> |
|
<table class="tablesorterfiltered"> |
<div class="col-sm-3" ui-tree-handle> |
<span class="btn btn-info"><i class="glyphicon glyphicon-resize-vertical"></i></span> Perfil |
</div> |
<div class="col-sm-5"> |
<input type="text" class="form-control" ng-model="p.nome"> |
</div> |
<div class="col-sm-3"> |
<button type="button" class="btn btn-success pull-right" ng-click="addUnidade(p)"> |
<span class="glyphicon glyphicon-plus"> </span> Unidade |
</button> |
</div> |
</div> |
</div> |
<div class="panel-body clearfix table-responsive"> |
<table class="table"> |
<thead> |
<tr> |
<th></th> |
<th></th> |
<th>SIGES</th> |
<th>Nome</th> |
<th>Total</th> |
<th>T</th> |
<th>TP</th> |
<th>P</th> |
<th>PL</th> |
<th>PD</th> |
<th>OT</th> |
<th>E</th> |
<th>S</th> |
<th>TC</th> |
<th>O</th> |
<th>ECTS</th> |
<th>URL UNIDADE</th> |
<th>FICHA URL</th> |
</tr> |
<tr> |
<td></td> |
<td></td> |
<th ng-show="confView.SIGES">SIGES</th> |
<th ng-show="confView.Nome">Nome</th> |
<th ng-show="confView.ECTS">ECTS</th> |
<th ng-show="confView.Total">Total</th> |
<th ng-show="confView.T">T</th> |
<th ng-show="confView.TP">TP</th> |
<th ng-show="confView.P">P</th> |
<th ng-show="confView.PL">PL</th> |
<th ng-show="confView.PD">PD</th> |
<th ng-show="confView.OT">OT</th> |
<th ng-show="confView.E">E</th> |
<th ng-show="confView.S">S</th> |
<th ng-show="confView.TC">TC</th> |
<th ng-show="confView.O">O</th> |
<th ng-show="confView.URL_UNIDADE">URL UNIDADE</th> |
<th ng-show="confView.FICHA_URL">FICHA URL</th> |
</tr> |
</thead> |
<tbody> |
<nested:size id="tamanho" property="unidade"/> |
<nested:iterate id="unit" property="unidade" indexId="indexId" type="pt.estgp.estgweb.services.courses.xsd.UnidadeType"> |
<% |
dummyIndexIdUnidades++; |
request.setAttribute("dummyIndexIdUnidades","dummyIndex" + dummyIndexIdUnidades); |
%> |
<% |
int tamanhoMinus1 = tamanho - 1; |
request.setAttribute("tamanhoMinus1",tamanhoMinus1); |
<tbody ui-tree-nodes="" ng-model="p.unidade"> |
<!-- UNIDADE TEMPLATE START--> |
<tr ng-repeat="u in p.unidade" ui-tree-node ng-include="'unidade_renderer.html'" ng-init="u.type='unidade';parent=p"> |
</tr> |
<!--UNIDADE TEMPLATE END--> |
|
%> |
</tbody> |
</table> |
</div> |
</script> |
|
<tr <nested:equal property="removed" value="true">class="hidden"</nested:equal>> |
<td class="text-nowrap"> |
<script type="text/ng-template" id="unidade_renderer.html"> |
<td class="text-nowrap"> |
<span class="btn btn-info"><i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i></span> |
</td> |
<td> |
<button type="button" class="btn btn-danger" ng-click="removeUnidade(parent,$index)"> |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</td> |
<td ng-show="confView.SIGES"> |
<%-- |
|
<%-- |
Usando o dummyIndex apenas não colocamos botao de up na primeira de todas as unidades de todos os semestres |
Antes usavamos o indexId e trabalhavamos lista a lista considerando semestres e perfis independentes |
--%> |
<nested:notEqual value="dummyIndex1" name="dummyIndexIdUnidades"> |
<button type="button" class="btn btn-warning" onclick="sendUpUnidadeCurricular(<%=dummyIndexIdUnidades%>)"> |
<span class="glyphicon glyphicon-arrow-up"> </span> |
</button> |
</nested:notEqual> |
<% |
boolean semestreMaximoAtingido = semestreIndexId >= tamanhoSemestre - 1; |
boolean tamanhoMaximoAtingido = indexId >= tamanho - 1; |
if(!semestreMaximoAtingido || !tamanhoMaximoAtingido) |
{ |
%> |
<button type="button" class="btn btn-warning" onclick="sendDownUnidadeCurricular(<%=dummyIndexIdUnidades%>)"> |
<span class="glyphicon glyphicon-arrow-down"> </span> |
</button> |
<% |
FOCUS FIND UNIT |
<script> |
|
$(document).ready( |
function() |
{ |
$("#siges${dummyIndexIdUnidades}").focusout( |
function(){ |
var code = $("#siges${dummyIndexIdUnidades}").val(); |
$.getJSON("<%=request.getContextPath()%>/user/courses/courseApiJson.jsp", |
{ service:"findCourseUnit", |
siges: code, |
courseSigesCode: "${course.code}" |
}, |
function(data) |
{ |
if(data.response == "ok") |
{ |
$("#nome${dummyIndexIdUnidades}").val(data.courseUnitName); |
$("#sigesResponse${dummyIndexIdUnidades}").html(""); |
} |
else |
{ |
$("#sigesResponse${dummyIndexIdUnidades}").html("Não encontrado"); |
} |
} |
); |
} |
%> |
</td> |
<td> |
<nested:hidden styleId="removed${dummyIndexIdUnidades}" property="removed"/> |
<button type="button" class="btn btn-danger" onclick="removeUnit(<%=dummyIndexIdUnidades%>)" > |
<span class="glyphicon glyphicon-remove"> </span> |
</button> |
</td> |
<td> |
<script> |
$(document).ready( |
function() |
{ |
$("#siges${dummyIndexIdUnidades}").focusout( |
function(){ |
var code = $("#siges${dummyIndexIdUnidades}").val(); |
$.getJSON("<%=request.getContextPath()%>/user/courses/courseApiJson.jsp", |
{ service:"findCourseUnit", |
siges: code, |
courseSigesCode: "${course.code}" |
}, |
function(data) |
{ |
if(data.response == "ok") |
{ |
$("#nome${dummyIndexIdUnidades}").val(data.courseUnitName); |
$("#sigesResponse${dummyIndexIdUnidades}").html(""); |
} |
else |
{ |
$("#sigesResponse${dummyIndexIdUnidades}").html("Não encontrado"); |
} |
} |
); |
} |
); |
} |
); |
</script> |
<nested:text styleId="siges${dummyIndexIdUnidades}" styleClass="form-control" property="siges"/> |
<div id="sigesResponse${dummyIndexIdUnidades}"></div> |
</td> |
); |
} |
); |
</script>--%> |
|
<td> |
<div> |
<div class="col-sm-1">(PT)</div> |
<div class="col-sm-11"> |
<nested:text styleId="nome${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nome"/> |
</div> |
<input type="text" ng-model="u.siges" style="width: 60px"/> |
<%--<div id="sigesResponse${dummyIndexIdUnidades}"></div>--%> |
</td> |
<td ng-show="confView.Nome"> |
<div> |
<div class="col-sm-11"><input type="text" style="width:200px" ng-model="u.nome"/></div> |
|
<div class="langs collapse" > |
<div class="col-sm-1">(EN)</div> |
<div class="col-sm-11"><nested:text styleId="nomeEn${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeEn"/></div> |
<div class="col-sm-1">(ES)</div> |
<div class="col-sm-11"><nested:text styleId="nomeEs${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeEs"/></div> |
<div class="col-sm-1">(FR)</div> |
<div class="col-sm-11"><nested:text styleId="nomeFr${dummyIndexIdUnidades}" style="width:300px" styleClass="form-control" property="nomeFr"/></div> |
</div> |
</div> |
<div class="langs collapse" > |
<div class="col-sm-1">(EN)</div> |
<div class="col-sm-11"><input type="text" style="width:200px" ng-model="u.nomeEn"/></div> |
<div class="col-sm-1">(ES)</div> |
<div class="col-sm-11"><input type="text" style="width:200px" ng-model="u.nomeEs"/></div> |
<div class="col-sm-1">(FR)</div> |
<div class="col-sm-11"><input type="text" style="width:200px" ng-model="u.nomeFr"/></div> |
</div> |
</div> |
|
</td> |
<td><nested:text styleClass="form-control" styleId="totalHoras${dummyIndexIdUnidades}" property="totalHoras"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoT${dummyIndexIdUnidades}" property="horasContacto.t"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoTP${dummyIndexIdUnidades}" property="horasContacto.TP"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoP${dummyIndexIdUnidades}" property="horasContacto.p"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoPL${dummyIndexIdUnidades}" property="horasContacto.PL"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoPD${dummyIndexIdUnidades}" property="horasContacto.PD"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoOT${dummyIndexIdUnidades}" property="horasContacto.OT"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoE${dummyIndexIdUnidades}" property="horasContacto.e"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoS${dummyIndexIdUnidades}" property="horasContacto.s"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoTC${dummyIndexIdUnidades}" property="horasContacto.TC"/></td> |
<td><nested:text styleClass="form-control" styleId="horasContactoO${dummyIndexIdUnidades}" property="horasContacto.o"/></td> |
<td><nested:text styleClass="form-control" styleId="ECTS${dummyIndexIdUnidades}" property="ECTS"/></td> |
<td><nested:text styleClass="form-control" styleId="urlUnidadeCurricular${dummyIndexIdUnidades}" style="width:600px" property="urlUnidadeCurricular"/></td> |
<td data-unit-semestre="${semestre.id}" data-course-siges-code="${courseSigesCode}" data-unit-siges-code="${unit.siges}" data-unit-ficha-url-target-id="urlFichaCurricular${dummyIndexIdUnidades}" data-unit-site-url-target-id="urlUnidadeCurricular${dummyIndexIdUnidades}"> |
<nested:text styleClass="form-control" styleId="urlFichaCurricular${dummyIndexIdUnidades}" style="width:600px" property="urlFichaCurricular"/> |
</td> |
</tr> |
</nested:iterate> |
</tbody> |
</table> |
</nested:notEmpty> |
</td> |
<td ng-show="confView.ECTS"><input type="text" style="width: 40px" ng-model="u.eCTS"/></td> |
<td ng-show="confView.Total"><input type="text" style="width: 40px" ng-model="u.totalHoras"></td> |
|
</div> |
</div> |
<td ng-show="confView.T"><input type="text" style="width: 40px" ng-model="u.horasContacto.t"/></td> |
<td ng-show="confView.TP"><input type="text" style="width: 40px" ng-model="u.horasContacto.TP"/></td> |
<td ng-show="confView.P"><input type="text" style="width: 40px" ng-model="u.horasContacto.p"/></td> |
<td ng-show="confView.PL"><input type="text" style="width: 40px" ng-model="u.horasContacto.PL"/></td> |
<td ng-show="confView.PD"><input type="text" style="width: 40px" ng-model="u.horasContacto.PD"/></td> |
<td ng-show="confView.OT"><input type="text" style="width: 40px" ng-model="u.horasContacto.OT"/></td> |
<td ng-show="confView.E"><input type="text" style="width: 40px" ng-model="u.horasContacto.e"/></td> |
<td ng-show="confView.S"><input type="text" style="width: 40px" ng-model="u.horasContacto.s"/></td> |
<td ng-show="confView.TC"><input type="text" style="width: 40px" ng-model="u.horasContacto.TC"/></td> |
<td ng-show="confView.O"><input type="text" style="width: 40px" ng-model="u.horasContacto.o"/></td> |
<td ng-show="confView.URL_UNIDADE"><input type="text" ng-model="u.urlUnidadeCurricular" style="width:600px"/></td> |
<td ng-show="confView.FICHA_URL" data-unit-semestre="{{s.id}}" data-course-siges-code="${courseSigesCode}" data-unit-siges-code="{{u.siges}}" data-unit-ficha-url-target-id="urlFichaCurricular{{s.id}}_{{u.siges}}" data-unit-site-url-target-id="urlUnidadeCurricular{{s.id}}_{{u.siges}}"> |
<input type="text" id="urlFichaCurricular{{s.id}}_{{u.siges}}" ng-model="u.urlFichaCurricular" style="width:600px"/> |
</td> |
</script> |
|
</nested:iterate> |
<%-- <pre class="code"> |
{{json | json}} |
</pre>--%> |
<a type="button" class="btn btn-danger" href="<%=request.getContextPath()%>/user/adminStudyPlans.do?courseId=${courseId}">Cancelar</a> |
<button type="button" class="btn btn-success" ng-click="salvar()">Salvar</button> |
</div> |
|
</nested:notEmpty> |
|
<a type="button" class="btn btn-danger" href="<%=request.getContextPath()%>/user/adminStudyPlans.do?courseId=${courseId}">Cancelar</a> |
<html:submit styleClass="btn btn-success" >Salvar</html:submit> |
|
|
|
|
</div> |
</div> |
</html:form> |