Data de postagem: Mar 25, 2011 8:17:47 PM
Em modelagem multidimensional de banco de dados, existem os conceitos de dimensão e de níveis da dimensão. No DataSource temos algo semelhante. Ao usar um "."" (ponto final) no nome de uma coluna, você está exibindo um nível de uma dimensão.
Exemplo:
/* /products/INTEQerp infrastructure/library/dataSources/pedido.ids */ var dts = new DataSource(-1894442793); var filtros = dts.createFilters([ {name: "PED_EMISSAO_START", value: new Date()}, {name: "PED_EMISSAO_END", value: new Date()} ]); var colunas = dts.createColumns([ {name: "PED_RECURSO.NOME"}, {name: "PED_TOTAL", aggregate: "sum"} ]); dts.getDataSet(filtros, colunas)
No exemplo acima NOME é um nível da dimensão RECURSO e o resultado será:
Por padrão os níveis extraídos das dimensões são campos inferidos de um campo lookup. Foi implementado no DataSource a possibilidade de se extrair outros tipos de níveis que não são campos de dimensões. Esses níveis só podem ser inferidos de campos que representam classes.
Vamos ao exemplo:
/* /products/INTEQerp infrastructure/library/dataSources/pedido.ids */ var dts = new DataSource(-1894442793); var filtros = dts.createFilters([ {name: "PED_EMISSAO_START", value: new Date()}, {name: "PED_EMISSAO_END", value: new Date()} ]); var colunas = dts.createColumns([ { //O "!" indica que o nível URL não é um campo name: "PED_RECURSO.CLASSE!URL" }, { name: "PED_TOTAL", aggregate: "sum" } ]); dts.getDataSet(filtros, colunas)
O resultado será:
Note que o uso de sinal de exclamação invés do ponto é para evitar ambiguidades entre níveis inferidos de valores de campos dos outros níveis.
O nível URL das dimensões de classes podem ser configurados por dois atributos das colunas do DataSource, depth e backDepth. Maiores detalhes na documentação dessas propriedades, em http://l.unum.com.br/jsdoc/symbols/uwl.datasource.Column.html#depth e http://l.unum.com.br/jsdoc/symbols/uwl.datasource.Column.html#backDepth.
Exemplo do uso do atributo depth:
/* /products/INTEQerp infrastructure/library/dataSources/pedido.ids */ var dts = new DataSource(-1894442793); var filtros = dts.createFilters([ {name: "PED_EMISSAO_START", value: new Date()}, {name: "PED_EMISSAO_END", value: new Date()} ]); var colunas = dts.createColumns([ { name: "PED_RECURSO.CLASSE!URL", depth: 2 }, { name: "PED_TOTAL", aggregate: "sum" } ]); dts.getDataSet(filtros, colunas);
O resultado será:
Note que o atributo depth limitou o nível de exibição da hierarquia de classe para duas classes.
Exemplo do uso do atributo backDepth:
/* /products/INTEQerp infrastructure/library/dataSources/pedido.ids */ var dts = new DataSource(-1894442793); var filtros = dts.createFilters([ {name: "PED_EMISSAO_START", value: new Date()}, {name: "PED_EMISSAO_END", value: new Date()} ]); var colunas = dts.createColumns([ { name: "PED_RECURSO.CLASSE!URL", backDepth: 2 }, { name: "PED_TOTAL", aggregate: "sum" } ]); dts.getDataSet(filtros, colunas)
O resultado será:
Note que o atributo backDepth limitou, de baixo para cima, a exibição da hierarquia de classes para duas classes.