dotdata_widgets 0.0.29 → 0.0.121

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/index.js +3 -3
  2. package/dist/index.js.map +1 -1
  3. package/lib/components/column-source-type-icons/index.js +13 -1
  4. package/lib/components/column-source-type-icons/source-type-biginteger.js +14 -0
  5. package/lib/components/column-source-type-icons/source-type-boolean.js +14 -0
  6. package/lib/components/column-source-type-icons/source-type-date.js +14 -0
  7. package/lib/components/column-source-type-icons/source-type-double.js +16 -0
  8. package/lib/components/column-source-type-icons/source-type-float.js +14 -0
  9. package/lib/components/column-source-type-icons/source-type-integer.js +14 -0
  10. package/lib/components/column-source-type-icons/source-type-long.js +16 -0
  11. package/lib/components/column-source-type-icons/source-type-short.js +16 -0
  12. package/lib/components/column-source-type-icons/source-type-string.js +14 -0
  13. package/lib/components/column-source-type-icons/source-type-struct.js +16 -0
  14. package/lib/components/column-source-type-icons/source-type-timestamp.js +14 -0
  15. package/lib/components/column-source-type-icons/source-type-unknown.js +16 -0
  16. package/lib/components/column-source-type-icons/source-type-vectorudt.js +16 -0
  17. package/lib/feature/feature-user-explanation/{FeatureUserExplanation.js → FeatureUserExplanationEditor.js} +4 -4
  18. package/lib/feature/feature-user-explanation/index.js +1 -1
  19. package/lib/feature-descriptor/feature-descriptor-editor/AggregationEditor.js +18 -19
  20. package/lib/feature-descriptor/feature-descriptor-editor/FilterEditor.js +56 -36
  21. package/lib/feature-descriptor/feature-descriptor-editor/JoinEditor.js +7 -1
  22. package/lib/feature-descriptor/feature-descriptor-editor/components/EditorTemplateRenderer.js +6 -3
  23. package/lib/feature-descriptor/feature-descriptor-editor/components/EditorWrapper.js +19 -0
  24. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ChipField.js +6 -2
  25. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/ColumnField.js +25 -16
  26. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/NumberField.js +6 -2
  27. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/StringField.js +6 -2
  28. package/lib/feature-descriptor/feature-descriptor-editor/components/field-widgets/TableColumnField.js +5 -1
  29. package/lib/feature-descriptor/feature-descriptor-editor/components/filter/FilterTableColumnInlineEditor.js +13 -0
  30. package/lib/feature-descriptor/feature-descriptor-editor/components/filter/index.js +1 -0
  31. package/lib/feature-descriptor/feature-descriptor-editor/components/index.js +1 -0
  32. package/lib/feature-descriptor/feature-descriptor-editor/components/join/JoinConditionEditor.js +25 -30
  33. package/lib/feature-descriptor/feature-descriptor-editor/context/feature-descriptor-editor.js +1 -13
  34. package/lib/feature-descriptor/feature-descriptor-editor/models/aggregation-draft.js +1 -3
  35. package/lib/feature-descriptor/feature-descriptor-editor/models/filter-draft.js +84 -50
  36. package/lib/feature-descriptor/feature-exploration-path/exploration-path-header.js +0 -4
  37. package/lib/models/column/column.js +10 -16
  38. package/lib/models/column/table-columns.js +0 -13
  39. package/lib/models/feature-descriptor/fd_data/aggregation.js +0 -2
  40. package/lib/models/feature-descriptor/fd_data/filter.js +1 -14
  41. package/lib/models/feature-descriptor/fd_data/join.js +1 -8
  42. package/lib/widgets/feature-leaderboard/FeatureLeaderboardOverview.js +2 -2
  43. package/lib/widgets/feature-leaderboard/FeatureLeaderboardView.js +28 -28
  44. package/lib/widgets/feature-leaderboard/components/{LeaderboardFeatureLikes.js → FeatureLeaderboardFeatureLikes.js} +4 -4
  45. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryDrawer.js +10 -47
  46. package/lib/widgets/feature-leaderboard/leaderboard-entry/feature-leaderboard-entry-drawer-header/FeatureLeaderboardEntryActions.js +39 -0
  47. package/lib/widgets/feature-leaderboard/leaderboard-entry/feature-leaderboard-entry-drawer-header/FeatureLeaderboardEntryDrawerHeader.js +35 -0
  48. package/lib/widgets/feature-leaderboard/leaderboard-entry/feature-leaderboard-entry-drawer-header/FeatureLeaderboardEntryExplanation.js +34 -0
  49. package/lib/widgets/feature-leaderboard/leaderboard-entry/feature-leaderboard-entry-drawer-header/index.js +18 -0
  50. package/package.json +2 -1
  51. package/lib/components/column-source-type-icons/source-type-int.js +0 -16
  52. package/lib/models/feature-descriptor/fd_data/utils.js +0 -25
  53. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardEntryHeader.js +0 -15
  54. package/lib/widgets/feature-leaderboard/leaderboard-entry/FeatureLeaderboardUserExplanation.js +0 -28
@@ -10,29 +10,38 @@ const column_1 = require("../../../../models/column");
10
10
  const _utils_1 = require("../../../../utils");
11
11
  const column_source_type_icons_1 = require("../../../../components/column-source-type-icons");
12
12
  const _InlineEditorField_1 = require("./_InlineEditorField");
