Skip to content

Commit

Permalink
dynamic fitlers work
Browse files Browse the repository at this point in the history
  • Loading branch information
vogievetsky committed Feb 3, 2016
1 parent 8eff9c9 commit 68cd28a
Show file tree
Hide file tree
Showing 37 changed files with 449 additions and 367 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ Running `gulp watch` will build the project and start all the automated watchers

**Recent improvements:**

- Relative filters
- All new introspection code
- Better comparison behavior and legend interaction
- Support for query time lookups (ex. `$language.lookup('wikipedia-language-lookup')`)
Expand Down
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@
"debug": "2.2.0",
"express": "4.13.4",
"express-handlebars": "3.0.0",
"fs-promise": "0.3.1",
"fs-promise": "0.4.1",
"immutable": "3.7.6",
"immutable-class": "0.3.9",
"js-yaml": "3.5.2",
"lz-string": "1.4.4",
"morgan": "1.6.1",
"nopt": "3.0.6",
"numeral": "1.5.3",
"plywood": "0.8.4",
"plywood": "0.8.6",
"plywood-druid-requester": "1.2.6",
"plywood-mysql-requester": "1.1.5",
"q": "1.4.1",
Expand All @@ -55,7 +55,7 @@
"fs-extra": "0.26.5",
"gulp": "3.9.0",
"gulp-watch": "4.3.5",
"jsdom": "8.0.1",
"jsdom": "8.0.2",
"laborer": "2.4.6",
"mkdirp": "0.5.1",
"mocha": "2.4.5",
Expand Down
2 changes: 1 addition & 1 deletion script/mkcomp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ require('./${name}.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
// import { ... } from '../../config/constants';
import { SvgIcon } from '../svg-icon/svg-icon';
Expand Down
2 changes: 1 addition & 1 deletion src/client/components/clearable-input/clearable-input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ require('./clearable-input.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
// import { ... } from '../../config/constants';
import { SvgIcon } from '../svg-icon/svg-icon';

Expand Down
8 changes: 4 additions & 4 deletions src/client/components/cube-view/cube-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ require('./cube-view.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { List } from 'immutable';
import { TimeRange } from 'plywood';
import { Expression } from 'plywood';
import { DragManager } from '../../utils/drag-manager/drag-manager';
import { Colors, Clicker, DataSource, Dimension, Essence, Filter, Stage, Manifest, Measure,
SplitCombine, Splits, TimePreset, VisStrategy, VisualizationProps} from '../../../common/models/index';
SplitCombine, Splits, VisStrategy, VisualizationProps} from '../../../common/models/index';
// import { ... } from '../../config/constants';

import { DimensionMeasurePanel } from '../dimension-measure-panel/dimension-measure-panel';
Expand Down Expand Up @@ -61,9 +61,9 @@ export class CubeView extends React.Component<CubeViewProps, CubeViewState> {
if (colors) essence = essence.changeColors(colors);
this.setState({ essence });
},
changeTimeRange: (timeRange: TimeRange) => {
changeTimeCheck: (check: Expression) => {
var { essence } = this.state;
this.setState({ essence: essence.changeTimeRange(timeRange) });
this.setState({ essence: essence.changeTimeCheck(check) });
},
changeSplits: (splits: Splits, strategy: VisStrategy, colors?: Colors) => {
var { essence } = this.state;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require('./dimension-measure-panel.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
// import { ... } from '../../config/constants';
// import { SvgIcon } from '../svg-icon/svg-icon';
import { DimensionListTile } from '../dimension-list-tile/dimension-list-tile';
Expand Down
2 changes: 1 addition & 1 deletion src/client/components/dropdown/dropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { SvgIcon } from '../svg-icon/svg-icon';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
import { isInside, escapeKey } from '../../utils/dom/dom';

function simpleEqual(item1: any, item2: any): boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as ReactDOM from 'react-dom';
import { SvgIcon } from '../svg-icon/svg-icon';
import { $, Expression, Executor, Dataset } from 'plywood';
import { CORE_ITEM_WIDTH, CORE_ITEM_GAP } from '../../config/constants';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
// import { SomeComp } from '../some-comp/some-comp';

export interface FancyDragIndicatorProps extends React.Props<any> {
Expand Down
2 changes: 1 addition & 1 deletion src/client/components/filter-menu/filter-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { List } from 'immutable';
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
import { BubbleMenu } from '../bubble-menu/bubble-menu';


Expand Down
16 changes: 8 additions & 8 deletions src/client/components/filter-tile/filter-tile.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as Q from 'q';
import { Timezone, Duration, hour, day, week } from 'chronoshift';
import { $, Expression, InAction, Executor, Dataset } from 'plywood';
import { BAR_TITLE_WIDTH, CORE_ITEM_WIDTH, CORE_ITEM_GAP } from '../../config/constants';
import { Stage, Clicker, Essence, DataSource, Filter, FilterClause, Dimension, Measure, TimePreset} from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, FilterClause, Dimension, Measure} from '../../../common/models/index';
import { calculateDragPosition, DragPosition } from '../../../common/utils/general/general';
import { formatTimeRange, DisplayYear } from '../../utils/date/date';
import { findParentWithClass, setDragGhost, uniqueId, isInside, transformStyle, getXFromEvent } from '../../utils/dom/dom';
Expand All @@ -28,20 +28,20 @@ export interface ItemBlank {
clause?: FilterClause;
}

function formatLabel(dimension: Dimension, clause: FilterClause, timezone: Timezone): string {
function formatLabel(dimension: Dimension, clause: FilterClause, essence: Essence): string {
var label = dimension.title;

switch (dimension.kind) {
case 'string':
case 'boolean':
var setElements = clause.values.elements;
var setElements = clause.getValues().elements;
label += setElements.length > 1 ? ` (${setElements.length})` : `: ${setElements[0]}`;
break;

case 'time':
var timeRangeLiteral = clause.values.elements[0];
if (!timeRangeLiteral) return '?';
label = formatTimeRange(timeRangeLiteral, timezone, DisplayYear.IF_DIFF);
var timeCheck = clause.check;
var timeRange = essence.evaluateCheck(timeCheck);
label = formatTimeRange(timeRange, essence.timezone, DisplayYear.IF_DIFF);
break;

default:
Expand Down Expand Up @@ -479,7 +479,7 @@ export class FilterTile extends React.Component<FilterTileProps, FilterTileState
onClick={clicker.acceptHighlight.bind(clicker)}
style={style}
>
<div className="reading">{formatLabel(dimension, clause, timezone)}</div>
<div className="reading">{formatLabel(dimension, clause, essence)}</div>
{this.renderRemoveButton(itemBlank)}
</div>;
}
Expand All @@ -494,7 +494,7 @@ export class FilterTile extends React.Component<FilterTileProps, FilterTileState
onDragStart={this.dragStart.bind(this, dimension, clause)}
style={style}
>
<div className="reading">{formatLabel(dimension, clause, timezone)}</div>
<div className="reading">{formatLabel(dimension, clause, essence)}</div>
{this.renderRemoveButton(itemBlank)}
</div>;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import * as ReactDOM from 'react-dom';
import { SvgIcon } from '../svg-icon/svg-icon';
import { $, Expression, Executor, Dataset } from 'plywood';
// import { ... } from '../../config/constants';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
// import { SomeComp } from '../some-comp/some-comp';

function stopEvent(e: React.MouseEvent): void {
Expand Down
6 changes: 3 additions & 3 deletions src/client/components/highlighter/highlighter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require('./highlighter.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { Timezone, Duration } from 'chronoshift';
import { $, Expression, Executor, Dataset, TimeRange, Set } from 'plywood';
import { $, r, Expression, Executor, Dataset, TimeRange, Set } from 'plywood';
import { Clicker, Essence, Filter, FilterClause, Dimension, Measure } from '../../../common/models/index';
import { isInside, escapeKey, getXFromEvent } from '../../utils/dom/dom';
import { HighlightControls } from '../highlight-controls/highlight-controls';
Expand Down Expand Up @@ -109,7 +109,7 @@ export class Highlighter extends React.Component<HighlighterProps, HighlighterSt
highlightId,
Filter.fromClause(new FilterClause({
expression: timeDimension.expression,
values: Set.fromJS([timeRange])
check: r(timeRange)
}))
);
}
Expand All @@ -127,7 +127,7 @@ export class Highlighter extends React.Component<HighlighterProps, HighlighterSt
var shownTimeRange = pseudoHighlight;
if (!shownTimeRange) {
if (essence.highlightOn(highlightId)) {
shownTimeRange = essence.getSingleHighlightValue().elements[0];
shownTimeRange = essence.getSingleHighlightSet().elements[0];
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/client/components/hover-bubble/hover-bubble.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require('./hover-bubble.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset, Datum } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
import { TIME_SEGMENT } from '../../config/constants';
import { formatTimeRange, DisplayYear } from '../../utils/date/date';
import { BodyPortal } from '../body-portal/body-portal';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require('./hover-multi-bubble.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset, Datum } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
import { SEGMENT, TIME_SEGMENT } from '../../config/constants';
import { formatTimeRange, DisplayYear } from '../../utils/date/date';
import { BodyPortal } from '../body-portal/body-portal';
Expand Down
2 changes: 1 addition & 1 deletion src/client/components/modal/modal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ require('./modal.css');
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';
import { isInside, escapeKey, uniqueId } from '../../utils/dom/dom';
import { BodyPortal } from '../body-portal/body-portal';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { List } from 'immutable';
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { ply, $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, SortOn, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, SortOn } from '../../../common/models/index';
// import { ... } from '../../config/constants';
import { Dropdown, DropdownProps } from '../dropdown/dropdown';

Expand Down
2 changes: 1 addition & 1 deletion src/client/components/preview-menu/preview-menu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { SvgIcon } from '../svg-icon/svg-icon';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, VisStrategy, DataSource, Filter, Dimension, Measure, TimePreset, SplitCombine } from '../../../common/models/index';
import { Stage, Clicker, Essence, VisStrategy, DataSource, Filter, Dimension, Measure, SplitCombine } from '../../../common/models/index';
import { BubbleMenu } from '../bubble-menu/bubble-menu';
//import { MenuHeader } from '../menu-header/menu-header';
//import { MenuTable } from '../menu-table/menu-table';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ export class StringFilterMenu extends React.Component<StringFilterMenuProps, Str
if (selectedValues.size()) {
var clause = new FilterClause({
expression: dimension.expression,
values: selectedValues
check: r(selectedValues)
});
if (insertPosition !== null) {
return filter.insertByIndex(insertPosition, clause);
Expand Down
2 changes: 1 addition & 1 deletion src/client/components/svg-icon/svg-icon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { List } from 'immutable';
import * as React from 'react';
import * as ReactDOM from 'react-dom';
import { $, Expression, Executor, Dataset } from 'plywood';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure, TimePreset } from '../../../common/models/index';
import { Stage, Clicker, Essence, DataSource, Filter, Dimension, Measure } from '../../../common/models/index';

// Inspired by: https://gist.github.com/MoOx/1eb30eac43b2114de73a

Expand Down
Loading

0 comments on commit 68cd28a

Please sign in to comment.