mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
NodeGraph: Fix error when rendering in dashboards (#34187)
* Pass only serializable values to worker * Fix random generated data frame
This commit is contained in:
@@ -1,4 +1,11 @@
|
|||||||
import { ArrayVector, FieldType, MutableDataFrame, NodeGraphDataFrameFieldNames } from '@grafana/data';
|
import {
|
||||||
|
ArrayVector,
|
||||||
|
FieldColorModeId,
|
||||||
|
FieldDTO,
|
||||||
|
FieldType,
|
||||||
|
MutableDataFrame,
|
||||||
|
NodeGraphDataFrameFieldNames,
|
||||||
|
} from '@grafana/data';
|
||||||
import { nodes, edges } from './testData/serviceMapResponse';
|
import { nodes, edges } from './testData/serviceMapResponse';
|
||||||
|
|
||||||
export function generateRandomNodes(count = 10) {
|
export function generateRandomNodes(count = 10) {
|
||||||
@@ -43,7 +50,7 @@ export function generateRandomNodes(count = 10) {
|
|||||||
nodes[sourceIndex].edges.push(nodes[sourceIndex].id);
|
nodes[sourceIndex].edges.push(nodes[sourceIndex].id);
|
||||||
}
|
}
|
||||||
|
|
||||||
const nodeFields: any = {
|
const nodeFields: Record<string, Omit<FieldDTO, 'name'> & { values: ArrayVector }> = {
|
||||||
[NodeGraphDataFrameFieldNames.id]: {
|
[NodeGraphDataFrameFieldNames.id]: {
|
||||||
values: new ArrayVector(),
|
values: new ArrayVector(),
|
||||||
type: FieldType.string,
|
type: FieldType.string,
|
||||||
@@ -59,20 +66,22 @@ export function generateRandomNodes(count = 10) {
|
|||||||
[NodeGraphDataFrameFieldNames.mainStat]: {
|
[NodeGraphDataFrameFieldNames.mainStat]: {
|
||||||
values: new ArrayVector(),
|
values: new ArrayVector(),
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
|
config: { displayName: 'Transactions per second' },
|
||||||
},
|
},
|
||||||
[NodeGraphDataFrameFieldNames.secondaryStat]: {
|
[NodeGraphDataFrameFieldNames.secondaryStat]: {
|
||||||
values: new ArrayVector(),
|
values: new ArrayVector(),
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
|
config: { displayName: 'Average duration' },
|
||||||
},
|
},
|
||||||
[NodeGraphDataFrameFieldNames.arc + 'success']: {
|
[NodeGraphDataFrameFieldNames.arc + 'success']: {
|
||||||
values: new ArrayVector(),
|
values: new ArrayVector(),
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
config: { color: { fixedColor: 'green' } },
|
config: { color: { fixedColor: 'green', mode: FieldColorModeId.Fixed }, displayName: 'Success' },
|
||||||
},
|
},
|
||||||
[NodeGraphDataFrameFieldNames.arc + 'errors']: {
|
[NodeGraphDataFrameFieldNames.arc + 'errors']: {
|
||||||
values: new ArrayVector(),
|
values: new ArrayVector(),
|
||||||
type: FieldType.number,
|
type: FieldType.number,
|
||||||
config: { color: { fixedColor: 'red' } },
|
config: { color: { fixedColor: 'red', mode: FieldColorModeId.Fixed }, displayName: 'Errors' },
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -137,16 +137,21 @@ function defaultLayout(
|
|||||||
for (let i = 0; i < nodes.length; i++) {
|
for (let i = 0; i < nodes.length; i++) {
|
||||||
// These stats needs to be Field class but the data is stringified over the worker boundary
|
// These stats needs to be Field class but the data is stringified over the worker boundary
|
||||||
event.data.nodes[i] = {
|
event.data.nodes[i] = {
|
||||||
|
...nodes[i],
|
||||||
...event.data.nodes[i],
|
...event.data.nodes[i],
|
||||||
mainStat: nodes[i].mainStat,
|
|
||||||
secondaryStat: nodes[i].secondaryStat,
|
|
||||||
arcSections: nodes[i].arcSections,
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
done(event.data);
|
done(event.data);
|
||||||
};
|
};
|
||||||
|
|
||||||
worker.postMessage({ nodes, edges, config: defaultConfig });
|
worker.postMessage({
|
||||||
|
nodes: nodes.map((n) => ({
|
||||||
|
id: n.id,
|
||||||
|
incoming: n.incoming,
|
||||||
|
})),
|
||||||
|
edges,
|
||||||
|
config: defaultConfig,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user