Skip to content

Commit

Permalink
work on toGroupCompareValue
Browse files Browse the repository at this point in the history
  • Loading branch information
sgratzl committed Dec 8, 2018
1 parent 91f8f60 commit ee4fb37
Show file tree
Hide file tree
Showing 12 changed files with 117 additions and 96 deletions.
7 changes: 4 additions & 3 deletions src/model/CategoricalColumn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@ import {
ICategoricalColumn, ICategoricalColumnDesc, ICategoricalFilter, ICategory,
isEqualCategoricalFilter, isCategoryIncluded, toCategories, COMPARE_CATEGORY_VALUE_TYPES, toGroupCompareCategoryValue, COMPARE_GROUP_CATEGORY_VALUE_TYPES,
} from './ICategoricalColumn';
import {IDataRow, IGroup, IGroupData} from './interfaces';
import {IDataRow, IGroup} from './interfaces';
import {missingGroup} from './missing';
import {IEventListener} from '../internal/AEventDispatcher';
import {ICategoricalColorMappingFunction, DEFAULT_COLOR_FUNCTION, restoreColorMapping} from './CategoricalColorMappingFunction';
import {ISequence} from '../internal/interable';


/**
Expand Down Expand Up @@ -208,8 +209,8 @@ export default class CategoricalColumn extends ValueColumn<string> implements IC
return {name: cat.label, color: cat.color};
}

toCompareGroupValue(g: IGroupData): ICompareValue[] {
return toGroupCompareCategoryValue(g.rows, this);
toCompareGroupValue(rows: ISequence<IDataRow>): ICompareValue[] {
return toGroupCompareCategoryValue(rows, this);
}

toCompareGroupValueType() {
Expand Down
13 changes: 7 additions & 6 deletions src/model/Column.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {IEventListener} from '../internal/AEventDispatcher';
import {isSortingAscByDefault} from './annotations';
import {IColumnDump} from '../provider/interfaces';
import {ECompareValueType} from '../provider/sort';
import {ISequence} from '../internal/interable';

export {IColumnDesc} from './interfaces';
export {ECompareValueType} from '../provider/sort';
Expand Down Expand Up @@ -230,9 +231,9 @@ export default class Column extends AEventDispatcher {

protected createEventList() {
return super.createEventList().concat([Column.EVENT_WIDTH_CHANGED,
Column.EVENT_LABEL_CHANGED, Column.EVENT_METADATA_CHANGED, Column.EVENT_VISIBILITY_CHANGED, Column.EVENT_SUMMARY_RENDERER_TYPE_CHANGED,
Column.EVENT_RENDERER_TYPE_CHANGED, Column.EVENT_GROUP_RENDERER_TYPE_CHANGED,
Column.EVENT_DIRTY, Column.EVENT_DIRTY_HEADER, Column.EVENT_DIRTY_VALUES, Column.EVENT_DIRTY_CACHES]);
Column.EVENT_LABEL_CHANGED, Column.EVENT_METADATA_CHANGED, Column.EVENT_VISIBILITY_CHANGED, Column.EVENT_SUMMARY_RENDERER_TYPE_CHANGED,
Column.EVENT_RENDERER_TYPE_CHANGED, Column.EVENT_GROUP_RENDERER_TYPE_CHANGED,
Column.EVENT_DIRTY, Column.EVENT_DIRTY_HEADER, Column.EVENT_DIRTY_VALUES, Column.EVENT_DIRTY_CACHES]);
}

on(type: typeof Column.EVENT_WIDTH_CHANGED, listener: typeof widthChanged | null): this;
Expand Down Expand Up @@ -367,7 +368,7 @@ export default class Column extends AEventDispatcher {
return false;
}

private isSortedByMeImpl(selector: ((r: Ranking) => ISortCriteria[])): { asc: 'asc' | 'desc' | undefined, priority: number | undefined } {
private isSortedByMeImpl(selector: ((r: Ranking) => ISortCriteria[])): {asc: 'asc' | 'desc' | undefined, priority: number | undefined} {
const ranker = this.findMyRanker();
if (!ranker) {
return {asc: undefined, priority: undefined};
Expand Down Expand Up @@ -424,7 +425,7 @@ export default class Column extends AEventDispatcher {
/**
* called when the columns added to a ranking
*/
attach(parent: IColumnParent) {
attach(parent: IColumnParent) {
this.parent = parent;
}

Expand Down Expand Up @@ -554,7 +555,7 @@ export default class Column extends AEventDispatcher {
return defaultGroup;
}

toCompareGroupValue(group: IGroupData): ICompareValue | ICompareValue[] {
toCompareGroupValue(_rows: ISequence<IDataRow>, group: IGroup): ICompareValue | ICompareValue[] {
return group.name.toLowerCase();
}

Expand Down
7 changes: 4 additions & 3 deletions src/model/CompositeNumberColumn.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import {format} from 'd3-format';
import {IColumnDesc} from './Column';
import CompositeColumn from './CompositeColumn';
import {IDataRow, IGroupData} from './interfaces';
import {IDataRow, IGroup} from './interfaces';
import {isMissingValue} from './missing';
import NumberColumn, {INumberColumn} from './NumberColumn';
import {SortByDefault} from './annotations';
import {ISequence} from '../internal/interable';

export interface ICompositeNumberDesc extends IColumnDesc {
/**
Expand Down Expand Up @@ -83,8 +84,8 @@ export default class CompositeNumberColumn extends CompositeColumn implements IN
return NumberColumn.prototype.toCompareValueType.call(this);
}

toCompareGroupValue(group: IGroupData) {
return NumberColumn.prototype.toCompareGroupValue.call(this, group);
toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup) {
return NumberColumn.prototype.toCompareGroupValue.call(this, rows, group);
}

toCompareGroupValueType() {
Expand Down
8 changes: 4 additions & 4 deletions src/model/DateColumn.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {timeFormat, timeParse} from 'd3-time-format';
import {Category, toolbar, dialogAddons} from './annotations';
import {IDataRow, IGroupData, IGroup} from './interfaces';
import {IDataRow, IGroup} from './interfaces';
import {isMissingValue, missingGroup, isUnknown} from './missing';
import ValueColumn, {IValueColumnDesc, dataLoaded} from './ValueColumn';
import {widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, ECompareValueType, dirtyCaches} from './Column';
Expand Down Expand Up @@ -182,8 +182,8 @@ export default class DateColumn extends ValueColumn<Date> implements IDateColumn
};
}

toCompareGroupValue(g: IGroupData): number {
const v = choose(g.rows, this.currentGrouper, this).value;
toCompareGroupValue(rows: ISequence<IDataRow>): number {
const v = choose(rows, this.currentGrouper, this).value;
return v == null ? NaN : v;
}

Expand All @@ -195,7 +195,7 @@ export default class DateColumn extends ValueColumn<Date> implements IDateColumn
/**
* @internal
*/
export function choose(rows: ISequence<IDataRow>, grouper: IDateGrouper | null, col: IDateColumn): { value: number | null, name: string } {
export function choose(rows: ISequence<IDataRow>, grouper: IDateGrouper | null, col: IDateColumn): {value: number | null, name: string} {
const vs = <ISequence<Date>>rows.map((d) => col.getDate(d)).filter((d) => d instanceof Date);
if (isSeqEmpty(vs)) {
return {value: null, name: ''};
Expand Down
9 changes: 5 additions & 4 deletions src/model/GroupColumn.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import {Category, SupportType, toolbar, dialogAddons} from './annotations';
import Column, {widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, ECompareValueType, dirtyCaches} from './Column';
import {IGroupData} from './interfaces';
import {IGroupData, IDataRow, IGroup} from './interfaces';
import {missingGroup} from './missing';
import {IEventListener} from '../internal/AEventDispatcher';
import {ISequence} from '../internal/interable';

export function createGroupDesc(label = 'Group Name') {
return {type: 'group', label};
}

export enum EGroupSortMethod {
name = 'name',
count ='count'
count = 'count'
}

/**
Expand Down Expand Up @@ -78,9 +79,9 @@ export default class GroupColumn extends Column {
}
}

toCompareGroupValue(group: IGroupData) {
toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup) {
if (this.groupSortMethod === 'count') {
return group.rows.length;
return rows.length;
}
return group.name === missingGroup.name ? null : group.name.toLowerCase();
}
Expand Down
9 changes: 5 additions & 4 deletions src/model/ImpositionBoxPlotColumn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import {toolbar, SortByDefault, dialogAddons} from './annotations';
import BoxPlotColumn, {mappingChanged} from './BoxPlotColumn';
import Column, {IColumnDesc, widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, dirtyCaches} from './Column';
import CompositeColumn, {addColumn, filterChanged, moveColumn, removeColumn} from './CompositeColumn';
import {IDataRow, IGroupData} from './interfaces';
import {IDataRow, IGroupData, IGroup} from './interfaces';
import {ESortMethod, IBoxPlotColumn, INumberFilter, isBoxPlotColumn, noNumberFilter} from './INumberColumn';
import {IMappingFunction, ScaleMappingFunction, isMapAbleColumn} from './MappingFunction';
import NumbersColumn from './NumbersColumn';
import {colorMappingChanged} from './NumberColumn';
import {DEFAULT_COLOR_FUNCTION, IColorMappingFunction} from './ColorMappingFunction';
import {ISequence} from '../internal/interable';


/**
Expand Down Expand Up @@ -68,7 +69,7 @@ export default class ImpositionBoxPlotColumn extends CompositeColumn implements

getColor(row: IDataRow) {
const c = this._children;
switch(c.length) {
switch (c.length) {
case 0:
return Column.DEFAULT_COLOR;
case 1:
Expand Down Expand Up @@ -206,8 +207,8 @@ export default class ImpositionBoxPlotColumn extends CompositeColumn implements
return BoxPlotColumn.prototype.group.call(this, row);
}

toCompareGroupValue(group: IGroupData) {
return BoxPlotColumn.prototype.toCompareGroupValue.call(this, group);
toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup) {
return BoxPlotColumn.prototype.toCompareGroupValue.call(this, rows, group);
}

toCompareGroupValueType() {
Expand Down
9 changes: 5 additions & 4 deletions src/model/ImpositionCompositeColumn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@ import {suffix, IEventListener} from '../internal/AEventDispatcher';
import {toolbar, SortByDefault} from './annotations';
import Column, {IColumnDesc, widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, dirtyCaches} from './Column';
import CompositeColumn, {addColumn, filterChanged, moveColumn, removeColumn} from './CompositeColumn';
import {IDataRow, IGroupData} from './interfaces';
import {IDataRow, IGroupData, IGroup} from './interfaces';
import {isNumberColumn} from './INumberColumn';
import NumberColumn, {INumberColumn, mappingChanged, colorMappingChanged} from './NumberColumn';
import {isMapAbleColumn} from './MappingFunction';
import {ISequence} from '../internal/interable';


/**
Expand Down Expand Up @@ -89,7 +90,7 @@ export default class ImpositionCompositeColumn extends CompositeColumn implement

getColor(row: IDataRow) {
const c = this._children;
switch(c.length) {
switch (c.length) {
case 0:
return Column.DEFAULT_COLOR;
case 1:
Expand Down Expand Up @@ -137,8 +138,8 @@ export default class ImpositionCompositeColumn extends CompositeColumn implement
return NumberColumn.prototype.toCompareValueType.call(this);
}

toCompareGroupValue(group: IGroupData) {
return NumberColumn.prototype.toCompareGroupValue.call(this, group);
toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup) {
return NumberColumn.prototype.toCompareGroupValue.call(this, rows, group);
}

toCompareGroupValueType() {
Expand Down
7 changes: 4 additions & 3 deletions src/model/LinkColumn.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
import {Category, toolbar, dialogAddons} from './annotations';
import Column, {widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, dirtyCaches} from './Column';
import {IDataRow, IGroup, IGroupData} from './interfaces';
import {IDataRow, IGroup} from './interfaces';
import {patternFunction} from './internal';
import ValueColumn, {IValueColumnDesc, dataLoaded} from './ValueColumn';
import {IEventListener} from '../internal/AEventDispatcher';
import {IStringDesc, EAlignment} from './StringColumn';
import StringColumn from './StringColumn';
import {ISequence} from '../internal/interable';

export interface ILinkDesc extends IStringDesc {
/**
Expand Down Expand Up @@ -204,8 +205,8 @@ export default class LinkColumn extends ValueColumn<string | ILink> {
return StringColumn.prototype.toCompareValueType.call(this);
}

toCompareGroupValue(group: IGroupData) {
return StringColumn.prototype.toCompareGroupValue.call(this, group);
toCompareGroupValue(rows: ISequence<IDataRow>, group: IGroup) {
return StringColumn.prototype.toCompareGroupValue.call(this, rows, group);
}

toCompareGroupValueType() {
Expand Down
13 changes: 5 additions & 8 deletions src/model/NumberColumn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import {format} from 'd3-format';
import {equalArrays} from '../internal';
import {Category, toolbar, SortByDefault, dialogAddons} from './annotations';
import Column, {widthChanged, labelChanged, metaDataChanged, dirty, dirtyHeader, dirtyValues, rendererTypeChanged, groupRendererChanged, summaryRendererChanged, visibilityChanged, ECompareValueType, dirtyCaches} from './Column';
import {IDataRow, IGroup, IGroupData} from './interfaces';
import {groupCompare, toCompareGroupValue} from './internal';
import {IDataRow, IGroup} from './interfaces';
import {toCompareGroupValue} from './internal';
import {
default as INumberColumn, EAdvancedSortMethod, INumberDesc, INumberFilter, isEqualNumberFilter,
isNumberIncluded, noNumberFilter, isDummyNumberFilter, restoreNumberFilter
Expand All @@ -16,6 +16,7 @@ import {isMissingValue, isUnknown, missingGroup} from './missing';
import ValueColumn, {IValueColumnDesc, dataLoaded} from './ValueColumn';
import {IEventListener} from '../internal/AEventDispatcher';
import {IColorMappingFunction, createColorMappingFunction, restoreColorMapping} from './ColorMappingFunction';
import {ISequence} from '../internal/interable';

export {default as INumberColumn, isNumberColumn} from './INumberColumn';

Expand Down Expand Up @@ -227,12 +228,8 @@ export default class NumberColumn extends ValueColumn<number> implements INumber
return ECompareValueType.FLOAT;
}

groupCompare(a: IGroupData, b: IGroupData): number {
return groupCompare(a.rows, b.rows, this, <any>this.groupSortMethod);
}

toCompareGroupValue(group: IGroupData): number {
return toCompareGroupValue(group.rows, this, <any>this.groupSortMethod);
toCompareGroupValue(rows: ISequence<IDataRow>): number {
return toCompareGroupValue(rows, this, <any>this.groupSortMethod);
}

toCompareGroupValueType() {
Expand Down
5 changes: 3 additions & 2 deletions src/model/Ranking.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import CompositeColumn from './CompositeColumn';
import {IEventListener} from '../internal/AEventDispatcher';
import {IRankingDump} from '../provider/interfaces';
import {chooseByLength} from '../provider/sort';
import {ISequence} from '../internal/interable';

export interface ISortCriteria {
readonly col: Column;
Expand Down Expand Up @@ -312,13 +313,13 @@ export default class Ranking extends AEventDispatcher implements IColumnParent {
return vs;
}

toGroupCompareValue(group: IGroupData) {
toGroupCompareValue(rows: ISequence<IDataRow>, group: IGroup) {
if (this.groupSortCriteria.length === 0) {
return [group.name.toLowerCase()];
}
const vs: ICompareValue[] = [];
for (const s of this.groupSortCriteria) {
const r = s.col.toCompareGroupValue(group);
const r = s.col.toCompareGroupValue(rows, group);
if (Array.isArray(r)) {
vs.push(...r);
} else {
Expand Down
Loading

0 comments on commit ee4fb37

Please sign in to comment.