Subversion Repositories bacoAlunos

Rev

Rev 1395 | Rev 1425 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1337 jmachado 1
<%@ page import="jomm.dao.impl.AbstractDao" %>
2
<%@ page import="pt.estgp.estgweb.domain.CourseUnitImpl" %>
3
<%@ page import="pt.estgp.estgweb.domain.QuestionarioImpl" %>
4
<%@ page import="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfeto" %>
5
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
6
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %>
7
<%@ page import="pt.estgp.estgweb.utils.ConfigProperties" %>
8
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
9
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
10
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
11
<%@ page import="java.util.List" %>
12
<%@ page import="pt.estgp.estgweb.utils.DynamicArrayList" %>
13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
14
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
15
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
16
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
17
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
18
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
19
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
20
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
21
<%
22
    String qId = request.getParameter("questionarioId");
23
    if(qId == null)
24
        qId = request.getParameter("questionario.id");
25
    Long questionarioId = Long.parseLong(qId);
26
 
27
    IServiceManager sm = ServiceManager.getInstance();
28
    String[] names = {"questionarioId"};
29
    Object[] args = {questionarioId};
30
    QuestionarioImpl questionario = (QuestionarioImpl) sm.execute(RequestUtils.getRequester(request, response),"loadQuestionarioAdmin",args,names);
31
 
32
 
33
    request.setAttribute("Questionario", questionario);
34
 
35
    List<String> institutionCodes = ConfigProperties.getListValues("questionario.instituition.");
36
 
37
    AbstractDao.getCurrentSession().beginTransaction();
38
 
39
 
40
%>
41
<jsp:useBean id="Questionario" type="pt.estgp.estgweb.domain.QuestionarioImpl" scope="request"/>
1388 jmachado 42
<jsp:include page="../headerQuestionarios.jsp"/>
1337 jmachado 43
 
44
<jsp:include page="/layout/pleaseWait.jsp"/>
45
 
1346 jmachado 46
<html:form action="/user/questionariosPaeSelectCourses">
1337 jmachado 47
    <html:hidden property="questionario.id" value="${Questionario.id}"/>
48
    <input type="hidden" name="dispatch" value="updateTipologias"/>
49
 
50
    <jsp:useBean id="QuestionarioForm" type="pt.estgp.estgweb.web.form.questionarios.QuestionarioForm" scope="request"/>
51
<%
52
    //Variavel iniciada no serviço de load por chamada do IAnswerProcessor respectivo para inicializar
53
    //as variaveis especificas
54
    List<QuestionarioPedagogicoCursoAfeto> cursosAfetados = DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().find(questionario.getId());
55
    QuestionarioForm.setCursosAfetos(cursosAfetados);
56
%>
57
<div class="container-fluid">
58
 
59
<style>
60
    td.unidades
61
    {
62
       background-color: dimgray !important;
63
    }
64
 
65
    td.tipologias
66
    {
67
        background-color: #baffdc !important;
68
    }
69
 
1340 jmachado 70
    td.obsContent
71
    {
72
        background-color: #ffda48 !important;
73
    }
1338 jmachado 74
    td.vistaChecked
75
    {
76
        background-color: #20ff05 !important;
77
    }
78
    td.vistaNotChecked
79
    {
80
        background-color: gray !important;
81
    }
82
    td.usarNotChecked
83
    {
84
        background-color: red !important;
85
    }
86
    td.usarChecked
87
    {
88
 
89
    }
90
 
91
 
92
    @keyframes waitPost {
93
        from { opacity: 1; }
94
        to { opacity: 0; }
95
    }
96
    td.waitPost
97
    {
98
        background-color: yellow !important;
99
        animation: waitPost 0.5s cubic-bezier(.2, 0, 1, 1) infinite alternate;
100
 
101
        /*
102
        -webkit-animation-name: waitPost !important;
103
        -webkit-animation-iteration-count: infinite !important;
104
        -webkit-animation-timing-function: cubic-bezier(.5, 0, 1, 1) !important;
105
        -webkit-animation-duration: 1.7s !important;*/
106
 
107
    }
108
 
1337 jmachado 109
</style>
1338 jmachado 110
 
1337 jmachado 111
<div class="panel panel-primary">
112
    <div class="panel-heading">
