Skip to content

Commit

Permalink
limit public interface
Browse files Browse the repository at this point in the history
  • Loading branch information
sgratzl committed Dec 23, 2018
1 parent 71d0b7a commit 634587a
Show file tree
Hide file tree
Showing 15 changed files with 291 additions and 298 deletions.
2 changes: 1 addition & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ITaggleOptions} from './interfaces';
import {renderers} from './renderer';
import {renderers} from './renderer/internal';
import {toolbarActions} from './ui';

export * from './interfaces';
Expand Down
2 changes: 1 addition & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import LineUp, {ILineUpOptions} from './ui/LineUp';
import Taggle, {ITaggleOptions} from './ui/taggle';

export * from './builder';
export * from './config';
export {IDynamicHeight, ILineUpFlags, ILineUpLike, ILineUpOptions, ITaggleOptions, defaultOptions} from './config';
export * from './interfaces';
export {IAdvancedBoxPlotData, IBoxPlotData, ICategoricalBin, ICategoricalStatistics, INumberBin, IStatistics} from './internal/math';
export * from './model';
Expand Down
47 changes: 0 additions & 47 deletions src/model/Group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,50 +11,3 @@ export const defaultGroup: IGroup = {
name: 'Default',
color: 'gray'
};


/**
* @internal
*/
export function mapIndices<T>(arr: IndicesArray, callback: (value: number, i: number) => T): T[] {
const r: T[] = [];
for (let i = 0; i < arr.length; ++i) {
r.push(callback(arr[i], i));
}
return r;
}

/**
* @internal
*/
export function everyIndices(arr: IndicesArray, callback: (value: number, i: number) => boolean): boolean {
for (let i = 0; i < arr.length; ++i) {
if (!callback(arr[i], i)) {
return false;
}
}
return true;
}

/**
* @internal
*/
export function filterIndices(arr: IndicesArray, callback: (value: number, i: number) => boolean): number[] {
const r: number[] = [];
for (let i = 0; i < arr.length; ++i) {
if (callback(arr[i], i)) {
r.push(arr[i]);
}
}
return r;
}


/**
* @internal
*/
export function forEachIndices(arr: IndicesArray, callback: (value: number, i: number) => void) {
for (let i = 0; i < arr.length; ++i) {
callback(arr[i], i);
}
}
115 changes: 5 additions & 110 deletions src/model/index.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,13 @@
import ActionColumn from './ActionColumn';
import AggregateGroupColumn from './AggregateGroupColumn';
import AnnotateColumn from './AnnotateColumn';
import BooleanColumn from './BooleanColumn';
import BooleansColumn from './BooleansColumn';
import BoxPlotColumn from './BoxPlotColumn';
import CategoricalColumn from './CategoricalColumn';
import CategoricalMapColumn from './CategoricalMapColumn';
import CategoricalsColumn from './CategoricalsColumn';
import Column from './Column';
import DateColumn from './DateColumn';
import DatesColumn from './DatesColumn';
import DatesMapColumn from './DatesMapColumn';
import GroupColumn from './GroupColumn';
import HierarchyColumn from './HierarchyColumn';
import ImpositionCompositeColumn from './ImpositionCompositeColumn';
import ImpositionCompositesColumn from './ImpositionCompositesColumn';
import NestedColumn from './NestedColumn';
import NumberColumn from './NumberColumn';
import NumberMapColumn from './NumberMapColumn';
import NumbersColumn from './NumbersColumn';
import OrdinalColumn from './OrdinalColumn';
import RankColumn from './RankColumn';
import ReduceColumn from './ReduceColumn';
import ScriptColumn from './ScriptColumn';
import SelectionColumn from './SelectionColumn';
import SetColumn from './SetColumn';
import StackColumn from './StackColumn';
import StringColumn from './StringColumn';
import StringMapColumn from './StringMapColumn';
import StringsColumn from './StringsColumn';
import ValueColumn, {IValueColumnDesc} from './ValueColumn';
import ImpositionBoxPlotColumn from './ImpositionBoxPlotColumn';
import LinkColumn from './LinkColumn';
import LinkMapColumn from './LinkMapColumn';
import LinksColumn from './LinksColumn';

