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
@@ -16,49 +16,49 @@ const FeatureLeaderboardEntryDrawer_1 = require("./leaderboard-entry/FeatureLead
16
16
  const FeatureLeaderboardOverview_1 = require("./FeatureLeaderboardOverview");
17
17
  const FeatureLeaderboardView = ({ model }) => {
18
18
  const [featureLeaderboard] = (0, widget_model_1.useModelState)('value');
19
- const isAssessed = (0, _utils_1.isNotSet)(featureLeaderboard.isAssessed) || featureLeaderboard.isAssessed;
19
+ const isWithAssessment = (0, _utils_1.isNotSet)(featureLeaderboard.isAssessed) || featureLeaderboard.isAssessed;
20
20
  const [confidence, setConfidence] = (0, widget_model_1.useModelState)('confidence');
21
21
  const [maxCollinearity, setMaxCollinearity] = (0, widget_model_1.useModelState)('max_collinearity');
22
22
  const [explanationSearch, setExplanationSearch] = react_1.default.useState(() => '');
23
- const featureEntries = react_1.default.useMemo(() => filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearch, isAssessed), [maxCollinearity, confidence, explanationSearch, featureLeaderboard]);
23
+ const featureEntries = react_1.default.useMemo(() => filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearch, isWithAssessment), [maxCollinearity, confidence, explanationSearch, featureLeaderboard]);
24
24
  const tableColumns = react_1.default.useMemo(() => featureLeaderboard.tableColumns
25
25
  ? column_1.TableColumns.fromSimplified(featureLeaderboard.tableColumns)
26
26
  : {}, [featureLeaderboard.tableColumns]);
27
27
  const [copiedFeature, setCopiedFeature] = react_1.default.useState(() => undefined);