13
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
14
- // @ts-ignore
15
13
  const sourceTypeIcon = {
16
- [column_1.Column.SourceType.Integer]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
17
- [column_1.Column.SourceType.Bigint]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
18
- [column_1.Column.SourceType.Double]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
19
- [column_1.Column.SourceType.String]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
20
- [column_1.Column.SourceType.Boolean]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
21
- [column_1.Column.SourceType.Date]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
22
- [column_1.Column.SourceType.Timestamp]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInt, { size: 20 }),
14
+ [column_1.Column.SourceType.Boolean]: react_1.default.createElement(column_source_type_icons_1.SourceTypeBoolean, { size: 20 }),
15
+ [column_1.Column.SourceType.Date]: react_1.default.createElement(column_source_type_icons_1.SourceTypeDate, { size: 20 }),
16
+ [column_1.Column.SourceType.Double]: react_1.default.createElement(column_source_type_icons_1.SourceTypeDouble, { size: 20 }),
17
+ [column_1.Column.SourceType.Float]: react_1.default.createElement(column_source_type_icons_1.SourceTypeFloat, { size: 20 }),
18
+ [column_1.Column.SourceType.Integer]: react_1.default.createElement(column_source_type_icons_1.SourceTypeInteger, { size: 20 }),
19
+ [column_1.Column.SourceType.BigInteger]: react_1.default.createElement(column_source_type_icons_1.SourceTypeBigInteger, { size: 20 }),
20
+ [column_1.Column.SourceType.Long]: react_1.default.createElement(column_source_type_icons_1.SourceTypeLong, { size: 20 }),
21
+ [column_1.Column.SourceType.Short]: react_1.default.createElement(column_source_type_icons_1.SourceTypeShort, { size: 20 }),
22
+ [column_1.Column.SourceType.String]: react_1.default.createElement(column_source_type_icons_1.SourceTypeString, { size: 20 }),
23
+ [column_1.Column.SourceType.Struct]: react_1.default.createElement(column_source_type_icons_1.SourceTypeStruct, { size: 20 }),
24
+ [column_1.Column.SourceType.Timestamp]: react_1.default.createElement(column_source_type_icons_1.SourceTypeTimestamp, { size: 20 }),
25
+ [column_1.Column.SourceType.VectorUDT]: react_1.default.createElement(column_source_type_icons_1.SourceTypeVectorUDT, { size: 20 }),
23
26
  };
