/* armazena os parâmetro passados para a construção da caixa de entrada */ var workflowInboxParams; /* um digest (MD5) das instâncias exibidas (para saber quando ocorreu a última atualização */ var workflowInstancesDigest = null; /* armazena os nomes dos usuários que possuem as instâncias */ var workflowInboxUserNames; /* armazena informações dos processos */ var workflowInboxProcessesInfo; /* armazena os nomes das atividades */ var workflowInboxActivityNames; /* armazena os conjuntos de ações */ var workflowInboxActions; /* armazena a lista de processos cujas instâncias o usuário pode acessar */ var workflowInboxProcesses; /* indica se o usuário utiliza a versão leve da interface */ var workflowInboxLightVersion; /* indica se a interface está configurada para auto atualização */ var workflowInboxAutoRefresh = true; /* armazena o tempo entre cada atualização, em milisegundos */ var workflowInboxRefreshTimeInterval = 120000; /* armazena a referência do "interval" utilizado para atualização */ var workflowInboxRefreshInterval = null; /* armazena a função (e parâmetros) que deve ser chamada para a atualização */ var workflowInboxRefreshFunction = ''; /* número de atividades view abertas na interface (usado para evitar atualização no caso de alguma view estar aberta) */ var workflowInboxOpenedViewActivities = 0; /** * Recria os headers da caixa de entrada sem a necessidade de * recarregar todos os dados. É utilizado para o caso do resultado * ser igual ao conjunto de dados mostrados * @params string sortParam Nome da coluna do banco que é o parâmetro order by * @params object Paging Objeto de paginação * @return null * @access public */ function redrawInboxHeaders(sortParam, paging) { workflowInboxParams['sort'] = sortParam; content = '' + createSortingHeaders('Data', 'wf_act_started') + ''; content += '' + createSortingHeaders('Processo', 'wf_procname') + ''; content += '' + createSortingHeaders('Identificador', 'insname') + ''; content += '' + createSortingHeaders('P', 'wf_priority') + ''; content += '' + createSortingHeaders('Atividade', 'wf_name') + ''; content += 'Atribuído a'; content += 'Ações'; $('table_elements_inbox').firstChild.firstChild.innerHTML = content; $('td_tools_inbox_3').innerHTML = createPagingLinks(paging); return; } /** * Recebe os dados do Ajax e chama os métodos para construção da interface * @param array data Os dados retornados por Ajax * @return void */ function inbox(data) { if (_checkError(data)) return; if (workflowInstancesDigest == data['instancesDigest']){ if(workflowInboxParams && (workflowInboxParams['sort'] != data['sort_param'])){ redrawInboxHeaders(data['sort_param'], data['paging_links']); } return; } workflowInstancesDigest = data['instancesDigest']; var currentSearchField = ''; var busca = $('busca'); if (busca) currentSearchField = busca.value; var flagSearchPerformed = false; if (data['params']['search_term']) if (data['params']['search_term'] != '') flagSearchPerformed = true; workflowInboxUserNames = data['userNames']; workflowInboxProcessesInfo = data['processesInfo']; workflowInboxActivityNames = data['activityNames']; workflowInboxProcesses = data['processes']; workflowInboxActions = data['actions']; workflowInboxParams = data['params']; workflowInboxLightVersion = data['light']; var information = $('workflowInboxInformation'); if (information) information.remove(); var currentInboxMenu = $('table_tools_inbox'); var currentInboxElements = $('table_elements_inbox'); if (currentInboxElements) currentInboxElements.remove(); if (data['instances'].length > 0) { if (!currentInboxMenu) createInboxMenu(); createInbox(data['instances'], data['paging_links']); } else { if ((!flagSearchPerformed) && currentInboxMenu) currentInboxMenu.remove(); var pagingContainer = $('td_tools_inbox_3'); if (pagingContainer) pagingContainer.innerHTML = ''; $('content_id_0').innerHTML += '

Não existem atividades a serem executadas

'; } busca = $('busca'); if (busca) { if (flagSearchPerformed) busca.value = data['params']['search_term']; else if (currentSearchField != '') busca.value = currentSearchField; busca.focus(); } } /** * Cria o menu da interface * @return void */ function createInboxMenu() { var content = '
'; content += ''; content += ''; content += ''; content += ''; content += ''; content += '
'; content += ''; content += ''; content += ' Busca:  filtrar  '; content += '
'; $('content_id_0').innerHTML = content; } /** * Cria a tabela das instâncias * @param array data As instâncias que serão listadas * @param array paging Dados da paginação * @return void */ function createInbox(data, paging) { var content = ''; content += ''; content += ''; content += ''; content += ''; content += ''; content += ''; content += ''; content += ''; content += ''; content += ''; var inboxLimit = data.length; var current; for (var i = 0; i < inboxLimit; i++) { current = data[i]; content += ''; content += ''; if (current['viewRunAction']) content += ''; else content += ''; content += ''; content += '') + ' '; content += ''; content += ''; content += ''; content += ''; if (current['viewRunAction']) content += constructHiddenView('inbox', 6, current['wf_instance_id'], current['wf_activity_id'], current['viewRunAction']['height']); } $('content_id_0').innerHTML += content; $('td_tools_inbox_3').innerHTML = createPagingLinks(paging); } /** * Cria os links para ordenação das instâncias * @param string O texto do link * @param string A ordenação esperada * @return string O link criado */ function createSortingHeaders(text, expectedSort) { workflowInboxParams['sort'] = workflowInboxParams['sort'].split(',').shift(); var currentSort = workflowInboxParams['sort'].split('__'); var theSame = (expectedSort == currentSort[0]); direction = false; var output = ''; if (theSame) { output += ''; direction = (currentSort[1] == 'ASC'); } output += '' + text + ''; if (theSame) output += ''; return output; } /** * Cria e exibe o menu listando os processos das instâncias que o usuário pode ver * @return void */ function showProcessFilter() { hideExtraContents(); /* se o menu já existe, apenas o exibe */ if ($('processFilter')) { $('divProcessFilter').style.display = ''; $('extraContent').style.display = ''; return; } /* coleta informações sobre posicionamento */ var li = $('processFilterButton'); var offset = Position.cumulativeOffset(li); var height = li.getHeight() - 1; /* cria as opções do menu */ var content = '
'; /* insere o novo conteúdo */ var extraContent = $('extraContent'); extraContent.innerHTML += content; extraContent.style.display = ''; } /** * Cria e exibe o menu de atualização da interface de Tarefas Pendentes * @return void */ function showRefreshMenu() { hideExtraContents(); /* se o menu já existe, apenas o exibe */ if ($('refreshMenu')) { $('divRefreshMenu').style.display = ''; $('extraContent').style.display = ''; return; } /* coleta informações sobre posicionamento */ var li = $('refreshButton'); var offset = Position.cumulativeOffset(li); var height = li.getHeight() - 1; /* cria as opções do menu */ var content = '
' + createSortingHeaders('Data', 'wf_act_started') + '' + createSortingHeaders('Processo', 'wf_procname') + '' + createSortingHeaders('Identificador', 'insname') + '' + createSortingHeaders('P', 'wf_priority') + '' + createSortingHeaders('Atividade', 'wf_name') + 'Atribuído aAções
' + current['wf_act_started'] + '' + workflowInboxProcessesInfo[current['wf_p_id']]['name'] + '' + workflowInboxProcessesInfo[current['wf_p_id']]['name'] + '' + current['insname'] + ''; content += ((workflowInboxLightVersion) ? workflowInboxPriority[current['wf_priority']] : (' ')); if (current['wf_status'] != 'active') content += ((workflowInboxLightVersion) ? 'Exc.' : ''+workflowInboxActivityNames[current['wf_activity_id']] + '' + workflowInboxUserNames[current['wf_user']] + '' + constructActions(current['wf_instance_id'], current['wf_activity_id'], current['wf_p_id'], current['wf_actions']) + '