Subversion Repositories bacoAlunos

Rev

Rev 1675 | Rev 1775 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1675 Rev 1692
1
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
1
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
2
<%
2
<%
3
    String FILE_INPUT_ID = "filesInputId-UPLOAD";
3
    String FILE_INPUT_ID = "filesInputId-UPLOAD";
4
    request.setAttribute("FILE_INPUT_ID",FILE_INPUT_ID);
4
    request.setAttribute("FILE_INPUT_ID",FILE_INPUT_ID);
5
%>
5
%>
6
<style>
6
<style>
7
    .file-drop-zone
7
    .file-drop-zone
8
    {
8
    {
9
        height: inherit;
9
        height: inherit;
10
    }
10
    }
11
</style>
11
</style>
12
 
12
 
13
<script>
13
<script>
14
    var uploadMultipleFiles = false;
14
    var uploadMultipleFiles = false;
15
    //Token para transmitir informação entre chamador e chamado
15
    //Token para transmitir informação entre chamador e chamado
16
    var token = "";
16
    var token = "";
17
</script>
17
</script>
18
 
18
 
19
 
19
 
20
 
20
 
21
 
21
 
22
 
22
 
23
<div class="modal fade filesUploadModal" id="filesUploadModal" tabindex="-1" role="dialog"
23
<div class="modal fade filesUploadModal" id="filesUploadModal" tabindex="-1" role="dialog"
24
      ng-app="filesUploadModule" ng-controller="filesUploadModuleController">
24
      ng-app="filesUploadModule" ng-controller="filesUploadModuleController">
25
    <div class="modal-dialog" data-width="960" style="display: block; width: 960px; margin-top: 50px;" aria-hidden="false">
25
    <div class="modal-dialog" data-width="960" style="display: block; width: 960px; margin-top: 50px;" aria-hidden="false">
26
        <div class="modal-content">
26
        <div class="modal-content">
27
            <div class="modal-header clearfix">
27
            <div class="modal-header clearfix">
28
                <h3 class="modal-title">
28
                <h3 class="modal-title">
29
                    <label class="title-wrap"></label>
29
                    <label class="title-wrap"></label>
30
                    <button type="button" class="btn btn-danger btn-xs pull-right" data-dismiss="modal"><span class="glyphicon glyphicon-remove small"></span></button>
30
                    <button type="button" class="btn btn-danger btn-xs pull-right" data-dismiss="modal"><span class="glyphicon glyphicon-remove small"></span></button>
31
                </h3>
31
                </h3>
32
            </div>
32
            </div>
33
            <div class="modal-body">
33
            <div class="modal-body">
34
                <form id="files-upload-form" accept-charset="UTF-8">
34
                <form id="files-upload-form" accept-charset="UTF-8">
35
                    <%--
35
                    <%--
36
                    <p>TODO  - Colocar isto a hidden depois dos testes</p>
36
                    <p>TODO  - Colocar isto a hidden depois dos testes</p>
37
                    --%>
37
                    --%>
38
                    <input type="hidden" name="jsonFiles" id="jsonFiles" value="{{jsonFiles()}}" class="form-control">
38
                    <input type="hidden" name="jsonFiles" id="jsonFiles" value="{{jsonFiles()}}" class="form-control">
39
                    <div class="web-messages">
39
                    <div class="web-messages">
40
 
40
 
41
                    </div>
41
                    </div>
42
 
42
 
43
                    <div id="errorBlock" class="help-block"></div>
43
                    <div id="errorBlock" class="help-block"></div>
44
                    <br/>
44
                    <br/>
45
                    <div ng-if="uploadedFiles.length > 0">
45
                    <div ng-if="uploadedFiles.length > 0">
46
                        <label class="control-label">Ficheiros Importados:</label>
46
                        <label class="control-label">Ficheiros Importados:</label>
47
 
47
 
48
                        <div class="list-group">
48
                        <div class="list-group">
49
                            <div class="list-group-item clearfix" ng-repeat="f in uploadedFiles">
49
                            <div class="list-group-item clearfix" ng-repeat="f in uploadedFiles">
50
                                <div class="list-group-item clearfix">
50
                                <div class="list-group-item clearfix">
51
                                    <div class="col-md-10">