28
28
  return (react_1.default.createElement(material_1.ThemeProvider, { theme: widget_theme_1.theme },
29
- react_1.default.createElement(FeatureLeaderboardOverview_1.FeatureLeaderboardOverview, { isAssessed: isAssessed, confidence: confidence, setConfidence: setConfidence, maxCollinearity: maxCollinearity, setMaxCollinearity: setMaxCollinearity, setSearch: setExplanationSearch }),
29
+ react_1.default.createElement(FeatureLeaderboardOverview_1.FeatureLeaderboardOverview, { isWithAssessment: isWithAssessment, confidence: confidence, setConfidence: setConfidence, maxCollinearity: maxCollinearity, setMaxCollinearity: setMaxCollinearity, setSearch: setExplanationSearch }),
30
30
  react_1.default.createElement("br", null),
31
31
  react_1.default.createElement("div", { className: "feature-entries-header", style: { display: 'flex' } },
32
- react_1.default.createElement("span", { className: "feature-id", style: { marginLeft: isAssessed ? '30px' : 0 } }, "Feature ID"),
33
- isAssessed ? react_1.default.createElement("span", { className: "confidence" }, "Confidence") : null,
32
+ react_1.default.createElement("span", { className: "feature-id", style: { marginLeft: isWithAssessment ? '30px' : 0 } }, "Feature ID"),
33
+ isWithAssessment ? (react_1.default.createElement("span", { className: "confidence" }, "Confidence")) : null,
34
34
  react_1.default.createElement("span", { className: "explanation" }, "Explanation")),
35
- react_1.default.createElement("div", { style: { display: 'inline-block', minWidth: '100%' } }, featureEntries.map(featureEntry => (react_1.default.createElement(react_1.default.Fragment, null,
36
- react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { key: featureEntry.feature.id, featureEntry: featureEntry, tableColumn: tableColumns, isAssessed: isAssessed, config: {
37
- onSetModel: mode => {
38
- if (mode === FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy) {
39
- const originId = feature_1.FeatureId.getOriginId(featureEntry.feature.id);
40
- (0, _utils_1.sha256)(`${new Date()}_${featureEntry.feature.id}`, 8).then(id => {
41
- const feature = Object.assign(Object.assign({}, featureEntry), { isAssessed: false, feature: Object.assign(Object.assign({}, featureEntry.feature), { id: `${originId}_${id}` }) });
42
- setCopiedFeature({
43
- feature,
44
- parentId: featureEntry.feature.id,
45
- });
35
+ react_1.default.createElement("div", { style: {
36
+ display: 'inline-block',
37
+ minWidth: '100%',
38
+ marginBottom: '2px',
39
+ } }, featureEntries.map(featureEntry => (react_1.default.createElement(react_1.default.Fragment, null,
40
+ react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { key: featureEntry.feature.id, featureEntry: featureEntry, tableColumn: tableColumns, isWithAssessment: isWithAssessment, onModelChange: mode => {
41
+ if (mode === FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy) {
42
+ const originId = feature_1.FeatureId.getOriginId(featureEntry.feature.id);
43
+ (0, _utils_1.sha256)(`${new Date()}_${featureEntry.feature.id}`, 8).then(id => {
44
+ const feature = Object.assign(Object.assign({}, featureEntry), { isAssessed: false, feature: Object.assign(Object.assign({}, featureEntry.feature), { id: `${originId}_${id}` }) });
45
+ setCopiedFeature({
46
+ feature,
47
+ parentId: featureEntry.feature.id,
46
48
  });
47
- }
48
- return mode !== FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy;
49
- },
50
- } }),
49
+ });
50
+ }
51
+ return mode !== FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy;
52
+ }, isWithActions: isWithActions(featureEntry, isWithAssessment) }),
51
53
  (copiedFeature === null || copiedFeature === void 0 ? void 0 : copiedFeature.parentId) === featureEntry.feature.id ? (react_1.default.createElement("div", { style: { marginLeft: '30px' } },
52
- react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { featureEntry: copiedFeature.feature, tableColumn: tableColumns, isAssessed: false, config: {
53
- initMode: FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy,
54
- isWithLikes: false,
55
- isWithActions: false,
56
- onCancel: () => setCopiedFeature(undefined),
57
- } }),
54
+ react_1.default.createElement(FeatureLeaderboardEntryDrawer_1.FeatureLeaderboardEntryDrawer, { featureEntry: copiedFeature.feature, tableColumn: tableColumns, isWithAssessment: false, initMode: FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy, onCancel: () => setCopiedFeature(undefined), isWithLikes: false, isWithActions: false }),
58
55
  react_1.default.createElement("br", null))) : null))))));
59
56
  };
60
57
  exports.FeatureLeaderboardView = FeatureLeaderboardView;
61
- function filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearchPhrase, isAssessed) {
58
+ function isWithActions(featureEntry, isWithAssessment) {
59
+ return isWithAssessment ? true : { code: false, copy: false, edit: false };
60
+ }
61
+ function filterFeatures(featureLeaderboard, maxCollinearity, confidence, explanationSearchPhrase, isWithAssessment) {
62
62
  const shouldCheckIsAssessed = (entry) => (0, _utils_1.isSet)(entry.isAssessed) ? entry.isAssessed : true;
63
63
  const explanationSearchFilter = (entry) => {
64
64
  var _a;
@@ -69,7 +69,7 @@ function filterFeatures(featureLeaderboard, maxCollinearity, confidence, explana
69
69
  ? entry.maxAbsCorrelationOfSimplerFeature <= maxCollinearity
70
70
  : true;
71
71
  const confidenceFilter = (entry) => shouldCheckIsAssessed(entry) ? entry.signalConfidence >= confidence : true;
72
- const reduces = isAssessed
72
+ const reduces = isWithAssessment
73
73
  ? (0, transducer_1.compose)((0, transducer_1.filter)(explanationSearchFilter), (0, transducer_1.filter)(correlationFilter), (0, transducer_1.filter)(confidenceFilter))
74
74
  : (0, transducer_1.compose)((0, transducer_1.filter)(explanationSearchFilter));
75
75
  const aggregation = (a, b) => a.concat([b]);
@@ -3,12 +3,12 @@ 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.LeaderboardFeatureLikes = void 0;
6
+ exports.FeatureLeaderboardFeatureLikes = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const lodash_1 = require("lodash");
9
9
  const widget_model_1 = require("../../../utils/widget-model");
10
10
  const feature_likes_1 = require("../../../feature/feature-likes");
11
- const LeaderboardFeatureLikes = ({ featureId, }) => {
11
+ const FeatureLeaderboardFeatureLikes = ({ featureId, }) => {
12
12
  const [likedFeatures, setLikedFeatures] = (0, widget_model_1.useModelState)('liked_features');
13
13
  const [dislikedFeatures, setDislikedFeatures] = (0, widget_model_1.useModelState)('disliked_features');
14
14
  const [liked, setLiked] = react_1.default.useState(() => feature_likes_1.FeatureLike.Neutral);
@@ -46,5 +46,5 @@ const LeaderboardFeatureLikes = ({ featureId, }) => {
46
46
  }
47
47
  return (react_1.default.createElement(feature_likes_1.FeatureLikes, { liked: liked, toggleIsLiked: toggleIsLiked, toggleIsDisliked: toggleIsDisliked }));
48
48
  };
49
- exports.LeaderboardFeatureLikes = LeaderboardFeatureLikes;
50
- //# sourceMappingURL=LeaderboardFeatureLikes.js.map
49
+ exports.FeatureLeaderboardFeatureLikes = FeatureLeaderboardFeatureLikes;
50
+ //# sourceMappingURL=FeatureLeaderboardFeatureLikes.js.map
@@ -6,34 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.FeatureLeaderboardEntryDrawer = exports.DrawerMode = void 0;
7
7
  const react_1 = __importDefault(require("react"));
8
8
  const material_1 = require("@mui/material");
9
- const Code_1 = __importDefault(require("@mui/icons-material/Code"));
10
- const ModeEdit_1 = __importDefault(require("@mui/icons-material/ModeEdit"));
11
- const CopyAll_1 = __importDefault(require("@mui/icons-material/CopyAll"));
12
- const _utils_1 = require("../../../utils");
13
- const LeaderboardFeatureLikes_1 = require("../components/LeaderboardFeatureLikes");
14
9
  const FeatureLeaderboardEntryDetails_1 = require("./FeatureLeaderboardEntryDetails");
15
10
  const FeatureLeaderboardEntryFeatureEditor_1 = require("./FeatureLeaderboardEntryFeatureEditor");
16
- const FeatureLeaderboardEntryHeader_1 = require("./FeatureLeaderboardEntryHeader");
17
- const DetailsToggle = (props) => (react_1.default.createElement("span", { className: "details-toggle", onClick: props.onClick },
18
- react_1.default.createElement("span", null, "\u25B6")));
19
- const FeatureLabel = (props) => (react_1.default.createElement("span", { className: "feature-name-label label-bold" },
20
- react_1.default.createElement(material_1.Tooltip, { title: props.featureEntry.feature.id, placement: "bottom" },
21
- react_1.default.createElement("span", null, props.featureEntry.feature.id))));
22
- const FeatureActions = (props) => {
23
- var _a, _b;
24
- const isWithActions = (_a = props.isWithActions) !== null && _a !== void 0 ? _a : true;
25
- const isWithLikes = (_b = props.isWithLikes) !== null && _b !== void 0 ? _b : true;
26
- return (react_1.default.createElement("div", { style: { marginLeft: 'auto', display: 'flex', gap: '5px' } },
27
- isWithActions ? (react_1.default.createElement("div", { className: "fl-entry-row-actions" },
28
- react_1.default.createElement("div", { className: "fl-entry-row-hidden-actions" },
29
- react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Edit) },
30
- react_1.default.createElement(ModeEdit_1.default, { className: "action-btn" })),
31
- react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Copy) },
32
- react_1.default.createElement(CopyAll_1.default, { className: "action-btn" })),
33
- react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.setMode(DrawerMode.Code) },
34
- react_1.default.createElement(Code_1.default, { className: "action-btn" }))))) : null,
35
- isWithLikes ? (react_1.default.createElement(LeaderboardFeatureLikes_1.LeaderboardFeatureLikes, { featureId: props.featureEntry.feature.id })) : null));
36
- };
11
+ const feature_leaderboard_entry_drawer_header_1 = require("./feature-leaderboard-entry-drawer-header");
37
12
  var DrawerMode;