113
        Selecção de Cursos para o Questionário ${Questionario.id} - Periodo: ${Questionario.semestre} de ${Questionario.year}
1388 jmachado 114
 
115
        <a class="btn btn-default" href="#" data-toggle="modal" data-target="#modalHelpQuestionarioTipologias">
116
            <span class="glyphicon glyphicon-question-sign"></span> Ajuda sobre Tipologias
117
        </a>
1337 jmachado 118
    </div>
119
    <div class="panel-body">
120
        <html:errors/>
121
        <jomm:messages/>
122
 
123
 
124
        <div class="baco-please-wait-target">
125
 
126
            <ul class="nav nav-tabs">
127
                <li id="institutionsSeparatorsGerarFinal"><a href="javascript:showInstitutionCode('GerarFinal')"><strong><u>Operações</u></strong></a></li>
128
                <%
129
                    for(String institutionCode: institutionCodes)
130
                    {
131
                        String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
132
                %>
133
                    <li id="institutionsSeparators<%=institutionCode%>"><a href="javascript:showInstitutionCode('<%=institutionCode%>')"><%=institutionName%></a></li>
134
                <%
135
                    }
136
                %>
137
 
138
            </ul>
139
            <script>
140
                $(document).ready(
141
                        function(){
142
                            showInstitutionCode('GerarFinal');
143
 
144
 
1338 jmachado 145
                            <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
146
                                $(".checkAll").remove();
147
                            </baco:notClearOperation>
148
 
1337 jmachado 149
                            $(".courseCheck").attr("data-toogle","toggle");
150
                            $('.courseCheck').bootstrapToggle({
151
                                on: 'Tipologias',
152
                                off: 'Simples'
153
                            });
1338 jmachado 154
 
155
                            <baco:clearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
156
                                $('.checkAll').bootstrapToggle({
157
                                    on: 'Tipologias',
158
                                    off: 'Simples'
159
                                });
160
                            </baco:clearOperation>
161
                            <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
162
                                $(".courseCheck").prop("disabled",true);
163
                                $("#updateTipologiasButton").prop("disabled",true);
164
                            </baco:notClearOperation>
1337 jmachado 165
                        }
166
 
1338 jmachado 167
 
1337 jmachado 168
                );
169
 
170
                function selectAll(code,source)
171
                {
172
 
173
                    $('#institution' + code).find('.courseCheck').each(
174
                            function()
175
                            {
176
                                if($(source).prop("checked"))
177
                                    $(this).bootstrapToggle('on');
178
                                else
179
                                    $(this).bootstrapToggle('off');
180
                            });
181
                }
182
 
183
 
184
                function showInstitutionCode(institutionCode)
185
                {
186
                    <%
187
                    for(String institutionCode: institutionCodes)
188
                    {
189
                    %>
190
                        if(institutionCode == '<%=institutionCode%>')
191
                        {
192
                            $("#institution<%=institutionCode%>").show();
193
                            $("#institutionsSeparators<%=institutionCode%>").addClass("active");
194
                        }
195
                        else
196
                        {
197
                            $("#institution<%=institutionCode%>").hide();
198
                            $("#institutionsSeparators<%=institutionCode%>").removeClass("active");
199
                        }
200
                    <%
201
                    }
202
                    %>
203
                    if(institutionCode == 'GerarFinal')
204
                    {
205
                        $("#institutionGerarFinal").show();
206
                        $("#institutionsSeparatorsGerarFinal").addClass("active");
207
                    }
208
                    else
209
                    {
210
                        $("#institutionGerarFinal").hide();
211
                        $("#institutionsSeparatorsGerarFinal").removeClass("active");
212
                    }
213
                }
214
 
215
 
1338 jmachado 216
                function setUnidadeAfetaVar(cursoAfetoId,unidadeAfetaId,op,val,targetObject)
