@atlaskit/link-datasource 1.16.5 → 1.17.1
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 +19 -0
- package/dist/cjs/analytics/constants.js +1 -1
- package/dist/cjs/hooks/useAssetsClient.js +7 -4
- package/dist/cjs/hooks/useDatasourceTableState.js +83 -52
- package/dist/cjs/hooks/useValidateAqlText.js +5 -2
- package/dist/cjs/services/cmdbService.js +50 -35
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +58 -15
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +26 -3
- package/dist/cjs/ui/jira-issues-modal/basic-filters/ui/index.js +6 -3
- package/dist/es2019/analytics/constants.js +1 -1
- package/dist/es2019/hooks/useAssetsClient.js +8 -4
- package/dist/es2019/hooks/useDatasourceTableState.js +40 -12
- package/dist/es2019/hooks/useValidateAqlText.js +6 -2
- package/dist/es2019/services/cmdbService.js +27 -12
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +41 -16
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +23 -3
- package/dist/es2019/ui/jira-issues-modal/basic-filters/ui/index.js +5 -3
- package/dist/esm/analytics/constants.js +1 -1
- package/dist/esm/hooks/useAssetsClient.js +7 -4
- package/dist/esm/hooks/useDatasourceTableState.js +83 -52
- package/dist/esm/hooks/useValidateAqlText.js +5 -2
- package/dist/esm/services/cmdbService.js +50 -35
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/index.js +59 -16
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.js +26 -3
- package/dist/esm/ui/jira-issues-modal/basic-filters/ui/index.js +7 -4
- package/dist/types/analytics/generated/analytics.types.d.ts +41 -1
- package/dist/types/services/cmdbService.d.ts +8 -4
- package/dist/types/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +2 -1
- package/dist/types-ts4.5/analytics/generated/analytics.types.d.ts +41 -1
- package/dist/types-ts4.5/services/cmdbService.d.ts +8 -4
- package/dist/types-ts4.5/ui/jira-issues-modal/basic-filters/ui/async-popup-select/trigger.d.ts +2 -1
- package/package.json +5 -4
|
@@ -1,24 +1,44 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
import { FormattedMessage } from 'react-intl-next';
|
|
3
|
+
import Badge from '@atlaskit/badge';
|
|
3
4
|
import Button from '@atlaskit/button/standard-button';
|
|
4
5
|
import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
|
|
6
|
+
import { Box, Flex, xcss } from '@atlaskit/primitives';
|
|
5
7
|
import { asyncPopupSelectMessages } from './messages';
|
|
8
|
+
const triggerButtonLabelStyles = xcss({
|
|
9
|
+
textOverflow: 'ellipsis',
|
|
10
|
+
overflow: 'hidden',
|
|
11
|
+
maxWidth: '150px'
|
|
12
|
+
});
|
|
13
|
+
const badgeStyles = xcss({
|
|
14
|
+
marginLeft: 'space.050'
|
|
15
|
+
});
|
|
6
16
|
const PopupTrigger = /*#__PURE__*/forwardRef(({
|
|
7
17
|
filterType,
|
|
8
18
|
isSelected,
|
|
9
19
|
isDisabled,
|
|
10
|
-
onClick
|
|
20
|
+
onClick,
|
|
21
|
+
selectedOptions
|
|
11
22
|
}, ref) => {
|
|
23
|
+
const [firstOption] = selectedOptions || [];
|
|
24
|
+
const hasOptions = selectedOptions && selectedOptions.length > 0;
|
|
12
25
|
return /*#__PURE__*/React.createElement(Button, {
|
|
13
26
|
ref: ref,
|
|
14
27
|
appearance: "default",
|
|
15
|
-
isSelected: isSelected,
|
|
28
|
+
isSelected: isSelected || hasOptions,
|
|
16
29
|
isDisabled: isDisabled,
|
|
17
30
|
onClick: onClick,
|
|
18
31
|
testId: `jlol-basic-filter-${filterType}-trigger`,
|
|
19
32
|
iconAfter: /*#__PURE__*/React.createElement(ChevronDownIcon, {
|
|
20
33
|
label: ""
|
|
21
34
|
})
|
|
22
|
-
}, /*#__PURE__*/React.createElement(
|
|
35
|
+
}, /*#__PURE__*/React.createElement(Flex, null, /*#__PURE__*/React.createElement(Box, {
|
|
36
|
+
xcss: triggerButtonLabelStyles
|
|
37
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, asyncPopupSelectMessages[`${filterType}Label`]), firstOption && /*#__PURE__*/React.createElement(React.Fragment, null, ": ", firstOption.label)), selectedOptions && selectedOptions.length > 1 && /*#__PURE__*/React.createElement(Flex, {
|
|
38
|
+
xcss: badgeStyles,
|
|
39
|
+
alignItems: "center"
|
|
40
|
+
}, /*#__PURE__*/React.createElement(Badge, {
|
|
41
|
+
appearance: "primary"
|
|
42
|
+
}, "+", selectedOptions.length - 1))));
|
|
23
43
|
});
|
|
24
44
|
export default PopupTrigger;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react';
|
|
1
|
+
import React, { useCallback, useEffect, useState } from 'react';
|
|
2
2
|
import { Flex, xcss } from '@atlaskit/primitives';
|
|
3
3
|
import { isValidJql } from '../utils';
|
|
4
4
|
import AsyncPopupSelect from './async-popup-select';
|
|
@@ -10,13 +10,15 @@ const BasicFilterContainer = ({
|
|
|
10
10
|
jql,
|
|
11
11
|
cloudId
|
|
12
12
|
}) => {
|
|
13
|
-
const [selection] = useState([]);
|
|
13
|
+
const [selection, setSelection] = useState([]);
|
|
14
14
|
useEffect(() => {
|
|
15
15
|
if (isValidJql(jql)) {
|
|
16
16
|
// hydrate hook call goes in here
|
|
17
17
|
}
|
|
18
18
|
}, [jql]);
|
|
19
|
-
const handleSelectionChange = (
|
|
19
|
+
const handleSelectionChange = useCallback(options => {
|
|
20
|
+
setSelection(options);
|
|
21
|
+
}, [setSelection]);
|
|
20
22
|
return /*#__PURE__*/React.createElement(Flex, {
|
|
21
23
|
xcss: basicFilterContainerStyles,
|
|
22
24
|
gap: "space.100",
|
|
@@ -2,6 +2,7 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
4
|
import { useEffect, useState } from 'react';
|
|
5
|
+
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
5
6
|
import { fetchObjectSchema, fetchObjectSchemas, getWorkspaceId } from '../services/cmdbService';
|
|
6
7
|
var handleAssetsClientErrors = function handleAssetsClientErrors(errorSetter, error) {
|
|
7
8
|
if (error instanceof Error) {
|
|
@@ -43,6 +44,8 @@ export var useAssetsClient = function useAssetsClient(initialParameters) {
|
|
|
43
44
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
44
45
|
objectSchemasError = _useState16[0],
|
|
45
46
|
setObjectSchemasError = _useState16[1];
|
|
47
|
+
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
48
|
+
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
46
49
|
|
|
47
50
|
/*
|
|
48
51
|
* We wrap this in nested try/catch blocks because we want to handle
|
|
@@ -59,7 +62,7 @@ export var useAssetsClient = function useAssetsClient(initialParameters) {
|
|
|
59
62
|
setWorkspaceError(undefined);
|
|
60
63
|
_context.prev = 2;
|
|
61
64
|
_context.next = 5;
|
|
62
|
-
return getWorkspaceId();
|
|
65
|
+
return getWorkspaceId(fireEvent);
|
|
63
66
|
case 5:
|
|
64
67
|
_workspaceId = _context.sent;
|
|
65
68
|
setWorkspaceId(_workspaceId);
|
|
@@ -70,7 +73,7 @@ export var useAssetsClient = function useAssetsClient(initialParameters) {
|
|
|
70
73
|
}
|
|
71
74
|
_context.prev = 8;
|
|
72
75
|
_context.next = 11;
|
|
73
|
-
return fetchObjectSchema(_workspaceId, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId);
|
|
76
|
+
return fetchObjectSchema(_workspaceId, initialParameters === null || initialParameters === void 0 ? void 0 : initialParameters.schemaId, fireEvent);
|
|
74
77
|
case 11:
|
|
75
78
|
fetchedObjectSchema = _context.sent;
|
|
76
79
|
setExistingObjectSchema(fetchedObjectSchema);
|
|
@@ -83,7 +86,7 @@ export var useAssetsClient = function useAssetsClient(initialParameters) {
|
|
|
83
86
|
case 18:
|
|
84
87
|
_context.prev = 18;
|
|
85
88
|
_context.next = 21;
|
|
86
|
-
return fetchObjectSchemas(_workspaceId);
|
|
89
|
+
return fetchObjectSchemas(_workspaceId, undefined, fireEvent);
|
|
87
90
|
case 21:
|
|
88
91
|
fetchedObjectSchemasResponse = _context.sent;
|
|
89
92
|
setObjectSchemas(fetchedObjectSchemasResponse.values);
|
|
@@ -111,7 +114,7 @@ export var useAssetsClient = function useAssetsClient(initialParameters) {
|
|
|
111
114
|
}
|
|
112
115
|
}, _callee, null, [[2, 31, 34, 37], [8, 15], [18, 26]]);
|
|
113
116
|
}))();
|
|
114
|
-
}, [initialParameters]);
|
|
117
|
+
}, [initialParameters, fireEvent]);
|
|
115
118
|
return {
|
|
116
119
|
workspaceId: workspaceId,
|
|
117
120
|
workspaceError: workspaceError,
|
|
@@ -13,6 +13,8 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
13
13
|
fieldKeys = _ref$fieldKeys === void 0 ? [] : _ref$fieldKeys;
|
|
14
14
|
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
15
15
|
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
16
|
+
var idFieldCount = 1;
|
|
17
|
+
var keyFieldCount = 1;
|
|
16
18
|
var _useState = useState([]),
|
|
17
19
|
_useState2 = _slicedToArray(_useState, 2),
|
|
18
20
|
defaultVisibleColumnKeys = _useState2[0],
|
|
@@ -21,42 +23,48 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
21
23
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
22
24
|
lastRequestedFieldKeys = _useState4[0],
|
|
23
25
|
setLastRequestedFieldKeys = _useState4[1];
|
|
24
|
-
var _useState5 = useState(
|
|
26
|
+
var _useState5 = useState({
|
|
27
|
+
properties: []
|
|
28
|
+
}),
|
|
25
29
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var _useState7 = useState(
|
|
30
|
+
fullSchema = _useState6[0],
|
|
31
|
+
setFullSchema = _useState6[1];
|
|
32
|
+
var _useState7 = useState('empty'),
|
|
29
33
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var _useState9 = useState(
|
|
34
|
+
status = _useState8[0],
|
|
35
|
+
setStatus = _useState8[1];
|
|
36
|
+
var _useState9 = useState([]),
|
|
33
37
|
_useState10 = _slicedToArray(_useState9, 2),
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
var _useState11 = useState(
|
|
38
|
+
responseItems = _useState10[0],
|
|
39
|
+
setResponseItems = _useState10[1];
|
|
40
|
+
var _useState11 = useState(true),
|
|
37
41
|
_useState12 = _slicedToArray(_useState11, 2),
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var _useState13 = useState(
|
|
42
|
+
hasNextPage = _useState12[0],
|
|
43
|
+
setHasNextPage = _useState12[1];
|
|
44
|
+
var _useState13 = useState(undefined),
|
|
41
45
|
_useState14 = _slicedToArray(_useState13, 2),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var _useState15 = useState(
|
|
46
|
+
nextCursor = _useState14[0],
|
|
47
|
+
setNextCursor = _useState14[1];
|
|
48
|
+
var _useState15 = useState([]),
|
|
45
49
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
var _useState17 = useState(
|
|
50
|
+
columns = _useState16[0],
|
|
51
|
+
setColumns = _useState16[1];
|
|
52
|
+
var _useState17 = useState(undefined),
|
|
49
53
|
_useState18 = _slicedToArray(_useState17, 2),
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
var _useState19 = useState(
|
|
54
|
+
totalCount = _useState18[0],
|
|
55
|
+
setTotalCount = _useState18[1];
|
|
56
|
+
var _useState19 = useState(false),
|
|
53
57
|
_useState20 = _slicedToArray(_useState19, 2),
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
var _useState21 = useState(),
|
|
58
|
+
shouldForceRequest = _useState20[0],
|
|
59
|
+
setShouldForceRequest = _useState20[1];
|
|
60
|
+
var _useState21 = useState([]),
|
|
57
61
|
_useState22 = _slicedToArray(_useState21, 2),
|
|
58
|
-
|
|
59
|
-
|
|
62
|
+
destinationObjectTypes = _useState22[0],
|
|
63
|
+
setDestinationObjectTypes = _useState22[1];
|
|
64
|
+
var _useState23 = useState(),
|
|
65
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
|
66
|
+
extensionKey = _useState24[0],
|
|
67
|
+
setExtensionKey = _useState24[1];
|
|
60
68
|
var _useDatasourceClientE = useDatasourceClientExtension(),
|
|
61
69
|
getDatasourceData = _useDatasourceClientE.getDatasourceData,
|
|
62
70
|
getDatasourceDetails = _useDatasourceClientE.getDatasourceDetails;
|
|
@@ -114,21 +122,39 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
114
122
|
}
|
|
115
123
|
}, _callee, null, [[2, 17]]);
|
|
116
124
|
})), [columns, datasourceId, getDatasourceDetails, parameters]);
|
|
117
|
-
var applySchemaProperties = useCallback(function (
|
|
118
|
-
|
|
119
|
-
|
|
125
|
+
var applySchemaProperties = useCallback(function (schema, fieldKeys) {
|
|
126
|
+
var properties = schema.properties,
|
|
127
|
+
_schema$defaultProper = schema.defaultProperties,
|
|
128
|
+
defaultProperties = _schema$defaultProper === void 0 ? [] : _schema$defaultProper;
|
|
129
|
+
var propertiesToBeUsed = properties;
|
|
130
|
+
var propertyKeysToBeUsed = Array.isArray(fieldKeys) && fieldKeys.length > 0 ? fieldKeys : defaultProperties;
|
|
131
|
+
if (fieldKeys.length > 0 || defaultProperties.length > 0) {
|
|
132
|
+
propertiesToBeUsed = properties.filter(function (property) {
|
|
133
|
+
return propertyKeysToBeUsed.includes(property.key);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/*Jira adds identifier fields like id and key to all data responses
|
|
138
|
+
Since defaultProperties already send back the keyField, we are accounting only
|
|
139
|
+
for the idField when we are using defaulProperties
|
|
140
|
+
*/
|
|
141
|
+
if (properties.length > fieldKeys.length + idFieldCount + keyFieldCount && properties.length > defaultProperties.length + idFieldCount) {
|
|
142
|
+
setFullSchema(schema);
|
|
120
143
|
}
|
|
121
|
-
|
|
144
|
+
if (!isEqual(columns, propertiesToBeUsed)) {
|
|
145
|
+
setColumns(propertiesToBeUsed);
|
|
146
|
+
}
|
|
147
|
+
var newProperties = propertiesToBeUsed.map(function (prop) {
|
|
122
148
|
return prop.key;
|
|
123
149
|
});
|
|
124
150
|
|
|
125
151
|
// when loading for the first time, we will need to set default visible props as /data does not give you that info
|
|
126
152
|
// also, since we dont pass any fields, we will need to set this info as lastRequestedFieldKeys
|
|
127
|
-
if (!isEqual(defaultVisibleColumnKeys,
|
|
128
|
-
setDefaultVisibleColumnKeys(
|
|
153
|
+
if (!isEqual(defaultVisibleColumnKeys, newProperties)) {
|
|
154
|
+
setDefaultVisibleColumnKeys(newProperties);
|
|
129
155
|
}
|
|
130
|
-
if (!isEqual(lastRequestedFieldKeys,
|
|
131
|
-
setLastRequestedFieldKeys(
|
|
156
|
+
if (!isEqual(lastRequestedFieldKeys, newProperties)) {
|
|
157
|
+
setLastRequestedFieldKeys(newProperties);
|
|
132
158
|
}
|
|
133
159
|
}, [columns, defaultVisibleColumnKeys, lastRequestedFieldKeys]);
|
|
134
160
|
var onNextPage = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
@@ -138,6 +164,7 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
138
164
|
shouldRequestFirstPage,
|
|
139
165
|
_requestInfo$shouldFo,
|
|
140
166
|
shouldForceRequest,
|
|
167
|
+
isFullSchemaLoaded,
|
|
141
168
|
datasourceDataRequest,
|
|
142
169
|
_yield$getDatasourceD2,
|
|
143
170
|
_yield$getDatasourceD3,
|
|
@@ -164,18 +191,19 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
164
191
|
return _context2.abrupt("return");
|
|
165
192
|
case 3:
|
|
166
193
|
_requestInfo$isSchema = requestInfo.isSchemaFromData, isSchemaFromData = _requestInfo$isSchema === void 0 ? true : _requestInfo$isSchema, shouldRequestFirstPage = requestInfo.shouldRequestFirstPage, _requestInfo$shouldFo = requestInfo.shouldForceRequest, shouldForceRequest = _requestInfo$shouldFo === void 0 ? false : _requestInfo$shouldFo;
|
|
194
|
+
isFullSchemaLoaded = fullSchema.properties.length > 0;
|
|
167
195
|
datasourceDataRequest = {
|
|
168
196
|
parameters: parameters,
|
|
169
197
|
pageSize: DEFAULT_GET_DATASOURCE_DATA_PAGE_SIZE,
|
|
170
198
|
pageCursor: shouldRequestFirstPage ? undefined : nextCursor,
|
|
171
199
|
fields: fieldKeys,
|
|
172
|
-
includeSchema: isSchemaFromData
|
|
200
|
+
includeSchema: isFullSchemaLoaded ? false : isSchemaFromData
|
|
173
201
|
};
|
|
174
202
|
setStatus('loading');
|
|
175
|
-
_context2.prev =
|
|
176
|
-
_context2.next =
|
|
203
|
+
_context2.prev = 7;
|
|
204
|
+
_context2.next = 10;
|
|
177
205
|
return getDatasourceData(datasourceId, datasourceDataRequest, shouldForceRequest);
|
|
178
|
-
case
|
|
206
|
+
case 10:
|
|
179
207
|
_yield$getDatasourceD2 = _context2.sent;
|
|
180
208
|
_yield$getDatasourceD3 = _yield$getDatasourceD2.meta;
|
|
181
209
|
access = _yield$getDatasourceD3.access;
|
|
@@ -187,12 +215,12 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
187
215
|
_totalCount = _yield$getDatasourceD4.totalCount;
|
|
188
216
|
schema = _yield$getDatasourceD4.schema;
|
|
189
217
|
if (!(access === 'forbidden' || access === 'unauthorized')) {
|
|
190
|
-
_context2.next =
|
|
218
|
+
_context2.next = 23;
|
|
191
219
|
break;
|
|
192
220
|
}
|
|
193
221
|
setStatus('unauthorized');
|
|
194
222
|
return _context2.abrupt("return");
|
|
195
|
-
case
|
|
223
|
+
case 23:
|
|
196
224
|
setExtensionKey(_extensionKey);
|
|
197
225
|
setDestinationObjectTypes(_destinationObjectTypes);
|
|
198
226
|
setTotalCount(_totalCount);
|
|
@@ -207,8 +235,8 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
207
235
|
if (fieldKeys.length > 0) {
|
|
208
236
|
setLastRequestedFieldKeys(fieldKeys);
|
|
209
237
|
}
|
|
210
|
-
if (isSchemaFromData && schema && items.length > 0) {
|
|
211
|
-
applySchemaProperties(schema
|
|
238
|
+
if ((isSchemaFromData && schema || fullSchema.properties.length > 0) && items.length > 0) {
|
|
239
|
+
applySchemaProperties(schema || fullSchema, fieldKeys);
|
|
212
240
|
}
|
|
213
241
|
isUserLoadingNextPage = (responseItems === null || responseItems === void 0 ? void 0 : responseItems.length) !== 0 && !shouldRequestFirstPage;
|
|
214
242
|
if (isUserLoadingNextPage) {
|
|
@@ -221,25 +249,25 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
221
249
|
});
|
|
222
250
|
}
|
|
223
251
|
setStatus('resolved');
|
|
224
|
-
_context2.next =
|
|
252
|
+
_context2.next = 42;
|
|
225
253
|
break;
|
|
226
|
-
case
|
|
227
|
-
_context2.prev =
|
|
228
|
-
_context2.t0 = _context2["catch"](
|
|
254
|
+
case 36:
|
|
255
|
+
_context2.prev = 36;
|
|
256
|
+
_context2.t0 = _context2["catch"](7);
|
|
229
257
|
if (!(_context2.t0 instanceof Response && (_context2.t0.status === 401 || _context2.t0.status === 403))) {
|
|
230
|
-
_context2.next =
|
|
258
|
+
_context2.next = 41;
|
|
231
259
|
break;
|
|
232
260
|
}
|
|
233
261
|
setStatus('unauthorized');
|
|
234
262
|
return _context2.abrupt("return");
|
|
235
|
-
case 40:
|
|
236
|
-
setStatus('rejected');
|
|
237
263
|
case 41:
|
|
264
|
+
setStatus('rejected');
|
|
265
|
+
case 42:
|
|
238
266
|
case "end":
|
|
239
267
|
return _context2.stop();
|
|
240
268
|
}
|
|
241
|
-
}, _callee2, null, [[
|
|
242
|
-
})), [parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent]);
|
|
269
|
+
}, _callee2, null, [[7, 36]]);
|
|
270
|
+
})), [parameters, fieldKeys, nextCursor, getDatasourceData, datasourceId, responseItems === null || responseItems === void 0 ? void 0 : responseItems.length, applySchemaProperties, fireEvent, fullSchema]);
|
|
243
271
|
var reset = useCallback(function (options) {
|
|
244
272
|
setStatus('empty');
|
|
245
273
|
setResponseItems([]);
|
|
@@ -247,6 +275,9 @@ export var useDatasourceTableState = function useDatasourceTableState(_ref) {
|
|
|
247
275
|
setNextCursor(undefined);
|
|
248
276
|
setTotalCount(undefined);
|
|
249
277
|
setLastRequestedFieldKeys([]);
|
|
278
|
+
setFullSchema({
|
|
279
|
+
properties: []
|
|
280
|
+
});
|
|
250
281
|
setShouldForceRequest((options === null || options === void 0 ? void 0 : options.shouldForceRequest) || false);
|
|
251
282
|
if (options !== null && options !== void 0 && options.shouldResetColumns) {
|
|
252
283
|
setColumns([]);
|
|
@@ -2,6 +2,7 @@ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
4
|
import { useCallback, useState } from 'react';
|
|
5
|
+
import { useDatasourceAnalyticsEvents } from '../analytics';
|
|
5
6
|
import { validateAql } from '../services/cmdbService';
|
|
6
7
|
export var useValidateAqlText = function useValidateAqlText(workspaceId) {
|
|
7
8
|
var _useState = useState(false),
|
|
@@ -16,6 +17,8 @@ export var useValidateAqlText = function useValidateAqlText(workspaceId) {
|
|
|
16
17
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
17
18
|
error = _useState6[0],
|
|
18
19
|
setError = _useState6[1];
|
|
20
|
+
var _useDatasourceAnalyti = useDatasourceAnalyticsEvents(),
|
|
21
|
+
fireEvent = _useDatasourceAnalyti.fireEvent;
|
|
19
22
|
var validateAqlText = useCallback( /*#__PURE__*/function () {
|
|
20
23
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(aql) {
|
|
21
24
|
var isValid, message, _validateAqlResponse$, validateAqlResponse;
|
|
@@ -30,7 +33,7 @@ export var useValidateAqlText = function useValidateAqlText(workspaceId) {
|
|
|
30
33
|
_context.next = 7;
|
|
31
34
|
return validateAql(workspaceId, {
|
|
32
35
|
qlQuery: aql
|
|
33
|
-
});
|
|
36
|
+
}, fireEvent);
|
|
34
37
|
case 7:
|
|
35
38
|
validateAqlResponse = _context.sent;
|
|
36
39
|
setIsValidAqlText(validateAqlResponse.isValid);
|
|
@@ -64,7 +67,7 @@ export var useValidateAqlText = function useValidateAqlText(workspaceId) {
|
|
|
64
67
|
return function (_x) {
|
|
65
68
|
return _ref.apply(this, arguments);
|
|
66
69
|
};
|
|
67
|
-
}(), [workspaceId]);
|
|
70
|
+
}(), [workspaceId, fireEvent]);
|
|
68
71
|
return {
|
|
69
72
|
isValidAqlText: isValidAqlText,
|
|
70
73
|
validateAqlText: validateAqlText,
|
|
@@ -3,7 +3,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
3
3
|
import { request } from '@atlaskit/linking-common';
|
|
4
4
|
import { FetchError, getStatusCodeGroup, mapFetchErrors, PermissionError } from './cmdbService.utils';
|
|
5
5
|
export var getWorkspaceId = /*#__PURE__*/function () {
|
|
6
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
6
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(fireEvent) {
|
|
7
7
|
var url, _workspaceDetailsResp, workspaceDetailsResponse, error;
|
|
8
8
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
9
9
|
while (1) switch (_context.prev = _context.next) {
|
|
@@ -20,32 +20,35 @@ export var getWorkspaceId = /*#__PURE__*/function () {
|
|
|
20
20
|
}
|
|
21
21
|
throw new PermissionError('No workspace results found');
|
|
22
22
|
case 7:
|
|
23
|
+
fireEvent && fireEvent('operational.getWorkspaceId.success', {});
|
|
23
24
|
return _context.abrupt("return", workspaceDetailsResponse.results[0].id);
|
|
24
|
-
case
|
|
25
|
-
_context.prev =
|
|
25
|
+
case 11:
|
|
26
|
+
_context.prev = 11;
|
|
26
27
|
_context.t0 = _context["catch"](1);
|
|
27
28
|
error = mapFetchErrors(_context.t0);
|
|
28
29
|
if (error instanceof FetchError) {
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
fireEvent && fireEvent('operational.getWorkspaceId.failed', {
|
|
31
|
+
statusCodeGroup: getStatusCodeGroup(error)
|
|
32
|
+
});
|
|
33
|
+
// Only 429 and5xx errors will be treated as FetchErrors otherwise PermissionError
|
|
31
34
|
if (getStatusCodeGroup(error) !== '5xx' && error.statusCode !== 429) {
|
|
32
35
|
error = new PermissionError('Failed to fetch workspace');
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
throw error;
|
|
36
|
-
case
|
|
39
|
+
case 16:
|
|
37
40
|
case "end":
|
|
38
41
|
return _context.stop();
|
|
39
42
|
}
|
|
40
|
-
}, _callee, null, [[1,
|
|
43
|
+
}, _callee, null, [[1, 11]]);
|
|
41
44
|
}));
|
|
42
|
-
return function getWorkspaceId() {
|
|
45
|
+
return function getWorkspaceId(_x) {
|
|
43
46
|
return _ref.apply(this, arguments);
|
|
44
47
|
};
|
|
45
48
|
}();
|
|
46
49
|
export var validateAql = /*#__PURE__*/function () {
|
|
47
|
-
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(workspaceId, data) {
|
|
48
|
-
var url, error;
|
|
50
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(workspaceId, data, fireEvent) {
|
|
51
|
+
var url, response, error;
|
|
49
52
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
50
53
|
while (1) switch (_context2.prev = _context2.next) {
|
|
51
54
|
case 0:
|
|
@@ -57,31 +60,35 @@ export var validateAql = /*#__PURE__*/function () {
|
|
|
57
60
|
context: 'SMART_LINKS'
|
|
58
61
|
}, undefined, [200, 201, 202, 203, 204]);
|
|
59
62
|
case 4:
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
_context2.
|
|
63
|
+
response = _context2.sent;
|
|
64
|
+
fireEvent && fireEvent('operational.validateAql.success', {});
|
|
65
|
+
return _context2.abrupt("return", response);
|
|
66
|
+
case 9:
|
|
67
|
+
_context2.prev = 9;
|
|
63
68
|
_context2.t0 = _context2["catch"](1);
|
|
64
69
|
error = mapFetchErrors(_context2.t0);
|
|
65
70
|
if (error instanceof FetchError) {
|
|
66
|
-
|
|
71
|
+
fireEvent && fireEvent('operational.validateAql.failed', {
|
|
72
|
+
statusCodeGroup: getStatusCodeGroup(error)
|
|
73
|
+
});
|
|
67
74
|
if (error.statusCode === 401 || error.statusCode === 403) {
|
|
68
75
|
error = new PermissionError('Failed to fetch object schemas');
|
|
69
76
|
}
|
|
70
77
|
}
|
|
71
78
|
throw error;
|
|
72
|
-
case
|
|
79
|
+
case 14:
|
|
73
80
|
case "end":
|
|
74
81
|
return _context2.stop();
|
|
75
82
|
}
|
|
76
|
-
}, _callee2, null, [[1,
|
|
83
|
+
}, _callee2, null, [[1, 9]]);
|
|
77
84
|
}));
|
|
78
|
-
return function validateAql(
|
|
85
|
+
return function validateAql(_x2, _x3, _x4) {
|
|
79
86
|
return _ref2.apply(this, arguments);
|
|
80
87
|
};
|
|
81
88
|
}();
|
|
82
89
|
export var fetchObjectSchema = /*#__PURE__*/function () {
|
|
83
|
-
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(workspaceId, schemaId) {
|
|
84
|
-
var url, error;
|
|
90
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(workspaceId, schemaId, fireEvent) {
|
|
91
|
+
var url, response, error;
|
|
85
92
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
86
93
|
while (1) switch (_context3.prev = _context3.next) {
|
|
87
94
|
case 0:
|
|
@@ -90,31 +97,35 @@ export var fetchObjectSchema = /*#__PURE__*/function () {
|
|
|
90
97
|
_context3.next = 4;
|
|
91
98
|
return request('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
92
99
|
case 4:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
_context3.
|
|
100
|
+
response = _context3.sent;
|
|
101
|
+
fireEvent && fireEvent('operational.objectSchema.success', {});
|
|
102
|
+
return _context3.abrupt("return", response);
|
|
103
|
+
case 9:
|
|
104
|
+
_context3.prev = 9;
|
|
96
105
|
_context3.t0 = _context3["catch"](1);
|
|
97
106
|
error = mapFetchErrors(_context3.t0);
|
|
98
107
|
if (error instanceof FetchError) {
|
|
99
|
-
|
|
108
|
+
fireEvent && fireEvent('operational.objectSchema.failed', {
|
|
109
|
+
statusCodeGroup: getStatusCodeGroup(error)
|
|
110
|
+
});
|
|
100
111
|
if (error.statusCode === 401 || error.statusCode === 403) {
|
|
101
112
|
error = new PermissionError('Failed to fetch object schemas');
|
|
102
113
|
}
|
|
103
114
|
}
|
|
104
115
|
throw error;
|
|
105
|
-
case
|
|
116
|
+
case 14:
|
|
106
117
|
case "end":
|
|
107
118
|
return _context3.stop();
|
|
108
119
|
}
|
|
109
|
-
}, _callee3, null, [[1,
|
|
120
|
+
}, _callee3, null, [[1, 9]]);
|
|
110
121
|
}));
|
|
111
|
-
return function fetchObjectSchema(
|
|
122
|
+
return function fetchObjectSchema(_x5, _x6, _x7) {
|
|
112
123
|
return _ref3.apply(this, arguments);
|
|
113
124
|
};
|
|
114
125
|
}();
|
|
115
126
|
export var fetchObjectSchemas = /*#__PURE__*/function () {
|
|
116
|
-
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(workspaceId, query) {
|
|
117
|
-
var queryParams, url, error;
|
|
127
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(workspaceId, query, fireEvent) {
|
|
128
|
+
var queryParams, url, response, error;
|
|
118
129
|
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
119
130
|
while (1) switch (_context4.prev = _context4.next) {
|
|
120
131
|
case 0:
|
|
@@ -127,25 +138,29 @@ export var fetchObjectSchemas = /*#__PURE__*/function () {
|
|
|
127
138
|
_context4.next = 8;
|
|
128
139
|
return request('get', url, undefined, undefined, [200, 201, 202, 203, 204]);
|
|
129
140
|
case 8:
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
_context4.
|
|
141
|
+
response = _context4.sent;
|
|
142
|
+
fireEvent && fireEvent('operational.objectSchemas.success', {});
|
|
143
|
+
return _context4.abrupt("return", response);
|
|
144
|
+
case 13:
|
|
145
|
+
_context4.prev = 13;
|
|
133
146
|
_context4.t0 = _context4["catch"](5);
|
|
134
147
|
error = mapFetchErrors(_context4.t0);
|
|
135
148
|
if (error instanceof FetchError) {
|
|
136
|
-
|
|
149
|
+
fireEvent && fireEvent('operational.objectSchemas.failed', {
|
|
150
|
+
statusCodeGroup: getStatusCodeGroup(error)
|
|
151
|
+
});
|
|
137
152
|
if (error.statusCode === 401 || error.statusCode === 403) {
|
|
138
153
|
error = new PermissionError('Failed to fetch object schemas');
|
|
139
154
|
}
|
|
140
155
|
}
|
|
141
156
|
throw error;
|
|
142
|
-
case
|
|
157
|
+
case 18:
|
|
143
158
|
case "end":
|
|
144
159
|
return _context4.stop();
|
|
145
160
|
}
|
|
146
|
-
}, _callee4, null, [[5,
|
|
161
|
+
}, _callee4, null, [[5, 13]]);
|
|
147
162
|
}));
|
|
148
|
-
return function fetchObjectSchemas(
|
|
163
|
+
return function fetchObjectSchemas(_x8, _x9, _x10) {
|
|
149
164
|
return _ref4.apply(this, arguments);
|
|
150
165
|
};
|
|
151
166
|
}();
|