~agilence/+junk/activnce

« back to all changes in this revision

Viewing changes to main/templates/modules/task/Copy of task-editmanage.html

  • Committer: felipetomazelli
  • Date: 2019-09-04 18:04:17 UTC
  • Revision ID: felipetomazelli-20190904180417-3bwz59xfub1c6x6t
Fazer tela para editar as ações de uma tarefa.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
{% extends "../../base-foto.html" %}
 
2
 
 
3
{% block head %}
 
4
        <script type="text/javascript">
 
5
                var REGISTRY_ID = '{{REGISTRY_ID}}';
 
6
                var LISTA_ACOES = {{LISTA_ACOES}};
 
7
                
 
8
                // Retorna valor de URL e folder da acao
 
9
                
 
10
                function findAction(acao) {
 
11
                    for (item in LISTA_ACOES) { 
 
12
                        if (acao == LISTA_ACOES[item]["acao"]) {
 
13
                            return LISTA_ACOES[item];
 
14
                                }
 
15
            }
 
16
                }
 
17
                
 
18
                
 
19
                // Analisa se tem ações com mesmo número
 
20
                
 
21
                function EqualOrdem() {
 
22
                    ordens = document.getElementsByName("ordem");
 
23
                    for (i=0; i<ordens.length-1; i++) { 
 
24
                        for (j=i+1; j<ordens.length; j++){
 
25
                                if (ordens[i].value == ordens[j].value){
 
26
                                        alert ("Existe mais de uma linha com o mesmo número de ordem.");
 
27
                                        return false;
 
28
                                        }
 
29
                }
 
30
                        }
 
31
                        return true;
 
32
                }
 
33
                
 
34
                // Define novos limites máximos para os números de ordem de cada linha 
 
35
                // Chamado ao excluir ou incluir uma ação 
 
36
                
 
37
                function resetMaxOrdensInput(){
 
38
                        var ordens = document.getElementsByName("ordem");
 
39
                for (i=0; i<ordens.length; i++) {       
 
40
                    ordens[i].max = ordens.length;
 
41
                }       
 
42
                }
 
43
                
 
44
                // crítica do formulário de inclusão de um nova ação
 
45
                
 
46
                function critica() {
 
47
                        if ( $("#newacao").val() == "" ) {
 
48
                                alert ("Selecione uma Ação.");
 
49
                                return false;
 
50
                        }
 
51
                        if ( !$("#url").prop('disabled') && !($("#url").val()) ) {
 
52
                                alert ("Selecione uma Localização.");
 
53
                                return false;
 
54
                        }
 
55
                        
 
56
                        return true;
 
57
                }       
 
58
 
 
59
 
 
60
 
 
61
 
 
62
                // Exibe lista de folders
 
