Skip to content

Commit 95fd4a4

Browse files
authored
Merge pull request #2311 from Particular/john/common_message_view
Adding ability to load successfully processed messages using the common MessageView component
2 parents 1440e61 + 4f6a6a7 commit 95fd4a4

26 files changed

+1687
-27
lines changed

src/Frontend/src/components/EventLogItem.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { useRoute, useRouter } from "vue-router";
2+
import { useRouter } from "vue-router";
33
import TimeSince from "../components/TimeSince.vue";
44
import type EventLogItem from "@/resources/EventLogItem";
55
// eslint-disable-next-line no-duplicate-imports
@@ -8,7 +8,6 @@ import routeLinks from "@/router/routeLinks";
88
99
defineProps<{ eventLogItem: EventLogItem }>();
1010
const router = useRouter();
11-
const route = useRoute();
1211
1312
function navigateToEvent(eventLogItem: EventLogItem) {
1413
switch (eventLogItem.category) {
@@ -27,7 +26,7 @@ function navigateToEvent(eventLogItem: EventLogItem) {
2726
case "MessageFailures":
2827
if (eventLogItem.related_to?.length && eventLogItem.related_to[0].search("message") > 0) {
2928
const messageId = eventLogItem.related_to[0].substring(9);
30-
router.push({ path: routeLinks.messages.message.link(messageId), query: { back: route.path } });
29+
router.push({ path: routeLinks.messages.failedMessage.link(messageId) });
3130
} else {
3231
router.push(routeLinks.failedMessage.root);
3332
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts"></script>
2+
3+
<template>
4+
<div class="text-center">
5+
<div class="spinner-border" role="status">
6+
<span class="visually-hidden">Loading...</span>
7+
</div>
8+
</div>
9+
</template>
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<script setup lang="ts">
2+
import { ref, type Component, type DefineComponent, shallowRef } from "vue";
3+
4+
interface Tab {
5+
text: string;
6+
component: Component | DefineComponent;
7+
}
8+
9+
const props = defineProps<{ tabs: Tab[] }>();
10+
const activePanel = ref(0);
11+
const activeComponent = shallowRef(props.tabs[0].component);
12+
13+
function togglePanel(panelIndex: number) {
14+
activePanel.value = panelIndex;
15+
activeComponent.value = props.tabs[panelIndex].component;
16+
}
17+
</script>
18+
19+
<template>
20+
<div class="nav tabs msg-tabs">
21+
<h5 :class="{ active: activePanel === index }" class="nav-item" @click.prevent="togglePanel(index)" v-for="(tab, index) in props.tabs" :key="tab.text">
22+
<a href="#">{{ tab.text }}</a>
23+
</h5>
24+
</div>
25+
<keep-alive>
26+
<component v-bind:is="activeComponent"></component>
27+
</keep-alive>
28+
</template>
29+
30+
<style scoped></style>

src/Frontend/src/components/audit/AuditList.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import routeLinks from "@/router/routeLinks";
33
import { ColumnNames, useAuditStore } from "@/stores/AuditStore";
44
import { storeToRefs } from "pinia";
5-
import { useRoute } from "vue-router";
65
import SortableColumn from "../SortableColumn.vue";
76
import { MessageStatus } from "@/resources/Message";
87
import moment from "moment";
@@ -11,7 +10,6 @@ import RefreshConfig from "../RefreshConfig.vue";
1110
import ItemsPerPage from "../ItemsPerPage.vue";
1211
import PaginationStrip from "../PaginationStrip.vue";
1312
14-
const route = useRoute();
1513
const store = useAuditStore();
1614
const { messages, sortByInstances, itemsPerPage, selectedPage, totalCount } = storeToRefs(store);
1715
@@ -101,7 +99,10 @@ function formatDotNetTimespan(timespan: string) {
10199
<template #content>
102100
<p :style="{ overflowWrap: 'break-word' }">{{ message.message_id }}</p>
103101
</template>
104-
<RouterLink class="hackToPreventSafariFromShowingTooltip" aria-label="details-link" :to="{ path: routeLinks.messages.message.link(message.id), query: { back: route.path } }">
102+
<RouterLink v-if="message.status === MessageStatus.Successful" class="hackToPreventSafariFromShowingTooltip" aria-label="details-link" :to="{ path: routeLinks.messages.successMessage.link(message.message_id, message.id) }">
103+
{{ message.message_id }}
104+
</RouterLink>
105+
<RouterLink v-else class="hackToPreventSafariFromShowingTooltip" aria-label="details-link" :to="{ path: routeLinks.messages.failedMessage.link(message.id) }">
105106
{{ message.message_id }}
106107
</RouterLink>
107108
</tippy>

src/Frontend/src/components/failedmessages/EditRetryDialog.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<script setup lang="ts">
22
import { computed, onMounted, ref, watch } from "vue";
3-
import { useRetryEditedMessage } from "../../composables/serviceFailedMessage";
3+
import { useRetryEditedMessage } from "@/composables/serviceFailedMessage";
44
import MessageHeader from "./EditMessageHeader.vue";
55
import { EditAndRetryConfig } from "@/resources/Configuration";
66
import type Header from "@/resources/Header";
@@ -65,11 +65,7 @@ watch(messageBody, (newValue) => {
6565
if (newValue !== origMessageBody) {
6666
localMessage.value.isBodyChanged = true;
6767
}
68-
if (newValue === "") {
69-
localMessage.value.isBodyEmpty = true;
70-
} else {
71-
localMessage.value.isBodyEmpty = false;
72-
}
68+
localMessage.value.isBodyEmpty = newValue === "";
7369
});
7470
7571
function close() {

0 commit comments

Comments
 (0)