Page tree

Quando utilizar a diretiva totvs-select, a mesma assumirá o comportamento de um campo de entrada de dados com funcionalidades para a seleção de dados.

Sintaxe

<totvs-field totvs-select>
    ...
</totvs-field>


Propriedades

Propriedades que podem ser utilizadas em ambas diretivas, totvs select com zoom ou totvs select com remote data.

 

Nome
Tipo
Padrão
Descrição
select-idString-(Obrigatório) Código do campo principal no model
select-descriptionString-(Obrigatório) Código do campo de descrição no model
delayNumber500 (0,5 segundos)

Indica quanto tempo após o ultimo caracter no campo que será disparada a função para carregar os dados.

min-lengthNumber1Número mínimo de caracteres que o usuário deve digitar antes que a pesquisa seja realizada 
filterStringcontains

Utilizado para filtrar as sugestões, conforme passado no campo de busca. Pode ser utilizado: contains, startswith ou endswith.

return-objectAttributeselect-id

Caso você queira que ao selecionar um dado, retorne um objeto, você pode adicionar este atributo, return-object, na tag da sua diretiva. O padrão é que retorne o valor que contém no atributo select-id.

t-no-dataString'l-no-data'

Tradução da literal que é mostrada quando não houver dados na lista do Totvs Select.

Por padrão será adicionado a literal de tradução 'l-no-data', portanto deve ser adicionado ao translations.js da aplicação.

Caso queria adicionar ao translations.js do módulo, pode utilizar esta propriedade e passar da seguinte maneira:

t-no-data="{{ ::'l-no-data' | i18n : [] : 'js/exemplo' }}".

ng-requiredBoolean-

Adiciona um validador e faz ser obrigatório informar algum valor no campo.

Verifique como utiliza-lo para fazer validações: Validação

 

Utilizado em conjunto com o Zoom

Propriedades

NomeTipoPadrãoDescrição
select-serviceString-(Obrigatório) Nome do serviço do zoom (utilizado na busca das informações no momento da digitação)
select-initObject/Array-

Objeto ou array para que seja considerado no applyFilter como filtro. Este valor pode ser recuperado na função applyFilter no serviço do zoom, vai estar atributo ao parâmetro: init.

Deve ser informado através de um valor do controller ou passando direto o objeto para o select-init.

Exemplo de utilização select-init
/* HTML */
<totvs-field
	totvs-select
	...
	select-init="controlller.filter">
</totvs-field>
 
/* Controller */
	...
	var ctrl = this;
	ctrl.filter = {filter: {field: 'name', value: 'cliente1'}};
 
---------- ou ----------
 
/* HTML */
<totvs-field
	totvs-select
	...
	select-init="{filter: {field: 'name', value: 'cliente1'}}">
</totvs-field>
select-matchObjectUtiliza os valores do select-id e select-description

Pode ser passado objeto json contendo os atributos e os separadores que serão utilizados na apresentação dos dados.

Deve seguir o padrão a seguir: '[{"field": "cod_country", "separator": " - "}, {"field": "des_country"}]'

linkString-Quando utilizado apresenta-se como um item na lista de itens retornados do servidor e ao selecionar o item o mesmo acessará a URL passada na propriedade link, por exemplo: link="/customer/new".
link-textString"Adicionar"Corresponde ao texto do link que será apresentado na lista de itens retornados.

Observação

Caso utilizar o totvs-select com a opção de zoom, é necessário pelo menos, passar o atributo zoom-service Totvs Zoom.

Os demais atributos para o funcionamento do zoom devem ser passados como atributos do totvs-select.

Remote Data

Propriedades

NomeTipoPadrãoVersãoDescrição
t-data-sourceObject | Array | kendo.data.DataSource-A partir da 12.1.15

Este atributo é responsável carregas os items no totvs select.

Através do dataSource é possível carregar itens remotos.

Informações básicas a ser informada:

  • transport.read.url | String - A URL para qual será feita a requisição.
  • transport.read.dataType | String - O tipo de dado esperado do servidor, normalmente 'json' ou 'jsonp'.

  • serverFiltering | Boolean - Se definido como true, o dataSource deixará a implementação de filtragem para o serviço remoto.
    É enviado para o servidor o seguinte formato de dados:

    Por padrão, o filter é enviado para o servidor seguindo as convenções do jQuery. Por exemplo, filter { logic: "and", filters: [ { field: "name", operator: "contains", value: "THF" } ] } é enviado como:

    • filter[logic]: and
    • filter[filters][0][field]: name
    • filter[filters][0][operator]: startswith
    • filter[filters][0][value]: THF

     

  • schema.data | Function | String - O campo a partir da resposta do servidor que contém os itens de dados. Pode ser definido para uma função que é chamada para retornar os itens de dados para a resposta.
Exemplo
// HTML
<totvs-field
	totvs-select
    ng-model="controller.model"
    label="Cliente:"
    t-no-data="{{ ::'l-no-data' | i18n }}"
    placeholder="Selecione.."
    canclean
    select-id="id"
	select-description="name"
    t-data-source="controller.dataSource">
</totvs-field>
 
// JS - Controller
ctrl.dataSource = kendo.data.DataSource({
	transport: {
		read: {
			url: "http://187.94.59.40:8081/rest/demo/hotels/",
            dataType: "json"
		}
	},
	serverFiltering: true,
	schema: {
		data: "data"
	}
});

Para mais detalhes como serverPaging, ParameterMap, etc..

Veja mais em: http://docs.telerik.com/kendo-ui/api/javascript/ui/combobox#configuration-dataSource

e http://docs.telerik.com/kendo-ui/api/javascript/data/datasource

 

Dependência

Exemplo de Uso

Totvs Select com Zoom
<totvs-page-form>
    <totvs-field
		totvs-select
        ng-model="selectedCountry"
        select-id="cod_country"
        select-description="des_country"
        select-service="module.country.zoom">
    </totvs-field>
</totvs-page-form>
Exemplo Totvs Select com Remote Data
<totvs-page-form>
	<totvs-field
		totvs-select
	    ng-model="controller.model"
    	label="Cliente:"
	    t-no-data="{{ ::'l-no-data' | i18n }}"
	    placeholder="Selecione.."
    	canclean
	    select-id="id"
		select-description="name"
	    t-data-source="controller.dataSource">
	</totvs-field>
</totvs-page-form>

// JS - Controller
ctrl.dataSource = kendo.data.DataSource({
	transport: {
		read: {
			url: "http://187.94.59.40:8081/rest/demo/hotels/",
            dataType: "json"
		}
	},
	serverFiltering: true,
	schema: {
		data: "data"
	}
});