Selector Component
O Selector Component dá a possibilidade de seleccionar um elemento, proveniente de um serviço.
Quando o serviço delvover mais do que N registos, aparece o link "ver mais" que abre um modal com todas as opções de escolha.
A directiva Selector Component tem os seguintes parâmetros:
| Propriedade | Tipo | Valor por defeito | Descrição |
|---|---|---|---|
| module | string | null | Module para o qual será feito o pedido (ex: corepatterns). |
| service | string | null | Serviço para o qual será feito o pedido (ex: companies). |
| getservice | string | null | Rota final do serviço (ex: getusercompanies). |
| getSearchService | string | null | Serviço do search. |
| keyAttribute | string | null | Chaves dos registos. |
| descriptionAttribute | string | null | Descrição dos registos. |
| serviceFields | string[] | [] | Lista de atributos necessários no retorno do serviço. |
| lastItemUsedTag | string | null | Tag para guardar o último registo usado. |
| isSubscriptionDependent | boolean | true | Flag que indica se os usersettings dependem, ou não, da subscrição. |
| lastItemsUsedTag | string | null | Tag para guardar os últimos registos usados. |
| searchModalDefinition | SearchModalDefinition | new SearchModalDefinition() | Definição necessária para apresentação do modal (título, colunas, etc). |
| menuDefinition | MenuDefinition | new MenuDefinition() | Evento para fechar o menu. |
Implementação do componente
Exemplo da definição do componente SelectorComponent:
export class SelectorComponent implements OnInit {
@Input()
module: string = "";
@Input()
service: string = "";
@Input()
getservice: string;
@Input()
getSearchService: string;
@Input()
keyAttribute: string;
@Input()
descriptionAttribute: string;
@Input()
fallbackDescriptionAttribute: string;
@Input()
serviceFields:string[] = [];
@Input()
lastItemUsedTag: string;
@Input()
isSubscriptionDependent: boolean = true;
@Input()
lastItemsUsedTag: string;
@Input()
searchModalDefinition: SearchModalDefinition = new SearchModalDefinition();
@Input()
menuDefinition: MenuDefinition = new MenuDefinition();
Exemplo da configuração que permite abrir o modal, quando o serviço devolve mais que N resultados:
if (this.totalItems > this.menuDefinition.maxItems) {
let self = this;
let seeMore = {
title: this.i18nService.get('ngcore.components.RES_SelectorComponent_SeeMore'),
iconClass:"icon-search_b",
class:"pri-btn-link-drop-down",
isDisabled: () => {
return false;
},
action: function () {
let modalConfig = {
class : `${self.searchModalDefinition.modalSize} popup-selector`,
}
// init modal
let bsModalRef: BsModalRef = self.modalService.show(SelectorModalContentComponent, modalConfig);
bsModalRef.content.initModal(self.searchModalDefinition.title, self.searchModalDefinition.placeholder,self.module, self.service, self.getservice, self.getSearchService, self.searchModalDefinition.columnsDefinition, line => {
let item:SelectorBase = new Selector(line[self.keyAttribute], line[self.descriptionAttribute] ? line[self.descriptionAttribute] : line[self.fallbackDescriptionAttribute] );
self.serviceFields.forEach(o => {
item[o] = line[o];
});
self.selectCurrentItem(item);
});
},
}
menuItems.push(seeMore);
}
Exemplo #1:
Utilização do componente para criação do Subscriptions Selector.
Exemplo #2:
Utilização do componente para criação Company Selector.