38
13
  (function (DrawerMode) {
39
14
  DrawerMode["None"] = "none";
@@ -42,19 +17,14 @@ var DrawerMode;
42
17
  DrawerMode["Code"] = "code";
43
18
  DrawerMode["Details"] = "details";
44
19
  })(DrawerMode = exports.DrawerMode || (exports.DrawerMode = {}));
45
- const FeatureLeaderboardEntryDrawer = props => {
20
+ const FeatureLeaderboardEntryDrawer = (props) => {
46
21
  var _a;
47
- const [mode, setMode] = react_1.default.useState(() => { var _a, _b; return (_b = (_a = props.config) === null || _a === void 0 ? void 0 : _a.initMode) !== null && _b !== void 0 ? _b : DrawerMode.None; });
22
+ const [mode, setMode] = react_1.default.useState((_a = props.initMode) !== null && _a !== void 0 ? _a : DrawerMode.None);
48
23
  const isExpanded = mode === DrawerMode.Code || mode === DrawerMode.Details;
49
- const isWithAssessment = props.isAssessed;
50
- const isAssessed = (_a = props.featureEntry.isAssessed) !== null && _a !== void 0 ? _a : props.isAssessed;
51
- const toggleModel = (toggledMode) => {
52
- return () => onSetModel(mode === toggledMode ? DrawerMode.None : toggledMode);
53
- };
54
- const onSetModel = (mode) => {
55
- var _a, _b;
56
- if ((_a = props.config) === null || _a === void 0 ? void 0 : _a.onSetModel) {
57
- const setInlineMode = (_b = props.config.onSetModel(mode)) !== null && _b !== void 0 ? _b : true;
24
+ const onModeChange = (mode) => {
25
+ var _a;
26
+ if (props === null || props === void 0 ? void 0 : props.onModelChange) {
27
+ const setInlineMode = (_a = props.onModelChange(mode)) !== null && _a !== void 0 ? _a : true;
58
28
  if (setInlineMode) {
59
29
  setMode(mode);
60
30
  }
@@ -64,19 +34,12 @@ const FeatureLeaderboardEntryDrawer = props => {
64
34
  }
65
35
  };
66
36
  const onCancel = () => {
67
- var _a, _b;
37
+ var _a;
68
38
  setMode(DrawerMode.None);
69
- (_b = (_a = props.config) === null || _a === void 0 ? void 0 : _a.onCancel) === null || _b === void 0 ? void 0 : _b.call(_a);
39
+ (_a = props.onCancel) === null || _a === void 0 ? void 0 : _a.call(props);
70
40
  };
71
41
  return (react_1.default.createElement("div", { className: `feature-leaderboard-entry-drawer ${isExpanded ? 'expanded' : ''}` },
72
- react_1.default.createElement("div", { className: "feature-leaderboard-entry-drawer-header", style: { display: 'flex' } },
73
- isAssessed && isWithAssessment ? (react_1.default.createElement(DetailsToggle, { onClick: toggleModel(DrawerMode.Details) })) : isWithAssessment ? (react_1.default.createElement("span", { style: { width: '30px', display: 'inline-block' } })) : null,
74
- react_1.default.createElement(FeatureLabel, { featureEntry: props.featureEntry }),
75
- isWithAssessment ? (react_1.default.createElement("span", { className: "confidence-label", style: {
76
- '--fill': `${props.featureEntry.signalConfidence * 100}%`,
77
- } }, _utils_1.Localize.formatNumber(props.featureEntry.signalConfidence))) : null,
78
- react_1.default.createElement(FeatureLeaderboardEntryHeader_1.FeatureLeaderboardEntryHeader, { feature: props.featureEntry.feature, isEdited: mode === DrawerMode.Edit, onClose: onCancel }),
79
- react_1.default.createElement(FeatureActions, Object.assign({ mode: mode, setMode: onSetModel, featureEntry: props.featureEntry }, props === null || props === void 0 ? void 0 : props.config))),
42
+ react_1.default.createElement(feature_leaderboard_entry_drawer_header_1.FeatureLeaderboardEntryDrawerHeader, Object.assign({ mode: mode, onModeChange: onModeChange, onCancel: onCancel }, props)),
80
43
  react_1.default.createElement("div", { className: "feature-leaderboard-entry-drawer-details" },
81
44
  react_1.default.createElement(material_1.Collapse, { in: mode === DrawerMode.Code || mode === DrawerMode.Copy, unmountOnExit: true },
82
45
  react_1.default.createElement("br", null),
@@ -0,0 +1,39 @@
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.FeatureLeaderboardEntryActions = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const lodash_1 = require("lodash");
9
+ const material_1 = require("@mui/material");
10
+ const ModeEdit_1 = __importDefault(require("@mui/icons-material/ModeEdit"));
11
+ const CopyAll_1 = __importDefault(require("@mui/icons-material/CopyAll"));
12
+ const Code_1 = __importDefault(require("@mui/icons-material/Code"));
13
+ const FeatureLeaderboardFeatureLikes_1 = require("../../components/FeatureLeaderboardFeatureLikes");
14
+ const FeatureLeaderboardEntryDrawer_1 = require("../FeatureLeaderboardEntryDrawer");
15
+ function isWithAction(actionName, isWithActions) {
16
+ var _a;
17
+ return (0, lodash_1.isBoolean)(isWithActions)
18
+ ? isWithActions
19
+ : (_a = isWithActions === null || isWithActions === void 0 ? void 0 : isWithActions[actionName]) !== null && _a !== void 0 ? _a : true;
20
+ }
21
+ const FeatureLeaderboardEntryActions = (props) => {
22
+ var _a;
23
+ const isWithEditAction = isWithAction('edit', props.isWithActions);
24
+ const isWithCopyAction = isWithAction('copy', props.isWithActions);
25
+ const isWithCodeAction = isWithAction('code', props.isWithActions);
26
+ const isWithLikes = (_a = props.isWithLikes) !== null && _a !== void 0 ? _a : true;
27
+ return (react_1.default.createElement("div", { style: { marginLeft: 'auto', display: 'flex', gap: '5px' } },
28
+ react_1.default.createElement("div", { className: "fl-entry-row-actions" },
29
+ react_1.default.createElement("div", { className: "fl-entry-row-hidden-actions" },
30
+ isWithEditAction ? (react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.onModeChange(FeatureLeaderboardEntryDrawer_1.DrawerMode.Edit) },
31
+ react_1.default.createElement(ModeEdit_1.default, { className: "action-btn" }))) : null,
32
+ isWithCopyAction ? (react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.onModeChange(FeatureLeaderboardEntryDrawer_1.DrawerMode.Copy) },
33
+ react_1.default.createElement(CopyAll_1.default, { className: "action-btn" }))) : null,
34
+ isWithCodeAction ? (react_1.default.createElement(material_1.IconButton, { color: "primary", size: "small", onClick: () => props.onModeChange(FeatureLeaderboardEntryDrawer_1.DrawerMode.Code) },
35
+ react_1.default.createElement(Code_1.default, { className: "action-btn" }))) : null)),
36
+ isWithLikes ? (react_1.default.createElement(FeatureLeaderboardFeatureLikes_1.FeatureLeaderboardFeatureLikes, { featureId: props.featureEntry.feature.id })) : null));
37
+ };
38
+ exports.FeatureLeaderboardEntryActions = FeatureLeaderboardEntryActions;
39
+ //# sourceMappingURL=FeatureLeaderboardEntryActions.js.map
@@ -0,0 +1,35 @@
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.FeatureLeaderboardEntryDrawerHeader = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const material_1 = require("@mui/material");
9
+ const _utils_1 = require("../../../../utils");
10
+ const FeatureLeaderboardEntryExplanation_1 = require("./FeatureLeaderboardEntryExplanation");
11
+ const FeatureLeaderboardEntryDrawer_1 = require("../FeatureLeaderboardEntryDrawer");
12
+ const FeatureLeaderboardEntryActions_1 = require("./FeatureLeaderboardEntryActions");
13
+ const DetailsToggle = (props) => (react_1.default.createElement("span", { className: "details-toggle", onClick: props.onClick },
14
+ react_1.default.createElement("span", null, "\u25B6")));
15
+ const FeatureLabel = (props) => (react_1.default.createElement("span", { className: "feature-name-label label-bold" },
16
+ react_1.default.createElement(material_1.Tooltip, { title: props.featureEntry.feature.id, placement: "bottom" },
17
+ react_1.default.createElement("span", null, props.featureEntry.feature.id))));
18
+ const FeatureLeaderboardEntryDrawerHeader = (props) => {
19
+ var _a;
20
+ const isWithAssessment = props.isWithAssessment;
21
+ const isAssessed = (_a = props.featureEntry.isAssessed) !== null && _a !== void 0 ? _a : isWithAssessment;
22
+ const toggleModel = (toggledMode) => {
23
+ return () => props.onModeChange(props.mode === toggledMode ? FeatureLeaderboardEntryDrawer_1.DrawerMode.None : toggledMode);
24
+ };
25
+ return (react_1.default.createElement("div", { className: "feature-leaderboard-entry-drawer-header", style: { display: 'flex' } },
26
+ isAssessed && isWithAssessment ? (react_1.default.createElement(DetailsToggle, { onClick: toggleModel(FeatureLeaderboardEntryDrawer_1.DrawerMode.Details) })) : isWithAssessment ? (react_1.default.createElement("span", { style: { width: '30px', display: 'inline-block' } })) : null,
27
+ react_1.default.createElement(FeatureLabel, { featureEntry: props.featureEntry }),
28
+ isWithAssessment ? (react_1.default.createElement("span", { className: "confidence-label", style: {
29
+ '--fill': `${props.featureEntry.signalConfidence * 100}%`,
30
+ } }, _utils_1.Localize.formatNumber(props.featureEntry.signalConfidence))) : null,
31
+ react_1.default.createElement(FeatureLeaderboardEntryExplanation_1.FeatureLeaderboardEntryExplanation, { feature: props.featureEntry.feature, isEdited: props.mode === FeatureLeaderboardEntryDrawer_1.DrawerMode.Edit, onClose: props.onCancel }),
32
+ react_1.default.createElement(FeatureLeaderboardEntryActions_1.FeatureLeaderboardEntryActions, Object.assign({}, props))));
33
+ };
34
+ exports.FeatureLeaderboardEntryDrawerHeader = FeatureLeaderboardEntryDrawerHeader;
35
+ //# sourceMappingURL=FeatureLeaderboardEntryDrawerHeader.js.map
@@ -0,0 +1,34 @@
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.FeatureLeaderboardEntryExplanation = exports.FeatureLeaderboardUserExplanationEditor = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ const widget_api_1 = require("../../../../utils/widget-api");
9
+ const widget_model_1 = require("../../../../utils/widget-model");
10
+ const feature_user_explanation_1 = require("../../../../feature/feature-user-explanation");
11
+ const FeatureExplanation_1 = require("../../../../feature/feature-explanation/FeatureExplanation");
12
+ const feature_user_explanation_2 = require("../../../../feature/feature-user-explanation");
13
+ const ActionFooter_1 = require("../../../../components/ActionFooter");
14
+ const FeatureLeaderboardUserExplanationEditor = (props) => {
15
+ const Widget = widget_api_1.WidgetApi.init((0, widget_model_1.useWidgetModelContext)());
16
+ const [userExplanation, setUserExplanation] = react_1.default.useState(props.feature.user_explanation ||
17
+ (0, feature_user_explanation_2.explanationToUserExplanation)(props.feature.explanation.tokens));
18
+ return (react_1.default.createElement("div", { style: { display: 'flex' } },
19
+ react_1.default.createElement(feature_user_explanation_2.FeatureUserExplanationEditor, { userExplanation: userExplanation, onUserExplanationChange: setUserExplanation }),
20
+ react_1.default.createElement(ActionFooter_1.ActionFooter, { primaryButton: { label: 'Save' }, tertiaryButton: { label: 'Cancel' }, onTertiaryButtonClick: props.onClose, onPrimaryButtonClick: () => {
21
+ Widget.callMethod('set_user_explanation', {
22
+ id: props.feature.id,
23
+ user_explanation: userExplanation,
24
+ })
25
+ .then(() => props.onClose())
26
+ .catch(e => console.error(e));
27
+ } })));
28
+ };
29
+ exports.FeatureLeaderboardUserExplanationEditor = FeatureLeaderboardUserExplanationEditor;
30
+ const FeatureLeaderboardEntryExplanation = (props) => {
31
+ return (react_1.default.createElement("div", { style: { flex: '1 0 auto' } }, props.isEdited ? (react_1.default.createElement(exports.FeatureLeaderboardUserExplanationEditor, Object.assign({}, props))) : props.feature.user_explanation ? (react_1.default.createElement(feature_user_explanation_1.FeatureUserExplanationDisplay, { userExplanation: props.feature.user_explanation })) : (react_1.default.createElement(FeatureExplanation_1.FeatureExplanation, { explanationBlocks: props.feature.explanation.tokens }))));
32
+ };
33
+ exports.FeatureLeaderboardEntryExplanation = FeatureLeaderboardEntryExplanation;
34
+ //# sourceMappingURL=FeatureLeaderboardEntryExplanation.js.map
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./FeatureLeaderboardEntryDrawerHeader"), exports);
18
+ //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dotdata_widgets",
3
- "version": "0.0.29",
3
+ "version": "0.0.121",
4
4
  "description": "A dotdata widget",
5
5
  "keywords": [
6
6
  "dotdata",
@@ -45,6 +45,7 @@
45
45
  "lint:check": "eslint . --ext .ts,.tsx",
46
46
  "prepack": "yarn run build:lib",
47
47
  "test": "jest",
48
+ "format": "prettier --write \"src/**/*.ts\"",
48
49
  "watch": "npm-run-all -p watch:*",
49
50
  "watch:lib": "concurrently \"tsc -w\" \"tsc-alias -w\"",
50
51
  "watch:nbextension": "webpack --watch --mode=development",
@@ -1,16 +0,0 @@
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.SourceTypeInt = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const SourceTypeInt = (props = { size: 24 }) => (react_1.default.createElement("svg", { viewBox: "0 0 24 24", width: props.size, height: props.size },
9
- react_1.default.createElement("g", null,
10
- react_1.default.createElement("rect", { width: "24", height: "24", fill: "#575757", rx: "3", x: "0", y: "0" }),
11
- react_1.default.createElement("text", { fill: "rgb(255, 255, 255)", style: {
12
- fontSize: '11px',
13
- fontWeight: '700'
14
- }, x: "3", y: "16" }))));
15
- exports.SourceTypeInt = SourceTypeInt;
16
- //# sourceMappingURL=source-type-int.js.map
@@ -1,25 +0,0 @@
1
- "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
10
- }
11
- return t;
12
- };
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.prettify = void 0;
15
- function prettify(item) {
16
- const { type } = item, fields = __rest(item, ["type"]);
17
- return `${type}(${Object.entries(fields)
18
- .map(([k, v]) => `${k.toString()}=${prettifyValue(v)}`)
19
- .join(', ')})`;
20
- function prettifyValue(value) {
21
- return typeof value === 'string' ? `'${value}'` : `${value}`;
22
- }
23
- }
24
- exports.prettify = prettify;
25
- //# sourceMappingURL=utils.js.map
@@ -1,15 +0,0 @@
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.FeatureLeaderboardEntryHeader = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const feature_user_explanation_1 = require("../../../feature/feature-user-explanation");
9
- const FeatureExplanation_1 = require("../../../feature/feature-explanation/FeatureExplanation");
10
- const FeatureLeaderboardUserExplanation_1 = require("./FeatureLeaderboardUserExplanation");
11
- const FeatureLeaderboardEntryHeader = (props) => {
12
- return (react_1.default.createElement("div", { style: { flex: '1 0 auto' } }, props.isEdited ? (react_1.default.createElement(FeatureLeaderboardUserExplanation_1.FeatureLeaderboardUserExplanation, { feature: props.feature, onClose: props.onClose })) : props.feature.user_explanation ? (react_1.default.createElement(feature_user_explanation_1.FeatureUserExplanationDisplay, { userExplanation: props.feature.user_explanation })) : (react_1.default.createElement(FeatureExplanation_1.FeatureExplanation, { explanationBlocks: props.feature.explanation.tokens }))));
13
- };
14
- exports.FeatureLeaderboardEntryHeader = FeatureLeaderboardEntryHeader;
15
- //# sourceMappingURL=FeatureLeaderboardEntryHeader.js.map
@@ -1,28 +0,0 @@
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.FeatureLeaderboardUserExplanation = void 0;
7
- const react_1 = __importDefault(require("react"));
8
- const widget_api_1 = require("../../../utils/widget-api");
9
- const widget_model_1 = require("../../../utils/widget-model");
10
- const ActionFooter_1 = require("../../../components/ActionFooter");
11
- const feature_user_explanation_1 = require("../../../feature/feature-user-explanation");
12
- const FeatureLeaderboardUserExplanation = (props) => {
13
- const Widget = widget_api_1.WidgetApi.init((0, widget_model_1.useWidgetModelContext)());
14
- const [userExplanation, setUserExplanation] = react_1.default.useState(props.feature.user_explanation ||
15
- (0, feature_user_explanation_1.explanationToUserExplanation)(props.feature.explanation.tokens));
16
- return (react_1.default.createElement("div", { style: { display: 'flex' } },
17
- react_1.default.createElement(feature_user_explanation_1.FeatureUserExplanation, { userExplanation: userExplanation, onUserExplanationChange: setUserExplanation }),
18
- react_1.default.createElement(ActionFooter_1.ActionFooter, { primaryButton: { label: 'Save' }, tertiaryButton: { label: 'Cancel' }, onTertiaryButtonClick: props.onClose, onPrimaryButtonClick: () => {
19
- Widget.callMethod('set_user_explanation', {
20
- id: props.feature.id,
21
- user_explanation: userExplanation,
22
- })
23
- .then(() => props.onClose())
24
- .catch(e => console.error(e));
25
- } })));
26
- };
27
- exports.FeatureLeaderboardUserExplanation = FeatureLeaderboardUserExplanation;
28
- //# sourceMappingURL=FeatureLeaderboardUserExplanation.js.map