import { gettext } from "django"; import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element"; import { ifDefined } from "lit-html/directives/if-defined"; import { until } from "lit-html/directives/until"; import { Application, CoreApi } from "../api"; import { AKResponse } from "../api/Client"; import { DEFAULT_CONFIG } from "../api/Config"; import { me } from "../api/Users"; import { COMMON_STYLES } from "../common/styles"; import { loading, truncate } from "../utils"; @customElement("ak-library-app") export class LibraryApplication extends LitElement { @property({attribute: false}) application?: Application; static get styles(): CSSResult[] { return COMMON_STYLES.concat( css` a { height: 100%; } i.pf-icon { height: 36px; } .pf-c-avatar { --pf-c-avatar--BorderRadius: 0; } .pf-c-card__header { justify-content: space-between; } .pf-c-card__header a { display: flex; flex-direction: column; justify-content: center; margin-right: 0.25em; } ` ); } render(): TemplateResult { if (!this.application) { return html``; } return html` ${this.application.metaIcon ? html`` : html``} ${until(me().then((u) => { if (!u.isSuperuser) return html``; return html` `; }))} ${this.application.name} ${this.application.metaPublisher} ${truncate(this.application.metaDescription, 35)} `; } } @customElement("ak-library") export class LibraryPage extends LitElement { @property({attribute: false}) apps?: AKResponse; static get styles(): CSSResult[] { return COMMON_STYLES.concat(css` :host, main { height: 100%; } `); } firstUpdated(): void { new CoreApi(DEFAULT_CONFIG).coreApplicationsList({}).then((apps) => { this.apps = apps; }); } renderEmptyState(): TemplateResult { return html` ${gettext("No Applications available.")} ${gettext("Either no applications are defined, or you don't have access to any.")} `; } renderApps(): TemplateResult { return html` ${this.apps?.results.map((app) => html``)} `; } render(): TemplateResult { return html` ${gettext("Applications")} ${loading(this.apps, html`${(this.apps?.results.length || 0) > 0 ? this.renderApps() : this.renderEmptyState()}`)} `; } }
${this.application.name}