63
                
 
64
                function enableFolderAndUrl(){
 
65
   
 
66
                $("#newcomplemento").val("");
 
67
 
 
68
                        $('#url').empty();
 
69
                        $("#url").prop('disabled', true);
 
70
                        $("#url").hide();
 
71
                        
 
72
                        $('#folder').empty();
 
73
                        $("#folder").prop('disabled', true);
 
74
                        $("#folder").hide();
 
75
                        
 
76
                        
 
77
                        var action = findAction($("#newacao").val());
 
78
            if (action["url"] != 'S') {
 
79
                // não tem URL
 
80
 
 
81
                                $("#criar_novo").hide();
 
82
                                
 
83
                                if (action["folder"] != 'S') {          
 
84
                                        // publicar no blog   
 
85
                                                
 
86
                                        $("#url").prop('disabled', true);
 
87
                                        $("#url").hide();
 
88
                                        $("#folder").prop('disabled', true);
 
89
                                        $("#folder").hide();
 
90
                                }
 
91
                                else {
 
92
                                        // criar wiki e enviar arquivo
 
93
                                        
 
94
                                        $("#url").prop('disabled', true);
 
95
                                        $("#url").hide();
 
96
 
 
97
                                        $("#folder").prop('disabled', false);   
 
98
                                        $("#folder").show();
 
99
                                        $("#folder").show();
 
100
                                        
 
101
                                        $.ajax({url: "/rest/"+action["service"]+"/folder/"+REGISTRY_ID,
 
102
                                                type: "GET",
 
103
                                                success: function(response) {
 
104
                                                        // select to be modified
 
105
                                                        sel = document.getElementById("folder")
 
106
                                                                
 
107
                                                        // remove all old options
 
108
                                                        $('#folder').empty();
 
109
                                                        
 
110
                                                        // and then create the new ones
 
111
                                                    var opt = document.createElement("option");
 
112
                                                    opt.value = "default"; opt.innerHTML = "usar a pasta padrão";
 
113
                                                    sel.appendChild(opt);
 
114
                                                        
 
115
                                                        for (item in response.itens) {
 
116
                                                           opt = document.createElement("option");
 
117
                                                           opt.value = response.itens[item][0];
 
118
                                                           opt.innerHTML = response.itens[item][1];
 
119
                                                           sel.appendChild(opt);
 
120
                                                        }
 
121
                                                }
 
122
                                        });                             
 
123
                                
 
124
                                
 
125
                                }
 
126
                        }
 
127
                        else {
 
128
                                // tem URL
 
129
                                                        
 
130
                                $("#criar_novo").show();
 
131
                                $("#criar_novo > a").attr("href", "/"+action["service"]+"/"+REGISTRY_ID);
 
132
        
 
133
                                $("#url").prop('disabled', false);      
 
134
                                $("#url").show();
 
135
                                
 
136
                                if (action["folder"] == 'S') {
 
137
                                        // tem folder (consultar arquivo e ler wiki)
 
138
                                                                                
 
139
                                        $("#folder").prop('disabled', false);   
 
140
                                        $("#folder").show();
 
141
                
 
142
                                        $.ajax({url: "/rest/"+action["service"]+"/folder/"+REGISTRY_ID,
 
143
                                                type: "GET",
 
144
                                                success: function(response) {
 
145
                                                        // select to be modified
 
146
                                                        sel = document.getElementById("folder")
 
147
                                                                
 
148
                                                        // remove all old options
 
149
                                                        $('#folder').empty();
 
150
                                                        
 
151
                                                        // and then create the new ones
 
152
                                                    var opt = document.createElement("option");
 
153
                                                    opt.value = ""; opt.innerHTML = "selecione uma pasta";
 
154
                                                    sel.appendChild(opt);
 
155
                                                        
 
156
                                                        for (item in response.itens) {
 
157
                                                           opt = document.createElement("option");
 
158
                                                           opt.value = response.itens[item][0];
 
159
                                                           opt.innerHTML = response.itens[item][1];
 
160
                                                           sel.appendChild(opt);
 
161
                                                        }
 
162
                                                }
 
163
                                        });
 
164
                                }
 
165
                                else {
 
166
                                        // não tem folder (publicar no forum, consultar favoritos e assistir videoaula)
 
167
                                        
 
168
                                        $.ajax({url: "/rest/"+action["service"]+"/list/"+REGISTRY_ID,
 
169
                                                type: "GET",
 
170
                                                success: function(response) {
 
171
                                                        // select to be modified
 
172
                                                        sel = document.getElementById("url")
 
173
                                                                
 
174
                                                        // remove all old options
 
175
                                                        $('#url').empty();
 
176
                                                        
 
177
                                                        // and then create the new ones
 
178
                                                   var opt = document.createElement("option");
 
179
                                                   opt.value = ''; opt.innerHTML = '';
 
180
                                                   sel.appendChild(opt);
 
181
                                                        for (item in response.itens) {
 
182
                                                           opt = document.createElement("option");
 
183
                                                           opt.value = '/'+action["service"]+'/' + REGISTRY_ID + '/' + response.itens[item];
 
184
                                                           opt.innerHTML = response.itens[item];
 
185
                                                           sel.appendChild(opt);
 
186
                                                        }
 
187
                                                }
 
188
                                        });
 
189
                                        
 
190
                                        
 
191
                                }
 
192
                        }
 
193
                }
 
