Skip to content

Commit d704609

Browse files
committed
add kafka messages to clusters view in dashboard
1 parent f7e79a8 commit d704609

4 files changed

Lines changed: 36 additions & 12 deletions

File tree

webui/src/components/dashboard/kafka/KafkaMessages.vue

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@ import router from '@/router'
88
import { getRouteName, useDashboard } from '@/composables/dashboard'
99
1010
const props = defineProps<{
11-
service: KafkaService,
11+
service?: KafkaService,
1212
topicName?: string
1313
}>()
1414
15-
const labels = [{name: 'name', value: props.service!.name}]
15+
const labels = []
16+
if (props.service) {
17+
labels.push({name: 'name', value: props.service.name})
18+
}
1619
if (props.topicName){
1720
labels.push({name: 'topic', value: props.topicName})
1821
}
@@ -156,18 +159,36 @@ function showMessage(event: ServiceEvent){
156159
}
157160
}
158161
159-
function getTopic(name: string): KafkaTopic {
160-
for (const topic of props.service!.topics) {
161-
if (topic.name === name) {
162-
return topic
162+
function getTopic(event: ServiceEvent): KafkaTopic | undefined {
163+
const topicName = event.traits["topic"]!
164+
165+
let service = props.service
166+
if (!service) {
167+
const { services } = dashboard.value.getServices('kafka', false);
168+
for (const s of services.value) {
169+
console.log(s)
170+
if (s.name === event.traits['name']) {
171+
service = s as KafkaService
172+
}
163173
}
164174
}
165-
throw new Error(`topic ${name} not found`)
175+
176+
if (props.service) {
177+
for (const topic of props.service.topics) {
178+
if (topic.name === topicName) {
179+
return topic
180+
}
181+
}
182+
}
183+
184+
return undefined
166185
}
167186
function getMessageConfig(event: ServiceEvent): KafkaMessage | undefined {
168-
const topicName = event.traits["topic"]!
169187
const data = eventData(event)
170-
const topic = getTopic(topicName)
188+
const topic = getTopic(event)
189+
if (!topic) {
190+
return undefined
191+
}
171192
172193
const keys = Object.keys(topic.messages)
173194
if (keys.length === 1) {

webui/src/components/dashboard/kafka/KafkaMessagesCard.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import KafkaMessages from './KafkaMessages.vue'
33
44
defineProps<{
5-
service: KafkaService,
5+
service?: KafkaService,
66
topicName?: string
77
}>()
88
</script>

webui/src/components/dashboard/kafka/KafkaServicesCard.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ import { getRouteName, useDashboard } from '@/composables/dashboard';
88
99
const { sum, max } = useMetrics()
1010
const { format } = usePrettyDates()
11-
const route = useRoute()
1211
const router = useRouter()
1312
const { dashboard } = useDashboard();
14-
const { services, close } = dashboard.value.getServices('kafka')
13+
const { services, close } = dashboard.value.getServices('kafka');
1514
1615
function lastMessage(service: Service){
1716
const n = max(service.metrics, 'kafka_message_timestamp')

webui/src/views/DashboardView.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import HttpRequests from '../components/dashboard/http/Requests.vue'
1212
import KafkaMessageMetricCard from '../components/dashboard/kafka/KafkaMessageMetricCard.vue'
1313
import KafkaClustersCard from '../components/dashboard/kafka/KafkaServicesCard.vue'
1414
import KafkaService from '../components/dashboard/kafka/KafkaService.vue'
15+
import KafkaMessagesCard from '@/components/dashboard/kafka/KafkaMessagesCard.vue'
1516
1617
import LdapServicesCard from '@/components/dashboard/ldap/LdapServicesCard.vue'
1718
import LdapService from '../components/dashboard/ldap/Service.vue'
@@ -188,6 +189,9 @@ useMeta('Dashboard | mokapi.io', description, '')
188189
<div class="card-group" v-if="isServiceAvailable('kafka')">
189190
<kafka-clusters-card />
190191
</div>
192+
<div class="card-group" v-if="isServiceAvailable('kafka')">
193+
<kafka-messages-card />
194+
</div>
191195
</div>
192196

193197
<div v-if="$route.name === getRouteName('mail').value">

0 commit comments

Comments
 (0)