51
                                    <div class="col-md-10">
52
                                        <img src="<%=request.getContextPath()%>/imgs/mime/{{ f.extension }}.gif"/> - {{ f.fileName }} {{ (f.fileSize / 1024)| number:0 }}KB
52
                                        <img src="<%=request.getContextPath()%>/imgs/mime/{{f.extension}}.gif"/> - {{ f.fileName }} {{ (f.fileSize / 1024)| number:0 }}KB
53
                                    </div>
53
                                    </div>
54
                                    <div class="col-md-2">
54
                                    <div class="col-md-2">
55
                                        <button class="btn btn-danger" type="button" ng-click="removeFileFromModel(f.tmpName)"><span class="glyphicon glyphicon-remove"/></button>
55
                                        <button class="btn btn-danger" type="button" ng-click="removeFileFromModel(f.tmpName)"><span class="glyphicon glyphicon-remove"/></button>
56
                                    </div>
56
                                    </div>
57
                                </div>
57
                                </div>
58
                                <div ng-show="showMetaFields == true" class="list-group-item clearfix">
58
                                <div ng-show="showMetaFields == true" class="list-group-item clearfix">
59
                                    <div class=" col-md-2 control-label">Titulo:</div>
59
                                    <div class=" col-md-2 control-label">Titulo:</div>
60
                                    <div class="col-md-10 control-label">
60
                                    <div class="col-md-10 control-label">
61
                                        <input type="text" class="form-control" ng-model="f.title"/>
61
                                        <input type="text" class="form-control" ng-model="f.title"/>
62
                                    </div>
62
                                    </div>
63
                                </div>
63
                                </div>
64
                                <div ng-show="showMetaFields == true" class="list-group-item clearfix">
64
                                <div ng-show="showMetaFields == true" class="list-group-item clearfix">
65
                                    <div class="col-md-2 control-label">Descrição:</div>
65
                                    <div class="col-md-2 control-label">Descrição:</div>
66
                                    <div class="col-md-10 control-label">
66
                                    <div class="col-md-10 control-label">
67
                                        <textarea rows="3" class="form-control" ng-model="f.description"></textarea>
67
                                        <textarea rows="3" class="form-control" ng-model="f.description"></textarea>
68
                                    </div>
68
                                    </div>
69
                                </div>
69
                                </div>
70
                            </div>
70
                            </div>
71
                        </div>
71
                        </div>
72
                    </div>
72
                    </div>
73
 
73
 
74
                    <label class="control-label">Selecione os ficheiros a importar</label>
74
                    <label class="control-label">Selecione os ficheiros a importar</label>
75
                    <input id="${FILE_INPUT_ID}" name="${FILE_INPUT_ID}[]" multiple type="file" data-preview-file-type="text" class="file-loading">
75
                    <input id="${FILE_INPUT_ID}" name="${FILE_INPUT_ID}[]" multiple type="file" data-preview-file-type="text" class="file-loading">
76
 
76
 
77
                </form>
77
                </form>
78
            </div>
78
            </div>
79
            <div class="modal-footer">
79
            <div class="modal-footer">
80
                <button type="button" class="btn btn-danger pull-left" data-dismiss="modal">Cancelar</button>
80
                <button type="button" class="btn btn-danger pull-left" data-dismiss="modal">Cancelar</button>
81
                <button class="btn btn-success btn-ok" >Confirmar</button>
81
                <button class="btn btn-success btn-ok" >Confirmar</button>
82
            </div>
82
            </div>
83
        </div>
83
        </div>
84
    </div>
84
    </div>
85
</div>
85
</div>
86
 
86
 
87
 
87
 
88
<script>
88
<script>
89
 
89
 
90
 
90
 
91
 
91
 
92
 
92
 
