[795] | 1 | /* retorno do Ajax para listagem de processos */ |
---|
| 2 | function processList(data) |
---|
| 3 | { |
---|
| 4 | if (handleError(data)) |
---|
| 5 | { |
---|
| 6 | var divProcess = document.getElementById("divProcess"); |
---|
| 7 | divProcess.innerHTML = ''; |
---|
| 8 | if (data['data'].length == 0) |
---|
| 9 | { |
---|
| 10 | var parag = document.createElement("P"); |
---|
| 11 | parag.className = "text_dsp"; |
---|
| 12 | parag.innerHTML = "Não existem processos"; |
---|
| 13 | divProcess.appendChild(parag); |
---|
| 14 | } |
---|
| 15 | else |
---|
| 16 | { |
---|
| 17 | permissions = data['permissions']; |
---|
| 18 | drawProcessesList(data); |
---|
| 19 | } |
---|
| 20 | } |
---|
| 21 | } |
---|
| 22 | |
---|
| 23 | /* chama o método Ajax que lista os processos */ |
---|
| 24 | function listProcesses() |
---|
| 25 | { |
---|
| 26 | cExecute("$this.bo_monitors.listProcesses", processList); |
---|
| 27 | } |
---|
| 28 | |
---|
| 29 | /* desenha os processos na interface */ |
---|
| 30 | function drawProcessesList(data) |
---|
| 31 | { |
---|
| 32 | var processes = data['data']; |
---|
| 33 | var divProcess = document.getElementById("divProcess"); |
---|
| 34 | var tableHeader = new Array(); |
---|
| 35 | var tableAtributes = new Array(); |
---|
| 36 | |
---|
| 37 | var content = '<table width="100%" align="center" border="1" class="content_table">'; |
---|
| 38 | content += '<tr><th>ID</th><th>Nome</th></tr>'; |
---|
| 39 | var processCount = processes.length; |
---|
| 40 | for (var i = 0; i < processCount; i++) |
---|
| 41 | { |
---|
| 42 | content += '<tr id="p_' + processes[i]['wf_p_id'] + '"><td>' + processes[i]['wf_p_id'] + '</td><td><a href="" onclick="drawProcessOptions(' + processes[i]['wf_p_id'] + '); return false;">' + processes[i]['wf_name'] + ' v' + processes[i]['wf_version'] + '</a></td></tr>'; |
---|
| 43 | } |
---|
| 44 | content += '</table>'; |
---|
| 45 | divProcess.innerHTML = content; |
---|
| 46 | |
---|
| 47 | } |
---|
| 48 | |
---|
| 49 | /* desenha as opções do processo */ |
---|
| 50 | function drawProcessOptions(pid) |
---|
| 51 | { |
---|
| 52 | $("divInstance").innerHTML = ''; |
---|
| 53 | |
---|
| 54 | /* marca o processo selecionado */ |
---|
| 55 | var tr = document.getElementById('p_' + pid); |
---|
| 56 | var table = tr.parentNode; |
---|
| 57 | var newClass; |
---|
| 58 | $A(table.childNodes).each(function(row) |
---|
| 59 | { |
---|
| 60 | Element.extend(row).removeClassName('selected') |
---|
| 61 | }); |
---|
| 62 | Element.extend(tr).addClassName('selected'); |
---|
| 63 | |
---|
| 64 | /* constrói a tabela de ações */ |
---|
| 65 | var content = '<table width="100%" align="center" border="1" class="content_table">'; |
---|
| 66 | content += '<tr><th>Opções</th></tr>'; |
---|
| 67 | |
---|
| 68 | content += '<tr><td><a href="" onclick="loadInstances(' + pid + '); return false;">Instâncias Ativas</a></td></tr>'; |
---|
| 69 | content += '<tr><td><a href="" onclick="loadCompletedInstances(' + pid + '); return false;">Instâncias Finalizadas</a></td></tr>'; |
---|
| 70 | content += '<tr><td><a href="" onclick="loadInconsistentInstances(' + pid + '); return false;">Instâncias Inconsistentes</a></td></tr>'; |
---|
| 71 | |
---|
| 72 | if (permissions[pid]['bits'][IP_VIEW_STATISTICS]) |
---|
| 73 | content += '<tr><td><a href="" onclick="clickShowStatistics(this, ' + pid + '); return false;">Estatísticas</a></td></tr>'; |
---|
| 74 | |
---|
| 75 | if (permissions[pid]['bits'][IP_REPLACE_USER]) |
---|
| 76 | content += '<tr><td><a href="" onclick="clickReplaceUser(this, ' + pid + '); return false;">Substituir Usuário</a></td></tr>'; |
---|
| 77 | |
---|
| 78 | content += '</table>'; |
---|
| 79 | $('divOptions').innerHTML = content; |
---|
| 80 | } |
---|
| 81 | |
---|
| 82 | function clickReplaceUser(link, pid) |
---|
| 83 | { |
---|
| 84 | function resultClickReplaceUser(data) |
---|
| 85 | { |
---|
| 86 | $('MonitorLoading').remove(); |
---|
| 87 | var divInstance = $('divInstance'); |
---|
| 88 | if (handleError(data)) |
---|
| 89 | { |
---|
| 90 | var users = data['users']; |
---|
| 91 | if (users.length > 0) |
---|
| 92 | { |
---|
| 93 | var content = '<table width="100%">'; |
---|
| 94 | content += '<tr valign="top"><td>'; |
---|
| 95 | content += '<h2>Usuários</h2><table><tr><td><label>Usuário Antigo</label></td>'; |
---|
| 96 | content += '<td><select id="oldUser">'; |
---|
| 97 | for (var i = 0; i < users.length; i++) |
---|
| 98 | content += '<option value="' + users[i]['id'] + '">' + users[i]['name'] + '</option>'; |
---|
| 99 | content += '</select></td></tr>'; |
---|
| 100 | content += '<tr><td><label>Novo Usuário</label></td>'; |
---|
| 101 | content += '<td><input type="hidden" name="newUser" id="newUser" value="" />'; |
---|
| 102 | content += '<input type="input" name="newUser_desc" id="newUser_desc" value="" readonly="true" size="32" />'; |
---|
| 103 | content += '<a href="javascript:void(0)" onclick="openParticipants(\'newUser\', \'uid=1&hidegroups=1\');"><img border="0" width="16" height="16" src="workflow/templateFile.php?file=images/add_user.png"/></a></td></tr>'; |
---|
| 104 | content += '<tr><td colspan="2"><button onclick="clickLoadActivities(' + pid + ');return false;">Próximo >></button></td></tr></table>'; |
---|
| 105 | content += '</td>'; |
---|
| 106 | content += '<td id="tdActivities"></td>'; |
---|
| 107 | content += '<td id="tdRoles"></td>'; |
---|
| 108 | content += '</tr></table>'; |
---|
| 109 | divInstance.innerHTML += content; |
---|
| 110 | } |
---|
| 111 | else |
---|
| 112 | divInstance.innerHTML = '<p class="text_dsp">Este processo não possui instâncias ativas</p>'; |
---|
| 113 | } |
---|
| 114 | } |
---|
| 115 | |
---|
| 116 | $('divInstance').innerHTML = '<h2>Substituir Usuário</h2><div id="MonitorLoading"><img src="workflow/templateFile.php?file=images/loading.gif"/> Carregando ...</div>'; |
---|
| 117 | |
---|
| 118 | var params = 'pid=' + pid; |
---|
| 119 | cExecute("$this.bo_monitors.getUsersInInstances", resultClickReplaceUser, params); |
---|
| 120 | } |
---|
| 121 | |
---|
| 122 | function clickLoadActivities(pid) |
---|
| 123 | { |
---|
| 124 | function resultClickLoadActivities(data) |
---|
| 125 | { |
---|
| 126 | $('MonitorLoading').remove(); |
---|
| 127 | var tdActivities = $('tdActivities'); |
---|
| 128 | if (handleError(data)) |
---|
| 129 | { |
---|
| 130 | var activities = data['activities']; |
---|
| 131 | if (activities.length > 0) |
---|
| 132 | { |
---|
| 133 | var content = '<table>'; |
---|
| 134 | content += '<tr><td><label>Atividade</label></td>'; |
---|
| 135 | content += '<td><select id="activity">'; |
---|
| 136 | content += '<option value="0">Todas</option>'; |
---|
| 137 | for (var i = 0; i < activities.length; i++) |
---|
| 138 | content += '<option value="' + activities[i]['id'] + '">' + activities[i]['name'] + '</option>'; |
---|
| 139 | content += '</select></td></tr>'; |
---|
| 140 | content += '<tr><td colspan="2"><button onclick="clickCheckUserRoles(' + pid + ');return false;">Próximo >></button></td></tr></table>'; |
---|
| 141 | tdActivities.innerHTML += content; |
---|
| 142 | } |
---|
| 143 | else |
---|
| 144 | tdActivities.innerHTML = '<p class="text_dsp">Este processo não possui instâncias ativas com o usuário selecionado</p>'; |
---|
| 145 | } |
---|
| 146 | } |
---|
| 147 | |
---|
| 148 | var newUser = $F('newUser'); |
---|
| 149 | if (!newUser) |
---|
| 150 | { |
---|
| 151 | alert('Selecione o novo usuário'); |
---|
| 152 | return; |
---|
| 153 | } |
---|
| 154 | $('tdActivities').innerHTML = '<h2>Ativitidades</h2><div id="MonitorLoading"><img src="workflow/templateFile.php?file=images/loading.gif"/> Carregando ...</div>'; |
---|
| 155 | var params = 'pid=' + pid + '&user=' + $F('oldUser'); |
---|
| 156 | cExecute("$this.bo_monitors.getUserActivities", resultClickLoadActivities, params); |
---|
| 157 | } |
---|
| 158 | |
---|
| 159 | function resultClickCheckUserRoles(data) |
---|
| 160 | { |
---|
| 161 | $('MonitorLoading').remove(); |
---|
| 162 | var tdRoles = $('tdRoles'); |
---|
| 163 | if (handleError(data)) |
---|
| 164 | { |
---|
| 165 | var roles = data['roles']; |
---|
| 166 | if (roles.length > 0) |
---|
| 167 | { |
---|
| 168 | var content = '<p style="width: 250px">O usuário selecionado não pode acessar as atividades abaixo porque não está mapeado nos perfis necessários. Por favor, faça as correções.</p>'; |
---|
| 169 | content += '<table>'; |
---|
| 170 | for (var i = 0; i < roles.length; i++) |
---|
| 171 | { |
---|
| 172 | content += '<tr valign="middle"><td>' + roles[i]['name'] + '</td>'; |
---|
| 173 | content += '<td><select id="activity_' + roles[i]['id'] + '">'; |
---|
| 174 | for (var j = 0; j < roles[i]['possibleRoles'].length; j++) |
---|
| 175 | content += '<option value="' + roles[i]['possibleRoles'][j]['id'] + '">' + roles[i]['possibleRoles'][j]['name'] + '</option>'; |
---|
| 176 | content += '</select></td><td> <a href="javascript:clickAddUserToRole(' + data['pid'] + ', $F(\'activity_' + roles[i]['id'] + '\'))"><img border="0" width="13" height="13" src="workflow/templateFile.php?file=images/add.png"/></a></td>'; |
---|
| 177 | content += '</tr>'; |
---|
| 178 | } |
---|
| 179 | content += '</table>'; |
---|
| 180 | tdRoles.innerHTML += content; |
---|
| 181 | } |
---|
| 182 | else |
---|
| 183 | { |
---|
| 184 | var content = '<p class="text_dsp">O usuário selecionado já se encontra nos perfis necessários</p>'; |
---|
| 185 | content += '<br/><center><button onclick="clickReplaceUserAction(' + data['pid'] + ');return false;">Concluir</button></center>'; |
---|
| 186 | tdRoles.innerHTML = content; |
---|
| 187 | } |
---|
| 188 | } |
---|
| 189 | } |
---|
| 190 | |
---|
| 191 | function clickCheckUserRoles(pid) |
---|
| 192 | { |
---|
| 193 | if (!$F('newUser')) |
---|
| 194 | { |
---|
| 195 | alert('Selecione o novo usuário'); |
---|
| 196 | return; |
---|
| 197 | } |
---|
| 198 | $('tdRoles').innerHTML = '<h2>Perfis</h2><div id="MonitorLoading"><img src="workflow/templateFile.php?file=images/loading.gif"/> Carregando ...</div>'; |
---|
| 199 | var params = 'pid=' + pid + '&oldUser=' + $F('oldUser') + '&newUser=' + $F('newUser') + '&activity=' + $F('activity'); |
---|
| 200 | cExecute("$this.bo_monitors.checkUserRoles", resultClickCheckUserRoles, params); |
---|
| 201 | } |
---|
| 202 | |
---|
| 203 | function clickAddUserToRole(pid, role) |
---|
| 204 | { |
---|
| 205 | $('tdRoles').innerHTML = '<h2>Perfis</h2><div id="MonitorLoading"><img src="workflow/templateFile.php?file=images/loading.gif"/> Carregando ...</div>'; |
---|
| 206 | var params = 'pid=' + pid + '&oldUser=' + $F('oldUser') + '&newUser=' + $F('newUser') + '&activity=' + $F('activity') + '&role=' + role; |
---|
| 207 | cExecute("$this.bo_monitors.addUserToRole", resultClickCheckUserRoles, params); |
---|
| 208 | } |
---|
| 209 | |
---|
| 210 | function clickReplaceUserAction(pid) |
---|
| 211 | { |
---|
| 212 | function resultClickReplaceUserAction(data) |
---|
| 213 | { |
---|
| 214 | $('MonitorLoading').remove(); |
---|
| 215 | if (handleError(data)) |
---|
| 216 | { |
---|
| 217 | var content = '<p>' + data['OKCount'] + ' instâncias tiveram seu usuário substituído.</p>'; |
---|
| 218 | if (data['errorCount'] > 0) |
---|
| 219 | content += '<p>' + data['errorCount'] + ' apresentaram problema na atualização. Por favor, tente novamente.</p>'; |
---|
| 220 | $('divInstance').innerHTML += content; |
---|
| 221 | } |
---|
| 222 | } |
---|
| 223 | |
---|
| 224 | var params = 'pid=' + pid + '&oldUser=' + $F('oldUser') + '&newUser=' + $F('newUser') + '&activity=' + $F('activity'); |
---|
| 225 | $('divInstance').innerHTML = '<h2>Substituir Usuário</h2><div id="MonitorLoading"><img src="workflow/templateFile.php?file=images/loading.gif"/> Carregando ...</div>'; |
---|
| 226 | cExecute("$this.bo_monitors.replaceUser", resultClickReplaceUserAction, params); |
---|
| 227 | } |
---|
| 228 | |
---|
| 229 | function clickShowStatistics(link, pid) |
---|
| 230 | { |
---|
| 231 | function resultShowStatistics(data) |
---|
| 232 | { |
---|
| 233 | killElement('loading_image_statistics'); |
---|
| 234 | var divInstance = $('divInstance'); |
---|
| 235 | if (handleError(data)) |
---|
| 236 | { |
---|
| 237 | if (data.length > 0) |
---|
| 238 | { |
---|
| 239 | var content = '<h2>Estatísticas</h2>'; |
---|
| 240 | content += '<table>'; |
---|
| 241 | for (var i = 0; i < data.length; i++) |
---|
| 242 | content += '<tr><td align="center"><img src="' + data[i] + '"/></tr></td>'; |
---|
| 243 | content += '</table>'; |
---|
| 244 | divInstance.innerHTML = content; |
---|
| 245 | } |
---|
| 246 | else |
---|
| 247 | divInstance.innerHTML = '<p class="text_dsp">Este processo não possui estatísticas</p>'; |
---|
| 248 | } |
---|
| 249 | } |
---|
| 250 | |
---|
| 251 | var image = document.createElement("IMG"); |
---|
| 252 | image.setAttribute('src', 'workflow/templateFile.php?file=images/loading.gif'); |
---|
| 253 | image.setAttribute('height', '11'); |
---|
| 254 | image.setAttribute('id', 'loading_image_statistics'); |
---|
| 255 | link.parentNode.appendChild(image); |
---|
| 256 | cExecute ("$this.bo_monitors.showStatistics", resultShowStatistics, 'pid=' + pid); |
---|
| 257 | } |
---|