@atlaskit/link-datasource 1.19.17 → 1.19.18
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 +6 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/hooks/useDatasourceTableState.js +46 -18
- package/dist/cjs/ui/datasource-table-view/datasourceTableView.js +1 -1
- package/dist/cjs/ui/jira-issues-modal/jira-search-container/index.js +34 -36
- package/dist/cjs/ui/jira-issues-modal/modal/index.js +27 -16
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/hooks/useDatasourceTableState.js +20 -4
- package/dist/es2019/ui/datasource-table-view/datasourceTableView.js +1 -1
- package/dist/es2019/ui/jira-issues-modal/jira-search-container/index.js +19 -19
- package/dist/es2019/ui/jira-issues-modal/modal/index.js +13 -5
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/hooks/useDatasourceTableState.js +46 -18
- package/dist/esm/ui/datasource-table-view/datasourceTableView.js +1 -1
- package/dist/esm/ui/jira-issues-modal/jira-search-container/index.js +34 -36
- package/dist/esm/ui/jira-issues-modal/modal/index.js +27 -16
- package/dist/types/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -0
- package/dist/types-ts4.5/ui/jira-issues-modal/jira-search-container/index.d.ts +2 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @atlaskit/link-datasource
|
|
2
2
|
|
|
3
|
+
## 1.19.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#57736](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/57736) [`d8193e501bcc`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/d8193e501bcc) - [ux] Changes behavior of datasource modal to persist query changes on insert without needing to click search.
|
|
8
|
+
|
|
3
9
|
## 1.19.17
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -7,5 +7,5 @@ exports.packageMetaData = exports.EVENT_CHANNEL = void 0;
|
|
|
7
7
|
var EVENT_CHANNEL = exports.EVENT_CHANNEL = 'media';
|
|
8
8
|
var packageMetaData = exports.packageMetaData = {
|
|
9
9
|
packageName: "@atlaskit/link-datasource",
|
|
10
|
-
packageVersion: "1.19.
|
|
10
|
+
packageVersion: "1.19.18"
|
|
11
11
|
};
|
|
@@ -98,13 +98,20 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
98
98
|
_yield$getDatasourceD = _context.sent;
|
|
99
99
|
access = _yield$getDatasourceD.meta.access;
|
|
100
100
|
schema = _yield$getDatasourceD.data.schema;
|
|
101
|
-
if (!(access === '
|
|
101
|
+
if (!(access === 'unauthorized')) {
|
|
102
102
|
_context.next = 11;
|
|
103
103
|
break;
|
|
104
104
|
}
|
|
105
105
|
setStatus('unauthorized');
|
|
106
106
|
return _context.abrupt("return");
|
|
107
107
|
case 11:
|
|
108
|
+
if (!(access === 'forbidden')) {
|
|
109
|
+
_context.next = 14;
|
|
110
|
+
break;
|
|
111
|
+
}
|
|
112
|
+
setStatus('forbidden');
|
|
113
|
+
return _context.abrupt("return");
|
|
114
|
+
case 14:
|
|
108
115
|
isColumnNotPresentInCurrentColumnsList = function isColumnNotPresentInCurrentColumnsList(col) {
|
|
109
116
|
return !columns.find(function (column) {
|
|
110
117
|
return column.key === col.key;
|
|
@@ -113,25 +120,32 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
113
120
|
allColumns = schema.properties;
|
|
114
121
|
newColumns = allColumns.filter(isColumnNotPresentInCurrentColumnsList);
|
|
115
122
|
newColumns.length > 0 && setColumns([].concat((0, _toConsumableArray2.default)(columns), (0, _toConsumableArray2.default)(newColumns)));
|
|
116
|
-
_context.next =
|
|
123
|
+
_context.next = 30;
|
|
117
124
|
break;
|
|
118
|
-
case
|
|
119
|
-
_context.prev =
|
|
125
|
+
case 20:
|
|
126
|
+
_context.prev = 20;
|
|
120
127
|
_context.t0 = _context["catch"](2);
|
|
121
128
|
captureError('loadDatasourceDetails', _context.t0);
|
|
122
|
-
if (!(_context.t0 instanceof Response &&
|
|
123
|
-
_context.next =
|
|
129
|
+
if (!(_context.t0 instanceof Response && _context.t0.status === 401)) {
|
|
130
|
+
_context.next = 26;
|
|
124
131
|
break;
|
|
125
132
|
}
|
|
126
133
|
setStatus('unauthorized');
|
|
127
134
|
return _context.abrupt("return");
|
|
128
|
-
case
|
|
135
|
+
case 26:
|
|
136
|
+
if (!(_context.t0 instanceof Response && _context.t0.status === 403)) {
|
|
137
|
+
_context.next = 29;
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
setStatus('forbidden');
|
|
141
|
+
return _context.abrupt("return");
|
|
142
|
+
case 29:
|
|
129
143
|
setStatus('rejected');
|
|
130
|
-
case
|
|
144
|
+
case 30:
|
|
131
145
|
case "end":
|
|
132
146
|
return _context.stop();
|
|
133
147
|
}
|
|
134
|
-
}, _callee, null, [[2,
|
|
148
|
+
}, _callee, null, [[2, 20]]);
|
|
135
149
|
})), [captureError, columns, datasourceId, getDatasourceDetails, parameters]);
|
|
136
150
|
var applySchemaProperties = (0, _react.useCallback)(function (schema, fieldKeys) {
|
|
137
151
|
var properties = schema.properties,
|
|
@@ -225,13 +239,20 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
225
239
|
nextPageCursor = _yield$getDatasourceD4.nextPageCursor;
|
|
226
240
|
_totalCount = _yield$getDatasourceD4.totalCount;
|
|
227
241
|
schema = _yield$getDatasourceD4.schema;
|
|
228
|
-
if (!(access === '
|
|
242
|
+
if (!(access === 'unauthorized')) {
|
|
229
243
|
_context2.next = 23;
|
|
230
244
|
break;
|
|
231
245
|
}
|
|
232
246
|
setStatus('unauthorized');
|
|
233
247
|
return _context2.abrupt("return");
|
|
234
248
|
case 23:
|
|
249
|
+
if (!(access === 'forbidden')) {
|
|
250
|
+
_context2.next = 26;
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
setStatus('forbidden');
|
|
254
|
+
return _context2.abrupt("return");
|
|
255
|
+
case 26:
|
|
235
256
|
setExtensionKey(_extensionKey);
|
|
236
257
|
setDestinationObjectTypes(_destinationObjectTypes);
|
|
237
258
|
setTotalCount(_totalCount);
|
|
@@ -260,25 +281,32 @@ var useDatasourceTableState = exports.useDatasourceTableState = function useData
|
|
|
260
281
|
});
|
|
261
282
|
}
|
|
262
283
|
setStatus('resolved');
|
|
263
|
-
_context2.next =
|
|
284
|
+
_context2.next = 49;
|
|
264
285
|
break;
|
|
265
|
-
case
|
|
266
|
-
_context2.prev =
|
|
286
|
+
case 39:
|
|
287
|
+
_context2.prev = 39;
|
|
267
288
|
_context2.t0 = _context2["catch"](7);
|
|
268
289
|
captureError('onNextPage', _context2.t0);
|
|
269
|
-
if (!(_context2.t0 instanceof Response &&
|
|
270
|
-
_context2.next =
|
|
290
|
+
if (!(_context2.t0 instanceof Response && _context2.t0.status === 401)) {
|
|
291
|
+
_context2.next = 45;
|
|
271
292
|
break;
|
|
272
293
|
}
|
|
273
294
|
setStatus('unauthorized');
|
|
274
295
|
return _context2.abrupt("return");
|
|
275
|
-
case
|
|
296
|
+
case 45:
|
|
297
|
+
if (!(_context2.t0 instanceof Response && _context2.t0.status === 403)) {
|
|
298
|
+
_context2.next = 48;
|
|
299
|
+
break;
|
|
300
|
+
}
|
|
301
|
+
setStatus('forbidden');
|
|
302
|
+
return _context2.abrupt("return");
|
|
303
|
+
case 48:
|
|
276
304
|
setStatus('rejected');
|
|
277
|
-
case
|
|
305
|
+
case 49:
|
|
278
306
|
case "end":
|
|
279
307
|
return _context2.stop();
|
|
280
308
|
}
|
|
281
|
-
}, _callee2, null, [[7,
|
|
309
|
+
}, _callee2, null, [[7, 39]]);
|
|
282
310
|
})), [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
283
311
|
var reset = (0, _react.useCallback)(function (options) {
|
|
284
312
|
setStatus('empty');
|
|
@@ -113,7 +113,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
113
113
|
shouldForceRequest: true
|
|
114
114
|
});
|
|
115
115
|
}, [destinationObjectTypes, extensionKey, fireEvent, reset]);
|
|
116
|
-
if (status === 'resolved' && !responseItems.length) {
|
|
116
|
+
if (status === 'resolved' && !responseItems.length || status === 'forbidden') {
|
|
117
117
|
return (0, _react2.jsx)(_noResults.NoResults, {
|
|
118
118
|
onRefresh: reset
|
|
119
119
|
});
|
|
@@ -45,10 +45,12 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
45
45
|
parameters = props.parameters,
|
|
46
46
|
onSearch = props.onSearch,
|
|
47
47
|
onSearchMethodChangeCallback = props.onSearchMethodChange,
|
|
48
|
-
initialSearchMethod = props.initialSearchMethod
|
|
48
|
+
initialSearchMethod = props.initialSearchMethod,
|
|
49
|
+
setSearchBarJql = props.setSearchBarJql,
|
|
50
|
+
_props$searchBarJql = props.searchBarJql,
|
|
51
|
+
searchBarJql = _props$searchBarJql === void 0 ? DEFAULT_JQL_QUERY : _props$searchBarJql;
|
|
49
52
|
var _ref = parameters || {},
|
|
50
|
-
currentCloudId = _ref.cloudId
|
|
51
|
-
initialJql = _ref.jql;
|
|
53
|
+
currentCloudId = _ref.cloudId;
|
|
52
54
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
53
55
|
formatMessage = _useIntl.formatMessage;
|
|
54
56
|
var _useDatasourceAnalyti = (0, _analytics.useDatasourceAnalyticsEvents)(),
|
|
@@ -61,37 +63,33 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
61
63
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
62
64
|
currentSearchMethod = _useState4[0],
|
|
63
65
|
setCurrentSearchMethod = _useState4[1];
|
|
64
|
-
var _useState5 = (0, _react.useState)(
|
|
66
|
+
var _useState5 = (0, _react.useState)(currentCloudId),
|
|
65
67
|
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
var _useState7 = (0, _react.useState)(
|
|
68
|
+
cloudId = _useState6[0],
|
|
69
|
+
setCloudId = _useState6[1];
|
|
70
|
+
var _useState7 = (0, _react.useState)(false),
|
|
69
71
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
var _useState9 = (0, _react.useState)(
|
|
72
|
+
isComplexQuery = _useState8[0],
|
|
73
|
+
setIsComplexQuery = _useState8[1];
|
|
74
|
+
var _useState9 = (0, _react.useState)(),
|
|
73
75
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
orderKey = _useState10[0],
|
|
77
|
+
setOrderKey = _useState10[1];
|
|
76
78
|
var _useState11 = (0, _react.useState)(),
|
|
77
79
|
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
var _useState13 = (0, _react.useState)(),
|
|
80
|
+
orderDirection = _useState12[0],
|
|
81
|
+
setOrderDirection = _useState12[1];
|
|
82
|
+
var _useState13 = (0, _react.useState)({}),
|
|
81
83
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var _useState15 = (0, _react.useState)({}),
|
|
85
|
-
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
86
|
-
filterSelections = _useState16[0],
|
|
87
|
-
setFilterSelections = _useState16[1];
|
|
84
|
+
filterSelections = _useState14[0],
|
|
85
|
+
setFilterSelections = _useState14[1];
|
|
88
86
|
var showBasicFilters = (0, _react.useMemo)(function () {
|
|
89
87
|
if ((0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource.show-jlol-basic-filters')) {
|
|
90
88
|
return true;
|
|
91
89
|
}
|
|
92
90
|
return false;
|
|
93
91
|
}, []);
|
|
94
|
-
var _useHydrateJqlQuery = (0, _useHydrateJqlQuery2.useHydrateJqlQuery)(cloudId || '',
|
|
92
|
+
var _useHydrateJqlQuery = (0, _useHydrateJqlQuery2.useHydrateJqlQuery)(cloudId || '', searchBarJql),
|
|
95
93
|
hydratedOptions = _useHydrateJqlQuery.hydratedOptions,
|
|
96
94
|
fetchHydratedJqlOptions = _useHydrateJqlQuery.fetchHydratedJqlOptions,
|
|
97
95
|
basicFilterHydrationStatus = _useHydrateJqlQuery.status;
|
|
@@ -102,13 +100,13 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
102
100
|
var handleBasicSearchChange = (0, _react.useCallback)(function (e) {
|
|
103
101
|
var rawSearch = e.currentTarget.value;
|
|
104
102
|
setBasicSearchTerm(rawSearch);
|
|
105
|
-
|
|
103
|
+
setSearchBarJql((0, _buildJQL.buildJQL)({
|
|
106
104
|
rawSearch: rawSearch,
|
|
107
105
|
filterValues: filterSelections,
|
|
108
106
|
orderDirection: orderDirection,
|
|
109
107
|
orderKey: orderKey
|
|
110
108
|
}));
|
|
111
|
-
}, [filterSelections, orderDirection, orderKey]);
|
|
109
|
+
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
112
110
|
var onQueryChange = (0, _react.useCallback)(function (query) {
|
|
113
111
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
114
112
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
@@ -124,12 +122,12 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
124
122
|
setOrderKey(key);
|
|
125
123
|
setOrderDirection(order);
|
|
126
124
|
}
|
|
127
|
-
|
|
128
|
-
}, []);
|
|
125
|
+
setSearchBarJql(query);
|
|
126
|
+
}, [setSearchBarJql]);
|
|
129
127
|
var handleSearch = (0, _react.useCallback)(function () {
|
|
130
|
-
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(
|
|
128
|
+
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(searchBarJql);
|
|
131
129
|
onSearch({
|
|
132
|
-
jql:
|
|
130
|
+
jql: searchBarJql
|
|
133
131
|
}, {
|
|
134
132
|
searchMethod: currentSearchMethod,
|
|
135
133
|
basicFilterSelections: filterSelections,
|
|
@@ -146,7 +144,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
146
144
|
fetchHydratedJqlOptions();
|
|
147
145
|
}
|
|
148
146
|
}
|
|
149
|
-
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent,
|
|
147
|
+
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent, searchBarJql, onSearch, showBasicFilters]);
|
|
150
148
|
var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (filterValues) {
|
|
151
149
|
var jqlWithFilterValues = (0, _buildJQL.buildJQL)({
|
|
152
150
|
rawSearch: basicSearchTerm,
|
|
@@ -154,7 +152,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
154
152
|
orderDirection: orderDirection,
|
|
155
153
|
orderKey: orderKey
|
|
156
154
|
});
|
|
157
|
-
|
|
155
|
+
setSearchBarJql(jqlWithFilterValues);
|
|
158
156
|
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(jqlWithFilterValues);
|
|
159
157
|
onSearch({
|
|
160
158
|
jql: jqlWithFilterValues
|
|
@@ -172,9 +170,9 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
172
170
|
debouncedBasicFilterSelectionChange(updatedSelection);
|
|
173
171
|
}, [debouncedBasicFilterSelectionChange, filterSelections]);
|
|
174
172
|
(0, _react.useEffect)(function () {
|
|
175
|
-
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(
|
|
173
|
+
var isCurrentQueryComplex = (0, _isQueryTooComplex.isQueryTooComplex)(searchBarJql);
|
|
176
174
|
setIsComplexQuery(isCurrentQueryComplex);
|
|
177
|
-
if (showBasicFilters && !isCurrentQueryComplex &&
|
|
175
|
+
if (showBasicFilters && !isCurrentQueryComplex && searchBarJql !== DEFAULT_JQL_QUERY) {
|
|
178
176
|
fetchHydratedJqlOptions();
|
|
179
177
|
}
|
|
180
178
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -192,14 +190,14 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
192
190
|
(0, _react.useEffect)(function () {
|
|
193
191
|
if (currentCloudId !== cloudId) {
|
|
194
192
|
setBasicSearchTerm('');
|
|
195
|
-
|
|
193
|
+
setSearchBarJql(DEFAULT_JQL_QUERY);
|
|
196
194
|
setIsComplexQuery(false);
|
|
197
195
|
setOrderKey(undefined);
|
|
198
196
|
setOrderDirection(undefined);
|
|
199
197
|
setFilterSelections({});
|
|
200
198
|
setCloudId(currentCloudId);
|
|
201
199
|
}
|
|
202
|
-
}, [currentCloudId, cloudId]);
|
|
200
|
+
}, [currentCloudId, cloudId, setSearchBarJql]);
|
|
203
201
|
return (0, _react2.jsx)("div", {
|
|
204
202
|
css: inputContainerStyles,
|
|
205
203
|
"data-testid": "jira-search-container"
|
|
@@ -212,7 +210,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
212
210
|
onSearch: handleSearch,
|
|
213
211
|
searchTerm: basicSearchTerm
|
|
214
212
|
}), showBasicFilters && (0, _react2.jsx)(_basicFilters.BasicFilters, {
|
|
215
|
-
jql:
|
|
213
|
+
jql: searchBarJql,
|
|
216
214
|
cloudId: cloudId || '',
|
|
217
215
|
onChange: handleBasicFilterSelectionChange,
|
|
218
216
|
selections: filterSelections,
|
|
@@ -222,7 +220,7 @@ var JiraSearchContainer = exports.JiraSearchContainer = function JiraSearchConta
|
|
|
222
220
|
isSearching: isSearching,
|
|
223
221
|
onChange: onQueryChange,
|
|
224
222
|
onSearch: handleSearch,
|
|
225
|
-
query:
|
|
223
|
+
query: searchBarJql
|
|
226
224
|
}), (0, _react2.jsx)(_modeSwitcher.ModeSwitcher, {
|
|
227
225
|
onOptionValueChange: onSearchMethodChange,
|
|
228
226
|
selectedOptionValue: currentSearchMethod,
|
|
@@ -133,19 +133,23 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
133
133
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
134
134
|
jql = _useState8[0],
|
|
135
135
|
setJql = _useState8[1];
|
|
136
|
-
var _useState9 = (0, _react.useState)(
|
|
136
|
+
var _useState9 = (0, _react.useState)(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
|
|
137
137
|
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
138
|
-
|
|
139
|
-
|
|
138
|
+
searchBarJql = _useState10[0],
|
|
139
|
+
setSearchBarJql = _useState10[1];
|
|
140
|
+
var _useState11 = (0, _react.useState)(initialVisibleColumnKeys),
|
|
141
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
142
|
+
visibleColumnKeys = _useState12[0],
|
|
143
|
+
setVisibleColumnKeys = _useState12[1];
|
|
140
144
|
|
|
141
145
|
// analytics related parameters
|
|
142
146
|
var searchCount = (0, _react.useRef)(0);
|
|
143
147
|
var userInteractionActions = (0, _react.useRef)(new Set());
|
|
144
148
|
var initialSearchMethod = (0, _platformFeatureFlags.getBooleanFF)('platform.linking-platform.datasource.show-jlol-basic-filters') && !(0, _isQueryTooComplex.isQueryTooComplex)((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
currentSearchMethod =
|
|
148
|
-
setCurrentSearchMethod =
|
|
149
|
+
var _useState13 = (0, _react.useState)(initialSearchMethod),
|
|
150
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
151
|
+
currentSearchMethod = _useState14[0],
|
|
152
|
+
setCurrentSearchMethod = _useState14[1];
|
|
149
153
|
var searchMethodSearchedWith = (0, _react.useRef)(null);
|
|
150
154
|
var visibleColumnCount = (0, _react.useRef)((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
151
155
|
var basicFilterSelectionsSearchedWith = (0, _react.useRef)({});
|
|
@@ -157,10 +161,10 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
157
161
|
} : undefined;
|
|
158
162
|
}, [cloudId, jql]);
|
|
159
163
|
var isParametersSet = !!(jql && cloudId);
|
|
160
|
-
var
|
|
161
|
-
|
|
162
|
-
columnCustomSizes =
|
|
163
|
-
setColumnCustomSizes =
|
|
164
|
+
var _useState15 = (0, _react.useState)(initialColumnCustomSizes),
|
|
165
|
+
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
166
|
+
columnCustomSizes = _useState16[0],
|
|
167
|
+
setColumnCustomSizes = _useState16[1];
|
|
164
168
|
var onColumnResize = (0, _react.useCallback)(function (key, width) {
|
|
165
169
|
setColumnCustomSizes(_objectSpread(_objectSpread({}, columnCustomSizes), {}, (0, _defineProperty2.default)({}, key, width)));
|
|
166
170
|
}, [columnCustomSizes]);
|
|
@@ -361,6 +365,11 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
361
365
|
if (!isParametersSet || !jql || !selectedJiraSite) {
|
|
362
366
|
return;
|
|
363
367
|
}
|
|
368
|
+
|
|
369
|
+
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
370
|
+
// even if the user didn't previously click search
|
|
371
|
+
var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
372
|
+
var upToDateJqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(upToDateJql));
|
|
364
373
|
var filterSelectionCount = _ui.availableBasicFilterTypes.reduce(function (current, filter) {
|
|
365
374
|
var _basicFilterSelection;
|
|
366
375
|
return _objectSpread(_objectSpread({}, current), {}, (0, _defineProperty2.default)({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
|
|
@@ -403,7 +412,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
403
412
|
onInsert({
|
|
404
413
|
type: 'inlineCard',
|
|
405
414
|
attrs: {
|
|
406
|
-
url:
|
|
415
|
+
url: upToDateJqlUrl
|
|
407
416
|
}
|
|
408
417
|
}, consumerEvent);
|
|
409
418
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -418,12 +427,12 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
418
427
|
onInsert({
|
|
419
428
|
type: 'blockCard',
|
|
420
429
|
attrs: {
|
|
421
|
-
url:
|
|
430
|
+
url: upToDateJqlUrl,
|
|
422
431
|
datasource: {
|
|
423
432
|
id: datasourceId,
|
|
424
433
|
parameters: {
|
|
425
434
|
cloudId: cloudId,
|
|
426
|
-
jql:
|
|
435
|
+
jql: upToDateJql // TODO support non JQL type
|
|
427
436
|
},
|
|
428
437
|
|
|
429
438
|
views: [{
|
|
@@ -441,7 +450,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
441
450
|
}
|
|
442
451
|
}, consumerEvent);
|
|
443
452
|
}
|
|
444
|
-
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert,
|
|
453
|
+
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
|
|
445
454
|
var handleViewModeChange = function handleViewModeChange(selectedMode) {
|
|
446
455
|
userInteractionActions.current.add(_types.DatasourceAction.DISPLAY_VIEW_CHANGED);
|
|
447
456
|
setCurrentViewMode(selectedMode);
|
|
@@ -509,7 +518,7 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
509
518
|
return (0, _react2.jsx)(_accessRequired.AccessRequired, {
|
|
510
519
|
url: selectedJiraSiteUrl || urlBeingEdited
|
|
511
520
|
});
|
|
512
|
-
} else if (resolvedWithNoResults) {
|
|
521
|
+
} else if (resolvedWithNoResults || status === 'forbidden') {
|
|
513
522
|
return (0, _react2.jsx)(_noResults.NoResults, null);
|
|
514
523
|
} else if (status === 'empty' || !columns.length) {
|
|
515
524
|
// persist the empty state when making the initial /data request which contains the columns
|
|
@@ -555,6 +564,8 @@ var PlainJiraIssuesConfigModal = exports.PlainJiraIssuesConfigModal = function P
|
|
|
555
564
|
onOptionValueChange: handleViewModeChange,
|
|
556
565
|
selectedOptionValue: currentViewMode
|
|
557
566
|
})), (0, _react2.jsx)(_modalDialog.ModalBody, null, !hasNoJiraSites ? (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_jiraSearchContainer.JiraSearchContainer, {
|
|
567
|
+
setSearchBarJql: setSearchBarJql,
|
|
568
|
+
searchBarJql: searchBarJql,
|
|
558
569
|
isSearching: status === 'loading',
|
|
559
570
|
parameters: parameters,
|
|
560
571
|
onSearch: onSearch,
|
|
@@ -49,20 +49,28 @@ export const useDatasourceTableState = ({
|
|
|
49
49
|
} = await getDatasourceDetails(datasourceId, {
|
|
50
50
|
parameters
|
|
51
51
|
});
|
|
52
|
-
if (access === '
|
|
52
|
+
if (access === 'unauthorized') {
|
|
53
53
|
setStatus('unauthorized');
|
|
54
54
|
return;
|
|
55
55
|
}
|
|
56
|
+
if (access === 'forbidden') {
|
|
57
|
+
setStatus('forbidden');
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
56
60
|
const isColumnNotPresentInCurrentColumnsList = col => !columns.find(column => column.key === col.key);
|
|
57
61
|
const allColumns = schema.properties;
|
|
58
62
|
const newColumns = allColumns.filter(isColumnNotPresentInCurrentColumnsList);
|
|
59
63
|
newColumns.length > 0 && setColumns([...columns, ...newColumns]);
|
|
60
64
|
} catch (e) {
|
|
61
65
|
captureError('loadDatasourceDetails', e);
|
|
62
|
-
if (e instanceof Response &&
|
|
66
|
+
if (e instanceof Response && e.status === 401) {
|
|
63
67
|
setStatus('unauthorized');
|
|
64
68
|
return;
|
|
65
69
|
}
|
|
70
|
+
if (e instanceof Response && e.status === 403) {
|
|
71
|
+
setStatus('forbidden');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
66
74
|
setStatus('rejected');
|
|
67
75
|
}
|
|
68
76
|
}, [captureError, columns, datasourceId, getDatasourceDetails, parameters]);
|
|
@@ -132,10 +140,14 @@ export const useDatasourceTableState = ({
|
|
|
132
140
|
schema
|
|
133
141
|
}
|
|
134
142
|
} = await getDatasourceData(datasourceId, datasourceDataRequest, shouldForceRequest);
|
|
135
|
-
if (access === '
|
|
143
|
+
if (access === 'unauthorized') {
|
|
136
144
|
setStatus('unauthorized');
|
|
137
145
|
return;
|
|
138
146
|
}
|
|
147
|
+
if (access === 'forbidden') {
|
|
148
|
+
setStatus('forbidden');
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
139
151
|
setExtensionKey(extensionKey);
|
|
140
152
|
setDestinationObjectTypes(destinationObjectTypes);
|
|
141
153
|
setTotalCount(totalCount);
|
|
@@ -166,10 +178,14 @@ export const useDatasourceTableState = ({
|
|
|
166
178
|
setStatus('resolved');
|
|
167
179
|
} catch (e) {
|
|
168
180
|
captureError('onNextPage', e);
|
|
169
|
-
if (e instanceof Response &&
|
|
181
|
+
if (e instanceof Response && e.status === 401) {
|
|
170
182
|
setStatus('unauthorized');
|
|
171
183
|
return;
|
|
172
184
|
}
|
|
185
|
+
if (e instanceof Response && e.status === 403) {
|
|
186
|
+
setStatus('forbidden');
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
173
189
|
setStatus('rejected');
|
|
174
190
|
}
|
|
175
191
|
}, [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
@@ -108,7 +108,7 @@ const DatasourceTableViewWithoutAnalytics = ({
|
|
|
108
108
|
shouldForceRequest: true
|
|
109
109
|
});
|
|
110
110
|
}, [destinationObjectTypes, extensionKey, fireEvent, reset]);
|
|
111
|
-
if (status === 'resolved' && !responseItems.length) {
|
|
111
|
+
if (status === 'resolved' && !responseItems.length || status === 'forbidden') {
|
|
112
112
|
return jsx(NoResults, {
|
|
113
113
|
onRefresh: reset
|
|
114
114
|
});
|
|
@@ -31,11 +31,12 @@ export const JiraSearchContainer = props => {
|
|
|
31
31
|
parameters,
|
|
32
32
|
onSearch,
|
|
33
33
|
onSearchMethodChange: onSearchMethodChangeCallback,
|
|
34
|
-
initialSearchMethod
|
|
34
|
+
initialSearchMethod,
|
|
35
|
+
setSearchBarJql,
|
|
36
|
+
searchBarJql = DEFAULT_JQL_QUERY
|
|
35
37
|
} = props;
|
|
36
38
|
const {
|
|
37
|
-
cloudId: currentCloudId
|
|
38
|
-
jql: initialJql
|
|
39
|
+
cloudId: currentCloudId
|
|
39
40
|
} = parameters || {};
|
|
40
41
|
const {
|
|
41
42
|
formatMessage
|
|
@@ -45,7 +46,6 @@ export const JiraSearchContainer = props => {
|
|
|
45
46
|
} = useDatasourceAnalyticsEvents();
|
|
46
47
|
const [basicSearchTerm, setBasicSearchTerm] = useState('');
|
|
47
48
|
const [currentSearchMethod, setCurrentSearchMethod] = useState(initialSearchMethod);
|
|
48
|
-
const [jql, setJql] = useState(initialJql || DEFAULT_JQL_QUERY);
|
|
49
49
|
const [cloudId, setCloudId] = useState(currentCloudId);
|
|
50
50
|
const [isComplexQuery, setIsComplexQuery] = useState(false);
|
|
51
51
|
const [orderKey, setOrderKey] = useState();
|
|
@@ -61,7 +61,7 @@ export const JiraSearchContainer = props => {
|
|
|
61
61
|
hydratedOptions,
|
|
62
62
|
fetchHydratedJqlOptions,
|
|
63
63
|
status: basicFilterHydrationStatus
|
|
64
|
-
} = useHydrateJqlQuery(cloudId || '',
|
|
64
|
+
} = useHydrateJqlQuery(cloudId || '', searchBarJql);
|
|
65
65
|
const onSearchMethodChange = useCallback(searchMethod => {
|
|
66
66
|
onSearchMethodChangeCallback(searchMethod);
|
|
67
67
|
setCurrentSearchMethod(searchMethod);
|
|
@@ -69,13 +69,13 @@ export const JiraSearchContainer = props => {
|
|
|
69
69
|
const handleBasicSearchChange = useCallback(e => {
|
|
70
70
|
const rawSearch = e.currentTarget.value;
|
|
71
71
|
setBasicSearchTerm(rawSearch);
|
|
72
|
-
|
|
72
|
+
setSearchBarJql(buildJQL({
|
|
73
73
|
rawSearch,
|
|
74
74
|
filterValues: filterSelections,
|
|
75
75
|
orderDirection,
|
|
76
76
|
orderKey
|
|
77
77
|
}));
|
|
78
|
-
}, [filterSelections, orderDirection, orderKey]);
|
|
78
|
+
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
79
79
|
const onQueryChange = useCallback(query => {
|
|
80
80
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
81
81
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
@@ -89,12 +89,12 @@ export const JiraSearchContainer = props => {
|
|
|
89
89
|
setOrderKey(key);
|
|
90
90
|
setOrderDirection(order);
|
|
91
91
|
}
|
|
92
|
-
|
|
93
|
-
}, []);
|
|
92
|
+
setSearchBarJql(query);
|
|
93
|
+
}, [setSearchBarJql]);
|
|
94
94
|
const handleSearch = useCallback(() => {
|
|
95
|
-
const isCurrentQueryComplex = isQueryTooComplex(
|
|
95
|
+
const isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
96
96
|
onSearch({
|
|
97
|
-
jql
|
|
97
|
+
jql: searchBarJql
|
|
98
98
|
}, {
|
|
99
99
|
searchMethod: currentSearchMethod,
|
|
100
100
|
basicFilterSelections: filterSelections,
|
|
@@ -111,7 +111,7 @@ export const JiraSearchContainer = props => {
|
|
|
111
111
|
fetchHydratedJqlOptions();
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
|
-
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent,
|
|
114
|
+
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent, searchBarJql, onSearch, showBasicFilters]);
|
|
115
115
|
const [debouncedBasicFilterSelectionChange] = useDebouncedCallback(filterValues => {
|
|
116
116
|
const jqlWithFilterValues = buildJQL({
|
|
117
117
|
rawSearch: basicSearchTerm,
|
|
@@ -119,7 +119,7 @@ export const JiraSearchContainer = props => {
|
|
|
119
119
|
orderDirection,
|
|
120
120
|
orderKey
|
|
121
121
|
});
|
|
122
|
-
|
|
122
|
+
setSearchBarJql(jqlWithFilterValues);
|
|
123
123
|
const isCurrentQueryComplex = isQueryTooComplex(jqlWithFilterValues);
|
|
124
124
|
onSearch({
|
|
125
125
|
jql: jqlWithFilterValues
|
|
@@ -138,9 +138,9 @@ export const JiraSearchContainer = props => {
|
|
|
138
138
|
debouncedBasicFilterSelectionChange(updatedSelection);
|
|
139
139
|
}, [debouncedBasicFilterSelectionChange, filterSelections]);
|
|
140
140
|
useEffect(() => {
|
|
141
|
-
const isCurrentQueryComplex = isQueryTooComplex(
|
|
141
|
+
const isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
142
142
|
setIsComplexQuery(isCurrentQueryComplex);
|
|
143
|
-
if (showBasicFilters && !isCurrentQueryComplex &&
|
|
143
|
+
if (showBasicFilters && !isCurrentQueryComplex && searchBarJql !== DEFAULT_JQL_QUERY) {
|
|
144
144
|
fetchHydratedJqlOptions();
|
|
145
145
|
}
|
|
146
146
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -160,14 +160,14 @@ export const JiraSearchContainer = props => {
|
|
|
160
160
|
useEffect(() => {
|
|
161
161
|
if (currentCloudId !== cloudId) {
|
|
162
162
|
setBasicSearchTerm('');
|
|
163
|
-
|
|
163
|
+
setSearchBarJql(DEFAULT_JQL_QUERY);
|
|
164
164
|
setIsComplexQuery(false);
|
|
165
165
|
setOrderKey(undefined);
|
|
166
166
|
setOrderDirection(undefined);
|
|
167
167
|
setFilterSelections({});
|
|
168
168
|
setCloudId(currentCloudId);
|
|
169
169
|
}
|
|
170
|
-
}, [currentCloudId, cloudId]);
|
|
170
|
+
}, [currentCloudId, cloudId, setSearchBarJql]);
|
|
171
171
|
return jsx("div", {
|
|
172
172
|
css: inputContainerStyles,
|
|
173
173
|
"data-testid": "jira-search-container"
|
|
@@ -180,7 +180,7 @@ export const JiraSearchContainer = props => {
|
|
|
180
180
|
onSearch: handleSearch,
|
|
181
181
|
searchTerm: basicSearchTerm
|
|
182
182
|
}), showBasicFilters && jsx(BasicFilters, {
|
|
183
|
-
jql:
|
|
183
|
+
jql: searchBarJql,
|
|
184
184
|
cloudId: cloudId || '',
|
|
185
185
|
onChange: handleBasicFilterSelectionChange,
|
|
186
186
|
selections: filterSelections,
|
|
@@ -190,7 +190,7 @@ export const JiraSearchContainer = props => {
|
|
|
190
190
|
isSearching: isSearching,
|
|
191
191
|
onChange: onQueryChange,
|
|
192
192
|
onSearch: handleSearch,
|
|
193
|
-
query:
|
|
193
|
+
query: searchBarJql
|
|
194
194
|
}), jsx(ModeSwitcher, {
|
|
195
195
|
onOptionValueChange: onSearchMethodChange,
|
|
196
196
|
selectedOptionValue: currentSearchMethod,
|
|
@@ -106,6 +106,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
106
106
|
const [currentViewMode, setCurrentViewMode] = useState(viewMode);
|
|
107
107
|
const [cloudId, setCloudId] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.cloudId);
|
|
108
108
|
const [jql, setJql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql);
|
|
109
|
+
const [searchBarJql, setSearchBarJql] = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql);
|
|
109
110
|
const [visibleColumnKeys, setVisibleColumnKeys] = useState(initialVisibleColumnKeys);
|
|
110
111
|
|
|
111
112
|
// analytics related parameters
|
|
@@ -310,6 +311,11 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
310
311
|
if (!isParametersSet || !jql || !selectedJiraSite) {
|
|
311
312
|
return;
|
|
312
313
|
}
|
|
314
|
+
|
|
315
|
+
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
316
|
+
// even if the user didn't previously click search
|
|
317
|
+
const upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
318
|
+
const upToDateJqlUrl = selectedJiraSite && jql && `${selectedJiraSite.url}/issues/?jql=${encodeURI(upToDateJql)}`;
|
|
313
319
|
const filterSelectionCount = availableBasicFilterTypes.reduce((current, filter) => {
|
|
314
320
|
var _basicFilterSelection;
|
|
315
321
|
return {
|
|
@@ -360,7 +366,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
360
366
|
onInsert({
|
|
361
367
|
type: 'inlineCard',
|
|
362
368
|
attrs: {
|
|
363
|
-
url:
|
|
369
|
+
url: upToDateJqlUrl
|
|
364
370
|
}
|
|
365
371
|
}, consumerEvent);
|
|
366
372
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -375,12 +381,12 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
375
381
|
onInsert({
|
|
376
382
|
type: 'blockCard',
|
|
377
383
|
attrs: {
|
|
378
|
-
url:
|
|
384
|
+
url: upToDateJqlUrl,
|
|
379
385
|
datasource: {
|
|
380
386
|
id: datasourceId,
|
|
381
387
|
parameters: {
|
|
382
388
|
cloudId,
|
|
383
|
-
jql // TODO support non JQL type
|
|
389
|
+
jql: upToDateJql // TODO support non JQL type
|
|
384
390
|
},
|
|
385
391
|
|
|
386
392
|
views: [{
|
|
@@ -396,7 +402,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
396
402
|
}
|
|
397
403
|
}, consumerEvent);
|
|
398
404
|
}
|
|
399
|
-
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert,
|
|
405
|
+
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
|
|
400
406
|
const handleViewModeChange = selectedMode => {
|
|
401
407
|
userInteractionActions.current.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
|
|
402
408
|
setCurrentViewMode(selectedMode);
|
|
@@ -460,7 +466,7 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
460
466
|
return jsx(AccessRequired, {
|
|
461
467
|
url: selectedJiraSiteUrl || urlBeingEdited
|
|
462
468
|
});
|
|
463
|
-
} else if (resolvedWithNoResults) {
|
|
469
|
+
} else if (resolvedWithNoResults || status === 'forbidden') {
|
|
464
470
|
return jsx(NoResults, null);
|
|
465
471
|
} else if (status === 'empty' || !columns.length) {
|
|
466
472
|
// persist the empty state when making the initial /data request which contains the columns
|
|
@@ -506,6 +512,8 @@ export const PlainJiraIssuesConfigModal = props => {
|
|
|
506
512
|
onOptionValueChange: handleViewModeChange,
|
|
507
513
|
selectedOptionValue: currentViewMode
|
|
508
514
|
})), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
|
|
515
|
+
setSearchBarJql: setSearchBarJql,
|
|
516
|
+
searchBarJql: searchBarJql,
|
|
509
517
|
isSearching: status === 'loading',
|
|
510
518
|
parameters: parameters,
|
|
511
519
|
onSearch: onSearch,
|
|
@@ -91,13 +91,20 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
91
91
|
_yield$getDatasourceD = _context.sent;
|
|
92
92
|
access = _yield$getDatasourceD.meta.access;
|
|
93
93
|
schema = _yield$getDatasourceD.data.schema;
|
|
94
|
-
if (!(access === '
|
|
94
|
+
if (!(access === 'unauthorized')) {
|
|
95
95
|
_context.next = 11;
|
|
96
96
|
break;
|
|
97
97
|
}
|
|
98
98
|
setStatus('unauthorized');
|
|
99
99
|
return _context.abrupt("return");
|
|
100
100
|
case 11:
|
|
101
|
+
if (!(access === 'forbidden')) {
|
|
102
|
+
_context.next = 14;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
setStatus('forbidden');
|
|
106
|
+
return _context.abrupt("return");
|
|
107
|
+
case 14:
|
|
101
108
|
isColumnNotPresentInCurrentColumnsList = function isColumnNotPresentInCurrentColumnsList(col) {
|
|
102
109
|
return !columns.find(function (column) {
|
|
103
110
|
return column.key === col.key;
|
|
@@ -106,25 +113,32 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
106
113
|
allColumns = schema.properties;
|
|
107
114
|
newColumns = allColumns.filter(isColumnNotPresentInCurrentColumnsList);
|
|
108
115
|
newColumns.length > 0 && setColumns([].concat(_toConsumableArray(columns), _toConsumableArray(newColumns)));
|
|
109
|
-
_context.next =
|
|
116
|
+
_context.next = 30;
|
|
110
117
|
break;
|
|
111
|
-
case
|
|
112
|
-
_context.prev =
|
|
118
|
+
case 20:
|
|
119
|
+
_context.prev = 20;
|
|
113
120
|
_context.t0 = _context["catch"](2);
|
|
114
121
|
captureError('loadDatasourceDetails', _context.t0);
|
|
115
|
-
if (!(_context.t0 instanceof Response &&
|
|
116
|
-
_context.next =
|
|
122
|
+
if (!(_context.t0 instanceof Response && _context.t0.status === 401)) {
|
|
123
|
+
_context.next = 26;
|
|
117
124
|
break;
|
|
118
125
|
}
|
|
119
126
|
setStatus('unauthorized');
|
|
120
127
|
return _context.abrupt("return");
|
|
121
|
-
case
|
|
128
|
+
case 26:
|
|
129
|
+
if (!(_context.t0 instanceof Response && _context.t0.status === 403)) {
|
|
130
|
+
_context.next = 29;
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
setStatus('forbidden');
|
|
134
|
+
return _context.abrupt("return");
|
|
135
|
+
case 29:
|
|
122
136
|
setStatus('rejected');
|
|
123
|
-
case
|
|
137
|
+
case 30:
|
|
124
138
|
case "end":
|
|
125
139
|
return _context.stop();
|
|
126
140
|
}
|
|
127
|
-
}, _callee, null, [[2,
|
|
141
|
+
}, _callee, null, [[2, 20]]);
|
|
128
142
|
})), [captureError, columns, datasourceId, getDatasourceDetails, parameters]);
|
|
129
143
|
var applySchemaProperties = useCallback(function (schema, fieldKeys) {
|
|
130
144
|
var properties = schema.properties,
|
|
@@ -218,13 +232,20 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
218
232
|
nextPageCursor = _yield$getDatasourceD4.nextPageCursor;
|
|
219
233
|
_totalCount = _yield$getDatasourceD4.totalCount;
|
|
220
234
|
schema = _yield$getDatasourceD4.schema;
|
|
221
|
-
if (!(access === '
|
|
235
|
+
if (!(access === 'unauthorized')) {
|
|
222
236
|
_context2.next = 23;
|
|
223
237
|
break;
|
|
224
238
|
}
|
|
225
239
|
setStatus('unauthorized');
|
|
226
240
|
return _context2.abrupt("return");
|
|
227
241
|
case 23:
|
|
242
|
+
if (!(access === 'forbidden')) {
|
|
243
|
+
_context2.next = 26;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
setStatus('forbidden');
|
|
247
|
+
return _context2.abrupt("return");
|
|
248
|
+
case 26:
|
|
228
249
|
setExtensionKey(_extensionKey);
|
|
229
250
|
setDestinationObjectTypes(_destinationObjectTypes);
|
|
230
251
|
setTotalCount(_totalCount);
|
|
@@ -253,25 +274,32 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
253
274
|
});
|
|
254
275
|
}
|
|
255
276
|
setStatus('resolved');
|
|
256
|
-
_context2.next =
|
|
277
|
+
_context2.next = 49;
|
|
257
278
|
break;
|
|
258
|
-
case
|
|
259
|
-
_context2.prev =
|
|
279
|
+
case 39:
|
|
280
|
+
_context2.prev = 39;
|
|
260
281
|
_context2.t0 = _context2["catch"](7);
|
|
261
282
|
captureError('onNextPage', _context2.t0);
|
|
262
|
-
if (!(_context2.t0 instanceof Response &&
|
|
263
|
-
_context2.next =
|
|
283
|
+
if (!(_context2.t0 instanceof Response && _context2.t0.status === 401)) {
|
|
284
|
+
_context2.next = 45;
|
|
264
285
|
break;
|
|
265
286
|
}
|
|
266
287
|
setStatus('unauthorized');
|
|
267
288
|
return _context2.abrupt("return");
|
|
268
|
-
case
|
|
289
|
+
case 45:
|
|
290
|
+
if (!(_context2.t0 instanceof Response && _context2.t0.status === 403)) {
|
|
291
|
+
_context2.next = 48;
|
|
292
|
+
break;
|
|
293
|
+
}
|
|
294
|
+
setStatus('forbidden');
|
|
295
|
+
return _context2.abrupt("return");
|
|
296
|
+
case 48:
|
|
269
297
|
setStatus('rejected');
|
|
270
|
-
case
|
|
298
|
+
case 49:
|
|
271
299
|
case "end":
|
|
272
300
|
return _context2.stop();
|
|
273
301
|
}
|
|
274
|
-
}, _callee2, null, [[7,
|
|
302
|
+
}, _callee2, null, [[7, 39]]);
|
|
275
303
|
})), [captureError, parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
276
304
|
var reset = useCallback(function (options) {
|
|
277
305
|
setStatus('empty');
|
|
@@ -105,7 +105,7 @@ var DatasourceTableViewWithoutAnalytics = function DatasourceTableViewWithoutAna
|
|
|
105
105
|
shouldForceRequest: true
|
|
106
106
|
});
|
|
107
107
|
}, [destinationObjectTypes, extensionKey, fireEvent, reset]);
|
|
108
|
-
if (status === 'resolved' && !responseItems.length) {
|
|
108
|
+
if (status === 'resolved' && !responseItems.length || status === 'forbidden') {
|
|
109
109
|
return jsx(NoResults, {
|
|
110
110
|
onRefresh: reset
|
|
111
111
|
});
|
|
@@ -36,10 +36,12 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
36
36
|
parameters = props.parameters,
|
|
37
37
|
onSearch = props.onSearch,
|
|
38
38
|
onSearchMethodChangeCallback = props.onSearchMethodChange,
|
|
39
|
-
initialSearchMethod = props.initialSearchMethod
|
|
39
|
+
initialSearchMethod = props.initialSearchMethod,
|
|
40
|
+
setSearchBarJql = props.setSearchBarJql,
|
|
41
|
+
_props$searchBarJql = props.searchBarJql,
|
|
42
|
+
searchBarJql = _props$searchBarJql === void 0 ? DEFAULT_JQL_QUERY : _props$searchBarJql;
|
|
40
43
|
var _ref = parameters || {},
|
|
41
|
-
currentCloudId = _ref.cloudId
|
|
42
|
-
initialJql = _ref.jql;
|
|
44
|
+
currentCloudId = _ref.cloudId;
|
|
43
45
|
var _useIntl = useIntl(),
|
|
44
46
|
formatMessage = _useIntl.formatMessage;
|
|
45
47
|
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
@@ -52,37 +54,33 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
52
54
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
53
55
|
currentSearchMethod = _useState4[0],
|
|
54
56
|
setCurrentSearchMethod = _useState4[1];
|
|
55
|
-
var _useState5 = useState(
|
|
57
|
+
var _useState5 = useState(currentCloudId),
|
|
56
58
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var _useState7 = useState(
|
|
59
|
+
cloudId = _useState6[0],
|
|
60
|
+
setCloudId = _useState6[1];
|
|
61
|
+
var _useState7 = useState(false),
|
|
60
62
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
var _useState9 = useState(
|
|
63
|
+
isComplexQuery = _useState8[0],
|
|
64
|
+
setIsComplexQuery = _useState8[1];
|
|
65
|
+
var _useState9 = useState(),
|
|
64
66
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
65
|
-
|
|
66
|
-
|
|
67
|
+
orderKey = _useState10[0],
|
|
68
|
+
setOrderKey = _useState10[1];
|
|
67
69
|
var _useState11 = useState(),
|
|
68
70
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
var _useState13 = useState(),
|
|
71
|
+
orderDirection = _useState12[0],
|
|
72
|
+
setOrderDirection = _useState12[1];
|
|
73
|
+
var _useState13 = useState({}),
|
|
72
74
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var _useState15 = useState({}),
|
|
76
|
-
_useState16 = _slicedToArray(_useState15, 2),
|
|
77
|
-
filterSelections = _useState16[0],
|
|
78
|
-
setFilterSelections = _useState16[1];
|
|
75
|
+
filterSelections = _useState14[0],
|
|
76
|
+
setFilterSelections = _useState14[1];
|
|
79
77
|
var showBasicFilters = useMemo(function () {
|
|
80
78
|
if (getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters')) {
|
|
81
79
|
return true;
|
|
82
80
|
}
|
|
83
81
|
return false;
|
|
84
82
|
}, []);
|
|
85
|
-
var _useHydrateJqlQuery = useHydrateJqlQuery(cloudId || '',
|
|
83
|
+
var _useHydrateJqlQuery = useHydrateJqlQuery(cloudId || '', searchBarJql),
|
|
86
84
|
hydratedOptions = _useHydrateJqlQuery.hydratedOptions,
|
|
87
85
|
fetchHydratedJqlOptions = _useHydrateJqlQuery.fetchHydratedJqlOptions,
|
|
88
86
|
basicFilterHydrationStatus = _useHydrateJqlQuery.status;
|
|
@@ -93,13 +91,13 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
93
91
|
var handleBasicSearchChange = useCallback(function (e) {
|
|
94
92
|
var rawSearch = e.currentTarget.value;
|
|
95
93
|
setBasicSearchTerm(rawSearch);
|
|
96
|
-
|
|
94
|
+
setSearchBarJql(buildJQL({
|
|
97
95
|
rawSearch: rawSearch,
|
|
98
96
|
filterValues: filterSelections,
|
|
99
97
|
orderDirection: orderDirection,
|
|
100
98
|
orderKey: orderKey
|
|
101
99
|
}));
|
|
102
|
-
}, [filterSelections, orderDirection, orderKey]);
|
|
100
|
+
}, [setSearchBarJql, filterSelections, orderDirection, orderKey]);
|
|
103
101
|
var onQueryChange = useCallback(function (query) {
|
|
104
102
|
var _query$split$map$filt, _fragments$at, _fragments$at2, _fragments$at3;
|
|
105
103
|
// determine if order keys have been set so they can be saved and persisted when changes occur in basic search
|
|
@@ -115,12 +113,12 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
115
113
|
setOrderKey(key);
|
|
116
114
|
setOrderDirection(order);
|
|
117
115
|
}
|
|
118
|
-
|
|
119
|
-
}, []);
|
|
116
|
+
setSearchBarJql(query);
|
|
117
|
+
}, [setSearchBarJql]);
|
|
120
118
|
var handleSearch = useCallback(function () {
|
|
121
|
-
var isCurrentQueryComplex = isQueryTooComplex(
|
|
119
|
+
var isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
122
120
|
onSearch({
|
|
123
|
-
jql:
|
|
121
|
+
jql: searchBarJql
|
|
124
122
|
}, {
|
|
125
123
|
searchMethod: currentSearchMethod,
|
|
126
124
|
basicFilterSelections: filterSelections,
|
|
@@ -137,7 +135,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
137
135
|
fetchHydratedJqlOptions();
|
|
138
136
|
}
|
|
139
137
|
}
|
|
140
|
-
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent,
|
|
138
|
+
}, [currentSearchMethod, fetchHydratedJqlOptions, filterSelections, fireEvent, searchBarJql, onSearch, showBasicFilters]);
|
|
141
139
|
var _useDebouncedCallback = useDebouncedCallback(function (filterValues) {
|
|
142
140
|
var jqlWithFilterValues = buildJQL({
|
|
143
141
|
rawSearch: basicSearchTerm,
|
|
@@ -145,7 +143,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
145
143
|
orderDirection: orderDirection,
|
|
146
144
|
orderKey: orderKey
|
|
147
145
|
});
|
|
148
|
-
|
|
146
|
+
setSearchBarJql(jqlWithFilterValues);
|
|
149
147
|
var isCurrentQueryComplex = isQueryTooComplex(jqlWithFilterValues);
|
|
150
148
|
onSearch({
|
|
151
149
|
jql: jqlWithFilterValues
|
|
@@ -163,9 +161,9 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
163
161
|
debouncedBasicFilterSelectionChange(updatedSelection);
|
|
164
162
|
}, [debouncedBasicFilterSelectionChange, filterSelections]);
|
|
165
163
|
useEffect(function () {
|
|
166
|
-
var isCurrentQueryComplex = isQueryTooComplex(
|
|
164
|
+
var isCurrentQueryComplex = isQueryTooComplex(searchBarJql);
|
|
167
165
|
setIsComplexQuery(isCurrentQueryComplex);
|
|
168
|
-
if (showBasicFilters && !isCurrentQueryComplex &&
|
|
166
|
+
if (showBasicFilters && !isCurrentQueryComplex && searchBarJql !== DEFAULT_JQL_QUERY) {
|
|
169
167
|
fetchHydratedJqlOptions();
|
|
170
168
|
}
|
|
171
169
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -183,14 +181,14 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
183
181
|
useEffect(function () {
|
|
184
182
|
if (currentCloudId !== cloudId) {
|
|
185
183
|
setBasicSearchTerm('');
|
|
186
|
-
|
|
184
|
+
setSearchBarJql(DEFAULT_JQL_QUERY);
|
|
187
185
|
setIsComplexQuery(false);
|
|
188
186
|
setOrderKey(undefined);
|
|
189
187
|
setOrderDirection(undefined);
|
|
190
188
|
setFilterSelections({});
|
|
191
189
|
setCloudId(currentCloudId);
|
|
192
190
|
}
|
|
193
|
-
}, [currentCloudId, cloudId]);
|
|
191
|
+
}, [currentCloudId, cloudId, setSearchBarJql]);
|
|
194
192
|
return jsx("div", {
|
|
195
193
|
css: inputContainerStyles,
|
|
196
194
|
"data-testid": "jira-search-container"
|
|
@@ -203,7 +201,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
203
201
|
onSearch: handleSearch,
|
|
204
202
|
searchTerm: basicSearchTerm
|
|
205
203
|
}), showBasicFilters && jsx(BasicFilters, {
|
|
206
|
-
jql:
|
|
204
|
+
jql: searchBarJql,
|
|
207
205
|
cloudId: cloudId || '',
|
|
208
206
|
onChange: handleBasicFilterSelectionChange,
|
|
209
207
|
selections: filterSelections,
|
|
@@ -213,7 +211,7 @@ export var JiraSearchContainer = function JiraSearchContainer(props) {
|
|
|
213
211
|
isSearching: isSearching,
|
|
214
212
|
onChange: onQueryChange,
|
|
215
213
|
onSearch: handleSearch,
|
|
216
|
-
query:
|
|
214
|
+
query: searchBarJql
|
|
217
215
|
}), jsx(ModeSwitcher, {
|
|
218
216
|
onOptionValueChange: onSearchMethodChange,
|
|
219
217
|
selectedOptionValue: currentSearchMethod,
|
|
@@ -124,19 +124,23 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
124
124
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
125
125
|
jql = _useState8[0],
|
|
126
126
|
setJql = _useState8[1];
|
|
127
|
-
var _useState9 = useState(
|
|
127
|
+
var _useState9 = useState(initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql),
|
|
128
128
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
129
|
-
|
|
130
|
-
|
|
129
|
+
searchBarJql = _useState10[0],
|
|
130
|
+
setSearchBarJql = _useState10[1];
|
|
131
|
+
var _useState11 = useState(initialVisibleColumnKeys),
|
|
132
|
+
_useState12 = _slicedToArray(_useState11, 2),
|
|
133
|
+
visibleColumnKeys = _useState12[0],
|
|
134
|
+
setVisibleColumnKeys = _useState12[1];
|
|
131
135
|
|
|
132
136
|
// analytics related parameters
|
|
133
137
|
var searchCount = useRef(0);
|
|
134
138
|
var userInteractionActions = useRef(new Set());
|
|
135
139
|
var initialSearchMethod = getBooleanFF('platform.linking-platform.datasource.show-jlol-basic-filters') && !isQueryTooComplex((initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.jql) || '') ? 'basic' : 'jql';
|
|
136
|
-
var
|
|
137
|
-
|
|
138
|
-
currentSearchMethod =
|
|
139
|
-
setCurrentSearchMethod =
|
|
140
|
+
var _useState13 = useState(initialSearchMethod),
|
|
141
|
+
_useState14 = _slicedToArray(_useState13, 2),
|
|
142
|
+
currentSearchMethod = _useState14[0],
|
|
143
|
+
setCurrentSearchMethod = _useState14[1];
|
|
140
144
|
var searchMethodSearchedWith = useRef(null);
|
|
141
145
|
var visibleColumnCount = useRef((visibleColumnKeys === null || visibleColumnKeys === void 0 ? void 0 : visibleColumnKeys.length) || 0);
|
|
142
146
|
var basicFilterSelectionsSearchedWith = useRef({});
|
|
@@ -148,10 +152,10 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
148
152
|
} : undefined;
|
|
149
153
|
}, [cloudId, jql]);
|
|
150
154
|
var isParametersSet = !!(jql && cloudId);
|
|
151
|
-
var
|
|
152
|
-
|
|
153
|
-
columnCustomSizes =
|
|
154
|
-
setColumnCustomSizes =
|
|
155
|
+
var _useState15 = useState(initialColumnCustomSizes),
|
|
156
|
+
_useState16 = _slicedToArray(_useState15, 2),
|
|
157
|
+
columnCustomSizes = _useState16[0],
|
|
158
|
+
setColumnCustomSizes = _useState16[1];
|
|
155
159
|
var onColumnResize = useCallback(function (key, width) {
|
|
156
160
|
setColumnCustomSizes(_objectSpread(_objectSpread({}, columnCustomSizes), {}, _defineProperty({}, key, width)));
|
|
157
161
|
}, [columnCustomSizes]);
|
|
@@ -352,6 +356,11 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
352
356
|
if (!isParametersSet || !jql || !selectedJiraSite) {
|
|
353
357
|
return;
|
|
354
358
|
}
|
|
359
|
+
|
|
360
|
+
// During insertion, we want the JQL of the datasource to be whatever is in the search bar,
|
|
361
|
+
// even if the user didn't previously click search
|
|
362
|
+
var upToDateJql = searchBarJql !== null && searchBarJql !== void 0 ? searchBarJql : jql;
|
|
363
|
+
var upToDateJqlUrl = selectedJiraSite && jql && "".concat(selectedJiraSite.url, "/issues/?jql=").concat(encodeURI(upToDateJql));
|
|
355
364
|
var filterSelectionCount = availableBasicFilterTypes.reduce(function (current, filter) {
|
|
356
365
|
var _basicFilterSelection;
|
|
357
366
|
return _objectSpread(_objectSpread({}, current), {}, _defineProperty({}, "".concat(filter, "BasicFilterSelectionCount"), ((_basicFilterSelection = basicFilterSelectionsSearchedWith.current[filter]) === null || _basicFilterSelection === void 0 ? void 0 : _basicFilterSelection.length) || 0));
|
|
@@ -394,7 +403,7 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
394
403
|
onInsert({
|
|
395
404
|
type: 'inlineCard',
|
|
396
405
|
attrs: {
|
|
397
|
-
url:
|
|
406
|
+
url: upToDateJqlUrl
|
|
398
407
|
}
|
|
399
408
|
}, consumerEvent);
|
|
400
409
|
} else if (responseItems.length === 1 && firstIssueUrl) {
|
|
@@ -409,12 +418,12 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
409
418
|
onInsert({
|
|
410
419
|
type: 'blockCard',
|
|
411
420
|
attrs: {
|
|
412
|
-
url:
|
|
421
|
+
url: upToDateJqlUrl,
|
|
413
422
|
datasource: {
|
|
414
423
|
id: datasourceId,
|
|
415
424
|
parameters: {
|
|
416
425
|
cloudId: cloudId,
|
|
417
|
-
jql:
|
|
426
|
+
jql: upToDateJql // TODO support non JQL type
|
|
418
427
|
},
|
|
419
428
|
|
|
420
429
|
views: [{
|
|
@@ -432,7 +441,7 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
432
441
|
}
|
|
433
442
|
}, consumerEvent);
|
|
434
443
|
}
|
|
435
|
-
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert,
|
|
444
|
+
}, [isParametersSet, jql, selectedJiraSite, analyticsPayload, totalCount, visibleColumnKeys, currentViewMode, retrieveUrlForSmartCardRender, responseItems.length, onInsert, datasourceId, cloudId, columnCustomSizes, searchBarJql]);
|
|
436
445
|
var handleViewModeChange = function handleViewModeChange(selectedMode) {
|
|
437
446
|
userInteractionActions.current.add(DatasourceAction.DISPLAY_VIEW_CHANGED);
|
|
438
447
|
setCurrentViewMode(selectedMode);
|
|
@@ -500,7 +509,7 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
500
509
|
return jsx(AccessRequired, {
|
|
501
510
|
url: selectedJiraSiteUrl || urlBeingEdited
|
|
502
511
|
});
|
|
503
|
-
} else if (resolvedWithNoResults) {
|
|
512
|
+
} else if (resolvedWithNoResults || status === 'forbidden') {
|
|
504
513
|
return jsx(NoResults, null);
|
|
505
514
|
} else if (status === 'empty' || !columns.length) {
|
|
506
515
|
// persist the empty state when making the initial /data request which contains the columns
|
|
@@ -546,6 +555,8 @@ export var PlainJiraIssuesConfigModal = function PlainJiraIssuesConfigModal(prop
|
|
|
546
555
|
onOptionValueChange: handleViewModeChange,
|
|
547
556
|
selectedOptionValue: currentViewMode
|
|
548
557
|
})), jsx(ModalBody, null, !hasNoJiraSites ? jsx(Fragment, null, jsx(JiraSearchContainer, {
|
|
558
|
+
setSearchBarJql: setSearchBarJql,
|
|
559
|
+
searchBarJql: searchBarJql,
|
|
549
560
|
isSearching: status === 'loading',
|
|
550
561
|
parameters: parameters,
|
|
551
562
|
onSearch: onSearch,
|
|
@@ -15,5 +15,7 @@ export interface SearchContainerProps {
|
|
|
15
15
|
initialSearchMethod: JiraSearchMethod;
|
|
16
16
|
onSearchMethodChange: (searchMethod: JiraSearchMethod) => void;
|
|
17
17
|
parameters?: JiraIssueDatasourceParameters;
|
|
18
|
+
searchBarJql?: string;
|
|
19
|
+
setSearchBarJql: (jql: string) => void;
|
|
18
20
|
}
|
|
19
21
|
export declare const JiraSearchContainer: (props: SearchContainerProps) => jsx.JSX.Element;
|
|
@@ -15,5 +15,7 @@ export interface SearchContainerProps {
|
|
|
15
15
|
initialSearchMethod: JiraSearchMethod;
|
|
16
16
|
onSearchMethodChange: (searchMethod: JiraSearchMethod) => void;
|
|
17
17
|
parameters?: JiraIssueDatasourceParameters;
|
|
18
|
+
searchBarJql?: string;
|
|
19
|
+
setSearchBarJql: (jql: string) => void;
|
|
18
20
|
}
|
|
19
21
|
export declare const JiraSearchContainer: (props: SearchContainerProps) => jsx.JSX.Element;
|