File
Implements
Index
Properties
|
|
Methods
|
|
Accessors
|
|
Methods
addConfiguration
|
addConfiguration()
|
|
addFirmware
|
addFirmware()
|
|
addSoftware
|
addSoftware()
|
|
getAndAssignRepositoryBinaries
|
getAndAssignRepositoryBinaries(mos: IManagedObject[])
|
Parameters :
Name |
Type |
Optional |
mos |
IManagedObject[]
|
No
|
Returns : {}
|
getRepositoryEntriesWithVersions$
|
getRepositoryEntriesWithVersions$(searchTerm$: BehaviorSubject, repoType: RepositoryType)
|
Parameters :
Name |
Type |
Optional |
searchTerm$ |
BehaviorSubject<FilterCriteria>
|
No
|
repoType |
RepositoryType
|
No
|
|
Async
ngOnInit
|
ngOnInit()
|
|
removeFirmware
|
removeFirmware()
|
|
removeItem
|
removeItem(removedItem, category)
|
Parameters :
Name |
Optional |
removedItem |
No
|
category |
No
|
|
Async
updateDeviceProfile
|
updateDeviceProfile(partialDeviceProfile)
|
Parameters :
Name |
Optional |
partialDeviceProfile |
No
|
|
DEVICE_TYPE_DISABLED_POPOVER
|
Default value : gettext(
'Device type cannot be changed on profiles with already defined firmware, software or configuration since they may not be applicable to devices of the new device type.'
)
|
DEVICE_TYPE_POPOVER
|
Default value : gettext(
'The device profile will be available for assignments on devices of the specified type. Otherwise, it will be available for all device types.'
)
|
PRODUCT_EXPERIENCE
|
Default value : PRODUCT_EXPERIENCE_DEVICE_PROFILE
|
productExperienceEvent
|
Type : ProductExperienceEvent
|
Default value : {
eventName: PRODUCT_EXPERIENCE_DEVICE_PROFILE.EVENTS.REPOSITORY,
data: {
component: PRODUCT_EXPERIENCE_DEVICE_PROFILE.COMPONENTS.DEVICE_PROFILE
}
}
|
Accessors
isDeviceProfileEmpty
|
getisDeviceProfileEmpty()
|
<c8y-title>{{ profileName }}</c8y-title>
<c8y-breadcrumb>
<c8y-breadcrumb-item
icon="c8y-management"
label="{{ 'Management' | translate }}"
></c8y-breadcrumb-item>
<c8y-breadcrumb-item
[icon]="'c8y-device-profile'"
[label]="'Device profiles' | translate"
[path]="'device-profiles'"
></c8y-breadcrumb-item>
<c8y-breadcrumb-item
icon="c8y-device-profile"
label="{{ profileName }}"
></c8y-breadcrumb-item>
</c8y-breadcrumb>
<div
class="row"
*ngIf="deviceProfile"
>
<div class="col-lg-12 col-lg-max">
<div
class="card card--fullpage"
*ngIf="deviceProfile"
>
<div class="card-block bg-level-1 flex-no-shrink p-t-24 p-b-24 overflow-visible">
<div class="content-flex-70">
<div class="text-center">
<i class="c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-profile"></i>
<p>
<small class="label label-info">{{ 'Device profile' | translate }}</small>
</p>
</div>
<div class="flex-grow col-10">
<div class="row">
<div class="col-md-4">
<form #editNameForm="ngForm">
<c8y-form-group>
<label
class="control-label"
translate
>
Name
</label>
<div class="input-group input-group-editable">
<input
class="form-control"
placeholder="{{ 'e.g. My device profile' | translate }}"
name="name"
type="text"
required
[(ngModel)]="deviceProfile.name"
data-cy="device-profile--add-device-profile-name"
size="{{ deviceProfile.name?.length || 1 }}"
/>
<span></span>
<div class="input-group-btn">
<button
class="btn btn-primary"
title="{{ 'Save' | translate }}"
type="button"
data-cy="device-profile--save"
(click)="
updateDeviceProfile({ name: deviceProfile.name });
editNameForm.form.markAsPristine()
"
[disabled]="editNameForm.form.invalid"
c8yProductExperience
inherit
[actionData]="{ action: PRODUCT_EXPERIENCE.ACTIONS.SAVE }"
>
{{ 'Save' | translate }}
</button>
</div>
</div>
</c8y-form-group>
</form>
</div>
<div class="col-md-4">
<form #editTypeForm="ngForm">
<c8y-form-group>
<label class="control-label">
{{ 'Device type' | translate }}
<button
class="btn-help"
[attr.aria-label]="'Help' | translate"
[popover]="
(DEVICE_TYPE_POPOVER | translate) +
(isDeviceProfileEmpty
? ' ' + (DEVICE_TYPE_DISABLED_POPOVER | translate)
: '')
"
placement="right"
triggers="focus"
container="body"
type="button"
></button>
</label>
<div class="input-group input-group-editable">
<input
class="form-control"
placeholder="{{ 'e.g.' | translate }} c8y_Linux"
name="type"
type="text"
[(ngModel)]="deviceProfile.c8y_Filter.type"
data-cy="device-profile--device-type"
size="{{ deviceProfile.c8y_Filter.type?.length || 14 }}"
[disabled]="isDeviceProfileEmpty"
/>
<span></span>
<div class="input-group-btn">
<button
class="btn btn-primary"
title="{{ 'Save' | translate }}"
type="button"
(click)="
updateDeviceProfile({
c8y_Filter: { type: deviceProfile.c8y_Filter.type }
});
editTypeForm.form.markAsPristine()
"
[disabled]="isDeviceProfileEmpty"
c8yProductExperience
inherit
[actionData]="{ action: PRODUCT_EXPERIENCE.ACTIONS.SAVE }"
>
{{ 'Save' | translate }}
</button>
</div>
</div>
</c8y-form-group>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="inner-scroll">
<div class="card-header separator-top-bottom bg-content sticky-top">
<div class="card-icon">
<i
class="c8y-icon-duocolor"
[c8yIcon]="'c8y-firmware'"
></i>
</div>
<div
class="card-title"
translate
>
Firmware
</div>
</div>
<div
class="card-block p-t-0"
*ngIf="deviceProfile.c8y_DeviceProfile.firmware"
>
<c8y-list-group>
<c8y-li>
<c8y-li-icon>
<i [c8yIcon]="'c8y-firmware'"></i>
</c8y-li-icon>
<c8y-li-body class="content-flex-50 m-l-4">
<div class="col-4">
<span
class="text-truncate"
title="{{ deviceProfile.c8y_DeviceProfile.firmware.name }}"
>
<span
class="text-label-small m-r-8"
translate
>
Name
</span>
{{ deviceProfile.c8y_DeviceProfile.firmware.name }}
</span>
</div>
<div class="col-4"></div>
<div class="col-3 d-flex a-i-center">
<span
class="text-truncate"
title="{{ deviceProfile.c8y_DeviceProfile.firmware.version }}"
>
<span
class="text-label-small m-r-4"
translate
>
Version
</span>
{{ deviceProfile.c8y_DeviceProfile.firmware.version }}
</span>
<button
class="btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8"
title="{{ 'Remove`firmware`' | translate }}"
type="button"
(click)="removeFirmware()"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE
}"
>
<i c8yIcon="minus-circle"></i>
{{ 'Remove`firmware`' | translate }}
</button>
</div>
<div class="m-l-auto p-r-8 hidden-xs">
<button
class="btn btn-dot showOnHover text-danger"
[attr.aria-label]="'Remove`firmware`' | translate"
tooltip="{{ 'Remove`firmware`' | translate }}"
placement="right"
type="button"
[delay]="500"
(click)="removeFirmware()"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE
}"
>
<i c8yIcon="minus-circle"></i>
</button>
</div>
</c8y-li-body>
</c8y-li>
</c8y-list-group>
</div>
<div
class="card-block p-t-16"
*ngIf="!deviceProfile.c8y_DeviceProfile.firmware"
>
<c8y-ui-empty-state
class="p-t-16 d-block"
icon="c8y-firmware"
[title]="'No firmware defined.' | translate"
[horizontal]="true"
></c8y-ui-empty-state>
</div>
<div
class="card-footer p-t-0"
*ngIf="!deviceProfile.c8y_DeviceProfile.firmware"
>
<button
class="btn btn-default"
title="{{ 'Add firmware' | translate }}"
type="button"
data-cy="device-profile--Add-firmware-button"
(click)="addFirmware()"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.ADD,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE
}"
>
<i c8yIcon="plus-circle"></i>
{{ 'Add firmware' | translate }}
</button>
</div>
<div class="card-header separator-top-bottom sticky-top bg-component">
<div class="card-icon">
<i
class="c8y-icon-duocolor"
[c8yIcon]="'c8y-tools'"
></i>
</div>
<div
class="card-title"
translate
>
Software
</div>
</div>
<div
class="card-block p-t-0"
*ngIf="deviceProfile.c8y_DeviceProfile.software?.length > 0"
>
<c8y-list-group>
<c8y-li *ngFor="let software of deviceProfile.c8y_DeviceProfile.software">
<c8y-li-icon>
<i [c8yIcon]="'c8y-tools'"></i>
</c8y-li-icon>
<c8y-li-body class="content-flex-50 m-l-4">
<div class="col-4">
<span
class="text-truncate-wrap"
title="{{ software.name }}"
>
<span
class="text-label-small m-r-8"
translate
>
Name
</span>
{{ software.name }}
</span>
</div>
<div class="col-4">
<span
class="text-truncate-wrap"
title="{{ software.name }}"
>
<span
class="text-label-small m-r-8"
translate
>
Type
</span>
<span
class="label label-info m-l-4"
*ngIf="!!software.softwareType"
>
{{ software.softwareType }}
</span>
</span>
</div>
<div class="col-3 d-flex a-i-center">
<span
class="text-truncate-wrap"
title="{{ software.version }}"
>
<span
class="text-label-small m-r-8"
translate
>
Version
</span>
{{ software.version }}
</span>
<button
class="btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8"
title="{{ 'Remove`software`' | translate }}"
type="button"
((click)="removeItem(software, 'software')"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE
}"
>
<i c8yIcon="minus-circle"></i>
{{ 'Remove`software`' | translate }}
</button>
</div>
<div class="m-l-auto p-r-8 hidden-xs">
<button
class="btn btn-dot showOnHover text-danger"
[attr.aria-label]="'Remove`software`' | translate"
tooltip="{{ 'Remove`software`' | translate }}"
placement="right"
type="button"
[delay]="500"
(click)="removeItem(software, 'software')"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE
}"
>
<i
c8yIcon="minus-circle"
data-cy="device-profile--Remove-icon"
></i>
</button>
</div>
</c8y-li-body>
</c8y-li>
</c8y-list-group>
</div>
<div
class="card-block p-t-16"
*ngIf="deviceProfile.c8y_DeviceProfile.software?.length === 0"
>
<c8y-ui-empty-state
icon="c8y-tools"
[title]="'No software defined.' | translate"
[horizontal]="true"
></c8y-ui-empty-state>
</div>
<div class="card-footer p-t-0">
<button
class="btn btn-default m-b-0"
title="{{ 'Add software' | translate }}"
type="button"
data-cy="device-profile--Add-software-button"
(click)="addSoftware()"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.ADD,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE
}"
>
<i c8yIcon="plus-circle"></i>
{{ 'Add software' | translate }}
</button>
</div>
<div class="card-header separator-top-bottom bg-component sticky-top">
<div class="card-icon">
<i
class="c8y-icon-duocolor"
[c8yIcon]="'gears'"
></i>
</div>
<div
class="card-title"
translate
>
Configuration
</div>
</div>
<div
class="card-block p-t-0"
*ngIf="deviceProfile.c8y_DeviceProfile.configuration?.length > 0"
>
<c8y-list-group>
<c8y-li *ngFor="let configuration of deviceProfile.c8y_DeviceProfile.configuration">
<c8y-li-icon>
<i [c8yIcon]="'gears'"></i>
</c8y-li-icon>
<c8y-li-body class="content-flex-50">
<div class="col-4">
<span
class="text-truncate"
title="{{ configuration.name }}"
>
<span
class="text-label-small m-r-8"
translate
>
Name
</span>
{{ configuration.name }}
</span>
</div>
<div class="col-4">
<span
class="text-label-small m-r-8"
translate
>
Type
</span>
<span class="label label-info">{{ configuration.type }}</span>
<button
class="btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8"
title="{{ 'Remove`configuration`' | translate }}"
type="button"
(click)="removeItem(configuration, 'configuration')"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION
}"
>
<i c8yIcon="minus-circle"></i>
{{ 'Remove`configuration`' | translate }}
</button>
</div>
<div class="col-3 d-flex a-i-center"></div>
<div class="m-l-auto p-r-8 hidden-xs">
<button
class="btn btn-dot showOnHover text-danger"
[attr.aria-label]="'Remove`configuration`' | translate"
tooltip="{{ 'Remove`configuration`' | translate }}"
placement="top"
type="button"
(click)="removeItem(configuration, 'configuration')"
[delay]="500"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION
}"
>
<i
c8yIcon="minus-circle"
data-cy="device-profile--Remove-icon"
></i>
</button>
</div>
</c8y-li-body>
</c8y-li>
</c8y-list-group>
</div>
<div
class="card-block p-t-16"
*ngIf="deviceProfile.c8y_DeviceProfile.configuration?.length === 0"
>
<c8y-ui-empty-state
icon="gears"
[title]="'No configuration defined.' | translate"
[horizontal]="true"
></c8y-ui-empty-state>
</div>
<div class="card-footer p-t-0">
<div class="p-t-8">
<button
class="btn btn-default m-b-0"
title="{{ 'Add configuration' | translate }}"
type="button"
data-cy="device-profile--Add-configuration-button"
(click)="addConfiguration()"
c8yProductExperience
inherit
[actionData]="{
action: PRODUCT_EXPERIENCE.ACTIONS.ADD,
fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION
}"
>
<i c8yIcon="plus-circle"></i>
{{ 'Add configuration' | translate }}
</button>
</div>
</div>
</div>
</div>
</div>
</div>