Subversion Repositories bacoAlunos

Rev

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

Rev Author Line No. Line
1899 grupo6 1
<%@ page
2
        import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultYear" %>
3
<%@ page
4
        import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultSemester" %>
5
<%@ page
6
        import="pt.estgp.estgweb.services.courses.coursereport.documentmodel.learningresults.components.UnitsLearningResultUc" %>
7
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
8
 
9
<!--
10
@section objeto com seccoes e componentes
11
@optional @chapter capitulo do documento para esta seccao para contcatenar às subsections
12
-->
13
 
1906 grupo6 14
<script type="text/ng-template"
15
        id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_CourseUnitsReportsSection">
1899 grupo6 16
    <div class="sections">
17
        <a name="indexCus"></a>
1906 grupo6 18
        <span ng-repeat="cu in section.sections"
19
              ng-init="cu.taxaAprovacao = 100 * cu.courseUnitEvaluation.numAlunosAprovTotal/(cu.courseUnitEvaluation.numAlunosInscritos - cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao)">
20
            <a href="#cu{{$index}}"
21
               ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) || cu.taxaAprovacao &lt; 75 || !cu.courseUnitEvaluation.closed || !cu.courseUnitEvaluation.teacherComplete}">
1899 grupo6 22
                {{cu.title}}
23
            </a> |
24
        </span>
25
        <div ng-repeat="cu in section.sections"
26
             class="section panel-primary">
27
 
28
            <a name="cu{{$index}}"></a>
1906 grupo6 29
            <span ng-if="$index != 0" class="glyphicon glyphicon-backward"></span><a ng-if="$index != 0"
30
                                                                                     href="#indexCus"> Voltar atrás</a>
1899 grupo6 31
            <div class="panel-heading"><h2>{{cu.title}}</h2></div>
32
 
33
            <div style="padding-left:20px">
34
                <div><h3><label class="label label-primary">Estado do Relatório</label></h3></div>
35
 
36
                <div ng-if="cu.courseUnitEvaluation.closed">
37
                    Entregue e Aceite
38
                </div>
1906 grupo6 39
                <div class="alert-danger"
40
                     ng-if="cu.courseUnitEvaluation.closed && !cu.courseUnitEvaluation.teacherComplete">
1899 grupo6 41
                    Entregue mas não foi aprovado pela comissão
42
                </div>
1906 grupo6 43
                <div class="alert-danger"
44
                     ng-if="!cu.courseUnitEvaluation.closed  && !cu.courseUnitEvaluation.teacherComplete">
1899 grupo6 45
                    Não foi entregue pelo docente para validação
46
                </div>
47
 
48
            </div>
49
 
50
 
51
            <div style="padding-left:20px">
52
                <div><h3><label class="label label-primary">Resultados</label></h3></div>
53
                <div>
1906 grupo6 54
                    <table class="tablesorter-blue" width="100%">
1899 grupo6 55
                        <tr>
56
                            <th rowspan="2">
57
                                Nº Alunos Inscritos
58
                            </th>
59
                            <th rowspan="2">
60
                                Nº de alunos sem elementos de avaliação
61
                            </th>
62
                            <th colspan="5">
63
                                Nº de alunos aprovados em
64
                            </th>
65
                            <th colspan="2">
66
                                Aprovados com a classificação entre 10 e 13 valores
67
                            </th>
68
                            <th colspan="2">
69
                                Aprovados com a classificação entre 14 e 16 valores
70
                            </th>
71
                            <th colspan="2">
72
                                Aprovados com a classificação entre 17 e 20 valores
73
                            </th>
74
                        </tr>
75
                        <tr>
76
                            <th>Avaliação de frequência</th>
77
                            <th>Exame Época Normal</th>
78
                            <th>Exame Época Recurso</th>
79
                            <th>Exame Época Especial</th>
80
                            <th>Total</th>
81
                            <th>Nº</th>
82
                            <th>%</th>
83
                            <th>Nº</th>
84
                            <th>%</th>
85
                            <th>Nº</th>
86
                            <th>%</th>
87
                        </tr>
88
                        <tr>
89
                            <td class="text-center">
90
                                {{cu.courseUnitEvaluation.numAlunosInscritos}}
91
                            </td>
92
                            <td class="text-center">
93
                                {{cu.courseUnitEvaluation.numAlunosSemElementosAvaliacao}}
94
                            </td>
95
                            <td class="text-center">
96
                                {{cu.courseUnitEvaluation.numAlunosAprovFrequencia}}
97
                            </td>
98
                            <td class="text-center">
99
                                {{cu.courseUnitEvaluation.numAlunosAprovNormal}}
100
                            </td>
101
                            <td class="text-center">
102
                                {{cu.courseUnitEvaluation.numAlunosAprovRecurso}}
103
                            </td>
104
                            <td style="text-align: center">
105
                                {{cu.courseUnitEvaluation.numAlunosAprovEspecial}}
106
                            </td>
107
                            <td class="text-center">
108
                                {{cu.courseUnitEvaluation.numAlunosAprovTotal}}
109
                            </td>
110
                            <td class="text-center">
111
                                {{cu.courseUnitEvaluation.numAlunosAprov1013}}
112
                            </td>
113
                            <td class="text-center">
114
                                {{cu.courseUnitEvaluation.numAlunosAprov1013Percent}}