export {isSupportType, Category, SupportType, SortByDefault, Categories, toolbar, dialogAddons, categoryOfDesc, categoryOf, IColumnCategory} from './annotations';
export {isMissingValue, isUnknown, FIRST_IS_NAN, FIRST_IS_MISSING, missingGroup} from './missing';
export * from './Group';
export * from './interfaces';
export * from './ICategoricalColumn';
export * from './INumberColumn';
export * from './IDateColumn';
export {ISetColumn, isCategoricalColumn, isCategoricalLikeColumn, isSetColumn, ICategoricalColumn, ICategoricalColumnDesc, ICategoricalDesc, ICategoricalFilter, ICategoricalLikeColumn, ICategory, isCategory} from './ICategoricalColumn';
export {DEFAULT_FORMATTER, INumberDesc, IAdvancedBoxPlotColumn, INumbersColumn, isNumberColumn, IBoxPlotColumn, INumberColumn, INumberFilter, isBoxPlotColumn, isNumbersColumn, EAdvancedSortMethod, ESortMethod} from './INumberColumn';
export {IDateColumn, IDateDesc, IDateFilter, IDateGranularity, IDateGrouper, isDateColumn} from './IDateColumn';
export * from './IArrayColumn';
export * from './MappingFunction';
export {defineColumn} from './models';

export {default as ActionColumn} from './ActionColumn';
export * from './ActionColumn';
Expand Down Expand Up @@ -79,7 +43,7 @@ export {default as MapColumn} from './MapColumn';
export {default as MultiLevelCompositeColumn} from './MultiLevelCompositeColumn';
export * from './NestedColumn';
export {default as NestedColumn} from './NestedColumn';
export {default as NumberColumn, INumberColumnDesc, INumberColumn, isNumberColumn} from './NumberColumn';
export {default as NumberColumn, INumberColumnDesc} from './NumberColumn';
export {default as NumberMapColumn, INumberMapDesc, INumberMapColumnDesc} from './NumberMapColumn';
export {default as NumbersColumn, INumbersDesc, INumbersColumnDesc} from './NumbersColumn';
export {default as OrdinalColumn, ICategoricalNumberColumnDesc} from './OrdinalColumn';
Expand All @@ -102,72 +66,3 @@ export * from './LinkMapColumn';
export {default as LinkMapColumn} from './LinkMapColumn';
export * from './LinksColumn';
export {default as LinksColumn} from './LinksColumn';

/**
* defines a new column type
* @param name
* @param functions
* @returns {CustomColumn}
*/
export function defineColumn<T>(name: string, functions: any = {}): typeof Column {
class CustomColumn extends ValueColumn<T> {
constructor(id: string, desc: IValueColumnDesc<T>, ...args: any[]) {
super(id, desc);
if (typeof (this.init) === 'function') {
this.init(id, desc, ...args);
}
}

init(..._args: any[]) {
// dummy
}
}

CustomColumn.prototype.toString = () => name;
CustomColumn.prototype = Object.assign(CustomColumn.prototype, functions);

return CustomColumn;
}


/**
* a map of all known column types
*/
export function models() {
return {
actions: ActionColumn,
aggregate: AggregateGroupColumn,
annotate: AnnotateColumn,
boolean: BooleanColumn,
booleans: BooleansColumn,
boxplot: BoxPlotColumn,
categorical: CategoricalColumn,
categoricalMap: CategoricalMapColumn,
categoricals: CategoricalsColumn,
date: DateColumn,
dateMap: DatesMapColumn,
dates: DatesColumn,
group: GroupColumn,
hierarchy: HierarchyColumn,
imposition: ImpositionCompositeColumn,
impositionBoxPlot: ImpositionBoxPlotColumn,
impositions: ImpositionCompositesColumn,
reduce: ReduceColumn,
nested: NestedColumn,
number: NumberColumn,
numbers: NumbersColumn,
numberMap: NumberMapColumn,
ordinal: OrdinalColumn,
rank: RankColumn,
script: ScriptColumn,
selection: SelectionColumn,
set: SetColumn,
stack: StackColumn,
string: StringColumn,
stringMap: StringMapColumn,
strings: StringsColumn,
link: LinkColumn,
linkMap: LinkMapColumn,
links: LinksColumn
};
}
49 changes: 48 additions & 1 deletion src/model/internal.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {boxplotBuilder, IAdvancedBoxPlotData} from '../internal';
import {IOrderedGroup, defaultGroup} from './Group';
import {IOrderedGroup, defaultGroup, IndicesArray} from './Group';
import {IDataRow, IGroup, IGroupParent} from './interfaces';
import INumberColumn, {numberCompare} from './INumberColumn';
import {schemeCategory10, schemeSet3} from 'd3-scale-chromatic';
Expand Down Expand Up @@ -113,3 +113,50 @@ export function toCompareGroupValue(rows: ISequence<IDataRow>, col: INumberColum
const vs = b.build();
return <number>vs[sortMethod];
}