93
    $('.filesUploadModal').on('show.bs.modal', function(e)
93
    $('.filesUploadModal').on('show.bs.modal', function(e)
94
    {
94
    {
95
 
95
 
96
 
96
 
97
 
97
 
98
        $("#filesUploadModal .modal-title .title-wrap").html($(e.relatedTarget).data('title'));
98
        $("#filesUploadModal .modal-title .title-wrap").html($(e.relatedTarget).data('title'));
99
        if($(e.relatedTarget).data('multiple') != null && $(e.relatedTarget).data('multiple') == true)
99
        if($(e.relatedTarget).data('multiple') != null && $(e.relatedTarget).data('multiple') == true)
100
        {
100
        {
101
            uploadMultipleFiles = true;
101
            uploadMultipleFiles = true;
102
            $("#${FILE_INPUT_ID}").attr( "multiple" );
102
            $("#${FILE_INPUT_ID}").attr( "multiple" );
103
        }
103
        }
104
        else if($(e.relatedTarget).data('multiple') != null)
104
        else if($(e.relatedTarget).data('multiple') != null)
105
        {
105
        {
106
            uploadMultipleFiles = false;
106
            uploadMultipleFiles = false;
107
            $("#${FILE_INPUT_ID}").removeAttr( "multiple" );
107
            $("#${FILE_INPUT_ID}").removeAttr( "multiple" );
108
        }
108
        }
109
        else
109
        else
110
        {
110
        {
111
            $("#${FILE_INPUT_ID}").attr( "multiple" );
111
            $("#${FILE_INPUT_ID}").attr( "multiple" );
112
        }
112
        }
113
 
113
 
114
        token = "";
114
        token = "";
115
        if($(e.relatedTarget).data('token'))
115
        if($(e.relatedTarget).data('token'))
116
        {
116
        {
117
 
117
 
118
            token = $(e.relatedTarget).data('token');
118
            token = $(e.relatedTarget).data('token');
119
 
119
 
120
        }
120
        }
121
 
121
 
122
 
122
 
123
        if($(e.relatedTarget).data('showmetafields') != null && $(e.relatedTarget).data('showmetafields') == true)
123
        if($(e.relatedTarget).data('showmetafields') != null && $(e.relatedTarget).data('showmetafields') == true)
124
        {
124
        {
125
            angular.element($("#filesUploadModal")).scope().showMetaFields = true;
125
            angular.element($("#filesUploadModal")).scope().showMetaFields = true;
126
        }
126
        }
127
        else if($(e.relatedTarget).data('showmetafields') != null)
127
        else if($(e.relatedTarget).data('showmetafields') != null)
128
        {
128
        {
129
            angular.element($("#filesUploadModal")).scope().showMetaFields = false;
129
            angular.element($("#filesUploadModal")).scope().showMetaFields = false;
130
        }
130
        }
131
        else
131
        else
132
        {
132
        {
133
            angular.element($("#filesUploadModal")).scope().showMetaFields = true;
133
            angular.element($("#filesUploadModal")).scope().showMetaFields = true;
134
        }
134
        }
135
 
135
 
136
        angular.element($("#filesUploadModal")).scope().uploadedFiles = [];
136
        angular.element($("#filesUploadModal")).scope().uploadedFiles = [];
137
        angular.element($("#filesUploadModal")).scope().$apply();
137
        angular.element($("#filesUploadModal")).scope().$apply();
138
 
138
 
139
        jsonTargetId = $(e.relatedTarget).data('jsontargetid');
139
        jsonTargetId = $(e.relatedTarget).data('jsontargetid');
140
        $(this).find('.btn-ok').unbind('click').click(
140
        $(this).find('.btn-ok').unbind('click').click(
141
                function()
141
                function()
142
                {
142
                {
143
                    var filesCount = $('#${FILE_INPUT_ID}').fileinput('getFilesCount');
143
                    var filesCount = $('#${FILE_INPUT_ID}').fileinput('getFilesCount');
144
                    if(filesCount > 0)
144
                    if(filesCount > 0)
145
                    {
145
                    {
146
                        var msg = "Existem ficheiros pendentes de CARREGAR!! Por favor clique em CARREGAR para enviar os ficheiros selecionados para o Servidor.";
146
                        var msg = "Existem ficheiros pendentes de CARREGAR!! Por favor clique em CARREGAR para enviar os ficheiros selecionados para o Servidor.";
147
                        if(angular.element($("#filesUploadModal")).scope().uploadedFiles.length > 0)
147
                        if(angular.element($("#filesUploadModal")).scope().uploadedFiles.length > 0)
148
                            msg +=  " Caso não pretenda importar os ficheiros pendentes poderá removê-los ('REMOVER') e confirmar os ficheiros já importados.";
148
                            msg +=  " Caso não pretenda importar os ficheiros pendentes poderá removê-los ('REMOVER') e confirmar os ficheiros já importados.";
149
                        alert(msg);
149
                        alert(msg);
150
                    }
150
                    }
151
                    else if(angular.element($("#filesUploadModal")).scope().uploadedFiles.length == 0)
151
                    else if(angular.element($("#filesUploadModal")).scope().uploadedFiles.length == 0)
152
                    {
152
                    {
153
                        alert("Não existem ficheiros para confirmar. Importe os ficheiros que desejar ou cancele este formulário.")
153
                        alert("Não existem ficheiros para confirmar. Importe os ficheiros que desejar ou cancele este formulário.")
154
                    }
154
                    }
155
                    else
155
                    else
156
                    {
156
                    {
157
                        var jsonContent = $("#jsonFiles").val();
157
                        var jsonContent = $("#jsonFiles").val();
158
                        $(jsonTargetId).val(jsonContent);
158
                        $(jsonTargetId).val(jsonContent);
159
                        $(jsonTargetId).change();
159
                        $(jsonTargetId).change();
160
                        $("#${FILE_INPUT_ID}").fileinput('clear');
160
                        $("#${FILE_INPUT_ID}").fileinput('clear');
161
 
161
 
162
                        angular.element($("#filesUploadModal")).scope().uploadedFiles = [];
162
                        angular.element($("#filesUploadModal")).scope().uploadedFiles = [];
163
                        angular.element($("#filesUploadModal")).scope().$apply();
163
                        angular.element($("#filesUploadModal")).scope().$apply();
164
                        $('#filesUploadModal').modal('hide');
164
                        $('#filesUploadModal').modal('hide');
165
                    }
165
                    }
166
 
166
 
167
                }
167
                }
168
        );
168
        );
169
        $("#${FILE_INPUT_ID}").fileinput('clear');
169
        $("#${FILE_INPUT_ID}").fileinput('clear');
170
 
170
 
171
 
171
 
172
    });
172
    });