115
                            </td>
116
                            <td class="text-center">
117
                                {{cu.courseUnitEvaluation.numAlunosAprov1416}}
118
                            </td>
119
                            <td class="text-center">
120
                                {{cu.courseUnitEvaluation.numAlunosAprov1416Percent}}
121
                            </td>
122
                            <td class="text-center">
123
                                {{cu.courseUnitEvaluation.numAlunosAprov1720}}
124
                            </td>
125
                            <td class="text-center">
126
                                {{cu.courseUnitEvaluation.numAlunosAprov1720Percent}}
127
                            </td>
128
                        </tr>
129
                    </table>
130
                </div>
131
            </div>
132
 
1906 grupo6 133
            <div style="padding-left:20px">
1899 grupo6 134
                <div><h3><label class="label label-primary">Taxa de Aprovação</label></h3></div>
135
                <div ng-class="{ 'alert-danger': cu.taxaAprovacao &lt; 75 }">{{cu.taxaAprovacao}}%</div>
136
            </div>
137
 
138
 
139
            <div style="padding-left:20px">
1906 grupo6 140
                <div><h3><label class="label label-primary">Apreciação dos resultados quantitativos obtidos pelos
141
                    estudantes</label></h3></div>
1899 grupo6 142
                <div>{{cu.courseUnitEvaluation.qualApreciacaoQuantitivos}}</div>
143
            </div>
144
            <div style="padding-left:20px">
145
                <div><h3><label class="label label-primary">Apreciação do funcionamento da UC</label></h3></div>
146
                <div>{{cu.courseUnitEvaluation.qualApreciacaoUC}}</div>
147
            </div>
148
            <div style="padding-left:20px">
1906 grupo6 149
                <div><h3><label class="label label-primary">Percentagem de cumprimento do programa da UC</label></h3>
150
                </div>
1899 grupo6 151
                <div ng-class="{ 'alert-danger': (cu.courseUnitEvaluation.cumprimentoProgramaPercent &lt; 100) }">
152
                    {{cu.courseUnitEvaluation.cumprimentoProgramaPercent}}%
153
                </div>
154
            </div>
155
            <div style="padding-left:20px">
1906 grupo6 156
                <div><h3><label class="label label-primary">Apreciação do cumprimento do programa da UC</label></h3>
157
                </div>
1899 grupo6 158
                <div>{{cu.courseUnitEvaluation.qualApreciacaoCumprimentoPrograma}}</div>
159
            </div>
160
            <div style="padding-left:20px">
161
                <div><h3><label class="label label-primary">Conclusões</label></h3></div>
162
                <div>{{cu.courseUnitEvaluation.qualConclusoes}}</div>
163
            </div>
164
        </div>
165
    </div>
166
</script>
167
 
168
 
169
<style>
1906 grupo6 170
    .dtpstats td, .dtpstats th {
1899 grupo6 171
        text-align: center !important;
172
    }
173
</style>
1906 grupo6 174
<script type="text/ng-template"
175
        id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_reportucsummary_UnitsDtpTable">
1899 grupo6 176
    <div class="sections">
177
 
178
        <table class="table dtpstats">
179
            <thead>
180
            <tr>
181
                <th rowspan="2">Unidade Curricular</th>
182
                <th colspan="2">Planeamento</th>
183
                <th rowspan="2">Ficha Curricular</th>
184
                <th rowspan="2">Sumários</th>
185
                <th colspan="2">Avaliação</th>
186
                <th rowspan="2">Relatório de Avaliação</th>
187
                <th rowspan="2">Inquerito Pedagógico</th>
188
            </tr>
189
            <tr>
190
                <th>Conteúdos</th>
191
                <th>Calendarização</th>
192
                <th>Enunciados</th>
193
                <th>Pautas</th>
194
            </tr>
195
            </thead>
196
            <tbody>
197
            <tr>
198
                <th colspan="9">Semestre 1</th>
199
            </tr>
200
            <tr ng-repeat="dtpStat in comp.semester1.courseUnitDtpStats">
201
                <td>{{dtpStat.name}}</td>
1906 grupo6 202
                <td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox"
203
                                                                                         ng-model="dtpStat.planeamentoConteudos"/>
204
                </td>
205
                <td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox"
206
                                                                                              ng-model="dtpStat.planeamentoCalendarizacao"/>
207
                </td>
208
                <td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/>
209
                </td>
210
                <td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox"
211
                                                                             ng-model="dtpStat.sumarios"/></td>
212
                <td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox"
213
                                                                                        ng-model="dtpStat.avaliacaoEnunciados"/>
214
                </td>
215
                <td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox"
216
                                                                                    ng-model="dtpStat.avaliacaoPautas"/>
217
                </td>
218
                <td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox"
219
                                                                              ng-model="dtpStat.relatorio"/></td>
220
                <td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox"
221
                                                                              ng-model="dtpStat.inquerito"/></td>
1899 grupo6 222
            </tr>
223
            <tr>
224
                <th colspan="9">Semestre 2</th>
225
            </tr>
226
            <tr ng-repeat="dtpStat in comp.semester2.courseUnitDtpStats">
227
                <td>{{dtpStat.name}}</td>
1906 grupo6 228
                <td ng-class="{ 'alert-danger' : !dtpStat.planeamentoConteudos }"><input type="checkbox"
