Skip to content

Commit fc0a7cc

Browse files
committed
Fix #627: Dev UI Card
1 parent a5fbc8d commit fc0a7cc

File tree

4 files changed

+136
-0
lines changed

4 files changed

+136
-0
lines changed

deployment/pom.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,15 @@
4848
<groupId>io.quarkus</groupId>
4949
<artifactId>quarkus-smallrye-jwt-build-deployment</artifactId>
5050
</dependency>
51+
<dependency>
52+
<groupId>io.quarkus</groupId>
53+
<artifactId>quarkus-vertx-http-deployment</artifactId>
54+
</dependency>
55+
<dependency>
56+
<groupId>io.quarkus</groupId>
57+
<artifactId>quarkus-vertx-http-dev-ui-spi</artifactId>
58+
<optional>true</optional>
59+
</dependency>
5160
<dependency>
5261
<groupId>io.quarkiverse.githubapp</groupId>
5362
<artifactId>quarkus-github-app</artifactId>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.quarkiverse.githubapp.deployment.devui;
2+
3+
import io.quarkus.deployment.IsDevelopment;
4+
import io.quarkus.deployment.annotations.BuildProducer;
5+
import io.quarkus.deployment.annotations.BuildStep;
6+
import io.quarkus.devui.spi.page.CardPageBuildItem;
7+
import io.quarkus.devui.spi.page.ExternalPageBuilder;
8+
import io.quarkus.devui.spi.page.Page;
9+
import io.quarkus.vertx.http.deployment.NonApplicationRootPathBuildItem;
10+
11+
/**
12+
* Dev UI card for displaying important details such as the GitHub App Replay UI.
13+
*/
14+
public class GitHubAppDevUIProcessor {
15+
16+
@BuildStep(onlyIf = IsDevelopment.class)
17+
void createDevCard(BuildProducer<CardPageBuildItem> cardPageBuildItemBuildProducer,
18+
NonApplicationRootPathBuildItem nonApplicationRootPathBuildItem) {
19+
final CardPageBuildItem card = new CardPageBuildItem();
20+
21+
final String uiPath = nonApplicationRootPathBuildItem.resolvePath("/replay/");
22+
23+
final ExternalPageBuilder versionPage = Page.externalPageBuilder("Replay UI")
24+
.icon("font-awesome-solid:play")
25+
.url(uiPath, uiPath)
26+
.doNotEmbed();
27+
card.addPage(versionPage);
28+
29+
card.setCustomCard("qwc-github-app-card.js");
30+
31+
cardPageBuildItemBuildProducer.produce(card);
32+
}
33+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import { LitElement, html, css} from 'lit';
2+
import { pages } from 'build-time-data';
3+
import 'qwc/qwc-extension-link.js';
4+
5+
export class QwcGitHubAppCard extends LitElement {
6+
7+
static styles = css`
8+
.identity {
9+
display: flex;
10+
justify-content: flex-start;
11+
}
12+
13+
.description {
14+
padding-bottom: 10px;
15+
}
16+
17+
.logo {
18+
padding-bottom: 10px;
19+
margin-right: 5px;
20+
}
21+
22+
.card-content {
23+
color: var(--lumo-contrast-90pct);
24+
display: flex;
25+
flex-direction: column;
26+
justify-content: flex-start;
27+
padding: 2px 2px;
28+
height: 100%;
29+
}
30+
31+
.card-content slot {
32+
display: flex;
33+
flex-flow: column wrap;
34+
padding-top: 5px;
35+
}
36+
`;
37+
38+
static properties = {
39+
extensionName: {attribute: true},
40+
description: {attribute: true},
41+
guide: {attribute: true},
42+
namespace: {attribute: true},
43+
};
44+
45+
46+
constructor() {
47+
super();
48+
}
49+
50+
connectedCallback() {
51+
super.connectedCallback();
52+
}
53+
54+
render() {
55+
return html`<div class="card-content" slot="content">
56+
<div class="identity">
57+
<div class="logo">
58+
<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iOTgiIGhlaWdodD0iOTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00OC44NTQgMEMyMS44MzkgMCAwIDIyIDAgNDkuMjE3YzAgMjEuNzU2IDEzLjk5MyA0MC4xNzIgMzMuNDA1IDQ2LjY5IDIuNDI3LjQ5IDMuMzE2LTEuMDU5IDMuMzE2LTIuMzYyIDAtMS4xNDEtLjA4LTUuMDUyLS4wOC05LjEyNy0xMy41OSAyLjkzNC0xNi40Mi01Ljg2Ny0xNi40Mi01Ljg2Ny0yLjE4NC01LjcwNC01LjQyLTcuMTctNS40Mi03LjE3LTQuNDQ4LTMuMDE1LjMyNC0zLjAxNS4zMjQtMy4wMTUgNC45MzQuMzI2IDcuNTIzIDUuMDUyIDcuNTIzIDUuMDUyIDQuMzY3IDcuNDk2IDExLjQwNCA1LjM3OCAxNC4yMzUgNC4wNzQuNDA0LTMuMTc4IDEuNjk5LTUuMzc4IDMuMDc0LTYuNi0xMC44MzktMS4xNDEtMjIuMjQzLTUuMzc4LTIyLjI0My0yNC4yODMgMC01LjM3OCAxLjk0LTkuNzc4IDUuMDE0LTEzLjItLjQ4NS0xLjIyMi0yLjE4NC02LjI3NS40ODYtMTMuMDM4IDAgMCA0LjEyNS0xLjMwNCAxMy40MjYgNS4wNTJhNDYuOTcgNDYuOTcgMCAwIDEgMTIuMjE0LTEuNjNjNC4xMjUgMCA4LjMzLjU3MSAxMi4yMTMgMS42MyA5LjMwMi02LjM1NiAxMy40MjctNS4wNTIgMTMuNDI3LTUuMDUyIDIuNjcgNi43NjMuOTcgMTEuODE2LjQ4NSAxMy4wMzggMy4xNTUgMy40MjIgNS4wMTUgNy44MjIgNS4wMTUgMTMuMiAwIDE4LjkwNS0xMS40MDQgMjMuMDYtMjIuMzI0IDI0LjI4MyAxLjc4IDEuNTQ4IDMuMzE2IDQuNDgxIDMuMzE2IDkuMTI2IDAgNi42LS4wOCAxMS44OTctLjA4IDEzLjUyNiAwIDEuMzA0Ljg5IDIuODUzIDMuMzE2IDIuMzY0IDE5LjQxMi02LjUyIDMzLjQwNS0yNC45MzUgMzMuNDA1LTQ2LjY5MUM5Ny43MDcgMjIgNzUuNzg4IDAgNDguODU0IDB6IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
59+
alt="${this.extensionName}"
60+
title="${this.extensionName}"
61+
width="32"
62+
height="32">
63+
</div>
64+
<div class="description">${this.description}</div>
65+
</div>
66+
${this._renderCardLinks()}
67+
</div>
68+
`;
69+
}
70+
71+
_renderCardLinks(){
72+
return html`${pages.map(page => html`
73+
<qwc-extension-link slot="link"
74+
namespace="${this.namespace}"
75+
extensionName="${this.extensionName}"
76+
iconName="${page.icon}"
77+
displayName="${page.title}"
78+
staticLabel="${page.staticLabel}"
79+
dynamicLabel="${page.dynamicLabel}"
80+
streamingLabel="${page.streamingLabel}"
81+
path="${page.id}"
82+
?embed=${page.embed}
83+
externalUrl="${page.metadata.externalUrl}"
84+
webcomponent="${page.componentLink}" >
85+
</qwc-extension-link>
86+
`)}`;
87+
}
88+
89+
}
90+
customElements.define('qwc-github-app-card', QwcGitHubAppCard);

runtime/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@
5454
<groupId>io.quarkus</groupId>
5555
<artifactId>quarkus-smallrye-jwt-build</artifactId>
5656
</dependency>
57+
<dependency>
58+
<groupId>io.quarkus</groupId>
59+
<artifactId>quarkus-vertx-http</artifactId>
60+
</dependency>
5761
<dependency>
5862
<groupId>com.fasterxml.jackson.dataformat</groupId>
5963
<artifactId>jackson-dataformat-yaml</artifactId>

0 commit comments

Comments
 (0)