repository/select-modal/repository-select-modal.component.ts
RepositorySelectModalComponent displays repository entries options and allows to select them.
```
* import { take } from 'rxjs/operators';
* import { RepositorySelectModalComponent, ModalSelectionMode, RepositoryType } from '@c8y/ngx-components/repository';
*
* const initialState = {
* repositoryType: RepositoryType.FIRMWARE,
* title: gettext('Install firmware'),
* subTitle: gettext('Available firmwares matching the device type'),
* icon: 'c8y-firmware',
* mode: ModalSelectionMode.SINGLE,
* labels: { ok: gettext('Install') },
* disableSelected: false
* };
*
* const modal = this.bsModal.show(RepositorySelectModalComponent, {
* ignoreBackdropClick: true,
* initialState
* });
*
* modal.content.load.next();
* modal.content.resultEmitter.pipe(take(1)).subscribe((firmware) => {
* ...
* })
* ```
selector | c8y-repository-select-modal |
templateUrl | ./repository-select-modal.component.html |
Properties |
Methods |
constructor(repositoryService: RepositoryService, translateService: TranslateService)
|
|||||||||
Parameters :
|
Async aggregate | ||||||
aggregate(mos: IManagedObject[])
|
||||||
Parameters :
Returns :
Promise<ISelectModalObject[]>
|
getAndAssignRepositoryBinaries | ||||||
getAndAssignRepositoryBinaries(mos: IManagedObject[])
|
||||||
Parameters :
Returns :
{}
|
getSelectModalObject | |||||||||
getSelectModalObject(repositoryEntry: RepositoryCategory, options: ISelectModalOption[])
|
|||||||||
Parameters :
Returns :
ISelectModalObject
|
getSelectModalOptions | |||||||||||||||
getSelectModalOptions(versions: RepositoryBinary[], selectedItems: SelectedRepositoryBinary[], repositoryEntry: RepositoryCategory, repositoryType: RepositoryType)
|
|||||||||||||||
Parameters :
Returns :
ISelectModalOption[]
|
isBinaryRepositorySelected | |||||||||||||||
isBinaryRepositorySelected(selectedItems: SelectedRepositoryBinary[], repositoryEntry: RepositoryCategory, repositoryBinary: RepositoryBinary, repositoryType: RepositoryType)
|
|||||||||||||||
Parameters :
Returns :
boolean
|
ngOnInit |
ngOnInit()
|
Returns :
void
|
result | ||||||
result(selectedItems: SelectedRepositoryBinary[])
|
||||||
Parameters :
Returns :
void
|
search | ||||||
search(searchTerm: string)
|
||||||
Parameters :
Returns :
void
|
areMoreEntries |
areMoreEntries:
|
Type : boolean
|
Default value : false
|
Optional Allows to show a warning that the search criteria should be narrowed down. By default, this warning is hidden. |
badgeTemplates |
badgeTemplates:
|
Type : object
|
Default value : { '=1': gettext('{{count}} version'), other: gettext('{{count}} versions') }
|
Optional Allows to use custom badges templates. |
deviceTypeQuery |
deviceTypeQuery:
|
Type : any
|
Default value : {}
|
Optional Allows to provide device type query to restrict search criteria. Only takes effect when repositoryEntriesWithVersions$ is not provided, otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$. |
disableSelected |
disableSelected:
|
Type : boolean
|
Default value : true
|
Allows to block selection of the other versions from the same repository entry. |
icon |
icon:
|
Type : string
|
Optional Allows to use custom icon in the modal header. |
labels |
labels:
|
Type : ModalLabels
|
Default value : { ok: gettext('Save') }
|
Optional Allows to provide custom labels for the buttons responsible for confirm/dismiss modal actions. |
load |
load:
|
Type : Subject<void>
|
Default value : new Subject()
|
Loads the content of the modal. Must be invoked by the modal's caller. |
modalEntries |
modalEntries:
|
Type : Observable<ISelectModalObject[]>
|
Default value : this.load.pipe(
switchMap(() => this.repositoryEntriesWithVersions$),
mergeMap(mos => this.aggregate(mos)),
tap(items => {
this.areMoreEntries = items.length >= this.PAGE_SIZE ? true : false;
})
)
|
mode |
mode:
|
Type : ModalSelectionMode
|
Default value : ModalSelectionMode.SINGLE
|
Optional Allows to change selection mode. Supported options:
|
repositoryEntriesWithVersions$ |
repositoryEntriesWithVersions$:
|
Type : Observable<IManagedObject[]>
|
Default value : undefined
|
Optional Allows to provide custom data. |
repositoryType |
repositoryType:
|
Type : RepositoryType.FIRMWARE | RepositoryType.SOFTWARE
|
Repository entry type. |
resultEmitter |
resultEmitter:
|
Type : EventEmitter<SelectedRepositoryBinary[]>
|
Default value : new EventEmitter<
SelectedRepositoryBinary[]
>()
|
Emits the list of selected options. |
searchQuery |
searchQuery:
|
Type : any
|
Default value : {}
|
Optional Allows to provide query to restrict search criteria. Only takes effect when repositoryEntriesWithVersions$ is not provided, otherwise modal's caller have to provide already filtered data in the repositoryEntriesWithVersions$. |
selected |
selected:
|
Type : SelectedRepositoryBinary[]
|
Optional Allows to pass the array of items. Each item from this array will be marked as selected in the modal. |
showFilter |
showFilter:
|
Type : boolean
|
Default value : true
|
Optional Allows to hide the filter input field. By default, the filter input field is displayed. |
subTitle |
subTitle:
|
Type : string
|
Optional Allows to provide custom modal subtitle. |
title |
title:
|
Type : string
|
Default value : gettext('Select repository entry')
|
Optional Allows to provide custom modal title. |
<c8y-select-modal
[icon]="icon"
[title]="title"
[subTitle]="subTitle"
[items]="modalEntries | async"
[mode]="mode"
[disableSelected]="disableSelected"
[labels]="labels"
[showFilter]="showFilter"
[areMoreEntries]="areMoreEntries"
(search)="search($event)"
(result)="result($event)"
>
</c8y-select-modal>