Skip to content

Commit

Permalink
Merge pull request #207 from lineupjs/clehner/203_lineupv4_remove_int…
Browse files Browse the repository at this point in the history
…ernal_from_renderers

Export renderer in own namespace
  • Loading branch information
sgratzl committed Apr 1, 2020
2 parents 9d9c5de + 3981229 commit 0d3ab39
Show file tree
Hide file tree
Showing 36 changed files with 287 additions and 190 deletions.
6 changes: 3 additions & 3 deletions src/renderer/ANumbersCellRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {IDataRow, INumbersColumn, EAdvancedSortMethod, IOrderedGroup} from '../model';
import {IRenderContext, IImposer} from './interfaces';
import {IRenderContext, IImposer, ICellRenderer, IGroupCellRenderer} from './interfaces';
import {renderMissingCanvas, renderMissingDOM} from './missing';
import {ISequence, boxplotBuilder, getSortLabel} from '../internal';

Expand Down Expand Up @@ -46,7 +46,7 @@ export abstract class ANumbersCellRenderer {
return {normalized, raw, row};
}

create(col: INumbersColumn, context: IRenderContext, imposer?: IImposer) {
create(col: INumbersColumn, context: IRenderContext, imposer?: IImposer): ICellRenderer {
const width = context.colWidth(col);
const {templateRow, render, update, clazz} = this.createContext(col, context, imposer);
return {
Expand All @@ -66,7 +66,7 @@ export abstract class ANumbersCellRenderer {
};
}

createGroup(col: INumbersColumn, context: IRenderContext, imposer?: IImposer) {
createGroup(col: INumbersColumn, context: IRenderContext, imposer?: IImposer): IGroupCellRenderer {
const {templateRow, update, clazz} = this.createContext(col, context, imposer);
return {
template: `<div class="${clazz}">${templateRow}</div>`,
Expand Down
10 changes: 5 additions & 5 deletions src/renderer/ActionRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import {IDataRow, IOrderedGroup, ActionColumn, Column} from '../model';
import {IRenderContext, ERenderMode, ICellRendererFactory} from './interfaces';
import {IRenderContext, ERenderMode, ICellRendererFactory, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {forEachChild, noRenderer} from './utils';
import {cssClass} from '../styles';

/** @internal */
export default class ActionRenderer implements ICellRendererFactory {
readonly title = 'Default';

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return col instanceof ActionColumn && mode !== ERenderMode.SUMMARY;
}

create(col: ActionColumn) {
create(col: ActionColumn): ICellRenderer {
const actions = col.actions;
return {
template: `<div class="${cssClass('actions')} ${cssClass('hover-only')}">${actions.map((a) => `<span title='${a.name}' class='${a.className || ''}'>${a.icon || ''}</span>`).join('')}</div>`,
Expand All @@ -27,7 +27,7 @@ export default class ActionRenderer implements ICellRendererFactory {
};
}

createGroup(col: ActionColumn, context: IRenderContext) {
createGroup(col: ActionColumn, context: IRenderContext): IGroupCellRenderer {
const actions = col.groupActions;
return {
template: `<div class="${cssClass('actions')} ${cssClass('hover-only')}">${actions.map((a) => `<span title='${a.name}' class='${a.className || ''}'>${a.icon || ''}</span>`).join('')}</div>`,
Expand All @@ -48,7 +48,7 @@ export default class ActionRenderer implements ICellRendererFactory {
};
}

createSummary() {
createSummary(): ISummaryRenderer {
return noRenderer;
}
}
12 changes: 6 additions & 6 deletions src/renderer/AggregateGroupRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {IDataRow, Column, AggregateGroupColumn, EAggregationState, IOrderedGroup, IGroupParent, IGroup, defaultGroup} from '../model';
import {AGGREGATE, CANVAS_HEIGHT, cssClass} from '../styles';
import {IRenderContext, ICellRendererFactory} from './interfaces';
import {IRenderContext, ICellRendererFactory, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {IDataProvider} from '../provider';
import {groupParents, toItemMeta, isAlwaysShowingGroupStrategy, hasTopNStrategy, isSummaryGroup} from '../provider/internal';
import {clear} from '../internal';
Expand Down Expand Up @@ -135,13 +135,13 @@ function isDummyGroup(group: IGroup) {

/** @internal */
export default class AggregateGroupRenderer implements ICellRendererFactory {
readonly title = 'Default';
readonly title: string = 'Default';

canRender(col: Column) {
canRender(col: Column): boolean {
return col instanceof AggregateGroupColumn;
}

create(col: AggregateGroupColumn, context: IRenderContext) {
create(col: AggregateGroupColumn, context: IRenderContext): ICellRenderer {
return {
template: `<div></div>`,
update(node: HTMLElement, _row: IDataRow, i: number, group: IOrderedGroup) {
Expand All @@ -165,7 +165,7 @@ export default class AggregateGroupRenderer implements ICellRendererFactory {
};
}

createGroup(col: AggregateGroupColumn, context: IRenderContext) {
createGroup(col: AggregateGroupColumn, context: IRenderContext): IGroupCellRenderer {
return {
template: `<div><div class="${cssClass('agg-level')}"></div></div>`,
update(node: HTMLElement, group: IOrderedGroup) {
Expand All @@ -174,7 +174,7 @@ export default class AggregateGroupRenderer implements ICellRendererFactory {
};
}

createSummary(col: AggregateGroupColumn, context: IRenderContext) {
createSummary(col: AggregateGroupColumn, context: IRenderContext): ISummaryRenderer {
return {
template: `<div></div>`,
update: (node: HTMLElement) => {
Expand Down
5 changes: 3 additions & 2 deletions src/renderer/AnnotationRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import {IDataRow, AnnotateColumn, Column} from '../model';
import StringCellRenderer from './StringCellRenderer';
import {cssClass} from '../styles';
import {ICellRenderer} from './interfaces';

/** @internal */
export default class AnnotationRenderer extends StringCellRenderer {
readonly title = 'Default';
readonly title: string = 'Default';

canRender(col: Column) {
return super.canRender(col) && col instanceof AnnotateColumn;
}

create(col: AnnotateColumn) {
create(col: AnnotateColumn): ICellRenderer {
return {
template: `<div>
<span></span>
Expand Down
12 changes: 6 additions & 6 deletions src/renderer/BarCellRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import {Column, isNumbersColumn, IDataRow, INumberColumn, isNumberColumn, DEFAUL
import {setText, adaptDynamicColorToBgColor, noRenderer} from './utils';
import {CANVAS_HEIGHT, cssClass} from '../styles';
import {colorOf} from './impose';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer} from './interfaces';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer, IGroupCellRenderer, ISummaryRenderer, ICellRenderer} from './interfaces';
import {renderMissingCanvas, renderMissingDOM} from './missing';


/** @internal */
export default class BarCellRenderer implements ICellRendererFactory {
readonly title = 'Bar';
readonly title: string = 'Bar';

/**
* flag to always render the value
Expand All @@ -19,11 +19,11 @@ export default class BarCellRenderer implements ICellRendererFactory {
constructor(private readonly renderValue: boolean = false) {
}

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return mode === ERenderMode.CELL && isNumberColumn(col) && !isNumbersColumn(col);
}

create(col: INumberColumn, context: IRenderContext, imposer?: IImposer) {
create(col: INumberColumn, context: IRenderContext, imposer?: IImposer): ICellRenderer {
const width = context.colWidth(col);
return {
template: `<div title="">
Expand Down Expand Up @@ -60,11 +60,11 @@ export default class BarCellRenderer implements ICellRendererFactory {
};
}

createGroup() {
createGroup(): IGroupCellRenderer {
return noRenderer;
}

createSummary() {
createSummary(): ISummaryRenderer {
return noRenderer;
}
}
8 changes: 4 additions & 4 deletions src/renderer/BooleanCellRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
import {Column, BooleanColumn} from '../model';
import {DefaultCellRenderer} from './DefaultCellRenderer';
import {ERenderMode} from './interfaces';
import {ERenderMode, ICellRenderer} from './interfaces';
import {cssClass} from '../styles';

/** @internal */
export default class BooleanCellRenderer extends DefaultCellRenderer {
readonly title = 'Default';
readonly title: string = 'Default';

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return col instanceof BooleanColumn && mode === ERenderMode.CELL;
}

create(col: Column) {
create(col: Column): ICellRenderer {
const r = super.create(col);
(<any>r).template = `<div class="${cssClass('center')}"> </div>`;
return r;
Expand Down
13 changes: 6 additions & 7 deletions src/renderer/BoxplotCellRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {IBoxPlotData, IAdvancedBoxPlotData, round} from '../internal';
import {NumberColumn, IBoxPlotColumn, INumberColumn, isBoxPlotColumn, Column, IDataRow, isNumberColumn, isMapAbleColumn, IOrderedGroup} from '../model';
import {BOX_PLOT, CANVAS_HEIGHT, DOT, cssClass} from '../styles';
import {colorOf} from './impose';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer} from './interfaces';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {renderMissingCanvas} from './missing';
import {tasksAll} from '../provider';

Expand All @@ -24,7 +24,6 @@ const MAPPED_BOXPLOT = `<div title="">
</div>`;



/** @internal */
export function computeLabel(col: INumberColumn, v: IBoxPlotData | IAdvancedBoxPlotData) {
if (v == null) {
Expand All @@ -37,13 +36,13 @@ export function computeLabel(col: INumberColumn, v: IBoxPlotData | IAdvancedBoxP

/** @internal */
export default class BoxplotCellRenderer implements ICellRendererFactory {
readonly title = 'Box Plot';
readonly title: string = 'Box Plot';

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return (isBoxPlotColumn(col) && mode === ERenderMode.CELL || (isNumberColumn(col) && mode !== ERenderMode.CELL));
}

create(col: IBoxPlotColumn, context: IRenderContext, imposer?: IImposer) {
create(col: IBoxPlotColumn, context: IRenderContext, imposer?: IImposer): ICellRenderer {
const sortMethod = <keyof IBoxPlotData>col.getSortMethod();
const sortedByMe = col.isSortedByMe().asc !== undefined;
const width = context.colWidth(col);
Expand Down Expand Up @@ -86,7 +85,7 @@ export default class BoxplotCellRenderer implements ICellRendererFactory {
};
}

createGroup(col: INumberColumn, context: IRenderContext, imposer?: IImposer) {
createGroup(col: INumberColumn, context: IRenderContext, imposer?: IImposer): IGroupCellRenderer {
const sort = (col instanceof NumberColumn && col.isGroupSortedByMe().asc !== undefined) ? col.getSortMethod() : '';
return {
template: BOXPLOT,
Expand All @@ -106,7 +105,7 @@ export default class BoxplotCellRenderer implements ICellRendererFactory {
};
}

createSummary(col: INumberColumn, context: IRenderContext, _interactive: boolean, imposer?: IImposer) {
createSummary(col: INumberColumn, context: IRenderContext, _interactive: boolean, imposer?: IImposer): ISummaryRenderer {
return {
template: isMapAbleColumn(col) ? MAPPED_BOXPLOT : BOXPLOT,
update: (n: HTMLElement) => {
Expand Down
12 changes: 6 additions & 6 deletions src/renderer/BrightnessCellRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {hsl} from 'd3-color';
import {Column, isNumbersColumn, IDataRow, INumberColumn, isNumberColumn, isMapAbleColumn, DEFAULT_COLOR, SolidColorFunction} from '../model';
import {CANVAS_HEIGHT, cssClass} from '../styles';
import {colorOf} from './impose';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer} from './interfaces';
import {IRenderContext, ERenderMode, ICellRendererFactory, IImposer, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {renderMissingCanvas, renderMissingDOM} from './missing';
import {noRenderer, setText} from './utils';

Expand Down Expand Up @@ -31,13 +31,13 @@ export function toHeatMapColor(v: number | null, row: IDataRow, col: INumberColu

/** @internal */
export default class BrightnessCellRenderer implements ICellRendererFactory {
readonly title = 'Brightness';
readonly title: string = 'Brightness';

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return isNumberColumn(col) && mode === ERenderMode.CELL && !isNumbersColumn(col);
}

create(col: INumberColumn, context: IRenderContext, imposer?: IImposer) {
create(col: INumberColumn, context: IRenderContext, imposer?: IImposer): ICellRenderer {
const width = context.colWidth(col);
return {
template: `<div title="">
Expand All @@ -59,11 +59,11 @@ export default class BrightnessCellRenderer implements ICellRendererFactory {
};
}

createGroup() {
createGroup(): IGroupCellRenderer {
return noRenderer;
}

createSummary() {
createSummary(): ISummaryRenderer {
return noRenderer;
}
}
14 changes: 7 additions & 7 deletions src/renderer/CategoricalCellRenderer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {ICategoricalStatistics, round} from '../internal';
import {OrdinalColumn, isCategoricalColumn, isCategoricalLikeColumn, ICategoricalLikeColumn, ICategory, Column, CategoricalColumn, ICategoricalColumn, IDataRow, IOrderedGroup, SetColumn} from '../model';
import {CANVAS_HEIGHT, cssClass, FILTERED_OPACITY} from '../styles';
import {filterMissingNumberMarkup, updateFilterMissingNumberMarkup} from '../ui/missing';
import {IRenderContext, ICellRendererFactory, ERenderMode} from './interfaces';
import {IRenderContext, ICellRendererFactory, ERenderMode, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {renderMissingCanvas, renderMissingDOM} from './missing';
import {setText, wideEnough, forEach} from './utils';
import {color} from 'd3-color';
Expand All @@ -13,14 +13,14 @@ export declare type HasCategoricalFilter = CategoricalColumn | OrdinalColumn | S

/** @internal */
export default class CategoricalCellRenderer implements ICellRendererFactory {
readonly title = 'Color';
readonly groupTitle = 'Histogram';
readonly title: string = 'Color';
readonly groupTitle: string = 'Histogram';

canRender(col: Column, mode: ERenderMode) {
canRender(col: Column, mode: ERenderMode): boolean {
return isCategoricalLikeColumn(col) && (mode !== ERenderMode.CELL || isCategoricalColumn(col));
}

create(col: ICategoricalColumn, context: IRenderContext) {
create(col: ICategoricalColumn, context: IRenderContext): ICellRenderer {
const width = context.colWidth(col);
return {
template: `<div>
Expand All @@ -43,7 +43,7 @@ export default class CategoricalCellRenderer implements ICellRendererFactory {
};
}

createGroup(col: ICategoricalLikeColumn, context: IRenderContext) {
createGroup(col: ICategoricalLikeColumn, context: IRenderContext): IGroupCellRenderer {
const {template, update} = hist(col, false);
return {
template: `${template}</div>`,
Expand All @@ -59,7 +59,7 @@ export default class CategoricalCellRenderer implements ICellRendererFactory {
};
}

createSummary(col: ICategoricalLikeColumn, context: IRenderContext, interactive: boolean) {
createSummary(col: ICategoricalLikeColumn, context: IRenderContext, interactive: boolean): ISummaryRenderer {
return (col instanceof CategoricalColumn || col instanceof OrdinalColumn || col instanceof SetColumn) ? interactiveSummary(col, context, interactive) : staticSummary(col, context, interactive);
}
}
Expand Down
12 changes: 6 additions & 6 deletions src/renderer/CategoricalHeatmapCellRenderer.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import {Column, ICategoricalsColumn, ICategory, IDataRow, IOrderedGroup, isCategoricalsColumn} from '../model';
import {toMostFrequentCategoricals} from '../model/internalCategorical';
import {CANVAS_HEIGHT, cssClass} from '../styles';
import {ICellRendererFactory, IRenderContext} from './interfaces';
import {ICellRendererFactory, IRenderContext, ICellRenderer, IGroupCellRenderer, ISummaryRenderer} from './interfaces';
import {renderMissingDOM, renderMissingValue} from './missing';
import {noop, wideEnough} from './utils';
import {GUESSED_ROW_HEIGHT} from '../constants';

/** @internal */
export default class CategoricalHeatmapCellRenderer implements ICellRendererFactory {
readonly title = 'Heatmap';
readonly title: string = 'Heatmap';

canRender(col: Column) {
canRender(col: Column): boolean {
return isCategoricalsColumn(col) && Boolean(col.dataLength);
}

Expand Down Expand Up @@ -41,7 +41,7 @@ export default class CategoricalHeatmapCellRenderer implements ICellRendererFact
};
}

create(col: ICategoricalsColumn, context: IRenderContext) {
create(col: ICategoricalsColumn, context: IRenderContext): ICellRenderer {
const {template, render, mover, width} = this.createContext(col, context);

return {
Expand All @@ -64,7 +64,7 @@ export default class CategoricalHeatmapCellRenderer implements ICellRendererFact
};
}

createGroup(col: ICategoricalsColumn, context: IRenderContext) {
createGroup(col: ICategoricalsColumn, context: IRenderContext): IGroupCellRenderer {
const {template, render, mover, width} = this.createContext(col, context);

return {
Expand All @@ -85,7 +85,7 @@ export default class CategoricalHeatmapCellRenderer implements ICellRendererFact
};
}

createSummary(col: ICategoricalsColumn) {
createSummary(col: ICategoricalsColumn): ISummaryRenderer {
let labels = col.labels.slice();
while (labels.length > 0 && !wideEnough(col, labels.length)) {
labels = labels.filter((_, i) => i % 2 === 0); // even
Expand Down
Loading

0 comments on commit 0d3ab39

Please sign in to comment.