24
27
  const ColumnWidget = (props) => {
28
+ var _a;
25
29
  const selectedColumn = (0, _utils_1.isSet)(props.value)
26
30
  ? props.columns.find(({ name }) => name === props.value)
27
31
  : undefined;
28
32
  return (react_1.default.createElement("div", { style: { position: 'relative' } },
29
- react_1.default.createElement(material_1.Autocomplete, { style: { width: '180px' },
30
- // sx={{
31
- // '& .MuiInput-root.MuiInputBase-sizeSmall .MuiInput-input': {
32
- // paddingLeft: selectedColumn ? '26px' : 'revert',
33
- // },
34
- // }}
35
- options: props.columns, getOptionLabel: (column) => column.name, renderOption: (props, column) => (react_1.default.createElement(material_1.Box, Object.assign({ component: "li", style: { display: 'flex', alignItems: 'center', gap: '4px' } }, props), column.name)), value: selectedColumn !== null && selectedColumn !== void 0 ? selectedColumn : null, size: "small", autoComplete: true, blurOnSelect: true, onBlur: props.onBlur, onChange: (e, value) => {
33
+ react_1.default.createElement("div", { style: { position: 'absolute', top: '2px' } }, selectedColumn
34
+ ? (_a = sourceTypeIcon[selectedColumn.sourceType]) !== null && _a !== void 0 ? _a : (react_1.default.createElement(column_source_type_icons_1.SourceTypeUnknown, { size: 20 }))
35
+ : null),
36
+ react_1.default.createElement(material_1.Autocomplete, { style: { width: '180px' }, sx: {
37
+ '& .MuiInput-root.MuiInputBase-sizeSmall .MuiInput-input': {
38
+ paddingLeft: selectedColumn ? '26px' : 'revert',
39
+ },
40
+ }, options: props.columns, getOptionLabel: (column) => column.name, renderOption: (props, column) => {
41
+ var _a;
42
+ return (react_1.default.createElement(material_1.Box, Object.assign({ component: "li", style: { display: 'flex', alignItems: 'center', gap: '4px' } }, props), (_a = sourceTypeIcon[column.sourceType]) !== null && _a !== void 0 ? _a : (react_1.default.createElement(column_source_type_icons_1.SourceTypeUnknown, { size: 20 })),
43
+ column.name));
44
+ }, value: selectedColumn !== null && selectedColumn !== void 0 ? selectedColumn : null, size: "small", autoComplete: true, blurOnSelect: true, onBlur: props.onBlur, onChange: (e, value) => {
36
45
  var _a;
37
46
  e.stopPropagation();
38
47
  if (value) {
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.NumberInlineField = exports.NumberWidget = void 0;
6
+ exports.NumberInlineField = exports.NumberInlineEditor = exports.NumberWidget = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const material_1 = require("@mui/material");
9
9
  const _InlineEditorField_1 = require("./_InlineEditorField");
@@ -11,6 +11,10 @@ function NumberWidget(props) {
11
11
  return (react_1.default.createElement(material_1.TextField, { style: { width: '80px' }, value: props.value, variant: "standard", type: "number", autoFocus: true, onBlur: props.onBlur, onChange: e => props.onValueChange(Number(e.target.value)) }));
12
12
  }
13
13
  exports.NumberWidget = NumberWidget;
14
- const NumberInlineField = (params) => (react_1.default.createElement(_InlineEditorField_1.InlineEditorField, Object.assign({}, params, { widget: NumberWidget, prettifyFn: val => val })));
14
+ const NumberInlineEditor = (props) => {
15
+ return react_1.default.createElement(_InlineEditorField_1.InlineEditor, Object.assign({}, props, { widget: NumberWidget }));
16
+ };
17
+ exports.NumberInlineEditor = NumberInlineEditor;
18
+ const NumberInlineField = (props) => (react_1.default.createElement(_InlineEditorField_1.InlineEditorField, Object.assign({}, props, { widget: NumberWidget })));
15
19
  exports.NumberInlineField = NumberInlineField;
16
20
  //# sourceMappingURL=NumberField.js.map
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.StringInlineField = exports.StringWidget = void 0;
6
+ exports.StringInlineField = exports.StringInlineEditor = exports.StringWidget = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const material_1 = require("@mui/material");
9
9
  const _InlineEditorField_1 = require("./_InlineEditorField");
@@ -11,6 +11,10 @@ function StringWidget(props) {
11
11
  return (react_1.default.createElement(material_1.TextField, { style: { width: '120px' }, value: props.value, variant: "standard", autoFocus: true, onBlur: props.onBlur, onChange: e => props.onValueChange(e.target.value) }));
12
12
  }
13
13
  exports.StringWidget = StringWidget;
14
- const StringInlineField = (params) => (react_1.default.createElement(_InlineEditorField_1.InlineEditorField, Object.assign({}, params, { widget: StringWidget })));
14
+ const StringInlineEditor = (props) => {
15
+ return react_1.default.createElement(_InlineEditorField_1.InlineEditor, Object.assign({}, props, { widget: StringWidget }));
16
+ };
17
+ exports.StringInlineEditor = StringInlineEditor;
18
+ const StringInlineField = (props) => (react_1.default.createElement(_InlineEditorField_1.InlineEditorField, Object.assign({}, props, { widget: StringWidget })));
15
19
  exports.StringInlineField = StringInlineField;
16
20
  //# sourceMappingURL=StringField.js.map
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.TableColumnInlineField = exports.TableColumnWidget = void 0;
6
+ exports.TableColumnInlineField = exports.TableColumnInlineEditor = exports.TableColumnWidget = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const column_1 = require("../../../../models/column");
9
9
  const _utils_1 = require("../../../../utils");
@@ -21,6 +21,10 @@ const TableColumnWidget = (props) => {
21
21
  react_1.default.createElement(ColumnField_1.ColumnWidget, { columns: columns, value: (_c = props.value) === null || _c === void 0 ? void 0 : _c.name, onBlur: props.onBlur, onValueChange: props.onValueChange })));
22
22
  };
23
23
  exports.TableColumnWidget = TableColumnWidget;
24
+ const TableColumnInlineEditor = (props) => {
25
+ return (react_1.default.createElement(_InlineEditorField_1.InlineEditor, Object.assign({}, props, { widget: exports.TableColumnWidget, widgetProps: { tableColumns: props.tableColumns }, prettifyFn: column => column_1.FullColumnName.create(column) })));
26
+ };
27
+ exports.TableColumnInlineEditor = TableColumnInlineEditor;
24
28
  const TableColumnInlineField = (props) => (react_1.default.createElement(_InlineEditorField_1.InlineEditorField, Object.assign({}, props, { widget: exports.TableColumnWidget, prettifyFn: column => column_1.FullColumnName.create(column), widgetProps: { tableColumns: props.tableColumns } })));
25
29
  exports.TableColumnInlineField = TableColumnInlineField;
26
30
  function getAdtColumns(tableColumns, tableName) {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FilterTableColumnInlineEditor = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const field_widgets_1 = require("../field-widgets");
9
+ const FilterTableColumnInlineEditor = (props) => {
10
+ return (react_1.default.createElement(field_widgets_1.TableColumnInlineEditor, { label: "column", value: props.filter.column, onValueChange: column => props.onFilterChange(Object.assign(Object.assign({}, props.filter), { column })), tableColumns: props.tableColumns }));
11
+ };
12
+ exports.FilterTableColumnInlineEditor = FilterTableColumnInlineEditor;
13
+ //# sourceMappingURL=FilterTableColumnInlineEditor.js.map
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./FilterTypeSelection"), exports);
18
+ __exportStar(require("./FilterTableColumnInlineEditor"), exports);
18
19
  //# sourceMappingURL=index.js.map
@@ -19,4 +19,5 @@ __exportStar(require("./aggregations"), exports);
19
19
  __exportStar(require("./filter"), exports);
20
20
  __exportStar(require("./join"), exports);
21
21
  __exportStar(require("./EditorTemplateRenderer"), exports);
22
+ __exportStar(require("./EditorWrapper"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -9,9 +9,8 @@ const feature_descriptor_1 = require("../../../../models/feature-descriptor");
9
9
  const context_1 = require("../../context");
10
10
  const JoinConditionTypeSelection_1 = require("./JoinConditionTypeSelection");
11
11
  const JoinTableColumnSelector_1 = require("./JoinTableColumnSelector");
12
- const EditorTemplateRenderer_1 = require("../EditorTemplateRenderer");
12
+ const EditorWrapper_1 = require("../EditorWrapper");
13
13
  const field_widgets_1 = require("../field-widgets");
14
- const _utils_1 = require("../../../../utils");
15
14
  const joinConditionEditorTemplate = {
16
15
  [feature_descriptor_1.JoinCondition.Type.Geo]: () => [],
17
16
  [feature_descriptor_1.JoinCondition.Type.Same]: props => {
@@ -32,12 +31,12 @@ const joinConditionEditorTemplate = {
32
31
  return [
33
32
  react_1.default.createElement(JoinTableColumnSelector_1.JoinTableColumnSelector, { field: "target_side_column", columns: (_a = props.tableColumns[state.join.target_table]) !== null && _a !== void 0 ? _a : [], joinCondition: props.joinCondition, onJoinConditionChange: props.onJoinConditionChange }),
34
33
  react_1.default.createElement(JoinTableColumnSelector_1.JoinTableColumnSelector, { field: "source_side_column", columns: (_b = props.tableColumns[state.join.source_table]) !== null && _b !== void 0 ? _b : [], joinCondition: props.joinCondition, onJoinConditionChange: props.onJoinConditionChange }),
35
- react_1.default.createElement(field_widgets_1.InlineEditor, { label: "from_value", value: from_value, onValueChange: from_value => {
34
+ react_1.default.createElement(field_widgets_1.StringInlineEditor, { label: "from_value", value: from_value, onValueChange: from_value => {
36
35
  props.onJoinConditionChange(Object.assign(Object.assign({}, props.joinCondition), { from_value }));
37
- }, widget: field_widgets_1.StringWidget }),
38
- react_1.default.createElement(field_widgets_1.InlineEditor, { label: "to_value", value: to_value, onValueChange: to_value => {
36
+ } }),
37
+ react_1.default.createElement(field_widgets_1.StringInlineEditor, { label: "to_value", value: to_value, onValueChange: to_value => {
39
38
  props.onJoinConditionChange(Object.assign(Object.assign({}, props.joinCondition), { to_value }));
40
- }, widget: field_widgets_1.StringWidget }),
39
+ } }),
41
40
  ];
42
41
  },
43
42
  [feature_descriptor_1.JoinCondition.Type.PeriodicTime]: props => {
@@ -52,20 +51,33 @@ const joinConditionEditorTemplate = {
52
51
  return [
53
52
  react_1.default.createElement(JoinTableColumnSelector_1.JoinTableColumnSelector, Object.assign({ field: "target_side_column", columns: (_a = props.tableColumns[state.join.target_table]) !== null && _a !== void 0 ? _a : [] }, props)),
54
53
  react_1.default.createElement(JoinTableColumnSelector_1.JoinTableColumnSelector, Object.assign({ field: "source_side_column", columns: (_b = props.tableColumns[state.join.source_table]) !== null && _b !== void 0 ? _b : [] }, props)),
55
- react_1.default.createElement(field_widgets_1.InlineEditor, { label: "periodic_unit", value: periodic_unit, onValueChange: periodic_unit => {
54
+ react_1.default.createElement(field_widgets_1.StringInlineEditor, { label: "periodic_unit", value: periodic_unit, onValueChange: periodic_unit => {
56
55
  props.onJoinConditionChange(Object.assign(Object.assign({}, props.joinCondition), { periodic_unit }));
57
- }, widget: field_widgets_1.StringWidget }),
58
- react_1.default.createElement(field_widgets_1.InlineEditor, { label: "num_cycles", value: num_cycles, onValueChange: num_cycles => {
56
+ } }),
57
+ react_1.default.createElement(field_widgets_1.NumberInlineEditor, { label: "num_cycles", value: num_cycles, onValueChange: num_cycles => {
59
58
  props.onJoinConditionChange(Object.assign(Object.assign({}, props.joinCondition), { num_cycles }));
60
- }, widget: field_widgets_1.NumberWidget }),
59
+ } }),
61
60
  ];
62
61
  },
63
62
  };
63
+ const InlineJoinConditionEditor = (props) => {
64
+ const templates = props.joinCondition.type
65
+ ? joinConditionEditorTemplate[props.joinCondition.type]({
66
+ tableColumns: props.tableColumns,
67
+ joinCondition: props.joinCondition,
68
+ onJoinConditionChange: props.onJoinConditionChange,
69
+ })
70
+ : [];
71
+ return (react_1.default.createElement(EditorWrapper_1.EditorWrapper, { templates: templates, selectorWidth: 130, selectedType: props.joinCondition.type },
72
+ react_1.default.createElement(JoinConditionTypeSelection_1.JoinConditionSelectionType, { value: props.joinCondition.type, onValueChange: type => props.onJoinConditionChange({
73
+ type,
74
+ id: props.joinCondition.id,
75
+ }) })));
76
+ };
64
77
  const JoinConditionEditor = (props) => {
65
78
  var _a;
66
79
  const [state, dispatch] = (0, context_1.useFeatureDescriptorEditorContext)();
67
- const joinCondition = (_a = state.join.join_conditions.find((c) => c.id === props.conditionId)) !== null && _a !== void 0 ? _a : { id: props.conditionId };
68
- const [isSummaryVisible, setIsSummaryVisible] = react_1.default.useState(() => (0, _utils_1.isSet)(joinCondition.type));
80
+ const joinCondition = (_a = state.join.join_conditions.find(({ id }) => id === props.conditionId)) !== null && _a !== void 0 ? _a : { id: props.conditionId };
69
81
  const setJoinConditionDraft = (params) => {
70
82
  const join = Object.assign(Object.assign({}, state.join), { join_conditions: state.join.join_conditions.map((draft) => draft.id === props.conditionId ? params : draft) });
71
83
  dispatch(context_1.FeatureDescriptorEditorActions.setDraftField({
@@ -73,24 +85,7 @@ const JoinConditionEditor = (props) => {
73
85
  value: join,
74
86
  }));
75
87
  };
76
- const templates = joinCondition.type
77
- ? joinConditionEditorTemplate[joinCondition.type]({
78
- tableColumns: props.tableColumns,
79
- joinCondition,
80
- onJoinConditionChange: setJoinConditionDraft,
81
- })
82
- : [];
83
- return (react_1.default.createElement("div", { style: {
84
- display: 'inline-flex',
85
- } },
86
- react_1.default.createElement("div", { style: { display: 'inline-flex', height: '26px', alignItems: 'center' } }, isSummaryVisible ? (react_1.default.createElement("span", { className: "inline-displayed-value", onClick: () => setIsSummaryVisible(false) }, joinCondition.type)) : (react_1.default.createElement("span", { style: { width: '130px', marginTop: '6px' } },
87
- react_1.default.createElement(JoinConditionTypeSelection_1.JoinConditionSelectionType, { onBlur: () => {
88
- setIsSummaryVisible(true);
89
- }, value: joinCondition.type, onValueChange: type => setJoinConditionDraft({ type, id: props.conditionId }) })))),
90
- react_1.default.createElement("div", { style: { display: 'flex', flexWrap: 'wrap', alignItems: 'center' } },
91
- "(",
92
- react_1.default.createElement(EditorTemplateRenderer_1.EditorTemplateRenderer, { templates: templates }),
93
- ")")));
88
+ return (react_1.default.createElement(InlineJoinConditionEditor, { joinCondition: joinCondition, tableColumns: props.tableColumns, onJoinConditionChange: setJoinConditionDraft }));
94
89
  };
95
90
  exports.JoinConditionEditor = JoinConditionEditor;
96
91
  //# sourceMappingURL=JoinConditionEditor.js.map
@@ -12,14 +12,6 @@ var FeatureDescriptorEditorActions;
12
12
  Join.patchCondition = (0, redux_1.createAction)('Join:PatchCondition', (0, redux_1.props)());
13
13
  Join.removeCondition = (0, redux_1.createAction)('Join:RemoveCondition', (0, redux_1.props)());
14
14
  })(Join = FeatureDescriptorEditorActions.Join || (FeatureDescriptorEditorActions.Join = {}));
15
- let Aggregation;
16
- (function (Aggregation) {
17
- Aggregation.setType = (0, redux_1.createAction)('Aggregation:SetType', (0, redux_1.props)());
18
- })(Aggregation = FeatureDescriptorEditorActions.Aggregation || (FeatureDescriptorEditorActions.Aggregation = {}));
19
- let Filter;
20
- (function (Filter) {
21
- Filter.setType = (0, redux_1.createAction)('Filter:SetType', (0, redux_1.props)());
22
- })(Filter = FeatureDescriptorEditorActions.Filter || (FeatureDescriptorEditorActions.Filter = {}));
23
15
  })(FeatureDescriptorEditorActions = exports.FeatureDescriptorEditorActions || (exports.FeatureDescriptorEditorActions = {}));
24
16
  exports.featureDescriptorEditorReducer = (0, redux_1.createReducer)((0, redux_1.on)(FeatureDescriptorEditorActions.Join.addNewCondition, updateDraftField('join', joinState => {
25
17
  var _a;
@@ -28,11 +20,7 @@ exports.featureDescriptorEditorReducer = (0, redux_1.createReducer)((0, redux_1.
28
20
  { id: Math.random() },
29
21
  ] }));
30
22
  })), (0, redux_1.on)(FeatureDescriptorEditorActions.Join.setCondition, updateDraftField('join', (joinState, action) => (Object.assign(Object.assign({}, joinState), { join_conditions: joinState.join_conditions.map((condition) => condition.id === action.condition.id ? action.condition : condition) })))), (0, redux_1.on)(FeatureDescriptorEditorActions.Join.patchCondition, updateDraftField('join', (joinState, action) => (Object.assign(Object.assign({}, joinState), { join_conditions: joinState.join_conditions.map((condition) => condition.id === action.condition.id
31
- ? Object.assign(Object.assign({}, condition), action.condition) : condition) })))), (0, redux_1.on)(FeatureDescriptorEditorActions.Join.removeCondition, updateDraftField('join', (joinState, action) => (Object.assign(Object.assign({}, joinState), { join_conditions: joinState.join_conditions.filter((condition) => condition.id !== action.id) })))), (0, redux_1.on)(FeatureDescriptorEditorActions.Filter.setType, updateDraftField('filter', (_, { filterType }) => ({
32
- type: filterType,
33
- }))), (0, redux_1.on)(FeatureDescriptorEditorActions.Aggregation.setType, updateDraftField('aggregation', (_, { aggregationType }) => ({
34
- type: aggregationType,
35
- }))), (0, redux_1.on)(FeatureDescriptorEditorActions.setDraftField, setDraftField));
23
+ ? Object.assign(Object.assign({}, condition), action.condition) : condition) })))), (0, redux_1.on)(FeatureDescriptorEditorActions.Join.removeCondition, updateDraftField('join', (joinState, action) => (Object.assign(Object.assign({}, joinState), { join_conditions: joinState.join_conditions.filter((condition) => condition.id !== action.id) })))), (0, redux_1.on)(FeatureDescriptorEditorActions.setDraftField, setDraftField));
36
24
  function updateDraftField(field, fn) {
37
25
  return function (state, action) {
38
26
  return Object.assign(Object.assign({}, state), { [field]: fn(state[field], action) });
@@ -17,7 +17,7 @@ const TemporalChangeDraft = zod_1.z.object({
17
17
  source_column: common_field_draft_1.ColumnDraft,
18
18
  upper_bound: zod_1.z.string(),
19
19
  lower_bound: zod_1.z.string(),
20
- range_shift: zod_1.z.number(),
20
+ range_shift: zod_1.z.string(),
21
21
  });
22
22
  const LatestKDraft = zod_1.z.object({
23
23
  source_time_filed: common_field_draft_1.ColumnDraft,
@@ -328,8 +328,6 @@ var AggregationDraft;
328
328
  const columnFields = Object.entries(schema.shape)
329
329
  .filter(([_, field]) => field.description === 'Column')
330
330
  .map(([colName]) => colName);
331
- // console.log(z.instanceof(z.number));
332
- console.log('columnFields', Object.entries(schema.shape));
333
331
  return Object.assign(Object.assign({}, aggr), Object.fromEntries(columnFields.map(field => {
334
332
  var _a;
335
333
  return [
@@ -5,50 +5,78 @@ const zod_1 = require("zod");
5
5
  const feature_descriptor_1 = require("../../../models/feature-descriptor");
6
6
  const column_1 = require("../../../models/column");
7
7
  const common_field_draft_1 = require("./common-field-draft");
8
+ const AboveFilterDraft = zod_1.z.object({
9
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Above),
10
+ column: common_field_draft_1.ColumnDraft,
11
+ min_inclusive: zod_1.z.number(),
12
+ });
13
+ const BelowFilterDraft = zod_1.z.object({
14
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Below),
15
+ column: common_field_draft_1.ColumnDraft,
16
+ max_exclusive: zod_1.z.number(),
17
+ });
18
+ const BetweenFilterDraft = zod_1.z.object({
19
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Between),
20
+ column: common_field_draft_1.ColumnDraft,
21
+ min_inclusive: zod_1.z.number(),
22
+ max_exclusive: zod_1.z.number(),
23
+ });
24
+ const FullPassFilterDraft = zod_1.z.object({
25
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.FullPass),
26
+ });
27
+ const HourOfDayFilterDraft = zod_1.z.object({
28
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.HourOfDay),
29
+ column: common_field_draft_1.ColumnDraft,
30
+ min_hour_inclusive: zod_1.z.number(),
31
+ max_hour_exclusive: zod_1.z.number(),
32
+ });
33
+ const NgramFilterDraft = zod_1.z.object({
34
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.NgramFilter),
35
+ column: common_field_draft_1.ColumnDraft,
36
+ ngram: zod_1.z.array(zod_1.z.string()),
37
+ });
38
+ const ValueFilterDraft = zod_1.z.object({
39
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Value),
40
+ column: common_field_draft_1.ColumnDraft,
41
+ value: zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]),
42
+ });
43
+ const WeekdayFilterDraft = zod_1.z.object({
44
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Weekday),
45
+ column: common_field_draft_1.ColumnDraft,
46
+ });
47
+ const WeekendFilterDraft = zod_1.z.object({
48
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Weekend),
49
+ column: common_field_draft_1.ColumnDraft,
50
+ });
51
+ const FilterDraftUnion = zod_1.z.union([
52
+ AboveFilterDraft,
53
+ BelowFilterDraft,
54
+ BetweenFilterDraft,
55
+ FullPassFilterDraft,
56
+ HourOfDayFilterDraft,
57
+ NgramFilterDraft,
58
+ ValueFilterDraft,
59
+ WeekdayFilterDraft,
60
+ WeekendFilterDraft,
61
+ zod_1.z.lazy(() => AndFilterDraft),
62
+ ]);
63
+ const AndFilterDraft = zod_1.z.object({
64
+ type: zod_1.z.literal(feature_descriptor_1.Filter.Type.AndFilter),
65
+ filter1: FilterDraftUnion,
66
+ filter2: FilterDraftUnion,
67
+ // Casting is required because of ColumnDraft type. It uses its transformed type instead of the original one
68
+ });
8
69
  const FilterDrafts = {
9
- [feature_descriptor_1.Filter.Type.Above]: zod_1.z.object({
10
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Above),
11
- column: common_field_draft_1.ColumnDraft,
12
- min_inclusive: zod_1.z.number(),
13
- }),
14
- [feature_descriptor_1.Filter.Type.Below]: zod_1.z.object({
15
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Below),
16
- column: common_field_draft_1.ColumnDraft,
17
- max_exclusive: zod_1.z.number(),
18
- }),
19
- [feature_descriptor_1.Filter.Type.Between]: zod_1.z.object({
20
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Between),
21
- column: common_field_draft_1.ColumnDraft,
22
- min_inclusive: zod_1.z.number(),
23
- max_exclusive: zod_1.z.number(),
24
- }),
25
- [feature_descriptor_1.Filter.Type.FullPass]: zod_1.z.object({
26
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.FullPass),
27
- }),
28
- [feature_descriptor_1.Filter.Type.HourOfDay]: zod_1.z.object({
29
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.HourOfDay),
30
- column: common_field_draft_1.ColumnDraft,
31
- min_hour_inclusive: zod_1.z.number(),
32
- max_hour_exclusive: zod_1.z.number(),
33
- }),
34
- [feature_descriptor_1.Filter.Type.NgramFilter]: zod_1.z.object({
35
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.NgramFilter),
36
- column: common_field_draft_1.ColumnDraft,
37
- ngram: zod_1.z.array(zod_1.z.string()),
38
- }),
39
- [feature_descriptor_1.Filter.Type.Value]: zod_1.z.object({
40
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Value),
41
- column: common_field_draft_1.ColumnDraft,
42
- value: zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()]),
43
- }),
44
- [feature_descriptor_1.Filter.Type.Weekday]: zod_1.z.object({
45
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Weekday),
46
- column: common_field_draft_1.ColumnDraft,
47
- }),
48
- [feature_descriptor_1.Filter.Type.Weekend]: zod_1.z.object({
49
- type: zod_1.z.literal(feature_descriptor_1.Filter.Type.Weekend),
50
- column: common_field_draft_1.ColumnDraft,
51
- }),
70
+ [feature_descriptor_1.Filter.Type.AndFilter]: AndFilterDraft,
71
+ [feature_descriptor_1.Filter.Type.Above]: AboveFilterDraft,
72
+ [feature_descriptor_1.Filter.Type.Below]: BelowFilterDraft,
73
+ [feature_descriptor_1.Filter.Type.Between]: BetweenFilterDraft,
74
+ [feature_descriptor_1.Filter.Type.FullPass]: FullPassFilterDraft,
75
+ [feature_descriptor_1.Filter.Type.HourOfDay]: HourOfDayFilterDraft,
76
+ [feature_descriptor_1.Filter.Type.NgramFilter]: NgramFilterDraft,
77
+ [feature_descriptor_1.Filter.Type.Value]: ValueFilterDraft,
78
+ [feature_descriptor_1.Filter.Type.Weekday]: WeekdayFilterDraft,
79
+ [feature_descriptor_1.Filter.Type.Weekend]: WeekendFilterDraft,
52
80
  };
