Subversion Repositories bacoAlunos

Rev

Rev 1912 | Details | Compare with Previous | Last modification | View Log | RSS feed

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