Skip to content

Commit

Permalink
add color pickers for highlight colors
Browse files Browse the repository at this point in the history
  • Loading branch information
KatrinaTurner committed Aug 27, 2021
1 parent c3fb1a7 commit a7e07c5
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 16 deletions.
2 changes: 1 addition & 1 deletion dist/module.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/module.js.map

Large diffs are not rendered by default.

9 changes: 7 additions & 2 deletions src/MapPanel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@ export const MapPanel: React.FC<Props> = ({ options, data, width, height, id })
let graphOptions = {
...options,
};

var colors = {
defaultColor: graphOptions.color,
nodeHighlight: graphOptions.nodeHighlight,
azHighlight: graphOptions.azHighlight,
zaHighlight: graphOptions.zaHighlight,
};
var parsedData = {};
var mapData;
try {
parsedData = parseData(data, graphOptions.mapjson);
parsedData = parseData(data, graphOptions.mapjson, colors);
mapData = parsedData[3];
} catch (error) {
console.error('Parsing error : ', error);
Expand Down
4 changes: 2 additions & 2 deletions src/components/esmap.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ function renderEdges(g, data) {
return d.azPath;
})
.attr('stroke', function (d) {
return d.color;
return d.azColor;
})
.attr('marker-mid', function (d, i) {
return 'url(#arrow)';
Expand Down Expand Up @@ -83,7 +83,7 @@ function renderEdges(g, data) {
return d.zaPath;
})
.attr('stroke', function (d) {
return d.color;
return d.zaColor;
})
.attr('marker-mid', function (d, i) {
return 'url(#arrow)';
Expand Down
30 changes: 21 additions & 9 deletions src/dataParser.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
import { DataFrameView } from '@grafana/data';

export function parseData(data: { series: any[] }, mapData) {
export function parseData(data: { series: any[] }, mapData, colors) {
const series = data.series[0];
const frame = new DataFrameView(series);

// initialize arrays

let parsedData: Array<{ in: any; out: any; name: string; value: number }> = [];
let parsedData: Array<{ in: any; out: any; azName: string; zaName: string; value: number }> = [];
let infIn: Array<{ name: any; value: number }> = [];
let infOut: Array<{ name: any; value: number }> = [];

// hardcoded right now!!! group by src and dst

// Retrieve panel data from panel
frame.forEach((row) => {
parsedData.push({ in: row[0], out: row[1], name: `${row[0]}--${row[1]}`, value: row[2] });
parsedData.push({
in: row[0],
out: row[1],
azName: `${row[0]}--${row[1]}`,
zaName: `${row[1]}--${row[0]}`,
value: row[2],
});

let indexIn = infIn.findIndex((e) => e.name === row[0]);
if (indexIn >= 0) {
Expand All @@ -34,21 +40,27 @@ export function parseData(data: { series: any[] }, mapData) {
const mapJson = JSON.parse(mapData);

mapJson.edges.forEach((edge) => {
let match = parsedData.find((d) => d.name === edge.name);
if (match) {
edge.color = 'red';
let matchAZ = parsedData.find((d) => d.azName === edge.name);
let matchZA = parsedData.find((d) => d.zaName === edge.name);
if (matchAZ) {
edge.azColor = 'red';
} else {
edge.color = 'grey';
edge.azColor = colors.defaultColor;
}
if (matchZA) {
edge.zaColor = 'red';
} else {
edge.zaColor = colors.defaultColor;
}
});

mapJson.nodes.forEach((node) => {
let match1 = infIn.find((d) => d.name === node.name);
let match2 = infOut.find((d) => d.name === node.name);
if (match1 || match2) {
node.color = 'red';
node.color = colors.nodeHighlight;
} else {
node.color = 'grey';
node.color = colors.defaultColor;
}
});

Expand Down
17 changes: 16 additions & 1 deletion src/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,26 @@ export const plugin = new PanelPlugin<MapOptions>(MapPanel)
.addColorPicker({
path: 'color',
name: 'Color',
defaultValue: 'black',
defaultValue: 'grey',
})
.addTextInput({
path: 'mapjson',
name: 'Map data (json)',
defaultValue: '',
})
.addColorPicker({
path: 'nodeHighlight',
name: 'Node highlight color',
defaultValue: 'red',
})
.addColorPicker({
path: 'azHighlight',
name: 'AZ highlight color',
defaultValue: 'blue',
})
.addColorPicker({
path: 'zaHighlight',
name: 'ZA highlight color',
defaultValue: 'blue',
});
});
3 changes: 3 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
export interface MapOptions {
color: string;
mapjson: string;
nodeHighlight: string;
azHighlight: string;
zaHighlight: string;
}

0 comments on commit a7e07c5

Please sign in to comment.