53
81
  var FilterDraft;
54
82
  (function (FilterDraft) {
@@ -58,13 +86,19 @@ var FilterDraft;
58
86
  const columnFields = Object.entries(schema.shape)
59
87
  .filter(([_, field]) => field.description === 'Column')
60
88
  .map(([colName]) => colName);
61
- return Object.assign(Object.assign({}, filter), Object.fromEntries(columnFields.map(field => {
62
- var _a;
63
- return [
64
- field,
65
- (_a = column_1.Column.fromFullName(_filter[field], tableColumns)) !== null && _a !== void 0 ? _a : {},
66
- ];
67
- })));
89
+ return filter.type === feature_descriptor_1.Filter.Type.AndFilter
90
+ ? {
91
+ type: feature_descriptor_1.Filter.Type.AndFilter,
92
+ filter1: fromFilter(filter.filter1, tableColumns),
93
+ filter2: fromFilter(filter.filter2, tableColumns),
94
+ }
95
+ : Object.assign(Object.assign({}, filter), Object.fromEntries(columnFields.map(field => {
96
+ var _a;
97
+ return [
98
+ field,
99
+ (_a = column_1.Column.fromFullName(_filter[field], tableColumns)) !== null && _a !== void 0 ? _a : {},
100
+ ];
101
+ })));
68
102
  }
69
103
  FilterDraft.fromFilter = fromFilter;
70
104
  function validate(filterDraft) {
@@ -14,10 +14,6 @@ const ExplorationPathHeader = props => {
14
14
  gap: '8px',
15
15
  background: 'var(--c-catskill-white)',
16
16
  } },
17
- react_1.default.createElement("h4", { className: "grey-label", style: { margin: 0 } },
18
- "[#",
19
- props.explorationPathIndex,
20
- "]"),
21
17
  react_1.default.createElement("div", null,
22
18
  targetTable,
23
19
  "[",
@@ -6,13 +6,18 @@ var Column;
6
6
  (function (Column) {
7
7
  let SourceType;
8
8
  (function (SourceType) {
9
- SourceType["Integer"] = "int";
10
- SourceType["Bigint"] = "bigint";
9
+ SourceType["Boolean"] = "boolean";
10
+ SourceType["Date"] = "date";
11
11
  SourceType["Double"] = "double";
12
+ SourceType["Float"] = "float";
13
+ SourceType["Integer"] = "int";
14
+ SourceType["BigInteger"] = "bigint";
15
+ SourceType["Long"] = "long";
16
+ SourceType["Short"] = "short";
12
17
  SourceType["String"] = "string";
13
- SourceType["Boolean"] = "Boolean";
14
- SourceType["Timestamp"] = "Timestamp";
15
- SourceType["Date"] = "date";
18
+ SourceType["Struct"] = "struct";
19
+ SourceType["Timestamp"] = "timestamp";
20
+ SourceType["VectorUDT"] = "vectorUDT";
16
21
  })(SourceType = Column.SourceType || (Column.SourceType = {}));
17
22
  function isTypeOf(x) {
18
23
  return (0, _utils_1.isSet)(x.name) && (0, _utils_1.isSet)(x.table) && (0, _utils_1.isSet)(x.type);
@@ -47,16 +52,5 @@ var FullColumnName;
47
52
  return `${props.table}.${props.name}`;
48
53
  }
49
54
  FullColumnName.create = create;
50
- // export function getTableName(
51
- // fullName: FullColumnName | Unset
52
- // ): TableName | Unset {
53
- // return isSet(fullName) ? destruct(fullName).table : undefined;
54
- // }
55
- //
56
- // export function getColumnName(
57
- // fullName: FullColumnName | Unset
58
- // ): TableName | Unset {
59
- // return isSet(fullName) ? destruct(fullName).name : undefined;
60
- // }
61
55
  })(FullColumnName = exports.FullColumnName || (exports.FullColumnName = {}));
62
56
  //# sourceMappingURL=column.js.map
@@ -11,17 +11,4 @@ var TableColumns;
11
11
  }
12
12
  TableColumns.fromSimplified = fromSimplified;
13
13
  })(TableColumns = exports.TableColumns || (exports.TableColumns = {}));