217
                {
218
                    $(targetObject).addClass("waitPost");
1346 jmachado 219
                    $.post("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/setUnidadeAfetaVar.jsp",
1338 jmachado 220
                            {
221
                                "questionarioId" : ${Questionario.id},
222
                                "unidadeAfetaId":unidadeAfetaId,
223
                                "op":op,
224
                                "val": val
225
                            },
226
                            function(data, textStatus)
227
                            {
1346 jmachado 228
                                if(data.error)
1338 jmachado 229
                                {
1346 jmachado 230
                                    alert(data.error);
231
                                }
232
                                else if(data.ok == "ok")
233
                                {
1338 jmachado 234
                                    $(targetObject).removeClass("waitPost");
235
                                    reloadCursoStats(cursoAfetoId);
236
                                }
237
                            },
238
                            "json");
239
                }
240
                function reloadCursoStats(cursoAfetoId)
241
                {
242
 
1346 jmachado 243
                    $.getJSON("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/courseInfoJson.jsp?cursoAfetoId="+cursoAfetoId,
1338 jmachado 244
                            function(dataJson)
245
                            {
246
 
247
                                var porVer = dataJson.porVer + " ";
248
                                if(dataJson.porVer > 0)
249
                                {
250
                                    porVer += "<span class=\"glyphicon glyphicon-alert\"></span>";
251
                                }
252
                                $("#cursoAfetoRow" + cursoAfetoId + " .porVerCount").html(porVer);
253
 
1378 jmachado 254
                                var porVerProfs = dataJson.porVerProfs + " ";
255
                                if(dataJson.porVerProfs > 0)
256
                                {
257
                                    porVerProfs += "<span class=\"glyphicon glyphicon-alert\"></span>";
258
                                }
259
                                $("#cursoAfetoRow" + cursoAfetoId + " .porVerProfsCount").html(porVerProfs);
260
 
261
 
1338 jmachado 262
                                var marcadas = dataJson.marcadas + " ";
263
                                if(dataJson.marcadas > 0)
264
                                {
265
                                    marcadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
266
                                }
267
                                $("#cursoAfetoRow" + cursoAfetoId + " .marcadasCount").html(marcadas);
268
 
269
                                var observadas = dataJson.observadas + " ";
270
                                if(dataJson.observadas > 0)
271
                                {
272
                                    observadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
273
                                }
274
                                $("#cursoAfetoRow" + cursoAfetoId + " .observadasCount").html(observadas);
275
 
276
                                var naoUsadas = dataJson.naoUsadas + " ";
277
                                if(dataJson.naoUsadas > 0)
278
                                {
279
                                    naoUsadas += "<span class=\"glyphicon glyphicon-alert\"></span>";
280
                                }
281
                                $("#cursoAfetoRow" + cursoAfetoId + " .naoUsadasCount").html(naoUsadas)
282
 
1395 jmachado 283
                                //$("#cursoAfetoRow" + cursoAfetoId + " .unidadesCount").html(dataJson.unidades);
1338 jmachado 284
 
1394 jmachado 285
                                /*var tipologiasRequisitadas = dataJson.tipologiasRequisitadas + " ";
286
                                $("#cursoAfetoRow" + cursoAfetoId + " .tipologiasRequisitadasCount").html(tipologiasRequisitadas);
287
 
288
                                var respostasRequisitadas = dataJson.respostasRequisitadas + " ";
289
                                $("#cursoAfetoRow" + cursoAfetoId + " .respostasRequisitadasCount").html(respostasRequisitadas);*/
290
 
1338 jmachado 291
                            }
292
                    );
293
                }
294
 
1337 jmachado 295
            </script>
296
 
297
    <%
298
        for(String institutionCode: institutionCodes)