194
                
 
195
                // Exibe lista de arquivos de um folder
 
196
                
 
197
                function changeUrlList(folder) {
 
198
                        var action = findAction($("#newacao").val());
 
199
                        $.ajax({url: "/rest/"+action["service"]+"/list/"+REGISTRY_ID+"?folder="+folder,
 
200
                                type: "GET",
 
201
                                success: function(response) {
 
202
                                        // obj = JSON && JSON.parse(response.itens) || $.parseJSON(response.itens);
 
203
                                        // select to be modified
 
204
                                        sel = document.getElementById("url")
 
205
                                                
 
206
                                        // remove all old options
 
207
                                        $('#url').empty();
 
208
                                        
 
209
                                        // and then create the new ones
 
210
                                        for(item in response.itens) {
 
211
                                           var opt = document.createElement("option");
 
212
                                           opt.value = '/'+action["service"]+'/' + REGISTRY_ID + '/' + response.itens[item];
 
213
                                           console.log(response.itens[item]);
 
214
                                           opt.innerHTML = response.itens[item];
 
215
                                           sel.appendChild(opt);
 
216
                                        }
 
217
                                }
 
218
                        });
 
219
                }
 
220
                
 
221
 
 
222
                // callback associada ao link para excluir ação (ícone da lixeira).
 
223
                
 
224
                function onDeleteAction() {
 
225
 
 
226
                if ( !confirm('Deseja realmente remover esta ação da tarefa?') )
 
227
                        return false;
 
228
                
 
229
                
 
230
                
 
231
 
 
232
                        
 
233
                        
 
234
                        
 
235
                // pega valor de pos no tr correspondente
 
236
                var tr = $(this).closest('tr');
 
237
                var pos = tr.attr("pos");
 
238
                
 
239
                        $.ajax({url: "/task/action/delete/{{REGISTRY_ID}}/{{TASKDATA['name_id']}}?pos=" + pos,
 
240
                                type: "GET",
 
241
                                success: function(response) {
 
242
                                    if (response.status==0) {
 
243
                                        // tr.css("background-color","#FF3700");
 
244
                                        tr.fadeOut(400, function(){
 
245
                                            tr.remove();
 
246
                                                        resetMaxOrdensInput();
 
247
                                        });
 
248
                                        
 
249
                                        return false;
 
250
                                        }                   
 
251
                                }
 
252
                        });
 
253
            }
 
