Skip to content

Commit

Permalink
Remove result.dimensions
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky committed Sep 12, 2021
1 parent 75ec630 commit 6b69ad6
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 48 deletions.
8 changes: 4 additions & 4 deletions src/combination/dimensions.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,24 @@ import { getInputIds } from './inputs.js'
export const COMBINATION_DIMENSIONS = [
{
dimension: 'task',
propName: 'tasks',
idName: 'taskId',
rankName: 'taskRank',
},
{
dimension: 'runner',
propName: 'runners',
idName: 'runnerId',
rankName: 'runnerRank',
},
{
dimension: 'system',
propName: 'systems',
idName: 'systemId',
rankName: 'systemRank',
},
]

export const N_COMBINATION_DIMENSIONS = [
{ dimension: 'input', getIds: getInputIds },
{
dimension: 'input',
getIds: getInputIds,
},
]
24 changes: 6 additions & 18 deletions src/combination/group.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,40 +4,28 @@ import { getMean } from '../stats/sum.js'

import { COMBINATION_DIMENSIONS } from './dimensions.js'

// Group combinations per dimension.
// Each dimension is assigned to a top-level result.dimensions.* property.
// It includes its mean speed and rank.
// Add `result.*` properties based on grouping combinations by dimension.
// Add `combination.*Rank` then sort combinations based on it.
export const groupResultCombinations = function (result) {
const { combinations: combinationsA, dimensions } = groupDimensionInfos(
const { combinations: combinationsA } = groupDimensionInfos(
result.combinations,
)
const combinationsB = sortCombinations(combinationsA)
return { ...result, combinations: combinationsB, dimensions }
return { ...result, combinations: combinationsB }
}

const groupDimensionInfos = function (combinations) {
return COMBINATION_DIMENSIONS.reduce(addDimensionInfo, {
combinations,
dimensions: {},
})
return COMBINATION_DIMENSIONS.reduce(addDimensionInfo, { combinations })
}

const addDimensionInfo = function (
{ combinations, dimensions },
{ propName, idName, rankName },
) {
const addDimensionInfo = function ({ combinations }, { idName, rankName }) {
const ids = getDimensionIds(combinations, idName)
const dimension = ids.map((id) => getDimension({ combinations, id, idName }))
const dimensionA = sortOn(dimension, 'mean')

const combinationsA = combinations.map((combination) =>
addRank({ combination, dimension: dimensionA, idName, rankName }),
)
return {
combinations: combinationsA,
dimensions: { ...dimensions, [propName]: dimensionA },
}
return { combinations: combinationsA }
}

const getDimensionIds = function (combinations, idName) {
Expand Down
11 changes: 5 additions & 6 deletions src/report/normalize/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { omitSystemProps } from '../../system/omit.js'
import { normalizeTimestamp } from '../../system/timestamp.js'

import { omitCombinationsProps } from './omit.js'
import { addCombinationsTitles, addDimensionsTitles } from './titles_add.js'
import { addCombinationsTitles } from './titles_add.js'
import { padTitles } from './titles_pad.js'

// Add report-specific properties to a result that are not in `combinations` nor
Expand Down Expand Up @@ -63,13 +63,12 @@ export const normalizeCombEach = function (
},
{ titles },
) {
const resultA = addDimensionsTitles(result, titles, showTitles)
const resultB = addCombinationsTitles(resultA, titles, showTitles)
const resultC = padTitles({ result: resultB })
const resultD = omitCombinationsProps(resultC, {
const resultA = addCombinationsTitles(result, titles, showTitles)
const resultB = padTitles({ result: resultA })
const resultC = omitCombinationsProps(resultB, {
showPrecision,
showDiff,
debugStats,
})
return resultD
return resultC
}
20 changes: 0 additions & 20 deletions src/report/normalize/titles_add.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import mapObj from 'map-obj'

import { COMBINATION_DIMENSIONS } from '../../combination/dimensions.js'

// Allow users to rename identifiers from any combination dimension: tasks,
Expand Down Expand Up @@ -37,24 +35,6 @@ const getIdName = function ({ idName }) {
return idName
}

// Add `result.dimensions.*.title`
export const addDimensionsTitles = function (
{ dimensions, ...result },
titles,
showTitles,
) {
const titlesA = showTitles ? titles : {}
const dimensionsA = mapObj(dimensions, (dimension, items) => [
dimension,
addDimensionTitle(items, titlesA),
])
return { ...result, dimensions: dimensionsA }
}

const addDimensionTitle = function (items, titles) {
return items.map((item) => addTitle(item, 'id', titles))
}

// Add `footer.systems[*].title`
export const addFooterTitles = function (
{ systems, ...footer },
Expand Down

0 comments on commit 6b69ad6

Please sign in to comment.