173
 
173
 
174
    var filesUploadModule = angular.module('filesUploadModule', []);
174
    var filesUploadModule = angular.module('filesUploadModule', []);
175
    GLOBAL_BacoAngularAppDependencies.push('filesUploadModule');
175
    GLOBAL_BacoAngularAppDependencies.push('filesUploadModule');
176
 
176
 
177
 
177
 
178
    filesUploadModule.controller('filesUploadModuleController', function($scope) {
178
    filesUploadModule.controller('filesUploadModuleController', function($scope) {
179
        //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
179
        //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
180
        $scope.uploadedFiles = [];
180
        $scope.uploadedFiles = [];
181
        $scope.showMetaFields = true;
181
        $scope.showMetaFields = true;
182
        $scope.jsonFiles = function() {
182
        $scope.jsonFiles = function() {
183
            return {"service":"ok", "token":token, "uploadedFiles": $scope.uploadedFiles };
183
            return {"service":"ok", "token":token, "uploadedFiles": $scope.uploadedFiles };
184
        };
184
        };
185
        $scope.addRows = function(uploadedFilesToPush) {
185
        $scope.addRows = function(uploadedFilesToPush) {
186
            for(var i in uploadedFilesToPush)
186
            for(var i in uploadedFilesToPush)
187
            {
187
            {
188
                $scope.uploadedFiles.push(uploadedFilesToPush[i]);
188
                $scope.uploadedFiles.push(uploadedFilesToPush[i]);
189
                $scope.$apply();
189
                $scope.$apply();
190
            }
190
            }
191
        };
191
        };
192
        $scope.removeFileFromModel = function(tmpName)
192
        $scope.removeFileFromModel = function(tmpName)
193
        {
193
        {
194
            for(var i in $scope.uploadedFiles)
194
            for(var i in $scope.uploadedFiles)
195
            {
195
            {
196
                if($scope.uploadedFiles[i].tmpName == tmpName)
196
                if($scope.uploadedFiles[i].tmpName == tmpName)
197
                {
197
                {
198
                    $scope.uploadedFiles.splice(i,1);
198
                    $scope.uploadedFiles.splice(i,1);
199
                }
199
                }
200
            }
200
            }
201
 
201
 
202
        }
202
        }
203
    });
203
    });