229
                                                                                         ng-model="dtpStat.planeamentoConteudos"/>
230
                </td>
231
                <td ng-class="{ 'alert-danger' : !dtpStat.planeamentoCalendarizacao }"><input type="checkbox"
232
                                                                                              ng-model="dtpStat.planeamentoCalendarizacao"/>
233
                </td>
234
                <td ng-class="{ 'alert-danger' : !dtpStat.ficha }"><input type="checkbox" ng-model="dtpStat.ficha"/>
235
                </td>
236
                <td ng-class="{ 'alert-danger' : !dtpStat.sumarios }"><input type="checkbox"
237
                                                                             ng-model="dtpStat.sumarios"/></td>
238
                <td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoEnunciados }"><input type="checkbox"
239
                                                                                        ng-model="dtpStat.avaliacaoEnunciados"/>
240
                </td>
241
                <td ng-class="{ 'alert-danger' : !dtpStat.avaliacaoPautas }"><input type="checkbox"
242
                                                                                    ng-model="dtpStat.avaliacaoPautas"/>
243
                </td>
244
                <td ng-class="{ 'alert-danger' : !dtpStat.relatorio }"><input type="checkbox"
245
                                                                              ng-model="dtpStat.relatorio"/></td>
246
                <td ng-class="{ 'alert-danger' : !dtpStat.inquerito }"><input type="checkbox"
247
                                                                              ng-model="dtpStat.inquerito"/></td>
1899 grupo6 248
            </tr>
249
            </tbody>
250
        </table>
251
    </div>
252
</script>
253
 
254
 
255
<style>
1906 grupo6 256
    .learning td {
1899 grupo6 257
        font-size: 0.7em;
258
    }
1906 grupo6 259
 
260
    .learning td input {
1899 grupo6 261
        width: 50px;
262
    }
263
 
1906 grupo6 264
    .learning td input:read-only {
1899 grupo6 265
        width: 50px;
266
        background-color: #cccccc;
267
    }
1906 grupo6 268
 
1899 grupo6 269
    .learning tr.year td {
270
        vertical-align: top;
271
        background-color: #aaaaaa;
272
 
273
        font-weight: bold;
274
    }
1906 grupo6 275
 
1899 grupo6 276
    .learning tr.period td {
277
        vertical-align: top;
278
        background-color: #dfdfdf;
279
 
280
    }
281
</style>
1906 grupo6 282
<script type="text/ng-template"
283
        id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_UnitsLearningResultsTable">
1899 grupo6 284
    <unitslearningresultstable>
285
    </unitslearningresultstable>
286
</script>
287
 
288
 
289
<script>
1906 grupo6 290
    angular.module("courseReportApp").directive('boundModel', function () {
291
        return {
292
            require: 'ngModel',
293
            link: function (scope, elem, attrs, ngModel) {
294
                scope.$watch(attrs.boundModel, function (newValue, oldValue) {
295
                    if (newValue != oldValue) {
296
                        ngModel.$setViewValue(newValue);
297
                        ngModel.$render();
298
                    }
299
                });
300
            }
1899 grupo6 301
        }
1906 grupo6 302
    });
303
    angular.module("courseReportApp").directive('unitslearningresultstable', function () {
1899 grupo6 304
 
1906 grupo6 305
        return {
306
            restrict: 'E',
307
            link: function ($scope, element, attrs) {
1899 grupo6 308
 
1906 grupo6 309
                $scope.checkedDocuments = [];
310
                $scope.checkUnit = function (document, collection) {
311
                    if (document.checked) {
312
                        var docContainer =
313
                            {
314
                                "document": document,
315
                                "collection": collection
316
                            }
317
                        $scope.checkedDocuments.push(docContainer);
1899 grupo6 318
                    }
1906 grupo6 319
                    else {
320
                        angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
321
                            if (documentContainer.document == document) {
322
                                var index = $scope.checkedDocuments.indexOf(documentContainer);
323
                                $scope.checkedDocuments.splice(index, 1);
324
                            }
325
                        });
326
                    }
1899 grupo6 327
                }
1906 grupo6 328
                $scope.changeDocumentCollection = function (collection) {
329
                    angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
330
                        collection.ucs.push(documentContainer.document);
331
                        delete documentContainer.document.checked;
1899 grupo6 332
                    });
1906 grupo6 333
                    angular.forEach($scope.checkedDocuments, function (documentContainer, key) {
334
                        var index = documentContainer.collection.ucs.indexOf(documentContainer.document);
335
                        documentContainer.collection.ucs.splice(index, 1);
336
                    });
337
                    $scope.checkedDocuments = [];
1899 grupo6 338
                }
1906 grupo6 339
                $scope.avg = function (field, container, childs) {
340
                    if (!childs || childs.length == 0)
341
                        return 0;
342
                    var sum = 0;
343
                    var c;
344
                    for (c in childs) {
345
                        if (childs[c] && childs[c][field])
346
                            sum += 1 * childs[c][field];
347
                    }
348
                    container[field] = sum / childs.length;
349
                    return container[field];
1899 grupo6 350
                }
1906 grupo6 351
                $scope.percent = function (n, total) {
352
                    if (!n || n == 0 || !total || total == 0)
353
                        return 0;
354
                    return 100 * n / total;
355
                }