299
        {
300
            String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
301
 
302
 
303
    %>
304
 
305
 
306
            <div class="panel panel-default" id="institution<%=institutionCode%>" style="display: none">
307
                <div class="panel-heading">
308
                Cursos da <%=institutionName%>
309
            </div>
310
                <div class="panel-body">
311
                    <table class="tablesorter-blue">
312
                    <thead>
313
                    <tr>
1338 jmachado 314
                        <th></th>
1337 jmachado 315
                        <th>Codigo</th>
316
                        <th>Tipo de Curso</th>
317
                        <th>Curso</th>
318
                        <th>Papel Comissão Curso</th>
1395 jmachado 319
                        <th data-toggle="tooltip" data-placement="top" title="Unidades Curriculares totais do curso">Unidades <%=questionario.getSemestre()%></th>
320
                        <th data-toggle="tooltip" data-placement="top" title="Unidades Curriculares com Professores Afetadas">U. Afetas</th>
1338 jmachado 321
                        <th>Alertas </th>
1395 jmachado 322
                        <th>Check Alunos</th>
323
                        <th>Check Profs</th>
1338 jmachado 324
                        <th>Não Usadas</th>
1422 jmachado 325
                        <th>Obses.</th>
1337 jmachado 326
                        <th>Turmas</th>
1422 jmachado 327
                        <th data-toggle="tooltip" data-placement="top" title="Tipologias Requisitadas para Responder">Tip. Req</th>
328
                        <th data-toggle="tooltip" data-placement="top" title="Respostas Requisitadas para Responder">Resp. Req</th>
1338 jmachado 329
 
1337 jmachado 330
                        <th class="filter-false" data-sorter="false">
331
                            <input class="checkAll" type="checkbox" onchange="selectAll('<%=institutionCode%>',this)">
332
                        </th>
333
 
334
                    </tr>
335
                    </thead>
336
                    <tbody>
337
                    <nested:iterate id="cursoAfeto" name="QuestionarioForm" property="cursosAfetos" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfetoImpl" scope="request">
338
                    <%
339
 
340
                        if(cursoAfeto.getCodigoInstituicao().equals(institutionCode))
341
                        {
342
                            int turmasSize = DaoFactory.getCourseDaoImpl().countCoursesUnitsTurmas(questionario.getYear(), cursoAfeto.getCourse().getId());
343
                            CourseView cv = new CourseView(cursoAfeto.getCourse());
344
                            request.setAttribute("CourseView",cv);
345
                            request.setAttribute("CursoAfeto",cursoAfeto);
1395 jmachado 346
                            int unitsSize = DaoFactory.getCourseDaoImpl().countCoursesUnits(questionario.getYear(), cv.getId(),questionario.getSemestre());
1337 jmachado 347
 
348
                    %>
1338 jmachado 349
                            <tr id="cursoAfetoRow${cursoAfeto.id}">
1337 jmachado 350
                                <td>
1338 jmachado 351
                                    <script>
352
                                        $(document).ready(
353
 
354
                                                function(){
355
                                                    reloadCursoStats("${cursoAfeto.id}");
356
 
357
                                                    $('#${CursoAfeto.codigoCurso}unidades').on('shown.bs.collapse', function (e) {
358
                                                        if ($(this).is(e.target)) {
359
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open");
360
                                                        }
361
                                                    });
362
                                                    $('#${CursoAfeto.codigoCurso}unidades').on('hidden.bs.collapse', function (e) {
363
                                                        if ($(this).is(e.target)) {
364
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-open").addClass("glyphicon-folder-close");
365
                                                        }
366
                                                    });
367
                                                }
368
                                        );
369
                                    </script>
370
                                    <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>
371
                                    <script>
372
                                        $(document).ready(
373
                                                function(){
1346 jmachado 374
                                                    $.post("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp?cursoAfetoId=${CursoAfeto.id}", function(data) {
1338 jmachado 375
                                                        $("#${CursoAfeto.codigoCurso}unidades .unidades")
376
                                                                .html(data);
377
                                                        evaluateTableSortersInside("#${CursoAfeto.codigoCurso}unidades .unidades");
378
                                                    });
379
                                                }
380
                                        );
381
                                    </script>
382
                                </td>
383
                                <td>
1337 jmachado 384
                                    <nested:hidden property="id"/>
385
                                    ${CourseView.code}
386
                                </td>
387
                                <td><bean:message key="course.${CourseView.degreeCleanCode}"/></td>
388
                                <td>${CourseView.name}</td>
389
                                <td>
390
                                    <logic:notEmpty name="CourseView" property="validationRole">
391
                                        <bean:message key="user.role.${CourseView.validationRole}"/>
392
                                    </logic:notEmpty>
393
                                    <logic:empty name="CourseView" property="validationRole">
394
                                        Papel não atribuido (Corrigir Situação)
395
                                    </logic:empty>
396
                                </td>
1395 jmachado 397
                                <td>
398
                                    <a href="#" data-href="<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/listCourseUnits.jsp?importYear=${CourseView.importYear}&courseId=${CourseView.id}&semestre=<%=questionario.getSemestre()%>" data-title="Unidades do Curso de ${CourseView.name} (${CourseView.code})" data-toggle="modal" data-target="#modalAjaxRequest">
399
                                        <%=unitsSize%>
1337 jmachado 400
                                    </a>
401
                                </td>
1395 jmachado 402
                                <td>
403
                                    <%=cursoAfeto.getUnidadesAfetas().size()%>
404
                                    <%
405
                                        if(cursoAfeto.getUnidadesAfetas().size() != unitsSize)
406
                                        {
407
                                    %>
408
                                            <span data-toggle="tooltip" data-placement="top" title="EXISTE UNIDADES QUE NAO ESTAO AFETADAS: CONFIRME SITUAÇÃO" class="glyphicon glyphicon-alert"></span>
409
                                    <%
410
                                        }
411
                                    %>
412
                                </td>
413
 
1338 jmachado 414
                                <td class="marcadasCount">
1337 jmachado 415
                                    ${CursoAfeto.marcadas}
416
                                    <logic:greaterThan value="0" name="CursoAfeto" property="marcadas">
417
                                        <span class="glyphicon glyphicon-alert"></span>
418
                                    </logic:greaterThan>
419
                                </td>
1338 jmachado 420
                                <td class="porVerCount"> ... </td>
1378 jmachado 421
                                <td class="porVerProfsCount"> ... </td>
1338 jmachado 422
                                <td class="naoUsadasCount"> ... </td>
423
                                <td class="observadasCount"> ... </td>
1337 jmachado 424
                                <td>
1346 jmachado 425
                                    <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">
1337 jmachado 426
                                        <%=turmasSize%>
427
                                    </a>
428
                                </td>
1394 jmachado 429
                                <td class="tipologiasRequisitadasCount"><%=cursoAfeto.getStatTipologiasRequisitadas()%></td>
430
                                <td class="respostasRequisitadasCount"><%=cursoAfeto.getStatRespostasRequisitadas()%></td>
1338 jmachado 431
 
1394 jmachado 432
 
1337 jmachado 433
                                <td>
434
                                    <nested:checkbox property="usarTipologias" styleClass="courseCheck"/>
435
                                </td>
436
                            </tr>
437
                            <tr id="${CursoAfeto.codigoCurso}unidades" class="collapse">
1338 jmachado 438
                                <td></td>
1395 jmachado 439
                                <td colspan="14" class="unidades"  style="padding-left: 25px">
1337 jmachado 440
                                    <div class="panel panel-default">
441
                                        <div class="panel-body">
442
                                            <p>Por favor aguarde um momento, o sistema está a carregar as unidades curriculares <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
443
                                        </div>
444
                                    </div>
445
                                </td>
446
                            </tr>
447
                    <%
448
                        }
449
                        //DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().evict(cursoAfeto);
450
 
451
 
452
                    %>
453
                    </nested:iterate>
454
                    </tbody>
455
                </table>
456
                </div>
457
            </div>
458
    <%
459
        }