204
 
204
 
205
    /*
205
    /*
206
    var defaultDiacriticsRemovalMap = [
206
    var defaultDiacriticsRemovalMap = [
207
        {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
207
        {'base':'A', 'letters':'\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F'},
208
        {'base':'AA','letters':'\uA732'},
208
        {'base':'AA','letters':'\uA732'},
209
        {'base':'AE','letters':'\u00C6\u01FC\u01E2'},
209
        {'base':'AE','letters':'\u00C6\u01FC\u01E2'},
210
        {'base':'AO','letters':'\uA734'},
210
        {'base':'AO','letters':'\uA734'},
211
        {'base':'AU','letters':'\uA736'},
211
        {'base':'AU','letters':'\uA736'},
212
        {'base':'AV','letters':'\uA738\uA73A'},
212
        {'base':'AV','letters':'\uA738\uA73A'},
213
        {'base':'AY','letters':'\uA73C'},
213
        {'base':'AY','letters':'\uA73C'},
214
        {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
214
        {'base':'B', 'letters':'\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181'},
215
        {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
215
        {'base':'C', 'letters':'\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E'},
216
        {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0'},
216
        {'base':'D', 'letters':'\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779\u00D0'},
217
        {'base':'DZ','letters':'\u01F1\u01C4'},
217
        {'base':'DZ','letters':'\u01F1\u01C4'},
218
        {'base':'Dz','letters':'\u01F2\u01C5'},
218
        {'base':'Dz','letters':'\u01F2\u01C5'},
219
        {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
219
        {'base':'E', 'letters':'\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E'},
220
        {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
220
        {'base':'F', 'letters':'\u0046\u24BB\uFF26\u1E1E\u0191\uA77B'},
221
        {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
221
        {'base':'G', 'letters':'\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E'},
222
        {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
222
        {'base':'H', 'letters':'\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D'},
223
        {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
223
        {'base':'I', 'letters':'\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197'},
224
        {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
224
        {'base':'J', 'letters':'\u004A\u24BF\uFF2A\u0134\u0248'},
225
        {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
225
        {'base':'K', 'letters':'\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2'},
226
        {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
226
        {'base':'L', 'letters':'\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780'},
227
        {'base':'LJ','letters':'\u01C7'},
227
        {'base':'LJ','letters':'\u01C7'},
228
        {'base':'Lj','letters':'\u01C8'},
228
        {'base':'Lj','letters':'\u01C8'},
229
        {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
229
        {'base':'M', 'letters':'\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C'},
230
        {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
230
        {'base':'N', 'letters':'\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4'},
231
        {'base':'NJ','letters':'\u01CA'},
231
        {'base':'NJ','letters':'\u01CA'},
232
        {'base':'Nj','letters':'\u01CB'},
232
        {'base':'Nj','letters':'\u01CB'},
233
        {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
233
        {'base':'O', 'letters':'\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C'},
234
        {'base':'OI','letters':'\u01A2'},
234
        {'base':'OI','letters':'\u01A2'},
235
        {'base':'OO','letters':'\uA74E'},
235
        {'base':'OO','letters':'\uA74E'},
236
        {'base':'OU','letters':'\u0222'},
236
        {'base':'OU','letters':'\u0222'},
237
        {'base':'OE','letters':'\u008C\u0152'},
237
        {'base':'OE','letters':'\u008C\u0152'},
238
        {'base':'oe','letters':'\u009C\u0153'},
238
        {'base':'oe','letters':'\u009C\u0153'},
239
        {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
239
        {'base':'P', 'letters':'\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754'},
240
        {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
240
        {'base':'Q', 'letters':'\u0051\u24C6\uFF31\uA756\uA758\u024A'},
241
        {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
241
        {'base':'R', 'letters':'\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782'},
242
        {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
242
        {'base':'S', 'letters':'\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784'},
243
        {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
243
        {'base':'T', 'letters':'\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786'},
244
        {'base':'TZ','letters':'\uA728'},
244
        {'base':'TZ','letters':'\uA728'},
245
        {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
245
        {'base':'U', 'letters':'\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244'},
246
        {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
246
        {'base':'V', 'letters':'\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245'},
247
        {'base':'VY','letters':'\uA760'},
247
        {'base':'VY','letters':'\uA760'},
248
        {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
248
        {'base':'W', 'letters':'\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72'},
249
        {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
249
        {'base':'X', 'letters':'\u0058\u24CD\uFF38\u1E8A\u1E8C'},
250
        {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
250
        {'base':'Y', 'letters':'\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE'},
251
        {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
251
        {'base':'Z', 'letters':'\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762'},
252
        {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
252
        {'base':'a', 'letters':'\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250'},
253
        {'base':'aa','letters':'\uA733'},
253
        {'base':'aa','letters':'\uA733'},
254
        {'base':'ae','letters':'\u00E6\u01FD\u01E3'},
254
        {'base':'ae','letters':'\u00E6\u01FD\u01E3'},
255
        {'base':'ao','letters':'\uA735'},
255
        {'base':'ao','letters':'\uA735'},
256
        {'base':'au','letters':'\uA737'},
256
        {'base':'au','letters':'\uA737'},
257
        {'base':'av','letters':'\uA739\uA73B'},
257
        {'base':'av','letters':'\uA739\uA73B'},
258
        {'base':'ay','letters':'\uA73D'},
258
        {'base':'ay','letters':'\uA73D'},
259
        {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
259
        {'base':'b', 'letters':'\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253'},
260
        {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
260
        {'base':'c', 'letters':'\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184'},
261
        {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
261
        {'base':'d', 'letters':'\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A'},
262
        {'base':'dz','letters':'\u01F3\u01C6'},
262
        {'base':'dz','letters':'\u01F3\u01C6'},
263
        {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
263
        {'base':'e', 'letters':'\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD'},
264
        {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
264
        {'base':'f', 'letters':'\u0066\u24D5\uFF46\u1E1F\u0192\uA77C'},
265
        {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
265
        {'base':'g', 'letters':'\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F'},
266
        {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
266
        {'base':'h', 'letters':'\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265'},
267
        {'base':'hv','letters':'\u0195'},
267
        {'base':'hv','letters':'\u0195'},
268
        {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
268
        {'base':'i', 'letters':'\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131'},
269
        {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
269
        {'base':'j', 'letters':'\u006A\u24D9\uFF4A\u0135\u01F0\u0249'},
270
        {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
270
        {'base':'k', 'letters':'\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3'},
271
        {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
271
        {'base':'l', 'letters':'\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747'},
272
        {'base':'lj','letters':'\u01C9'},
272
        {'base':'lj','letters':'\u01C9'},
273
        {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
273
        {'base':'m', 'letters':'\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F'},
274
        {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
274
        {'base':'n', 'letters':'\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5'},
275
        {'base':'nj','letters':'\u01CC'},
275
        {'base':'nj','letters':'\u01CC'},
276
        {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
276
        {'base':'o', 'letters':'\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275'},
277
        {'base':'oi','letters':'\u01A3'},
277
        {'base':'oi','letters':'\u01A3'},
278
        {'base':'ou','letters':'\u0223'},
278
        {'base':'ou','letters':'\u0223'},
279
        {'base':'oo','letters':'\uA74F'},
279
        {'base':'oo','letters':'\uA74F'},
280
        {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
280
        {'base':'p','letters':'\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755'},
281
        {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
281
        {'base':'q','letters':'\u0071\u24E0\uFF51\u024B\uA757\uA759'},
282
        {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
282
        {'base':'r','letters':'\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783'},
283
        {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
283
        {'base':'s','letters':'\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B'},
284
        {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
284
        {'base':'t','letters':'\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787'},
285
        {'base':'tz','letters':'\uA729'},
285
        {'base':'tz','letters':'\uA729'},
286
        {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
286
        {'base':'u','letters': '\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289'},
287
        {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
287
        {'base':'v','letters':'\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C'},
288
        {'base':'vy','letters':'\uA761'},
288
        {'base':'vy','letters':'\uA761'},
289
        {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
289
        {'base':'w','letters':'\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73'},
290
        {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
290
        {'base':'x','letters':'\u0078\u24E7\uFF58\u1E8B\u1E8D'},
291
        {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
291
        {'base':'y','letters':'\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF'},
292
        {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
292
        {'base':'z','letters':'\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763'}
293
    ];
293
    ];
294
 
294
 
295
    var diacriticsMap = {};
295
    var diacriticsMap = {};
296
    for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){
296
    for (var i=0; i < defaultDiacriticsRemovalMap .length; i++){
297
        var letters = defaultDiacriticsRemovalMap [i].letters;
297
        var letters = defaultDiacriticsRemovalMap [i].letters;
298
        for (var j=0; j < letters.length ; j++){
298
        for (var j=0; j < letters.length ; j++){
299
            diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;
299
            diacriticsMap[letters[j]] = defaultDiacriticsRemovalMap [i].base;
300
        }
300
        }
301
    }
301
    }
302
 
302
 
303
    // "what?" version ... http://jsperf.com/diacritics/12
303
    // "what?" version ... http://jsperf.com/diacritics/12
304
    function removeDiacritics (str) {
304
    function removeDiacritics (str) {
305
        return str.replace(/[^\u0000-\u007E]/g, function(a){
305
        return str.replace(/[^\u0000-\u007E]/g, function(a){
306
            return diacriticsMap[a] || a;
306
            return diacriticsMap[a] || a;
307
        });
307
        });
308
    }*/
