2020-12-01 21:17:07 +00:00
import { gettext } from "django" ;
import { CSSResult , customElement , html , LitElement , property , TemplateResult } from "lit-element" ;
import { AdminOverview } from "../../api/admin_overview" ;
import { DefaultClient } from "../../api/client" ;
import { User } from "../../api/user" ;
import { COMMON_STYLES } from "../../common/styles" ;
2020-12-02 14:44:40 +00:00
import { SpinnerSize } from "../../elements/Spinner" ;
import "../../elements/AdminLoginsChart" ;
import "./TopApplicationsTable" ;
2020-12-16 21:00:40 +00:00
import "./OverviewCards" ;
2020-12-01 21:17:07 +00:00
2020-12-05 21:08:42 +00:00
@customElement ( "ak-admin-overview" )
2020-12-01 21:17:07 +00:00
export class AdminOverviewPage extends LitElement {
2020-12-02 14:44:40 +00:00
@property ( { attribute : false } )
2020-12-01 21:17:07 +00:00
data? : AdminOverview ;
2020-12-02 14:44:40 +00:00
@property ( { attribute : false } )
2020-12-01 21:17:07 +00:00
users? : Promise < number > ;
static get styles ( ) : CSSResult [ ] {
return COMMON_STYLES ;
}
firstUpdated ( ) : void {
AdminOverview . get ( ) . then ( value = > this . data = value ) ;
this . users = User . count ( ) ;
}
render ( ) : TemplateResult {
return html ` <section class="pf-c-page__main-section pf-m-light">
< div class = "pf-c-content" >
< h1 > $ { gettext ( "System Overview" ) } < / h1 >
< / div >
< / section >
< section class = "pf-c-page__main-section" >
< div class = "pf-l-gallery pf-m-gutter" >
2020-12-05 21:08:42 +00:00
< ak - aggregate - card class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-server" header = "Logins over the last 24 hours" style = "grid-column-end: span 3;grid-row-end: span 2;" >
< ak - admin - logins - chart url = "${DefaultClient.makeUrl([" admin " , " metrics " ] ) } " > < / a k - a d m i n - l o g i n s - c h a r t >
< / a k - a g g r e g a t e - c a r d >
< ak - aggregate - card class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-server" header = "Apps with most usage" style = "grid-column-end: span 2;grid-row-end: span 3;" >
< ak - top - applications - table > < / a k - t o p - a p p l i c a t i o n s - t a b l e >
< / a k - a g g r e g a t e - c a r d >
2020-12-16 21:25:44 +00:00
< ak - admin - status - card - provider class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-plugged" header = "Providers" headerLink = "#/administration/providers/" >
< / a k - a d m i n - s t a t u s - c a r d - p r o v i d e r >
< ak - admin - status - card - policy - unbound class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-infrastructure" header = "Policies" headerLink = "#/administration/policies/" >
< / a k - a d m i n - s t a t u s - c a r d - p o l i c y - u n b o u n d >
< ak - aggregate - card - promise
icon = "pf-icon pf-icon-user"
header = "Users"
headerLink = "#/administration/users/"
. promise = $ { this . users } >
< / a k - a g g r e g a t e - c a r d - p r o m i s e >
<!-- Version card -- >
2020-12-05 21:08:42 +00:00
< ak - aggregate - card class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-server" header = "Workers" >
$ { this . data ?
this . data ? . worker_count < 1 ?
html ` <p class="ak-aggregate-card">
< i class = "fa fa-exclamation-triangle" > < / i > $ { this . data ? . worker_count }
< / p >
< p class = "subtext" > $ { gettext ( "No workers connected." ) } < / p > ` :
html ` <p class="ak-aggregate-card">
< i class = "fa fa-check-circle" > < / i > $ { this . data ? . worker_count }
< / p > `
: html ` <ak-spinner size= ${ SpinnerSize . Large } ></ak-spinner> ` }
< / a k - a g g r e g a t e - c a r d >
2020-12-16 21:25:44 +00:00
< ak - admin - status - card - policy - cache class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-server" header = "Cached Policies" >
< / a k - a d m i n - s t a t u s - c a r d - p o l i c y - c a c h e >
< ak - admin - status - card - flow - cache class = "pf-l-gallery__item pf-m-4-col" icon = "pf-icon pf-icon-server" header = "Cached Flows" >
< / a k - a d m i n - s t a t u s - c a r d - f l o w - c a c h e >
2020-12-01 21:17:07 +00:00
< / div >
< / section > ` ;
}
}