460
    %>
461
 
462
 
463
            <div class="panel panel-primary" id="institutionGerarFinal">
464
                <div class="panel-heading">
1338 jmachado 465
                    Verificação de Atribuições
1337 jmachado 466
                </div>
467
                <div class="panel-body">
468
 
469
 
470
                    <div class="col-sm-6">
471
 
1395 jmachado 472
                        <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>
473
 
1346 jmachado 474
                        <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">
1337 jmachado 475
                            Registo de Mudanças de Estado
476
                        </a>
477
                    </div>
478
                    <div class="col-sm-6">
479
 
480
                    </div>
481
 
482
 
483
                </div>
484
 
485
            </div>
486
            <div class="col-sm-12">
1338 jmachado 487
 
1380 jmachado 488
                <button id="updateTipologiasButton" class="btn btn-success pull-right">Atualizar Tipologias</button>
1346 jmachado 489
                <html:link action="/user/adminQuestionario?questionario.id=${Questionario.id}#NOWTASK" styleClass="btn btn-danger">Voltar à administração</html:link>
1337 jmachado 490
            </div>
491
        </div>
492
 
493
 
494
        </div>
495
    </div>
496
</div>
497
<%
498
    AbstractDao.getCurrentSession().getTransaction().commit();
499
%>
500
 
501
 
502
</html:form>