Subversion Repositories bacoAlunos

Rev

Rev 1340 | Rev 1378 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %>
<%@ page import="pt.estgp.estgweb.utils.ConfigProperties" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.estgp.estgweb.utils.DynamicArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%
    String qId = request.getParameter("questionarioId");
    if(qId == null)
        qId = request.getParameter("questionario.id");
    Long questionarioId = Long.parseLong(qId);

    IServiceManager sm = ServiceManager.getInstance();
    String[] names = {"questionarioId"};
    Object[] args = {questionarioId};
    QuestionarioImpl questionario = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"loadQuestionarioAdmin",args,names);


    request.setAttribute("Questionario", questionario);

    List<String> institutionCodes = ConfigProperties.getListValues("questionario.instituition.");

    AbstractDao.getCurrentSession().beginTransaction();


%>
<jsp:useBean id="Questionario" type="pt.estgp.estgweb.domain.QuestionarioImpl" scope="request"/>


<jsp:include page="/layout/pleaseWait.jsp"/>

<html:form action="/user/questionariosPaeSelectCourses">
    <html:hidden property="questionario.id" value="${Questionario.id}"/>
    <input type="hidden" name="dispatch" value="updateTipologias"/>

    <jsp:useBean id="QuestionarioForm" type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" scope="request"/>
<%
    //Variavel iniciada no serviço de load por chamada do IAnswerProcessor respectivo para inicializar
    //as variaveis especificas
    List<QuestionarioPedagogicoCursoAfeto> cursosAfetados = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().find(questionario.getId());
    QuestionarioForm.setCursosAfetos(cursosAfetados);
%>
<div class="container-fluid">

<style>
    td.unidades
    {
       background-color: dimgray !important;
    }

    td.tipologias
    {
        background-color: #baffdc !important;
    }

    td.obsContent
    {
        background-color: #ffda48 !important;
    }
    td.vistaChecked
    {
        background-color: #20ff05 !important;
    }
    td.vistaNotChecked
    {
        background-color: gray !important;
    }
    td.usarNotChecked
    {
        background-color: red !important;
    }
    td.usarChecked
    {

    }


    @keyframes waitPost {
        from { opacity: 1; }
        to { opacity: 0; }
    }
    td.waitPost
    {
        background-color: yellow !important;
        animation: waitPost 0.5s cubic-bezier(.2, 0, 1, 1) infinite alternate;

        /*
        -webkit-animation-name: waitPost !important;
        -webkit-animation-iteration-count: infinite !important;
        -webkit-animation-timing-function: cubic-bezier(.5, 0, 1, 1) !important;
        -webkit-animation-duration: 1.7s !important;*/

    }

</style>