308
    }*/
309
 
309
 
310
    $(document).ready( function() {
310
    $(document).ready( function() {
311
        $("#${FILE_INPUT_ID}").fileinput({
311
        $("#${FILE_INPUT_ID}").fileinput({
312
            uploadUrl: '<%=request.getContextPath()%>/filesUpload',
312
            uploadUrl: '<%=request.getContextPath()%>/filesUpload',
313
            maxFilePreviewSize: 4096,
313
            maxFilePreviewSize: 4096,
314
            uploadAsync: false,
314
            uploadAsync: false,
315
            language: "pt",
315
            language: "pt",
316
            multiple: "true",
316
            multiple: "true",
317
            slugCallback: function(filename) {
317
            slugCallback: function(filename) {
318
 
318
 
319
                return filename.replace(/[^\x00-\x7F]/g, "");
319
                return filename.replace(/[^\x00-\x7F]/g, "");
320
 
320
 
321
            }
321
            }
322
 
322
 
323
        });
323
        });
324
    });
324
    });
325
 
325
 
326
    $("#${FILE_INPUT_ID}").on('filebatchuploadsuccess', function(event, data, previewId, index)
326
    $("#${FILE_INPUT_ID}").on('filebatchuploadsuccess', function(event, data, previewId, index)
327
    {
327
    {
328
        updateUploadedFiles(data.response,"#${FILE_INPUT_ID}");
328
        updateUploadedFiles(data.response,"#${FILE_INPUT_ID}");
329
    });
329
    });