356
                $scope.reprovados = function (comp) {
357
                    if (comp.alunosInscritos && comp.semElementos && comp.aprovados)
358
                        return comp.alunosInscritos - comp.semElementos - comp.aprovados;
1899 grupo6 359
                    return 0;
360
                }
1906 grupo6 361
                $scope.removeComponent = function (index, list) {
362
                    list.splice(index, 1);
363
                }
364
                $scope.hasYearUnits = function (year) {
365
                    for (s in year.semesters) {
366
                        if (year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
367
                            return true;
368
                    }
1899 grupo6 369
                    return false;
1906 grupo6 370
                }
371
                $scope.isInvalidAnfHaveUcs = function (year, years, index) {
372
                    if (year.ano > 0)
373
                        return false;
1899 grupo6 374
 
1906 grupo6 375
                    var s;
376
                    for (s in year.semesters) {
377
                        if (year.semesters[s].ucs && year.semesters[s].ucs.length > 0)
378
                            return true;
379
                    }
380
                    years.splice(index, 1);
381
                    return false;
1899 grupo6 382
                }
1906 grupo6 383
                $scope.addUc = function (semestre) {
384
                    semestre.ucs.push(
1899 grupo6 385
                        {
1906 grupo6 386
                            "@class": "<%=UnitsLearningResultUc.class.getName()%>",
387
                            manual: true,
388
                            periodo: semestre.semestre,
1899 grupo6 389
                            alunosInscritos: 0,
390
                            aprovados: 0,
391
                            aprovados1013: 0,
392
                            aprovados1013Percent: 0,
393
                            aprovados1416: 0,
394
                            aprovados1416Percent: 0,
395
                            aprovados1720: 0,
396
                            aprovados1720Percent: 0,
397
                            aprovadosPercent: 0,
398
                            cumprimentoProgramaPercent: 0,
399
                            reprovados: 0,
400
                            reprovadosPercent: 0,
401
                            semElementos: 0,
402
                            semElementosPercent: 0,
1906 grupo6 403
                            sigesCode: 0
1899 grupo6 404
                        }
1906 grupo6 405
                    );
406
                }
407
                $scope.addAno = function (comp) {
408
                    if (!comp.years)
409
                        comp.years = [];
410
                    comp.years.push(
1899 grupo6 411
                        {
1906 grupo6 412
                            ano: 1,
413
                            "@class": "<%=UnitsLearningResultYear.class.getName()%>",
414
                            manual: true,
1899 grupo6 415
                            "alunosInscritos": 0,
416
                            "aprovados": 0,
417
                            "aprovados1013": 0,
418
                            "aprovados1013Percent": 0,
419
                            "aprovados1416": 0,
420
                            "aprovados1416Percent": 0,
421
                            "aprovados1720": 0,
422
                            "aprovados1720Percent": 0,
423
                            "aprovadosPercent": 0,
424
                            "cumprimentoProgramaPercent": 0,
425
                            "reprovados": 0,
426
                            "reprovadosPercent": 0,
427
                            "semElementos": 0,
428
                            "semElementosPercent": 0,
1906 grupo6 429
                            semesters: [
1899 grupo6 430
                                {
1906 grupo6 431
                                    "@class": "<%=UnitsLearningResultSemester.class.getName()%>",
432
                                    manual: true,
433
                                    semestre: "S1",
1899 grupo6 434
                                    alunosInscritos: 0,
435
                                    aprovados: 0,
436
                                    aprovados1013: 0,
437
                                    aprovados1013Percent: 0,
438
                                    aprovados1416: 0,
439
                                    aprovados1416Percent: 0,
440
                                    aprovados1720: 0,
441
                                    aprovados1720Percent: 0,
442
                                    aprovadosPercent: 0,
443
                                    cumprimentoProgramaPercent: 0,
444
                                    reprovados: 0,
445
                                    reprovadosPercent: 0,
446
                                    semElementos: 0,
447
                                    semElementosPercent: 0,
1906 grupo6 448
                                    ucs: []
1899 grupo6 449
                                },
450
                                {
1906 grupo6 451
                                    "@class": "<%=UnitsLearningResultSemester.class.getName()%>",
452
                                    manual: true,
1899 grupo6 453
                                    semestre: "S2",
454
                                    alunosInscritos: 0,
455
                                    aprovados: 0,
456
                                    aprovados1013: 0,
457
                                    aprovados1013Percent: 0,
458
                                    aprovados1416: 0,
459
                                    aprovados1416Percent: 0,
460
                                    aprovados1720: 0,
461
                                    aprovados1720Percent: 0,
462
                                    aprovadosPercent: 0,
463
                                    cumprimentoProgramaPercent: 0,
464
                                    reprovados: 0,
465
                                    reprovadosPercent: 0,
466
                                    semElementos: 0,
467
                                    semElementosPercent: 0,
1906 grupo6 468
                                    ucs: []
1899 grupo6 469
                                }
470
                            ]
471
                        }
1906 grupo6 472
                    );
473
                }
474
 
475
            },
476
            templateUrl: function (elem, attrs) {
477
                return "unitslearningresultstable";
1899 grupo6 478
            }
479
        }
1906 grupo6 480
    });
1899 grupo6 481
</script>
482
<script type="text/ng-template" id="unitslearningresultstable">
483
 