<div class="panel panel-primary">
    <div class="panel-heading">
        Selecção de Cursos para o Questionário ${Questionario.id} - Periodo: ${Questionario.semestre} de ${Questionario.year}
    </div>
    <div class="panel-body">
        <html:errors/>
        <jomm:messages/>


        <div class="baco-please-wait-target">

            <ul class="nav nav-tabs">
                <li id="institutionsSeparatorsGerarFinal"><a href="javascript:showInstitutionCode('GerarFinal')"><strong><u>Operações</u></strong></a></li>
                <%
                    for(String institutionCode: institutionCodes)
                    {
                        String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
                %>
                    <li id="institutionsSeparators<%=institutionCode%>"><a href="javascript:showInstitutionCode('<%=institutionCode%>')"><%=institutionName%></a></li>
                <%
                    }
                %>

            </ul>
            <script>
                $(document).ready(
                        function(){
                            showInstitutionCode('GerarFinal');


                            <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
                                $(".checkAll").remove();
                            </baco:notClearOperation>

                            $(".courseCheck").attr("data-toogle","toggle");
                            $('.courseCheck').bootstrapToggle({
                                on: 'Tipologias',
                                off: 'Simples'
                            });

                            <baco:clearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
                                $('.checkAll').bootstrapToggle({
                                    on: 'Tipologias',
                                    off: 'Simples'
                                });
                            </baco:clearOperation>
                            <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
                                $(".courseCheck").prop("disabled",true);
                                $("#updateTipologiasButton").prop("disabled",true);
                            </baco:notClearOperation>
                        }


                );

                function selectAll(code,source)
                {

                    $('#institution' + code).find('.courseCheck').each(
                            function()
                            {
                                if($(source).prop("checked"))
                                    $(this).bootstrapToggle('on');
                                else
                                    $(this).bootstrapToggle('off');
                            });
                }


                function showInstitutionCode(institutionCode)
                {
                    <%
                    for(String institutionCode: institutionCodes)
                    {
                    %>
                        if(institutionCode == '<%=institutionCode%>')
                        {
                            $("#institution<%=institutionCode%>").show();
                            $("#institutionsSeparators<%=institutionCode%>").addClass("active");
                        }
                        else
                        {
                            $("#institution<%=institutionCode%>").hide();
                            $("#institutionsSeparators<%=institutionCode%>").removeClass("active");
                        }
                    <%
                    }
                    %>
                    if(institutionCode == 'GerarFinal')
                    {
                        $("#institutionGerarFinal").show();
                        $("#institutionsSeparatorsGerarFinal").addClass("active");
                    }
                    else
                    {
                        $("#institutionGerarFinal").hide();
                        $("#institutionsSeparatorsGerarFinal").removeClass("active");
                    }
                }


                function setUnidadeAfetaVar(cursoAfetoId,unidadeAfetaId,op,val,targetObject)
                {
                    $(targetObject).addClass("waitPost");
                    $.post("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/setUnidadeAfetaVar.jsp",
                            {
                                "questionarioId" : ${Questionario.id},
                                "unidadeAfetaId":unidadeAfetaId,
                                "op":op,
                                "val": val
                            },
                            function(data, textStatus)
                            {
                                if(data.error)
                                {
                                    alert(data.error);
                                }
                                else if(data.ok == "ok")
                                {
                                    $(targetObject).removeClass("waitPost");
                                    reloadCursoStats(cursoAfetoId);
                                }
                            },
                            "json");
                }
                function reloadCursoStats(cursoAfetoId)
                {

                    $.getJSON("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/courseInfoJson.jsp?cursoAfetoId="+cursoAfetoId,
                            function(dataJson)
                            {

                                var porVer = dataJson.porVer + " ";
                                if(dataJson.porVer > 0)
                                {
                                    porVer += "<span class=\"glyphicon glyphicon-alert\"></span>";
                                }
                                $("#cursoAfetoRow" + cursoAfetoId + " .porVerCount").html(porVer);

                                var marcadas = dataJson.marcadas + " ";
                                if(dataJson.marcadas > 0)
                                {
                                    marcadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
                                }
                                $("#cursoAfetoRow" + cursoAfetoId + " .marcadasCount").html(marcadas);

                                var observadas = dataJson.observadas + " ";
                                if(dataJson.observadas > 0)
                                {
                                    observadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
                                }
                                $("#cursoAfetoRow" + cursoAfetoId + " .observadasCount").html(observadas);

                                var naoUsadas = dataJson.naoUsadas + " ";
                                if(dataJson.naoUsadas > 0)
                                {
                                    naoUsadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
                                }
                                $("#cursoAfetoRow" + cursoAfetoId + " .naoUsadasCount").html(naoUsadas)

                                $("#cursoAfetoRow" + cursoAfetoId + " .unidadesCount").html(dataJson.unidades);

                            }
                    );
                }

            </script>

    <%
        for(String institutionCode: institutionCodes)
        {
            String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
            

    %>


            <div class="panel panel-default" id="institution<%=institutionCode%>" style="display: none">
                <div class="panel-heading">
                Cursos da <%=institutionName%>
            </div>
                <div class="panel-body">
                    <table class="tablesorter-blue">
                    <thead>
                    <tr>
                        <th></th>
                        <th>Codigo</th>
                        <th>Tipo de Curso</th>
                        <th>Curso</th>
                        <th>Papel Comissão Curso</th>
                        <th>Unidades</th>
                        <th>Alertas </th>
                        <th>Por Ver</th>
                        <th>Não Usadas</th>
                        <th>Observadas</th>
                        <th>Turmas</th>

                        <th class="filter-false" data-sorter="false">
                            <input class="checkAll" type="checkbox" onchange="selectAll('<%=institutionCode%>',this)">
                        </th>

                    </tr>
                    </thead>
                    <tbody>
                    <nested:iterate id="cursoAfeto" name="QuestionarioForm" property="cursosAfetos" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfetoImpl" scope="request">
                    <%
                    
                        if(cursoAfeto.getCodigoInstituicao().equals(institutionCode))
                        {
                            int turmasSize = DaoFactory.getCourseDaoImpl().countCoursesUnitsTurmas(questionario.getYear(), cursoAfeto.getCourse().getId());
                            CourseView cv = new CourseView(cursoAfeto.getCourse());
                            request.setAttribute("CourseView",cv);
                            request.setAttribute("CursoAfeto",cursoAfeto);

                    %>
                            <tr id="cursoAfetoRow${cursoAfeto.id}">
                                <td>
                                    <script>
                                        $(document).ready(

                                                function(){
                                                    reloadCursoStats("${cursoAfeto.id}");

                                                    $('#${CursoAfeto.codigoCurso}unidades').on('shown.bs.collapse', function (e) {
                                                        if ($(this).is(e.target)) {
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open");
                                                        }
                                                    });
                                                    $('#${CursoAfeto.codigoCurso}unidades').on('hidden.bs.collapse', function (e) {
                                                        if ($(this).is(e.target)) {
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-open").addClass("glyphicon-folder-close");
                                                        }
                                                    });
                                                }
                                        );
                                    </script>
                                    <button id="${CursoAfeto.codigoCurso}unidadesButton" class="btn btn-default btn-small" type="button" data-toggle="collapse" data-target="#${CursoAfeto.codigoCurso}unidades"><span class="glyphicon glyphicon-folder-close"></span></button>
                                    <script>
                                        $(document).ready(
                                                function(){
                                                    $.post("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp?cursoAfetoId=${CursoAfeto.id}", function(data) {
                                                        $("#${CursoAfeto.codigoCurso}unidades .unidades")
                                                                .html(data);
                                                        evaluateTableSortersInside("#${CursoAfeto.codigoCurso}unidades .unidades");
                                                    });
                                                }
                                        );
                                    </script>
                                </td>
                                <td>
                                    <nested:hidden property="id"/>
                                    ${CourseView.code}
                                </td>
                                <td><bean:message key="course.${CourseView.degreeCleanCode}"/></td>
                                <td>${CourseView.name}</td>
                                <td>
                                    <logic:notEmpty name="CourseView" property="validationRole">
                                        <bean:message key="user.role.${CourseView.validationRole}"/>
                                    </logic:notEmpty>
                                    <logic:empty name="CourseView" property="validationRole">
                                        Papel não atribuido (Corrigir Situação)
                                    </logic:empty>
                                </td>
                                <td class="unidadesCount">
                                    <a href="#" data-href="<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/listCourseUnits.jsp?importYear=${CourseView.importYear}&courseId=${CourseView.id}" data-title="Unidades do Curso de ${CourseView.name} (${CourseView.code})" data-toggle="modal" data-target="#modalAjaxRequest">
                                        <%=cursoAfeto.getUnidadesAfetas().size()%>
                                    </a>
                                </td>
                                <td class="marcadasCount">
                                    ${CursoAfeto.marcadas}
                                    <logic:greaterThan value="0" name="CursoAfeto" property="marcadas">
                                        <span class="glyphicon glyphicon-alert"></span>
                                    </logic:greaterThan>
                                </td>
                                <td class="porVerCount"> ... </td>
                                <td class="naoUsadasCount"> ... </td>
                                <td class="observadasCount"> ... </td>
                                <td>
                                    <a href="#" data-href="<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/listCourseUnitsTurmas.jsp?importYear=${CourseView.importYear}&courseId=${CourseView.id}" data-title="Turmas do Curso de ${CourseView.name} (${CourseView.code})" data-toggle="modal" data-target="#modalAjaxRequest">
                                        <%=turmasSize%>
                                    </a>
                                </td>

                                <td>
                                    <nested:checkbox property="usarTipologias" styleClass="courseCheck"/>
                                </td>
                            </tr>
                            <tr id="${CursoAfeto.codigoCurso}unidades" class="collapse">
                                <td></td>
                                <td colspan="11" class="unidades"  style="padding-left: 25px">
                                    <div class="panel panel-default">
                                        <div class="panel-body">
                                            <p>Por favor aguarde um momento, o sistema está a carregar as unidades curriculares <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                    <%
                        }
                        //DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().evict(cursoAfeto);
                    
                    
                    %>
                    </nested:iterate>
                    </tbody>
                </table>
                </div>
            </div>
    <%
        }
    %>


            <div class="panel panel-primary" id="institutionGerarFinal">
                <div class="panel-heading">
                    Verificação de Atribuições
                </div>
                <div class="panel-body">


                    <div class="col-sm-6">
                        <baco:clearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
                            <div class="alert alert-warning">Está neste momento no painel de verificações do questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}</div>
                        </baco:clearOperation>
                        <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
                            <div class="alert alert-warning">Não tem permissão para verificar atribuições no questionário ${Questionario.id} criado para o periodo ${Questionario.semestre} de ${Questionario.year}</div>
                        </baco:notClearOperation>

                        <a class="btn btn-default" href="#" data-href="<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/questionarioLogState.jsp?questionarioId=${Questionario.id}" data-title="Registo de mudanças de estado do questionario ${Questionario.id}" data-toggle="modal" data-target="#modalAjaxRequest">
                            Registo de Mudanças de Estado
                        </a>
                    </div>
                    <div class="col-sm-6">

                    </div>


                </div>

            </div>
            <div class="col-sm-12">

                <button id="updateTipologiasButton" class="btn btn-success">Atualizar Tipologias</button>
                <html:link action="/user/adminQuestionario?questionario.id=${Questionario.id}#NOWTASK" styleClass="btn btn-danger">Voltar à administração</html:link>
            </div>
        </div>


        </div>
    </div>
</div>
<%
    AbstractDao.getCurrentSession().getTransaction().commit();
%>


</html:form>