Skip to content

Commit 07458cd

Browse files
Expose message Ids to the user
1 parent 6fc0d3f commit 07458cd

25 files changed

+145
-106
lines changed

app/index.html

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@
160160
</style>
161161
</head>
162162
<body>
163-
<div id="app" style="font:-webkit-control"></div>
163+
<div id="app" style="font: -webkit-control;"></div>
164164
<script>
165165
function loadScript(path) {
166166
var script = document.createElement('script')
@@ -174,7 +174,8 @@
174174
// loadScript("<%= JSON.stringify(htmlWebpackPlugin) %>")
175175
}
176176
</script>
177-
<% _.forEach(htmlWebpackPlugin.files.js, function(file) { %><script src="<%- file %>"></script
178-
><% }); %>
177+
<% _.forEach(htmlWebpackPlugin.files.js, function(file) { %>
178+
<script src="<%- file %>"></script>
179+
<% }); %>
179180
</body>
180181
</html>

app/src/actions/Settings.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ export const filterTopics = (filterStr: string) => (dispatch: Dispatch<any>, get
112112

113113
const messageMatches =
114114
node.message &&
115-
node.message.value &&
116-
Base64Message.toUnicodeString(node.message.value).toLowerCase().indexOf(filterStr) !== -1
115+
node.message.payload &&
116+
Base64Message.toUnicodeString(node.message.payload).toLowerCase().indexOf(filterStr) !== -1
117117

118118
return Boolean(messageMatches)
119119
}

app/src/actions/clearTopic.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ export const clearTopic = (topic: q.TreeNode<any>, recursive: boolean) => async
4848
payload: null,
4949
retain: true,
5050
qos: 0 as 0,
51+
messageId: undefined,
5152
}
5253
// Rate limit deletion
5354
setTimeout(() => rendererEvents.emit(publishEvent, mqttMessage), 20 * idx)

app/src/components/SettingsDrawer/BrokerStatistics.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,8 @@ function renderStat(tree: q.Tree<TopicViewModel>, stat: Stats) {
123123
return null
124124
}
125125

126-
const str = node.message.value ? Base64Message.toUnicodeString(node.message.value) : ''
127-
let value = node.message && node.message.value ? parseFloat(str) : NaN
126+
const str = node.message.payload ? Base64Message.toUnicodeString(node.message.payload) : ''
127+
let value = node.message && node.message.payload ? parseFloat(str) : NaN
128128
value = !isNaN(value) ? abbreviate(value) : str
129129

