From 436e0dfa49de4650f2550245bc61a648c9132155 Mon Sep 17 00:00:00 2001 From: Douglas Lowder Date: Mon, 23 Mar 2020 18:32:23 -0700 Subject: [PATCH] Fix #973 (legend ordering) --- src/util/colorScale.js | 9 ++------- src/util/sortedDomain.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 src/util/sortedDomain.js diff --git a/src/util/colorScale.js b/src/util/colorScale.js index eabe0bfe9..ca83f116d 100644 --- a/src/util/colorScale.js +++ b/src/util/colorScale.js @@ -8,6 +8,7 @@ import { getExtraVals } from "./colorHelpers"; import { isColorByGenotype, decodeColorByGenotype } from "./getGenotype"; import { setGenotype, orderOfGenotypeAppearance } from "./setGenotype"; import { getTraitFromNode } from "./treeMiscHelpers"; +import { sortedDomain } from "./sortedDomain"; const unknownColor = "#AAAAAA"; @@ -39,13 +40,7 @@ const getDiscreteValuesFromTree = (nodes, nodesToo, attr) => { stateCount.set(state, currentCount+1); } } - const domain = Array.from(stateCount.keys()).filter((x) => isValueValid(x)); - /* sorting technique depends on the colorBy */ - if (attr === "clade_membership") { - domain.sort(); - } else { - domain.sort((a, b) => stateCount[a] > stateCount[b] ? 1 : -1); - } + const domain = sortedDomain(Array.from(stateCount.keys()).filter((x) => isValueValid(x)), attr, stateCount); return domain; }; diff --git a/src/util/sortedDomain.js b/src/util/sortedDomain.js new file mode 100644 index 000000000..0800264f4 --- /dev/null +++ b/src/util/sortedDomain.js @@ -0,0 +1,15 @@ +export const sortedDomain = (domain, attr, stateCount) => { + /* sorting technique depends on the colorBy */ + const sorted = Array.from(domain); + if (attr === "clade_membership") { + sorted.sort(); + } else { + sorted.sort( + (a, b) => + stateCount.get(a) === stateCount.get(b) + ? a < b ? -1 : 1 + : stateCount.get(a) > stateCount.get(b) ? -1 : 1 + ); + } + return sorted; +};