source: trunk/workflow/js/monitors/processes.js @ 795

Revision 795, 9.7 KB checked in by viani, 15 years ago (diff)

Ticket #488 - Inclusão do módulo workflow no ramo trunk do repositório Expresso.

  • Property svn:executable set to *
Line 
1/* retorno do Ajax para listagem de processos */
2function 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 */
24function listProcesses()
25{
26        cExecute("$this.bo_monitors.listProcesses", processList);
27}
28
29/* desenha os processos na interface */
30function 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 */
50function 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
82function 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
122function 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
159function 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>&nbsp;<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
191function 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
203function 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
210function 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
229function 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}
Note: See TracBrowser for help on using the repository browser.