Subversion Repositories bacoAlunos

Rev

Rev 1380 | Rev 1394 | 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
 
283
                                $("#cursoAfetoRow" + cursoAfetoId + " .unidadesCount").html(dataJson.unidades);
284
 
285
                            }
286
                    );
287
                }
288
 
1337 jmachado 289
            </script>
290
 
291
    <%
292
        for(String institutionCode: institutionCodes)
293
        {
294
            String institutionName = ConfigProperties.getProperty("institution.code." + institutionCode);
295
 
296
 
297
    %>
298
 
299
 
300
            <div class="panel panel-default" id="institution<%=institutionCode%>" style="display: none">
301
                <div class="panel-heading">
302
                Cursos da <%=institutionName%>
303
            </div>
304
                <div class="panel-body">
305
                    <table class="tablesorter-blue">
306
                    <thead>
307
                    <tr>
1338 jmachado 308
                        <th></th>
1337 jmachado 309
                        <th>Codigo</th>
310
                        <th>Tipo de Curso</th>
311
                        <th>Curso</th>
312
                        <th>Papel Comissão Curso</th>
313
                        <th>Unidades</th>
1338 jmachado 314
                        <th>Alertas </th>
315
                        <th>Por Ver</th>
1378 jmachado 316
                        <th>Por Ver Profs</th>
1338 jmachado 317
                        <th>Não Usadas</th>
318
                        <th>Observadas</th>
1337 jmachado 319
                        <th>Turmas</th>
1338 jmachado 320
 
1337 jmachado 321
                        <th class="filter-false" data-sorter="false">
322
                            <input class="checkAll" type="checkbox" onchange="selectAll('<%=institutionCode%>',this)">
323
                        </th>
324
 
325
                    </tr>
326
                    </thead>
327
                    <tbody>
328
                    <nested:iterate id="cursoAfeto" name="QuestionarioForm" property="cursosAfetos" type="pt.estgp.estgweb.domain.QuestionarioPedagogicoCursoAfetoImpl" scope="request">
329
                    <%
330
 
331
                        if(cursoAfeto.getCodigoInstituicao().equals(institutionCode))
332
                        {
333
                            int turmasSize = DaoFactory.getCourseDaoImpl().countCoursesUnitsTurmas(questionario.getYear(), cursoAfeto.getCourse().getId());
334
                            CourseView cv = new CourseView(cursoAfeto.getCourse());
335
                            request.setAttribute("CourseView",cv);
336
                            request.setAttribute("CursoAfeto",cursoAfeto);
337
 
338
                    %>
1338 jmachado 339
                            <tr id="cursoAfetoRow${cursoAfeto.id}">
1337 jmachado 340
                                <td>
1338 jmachado 341
                                    <script>
342
                                        $(document).ready(
343
 
344
                                                function(){
345
                                                    reloadCursoStats("${cursoAfeto.id}");
346
 
347
                                                    $('#${CursoAfeto.codigoCurso}unidades').on('shown.bs.collapse', function (e) {
348
                                                        if ($(this).is(e.target)) {
349
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-close").addClass("glyphicon-folder-open");
350
                                                        }
351
                                                    });
352
                                                    $('#${CursoAfeto.codigoCurso}unidades').on('hidden.bs.collapse', function (e) {
353
                                                        if ($(this).is(e.target)) {
354
                                                            $("#${CursoAfeto.codigoCurso}unidadesButton .glyphicon").removeClass("glyphicon-folder-open").addClass("glyphicon-folder-close");
355
                                                        }
356
                                                    });
357
                                                }
358
                                        );
359
                                    </script>
360
                                    <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>
361
                                    <script>
362
                                        $(document).ready(
363
                                                function(){
1346 jmachado 364
                                                    $.post("<%=request.getContextPath()%>/user/questionarios/pedagogicoEstudante/pedagogicoCourseCheckCursoAfeto.jsp?cursoAfetoId=${CursoAfeto.id}", function(data) {
1338 jmachado 365
                                                        $("#${CursoAfeto.codigoCurso}unidades .unidades")
366
                                                                .html(data);
367
                                                        evaluateTableSortersInside("#${CursoAfeto.codigoCurso}unidades .unidades");
368
                                                    });
369
                                                }
370
                                        );
371
                                    </script>
372
                                </td>
373
                                <td>
1337 jmachado 374
                                    <nested:hidden property="id"/>
375
                                    ${CourseView.code}
376
                                </td>
377
                                <td><bean:message key="course.${CourseView.degreeCleanCode}"/></td>
378
                                <td>${CourseView.name}</td>
379
                                <td>
380
                                    <logic:notEmpty name="CourseView" property="validationRole">
381
                                        <bean:message key="user.role.${CourseView.validationRole}"/>
382
                                    </logic:notEmpty>
383
                                    <logic:empty name="CourseView" property="validationRole">
384
                                        Papel não atribuido (Corrigir Situação)
385
                                    </logic:empty>
386
                                </td>
1338 jmachado 387
                                <td class="unidadesCount">
1346 jmachado 388
                                    <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">
1337 jmachado 389
                                        <%=cursoAfeto.getUnidadesAfetas().size()%>
390
                                    </a>
391
                                </td>
1338 jmachado 392
                                <td class="marcadasCount">
1337 jmachado 393
                                    ${CursoAfeto.marcadas}
394
                                    <logic:greaterThan value="0" name="CursoAfeto" property="marcadas">
395
                                        <span class="glyphicon glyphicon-alert"></span>
396
                                    </logic:greaterThan>
397
                                </td>
1338 jmachado 398
                                <td class="porVerCount"> ... </td>
1378 jmachado 399
                                <td class="porVerProfsCount"> ... </td>
1338 jmachado 400
                                <td class="naoUsadasCount"> ... </td>
401
                                <td class="observadasCount"> ... </td>
1337 jmachado 402
                                <td>
1346 jmachado 403
                                    <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 404
                                        <%=turmasSize%>
405
                                    </a>
406
                                </td>
1338 jmachado 407
 
1337 jmachado 408
                                <td>
409
                                    <nested:checkbox property="usarTipologias" styleClass="courseCheck"/>
410
                                </td>
411
                            </tr>
412
                            <tr id="${CursoAfeto.codigoCurso}unidades" class="collapse">
1338 jmachado 413
                                <td></td>
414
                                <td colspan="11" class="unidades"  style="padding-left: 25px">
1337 jmachado 415
                                    <div class="panel panel-default">
416
                                        <div class="panel-body">
417
                                            <p>Por favor aguarde um momento, o sistema está a carregar as unidades curriculares <img src="<%=request.getContextPath()%>/imgs/wait.gif"/></p>
418
                                        </div>
419
                                    </div>
420
                                </td>
421
                            </tr>
422
                    <%
423
                        }
424
                        //DaoFactory.getQuestionarioPedagogicoCursoAfetoDaoImpl().evict(cursoAfeto);
425
 
426
 
427
                    %>
428
                    </nested:iterate>
429
                    </tbody>
430
                </table>
431
                </div>
432
            </div>
433
    <%
434
        }