254
                        
 
255
        $(function() {
 
256
 
 
257
                        // campos para folder e URL entra escondido. só aparecerá se necessário.
 
258
                        $("#folder").hide();
 
259
                        $("#url").hide();
 
260
                        $("#criar_novo").hide();
 
261
 
 
262
                        // Callback chamada ao escolher um folder       
 
263
                        $("#folder").change(function() {
 
264
                                changeUrlList(this.options[this.selectedIndex].value);
 
265
                        });                     
 
266
                        
 
267
                        // callback no botão para incluir nova ação     
 
268
                    $("#b_newAction").click(function() {
 
269
                                if (critica()) {        
 
270
                                        var action = findAction($("#newacao").val());
 
271
                                        var url_corrigida = $("#url").val();
 
272
                                        
 
273
                                        // se criar página ou enviar arquivo descarta o que vem na URL pois ela será montada no controlador chamado por ajax
 
274
                                        if (action["url"] == "N" && action["folder"] == "S"){
 
275
                                                url_corrigida = null;
 
276
                                        }
 
277
                                        
 
278
                                        $.ajax({url: "/task/action/new/{{REGISTRY_ID}}/{{TASKDATA['name_id']}}",
 
279
                                                type: "POST",
 
280
                                                
 
281
                                                data: {"_xsrf":getCookie("_xsrf"),
 
282
                                                       "acao": $("#newacao").val(),
 
283
                                                       "complemento": $("#newcomplemento").val(),
 
284
                                                       "folder":  $("#folder").val(),
 
285
                                                       "url": $("#url").val(),
 
286
                                                       "nome_folder": $("#folder option:selected").text()
 
287
                                                      },
 
288
                                                                        
 
289
                                                success: function(response) {
 
290
                                                    if (response.status == 0){
 
291
                                                        var last_pos = parseInt($( "#actiontable tr:last" ).attr("pos"));
 
292
                                                        var next_pos = 0;
 
293
                                                        if (last_pos || last_pos==0) next_pos = last_pos + 1;
 
294
                                                        
 
295
                                                        var id_link = "del_" + next_pos; //  + $("#time").val().replace(':','');
 
296
                                                        // var url_link = (url_corrigida != null ? $("#url").val() : "");
 
297
                                                        // if (url_link=="" && response.url_folder!="")
 
298
                                                        //      url_link = response.url_folder
 
299
 
 
300
                                                        var newline = '<tr pos="' + next_pos + '"><td width="65>" "</td>'+
 
301
                                                                                  '<td width="250">' + $("#newacao").val() + '</td>' +
 
302
                                                                                          '<td width="40%">' + $("#newcomplemento").val() + '</td>' +
 
303
                                                                                          '<td>' + response.url_folder + '</td>' +  // '<td><a href="' + url_link + '">' + url_link + '</a></td>' +
 
304
                                                                                          '<td width="88" align="center">' + 
 
305
                                                                                          '<a id="' + id_link + '" class="deleteAction" title="apagar">' +
 
306
                                                                              '<img src="/static/imagens/icones/delete16.png" alt="apagar" border="0" /></a>' + 
 
307
                                                                          '</td></tr>'
 
308
                                                        
 
309
                                                                if ($( "#actiontable tr" ).length == 0) {
 
310
                                                                // insere se a tabela está vazia
 
311
                                                                        $( "#actiontable" ).append(newline);
 
312
                                                                    $( "#" + id_link ).click(onDeleteAction);                                                                   
 
313
                                                                }
 
314
                                                                else {
 
315
                                                                        // senão insere no final
 
316
                                                                        $( "#actiontable tr:last" ).after( newline );   
 
317
                                                                    $( "#" + id_link ).click(onDeleteAction);
 
318
                                                                }
 
319
 
 
320
                                                                // limpa os campos do form de inclusão
 
321
                                                        $('#newacao')[0].selectedIndex = 0;
 
322
                                                        $("#newcomplemento").val("");
 
323
    
 
324
                                                                $('#url').empty();
 
325
                                                                $("#url").prop('disabled', true);
 
326
                                                                $("#url").hide();
 
327
                                                                $('#folder').empty();
 
328
                                                                $("#folder").prop('disabled', true);
 
329
                                                                $("#folder").hide();                                                
 
330
 
 
331
                                                                $("#criar_novo").hide();
 
332
                                                                        
 
333
                                                                resetMaxOrdensInput();                                      
 
334
                                                        }    
 
335
                                                }
 
336
                                        });
 
337
                                }
 
338
                    });
 
339
 
 
340
                        // callback no ícone lixeira para excluir ação
 
341
                    $( "#actiontable .deleteAction" ).click(onDeleteAction);
 
342
                });
 
343
 
 
344
 
 
345
        </script>
 
346
{% end %}
 
347
 
 
348
{% block body-right %}
 
349
    <script type="text/javascript" src="/static/ckeditor/ckeditor.js"></script>
 
350
    
 
351
    <form name="editaacoes" action="{{ request.path }}" method="post" onsubmit="return EqualOrdem()">
 
352
        {% raw xsrf_form_html() %}
 
353
        
 
354
        {{modules.ShowMolduraInicio(u"Gerenciar ações da tarefa "+TASKDATA["titulo"], links=LINKS)}}
 
355
    {% if MSG %} <div class="alert alert-danger" role="alert">{{ MSG }}</div> {% end %}
 
356
        <h2>Nome da Tarefa:                             
 
357
        </h2> 
 
358
        {{ escape(TASKDATA["titulo"]) }}<br/>
 
359
        
 
360
        <h2>Descrição da Tarefa:</h2> 
 