484
 
485
    <div class="sections">
1906 grupo6 486
        <button class="btn btn-success" ng-click="addAno(comp)"><span class="glyphicon glyphicon-plus"></span> Ano
487
            Manual
488
        </button>
1899 grupo6 489
        <table class="table learning">
490
            <thead>
491
            <tr>
492
                <th rowspan="2">Mover</th>
493
                <th rowspan="2">Código</th>
494
                <th rowspan="2">Unidade Curricular</th>
495
                <th rowspan="2">Cumprimento do Programa</th>
496
                <th rowspan="2">Alunos Inscritos</th>
497
                <th colspan="2">Sem Elementos</th>
498
                <th colspan="2">Reprovados</th>
499
                <th colspan="2">Aprovados</th>
500
                <th colspan="2">Aprovados 10-13</th>
501
                <th colspan="2">Aprovados 14-16</th>
502
                <th colspan="2">Aprovados 17-20</th>
503
            </tr>
504
            <tr>
505
                <th>N</th>
506
                <th>%</th>
507
                <th>N</th>
508
                <th>%</th>
509
                <th>N</th>
510
                <th>%</th>
511
                <th>N</th>
512
                <th>%</th>
513
                <th>N</th>
514
                <th>%</th>
515
                <th>N</th>
516
                <th>%</th>
517
            </tr>
518
            </thead>
519
            <tbody>
520
            <tr colspan="17" ng-if="false" ng-repeat-start="year in comp.years"></tr>
521
            <tr class="year">
522
                <td colspan="3" ng-if="year.ano &gt; 0">
523
 
1906 grupo6 524
                    <button ng-disabled="hasYearUnits(year)" class="btn btn-danger btn-xs"
525
                            ng-click="removeComponent($index,comp.years)"><span
526
                            class="glyphicon glyphicon-remove"></span></button>
1899 grupo6 527
                    <span ng-if="!year.manual">{{year.ano}}ª ano</span>
528
                    <span ng-if="year.manual">
1906 grupo6 529
                        <select ng-model="year.ano"
530
                                ng-options="c.v as c.n for c in [{v:1,n:'1º Ano'},{v:2,n:'2º Ano'},{v:3,n:'3º Ano'},{v:4,n:'4º Ano'},{v:5,n:'5º Ano'}]">
1899 grupo6 531
                        </select>
532
                    </span>
533
 
534
                </td>
535
                <td colspan="3" style="font-size: 1.0em !important" ng-if="isInvalidAnfHaveUcs(year,comp.years,$index)">
1906 grupo6 536
                    Unidades que não constam do plano (Verifique a situação com os serviços Académicos antes de
537
                    continuar)
1899 grupo6 538
                    poderão constar de um plano antigo ou ter o código siges desatualizado.
539
                </td>
1906 grupo6 540
                <td><input readonly="true" type="number" ng-model="year.cumprimentoProgramaPercent"
541
                           bound-model="avg('cumprimentoProgramaPercent',year,year.semesters)"></td>
542
                <td><input readonly="true" type="number" ng-model="year.alunosInscritos"
543
                           bound-model="avg('alunosInscritos',year,year.semesters)"></td>
544
                <td><input readonly="true" type="number" ng-model="year.semElementos"
545
                           bound-model="avg('semElementos',year,year.semesters)"></td>
546
                <td><input readonly="true" type="number" ng-model="year.semElementosPercent"
547
                           bound-model="percent(year.semElementos,year.alunosInscritos)"></td>
548
                <td><input readonly="true" type="number" ng-model="year.reprovados" bound-model="reprovados(year)"></td>
549
                <td><input readonly="true" type="number" ng-model="year.reprovadosPercent"
550
                           bound-model="percent(year.reprovados,year.alunosInscritos)"></td>
551
                <td><input readonly="true" type="number" ng-model="year.aprovados"
552
                           bound-model="year.aprovados1013*1 + year.aprovados1416*1 + year.aprovados1720*1"></td>
553
                <td><input readonly="true" type="number" ng-model="year.aprovadosPercent"
554
                           bound-model="percent(year.aprovados,year.alunosInscritos)"></td>
1899 grupo6 555
 
1906 grupo6 556
                <td><input readonly="true" type="number" ng-model="year.aprovados1013"
557
                           bound-model="avg('aprovados1013',year,year.semesters)"></td>
558
                <td><input readonly="true" type="number" ng-model="year.aprovados1013Percent"
559
                           bound-model="percent(year.aprovados1013,year.aprovados)"></td>
560
                <td><input readonly="true" type="number" ng-model="year.aprovados1416"
561
                           bound-model="avg('aprovados1416',year,year.semesters)"></td>
562
                <td><input readonly="true" type="number" ng-model="year.aprovados1416Percent"
563
                           bound-model="percent(year.aprovados1416,year.aprovados)"></td>
564
                <td><input readonly="true" type="number" ng-model="year.aprovados1720"
565
                           bound-model="avg('aprovados1720',year,year.semesters)"></td>
566
                <td><input readonly="true" type="number" ng-model="year.aprovados1720Percent"
567
                           bound-model="percent(year.aprovados1720,year.aprovados)"></td>
1899 grupo6 568
            </tr>
569
 
1906 grupo6 570
            <tr ng-if="false" ng-repeat-start="s in year.semesters"></tr>
