@atlaskit/link-datasource 1.2.2 → 1.2.4
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.
- package/CHANGELOG.md +12 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.js +18 -0
- package/dist/cjs/analytics/ufoExperiences/{useDataRenderedUfoExperience.js → hooks/useDataRenderedUfoExperience.js} +1 -1
- package/dist/cjs/analytics/ufoExperiences/index.js +9 -1
- package/dist/cjs/ui/assets-modal/modal/index.js +1 -1
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +20 -3
- package/dist/cjs/ui/issue-like-table/column-picker/index.js +12 -1
- package/dist/cjs/ui/issue-like-table/index.js +22 -12
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +6 -3
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.js +11 -0
- package/dist/es2019/analytics/ufoExperiences/{useDataRenderedUfoExperience.js → hooks/useDataRenderedUfoExperience.js} +1 -1
- package/dist/es2019/analytics/ufoExperiences/index.js +9 -1
- package/dist/es2019/ui/assets-modal/modal/index.js +1 -1
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +20 -3
- package/dist/es2019/ui/issue-like-table/column-picker/index.js +12 -1
- package/dist/es2019/ui/issue-like-table/index.js +14 -4
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +6 -3
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.js +11 -0
- package/dist/esm/analytics/ufoExperiences/{useDataRenderedUfoExperience.js → hooks/useDataRenderedUfoExperience.js} +1 -1
- package/dist/esm/analytics/ufoExperiences/index.js +9 -1
- package/dist/esm/ui/assets-modal/modal/index.js +1 -1
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +20 -3
- package/dist/esm/ui/issue-like-table/column-picker/index.js +12 -1
- package/dist/esm/ui/issue-like-table/index.js +23 -13
- package/dist/esm/ui/jira-issues-modal/modal/index.js +6 -3
- package/dist/types/analytics/generated/analytics.types.d.ts +3 -4
- package/dist/types/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.d.ts +2 -0
- package/dist/types/analytics/ufoExperiences/types.d.ts +7 -1
- package/dist/types/ui/issue-like-table/column-picker/index.d.ts +1 -1
- package/dist/types/ui/issue-like-table/column-picker/types.d.ts +1 -0
- package/dist/types/ui/issue-like-table/index.d.ts +1 -1
- package/dist/types/ui/issue-like-table/types.d.ts +4 -0
- package/dist/types-ts4.5/analytics/generated/analytics.types.d.ts +3 -4
- package/dist/types-ts4.5/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.d.ts +2 -0
- package/dist/types-ts4.5/analytics/ufoExperiences/types.d.ts +7 -1
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/issue-like-table/column-picker/types.d.ts +1 -0
- package/dist/types-ts4.5/ui/issue-like-table/index.d.ts +1 -1
- package/dist/types-ts4.5/ui/issue-like-table/types.d.ts +4 -0
- package/package.json +2 -2
- /package/dist/types/analytics/ufoExperiences/{useDataRenderedUfoExperience.d.ts → hooks/useDataRenderedUfoExperience.d.ts} +0 -0
- /package/dist/types-ts4.5/analytics/ufoExperiences/{useDataRenderedUfoExperience.d.ts → hooks/useDataRenderedUfoExperience.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.2.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`172f52c6df8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/172f52c6df8) - Add UFO metrics to measure column picker performance
|
|
8
|
+
|
|
9
|
+
## 1.2.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`de4dddb97d4`](https://bitbucket.org/atlassian/atlassian-frontend/commits/de4dddb97d4) - Added 'ui.datasource.renderSuccess' event with display = 'table'
|
|
14
|
+
|
|
3
15
|
## 1.2.2
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useColumnPickerRenderedFailedUfoExperience = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _index = require("../index");
|
|
9
|
+
var useColumnPickerRenderedFailedUfoExperience = function useColumnPickerRenderedFailedUfoExperience(status, experienceId) {
|
|
10
|
+
(0, _react.useEffect)(function () {
|
|
11
|
+
if (status === 'rejected' && experienceId) {
|
|
12
|
+
(0, _index.failUfoExperience)({
|
|
13
|
+
name: 'column-picker-rendered'
|
|
14
|
+
}, experienceId);
|
|
15
|
+
}
|
|
16
|
+
}, [experienceId, status]);
|
|
17
|
+
};
|
|
18
|
+
exports.useColumnPickerRenderedFailedUfoExperience = useColumnPickerRenderedFailedUfoExperience;
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useDataRenderedUfoExperience = void 0;
|
|
7
7
|
var _react = require("react");
|
|
8
|
-
var _index = require("
|
|
8
|
+
var _index = require("../index");
|
|
9
9
|
/**
|
|
10
10
|
* Hook to mark DataRendered UFO experience as either Success or Failure
|
|
11
11
|
* 1. Success when
|
|
@@ -12,8 +12,16 @@ var datasourcePageSegmentLoadExperienceConfig = {
|
|
|
12
12
|
type: _ufo.ExperienceTypes.Load,
|
|
13
13
|
performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
|
|
14
14
|
};
|
|
15
|
+
var columnPickerCustomExperienceConfig = {
|
|
16
|
+
platform: {
|
|
17
|
+
component: 'datasource'
|
|
18
|
+
},
|
|
19
|
+
type: _ufo.ExperienceTypes.Operation,
|
|
20
|
+
performanceType: _ufo.ExperiencePerformanceTypes.Custom
|
|
21
|
+
};
|
|
15
22
|
var ufoExperiences = {
|
|
16
|
-
'datasource-rendered': new _ufo.ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig)
|
|
23
|
+
'datasource-rendered': new _ufo.ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
|
|
24
|
+
'column-picker-rendered': new _ufo.ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
|
|
17
25
|
};
|
|
18
26
|
var startUfoExperience = function startUfoExperience(_ref, id) {
|
|
19
27
|
var name = _ref.name,
|
|
@@ -231,7 +231,7 @@ var analyticsContextAttributes = {
|
|
|
231
231
|
};
|
|
232
232
|
var analyticsContextData = {
|
|
233
233
|
packageName: "@atlaskit/link-datasource",
|
|
234
|
-
packageVersion: "1.2.
|
|
234
|
+
packageVersion: "1.2.4",
|
|
235
235
|
source: 'datasourceConfigModal'
|
|
236
236
|
};
|
|
237
237
|
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
@@ -12,7 +12,8 @@ var _analyticsNext = require("@atlaskit/analytics-next");
|
|
|
12
12
|
var _analytics = require("../../analytics");
|
|
13
13
|
var _constants = require("../../analytics/constants");
|
|
14
14
|
var _ufoExperiences = require("../../analytics/ufoExperiences");
|
|
15
|
-
var
|
|
15
|
+
var _useColumnPickerRenderedFailedUfoExperience = require("../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience");
|
|
16
|
+
var _useDataRenderedUfoExperience = require("../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience");
|
|
16
17
|
var _useDatasourceTableState = require("../../hooks/useDatasourceTableState");
|
|
17
18
|
var _accessRequired = require("../common/error-state/access-required");
|
|
18
19
|
var _loadingError = require("../common/error-state/loading-error");
|
|
@@ -48,12 +49,15 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
48
49
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
49
50
|
var _useRef = (0, _react.useRef)((0, _uuid.v4)()),
|
|
50
51
|
tableRenderInstanceId = _useRef.current;
|
|
52
|
+
var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
51
53
|
|
|
52
54
|
/* Need this to make sure that the datasource in the editor gets updated new info if any edits are made in the modal
|
|
53
55
|
But we don't want to call it on initial load. This screws up useDatasourceTableState's internal
|
|
54
56
|
mechanism of initial loading. Use of ref here makes it basically work as a `componentDidUpdate` but not `componentDidMount`
|
|
55
57
|
*/
|
|
56
58
|
var isInitialRender = (0, _react.useRef)(true);
|
|
59
|
+
var isDataReady = columns.length > 0 && responseItems.length > 0 && totalCount && totalCount > 0;
|
|
60
|
+
visibleColumnCount.current = (visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0;
|
|
57
61
|
(0, _react.useEffect)(function () {
|
|
58
62
|
if (!isInitialRender.current) {
|
|
59
63
|
reset();
|
|
@@ -65,6 +69,18 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
65
69
|
onVisibleColumnKeysChange(defaultVisibleColumnKeys);
|
|
66
70
|
}
|
|
67
71
|
}, [visibleColumnKeys, defaultVisibleColumnKeys, onVisibleColumnKeysChange]);
|
|
72
|
+
(0, _react.useEffect)(function () {
|
|
73
|
+
var isTableViewRenderedWithData = status === 'resolved' && isDataReady;
|
|
74
|
+
if (isTableViewRenderedWithData) {
|
|
75
|
+
fireEvent('ui.datasource.renderSuccess', {
|
|
76
|
+
extensionKey: extensionKey,
|
|
77
|
+
destinationObjectTypes: destinationObjectTypes,
|
|
78
|
+
totalItemCount: totalCount,
|
|
79
|
+
displayedColumnCount: visibleColumnCount.current,
|
|
80
|
+
display: 'table'
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}, [totalCount, fireEvent, status, extensionKey, destinationObjectTypes, isDataReady]);
|
|
68
84
|
(0, _react.useEffect)(function () {
|
|
69
85
|
var shouldStartUfoExperience = datasourceId && parameters && visibleColumnKeys && status === 'loading';
|
|
70
86
|
if (shouldStartUfoExperience) {
|
|
@@ -73,6 +89,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
73
89
|
}, tableRenderInstanceId);
|
|
74
90
|
}
|
|
75
91
|
}, [datasourceId, parameters, status, tableRenderInstanceId, visibleColumnKeys]);
|
|
92
|
+
(0, _useColumnPickerRenderedFailedUfoExperience.useColumnPickerRenderedFailedUfoExperience)(status, tableRenderInstanceId);
|
|
76
93
|
(0, _useDataRenderedUfoExperience.useDataRenderedUfoExperience)({
|
|
77
94
|
status: status,
|
|
78
95
|
experienceId: tableRenderInstanceId,
|
|
@@ -101,7 +118,6 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
101
118
|
onRefresh: reset
|
|
102
119
|
});
|
|
103
120
|
}
|
|
104
|
-
var isDataReady = columns.length > 0;
|
|
105
121
|
return (
|
|
106
122
|
// datasource-table classname is to exclude all children from being commentable - exclude list is in CFE
|
|
107
123
|
(0, _react2.jsx)("div", {
|
|
@@ -117,7 +133,8 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
117
133
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
118
134
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange,
|
|
119
135
|
scrollableContainerHeight: 590,
|
|
120
|
-
parentContainerRenderInstanceId: tableRenderInstanceId
|
|
136
|
+
parentContainerRenderInstanceId: tableRenderInstanceId,
|
|
137
|
+
extensionKey: extensionKey
|
|
121
138
|
}) : (0, _react2.jsx)(_emptyState.default, {
|
|
122
139
|
testId: "datasource-table-view-skeleton",
|
|
123
140
|
isCompact: true,
|
|
@@ -16,6 +16,7 @@ var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-
|
|
|
16
16
|
var _board = _interopRequireDefault(require("@atlaskit/icon/glyph/board"));
|
|
17
17
|
var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-down"));
|
|
18
18
|
var _select = require("@atlaskit/select");
|
|
19
|
+
var _ufoExperiences = require("../../../analytics/ufoExperiences");
|
|
19
20
|
var _concatenatedMenuList = require("./concatenated-menu-list");
|
|
20
21
|
var _messages = require("./messages");
|
|
21
22
|
var _excluded = ["isOpen"];
|
|
@@ -24,7 +25,8 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
24
25
|
var columns = _ref.columns,
|
|
25
26
|
selectedColumnKeys = _ref.selectedColumnKeys,
|
|
26
27
|
onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
|
|
27
|
-
onOpen = _ref.onOpen
|
|
28
|
+
onOpen = _ref.onOpen,
|
|
29
|
+
parentContainerRenderInstanceId = _ref.parentContainerRenderInstanceId;
|
|
28
30
|
var intl = (0, _reactIntlNext.useIntl)();
|
|
29
31
|
var _useState = (0, _react.useState)([]),
|
|
30
32
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -102,6 +104,15 @@ var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
102
104
|
pickerRef === null || pickerRef === void 0 ? void 0 : (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : (_pickerRef$current$se = _pickerRef$current.selectRef) === null || _pickerRef$current$se === void 0 ? void 0 : (_pickerRef$current$se2 = _pickerRef$current$se.inputRef) === null || _pickerRef$current$se2 === void 0 ? void 0 : _pickerRef$current$se2.focus();
|
|
103
105
|
}
|
|
104
106
|
}, [allOptions]);
|
|
107
|
+
(0, _react.useEffect)(function () {
|
|
108
|
+
if (allOptions.length) {
|
|
109
|
+
if (parentContainerRenderInstanceId) {
|
|
110
|
+
(0, _ufoExperiences.succeedUfoExperience)({
|
|
111
|
+
name: 'column-picker-rendered'
|
|
112
|
+
}, parentContainerRenderInstanceId);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}, [allOptions, parentContainerRenderInstanceId]);
|
|
105
116
|
return (0, _react2.jsx)(_select.PopupSelect, {
|
|
106
117
|
classNamePrefix: 'column-picker-popup',
|
|
107
118
|
testId: 'column-picker-popup',
|
|
@@ -124,7 +124,8 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
124
124
|
status = _ref2.status,
|
|
125
125
|
hasNextPage = _ref2.hasNextPage,
|
|
126
126
|
scrollableContainerHeight = _ref2.scrollableContainerHeight,
|
|
127
|
-
parentContainerRenderInstanceId = _ref2.parentContainerRenderInstanceId
|
|
127
|
+
parentContainerRenderInstanceId = _ref2.parentContainerRenderInstanceId,
|
|
128
|
+
extensionKey = _ref2.extensionKey;
|
|
128
129
|
var tableId = (0, _react.useMemo)(function () {
|
|
129
130
|
return Symbol('unique-id');
|
|
130
131
|
}, []);
|
|
@@ -317,23 +318,31 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
317
318
|
}
|
|
318
319
|
return _context.abrupt("return");
|
|
319
320
|
case 2:
|
|
320
|
-
|
|
321
|
-
|
|
321
|
+
if (parentContainerRenderInstanceId) {
|
|
322
|
+
(0, _ufoExperiences.startUfoExperience)({
|
|
323
|
+
name: 'column-picker-rendered',
|
|
324
|
+
metadata: {
|
|
325
|
+
extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : undefined
|
|
326
|
+
}
|
|
327
|
+
}, parentContainerRenderInstanceId);
|
|
328
|
+
}
|
|
329
|
+
_context.prev = 3;
|
|
330
|
+
_context.next = 6;
|
|
322
331
|
return onLoadDatasourceDetails();
|
|
323
|
-
case
|
|
332
|
+
case 6:
|
|
324
333
|
setHasFullSchema(true);
|
|
325
|
-
_context.next =
|
|
334
|
+
_context.next = 12;
|
|
326
335
|
break;
|
|
327
|
-
case
|
|
328
|
-
_context.prev =
|
|
329
|
-
_context.t0 = _context["catch"](
|
|
336
|
+
case 9:
|
|
337
|
+
_context.prev = 9;
|
|
338
|
+
_context.t0 = _context["catch"](3);
|
|
330
339
|
setHasFullSchema(false);
|
|
331
|
-
case
|
|
340
|
+
case 12:
|
|
332
341
|
case "end":
|
|
333
342
|
return _context.stop();
|
|
334
343
|
}
|
|
335
|
-
}, _callee, null, [[
|
|
336
|
-
})), [hasFullSchema, onLoadDatasourceDetails]);
|
|
344
|
+
}, _callee, null, [[3, 9]]);
|
|
345
|
+
})), [parentContainerRenderInstanceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
|
|
337
346
|
return (0, _react2.jsx)("div", {
|
|
338
347
|
ref: containerRef,
|
|
339
348
|
css: scrollableContainerHeight ? scrollableContainerStyles : null,
|
|
@@ -396,7 +405,8 @@ var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
396
405
|
columns: hasFullSchema ? orderedColumns : [],
|
|
397
406
|
selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
|
|
398
407
|
onSelectedColumnKeysChange: onSelectedColumnKeysChange,
|
|
399
|
-
onOpen: handlePickerOpen
|
|
408
|
+
onOpen: handlePickerOpen,
|
|
409
|
+
parentContainerRenderInstanceId: parentContainerRenderInstanceId
|
|
400
410
|
})))), (0, _react2.jsx)("tbody", {
|
|
401
411
|
css: noDefaultBorderStyles,
|
|
402
412
|
"data-testid": testId && "".concat(testId, "--body")
|
|
@@ -23,7 +23,8 @@ var _analytics = require("../../../analytics");
|
|
|
23
23
|
var _constants = require("../../../analytics/constants");
|
|
24
24
|
var _types = require("../../../analytics/types");
|
|
25
25
|
var _ufoExperiences = require("../../../analytics/ufoExperiences");
|
|
26
|
-
var
|
|
26
|
+
var _useColumnPickerRenderedFailedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience");
|
|
27
|
+
var _useDataRenderedUfoExperience = require("../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience");
|
|
27
28
|
var _utils = require("../../../analytics/utils");
|
|
28
29
|
var _useDatasourceTableState = require("../../../hooks/useDatasourceTableState");
|
|
29
30
|
var _getAvailableJiraSites = require("../../../services/getAvailableJiraSites");
|
|
@@ -274,6 +275,7 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
274
275
|
fireCountViewedEvent();
|
|
275
276
|
}
|
|
276
277
|
}, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
|
|
278
|
+
(0, _useColumnPickerRenderedFailedUfoExperience.useColumnPickerRenderedFailedUfoExperience)(status, modalRenderInstanceId);
|
|
277
279
|
var onSearch = (0, _react.useCallback)(function (newParameters, searchMethod) {
|
|
278
280
|
searchCount.current++;
|
|
279
281
|
lastSearchMethodRef.current = searchMethod;
|
|
@@ -399,9 +401,10 @@ var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(props) {
|
|
|
399
401
|
onNextPage: handleOnNextPage,
|
|
400
402
|
onLoadDatasourceDetails: loadDatasourceDetails,
|
|
401
403
|
onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
|
|
402
|
-
parentContainerRenderInstanceId: modalRenderInstanceId
|
|
404
|
+
parentContainerRenderInstanceId: modalRenderInstanceId,
|
|
405
|
+
extensionKey: extensionKey
|
|
403
406
|
}));
|
|
404
|
-
}, [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys]);
|
|
407
|
+
}, [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey]);
|
|
405
408
|
var renderCountModeContent = (0, _react.useCallback)(function () {
|
|
406
409
|
var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
407
410
|
if (status === 'unauthorized') {
|
package/dist/es2019/analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { failUfoExperience } from '../index';
|
|
3
|
+
export const useColumnPickerRenderedFailedUfoExperience = (status, experienceId) => {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (status === 'rejected' && experienceId) {
|
|
6
|
+
failUfoExperience({
|
|
7
|
+
name: 'column-picker-rendered'
|
|
8
|
+
}, experienceId);
|
|
9
|
+
}
|
|
10
|
+
}, [experienceId, status]);
|
|
11
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import { addMetadataToExperience, failUfoExperience, succeedUfoExperience } from '
|
|
2
|
+
import { addMetadataToExperience, failUfoExperience, succeedUfoExperience } from '../index';
|
|
3
3
|
/**
|
|
4
4
|
* Hook to mark DataRendered UFO experience as either Success or Failure
|
|
5
5
|
* 1. Success when
|
|
@@ -6,8 +6,16 @@ const datasourcePageSegmentLoadExperienceConfig = {
|
|
|
6
6
|
type: ExperienceTypes.Load,
|
|
7
7
|
performanceType: ExperiencePerformanceTypes.PageSegmentLoad
|
|
8
8
|
};
|
|
9
|
+
const columnPickerCustomExperienceConfig = {
|
|
10
|
+
platform: {
|
|
11
|
+
component: 'datasource'
|
|
12
|
+
},
|
|
13
|
+
type: ExperienceTypes.Operation,
|
|
14
|
+
performanceType: ExperiencePerformanceTypes.Custom
|
|
15
|
+
};
|
|
9
16
|
const ufoExperiences = {
|
|
10
|
-
'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig)
|
|
17
|
+
'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
|
|
18
|
+
'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
|
|
11
19
|
};
|
|
12
20
|
export const startUfoExperience = ({
|
|
13
21
|
name,
|
|
@@ -6,7 +6,8 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
|
|
|
6
6
|
import { useDatasourceAnalyticsEvents } from '../../analytics';
|
|
7
7
|
import { packageMetaData } from '../../analytics/constants';
|
|
8
8
|
import { startUfoExperience } from '../../analytics/ufoExperiences';
|
|
9
|
-
import {
|
|
9
|
+
import { useColumnPickerRenderedFailedUfoExperience } from '../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
|
|
10
|
+
import { useDataRenderedUfoExperience } from '../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
|
|
10
11
|
import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
|
|
11
12
|
import { AccessRequired } from '../common/error-state/access-required';
|
|
12
13
|
import { LoadingError } from '../common/error-state/loading-error';
|
|
@@ -43,12 +44,15 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
43
44
|
const {
|
|
44
45
|
current: tableRenderInstanceId
|
|
45
46
|
} = useRef(uuidv4());
|
|
47
|
+
const visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
46
48
|
|
|
47
49
|
/* Need this to make sure that the datasource in the editor gets updated new info if any edits are made in the modal
|
|
48
50
|
But we don't want to call it on initial load. This screws up useDatasourceTableState's internal
|
|
49
51
|
mechanism of initial loading. Use of ref here makes it basically work as a `componentDidUpdate` but not `componentDidMount`
|
|
50
52
|
*/
|
|
51
53
|
const isInitialRender = useRef(true);
|
|
54
|
+
const isDataReady = columns.length > 0 && responseItems.length > 0 && totalCount && totalCount > 0;
|
|
55
|
+
visibleColumnCount.current = (visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0;
|
|
52
56
|
useEffect(() => {
|
|
53
57
|
if (!isInitialRender.current) {
|
|
54
58
|
reset();
|
|
@@ -60,6 +64,18 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
60
64
|
onVisibleColumnKeysChange(defaultVisibleColumnKeys);
|
|
61
65
|
}
|
|
62
66
|
}, [visibleColumnKeys, defaultVisibleColumnKeys, onVisibleColumnKeysChange]);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
const isTableViewRenderedWithData = status === 'resolved' && isDataReady;
|
|
69
|
+
if (isTableViewRenderedWithData) {
|
|
70
|
+
fireEvent('ui.datasource.renderSuccess', {
|
|
71
|
+
extensionKey,
|
|
72
|
+
destinationObjectTypes,
|
|
73
|
+
totalItemCount: totalCount,
|
|
74
|
+
displayedColumnCount: visibleColumnCount.current,
|
|
75
|
+
display: 'table'
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}, [totalCount, fireEvent, status, extensionKey, destinationObjectTypes, isDataReady]);
|
|
63
79
|
useEffect(() => {
|
|
64
80
|
const shouldStartUfoExperience = datasourceId && parameters && visibleColumnKeys && status === 'loading';
|
|
65
81
|
if (shouldStartUfoExperience) {
|
|
@@ -68,6 +84,7 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
68
84
|
}, tableRenderInstanceId);
|
|
69
85
|
}
|
|
70
86
|
}, [datasourceId, parameters, status, tableRenderInstanceId, visibleColumnKeys]);
|
|
87
|
+
useColumnPickerRenderedFailedUfoExperience(status, tableRenderInstanceId);
|
|
71
88
|
useDataRenderedUfoExperience({
|
|
72
89
|
status,
|
|
73
90
|
experienceId: tableRenderInstanceId,
|
|
@@ -96,7 +113,6 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
96
113
|
onRefresh: reset
|
|
97
114
|
});
|
|
98
115
|
}
|
|
99
|
-
const isDataReady = columns.length > 0;
|
|
100
116
|
return (
|
|
101
117
|
// datasource-table classname is to exclude all children from being commentable - exclude list is in CFE
|
|
102
118
|
jsx("div", {
|
|
@@ -112,7 +128,8 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
112
128
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
113
129
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange,
|
|
114
130
|
scrollableContainerHeight: 590,
|
|
115
|
-
parentContainerRenderInstanceId: tableRenderInstanceId
|
|
131
|
+
parentContainerRenderInstanceId: tableRenderInstanceId,
|
|
132
|
+
extensionKey: extensionKey
|
|
116
133
|
}) : jsx(EmptyState, {
|
|
117
134
|
testId: "datasource-table-view-skeleton",
|
|
118
135
|
isCompact: true,
|
|
@@ -7,13 +7,15 @@ import Button from '@atlaskit/button/standard-button';
|
|
|
7
7
|
import BoardIcon from '@atlaskit/icon/glyph/board';
|
|
8
8
|
import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
|
|
9
9
|
import { CheckboxOption, createFilter, PopupSelect } from '@atlaskit/select';
|
|
10
|
+
import { succeedUfoExperience } from '../../../analytics/ufoExperiences';
|
|
10
11
|
import { ConcatenatedMenuList } from './concatenated-menu-list';
|
|
11
12
|
import { columnPickerMessages } from './messages';
|
|
12
13
|
export const ColumnPicker = ({
|
|
13
14
|
columns,
|
|
14
15
|
selectedColumnKeys,
|
|
15
16
|
onSelectedColumnKeysChange,
|
|
16
|
-
onOpen
|
|
17
|
+
onOpen,
|
|
18
|
+
parentContainerRenderInstanceId
|
|
17
19
|
}) => {
|
|
18
20
|
const intl = useIntl();
|
|
19
21
|
const [allOptions, setAllOptions] = useState([]);
|
|
@@ -77,6 +79,15 @@ export const ColumnPicker = ({
|
|
|
77
79
|
pickerRef === null || pickerRef === void 0 ? void 0 : (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : (_pickerRef$current$se = _pickerRef$current.selectRef) === null || _pickerRef$current$se === void 0 ? void 0 : (_pickerRef$current$se2 = _pickerRef$current$se.inputRef) === null || _pickerRef$current$se2 === void 0 ? void 0 : _pickerRef$current$se2.focus();
|
|
78
80
|
}
|
|
79
81
|
}, [allOptions]);
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (allOptions.length) {
|
|
84
|
+
if (parentContainerRenderInstanceId) {
|
|
85
|
+
succeedUfoExperience({
|
|
86
|
+
name: 'column-picker-rendered'
|
|
87
|
+
}, parentContainerRenderInstanceId);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}, [allOptions, parentContainerRenderInstanceId]);
|
|
80
91
|
return jsx(PopupSelect, {
|
|
81
92
|
classNamePrefix: 'column-picker-popup',
|
|
82
93
|
testId: 'column-picker-popup',
|
|
@@ -12,7 +12,7 @@ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/el
|
|
|
12
12
|
import { combine } from '@atlaskit/pragmatic-drag-and-drop/util/combine';
|
|
13
13
|
import { N40 } from '@atlaskit/theme/colors';
|
|
14
14
|
import Tooltip from '@atlaskit/tooltip';
|
|
15
|
-
import { succeedUfoExperience } from '../../analytics/ufoExperiences';
|
|
15
|
+
import { startUfoExperience, succeedUfoExperience } from '../../analytics/ufoExperiences';
|
|
16
16
|
import { ColumnPicker } from './column-picker';
|
|
17
17
|
import { DragColumnPreview } from './drag-column-preview';
|
|
18
18
|
import { DraggableTableHeading } from './draggable-table-heading';
|
|
@@ -125,7 +125,8 @@ export const IssueLikeDataTableView = ({
|
|
|
125
125
|
status,
|
|
126
126
|
hasNextPage,
|
|
127
127
|
scrollableContainerHeight,
|
|
128
|
-
parentContainerRenderInstanceId
|
|
128
|
+
parentContainerRenderInstanceId,
|
|
129
|
+
extensionKey
|
|
129
130
|
}) => {
|
|
130
131
|
const tableId = useMemo(() => Symbol('unique-id'), []);
|
|
131
132
|
const [lastRowElement, setLastRowElement] = useState(null);
|
|
@@ -287,13 +288,21 @@ export const IssueLikeDataTableView = ({
|
|
|
287
288
|
if (hasFullSchema) {
|
|
288
289
|
return;
|
|
289
290
|
}
|
|
291
|
+
if (parentContainerRenderInstanceId) {
|
|
292
|
+
startUfoExperience({
|
|
293
|
+
name: 'column-picker-rendered',
|
|
294
|
+
metadata: {
|
|
295
|
+
extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : undefined
|
|
296
|
+
}
|
|
297
|
+
}, parentContainerRenderInstanceId);
|
|
298
|
+
}
|
|
290
299
|
try {
|
|
291
300
|
await onLoadDatasourceDetails();
|
|
292
301
|
setHasFullSchema(true);
|
|
293
302
|
} catch (e) {
|
|
294
303
|
setHasFullSchema(false);
|
|
295
304
|
}
|
|
296
|
-
}, [hasFullSchema, onLoadDatasourceDetails]);
|
|
305
|
+
}, [parentContainerRenderInstanceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
|
|
297
306
|
return jsx("div", {
|
|
298
307
|
ref: containerRef,
|
|
299
308
|
css: scrollableContainerHeight ? scrollableContainerStyles : null,
|
|
@@ -357,7 +366,8 @@ export const IssueLikeDataTableView = ({
|
|
|
357
366
|
columns: hasFullSchema ? orderedColumns : [],
|
|
358
367
|
selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
|
|
359
368
|
onSelectedColumnKeysChange: onSelectedColumnKeysChange,
|
|
360
|
-
onOpen: handlePickerOpen
|
|
369
|
+
onOpen: handlePickerOpen,
|
|
370
|
+
parentContainerRenderInstanceId: parentContainerRenderInstanceId
|
|
361
371
|
})))), jsx("tbody", {
|
|
362
372
|
css: noDefaultBorderStyles,
|
|
363
373
|
"data-testid": testId && `${testId}--body`
|
|
@@ -12,7 +12,8 @@ import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics'
|
|
|
12
12
|
import { packageMetaData } from '../../../analytics/constants';
|
|
13
13
|
import { DatasourceAction, DatasourceDisplay } from '../../../analytics/types';
|
|
14
14
|
import { startUfoExperience } from '../../../analytics/ufoExperiences';
|
|
15
|
-
import {
|
|
15
|
+
import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
|
|
16
|
+
import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
|
|
16
17
|
import { mapSearchMethod } from '../../../analytics/utils';
|
|
17
18
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
18
19
|
import { getAvailableJiraSites } from '../../../services/getAvailableJiraSites';
|
|
@@ -228,6 +229,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
228
229
|
fireCountViewedEvent();
|
|
229
230
|
}
|
|
230
231
|
}, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
|
|
232
|
+
useColumnPickerRenderedFailedUfoExperience(status, modalRenderInstanceId);
|
|
231
233
|
const onSearch = useCallback((newParameters, searchMethod) => {
|
|
232
234
|
searchCount.current++;
|
|
233
235
|
lastSearchMethodRef.current = searchMethod;
|
|
@@ -350,8 +352,9 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
350
352
|
onNextPage: handleOnNextPage,
|
|
351
353
|
onLoadDatasourceDetails: loadDatasourceDetails,
|
|
352
354
|
onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
|
|
353
|
-
parentContainerRenderInstanceId: modalRenderInstanceId
|
|
354
|
-
|
|
355
|
+
parentContainerRenderInstanceId: modalRenderInstanceId,
|
|
356
|
+
extensionKey: extensionKey
|
|
357
|
+
})), [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey]);
|
|
355
358
|
const renderCountModeContent = useCallback(() => {
|
|
356
359
|
const url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
357
360
|
if (status === 'unauthorized') {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { failUfoExperience } from '../index';
|
|
3
|
+
export var useColumnPickerRenderedFailedUfoExperience = function useColumnPickerRenderedFailedUfoExperience(status, experienceId) {
|
|
4
|
+
useEffect(function () {
|
|
5
|
+
if (status === 'rejected' && experienceId) {
|
|
6
|
+
failUfoExperience({
|
|
7
|
+
name: 'column-picker-rendered'
|
|
8
|
+
}, experienceId);
|
|
9
|
+
}
|
|
10
|
+
}, [experienceId, status]);
|
|
11
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
|
-
import { addMetadataToExperience, failUfoExperience, succeedUfoExperience } from '
|
|
2
|
+
import { addMetadataToExperience, failUfoExperience, succeedUfoExperience } from '../index';
|
|
3
3
|
/**
|
|
4
4
|
* Hook to mark DataRendered UFO experience as either Success or Failure
|
|
5
5
|
* 1. Success when
|
|
@@ -6,8 +6,16 @@ var datasourcePageSegmentLoadExperienceConfig = {
|
|
|
6
6
|
type: ExperienceTypes.Load,
|
|
7
7
|
performanceType: ExperiencePerformanceTypes.PageSegmentLoad
|
|
8
8
|
};
|
|
9
|
+
var columnPickerCustomExperienceConfig = {
|
|
10
|
+
platform: {
|
|
11
|
+
component: 'datasource'
|
|
12
|
+
},
|
|
13
|
+
type: ExperienceTypes.Operation,
|
|
14
|
+
performanceType: ExperiencePerformanceTypes.Custom
|
|
15
|
+
};
|
|
9
16
|
var ufoExperiences = {
|
|
10
|
-
'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig)
|
|
17
|
+
'datasource-rendered': new ConcurrentExperience('datasource-rendered', datasourcePageSegmentLoadExperienceConfig),
|
|
18
|
+
'column-picker-rendered': new ConcurrentExperience('column-picker-rendered', columnPickerCustomExperienceConfig)
|
|
11
19
|
};
|
|
12
20
|
export var startUfoExperience = function startUfoExperience(_ref, id) {
|
|
13
21
|
var name = _ref.name,
|
|
@@ -222,7 +222,7 @@ var analyticsContextAttributes = {
|
|
|
222
222
|
};
|
|
223
223
|
var analyticsContextData = {
|
|
224
224
|
packageName: "@atlaskit/link-datasource",
|
|
225
|
-
packageVersion: "1.2.
|
|
225
|
+
packageVersion: "1.2.4",
|
|
226
226
|
source: 'datasourceConfigModal'
|
|
227
227
|
};
|
|
228
228
|
var contextData = _objectSpread(_objectSpread({}, analyticsContextData), {}, {
|
|
@@ -6,7 +6,8 @@ import { withAnalyticsContext } from '@atlaskit/analytics-next';
|
|
|
6
6
|
import { useDatasourceAnalyticsEvents } from '../../analytics';
|
|
7
7
|
import { packageMetaData } from '../../analytics/constants';
|
|
8
8
|
import { startUfoExperience } from '../../analytics/ufoExperiences';
|
|
9
|
-
import {
|
|
9
|
+
import { useColumnPickerRenderedFailedUfoExperience } from '../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
|
|
10
|
+
import { useDataRenderedUfoExperience } from '../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
|
|
10
11
|
import { useDatasourceTableState } from '../../hooks/useDatasourceTableState';
|
|
11
12
|
import { AccessRequired } from '../common/error-state/access-required';
|
|
12
13
|
import { LoadingError } from '../common/error-state/loading-error';
|
|
@@ -40,12 +41,15 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
40
41
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
41
42
|
var _useRef = useRef(uuidv4()),
|
|
42
43
|
tableRenderInstanceId = _useRef.current;
|
|
44
|
+
var visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
43
45
|
|
|
44
46
|
/* Need this to make sure that the datasource in the editor gets updated new info if any edits are made in the modal
|
|
45
47
|
But we don't want to call it on initial load. This screws up useDatasourceTableState's internal
|
|
46
48
|
mechanism of initial loading. Use of ref here makes it basically work as a `componentDidUpdate` but not `componentDidMount`
|
|
47
49
|
*/
|
|
48
50
|
var isInitialRender = useRef(true);
|
|
51
|
+
var isDataReady = columns.length > 0 && responseItems.length > 0 && totalCount && totalCount > 0;
|
|
52
|
+
visibleColumnCount.current = (visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0;
|
|
49
53
|
useEffect(function () {
|
|
50
54
|
if (!isInitialRender.current) {
|
|
51
55
|
reset();
|
|
@@ -57,6 +61,18 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
57
61
|
onVisibleColumnKeysChange(defaultVisibleColumnKeys);
|
|
58
62
|
}
|
|
59
63
|
}, [visibleColumnKeys, defaultVisibleColumnKeys, onVisibleColumnKeysChange]);
|
|
64
|
+
useEffect(function () {
|
|
65
|
+
var isTableViewRenderedWithData = status === 'resolved' && isDataReady;
|
|
66
|
+
if (isTableViewRenderedWithData) {
|
|
67
|
+
fireEvent('ui.datasource.renderSuccess', {
|
|
68
|
+
extensionKey: extensionKey,
|
|
69
|
+
destinationObjectTypes: destinationObjectTypes,
|
|
70
|
+
totalItemCount: totalCount,
|
|
71
|
+
displayedColumnCount: visibleColumnCount.current,
|
|
72
|
+
display: 'table'
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}, [totalCount, fireEvent, status, extensionKey, destinationObjectTypes, isDataReady]);
|
|
60
76
|
useEffect(function () {
|
|
61
77
|
var shouldStartUfoExperience = datasourceId && parameters && visibleColumnKeys && status === 'loading';
|
|
62
78
|
if (shouldStartUfoExperience) {
|
|
@@ -65,6 +81,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
65
81
|
}, tableRenderInstanceId);
|
|
66
82
|
}
|
|
67
83
|
}, [datasourceId, parameters, status, tableRenderInstanceId, visibleColumnKeys]);
|
|
84
|
+
useColumnPickerRenderedFailedUfoExperience(status, tableRenderInstanceId);
|
|
68
85
|
useDataRenderedUfoExperience({
|
|
69
86
|
status: status,
|
|
70
87
|
experienceId: tableRenderInstanceId,
|
|
@@ -93,7 +110,6 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
93
110
|
onRefresh: reset
|
|
94
111
|
});
|
|
95
112
|
}
|
|
96
|
-
var isDataReady = columns.length > 0;
|
|
97
113
|
return (
|
|
98
114
|
// datasource-table classname is to exclude all children from being commentable - exclude list is in CFE
|
|
99
115
|
jsx("div", {
|
|
@@ -109,7 +125,8 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
109
125
|
visibleColumnKeys: visibleColumnKeys || defaultVisibleColumnKeys,
|
|
110
126
|
onVisibleColumnKeysChange: onVisibleColumnKeysChange,
|
|
111
127
|
scrollableContainerHeight: 590,
|
|
112
|
-
parentContainerRenderInstanceId: tableRenderInstanceId
|
|
128
|
+
parentContainerRenderInstanceId: tableRenderInstanceId,
|
|
129
|
+
extensionKey: extensionKey
|
|
113
130
|
}) : jsx(EmptyState, {
|
|
114
131
|
testId: "datasource-table-view-skeleton",
|
|
115
132
|
isCompact: true,
|
|
@@ -11,13 +11,15 @@ import Button from '@atlaskit/button/standard-button';
|
|
|
11
11
|
import BoardIcon from '@atlaskit/icon/glyph/board';
|
|
12
12
|
import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
|
|
13
13
|
import { CheckboxOption, createFilter, PopupSelect } from '@atlaskit/select';
|
|
14
|
+
import { succeedUfoExperience } from '../../../analytics/ufoExperiences';
|
|
14
15
|
import { ConcatenatedMenuList } from './concatenated-menu-list';
|
|
15
16
|
import { columnPickerMessages } from './messages';
|
|
16
17
|
export var ColumnPicker = function ColumnPicker(_ref) {
|
|
17
18
|
var columns = _ref.columns,
|
|
18
19
|
selectedColumnKeys = _ref.selectedColumnKeys,
|
|
19
20
|
onSelectedColumnKeysChange = _ref.onSelectedColumnKeysChange,
|
|
20
|
-
onOpen = _ref.onOpen
|
|
21
|
+
onOpen = _ref.onOpen,
|
|
22
|
+
parentContainerRenderInstanceId = _ref.parentContainerRenderInstanceId;
|
|
21
23
|
var intl = useIntl();
|
|
22
24
|
var _useState = useState([]),
|
|
23
25
|
_useState2 = _slicedToArray(_useState, 2),
|
|
@@ -95,6 +97,15 @@ export var ColumnPicker = function ColumnPicker(_ref) {
|
|
|
95
97
|
pickerRef === null || pickerRef === void 0 ? void 0 : (_pickerRef$current = pickerRef.current) === null || _pickerRef$current === void 0 ? void 0 : (_pickerRef$current$se = _pickerRef$current.selectRef) === null || _pickerRef$current$se === void 0 ? void 0 : (_pickerRef$current$se2 = _pickerRef$current$se.inputRef) === null || _pickerRef$current$se2 === void 0 ? void 0 : _pickerRef$current$se2.focus();
|
|
96
98
|
}
|
|
97
99
|
}, [allOptions]);
|
|
100
|
+
useEffect(function () {
|
|
101
|
+
if (allOptions.length) {
|
|
102
|
+
if (parentContainerRenderInstanceId) {
|
|
103
|
+
succeedUfoExperience({
|
|
104
|
+
name: 'column-picker-rendered'
|
|
105
|
+
}, parentContainerRenderInstanceId);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, [allOptions, parentContainerRenderInstanceId]);
|
|
98
109
|
return jsx(PopupSelect, {
|
|
99
110
|
classNamePrefix: 'column-picker-popup',
|
|
100
111
|
testId: 'column-picker-popup',
|
|
@@ -21,7 +21,7 @@ import { monitorForElements } from '@atlaskit/pragmatic-drag-and-drop/adapter/el
|
|
|
21
21
|
import { combine } from '@atlaskit/pragmatic-drag-and-drop/util/combine';
|
|
22
22
|
import { N40 } from '@atlaskit/theme/colors';
|
|
23
23
|
import Tooltip from '@atlaskit/tooltip';
|
|
24
|
-
import { succeedUfoExperience } from '../../analytics/ufoExperiences';
|
|
24
|
+
import { startUfoExperience, succeedUfoExperience } from '../../analytics/ufoExperiences';
|
|
25
25
|
import { ColumnPicker } from './column-picker';
|
|
26
26
|
import { DragColumnPreview } from './drag-column-preview';
|
|
27
27
|
import { DraggableTableHeading } from './draggable-table-heading';
|
|
@@ -117,7 +117,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
117
117
|
status = _ref2.status,
|
|
118
118
|
hasNextPage = _ref2.hasNextPage,
|
|
119
119
|
scrollableContainerHeight = _ref2.scrollableContainerHeight,
|
|
120
|
-
parentContainerRenderInstanceId = _ref2.parentContainerRenderInstanceId
|
|
120
|
+
parentContainerRenderInstanceId = _ref2.parentContainerRenderInstanceId,
|
|
121
|
+
extensionKey = _ref2.extensionKey;
|
|
121
122
|
var tableId = useMemo(function () {
|
|
122
123
|
return Symbol('unique-id');
|
|
123
124
|
}, []);
|
|
@@ -310,23 +311,31 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
310
311
|
}
|
|
311
312
|
return _context.abrupt("return");
|
|
312
313
|
case 2:
|
|
313
|
-
|
|
314
|
-
|
|
314
|
+
if (parentContainerRenderInstanceId) {
|
|
315
|
+
startUfoExperience({
|
|
316
|
+
name: 'column-picker-rendered',
|
|
317
|
+
metadata: {
|
|
318
|
+
extensionKey: extensionKey !== null && extensionKey !== void 0 ? extensionKey : undefined
|
|
319
|
+
}
|
|
320
|
+
}, parentContainerRenderInstanceId);
|
|
321
|
+
}
|
|
322
|
+
_context.prev = 3;
|
|
323
|
+
_context.next = 6;
|
|
315
324
|
return onLoadDatasourceDetails();
|
|
316
|
-
case
|
|
325
|
+
case 6:
|
|
317
326
|
setHasFullSchema(true);
|
|
318
|
-
_context.next =
|
|
327
|
+
_context.next = 12;
|
|
319
328
|
break;
|
|
320
|
-
case
|
|
321
|
-
_context.prev =
|
|
322
|
-
_context.t0 = _context["catch"](
|
|
329
|
+
case 9:
|
|
330
|
+
_context.prev = 9;
|
|
331
|
+
_context.t0 = _context["catch"](3);
|
|
323
332
|
setHasFullSchema(false);
|
|
324
|
-
case
|
|
333
|
+
case 12:
|
|
325
334
|
case "end":
|
|
326
335
|
return _context.stop();
|
|
327
336
|
}
|
|
328
|
-
}, _callee, null, [[
|
|
329
|
-
})), [hasFullSchema, onLoadDatasourceDetails]);
|
|
337
|
+
}, _callee, null, [[3, 9]]);
|
|
338
|
+
})), [parentContainerRenderInstanceId, extensionKey, hasFullSchema, onLoadDatasourceDetails]);
|
|
330
339
|
return jsx("div", {
|
|
331
340
|
ref: containerRef,
|
|
332
341
|
css: scrollableContainerHeight ? scrollableContainerStyles : null,
|
|
@@ -389,7 +398,8 @@ export var IssueLikeDataTableView = function IssueLikeDataTableView(_ref2) {
|
|
|
389
398
|
columns: hasFullSchema ? orderedColumns : [],
|
|
390
399
|
selectedColumnKeys: hasFullSchema ? visibleColumnKeys : [],
|
|
391
400
|
onSelectedColumnKeysChange: onSelectedColumnKeysChange,
|
|
392
|
-
onOpen: handlePickerOpen
|
|
401
|
+
onOpen: handlePickerOpen,
|
|
402
|
+
parentContainerRenderInstanceId: parentContainerRenderInstanceId
|
|
393
403
|
})))), jsx("tbody", {
|
|
394
404
|
css: noDefaultBorderStyles,
|
|
395
405
|
"data-testid": testId && "".concat(testId, "--body")
|
|
@@ -18,7 +18,8 @@ import { EVENT_CHANNEL, useDatasourceAnalyticsEvents } from '../../../analytics'
|
|
|
18
18
|
import { packageMetaData } from '../../../analytics/constants';
|
|
19
19
|
import { DatasourceAction, DatasourceDisplay } from '../../../analytics/types';
|
|
20
20
|
import { startUfoExperience } from '../../../analytics/ufoExperiences';
|
|
21
|
-
import {
|
|
21
|
+
import { useColumnPickerRenderedFailedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useColumnPickerRenderedFailedUfoExperience';
|
|
22
|
+
import { useDataRenderedUfoExperience } from '../../../analytics/ufoExperiences/hooks/useDataRenderedUfoExperience';
|
|
22
23
|
import { mapSearchMethod } from '../../../analytics/utils';
|
|
23
24
|
import { useDatasourceTableState } from '../../../hooks/useDatasourceTableState';
|
|
24
25
|
import { getAvailableJiraSites } from '../../../services/getAvailableJiraSites';
|
|
@@ -264,6 +265,7 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
264
265
|
fireCountViewedEvent();
|
|
265
266
|
}
|
|
266
267
|
}, [currentViewMode, status, fireIssueViewAnalytics, fireCountViewedEvent]);
|
|
268
|
+
useColumnPickerRenderedFailedUfoExperience(status, modalRenderInstanceId);
|
|
267
269
|
var onSearch = useCallback(function (newParameters, searchMethod) {
|
|
268
270
|
searchCount.current++;
|
|
269
271
|
lastSearchMethodRef.current = searchMethod;
|
|
@@ -389,9 +391,10 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
389
391
|
onNextPage: handleOnNextPage,
|
|
390
392
|
onLoadDatasourceDetails: loadDatasourceDetails,
|
|
391
393
|
onVisibleColumnKeysChange: handleVisibleColumnKeysChange,
|
|
392
|
-
parentContainerRenderInstanceId: modalRenderInstanceId
|
|
394
|
+
parentContainerRenderInstanceId: modalRenderInstanceId,
|
|
395
|
+
extensionKey: extensionKey
|
|
393
396
|
}));
|
|
394
|
-
}, [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys]);
|
|
397
|
+
}, [columns, defaultVisibleColumnKeys, handleOnNextPage, handleVisibleColumnKeysChange, hasNextPage, loadDatasourceDetails, modalRenderInstanceId, responseItems, status, visibleColumnKeys, extensionKey]);
|
|
395
398
|
var renderCountModeContent = useCallback(function () {
|
|
396
399
|
var url = selectedJiraSite === null || selectedJiraSite === void 0 ? void 0 : selectedJiraSite.url;
|
|
397
400
|
if (status === 'unauthorized') {
|
|
@@ -50,13 +50,12 @@ export type LinkClickedSingleItemAttributesType = {
|
|
|
50
50
|
extensionKey: string | null;
|
|
51
51
|
destinationObjectTypes: unknown[];
|
|
52
52
|
};
|
|
53
|
-
export type
|
|
53
|
+
export type DatasourceRenderSuccessAttributesType = {
|
|
54
54
|
totalItemCount: number;
|
|
55
55
|
destinationObjectTypes: unknown[];
|
|
56
56
|
displayedColumnCount: number | null;
|
|
57
57
|
extensionKey: string | null;
|
|
58
|
-
display: '
|
|
59
|
-
status: 'resolved' | 'unauthorized' | 'forbidden' | 'not_found' | 'errored';
|
|
58
|
+
display: 'table';
|
|
60
59
|
};
|
|
61
60
|
export type NextItemLoadedAttributesType = {
|
|
62
61
|
destinationObjectTypes: unknown[];
|
|
@@ -114,7 +113,7 @@ export type AnalyticsEventAttributes = {
|
|
|
114
113
|
'ui.link.clicked.singleItem': LinkClickedSingleItemAttributesType;
|
|
115
114
|
/**
|
|
116
115
|
* Fired when an inserted datasource resolves / renders. */
|
|
117
|
-
'ui.datasource.
|
|
116
|
+
'ui.datasource.renderSuccess': DatasourceRenderSuccessAttributesType;
|
|
118
117
|
/**
|
|
119
118
|
* Fired when user scrolls to the next page/list of the objects */
|
|
120
119
|
'track.nextItem.loaded': NextItemLoadedAttributesType;
|
|
@@ -4,5 +4,11 @@ interface DatasourceRendered {
|
|
|
4
4
|
extensionKey?: string;
|
|
5
5
|
};
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
interface ColumnPickerRendered {
|
|
8
|
+
name: 'column-picker-rendered';
|
|
9
|
+
metadata?: {
|
|
10
|
+
extensionKey?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export type UfoExperience = DatasourceRendered | ColumnPickerRendered;
|
|
8
14
|
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react';
|
|
2
2
|
import { ColumnPickerProps } from './types';
|
|
3
|
-
export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, }: ColumnPickerProps) => jsx.JSX.Element;
|
|
3
|
+
export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, parentContainerRenderInstanceId, }: ColumnPickerProps) => jsx.JSX.Element;
|
|
@@ -12,5 +12,5 @@ export interface RowCellType {
|
|
|
12
12
|
content?: React.ReactNode | string;
|
|
13
13
|
maxWidth?: number;
|
|
14
14
|
}
|
|
15
|
-
export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, scrollableContainerHeight, parentContainerRenderInstanceId, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
|
|
15
|
+
export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, scrollableContainerHeight, parentContainerRenderInstanceId, extensionKey, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
|
|
16
16
|
export declare const EmptyState: ({ isCompact, isLoading, testId }: import("./empty-state").Props) => jsx.JSX.Element;
|
|
@@ -8,6 +8,10 @@ export interface IssueLikeDataTableViewProps {
|
|
|
8
8
|
* Unique ID to indicate parent component instance to be used for UFO experiences
|
|
9
9
|
*/
|
|
10
10
|
parentContainerRenderInstanceId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Datasource extension key. Optional as value may not have been returned yet
|
|
13
|
+
*/
|
|
14
|
+
extensionKey?: string | null;
|
|
11
15
|
/**
|
|
12
16
|
* All available columns/properties.
|
|
13
17
|
* Consumer should not reorder these columns to align with `visibleColumnKeys`.
|
|
@@ -50,13 +50,12 @@ export type LinkClickedSingleItemAttributesType = {
|
|
|
50
50
|
extensionKey: string | null;
|
|
51
51
|
destinationObjectTypes: unknown[];
|
|
52
52
|
};
|
|
53
|
-
export type
|
|
53
|
+
export type DatasourceRenderSuccessAttributesType = {
|
|
54
54
|
totalItemCount: number;
|
|
55
55
|
destinationObjectTypes: unknown[];
|
|
56
56
|
displayedColumnCount: number | null;
|
|
57
57
|
extensionKey: string | null;
|
|
58
|
-
display: '
|
|
59
|
-
status: 'resolved' | 'unauthorized' | 'forbidden' | 'not_found' | 'errored';
|
|
58
|
+
display: 'table';
|
|
60
59
|
};
|
|
61
60
|
export type NextItemLoadedAttributesType = {
|
|
62
61
|
destinationObjectTypes: unknown[];
|
|
@@ -114,7 +113,7 @@ export type AnalyticsEventAttributes = {
|
|
|
114
113
|
'ui.link.clicked.singleItem': LinkClickedSingleItemAttributesType;
|
|
115
114
|
/**
|
|
116
115
|
* Fired when an inserted datasource resolves / renders. */
|
|
117
|
-
'ui.datasource.
|
|
116
|
+
'ui.datasource.renderSuccess': DatasourceRenderSuccessAttributesType;
|
|
118
117
|
/**
|
|
119
118
|
* Fired when user scrolls to the next page/list of the objects */
|
|
120
119
|
'track.nextItem.loaded': NextItemLoadedAttributesType;
|
|
@@ -4,5 +4,11 @@ interface DatasourceRendered {
|
|
|
4
4
|
extensionKey?: string;
|
|
5
5
|
};
|
|
6
6
|
}
|
|
7
|
-
|
|
7
|
+
interface ColumnPickerRendered {
|
|
8
|
+
name: 'column-picker-rendered';
|
|
9
|
+
metadata?: {
|
|
10
|
+
extensionKey?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export type UfoExperience = DatasourceRendered | ColumnPickerRendered;
|
|
8
14
|
export {};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { jsx } from '@emotion/react';
|
|
2
2
|
import { ColumnPickerProps } from './types';
|
|
3
|
-
export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, }: ColumnPickerProps) => jsx.JSX.Element;
|
|
3
|
+
export declare const ColumnPicker: ({ columns, selectedColumnKeys, onSelectedColumnKeysChange, onOpen, parentContainerRenderInstanceId, }: ColumnPickerProps) => jsx.JSX.Element;
|
|
@@ -12,5 +12,5 @@ export interface RowCellType {
|
|
|
12
12
|
content?: React.ReactNode | string;
|
|
13
13
|
maxWidth?: number;
|
|
14
14
|
}
|
|
15
|
-
export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, scrollableContainerHeight, parentContainerRenderInstanceId, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
|
|
15
|
+
export declare const IssueLikeDataTableView: ({ testId, onNextPage, onLoadDatasourceDetails, items, columns, renderItem, visibleColumnKeys, onVisibleColumnKeysChange, status, hasNextPage, scrollableContainerHeight, parentContainerRenderInstanceId, extensionKey, }: IssueLikeDataTableViewProps) => jsx.JSX.Element;
|
|
16
16
|
export declare const EmptyState: ({ isCompact, isLoading, testId }: import("./empty-state").Props) => jsx.JSX.Element;
|
|
@@ -8,6 +8,10 @@ export interface IssueLikeDataTableViewProps {
|
|
|
8
8
|
* Unique ID to indicate parent component instance to be used for UFO experiences
|
|
9
9
|
*/
|
|
10
10
|
parentContainerRenderInstanceId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Datasource extension key. Optional as value may not have been returned yet
|
|
13
|
+
*/
|
|
14
|
+
extensionKey?: string | null;
|
|
11
15
|
/**
|
|
12
16
|
* All available columns/properties.
|
|
13
17
|
* Consumer should not reorder these columns to align with `visibleColumnKeys`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/link-datasource",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "UI Components to support linking platform dataset feature",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"@atlaskit/tag": "^11.6.0",
|
|
59
59
|
"@atlaskit/textfield": "5.6.7",
|
|
60
60
|
"@atlaskit/theme": "^12.6.0",
|
|
61
|
-
"@atlaskit/tokens": "^1.
|
|
61
|
+
"@atlaskit/tokens": "^1.24.0",
|
|
62
62
|
"@atlaskit/tooltip": "^17.8.0",
|
|
63
63
|
"@atlaskit/ufo": "^0.2.4",
|
|
64
64
|
"@atlassianlabs/jql-editor": "^2.0.1",
|
|
File without changes
|