130130
return (
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import React, { memo } from 'react'
2+
import { Message } from '../../../../backend/src/Model'
3+
import { Tooltip } from '@material-ui/core'
4+
5+
export const MessageId = memo(function MessageId(props: { message: Message; addComma?: boolean }) {
6+
const { message, addComma } = props
7+
8+
if (!message.messageId) {
9+
return null
10+
}
11+
12+
return (
13+
<Tooltip title="MessageIds are used to signal a successful transmission of a message.">
14+
<span>
15+
#msg: {message.messageId}
16+
{addComma ? ', ' : ''}
17+
</span>
18+
</Tooltip>
19+
)
20+
})

app/src/components/Sidebar/TopicPanel/TopicDeleteButton.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export const TopicDeleteButton = (props: {
88
deleteTopicAction: (node: q.TreeNode<any>) => void
99
}) => {
1010
const { node } = props
11-
if (!node || !node.message || !node.message.value) {
11+
if (!node || !node.message || !node.message.payload) {
1212
return null
1313
}
1414
return (

app/src/components/Sidebar/ValueRenderer/MessageHistory.tsx

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { bindActionCreators } from 'redux'
1212
import { chartActions } from '../../../actions'
1313
import { connect } from 'react-redux'
1414
import CustomIconButton from '../../helper/CustomIconButton'
15+
import { MessageId } from '../MessageId'
1516

1617
const throttle = require('lodash.throttle')
1718

@@ -81,19 +82,25 @@ class MessageHistory extends React.PureComponent<Props, State> {
8182
const history = node.messageHistory.toArray()
8283
let previousMessage: q.Message | undefined = node.message
8384
const historyElements = [...history].reverse().map((message, idx) => {
84-
const value = message.value ? Base64Message.toUnicodeString(message.value) : ''
85+
const value = message.payload ? Base64Message.toUnicodeString(message.payload) : ''
8586
const element = {
8687
value,
8788
key: `${message.messageNumber}-${message.received}`,
8889
title: (
8990
<span>
90-
<DateFormatter date={message.received} />
91-
{previousMessage && previousMessage !== message ? (
92-
<i>
93-
(-
94-
<DateFormatter date={message.received} intervalSince={previousMessage.received} />)
95-
</i>
96-
) : null}
91+
<div style={{ float: 'left' }}>
92+
<DateFormatter date={message.received} />
93+
{previousMessage && previousMessage !== message ? (
94+
<i>
95+
(-
96+
<DateFormatter date={message.received} intervalSince={previousMessage.received} />)
97+
</i>
98+
) : null}
99+
</div>
100+
<span>
101+
&nbsp;
102+
<MessageId message={message} />
103+
</span>
97104
<div style={{ float: 'right' }}>
98105
<Copy value={value} />
99106
</div>
@@ -106,7 +113,7 @@ class MessageHistory extends React.PureComponent<Props, State> {
106113
})
107114

108115
const isMessagePlottable =
109-
node.message && node.message.value && isPlottable(Base64Message.toUnicodeString(node.message.value))
116+
node.message && node.message.payload && isPlottable(Base64Message.toUnicodeString(node.message.payload))
110117
return (
111118
<div>
112119
<History

app/src/components/Sidebar/ValueRenderer/ValuePanel.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { Theme, Typography, withStyles } from '@material-ui/core'
1313
import { connect } from 'react-redux'
1414
import { sidebarActions } from '../../../actions'
1515
import DeleteSelectedTopicButton from './DeleteSelectedTopicButton'
16+
import { MessageId } from '../MessageId'
1617

1718
interface Props {
1819
node?: q.TreeNode<any>
@@ -36,7 +37,7 @@ function ValuePanel(props: Props) {
3637
const { node, compareMessage } = props
3738

3839
function renderViewOptions() {
39-
if (!props.node || !props.node.message || !props.node.mqttMessage) {
40+
if (!props.node || !props.node.message) {
4041
return null
4142
}
4243

@@ -46,21 +47,24 @@ function ValuePanel(props: Props) {
4647
<ActionButtons />
4748
</span>
4849
<span style={{ flex: 6, textAlign: 'right' }}>
49-
{props.node.mqttMessage.retain ? <DeleteSelectedTopicButton /> : null}
50+
{props.node.message.retain ? <DeleteSelectedTopicButton /> : null}
5051
</span>
5152
{messageMetaInfo()}
5253
</div>
5354
)
5455
}
5556

5657
function messageMetaInfo() {
57-
if (!props.node || !props.node.message || !props.node.mqttMessage) {
58+
if (!props.node || !props.node.message) {
5859
return null
5960
}
6061

6162
return (
6263
<span style={{ width: '100%', paddingLeft: '8px', flex: 6 }}>
63-
<Typography style={{ textAlign: 'right' }}>QoS: {props.node.mqttMessage.qos}</Typography>
64+
<Typography style={{ textAlign: 'right' }}>
65+
<MessageId message={props.node.message} addComma={true} />
66+
{`QoS: ${props.node.message.qos}`}
67+
</Typography>
6468
<Typography style={{ textAlign: 'right' }}>
6569
<i>
6670
<DateFormatter date={props.node.message.received} />
@@ -82,8 +86,8 @@ function ValuePanel(props: Props) {
8286
)
8387

8488
const copyValue =
85-
node && node.message && node.message.value ? (
86-
<Copy value={Base64Message.toUnicodeString(node.message.value)} />
89+
node && node.message && node.message.payload ? (
90+
<Copy value={Base64Message.toUnicodeString(node.message.payload)} />
8791
) : null
8892

8993
return (

app/src/components/Sidebar/ValueRenderer/ValueRenderer.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,12 @@ class ValueRenderer extends React.Component<Props, State> {
6363
}
6464

6565
private renderRawMode(message: q.Message, compare?: q.Message) {
66-
if (!message.value) {
66+
if (!message.payload) {
6767
return
6868
}
69-
const [value, valueLanguage] = this.convertMessage(message.value)
69+
const [value, valueLanguage] = this.convertMessage(message.payload)
7070
const [compareStr, compareStrLanguage] =
71-
compare && compare.value ? this.convertMessage(compare.value) : [undefined, undefined]
71+
compare && compare.payload ? this.convertMessage(compare.payload) : [undefined, undefined]
7272

7373
return (
7474
<div>
@@ -95,12 +95,12 @@ class ValueRenderer extends React.Component<Props, State> {
9595
if (renderMode === 'raw') {
9696
return this.renderRawMode(message, compareWith)
9797
}
98-
if (!message.value) {
98+
if (!message.payload) {
9999
return null
100100
}
101101

102-
const compareValue = compareMessage.value || message.value
103-
const [current, currentLanguage] = this.convertMessage(message.value)
102+
const compareValue = compareMessage.payload || message.payload
103+
const [current, currentLanguage] = this.convertMessage(message.payload)
104104
const [compare, compareLanguage] = this.convertMessage(compareValue)
105105

106106
const language = currentLanguage === compareLanguage && compareLanguage === 'json' ? 'json' : undefined

app/src/components/TopicPlot.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ function filterUsingTimeRange(startTime: number | undefined, data: Array<q.Messa
2828
function nodeToHistory(startTime: number | undefined, history: q.MessageHistory) {
2929
return filterUsingTimeRange(startTime, history.toArray())
3030
.map((message: q.Message) => {
31-
const value = message.value ? toPlottableValue(Base64Message.toUnicodeString(message.value)) : NaN
31+
const value = message.payload ? toPlottableValue(Base64Message.toUnicodeString(message.payload)) : NaN
3232
return { x: message.received.getTime(), y: toPlottableValue(value) }
3333
})
3434
.filter(data => !isNaN(data.y as any)) as any
@@ -39,7 +39,7 @@ function nodeDotPathToHistory(startTime: number | undefined, history: q.MessageH
3939
.map((message: q.Message) => {
4040
let json = {}
4141
try {
42-
json = message.value ? JSON.parse(Base64Message.toUnicodeString(message.value)) : {}
42+
json = message.payload ? JSON.parse(Base64Message.toUnicodeString(message.payload)) : {}
4343
} catch (ignore) {}
4444

4545
const value = dotProp.get(json, dotPath)

0 commit comments

Comments
 (0)