435
    %>
436
 
437
 
438
            <div class="panel panel-primary" id="institutionGerarFinal">
439
                <div class="panel-heading">
1338 jmachado 440
                    Verificação de Atribuições
1337 jmachado 441
                </div>
442
                <div class="panel-body">
443
 
444
 
445
                    <div class="col-sm-6">
1338 jmachado 446
                        <baco:clearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
447
                            <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>
1337 jmachado 448
                        </baco:clearOperation>
1338 jmachado 449
                        <baco:notClearOperation name="Questionario" op="QUESTIONARIO_CHANGE_TIPOLOGIES">
450
                            <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>
451
                        </baco:notClearOperation>
1337 jmachado 452
 
1346 jmachado 453
                        <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 454
                            Registo de Mudanças de Estado
455
                        </a>
456
                    </div>
457
                    <div class="col-sm-6">
458
 
459
                    </div>
460
 
461
 
462
                </div>
463
 
464
            </div>
465
            <div class="col-sm-12">
1338 jmachado 466
 
1380 jmachado 467
                <button id="updateTipologiasButton" class="btn btn-success pull-right">Atualizar Tipologias</button>
1346 jmachado 468
                <html:link action="/user/adminQuestionario?questionario.id=${Questionario.id}#NOWTASK" styleClass="btn btn-danger">Voltar à administração</html:link>
1337 jmachado 469
            </div>
470
        </div>
471
 
472
 
473
        </div>
474
    </div>
475
</div>
476
<%
477
    AbstractDao.getCurrentSession().getTransaction().commit();
478
%>
479
 
480
 
481
</html:form>