14
- // export namespace AnalyticDataTypes {
15
- // export function filterByColumnType(types: Column.AnalyticType[]) {
16
- // return (adt: AnalyticDataTypes): AnalyticDataTypes =>
17
- // Object.fromEntries(
18
- // Object.entries(adt)
19
- // .map(([tableName, columns]) => [
20
- // tableName,
21
- // columns.filter(({ type }) => types.includes(type)),
22
- // ])
23
- // .filter(([, columns]) => columns.length)
24
- // );
25
- // }
26
- // }
27
14
  //# sourceMappingURL=table-columns.js.map
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Aggregation = void 0;
4
- const utils_1 = require("./utils");
5
4
  var Aggregation;
6
5
  (function (Aggregation) {
7
6
  let Type;
@@ -82,6 +81,5 @@ var Aggregation;
82
81
  Type["TopicWeightSum"] = "TopicWeightSum";
83
82
  Type["TopicWeightValue"] = "TopicWeightValue";
84
83
  })(Type = Aggregation.Type || (Aggregation.Type = {}));
85
- Aggregation.prettify = (utils_1.prettify);
86
84
  })(Aggregation = exports.Aggregation || (exports.Aggregation = {}));
87
85
  //# sourceMappingURL=aggregation.js.map
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Filter = void 0;
4
- const utils_1 = require("./utils");
5
4
  var Filter;
