Skip to content
This repository has been archived by the owner on Dec 10, 2021. It is now read-only.

Commit

Permalink
feat: add getter
Browse files Browse the repository at this point in the history
  • Loading branch information
kristw committed Aug 15, 2019
1 parent 339be01 commit 666bd61
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 3 deletions.
3 changes: 2 additions & 1 deletion packages/superset-ui-encodeable/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@
"private": true,
"dependencies": {
"vega": "^5.4.0",
"vega-lite": "^3.4.0"
"vega-lite": "^3.4.0",
"lodash": "^4.17.15"
},
"peerDependencies": {
"@superset-ui/time-format": "^0.11.14",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@ import { ChannelDef } from '../types/ChannelDef';
import { isTypedFieldDef } from '../typeGuards/ChannelDef';
import fallbackFormatter from './fallbackFormatter';
import createFormatterFromFieldTypeAndFormat from './createFormatterFromFieldTypeAndFormat';
import { Value } from '../types/VegaLite';

export default function createFormatterFromChannelDef<V extends Value>(definition: ChannelDef<V>) {
export default function createFormatterFromChannelDef(definition: ChannelDef) {
if (isTypedFieldDef(definition)) {
const { type, format = '' } = definition;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { get } from 'lodash/fp';
import identity from '../utils/identity';
import { ChannelDef } from '../types/ChannelDef';
import { isValueDef } from '../typeGuards/ChannelDef';

export default function createGetterFromChannelDef(definition: ChannelDef): (x?: any) => any {
if (isValueDef(definition)) {
return () => definition.value;
} else if (typeof definition.field !== 'undefined') {
return get(definition.field);
}

return identity;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import createGetterFromChannelDef from '../../src/parsers/createGetterFromChannelDef';

describe('createGetterFromChannelDef(definition)', () => {
it('handles ValueDef', () => {
const getter = createGetterFromChannelDef({ value: 1 });
expect(getter()).toBe(1);
});
it('handleFieldDef', () => {
const getter = createGetterFromChannelDef({ field: 'cost' });
expect(getter({ cost: 10 })).toBe(10);
});
it('handleFieldDef with nested field', () => {
const getter = createGetterFromChannelDef({ field: 'fuel.cost' });
expect(getter({ fuel: { cost: 10 } })).toBe(10);
});
it('otherwise return identity', () => {
// @ts-ignore
const getter = createGetterFromChannelDef({});
expect(getter(300)).toBe(300);
});
});

0 comments on commit 666bd61

Please sign in to comment.