Pra puxar os dados de um dataset na Widget você primeiro precisa importar a biblioteca vcXMLRPC.js.
No seu arquivo view.ftl basta inserir esse código no início ou final do arquivo: <script src="/webdesk/vcXMLRPC.js"></script>
Para trazer os valores de um Dataset basta usar a função DatasetFactory.getDataset
no seu JavaScript.
Por exemplo, para pegar todos os nomes e logins dos usuários ativos do Fluig:
DatasetFactory.getDataset(
"colleague",
["colleagueName", "login"],
[new DatasetFactory.createConstraint("active", true, true, ConstraintType.MUST)],
["colleagueName"],
{
// Chama a função para criar o CSV
success: downloadCsvFile,
// Exibe o erro
error: function (error) {
console.log("Erro");
}
}
);
Um modo de criar o arquivo e já fazer o download:
function downloadCsvFile(data) {
// dados será uma string contendo tudo que terá no arquivo csv.
// Não sei o limite de informações que é possível salvar assim.
let dados = "Nome,Login\n";
const colleagues = data.values;
// Percorro os valores do dataset pra montar os dados
for (let i = 0; i < colleagues.length; ++i) {
dados += `${colleagues[i].colleagueName},${colleagues[i].login}\n`;
}
// Criando o Blob pra gerar o arquivo
let arquivo = new Blob([dados], {type: "text/csv"});
// Criar um link pra fazer a ação de download
let link = document.createElement("a");
// O nome que será dado ao arquivo no momento do download
link.setAttribute("download", "arquivo.csv");
// Aqui crio o conteúdo que será baixado pelo navegador como arquivo
link.setAttribute("href", URL.createObjectURL(arquivo));
// Adiciono o link na página
document.body.appendChild(link);
// disparo o click
link.click();
// removo o link, pois não terá mais utilidade
document.body.removeChild(link);
}
O ideal é tratar os campos, pois o CSV é separado por vírgulas e podem ter vírgulas no conteúdo dos campos né?
Provavelmente existe alguma biblioteca pra trabalhar especificamente com exportação de dados em CSV, mas não cheguei a
pesquisar por algo. Até recomendo pesquisar, pois essa minha solução talvez não atenda se for uma quantidade alta de dados.
A sua dúvida está em pegar os dados do dataset na Widget, quais datasets consultar, gerar o arquivo CSV ou algum outro item específico?
— Bruno Gasparetto 28 de Sep de 2020Pegar os dados do dataset na widget em formato csv
— Natasha Neves Souza 28 de Sep de 2020