/**
* @internal
*/
export function mapIndices<T>(arr: IndicesArray, callback: (value: number, i: number) => T): T[] {
const r: T[] = [];
for (let i = 0; i < arr.length; ++i) {
r.push(callback(arr[i], i));
}
return r;
}

/**
* @internal
*/
export function everyIndices(arr: IndicesArray, callback: (value: number, i: number) => boolean): boolean {
for (let i = 0; i < arr.length; ++i) {
if (!callback(arr[i], i)) {
return false;
}
}
return true;
}

/**
* @internal
*/
export function filterIndices(arr: IndicesArray, callback: (value: number, i: number) => boolean): number[] {
const r: number[] = [];
for (let i = 0; i < arr.length; ++i) {
if (callback(arr[i], i)) {
r.push(arr[i]);
}
}
return r;
}


/**
* @internal
*/
export function forEachIndices(arr: IndicesArray, callback: (value: number, i: number) => void) {
for (let i = 0; i < arr.length; ++i) {
callback(arr[i], i);
}
}
105 changes: 105 additions & 0 deletions src/model/models.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
import ActionColumn from './ActionColumn';
import AggregateGroupColumn from './AggregateGroupColumn';
import AnnotateColumn from './AnnotateColumn';
import BooleanColumn from './BooleanColumn';
import BooleansColumn from './BooleansColumn';
import BoxPlotColumn from './BoxPlotColumn';
import CategoricalColumn from './CategoricalColumn';
import CategoricalMapColumn from './CategoricalMapColumn';
import CategoricalsColumn from './CategoricalsColumn';
import Column from './Column';
import DateColumn from './DateColumn';
import DatesColumn from './DatesColumn';
import DatesMapColumn from './DatesMapColumn';
import GroupColumn from './GroupColumn';
import HierarchyColumn from './HierarchyColumn';
import ImpositionCompositeColumn from './ImpositionCompositeColumn';
import ImpositionCompositesColumn from './ImpositionCompositesColumn';
import NestedColumn from './NestedColumn';
import NumberColumn from './NumberColumn';
import NumberMapColumn from './NumberMapColumn';
import NumbersColumn from './NumbersColumn';
import OrdinalColumn from './OrdinalColumn';
import RankColumn from './RankColumn';
import ReduceColumn from './ReduceColumn';
import ScriptColumn from './ScriptColumn';
import SelectionColumn from './SelectionColumn';
import SetColumn from './SetColumn';
import StackColumn from './StackColumn';
import StringColumn from './StringColumn';
import StringMapColumn from './StringMapColumn';
import StringsColumn from './StringsColumn';
import ValueColumn, {IValueColumnDesc} from './ValueColumn';
import ImpositionBoxPlotColumn from './ImpositionBoxPlotColumn';
import LinkColumn from './LinkColumn';
import LinkMapColumn from './LinkMapColumn';
import LinksColumn from './LinksColumn';

/**
* defines a new column type
* @param name
* @param functions
* @returns {CustomColumn}
*/
export function defineColumn<T>(name: string, functions: any = {}): typeof Column {
class CustomColumn extends ValueColumn<T> {
constructor(id: string, desc: IValueColumnDesc<T>, ...args: any[]) {
super(id, desc);
if (typeof (this.init) === 'function') {
this.init(id, desc, ...args);
}
}

init(..._args: any[]) {
// dummy
}
}

CustomColumn.prototype.toString = () => name;
CustomColumn.prototype = Object.assign(CustomColumn.prototype, functions);

return CustomColumn;
}


