UNPKG

compassql

Version:

CompassQL visualization query language

43 lines (39 loc) 1.24 kB
import {Dict} from '../../util'; import {Scorer} from './base'; import {SpecQueryModel} from '../../model'; import {Schema} from '../../schema'; import {QueryConfig} from '../../config'; import {FeatureScore} from '../ranking'; import {EncodingQuery, isFieldQuery, isAutoCountQuery} from '../../query/encoding'; /** * Penalize if facet channels are the only dimensions */ export class DimensionScorer extends Scorer { constructor() { super('Dimension'); } protected initScore() { return { row: -2, column: -2, color: 0, opacity: 0, size: 0, shape: 0 } as Dict<number>; } public getScore(specM: SpecQueryModel, _: Schema, __: QueryConfig): FeatureScore[] { if (specM.isAggregate()) { specM.getEncodings().reduce((maxFScore, encQ: EncodingQuery) => { if (isAutoCountQuery(encQ) || (isFieldQuery(encQ) && !encQ.aggregate)) { // isDimension const featureScore = this.getFeatureScore(encQ.channel + ''); if (featureScore && featureScore.score > maxFScore.score) { return featureScore; } } return maxFScore; }, {type: 'Dimension', feature: 'No Dimension', score: -5}); } return []; } }