Skip to content

Commit 4ab87dc

Browse files
authored
Simplify data structure used to collect multisource encoding update (#4687)
1 parent 64e8038 commit 4ab87dc

File tree

1 file changed

+12
-31
lines changed

1 file changed

+12
-31
lines changed

extension/src/plots/multiSource/collect.ts

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -119,31 +119,15 @@ const collectMultiSourceValues = (variations: Variations): Values => {
119119
return values
120120
}
121121

122-
const sortDifferentVariations = (
123-
differentVariations: { field: string; variations: number }[],
124-
expectedOrder: string[]
125-
): { field: string; variations: number }[] => {
126-
differentVariations.sort(
127-
(
128-
{ field: aField, variations: aVariations },
129-
{ field: bField, variations: bVariations }
130-
) =>
131-
aVariations === bVariations
132-
? expectedOrder.indexOf(aField) - expectedOrder.indexOf(bField)
133-
: aVariations - bVariations
134-
)
135-
return differentVariations
136-
}
137-
138122
const groupVariations = (
139123
variations: Variations,
140124
values: Values
141125
): {
142-
lessValuesThanVariations: { field: string; variations: number }[]
126+
lessValuesThanVariations: string[]
143127
valuesMatchVariations: string[]
144128
} => {
145129
const valuesMatchVariations: string[] = []
146-
const lessValuesThanVariations: { field: string; variations: number }[] = []
130+
const lessValuesThanVariations: string[] = []
147131

148132
for (const [field, valueSet] of Object.entries(values)) {
149133
if (valueSet.size === 1) {
@@ -153,14 +137,14 @@ const groupVariations = (
153137
valuesMatchVariations.push(field)
154138
continue
155139
}
156-
lessValuesThanVariations.push({ field, variations: valueSet.size })
140+
lessValuesThanVariations.push(field)
157141
}
158142

159143
const expectedOrder = ['filename', 'field']
160144
return {
161-
lessValuesThanVariations: sortDifferentVariations(
145+
lessValuesThanVariations: sortCollectedArray(
162146
lessValuesThanVariations,
163-
expectedOrder
147+
(a, b) => expectedOrder.indexOf(a) - expectedOrder.indexOf(b)
164148
),
165149
valuesMatchVariations: sortCollectedArray(
166150
valuesMatchVariations,
@@ -224,7 +208,7 @@ const collectMergedStrokeDashEncoding = (
224208
const collectEncodingFromValues = <T extends typeof Shape | typeof StrokeDash>(
225209
scaleRange: T,
226210
values: Values,
227-
lessValuesThanVariations: { field: string; variations: number }[]
211+
lessValuesThanVariations: string[]
228212
): { field: string; scale: { range: T[number][]; domain: string[] } } => {
229213
const scale: { range: T[number][]; domain: string[] } = {
230214
domain: [],
@@ -233,10 +217,9 @@ const collectEncodingFromValues = <T extends typeof Shape | typeof StrokeDash>(
233217
const filenameOrField = lessValuesThanVariations.shift()
234218
let idx = 0
235219
const field = new Set<string>()
236-
if (filenameOrField?.field) {
237-
for (const value of values[filenameOrField.field as 'filename' | 'field'] ||
238-
[]) {
239-
field.add(filenameOrField.field)
220+
if (filenameOrField) {
221+
for (const value of values[filenameOrField as 'filename' | 'field'] || []) {
222+
field.add(filenameOrField)
240223
scale.domain.push(value)
241224
scale.range.push(scaleRange[idx])
242225
scale.domain.sort()
@@ -250,7 +233,7 @@ const collectUnmergedStrokeDashEncoding = (
250233
acc: MultiSourceEncoding,
251234
path: string,
252235
values: Values,
253-
lessValuesThanVariations: { field: string; variations: number }[]
236+
lessValuesThanVariations: string[]
254237
): void => {
255238
acc[path] = {
256239
strokeDash: collectEncodingFromValues(
@@ -265,16 +248,14 @@ const collectUnmergedShapeEncoding = (
265248
acc: MultiSourceEncoding,
266249
path: string,
267250
values: Values,
268-
lessValuesThanVariations: { field: string; variations: number }[]
251+
lessValuesThanVariations: string[]
269252
): void => {
270253
acc[path] = {
271254
...acc[path],
272255
shape: collectEncodingFromValues(Shape, values, lessValuesThanVariations)
273256
}
274257
}
275258

276-
// this is how we can collect the encoding for multi-source plots
277-
// we need to pass in the anchors that we want to fill as well
278259
const collectPathMultiSourceEncoding = (
279260
acc: MultiSourceEncoding,
280261
path: string,
@@ -290,7 +271,7 @@ const collectPathMultiSourceEncoding = (
290271
if (valuesMatchVariations.length > 0) {
291272
const keysToCombined = [
292273
...valuesMatchVariations,
293-
...lessValuesThanVariations.map(({ field }) => field)
274+
...lessValuesThanVariations
294275
]
295276
collectMergedStrokeDashEncoding(acc, path, variations, keysToCombined)
296277
return

0 commit comments

Comments
 (0)