6
5
  (function (Filter) {
7
6
  let Type;
8
7
  (function (Type) {
8
+ Type["AndFilter"] = "AndFilter";
9
9
  Type["Above"] = "Above";
10
10
  Type["Below"] = "Below";
11
11
  Type["Between"] = "Between";
@@ -16,18 +16,5 @@ var Filter;
16
16
  Type["Weekday"] = "Weekday";
17
17
  Type["Weekend"] = "Weekend";
18
18
  })(Type = Filter.Type || (Filter.Type = {}));
19
- Filter.isFullPass = isTypeOf(Filter.Type.FullPass);
20
- Filter.isAbove = isTypeOf(Filter.Type.Above);
21
- Filter.isBelow = isTypeOf(Filter.Type.Below);
22
- Filter.isNgramFilter = isTypeOf(Filter.Type.NgramFilter);
23
- Filter.isBetween = isTypeOf(Filter.Type.Between);
24
- Filter.isHourOfDay = isTypeOf(Filter.Type.HourOfDay);
25
- Filter.isValue = isTypeOf(Filter.Type.Value);
26
- Filter.isWeekday = isTypeOf(Filter.Type.Weekday);
27
- Filter.isWeekend = isTypeOf(Filter.Type.Weekend);
28
- Filter.prettify = (utils_1.prettify);
29
19
  })(Filter = exports.Filter || (exports.Filter = {}));