1899 grupo6 571
            <tr class="period" ng-if="year.ano &gt; 0 || s.ucs.length > 0">
1906 grupo6 572
                <td colspan="3" class="period">Semestre {{s.semestre}}
573
                    <button ng-click="changeDocumentCollection(s)" data-toggle="tooltip"
574
                            title="Mover unidades para aqui" class="btn btn-xs btn-warning"
575
                            ng-show="checkedDocuments.length"><span class="glyphicon glyphicon-arrow-left"></span>
576
                    </button>
1899 grupo6 577
 
1906 grupo6 578
                    <button class="btn btn-success pull-right" ng-click="addUc(s)"><span
579
                            class="glyphicon glyphicon-plus"></span> UC Manual
580
                    </button>
1899 grupo6 581
                </td>
1906 grupo6 582
                <td><input readonly="true" type="number" ng-model="s.cumprimentoProgramaPercent"
583
                           bound-model="avg('cumprimentoProgramaPercent',s,s.ucs)"></td>
584
                <td><input readonly="true" type="number" ng-model="s.alunosInscritos"
585
                           bound-model="avg('alunosInscritos',s,s.ucs)"></td>
586
                <td><input readonly="true" type="number" ng-model="s.semElementos"
587
                           bound-model="avg('semElementos',s,s.ucs)"></td>
588
                <td><input readonly="true" type="number" ng-model="s.semElementosPercent"
589
                           bound-model="percent(s.semElementos,s.alunosInscritos)"></td>
590
                <td><input readonly="true" type="number" ng-model="s.reprovados" bound-model="reprovados(s)"></td>
591
                <td><input readonly="true" type="number" ng-model="s.reprovadosPercent"
592
                           bound-model="percent(s.reprovados,s.alunosInscritos)"></td>
593
                <td><input readonly="true" type="number" ng-model="s.aprovados"
594
                           bound-model="s.aprovados1013*1 + s.aprovados1416*1 + s.aprovados1720*1"></td>
595
                <td><input readonly="true" type="number" ng-model="s.aprovadosPercent"
596
                           bound-model="percent(s.aprovados,s.alunosInscritos)"></td>
1899 grupo6 597
 
1906 grupo6 598
                <td><input readonly="true" type="number" ng-model="s.aprovados1013"
599
                           bound-model="avg('aprovados1013',s,s.ucs)"></td>
600
                <td><input readonly="true" type="number" ng-model="s.aprovados1013Percent"
601
                           bound-model="percent(s.aprovados1013,s.aprovados)"></td>
602
                <td><input readonly="true" type="number" ng-model="s.aprovados1416"
603
                           bound-model="avg('aprovados1416',s,s.ucs)"></td>
604
                <td><input readonly="true" type="number" ng-model="s.aprovados1416Percent"
605
                           bound-model="percent(s.aprovados1416,s.aprovados)"></td>
606
                <td><input readonly="true" type="number" ng-model="s.aprovados1720"
607
                           bound-model="avg('aprovados1720',s,s.ucs)"></td>
608
                <td><input readonly="true" type="number" ng-model="s.aprovados1720Percent"
609
                           bound-model="percent(s.aprovados1720,s.aprovados)"></td>
1899 grupo6 610
            </tr>
1906 grupo6 611
            <tr ng-repeat="u in s.ucs" ng-class="{'alert-danger': u.error}">
612
                <td><input ng-model="u.error" type="hidden"
613
                           bound-model="u.alunosInscritos < (u.aprovados*1 + u.semElementos*1)">
1899 grupo6 614
                    <input ng-model="u.checked" ng-click="checkUnit(u,s)" type="checkbox"></td>
615
                <td><input type="text" ng-readonly="!u.manual || u.manual == false" ng-model="u.sigesCode"></td>
616
                <td>
617
 
618
                    <input type="text" style="width: 150px" ng-if="!(!u.manual || u.manual == false)" ng-model="u.name">
619
                    <span ng-if="(!u.manual || u.manual == false)">{{u.name}}</span>
1906 grupo6 620
                    <button class="btn btn-danger btn-xs pull-right" ng-if="!(!u.manual || u.manual == false)"
621
                            ng-click="removeComponent(index,s.ucs)"><span class="glyphicon glyphicon-remove"></span>
622
                    </button>
1899 grupo6 623
                </td>
624
                <td><input type="number" ng-model="u.cumprimentoProgramaPercent"></td>
625
                <td><input type="number" ng-model="u.alunosInscritos"></td>
626
                <td><input type="number" ng-model="u.semElementos"></td>
1906 grupo6 627
                <td><input readonly="true" type="number" ng-model="u.semElementosPercent"
628
                           bound-model="percent(u.semElementos,u.alunosInscritos)"></td>
1899 grupo6 629
                <td><input readonly="true" type="number" ng-model="u.reprovados" bound-model="reprovados(u)"></td>
1906 grupo6 630
                <td><input readonly="true" type="number" ng-model="u.reprovadosPercent"
631
                           bound-model="percent(u.reprovados,u.alunosInscritos)"></td>
632
                <td><input readonly="true" type="number" ng-model="u.aprovados"
633
                           bound-model="u.aprovados1013*1 + u.aprovados1416*1 + u.aprovados1720*1"></td>
