Skip to content

Commit 131dd7a

Browse files
committed
[Appearance] refacto appearnceGetter
- removed unecessary nodeId as param - /!\ edgeId is still required for getColor on edge when using source/target
1 parent a9c8a6a commit 131dd7a

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

src/core/appearance/types.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ export interface AppearanceState {
8383
edgesLabelSize: LabelSize;
8484
}
8585

86-
export type SizeGetter = (itemId: string, data: ItemData) => number;
87-
export type ColorGetter = (itemId: string, data: ItemData) => string;
88-
export type LabelGetter = (itemId: string, data: ItemData) => string | null;
86+
export type SizeGetter = (data: ItemData) => number;
87+
export type ColorGetter = (data: ItemData, edgeId?: string) => string;
88+
export type LabelGetter = (data: ItemData) => string | null;
8989

9090
/**
9191
* This state contains the visual getters, i.e. the functions to get a node or

src/core/appearance/utils.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export function makeGetSize<
134134
});
135135
const delta = max - min || 1;
136136
const ratio = (sizesDef.maxSize - sizesDef.minSize) / delta;
137-
getSize = (_itemId: string, data: ItemData) => {
137+
getSize = (data: ItemData) => {
138138
const value = getValue(toNumber(data[sizesDef.field]));
139139

140140
if (typeof value === "number" && !isNaN(value) && Math.abs(value) !== Infinity) {
@@ -162,10 +162,10 @@ export function makeGetColor<
162162
const itemsValues = itemType === "nodes" ? nodeData : edgeData;
163163
const colorsDef = itemType === "nodes" ? nodesColor : edgesColor;
164164

165-
let getColor: ((itemId: string, data: ItemData) => string) | null = null;
165+
let getColor: ColorGetter | null = null;
166166
switch (colorsDef.type) {
167167
case "partition":
168-
getColor = (_itemId: string, data: ItemData) => {
168+
getColor = (data: ItemData) => {
169169
const value = data[colorsDef.field] as string;
170170
return value in colorsDef.colorPalette ? colorsDef.colorPalette[value] : colorsDef.missingColor;
171171
};
@@ -184,7 +184,7 @@ export function makeGetColor<
184184
const colorScale = chroma
185185
.scale(colorsDef.colorScalePoints.map((point) => point.color))
186186
.domain(colorsDef.colorScalePoints.map((csp) => csp.scalePoint));
187-
getColor = (_itemId: string, data: ItemData) => {
187+
getColor = (data: ItemData) => {
188188
const value = toNumber(data[colorsDef.field]);
189189
if (typeof value === "number") {
190190
return colorScale((value - min) / delta).hex();
@@ -201,15 +201,15 @@ export function makeGetColor<
201201
const getNodeColor = (getters as VisualGetters | undefined)?.getNodeColor;
202202
switch ((colorsDef as EdgeColor).type) {
203203
case "source":
204-
getColor = (edgeId: string) => {
204+
getColor = (_: ItemData, edgeId?: string) => {
205205
const node = fullGraph.source(edgeId);
206-
return getNodeColor ? getNodeColor(node, nodeData[node]) : DEFAULT_NODE_COLOR;
206+
return getNodeColor && edgeId && node ? getNodeColor(nodeData[node]) : DEFAULT_NODE_COLOR;
207207
};
208208
break;
209209
case "target":
210-
getColor = (edgeId: string) => {
210+
getColor = (_: ItemData, edgeId?: string) => {
211211
const node = fullGraph.target(edgeId);
212-
return getNodeColor ? getNodeColor(node, nodeData[node]) : DEFAULT_NODE_COLOR;
212+
return getNodeColor && edgeId && node ? getNodeColor(nodeData[node]) : DEFAULT_NODE_COLOR;
213213
};
214214
break;
215215
}
@@ -236,7 +236,7 @@ export function makeGetLabel<
236236
getLabel = () => labelsDef.value;
237237
break;
238238
case "field":
239-
getLabel = (_itemId: string, data: ItemData) => {
239+
getLabel = (data: ItemData) => {
240240
const label = toString(data[labelsDef.field]);
241241
return typeof label === "string" ? label : labelsDef.missingLabel;
242242
};
@@ -267,24 +267,24 @@ export function applyVisualProperties(graph: SigmaGraph, dataset: GraphDataset,
267267
graph.forEachNode((node) => {
268268
const attr: Partial<NodeRenderingData> = {};
269269
if (getters.getNodeSize) {
270-
attr.size = getters.getNodeSize(node, dataset.nodeData[node]);
270+
attr.size = getters.getNodeSize(dataset.nodeData[node]);
271271
// store raw size to compute label size independent to zoom
272272
attr.rawSize = attr.size;
273273
}
274-
if (getters.getNodeColor) attr.color = getters.getNodeColor(node, dataset.nodeData[node]);
275-
if (getters.getNodeLabel) attr.label = getters.getNodeLabel(node, dataset.nodeData[node]);
274+
if (getters.getNodeColor) attr.color = getters.getNodeColor(dataset.nodeData[node]);
275+
if (getters.getNodeLabel) attr.label = getters.getNodeLabel(dataset.nodeData[node]);
276276
graph.mergeNodeAttributes(node, attr);
277277
});
278278

279279
graph.forEachEdge((edge) => {
280280
const attr: Partial<EdgeRenderingData> = {};
281281
if (getters.getEdgeSize) {
282-
attr.size = getters.getEdgeSize(edge, dataset.edgeData[edge]);
282+
attr.size = getters.getEdgeSize(dataset.edgeData[edge]);
283283
// store raw size to compute label size independent to zoom
284284
attr.rawSize = attr.size;
285285
}
286-
if (getters.getEdgeColor) attr.color = getters.getEdgeColor(edge, dataset.edgeData[edge]);
287-
if (getters.getEdgeLabel) attr.label = getters.getEdgeLabel(edge, dataset.edgeData[edge]);
286+
if (getters.getEdgeColor) attr.color = getters.getEdgeColor(dataset.edgeData[edge], edge);
287+
if (getters.getEdgeLabel) attr.label = getters.getEdgeLabel(dataset.edgeData[edge]);
288288
graph.mergeEdgeAttributes(edge, attr);
289289
});
290290
}

src/views/graphPage/Selection.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ function getItemAttributes(
3333
const hidden = type === "nodes" ? !filteredGraph.hasNode(id) : !filteredGraph.hasEdge(id);
3434

3535
return {
36-
label: (getLabel ? getLabel(id, data) : renderingData.label) || undefined,
37-
color: getColor ? getColor(id, data) : renderingData.color || defaultColor,
36+
label: (getLabel ? getLabel(data) : renderingData.label) || undefined,
37+
color: getColor ? getColor(data, id) : renderingData.color || defaultColor,
3838
hidden,
3939
};
4040
}

0 commit comments

Comments
 (0)