Subversion Repositories bacoAlunos

Rev

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