634
                <td><input readonly="true" type="number" ng-model="u.aprovadosPercent"
635
                           bound-model="percent(u.aprovados,u.alunosInscritos)"></td>
1899 grupo6 636
 
637
                <td><input type="number" ng-model="u.aprovados1013"></td>
1906 grupo6 638
                <td><input readonly="true" type="number" ng-model="u.aprovados1013Percent"
639
                           bound-model="percent(u.aprovados1013,u.aprovados)"></td>
1899 grupo6 640
                <td><input type="number" ng-model="u.aprovados1416"></td>
1906 grupo6 641
                <td><input readonly="true" type="number" ng-model="u.aprovados1416Percent"
642
                           bound-model="percent(u.aprovados1416,u.aprovados)"></td>
1899 grupo6 643
                <td><input type="number" ng-model="u.aprovados1720"></td>
1906 grupo6 644
                <td><input readonly="true" type="number" ng-model="u.aprovados1720Percent"
645
                           bound-model="percent(u.aprovados1720,u.aprovados)"></td>
1899 grupo6 646
            </tr>
647
            <tr ng-if="false" ng-repeat-end></tr>
648
            <tr ng-if="false" ng-repeat-end></tr>
649
            <tr class="year">
650
                <td colspan="3">Resultados Globais</td>
651
 
652
 
1906 grupo6 653
                <td><input readonly="true" type="number" ng-model="comp.cumprimentoProgramaPercent"
654
                           bound-model="avg('cumprimentoProgramaPercent',comp,comp.years)"></td>
655
                <td><input readonly="true" type="number" ng-model="comp.alunosInscritos"
656
                           bound-model="avg('alunosInscritos',comp,comp.years)"></td>
657
                <td><input readonly="true" type="number" ng-model="comp.semElementos"
658
                           bound-model="avg('semElementos',comp,comp.years)"></td>
659
                <td><input readonly="true" type="number" ng-model="comp.semElementosPercent"
660
                           bound-model="percent(comp.semElementos,comp.alunosInscritos)"></td>
661
                <td><input readonly="true" type="number" ng-model="comp.reprovados" bound-model="reprovados(comp)"></td>
662
                <td><input readonly="true" type="number" ng-model="comp.reprovadosPercent"
663
                           bound-model="percent(comp.reprovados,comp.alunosInscritos)"></td>
664
                <td><input readonly="true" type="number" ng-model="comp.aprovados"
665
                           bound-model="comp.aprovados1013*1 + comp.aprovados1416*1 + comp.aprovados1720*1"></td>
666
                <td><input readonly="true" type="number" ng-model="comp.aprovadosPercent"
667
                           bound-model="percent(comp.aprovados,comp.alunosInscritos)"></td>
1899 grupo6 668
 
1906 grupo6 669
                <td><input readonly="true" type="number" ng-model="comp.aprovados1013"
670
                           bound-model="avg('aprovados1013',comp,comp.years)"></td>
671
                <td><input readonly="true" type="number" ng-model="comp.aprovados1013Percent"
672
                           bound-model="percent(comp.aprovados1013,comp.aprovados)"></td>
673
                <td><input readonly="true" type="number" ng-model="comp.aprovados1416"
674
                           bound-model="avg('aprovados1416',comp,comp.years)"></td>
675
                <td><input readonly="true" type="number" ng-model="comp.aprovados1416Percent"
676
                           bound-model="percent(comp.aprovados1416,comp.aprovados)"></td>
677
                <td><input readonly="true" type="number" ng-model="comp.aprovados1720"
678
                           bound-model="avg('aprovados1720',comp,comp.years)"></td>
679
                <td><input readonly="true" type="number" ng-model="comp.aprovados1720Percent"
680
                           bound-model="percent(comp.aprovados1720,comp.aprovados)"></td>
1899 grupo6 681
            </tr>
682
            </tbody>
683
        </table>
684
        <%--<pre class="code">{{ comp | json }}</pre>--%>
685
    </div>
686
</script>
687
 
688
 
1906 grupo6 689
<script type="text/ng-template"
690
        id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartImg">
691
    <globallearningresultschartimg>
692
    </globallearningresultschartimg>
693
</script>
694
<script>
695
    angular.module("courseReportApp").directive('globallearningresultschartimg', function () {
1899 grupo6 696
 
1906 grupo6 697
        return {
698
            restrict: 'E',
699
            link: function ($scope, element, attrs) {
700
                $scope.generateChart = function (comp) {
1899 grupo6 701
 
1906 grupo6 702
                    widgetCallWithActionParameters(
703
                        "<%=request.getContextPath()%>/user/courseReport.do",
704
                        "generateGlobalLearningResultsChartImg",
705
                        {
706
                            "courseReportDocument": BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
707
                        },
708
                        "#courseReportApp",
1912 grupo6 709
                        function (chart) {
710
                            comp.image = chart.image;
711
                            comp.WIDTH = chart.WIDTH;
712
                            comp.HEIGHT = chart.HEIGHT;
1906 grupo6 713
                            comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime();
714
                            angular.element($("#courseReportApp")).scope().$apply();
715
                        },
716
                        function () {
717
                        }
718
                    );
719
                }
1899 grupo6 720
 
721
 
1906 grupo6 722
            },
723
            templateUrl: function (elem, attrs) {
724
                return "globallearningresultschartimg";
725
            }
726
        }
727
    });