330
    $("#${FILE_INPUT_ID}").on('fileuploaded', function(event, data, previewId, index)
330
    $("#${FILE_INPUT_ID}").on('fileuploaded', function(event, data, previewId, index)
331
    {
331
    {
332
        updateUploadedFiles(data.response,"#${FILE_INPUT_ID}");
332
        updateUploadedFiles(data.response,"#${FILE_INPUT_ID}");
333
    });
333
    });
334
 
334
 
335
    function updateUploadedFiles(response,id)
335
    function updateUploadedFiles(response,id)
336
    {
336
    {
337
        console.log('File batch upload success');
337
        console.log('File batch upload success');
338
 
338
 
339
        if(response.service == "error")
339
        if(response.service == "error")
340
        {
340
        {
341
            $("#files-upload-form .web-messages").html('<div class="alert alert-danger">Ocorreu um erro interno: ' + response.exception + '</div>');
341
            $("#files-upload-form .web-messages").html('<div class="alert alert-danger">Ocorreu um erro interno: ' + response.exception + '</div>');
342
        }
342
        }
343
        else if(response.service == "ok")
343
        else if(response.service == "ok")
344
        {
344
        {
345
            $(id).fileinput('clear');
345
            $(id).fileinput('clear');
346
            angular.element($("#filesUploadModal")).scope().addRows(response.uploadedFiles);
346
            angular.element($("#filesUploadModal")).scope().addRows(response.uploadedFiles);
347
        }
347
        }
348
    }
348
    }
349
</script>
349
</script>