Subversion Repositories bacoAlunos

Rev

Rev 1906 | Rev 1909 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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