Pessoal, preciso disponibilizar um campo do tipo zoom para que o usuário selecione os responsáveis por uma atividade, porém, o usuários disponíveis deverão ser os usuários de um grupo, alguém pode dar um norte de como fazer?
Boa tarde Vagner,
Você pode pegar do dataset “colleagueGroup” e lá filtrar no seu zoom.
Exemplo genérico de zoom com filtro:
<input type="zoom" name="codigo_zoom" id="codigo_zoom" data-zoom="{
'displayKey':'{campo do dataset}',
'datasetId':'{nome do dataset}',
'maximumSelectionLength':'1',
'placeholder':'Escolha o codigo',
'filterValues': '{campo filtro},{valor para filtro}',//pode ter mais de um filtro, sempre adicionando campo valor separado por virgula
'fields':[
{
'field':'{nome campo}',
'label':'{label visualiza~]ao}'
},{
'field':'{nome campo}',
'label':'{label visualiza~]ao}'
}
]
}" />
Caso queira, esse aqui desenvolvi consultando o SQL, já trás o nome junto.
Dá pra utilizar no zoom ali em cima também.
/**
@description Dataset que consulta usuários de um grupo
@example
var c1 = DatasetFactory.createConstraint('GROUPID', 'Faturamento', '', ConstraintType.MUST);
var ds = DatasetFactory.getDataset('Ds_UsersByGroup', null, new Array(c1), null);
*/
function createDataset(fields, constraints, sortFields) {
var minhaQuery = "";
var dataSource = "jdbc/AppDS";
var newDataset = DatasetBuilder.newDataset();
var fieldName;
try {
var ic = new javax.naming.InitialContext();
var ds = ic.lookup(dataSource);
var created = false;
var GROUPID;
if(constraints != null){
for (i = 0; i < constraints.length; i++){
if (constraints[i].fieldName == "GROUPID"){
GROUPID = constraints[i].initialValue;
}
}
}
minhaQuery = " ";
minhaQuery += " SELECT * FROM FDN_GROUPUSERROLE TB ";
minhaQuery += " INNER JOIN FDN_USERTENANT U1 on TB.LOGIN = U1.LOGIN ";
minhaQuery += " INNER JOIN FDN_USER U2 on U1.USER_ID = U2.USER_ID ";
minhaQuery += " WHERE GROUP_CODE=? ";
minhaQuery += " ORDER BY FULL_NAME ";
var conn = ds.getConnection();
var stmt = conn.prepareStatement(minhaQuery);
stmt.setString(1, GROUPID);
var rs = stmt.executeQuery();
var columnCount = rs.getMetaData().getColumnCount();
//GERA TABELA DE RETORNO
while (rs.next()) {
if (!created) {
//COLUNAS
for (var i = 1; i <= columnCount; i++) {
newDataset.addColumn(rs.getMetaData().getColumnName(i));
}
created = true;
}
var Arr = new Array();
//LINHAS
for (var i = 1; i <= columnCount; i++) {
var obj = rs.getObject(rs.getMetaData().getColumnName(i));
if (null != obj) {
if(rs.getObject(rs.getMetaData().getColumnName(i)).toString()!=null){
var campo = rs.getMetaData().getColumnName(i);
Arr[i - 1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
}else{
Arr[i - 1] = "";
}
} else {
Arr[i - 1] = "";
}
}
newDataset.addRow(Arr);
}
}catch (e) {
newDataset.addColumn("Erro");
newDataset.addRow(new Array(e.message));
log.error("ERRO==============> " + e.message);
}finally {
if (rs != null && rs != false ){
rs.close();
}
if (stmt != null){
stmt.close();
}
if (conn != null){
conn.close();
}
}
return newDataset;
}
Willian,
agradeço muito a ajuda. Mas arrumei uma outra forma de fazer utilizando um mecanismo customizado para retornar os usuários de um grupo, ja que a necessidade original era criar este mecanismo. Vou compartilhar abaixo a solução utilizada:
function createDataset(fields, constraints, sortFields) {
// Cria o dataset
var newDataset = DatasetBuilder.newDataset();
newDataset.addColumn("NOME");
newDataset.addColumn("MATRICULA_FLUIG");
var constraintColleagueGroup1 = DatasetFactory.createConstraint('colleagueGroupPK.groupId', 'Gerentes', 'Gerentes', ConstraintType.MUST);
var datasetColleagueGroup = DatasetFactory.getDataset('colleagueGroup', null, new Array(constraintColleagueGroup1), null);
var constraintColleague1;
var constraintColleague2;
var colunasColleague;
var datasetColleague;
for (var i = 0; i < datasetColleagueGroup.rowsCount; i++) {
usuarioCorrente = datasetColleagueGroup.getValue(i,"colleagueGroupPK.colleagueId");
constraintColleague1 = DatasetFactory.createConstraint('active', 'true', 'true', ConstraintType.MUST);
constraintColleague2 = DatasetFactory.createConstraint('colleaguePK.colleagueId', usuarioCorrente, usuarioCorrente, ConstraintType.MUST);
colunasColleague = new Array('active', 'colleagueName', 'colleaguePK.colleagueId');
datasetColleague = DatasetFactory.getDataset('colleague', colunasColleague, new Array(constraintColleague1, constraintColleague2), null);
newDataset.addRow([datasetColleague.getValue(0, "colleagueName"), datasetColleague.getValue(0, "colleaguePK.colleagueId")]);
}
return newDataset;
}
A intenção é que o usuário selecionado seja o responsável pela execução da atividade?
Não bastaria usar o mecanismo de atribuição da Atividade marcando com “Atribuição por Grupo” e então selecionar o grupo?
Bruno,
na verdade a intenção é dinâmica, ora pode ser dois usuários de um grupo, ora pode ter 7 usuários, ora pode ser todos, podendo ser até 14 opções. Então no caso, a necessidade foi apresentar todos os usuários de um determinado grupo, e ele podendo escolher até 14 opções.
Este tópico foi fechado automaticamente 16 horas depois da úlima resposta. Novas respostas não são mais permitidas.