File
Implements
Index
Properties
|
|
Methods
|
|
Inputs
|
|
Outputs
|
|
Accessors
|
|
canEdit
|
Type : boolean
|
Default value : true
|
Outputs
onAppCloned
|
Type : EventEmitter<void>
|
onAppDeleted
|
Type : EventEmitter<void>
|
Methods
Async
ngOnInit
|
ngOnInit()
|
|
shouldShowVersion
|
shouldShowVersion()
|
|
blueprintApplicationVersion
|
Type : IApplicationVersion[]
|
Readonly
CANNOT_DELETE_HINT
|
Default value : gettext(
`Subscribed or current applications can't be deleted. Delete the application on the parent tenant or unsubscribe it from the current.`
)
|
CURRENT_LOCATION
|
Default value : location.href
|
disableOpenInBrowser
|
Type : boolean
|
isOwnedByManagementTenant
|
Type : boolean
|
latestApplicationVersion
|
Type : IApplicationVersion
|
shouldUpgradePackage
|
Type : boolean
|
Accessors
openButtonTitle
|
getopenButtonTitle()
|
<div class="card pointer card--d-col" *ngIf="!isFeature">
<div (click)="detail()" class="card-block text-center card-column-40">
<div class="card-appicon">
<c8y-app-icon
*ngIf="!isPackage && !isFeature && !isMicroservice && !isExternal"
[app]="app"
[contextPath]="app.contextPath"
[name]="app.name"
></c8y-app-icon>
<i *ngIf="isPackage" c8yIcon="big-parcel"></i>
<i *ngIf="isMicroservice" c8yIcon="microchip"></i>
<i *ngIf="isExternal" c8yIcon="globe1"></i>
</div>
<div>
<p class="e2e-appCardName text-medium" title="{{ app | humanizeAppName | async }}">
{{ app | humanizeAppName | async }}
</p>
<ng-container *ngIf="isShowVersion">
<p class="small text-muted">
<em>{{ app.manifest.version }}</em>
<i
*ngIf="shouldUpgradePackage && isUnpacked"
[tooltip]="'Update available' | translate"
c8yIcon="exclamation-triangle"
class="text-warning m-l-4"
></i>
</p>
</ng-container>
</div>
</div>
<div (click)="detail()" class="card-block p-0 no-min-height card--d-col card-column-80 flex-grow">
<div class="card-block no-min-height p-t-0 p-b-0 card-column-80">
<div *ngIf="app.description || app.manifest?.description" class="text-center-grid">
<div class="p-b-8 card-hidden-grid"></div>
<p class="small l-h-tight p-b-8 p-l-0 p-r-0">
{{ app.description || app.manifest?.description | translate }}
</p>
</div>
</div>
<div
*ngIf="!app.label"
class="card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid"
>
<span [ngClass]="appState.class" class="label">
{{ isUnpacked ? ('Unpacked' | translate) : (appState.label | translate) }}
</span>
</div>
<div
*ngIf="app.label"
class="card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid"
>
<span [ngClass]="appState.class" class="label text-warning">
{{ isOwnedByManagementTenant ? app.label : ('COMMUNITY' | translate) }}
</span>
</div>
<div class="card-footer no-min-height p-t-0 p-b-0 card-column-20 text-center-grid">
<div class="p-b-16 card-hidden-list"></div>
<button
(click)="openApp(); $event.stopPropagation()"
*ngIf="canOpenInBrowser"
[disabled]="disableOpenInBrowser"
class="btn btn-sm btn-default"
[title]="openButtonTitle | translate"
>
<i c8yIcon="external-link" class="m-r-4"></i>
{{ 'Open' | translate }}
</button>
<div class="p-b-32 card-hidden-list"></div>
</div>
</div>
<div class="p-r-40 card-hidden-grid"></div>
<div *ngIf="canEdit || canOpenInBrowser || canDelete" class="card-actions m-t-0">
<div class="dropdown" dropdown>
<button
class="dropdown-toggle c8y-dropdown"
dropdownToggle
title="{{ 'Settings' | translate }}"
>
<i c8yIcon="ellipsis-v"></i>
</button>
<ul *dropdownMenu class="dropdown-menu dropdown-menu-right">
<li *ngIf="canEdit">
<button (click)="detail()" title="{{ 'Edit' | translate }}">
<i c8yIcon="pencil" class="m-r-4"></i>
{{ 'Edit' | translate }}
</button>
</li>
<ng-container *c8yIfAllowed="['ROLE_APPLICATION_MANAGEMENT_ADMIN']">
<li>
<button
(click)="delete()"
type="button"
[title]="canDelete ? ('Delete' | translate) : (CANNOT_DELETE_HINT | translate)"
[disabled]="!canDelete"
>
<i c8yIcon="delete" class="m-r-4"></i>
{{ 'Delete' | translate }}
</button>
</li>
<li *ngIf="canClone">
<button
*ngIf="isPackage"
(click)="clone()"
type="button"
[title]="'Clone`package`' | translate"
>
<i c8yIcon="copy" class="m-r-4"></i>
{{ 'Clone`package`' | translate }}
</button>
<button
*ngIf="!isPackage"
(click)="clone()"
type="button"
[title]="'Clone`application`' | translate"
>
<i c8yIcon="copy" class="m-r-4"></i>
{{ 'Clone`application`' | translate }}
</button>
</li>
</ng-container>
</ul>
</div>
</div>
</div>
<button (click)="detail()" class="card pointer card--d-col" *ngIf="isFeature">
<div class="card-block text-center card-column-40">
<div class="card-appicon">
<c8y-app-icon
*ngIf="!isPackage && !isFeature && !isMicroservice && !isExternal"
[app]="app"
[contextPath]="app.contextPath"
[name]="app.name"
></c8y-app-icon>
<i c8yIcon="tab"></i>
</div>
<div>
<p class="e2e-appCardName text-medium" title="{{ app | humanizeAppName | async }}">
{{ app | humanizeAppName | async }}
</p>
<ng-container *ngIf="isShowVersion">
<p class="small text-muted">
<em>{{ app.manifest.version }}</em>
<i
*ngIf="shouldUpgradePackage && isUnpacked"
[tooltip]="'Update available' | translate"
c8yIcon="exclamation-triangle"
class="text-warning m-l-4"
></i>
</p>
</ng-container>
</div>
</div>
<div class="card-block p-0 no-min-height card--d-col card-column-80 flex-grow">
<div class="card-block no-min-height p-t-0 p-b-0 card-column-80">
<div *ngIf="app.description || app.manifest?.description" class="text-center-grid">
<div class="p-b-8 card-hidden-grid"></div>
<p class="small l-h-tight p-b-8 p-l-0 p-r-0">
{{ app.description || app.manifest?.description | translate }}
</p>
</div>
</div>
<div class="card-block no-min-height p-t-0 p-b-0 card-column-20 text-center-grid">
<span [ngClass]="appState.class" class="label">
{{ isUnpacked ? ('Unpacked' | translate) : (appState.label | translate) }}
</span>
</div>
<div class="p-b-32 card-hidden-list"></div>
</div>
</button>