diff --git a/app/src/components/Sidebar/ValueRenderer/ActionButtons.tsx b/app/src/components/Sidebar/ValueRenderer/ActionButtons.tsx index 07cc9c6..4dd4aa3 100644 --- a/app/src/components/Sidebar/ValueRenderer/ActionButtons.tsx +++ b/app/src/components/Sidebar/ValueRenderer/ActionButtons.tsx @@ -40,7 +40,7 @@ function ActionButtons(props: { - + diff --git a/app/src/components/Sidebar/ValueRenderer/ValueRenderer.tsx b/app/src/components/Sidebar/ValueRenderer/ValueRenderer.tsx index e65c317..1755de7 100644 --- a/app/src/components/Sidebar/ValueRenderer/ValueRenderer.tsx +++ b/app/src/components/Sidebar/ValueRenderer/ValueRenderer.tsx @@ -52,7 +52,8 @@ class ValueRenderer extends React.Component { JSON.parse(str) } catch (error) { try { - let payload = Payload.decode(this.base64MessageToUint8Array(msg)) + //Sparkplugb + let payload = Payload.decode(Base64Message.toUint8Array(msg)) const json = Payload.toJSON(payload) return [JSON.stringify(json, undefined, ' '), 'json'] } catch (error) { @@ -63,21 +64,6 @@ class ValueRenderer extends React.Component { return [this.messageToPrettyJson(str), 'json'] } - private base64MessageToUint8Array(msg: Base64Message): Uint8Array { - let dataUri = Base64Message.toDataUri(msg, "") - let parts = dataUri.split(',') - let b64 = parts[1] - - var binary_string = window.atob(b64); - var len = binary_string.length; - var bytes = new Uint8Array(len); - for (var i = 0; i < len; i++) { - bytes[i] = binary_string.charCodeAt(i); - } - - return bytes - } - private messageToPrettyJson(str: string): string | undefined { try { const json = JSON.parse(str) diff --git a/app/src/components/TopicPlot.tsx b/app/src/components/TopicPlot.tsx index 56c69d1..e4dd326 100644 --- a/app/src/components/TopicPlot.tsx +++ b/app/src/components/TopicPlot.tsx @@ -5,6 +5,7 @@ import PlotHistory from './Chart/Chart' import { Base64Message } from '../../../backend/src/Model/Base64Message' import { toPlottableValue } from './Sidebar/CodeDiff/util' import { PlotCurveTypes } from '../reducers/Charts' +import { Payload } from '../../../backend/src/Model/sparkplug' const parseDuration = require('parse-duration') interface Props { @@ -37,10 +38,15 @@ function nodeToHistory(startTime: number | undefined, history: q.MessageHistory) function nodeDotPathToHistory(startTime: number | undefined, history: q.MessageHistory, dotPath: string) { return filterUsingTimeRange(startTime, history.toArray()) .map((message: q.Message) => { - let json = {} + let json: any = {} try { json = message.payload ? JSON.parse(Base64Message.toUnicodeString(message.payload)) : {} - } catch (ignore) {} + } catch (ignore) { } + + // sparkplugb + try { + json = message.payload ? Payload.toJSON(Payload.decode(Base64Message.toUint8Array(message.payload))) : {} + } catch (ignore) { } const value = dotProp.get(json, dotPath) diff --git a/backend/src/Model/Base64Message.ts b/backend/src/Model/Base64Message.ts index b3763fe..1500633 100644 --- a/backend/src/Model/Base64Message.ts +++ b/backend/src/Model/Base64Message.ts @@ -27,4 +27,14 @@ export class Base64Message { public static toDataUri(message: Base64Message, mimeType: string) { return `data:${mimeType};base64,${message.base64Message}` } + + public static toUint8Array(message: Base64Message) { + var binary_string = window.atob(message.base64Message); + var len = binary_string.length; + var bytes = new Uint8Array(len); + for (var i = 0; i < len; i++) { + bytes[i] = binary_string.charCodeAt(i); + } + return bytes + } }