361
        {{ escape(TASKDATA["descricao"]) }}<br/>
 
362
        
 
363
        <br/><br/> 
 
364
                           
 
365
        <!-- Lista de ações -->
 
366
        <table width="100%" class="activTableBorder">
 
367
                <tr>
 
368
                <td width="71.6" align="left"><b>Ordem</b></td>
 
369
                <td width="250" align="left"><b>Ação</b></td>
 
370
                <td width="40%" align="left"><b>Descrição</b></td>
 
371
                <td align="left"><b>Localização</b></td>
 
372
                <td width="88" align="center"></td>
 
373
                </tr>
 
374
        </table>
 
375
 
 
376
        <table id="actiontable" width="100%" class="activTableBorder">
 
377
                {% for key in TASKDATA["acoes"] %}
 
378
                        <tr pos="{{ key }}">
 
379
                        <td width="65"><input type="number" min="1" max="{{ len(TASKDATA["acoes"]) }}" name="ordem" style="width:50px; "value="{{ key}}"></td>
 
380
                        <td width="250">{{ TASKDATA["acoes"][key]["tipo"] }}<input type="hidden" name="tipo" value="{{ TASKDATA["acoes"][key]["tipo"] }}"></td>
 
381
                        <td width="40%"><input type="text" name="descricao" style="width:450px;"value="{{ TASKDATA["acoes"][key]["descricao"] }}"></td>
 
382
                        {% if TASKDATA["acoes"][key]["localizacao"] %}
 
383
                                <td>{{ TASKDATA["acoes"][key]["localizacao"] }}<input type="hidden" name="localizacao" value="{{ TASKDATA["acoes"][key]["localizacao"] }}"></td>
 
384
                        {% else %}
 
385
                                <td><input type="hidden" name="localizacao" value=" "></td>
 
386
                        {% end %}
 
387
                        <td width="88" align = "center">
 
388
                                <a class="deleteAction" title="apagar">
 
389
                <img src="/static/imagens/icones/delete16.png" alt="apagar" border="0" /></a>
 
390
            </td>
 
391
                        </tr>
 
392
                {% end %}
 
393
        </table>
 
394
        
 
395
          <!-- form name="addAction" a inclusão do form aqui faria com que um enter no campo time submetesse o form erradamente -->
 
396
                {% raw xsrf_form_html() %}
 
397
                <input type="hidden" name="id" value="{{ escape(TASKDATA['_id']) }}" />
 
398
                                
 
399
                <!-- Inclusão de uma ação -->
 
400
                <table width="100%" class="activTableBorder">
 
401
                        <tr>
 
402
                        <td width="71.6"></td>
 
403
                        <td width="250">
 
404
                        <select name='newacao' id='newacao' onchange='enableFolderAndUrl();'>
 
405
                    <option value='' selected='selected'></option>
 
406
                    {% for item in LISTA_ACOES %}
 
407
                        {% if item["service"] in USERDATA["services"] or item["service"]=="" %}
 
408
                                        <option value='{{ item["acao"] }}'>{{ item["acao"] }}</option>
 
409
                                {% end %}
 
410
                        {% end %}
 
411
                        </select>
 
412
                        </td>
 
413
                        <td width="40%"><input type="text" style="width:450px" name="newcomplemento" id="newcomplemento"></td>
 
414
                        <td>
 
415
                                <select name="folder" id="folder"></select>
 
416
                                <select name="url" id="url"></select>   
 
417
                                <span id="criar_novo"><a href="" target="_new">criar agora!</a></span>
 
418
                        </td>
 
419
                        <td width="80">                         
 
420
                                <input id="b_newAction" type="button" value="incluir" />
 
421
                        </td>
 
422
                        </tr>
 
423
                </table>
 
424
        
 
425
        <!-- /form -->    
 
426
        
 
427
        </br></br>
 
428
        
 
429
        <input type="submit" value="enviar">    
 
430
        {{ modules.ShowMolduraFim() }}
 
431
        
 
432
{% end %}
 
433