Skip to content

Commit

Permalink
feat: Playground filters implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
paveltiunov committed Mar 20, 2019
1 parent be446c5 commit de4315d
Show file tree
Hide file tree
Showing 11 changed files with 505 additions and 106 deletions.
63 changes: 62 additions & 1 deletion packages/cubejs-client-core/dist/cubejs-client-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ require('core-js/modules/es6.array.map');
var ramda = require('ramda');
var Moment = _interopDefault(require('moment'));
var momentRange = _interopDefault(require('moment-range'));
require('core-js/modules/es6.array.is-array');
require('core-js/modules/es6.regexp.split');
require('core-js/modules/es6.function.name');
var _regeneratorRuntime = _interopDefault(require('@babel/runtime/regenerator'));
Expand Down Expand Up @@ -393,6 +394,53 @@ var memberMap = function memberMap(memberArray) {
}));
};

var operators = {
string: [{
name: 'contains',
title: 'contains'
}, {
name: 'notContains',
title: 'does not contain'
}, {
name: 'equals',
title: 'equals'
}, {
name: 'notEquals',
title: 'does not equal'
}, {
name: 'set',
title: 'is set'
}, {
name: 'notSet',
title: 'is not set'
}],
number: [{
name: 'equals',
title: 'equals'
}, {
name: 'notEquals',
title: 'does not equal'
}, {
name: 'set',
title: 'is set'
}, {
name: 'notSet',
title: 'is not set'
}, {
name: 'gt',
title: '>'
}, {
name: 'gte',
title: '>='
}, {
name: 'lt',
title: '<'
}, {
name: 'lte',
title: '<='
}]
};

var Meta =
/*#__PURE__*/
function () {
Expand Down Expand Up @@ -421,6 +469,8 @@ function () {
}, {
key: "resolveMember",
value: function resolveMember(memberName, memberType) {
var _this = this;

var _memberName$split = memberName.split('.'),
_memberName$split2 = _slicedToArray(_memberName$split, 1),
cube = _memberName$split2[0];
Expand All @@ -432,7 +482,12 @@ function () {
};
}

var member = this.cubesMap[cube][memberType][memberName];
var memberTypes = Array.isArray(memberType) ? memberType : [memberType];
var member = memberTypes.map(function (type) {
return _this.cubesMap[cube][type] && _this.cubesMap[cube][type][memberName];
}).find(function (m) {
return m;
});

if (!member) {
return {
Expand All @@ -443,6 +498,12 @@ function () {

return member;
}
}, {
key: "filterOperatorsForMember",
value: function filterOperatorsForMember(memberName, memberType) {
var member = this.resolveMember(memberName, memberType);
return operators[member.type] || operators.string;
}
}]);

return Meta;
Expand Down
68 changes: 64 additions & 4 deletions packages/cubejs-client-core/dist/cubejs-client-core.umd.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: _core.version,
mode: 'global',
mode: _library ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
});
Expand Down Expand Up @@ -1168,10 +1168,10 @@
return capability.promise;
}
});
_export(_export.S + _export.F * (_library || !USE_NATIVE), PROMISE, {
_export(_export.S + _export.F * (!USE_NATIVE), PROMISE, {
// 25.4.4.6 Promise.resolve(x)
resolve: function resolve(x) {
return _promiseResolve(_library && this === Wrapper ? $Promise : this, x);
return _promiseResolve(this, x);
}
});
_export(_export.S + _export.F * !(USE_NATIVE && _iterDetect(function (iter) {
Expand Down Expand Up @@ -14683,6 +14683,53 @@
}));
};

var operators = {
string: [{
name: 'contains',
title: 'contains'
}, {
name: 'notContains',
title: 'does not contain'
}, {
name: 'equals',
title: 'equals'
}, {
name: 'notEquals',
title: 'does not equal'
}, {
name: 'set',
title: 'is set'
}, {
name: 'notSet',
title: 'is not set'
}],
number: [{
name: 'equals',
title: 'equals'
}, {
name: 'notEquals',
title: 'does not equal'
}, {
name: 'set',
title: 'is set'
}, {
name: 'notSet',
title: 'is not set'
}, {
name: 'gt',
title: '>'
}, {
name: 'gte',
title: '>='
}, {
name: 'lt',
title: '<'
}, {
name: 'lte',
title: '<='
}]
};

var Meta =
/*#__PURE__*/
function () {
Expand Down Expand Up @@ -14711,6 +14758,8 @@
}, {
key: "resolveMember",
value: function resolveMember(memberName, memberType) {
var _this = this;

var _memberName$split = memberName.split('.'),
_memberName$split2 = _slicedToArray(_memberName$split, 1),
cube = _memberName$split2[0];
Expand All @@ -14722,7 +14771,12 @@
};
}

var member = this.cubesMap[cube][memberType][memberName];
var memberTypes = Array.isArray(memberType) ? memberType : [memberType];
var member = memberTypes.map(function (type$$1) {
return _this.cubesMap[cube][type$$1] && _this.cubesMap[cube][type$$1][memberName];
}).find(function (m) {
return m;
});

if (!member) {
return {
Expand All @@ -14733,6 +14787,12 @@

return member;
}
}, {
key: "filterOperatorsForMember",
value: function filterOperatorsForMember(memberName, memberType) {
var member = this.resolveMember(memberName, memberType);
return operators[member.type] || operators.string;
}
}]);

return Meta;
Expand Down
33 changes: 31 additions & 2 deletions packages/cubejs-client-core/src/Meta.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,28 @@
import {unnest, fromPairs} from 'ramda';
import { unnest, fromPairs } from 'ramda';

const memberMap = (memberArray) => fromPairs(memberArray.map(m => [m.name, m]));

const operators = {
string: [
{ name: 'contains', title: 'contains' },
{ name: 'notContains', title: 'does not contain' },
{ name: 'equals', title: 'equals' },
{ name: 'notEquals', title: 'does not equal' },
{ name: 'set', title: 'is set' },
{ name: 'notSet', title: 'is not set' }
],
number: [
{ name: 'equals', title: 'equals' },
{ name: 'notEquals', title: 'does not equal' },
{ name: 'set', title: 'is set' },
{ name: 'notSet', title: 'is not set' },
{ name: 'gt', title: '>' },
{ name: 'gte', title: '>=' },
{ name: 'lt', title: '<' },
{ name: 'lte', title: '<=' }
]
};

export default class Meta {
constructor(metaResponse) {
this.meta = metaResponse;
Expand All @@ -22,10 +43,18 @@ export default class Meta {
if (!this.cubesMap[cube]) {
return { title: memberName, error: `Cube not found ${cube} for path '${memberName}'` };
}
const member = this.cubesMap[cube][memberType][memberName];
const memberTypes = Array.isArray(memberType) ? memberType : [memberType];
const member = memberTypes
.map(type => this.cubesMap[cube][type] && this.cubesMap[cube][type][memberName])
.find(m => m);
if (!member) {
return { title: memberName, error: `Path not found '${memberName}'` };
}
return member;
}

filterOperatorsForMember(memberName, memberType) {
const member = this.resolveMember(memberName, memberType);
return operators[member.type] || operators.string;
}
}
4 changes: 2 additions & 2 deletions packages/cubejs-playground/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class App extends Component {
}

render() {
return [
return (
<Layout style={{ height: '100%' }}>
<Header style={{ padding: '0 32px'}}>
<div style={{ float: 'left' }}>
Expand All @@ -36,7 +36,7 @@ class App extends Component {
{this.props.children}
</Content>
</Layout>
];
);
}
}

Expand Down

0 comments on commit de4315d

Please sign in to comment.