Skip to content

Commit 4b870ef

Browse files
Plotly: Improve message handling in order to support string instances
1 parent e3e3f5d commit 4b870ef

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

src/components/Plotly.vue

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ export default {
289289
return new Promise((resolve, reject) => {
290290
interval = setInterval(function () {
291291
for (const message of messages) {
292-
if (!_this.state.messages[message]) {
292+
if (!_this.loadedMessages.includes(message.split('[')[0])) {
293293
counter += 1
294294
if (counter > 30) { // 30 * 300ms = 9 s timeout
295295
console.log('not resolving')
@@ -536,7 +536,7 @@ export default {
536536
return names.join(', ')
537537
},
538538
findMessagesInExpression (expression) {
539-
const RE = /(?<message>[A-Z][A-Z0-9_]+(\[[0-9]\])?)(\.(?<field>[A-Za-z0-9_]+))?/g
539+
const RE = /(?<message>[A-Z][A-Z0-9_]+(\[[A-Za-z0-9_.]+\])?)(\.(?<field>[A-Za-z0-9_]+))?/g
540540
const match = []
541541
for (const m of expression.matchAll(RE)) {
542542
match.push([m.groups.message, m.groups.field])
@@ -553,7 +553,7 @@ export default {
553553
return [true, '']
554554
}
555555
for (const [message, field] of messages) {
556-
if ((!(message in this.state.messageTypes) && !((message + '[0]') in this.state.messageTypes))) {
556+
if (!(this.messagesInLog.includes(message.split('[')[0]))) {
557557
console.log('ERROR: attempted to plot unavailable message: ' + message)
558558
this.state.plotLoading = false
559559
if (reask) {
@@ -595,11 +595,16 @@ export default {
595595
// TODO: USE this regex with lookahead once firefox supports it
596596
// let RE = /(?<!\.)\b[A-Z][A-Z0-9_]+\b/g
597597
let fields = this.findMessagesInExpression(expression1).map(field => field[0])
598+
console.log(fields)
598599
fields = fields === null ? [] : fields
599600
const messages = fields.length !== 0 ? (fields) : []
600601
// use time of first message for now
601602
let x
602603
if (messages.length > 0) {
604+
if (this.state.messages[messages[0]] === undefined) {
605+
console.log('ERROR: message ' + messages[0] + ' not found')
606+
return { error: 'message ' + messages[0] + ' not found' }
607+
}
603608
x = this.state.messages[messages[0]].time_boot_ms
604609
} else {
605610
try {
@@ -1020,6 +1025,16 @@ export default {
10201025
},
10211026
expressions () {
10221027
return this.state.expressions
1028+
},
1029+
loadedMessages () {
1030+
return Object.keys(this.state.messages).map(key => {
1031+
return key.split('[')[0]
1032+
})
1033+
},
1034+
messagesInLog () {
1035+
return Object.keys(this.state.messageTypes).map(key => {
1036+
return key.split('[')[0]
1037+
})
10231038
}
10241039
},
10251040
watch: {

0 commit comments

Comments
 (0)