...
Bloco de código |
---|
var c1 = DatasetFactory.createConstraint("codigo", "1", "4", ConstraintType.MUST); |
...
Será retornado:
Código | Nome | Cidade |
---|---|---|
1 | Javier Spiva | São Paulo |
2 | Cody Ballow | Rio de Janeiro |
3 | Javier Naramore | São Paulo |
4 | Max Nevius | Rio de Janeiro |
...
Para retornar somente as linhas que os nomes sejam „Noemi Roiger‟, „Javier Naramore‟ e „Lonnie Cadwallader‟ ou que a cidade seja Brasília.
Bloco de código |
---|
var c1 = DatasetFactory.createConstraint("nome", " Noemi Roiger", " Noemi Roiger", ConstraintType.SHOULD); var c2 = DatasetFactory.createConstraint("nome ", " Javier Naramore", " Javier Naramore", ConstraintType.SHOULD); var c3 = DatasetFactory.createConstraint("nome ", "Lonnie Cadwallader", "Lonnie Cadwallader", ConstraintType.SHOULD); var c4 = DatasetFactory.createConstraint("cidade", "Brasília", "Brasília", ConstraintType. SHOULD); |
Será retornado:
Código | Nome | Cidade |
---|---|---|
3 | Javier Spiva | São Paulo |
5 | Noemi Roiger | São Paulo |
6 | Lonnie Cadwallader | Rio de Janeiro |
7 | Lorrie Spece | Rio de Janeiro |
...
Bloco de código |
---|
var c1 = DatasetFactory.createConstraint("cidade", "Brasília", "Brasília", ConstraintType.MUST_NOT); |
Será retornado
Código | Nome | Cidade |
1 | Javier Spiva | São Paulo |
2 | Cody Ballow | Rio de Janeiro |
3 | Javier Naramore | São Paulo |
4 | Max Nevius | Rio de Janeiro |
5 | Noemi Roiger | São Paulo |
6 | Lonnie Cadwallader | Rio de Janeiro |
O TOTVS | ECM permite acessar os Datasets via código JavaScript no HTML de um fichário, desde que esteja importada a biblioteca "ecm_datasets.js". Para isto, basta incluir a linha abaixo antes da tag body do HTML:
Bloco de código |
---|
<script src="../ecm_datasets.js"></script> |
Diferente o caso acima, este modelo de acesso faz com que o Dataset seja transportado do servidor para o cliente, ou seja, o browser do usuário. Por isso, é importante observar a quantidade de informações que será manuseada, caso contrário pode-se ter problemas de consumo excessivo de banda ou performance.
Bloco de código |
---|
function showNewDatasetFull() { var div = document.getElementById("myDiv3");
// Busca o dataset try { var dataset = DatasetFactory.getDataset("topic"); var tabela = showDataset(dataset); div.innerHTML = tabela; } catch(erro) { div.innerHTML = erro; } }
function showDataset(dataset) { var tabela = "<TABLE border=1 cellpadding=0 cellspacing=0>";
// monta o cabeçalho tabela += "<TR><TD>#</TD>"; for(i = 0; i < dataset.columns.length; i++) { tabela += "<TH>" + dataset.columns[i] + "</TH>"; } tabela += "</TR>";
for(r = 0; r < dataset.values.length; r++) { var record = dataset.values[r]; tabela += "<TR><TD>" + r + "</TD>";
for(i = 0; i < dataset.columns.length; i++) { var property = "record[\"" + dataset.columns[i] + "\"]"; tabela += "<TD>"; try { tabela += eval(property); } catch(erro) {} tabela += "</TD>"; }
tabela += "</TR>"; }
tabela += "</TABLE>"; return tabela; } |
No exemplo acima, percebe-se que a forma de se invocar um Dataset é muito semelhante ao método apresentado anteriormente, através do DatasetFactory. A função showDataset apresenta um exemplo de código que permite apresentar os dados do Dataset.
Bloco de código |
---|
function showNewDatasetPartial() { var div = document.getElementById("myDiv4");
var c1 = new SearchConstraint("documentPK.documentId", null, "350”, ConstraintType.MUST); var c2 = new SearchConstraint("documentType", "1", "1", ConstraintType.MUST_NOT); var c3 = new SearchConstraint("documentType", "systool", "systool", ConstraintType.MUST_NOT); var c4 = new SearchConstraint("documentType", "sysfolder", "sysfolder",
ConstraintType.MUST_NOT); var c5 = new SearchConstraint("documentType", "blogarea", "blogarea", ConstraintType.MUST_NOT); var c6 = new SearchConstraint("documentDescription", "", "", ConstraintType.MUST_NOT); var c7 = new SearchConstraint("activeVersion", "true", "true", ConstraintType.MUST); var constraints = new Array(c1, c2, c3, c4, c5, c6, c7);
// Define os campos para ordenação var sortingFields = new Array("accessCount", "documentDescription");
// Busca o dataset try { var dataset = DatasetFactory.getDataset("document", null, constraints, sortingFields); showDataset(dataset); } catch(erro) { div.innerHTML = erro; } } |
Assim como no método anterior, quando é preciso filtrar um Dataset é preciso criar as constraints que serão utilizadas na busca. Os argumentos utilizados no método getDataset também são os mesmos que apresentados anteriormente.
Informações | ||
---|---|---|
| ||
A biblioteca “vcXMLRPC.js“ era incompatível com algumas tecnologias disponíveis, como por exemplo o jQuery UI. Para aperfeiçoar a customização de formulários e possibilitar a utilização de bibliotecas Javascript complementares, foi desenvolvida a nova biblioteca de integração de datasets “ecm_datasets.js”. Esta nova biblioteca pode ser utilizada da mesma forma que a “vcXMLRPC.js“ e deverá ser utilizada para construção de novas customizações. As customizações que já utilizam a antiga biblioteca “vcXMLRPC.js“ continuarão funcionando normalmente, entretanto esta biblioteca está depreciada. |
O TOTVS | ECM permite especificar um Dataset em um campo select (combo-box). Quando isto é feito, as opções do combo são automaticamente criadas de acordo com os dados existentes no Dataset.
Bloco de código |
---|
<select name="estado" dataset="estadosBR" datasetkey="Sigla" datasetvalue="Estado"> </select> |
No exemplo acima, o campo “estado” foi configurado para que as opções do combo sejam criadas a partir do Dataset “estadosBR”. Como valor do campo será utilizado o campo “Sigla”, embora para o usuário será apresentado o campo “Estado”.
Os Datasets também podem ser utilizados para permitir gerar conteúdo dinâmico em páginas de Sites. A sintaxe utilizada para o acesso e navegação aos fichários é muito similar aos casos anteriormente vistos, embora adaptada para o uso pelo FreeMarker (engine utilizado pelo Site).
O exemplo abaixo apresenta um caso simples de acesso a um Dataset no Site.
Bloco de código |
---|
[#assign myDataset = DatasetFactory.getDataset("tipoOferta", null, null, null)]
<table> [#list myDataset.getMap() as oferta] <tr> <td>${oferta.name}</td> </tr> [/#list] </table> |
No exemplo acima, é criada uma variável chamada myDataset, que contém o Dataset de nome “tipoOferta”. Em seguida, são percorridos os registros existentes no Dataset ([#list myDataset.getMap as oferta]) e para cada registro é apresentado o nome da oferta (${oferta.name}).
O exemplo abaixo apresenta uma carga de Dataset que utiliza filtros:
Bloco de código |
---|
[#assign c1 = DatasetFactory.createConstraint("tipoOferta", “P”, “P”, ConstraintType.MUST)] [#assign c2 = DatasetFactory.createConstraint("metadata#active", 'true', 'true', ConstraintType.MUST)]
[#assign ofertas = DatasetFactory.getDataset("ofertas", null, [c1, c2], null)]
<table>
[#list ofertas.getMap() as row]
<tr> <td>${row.nome_oferta}</td> <td>${row.texto_oferta}</td> </tr>
[/#list]
</table> |