/**
* a map of all known column types
*/
export function models() {
return {
actions: ActionColumn,
aggregate: AggregateGroupColumn,
annotate: AnnotateColumn,
boolean: BooleanColumn,
booleans: BooleansColumn,
boxplot: BoxPlotColumn,
categorical: CategoricalColumn,
categoricalMap: CategoricalMapColumn,
categoricals: CategoricalsColumn,
date: DateColumn,
dateMap: DatesMapColumn,
dates: DatesColumn,
group: GroupColumn,
hierarchy: HierarchyColumn,
imposition: ImpositionCompositeColumn,
impositionBoxPlot: ImpositionBoxPlotColumn,
impositions: ImpositionCompositesColumn,
reduce: ReduceColumn,
nested: NestedColumn,
number: NumberColumn,
numbers: NumbersColumn,
numberMap: NumberMapColumn,
ordinal: OrdinalColumn,
rank: RankColumn,
script: ScriptColumn,
selection: SelectionColumn,
set: SetColumn,
stack: StackColumn,
string: StringColumn,
stringMap: StringMapColumn,
strings: StringsColumn,
link: LinkColumn,
linkMap: LinkMapColumn,
links: LinksColumn
};
}
5 changes: 3 additions & 2 deletions src/provider/ADataProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,10 @@ import AEventDispatcher, {IEventListener, suffix, IEventContext} from '../intern
import debounce, {IDebounceContext} from '../internal/debounce';
import {ISequence} from '../internal/interable';
import OrderedSet from '../internal/OrderedSet';
import {Column, Ranking, AggregateGroupColumn, createAggregateDesc, IAggregateGroupColumnDesc, isSupportType, EDirtyReason, RankColumn, createRankDesc, createSelectionDesc, IColumnDesc, IDataRow, IGroup, IndicesArray, IOrderedGroup, ISelectionColumnDesc, models, forEachIndices, everyIndices} from '../model';
import {Column, Ranking, AggregateGroupColumn, createAggregateDesc, IAggregateGroupColumnDesc, isSupportType, EDirtyReason, RankColumn, createRankDesc, createSelectionDesc, IColumnDesc, IDataRow, IGroup, IndicesArray, IOrderedGroup, ISelectionColumnDesc} from '../model';
import {models} from '../model/models';
import {dirty, dirtyCaches, dirtyHeader, dirtyValues} from '../model/Column';
import {toGroupID, unifyParents} from '../model/internal';
import {forEachIndices, everyIndices, toGroupID, unifyParents} from '../model/internal';
import {addColumn, orderChanged, removeColumn} from '../model/Ranking';
import {IColumnDump, IDataProvider, IDataProviderDump, IDataProviderOptions, IRankingDump, SCHEMA_REF, EAggregationState} from './interfaces';
import {exportRanking, IExportOptions, map2Object, object2Map} from './utils';
Expand Down
4 changes: 2 additions & 2 deletions src/provider/LocalDataProvider.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {ISequence, lazySeq} from '../internal/interable';
import Column, {Ranking, defaultGroup, IColumnDesc, ICompareValue, IDataRow, IGroup, IndicesArray, INumberColumn, IOrderedGroup, mapIndices, CompositeColumn} from '../model';
import Column, {Ranking, defaultGroup, IColumnDesc, ICompareValue, IDataRow, IGroup, IndicesArray, INumberColumn, IOrderedGroup, CompositeColumn} from '../model';
import {EDirtyReason} from '../model/Ranking';
import ACommonDataProvider from './ACommonDataProvider';
import ADataProvider from './ADataProvider';
Expand All @@ -10,7 +10,7 @@ import {IEventContext} from '../internal/AEventDispatcher';
import {createIndexArray, sortComplex} from '../internal';
import {DirectRenderTasks} from './DirectRenderTasks';
import {ScheduleRenderTasks} from './ScheduledTasks';
import {joinGroups} from '../model/internal';
import {joinGroups, mapIndices} from '../model/internal';


export interface ILocalDataProviderOptions {
Expand Down
Loading

0 comments on commit 634587a

Please sign in to comment.