30
- function isTypeOf(type) {
31
- return (f) => f.type === type;
32
- }
33
20
  //# sourceMappingURL=filter.js.map
@@ -1,13 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.JoinCondition = exports.Join = void 0;
4
- var Join;
5
- (function (Join) {
6
- function prettify(join) {
7
- return `Join(target_table='${join.target_table}', source_table='${join.source_table}') ... TODO add conditions`;
8
- }
9
- Join.prettify = prettify;
10
- })(Join = exports.Join || (exports.Join = {}));
3
+ exports.JoinCondition = void 0;
11
4
  var JoinCondition;
12
5
  (function (JoinCondition) {
13
6
  let Type;
@@ -9,10 +9,10 @@ const overview_slider_1 = require("./leaderboard-overview/overview-slider");
9
9
  const material_1 = require("@mui/material");
10
10
  const MAX_COLLINEARITY_TOOLTIP = 'Maximum correlation of any two features on the list';
11
11
  const CONFIDENCE_TOOLTIP = 'The probability that a feature is better than a random feature';
12
- const FeatureLeaderboardOverview = ({ isAssessed, confidence, setConfidence, maxCollinearity, setMaxCollinearity, setSearch, }) => {
12
+ const FeatureLeaderboardOverview = ({ isWithAssessment, confidence, setConfidence, maxCollinearity, setMaxCollinearity, setSearch, }) => {
13
13
  const [searchPhrase, setSearchPhrase] = react_1.default.useState(() => '');
14
14
  return (react_1.default.createElement("div", { style: { display: 'flex' } },
15
- isAssessed ? (react_1.default.createElement(react_1.default.Fragment, null,
15
+ isWithAssessment ? (react_1.default.createElement(react_1.default.Fragment, null,
16
16
  react_1.default.createElement(overview_slider_1.OverviewSlider, { value: maxCollinearity, setValue: setMaxCollinearity, label: "Max collinearity:", labelTooltip: MAX_COLLINEARITY_TOOLTIP }),
17
17
  react_1.default.createElement(overview_slider_1.OverviewSlider, { value: confidence, setValue: setConfidence, label: "Confidence:", labelTooltip: CONFIDENCE_TOOLTIP }))) : null,
18
18
  react_1.default.createElement("span", { style: { marginLeft: 'auto', width: '30%' } },