728
</script>
729
<script type="text/ng-template" id="globallearningresultschartimg">
730
    <div class="imageComponent component">
1899 grupo6 731
 
1906 grupo6 732
        <div class="componentBody">
733
            <div class="form-group clearfix">
734
                <label class="col-md-2 control-label">Legenda</label>
735
                <div class="col-md-10">
736
                    <input type="text" class="form-control" rows="10" ng-model="comp.title">
737
                </div>
738
            </div>
739
            <div class="form-group clearfix">
740
                <div class="col-md-2 control-label">
741
                    <button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Gráfico</button>
742
                </div>
743
                <div class="col-md-10">
744
                    <label ng-if="comp.image.identifier"> Limites do PDF </label>
745
                    <div ng-if="comp.image.identifier"
746
                         style="text-align: center; width: 595px; border: 1px solid black; padding: 45px">
747
                        <center>
1912 grupo6 748
                            <div style="width:'{{comp.width}}'px ;height:'{{comp.height}}'px; max-width: 500px; max-height: 750px" resizable
1906 grupo6 749
                                 on-resize="resize($evt, $ui, comp)">
750
                                <img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
751
                                <img ng-if="!comp.imageUrl" style="width: 100%;height: 100%"
752
                                     ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}">
753
                            </div>
754
                            (Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
755
                        </center>
756
                    </div>
757
                </div>
758
            </div>
759
        </div>
760
    </div>
761
</script>
1899 grupo6 762
 
763
 
1906 grupo6 764
<script type="text/ng-template"
765
        id="pt_estgp_estgweb_services_courses_coursereport_documentmodel_learningresults_components_GlobalLearningResultsChartYearImg">
766
    <globallearningresultschartyearimg>
767
    </globallearningresultschartyearimg>
1899 grupo6 768
</script>
769
<script>
1906 grupo6 770
    angular.module("courseReportApp").directive('globallearningresultschartyearimg', function () {
1899 grupo6 771
 
772
        return {
773
            restrict: 'E',
1906 grupo6 774
            link: function ($scope, element, attrs) {
775
                $scope.generateChart = function (comp) {
1899 grupo6 776
 
777
                    widgetCallWithActionParameters(
1906 grupo6 778
                        "<%=request.getContextPath()%>/user/courseReport.do",
779
                        "generateGlobalLearningResultsChartYearImg",
780
                        {
781
                            "courseReportDocument": BacoJS.stringifyOrdered(angular.element($("#courseReportApp")).scope().report)
782
                        },
783
                        "#courseReportApp",
1912 grupo6 784
                        function (chart) {
785
                            comp.image = chart.image;
786
                            comp.WIDTH = chart.WIDTH;
787
                            comp.HEIGHT = chart.HEIGHT;
1906 grupo6 788
                            comp.imageUrl = "<%=request.getContextPath()%>/repositoryStream/" + comp.image.identifier + "?" + new Date().getTime();
789
                            angular.element($("#courseReportApp")).scope().$apply();
790
                        },
791
                        function () {
792
                        }
1899 grupo6 793
                    );
794
                }
795
 
796
 
797
            },
1906 grupo6 798
            templateUrl: function (elem, attrs) {
799
                return "globallearningresultschartyearimg";
1899 grupo6 800
            }
801
        }
802
    });
803
</script>
1906 grupo6 804
<script type="text/ng-template" id="globallearningresultschartyearimg">
1899 grupo6 805
    <div class="imageComponent component">
806
 
807
        <div class="componentBody">
1909 grupo6 808
            <div class="form-group clearfix">
1899 grupo6 809
                <label class="col-md-2 control-label">Legenda</label>
810
                <div class="col-md-10">
811
                    <input type="text" class="form-control" rows="10" ng-model="comp.title">
812
                </div>
1909 grupo6 813
            </div>
1899 grupo6 814
            <div class="form-group clearfix">
815
                <div class="col-md-2 control-label">
816
                    <button class="btn btn-default" ng-click="generateChart(comp)">Refrescar/Gerar Gráfico</button>
817
                </div>
818
                <div class="col-md-10">
819
                    <label ng-if="comp.image.identifier"> Limites do PDF </label>
1906 grupo6 820
                    <div ng-if="comp.image.identifier"
821
                         style="text-align: center; width: 595px; border: 1px solid black; padding: 45px">
1899 grupo6 822
                        <center>
1912 grupo6 823
                            <div style="width:'{{comp.width}}'px ;height:'{{comp.height}}'px; max-width: 500px; max-height: 750px" resizable
1906 grupo6 824
                                 on-resize="resize($evt, $ui, comp)">
825
                                <img ng-if="comp.imageUrl" style="width: 100%;height: 100%" ng-src="{{comp.imageUrl}}">
826
                                <img ng-if="!comp.imageUrl" style="width: 100%;height: 100%"
827
                                     ng-src="{{'<%=request.getContextPath()%>/repositoryStream/' + comp.image.identifier}}">
1899 grupo6 828
                            </div>
829
                            (Se desejar altere o tamanho da imagem arrastando no canto inferior direito)
830
                        </center>
831
                    </div>
832
                </div>
833
            </div>
834
        </div>
835
    </div>
1909 grupo6 836
</script>
837
 
838
 
839
<!-- TESTE -->
840