@thoughtspot/visual-embed-sdk 1.20.0 → 1.21.0-alpha.0
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/README.md +1 -1
- package/dist/src/auth.d.ts +84 -5
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/config.d.ts +1 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +19 -7
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +39 -19
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +19 -7
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +7 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +11 -7
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +97 -5
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts +8 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/util.d.ts +4 -0
- package/dist/src/react/util.d.ts.map +1 -1
- package/dist/src/test/test-utils.d.ts +11 -2
- package/dist/src/test/test-utils.d.ts.map +1 -1
- package/dist/src/types.d.ts +430 -98
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/answerService.d.ts +7 -0
- package/dist/src/utils/answerService.d.ts.map +1 -1
- package/dist/src/utils/authService.d.ts +30 -0
- package/dist/src/utils/authService.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts +12 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils/processTrigger.d.ts +7 -0
- package/dist/src/utils/processTrigger.d.ts.map +1 -1
- package/dist/src/utils.d.ts +12 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed.es.js +849 -288
- package/dist/tsembed.js +822 -287
- package/lib/package.json +4 -10
- package/lib/src/auth.d.ts +84 -5
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +86 -26
- package/lib/src/auth.js.map +1 -1
- package/lib/src/auth.spec.js +14 -5
- package/lib/src/auth.spec.js.map +1 -1
- package/lib/src/config.d.ts +1 -0
- package/lib/src/config.d.ts.map +1 -1
- package/lib/src/config.js +5 -3
- package/lib/src/config.js.map +1 -1
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts +19 -7
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +26 -16
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +12 -12
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +39 -19
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +49 -15
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/base.spec.js +2 -2
- package/lib/src/embed/base.spec.js.map +1 -1
- package/lib/src/embed/embed.spec.js +1 -1
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +19 -7
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +50 -38
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +37 -30
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/pinboard.spec.js +14 -26
- package/lib/src/embed/pinboard.spec.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +7 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +6 -7
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +11 -7
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +19 -15
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +16 -19
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.js +4 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +97 -5
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +180 -74
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +46 -24
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js.map +1 -1
- package/lib/src/index.d.ts +3 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +3 -3
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +8 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +13 -1
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +9 -7
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +29 -8
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/react/util.d.ts +4 -0
- package/lib/src/react/util.d.ts.map +1 -1
- package/lib/src/react/util.js +4 -0
- package/lib/src/react/util.js.map +1 -1
- package/lib/src/test/test-utils.d.ts +11 -2
- package/lib/src/test/test-utils.d.ts.map +1 -1
- package/lib/src/test/test-utils.js +36 -25
- package/lib/src/test/test-utils.js.map +1 -1
- package/lib/src/types.d.ts +430 -98
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +311 -73
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/answerService.d.ts +7 -0
- package/lib/src/utils/answerService.d.ts.map +1 -1
- package/lib/src/utils/answerService.js +7 -0
- package/lib/src/utils/answerService.js.map +1 -1
- package/lib/src/utils/answerService.spec.js.map +1 -1
- package/lib/src/utils/authService.d.ts +30 -0
- package/lib/src/utils/authService.d.ts.map +1 -1
- package/lib/src/utils/authService.js +39 -2
- package/lib/src/utils/authService.js.map +1 -1
- package/lib/src/utils/authService.spec.js.map +1 -1
- package/lib/src/utils/processData.d.ts +12 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +33 -5
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils/processTrigger.d.ts +7 -0
- package/lib/src/utils/processTrigger.d.ts.map +1 -1
- package/lib/src/utils/processTrigger.js +17 -3
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/lib/src/utils/processTrigger.spec.js.map +1 -1
- package/lib/src/utils.d.ts +12 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +24 -19
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +695 -146
- package/package.json +4 -10
- package/src/auth.spec.ts +68 -150
- package/src/auth.ts +153 -101
- package/src/config.spec.ts +2 -4
- package/src/config.ts +5 -3
- package/src/embed/app.spec.ts +25 -14
- package/src/embed/app.ts +49 -37
- package/src/embed/base.spec.ts +6 -12
- package/src/embed/base.ts +74 -57
- package/src/embed/embed.spec.ts +5 -6
- package/src/embed/liveboard.spec.ts +56 -37
- package/src/embed/liveboard.ts +68 -66
- package/src/embed/pinboard.spec.ts +26 -29
- package/src/embed/search-bar.tsx +14 -9
- package/src/embed/search.spec.ts +31 -21
- package/src/embed/search.ts +28 -27
- package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
- package/src/embed/ts-embed.spec.ts +99 -144
- package/src/embed/ts-embed.ts +214 -159
- package/src/errors.ts +3 -6
- package/src/index.ts +23 -7
- package/src/mixpanel-service.spec.ts +1 -3
- package/src/mixpanel-service.ts +13 -1
- package/src/react/index.spec.tsx +72 -15
- package/src/react/index.tsx +43 -54
- package/src/react/util.ts +8 -4
- package/src/test/test-utils.ts +43 -39
- package/src/types.ts +428 -99
- package/src/utils/answerService.spec.ts +3 -5
- package/src/utils/answerService.ts +21 -17
- package/src/utils/authService.spec.ts +26 -41
- package/src/utils/authService.ts +47 -21
- package/src/utils/processData.spec.ts +26 -59
- package/src/utils/processData.ts +36 -14
- package/src/utils/processTrigger.spec.ts +1 -6
- package/src/utils/processTrigger.ts +18 -9
- package/src/utils.spec.ts +8 -12
- package/src/utils.ts +25 -26
package/src/embed/search-bar.tsx
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
DOMSelector, Param, Action, ViewConfig,
|
|
3
|
+
} from '../types';
|
|
2
4
|
import { getQueryParamString } from '../utils';
|
|
3
5
|
import { TsEmbed } from './ts-embed';
|
|
4
6
|
import { SearchOptions } from './search';
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
+
/**
|
|
9
|
+
* @group Embed components
|
|
10
|
+
*/
|
|
11
|
+
export interface SearchBarViewConfig extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts'> {
|
|
8
12
|
/**
|
|
9
13
|
* The array of data source GUIDs to set on load.
|
|
10
14
|
* Only a single dataSource supported currently.
|
|
15
|
+
*
|
|
11
16
|
* @deprecated Use dataSource instead
|
|
12
17
|
*/
|
|
13
18
|
dataSources?: string[];
|
|
14
19
|
/**
|
|
15
20
|
* The array of data source GUIDs to set on load.
|
|
21
|
+
*
|
|
16
22
|
* @version: SDK: 1.19.0
|
|
17
23
|
*/
|
|
18
24
|
dataSource?: string;
|
|
@@ -25,8 +31,8 @@ export interface SearchBarViewConfig
|
|
|
25
31
|
/**
|
|
26
32
|
* Embed ThoughtSpot search bar
|
|
27
33
|
*
|
|
28
|
-
* @Category Search Embed
|
|
29
34
|
* @version: SDK: 1.18.0 | ThoughtSpot: 8.10.0.cl, 9.0.1-sw
|
|
35
|
+
* @group Embed components
|
|
30
36
|
*/
|
|
31
37
|
export class SearchBarEmbed extends TsEmbed {
|
|
32
38
|
/**
|
|
@@ -42,6 +48,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
42
48
|
/**
|
|
43
49
|
* Construct the URL of the embedded ThoughtSpot search to be
|
|
44
50
|
* loaded in the iframe
|
|
51
|
+
*
|
|
45
52
|
* @param dataSources A list of data source GUIDs
|
|
46
53
|
*/
|
|
47
54
|
private getIFrameSrc() {
|
|
@@ -49,9 +56,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
49
56
|
const path = 'search-bar-embed';
|
|
50
57
|
const queryParams = this.getBaseQueryParams();
|
|
51
58
|
|
|
52
|
-
queryParams[Param.HideActions] = [
|
|
53
|
-
...(queryParams[Param.HideActions] ?? []),
|
|
54
|
-
];
|
|
59
|
+
queryParams[Param.HideActions] = [...(queryParams[Param.HideActions] ?? [])];
|
|
55
60
|
|
|
56
61
|
if (dataSources && dataSources.length) {
|
|
57
62
|
queryParams[Param.DataSources] = JSON.stringify(dataSources);
|
|
@@ -78,7 +83,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
78
83
|
}
|
|
79
84
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
80
85
|
|
|
81
|
-
return `${this.getEmbedBasePath(query)}/${path}${tsPostHashParams}`;
|
|
86
|
+
return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
|
|
82
87
|
}
|
|
83
88
|
|
|
84
89
|
/**
|
|
@@ -88,7 +93,7 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
88
93
|
super.render();
|
|
89
94
|
|
|
90
95
|
const src = this.getIFrameSrc();
|
|
91
|
-
this.renderIFrame(src
|
|
96
|
+
this.renderIFrame(src);
|
|
92
97
|
return this;
|
|
93
98
|
}
|
|
94
99
|
}
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
getRootEl,
|
|
10
10
|
fixedEncodeURI,
|
|
11
11
|
defaultParamsWithoutHiddenActions as defaultParams,
|
|
12
|
+
expectUrlMatchesWithParams,
|
|
12
13
|
} from '../test/test-utils';
|
|
13
14
|
import { version } from '../../package.json';
|
|
14
15
|
|
|
@@ -21,10 +22,7 @@ const defaultViewConfig = {
|
|
|
21
22
|
const answerId = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
|
|
22
23
|
const thoughtSpotHost = 'tshost';
|
|
23
24
|
const hideBydefault = `&hideAction=${fixedEncodeURI(
|
|
24
|
-
JSON.stringify([
|
|
25
|
-
Action.ReportError,
|
|
26
|
-
...HiddenActionItemByDefaultForSearchEmbed,
|
|
27
|
-
]),
|
|
25
|
+
JSON.stringify([Action.ReportError, ...HiddenActionItemByDefaultForSearchEmbed]),
|
|
28
26
|
)}`;
|
|
29
27
|
const defaultParamsWithHiddenActions = defaultParams + hideBydefault;
|
|
30
28
|
const prefixParams = '&isSearchEmbed=true';
|
|
@@ -40,16 +38,15 @@ beforeAll(() => {
|
|
|
40
38
|
describe('Search embed tests', () => {
|
|
41
39
|
beforeEach(() => {
|
|
42
40
|
document.body.innerHTML = getDocumentBody();
|
|
43
|
-
jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(
|
|
44
|
-
'7.4.0.sw',
|
|
45
|
-
);
|
|
41
|
+
jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue('7.4.0.sw');
|
|
46
42
|
});
|
|
47
43
|
|
|
48
44
|
test('should render', async () => {
|
|
49
45
|
const searchEmbed = new SearchEmbed(getRootEl(), {});
|
|
50
46
|
searchEmbed.render();
|
|
51
47
|
await executeAfterWait(() => {
|
|
52
|
-
|
|
48
|
+
expectUrlMatchesWithParams(
|
|
49
|
+
getIFrameSrc(),
|
|
53
50
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
54
51
|
);
|
|
55
52
|
});
|
|
@@ -63,7 +60,8 @@ describe('Search embed tests', () => {
|
|
|
63
60
|
});
|
|
64
61
|
searchEmbed.render();
|
|
65
62
|
await executeAfterWait(() => {
|
|
66
|
-
|
|
63
|
+
expectUrlMatchesWithParams(
|
|
64
|
+
getIFrameSrc(),
|
|
67
65
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
68
66
|
);
|
|
69
67
|
});
|
|
@@ -81,7 +79,8 @@ describe('Search embed tests', () => {
|
|
|
81
79
|
});
|
|
82
80
|
searchEmbed.render();
|
|
83
81
|
await executeAfterWait(() => {
|
|
84
|
-
|
|
82
|
+
expectUrlMatchesWithParams(
|
|
83
|
+
getIFrameSrc(),
|
|
85
84
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
86
85
|
);
|
|
87
86
|
});
|
|
@@ -99,7 +98,8 @@ describe('Search embed tests', () => {
|
|
|
99
98
|
|
|
100
99
|
searchEmbed.render();
|
|
101
100
|
await executeAfterWait(() => {
|
|
102
|
-
|
|
101
|
+
expectUrlMatchesWithParams(
|
|
102
|
+
getIFrameSrc(),
|
|
103
103
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
104
104
|
);
|
|
105
105
|
});
|
|
@@ -114,7 +114,8 @@ describe('Search embed tests', () => {
|
|
|
114
114
|
|
|
115
115
|
searchEmbed.render();
|
|
116
116
|
await executeAfterWait(() => {
|
|
117
|
-
|
|
117
|
+
expectUrlMatchesWithParams(
|
|
118
|
+
getIFrameSrc(),
|
|
118
119
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&executeSearch=true&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
119
120
|
);
|
|
120
121
|
});
|
|
@@ -133,7 +134,8 @@ describe('Search embed tests', () => {
|
|
|
133
134
|
});
|
|
134
135
|
searchEmbed.render();
|
|
135
136
|
await executeAfterWait(() => {
|
|
136
|
-
|
|
137
|
+
expectUrlMatchesWithParams(
|
|
138
|
+
getIFrameSrc(),
|
|
137
139
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=collapse&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
138
140
|
);
|
|
139
141
|
});
|
|
@@ -152,7 +154,8 @@ describe('Search embed tests', () => {
|
|
|
152
154
|
});
|
|
153
155
|
searchEmbed.render();
|
|
154
156
|
await executeAfterWait(() => {
|
|
155
|
-
|
|
157
|
+
expectUrlMatchesWithParams(
|
|
158
|
+
getIFrameSrc(),
|
|
156
159
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
157
160
|
);
|
|
158
161
|
});
|
|
@@ -178,7 +181,8 @@ describe('Search embed tests', () => {
|
|
|
178
181
|
});
|
|
179
182
|
searchEmbed.render();
|
|
180
183
|
await executeAfterWait(() => {
|
|
181
|
-
|
|
184
|
+
expectUrlMatchesWithParams(
|
|
185
|
+
getIFrameSrc(),
|
|
182
186
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}&col1=city&op1=EQ&val1=berkeley#/embed/answer`,
|
|
183
187
|
);
|
|
184
188
|
});
|
|
@@ -197,7 +201,8 @@ describe('Search embed tests', () => {
|
|
|
197
201
|
});
|
|
198
202
|
searchEmbed.render();
|
|
199
203
|
await executeAfterWait(() => {
|
|
200
|
-
|
|
204
|
+
expectUrlMatchesWithParams(
|
|
205
|
+
getIFrameSrc(),
|
|
201
206
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
202
207
|
);
|
|
203
208
|
});
|
|
@@ -217,7 +222,8 @@ describe('Search embed tests', () => {
|
|
|
217
222
|
});
|
|
218
223
|
searchEmbed.render();
|
|
219
224
|
await executeAfterWait(() => {
|
|
220
|
-
|
|
225
|
+
expectUrlMatchesWithParams(
|
|
226
|
+
getIFrameSrc(),
|
|
221
227
|
`http://${thoughtSpotHost}/v2/?${defaultParams}&disableAction=[%22download%22,%22edit%22]&disableHint=Permission%20denied${hideBydefault}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
222
228
|
);
|
|
223
229
|
});
|
|
@@ -230,7 +236,8 @@ describe('Search embed tests', () => {
|
|
|
230
236
|
});
|
|
231
237
|
searchEmbed.render();
|
|
232
238
|
await executeAfterWait(() => {
|
|
233
|
-
|
|
239
|
+
expectUrlMatchesWithParams(
|
|
240
|
+
getIFrameSrc(),
|
|
234
241
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&enableSearchAssist=true&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
235
242
|
);
|
|
236
243
|
});
|
|
@@ -256,7 +263,8 @@ describe('Search embed tests', () => {
|
|
|
256
263
|
]),
|
|
257
264
|
);
|
|
258
265
|
await executeAfterWait(() => {
|
|
259
|
-
|
|
266
|
+
expectUrlMatchesWithParams(
|
|
267
|
+
getIFrameSrc(),
|
|
260
268
|
`http://${thoughtSpotHost}/v2/?${defaultParams}&hideAction=${hideActionUrl}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
261
269
|
);
|
|
262
270
|
});
|
|
@@ -280,7 +288,8 @@ describe('Search embed tests', () => {
|
|
|
280
288
|
]),
|
|
281
289
|
);
|
|
282
290
|
await executeAfterWait(() => {
|
|
283
|
-
|
|
291
|
+
expectUrlMatchesWithParams(
|
|
292
|
+
getIFrameSrc(),
|
|
284
293
|
`http://${thoughtSpotHost}/v2/?${defaultParams}&disableAction=[%22downloadAsXLSX%22]&disableHint=Access%20denied&hideAction=${hideActionUrl}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
285
294
|
);
|
|
286
295
|
});
|
|
@@ -293,7 +302,8 @@ describe('Search embed tests', () => {
|
|
|
293
302
|
});
|
|
294
303
|
searchEmbed.render();
|
|
295
304
|
await executeAfterWait(() => {
|
|
296
|
-
|
|
305
|
+
expectUrlMatchesWithParams(
|
|
306
|
+
getIFrameSrc(),
|
|
297
307
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
298
308
|
);
|
|
299
309
|
});
|
package/src/embed/search.ts
CHANGED
|
@@ -15,11 +15,7 @@ import {
|
|
|
15
15
|
ViewConfig,
|
|
16
16
|
RuntimeFilter,
|
|
17
17
|
} from '../types';
|
|
18
|
-
import {
|
|
19
|
-
getQueryParamString,
|
|
20
|
-
checkReleaseVersionInBeta,
|
|
21
|
-
getFilterQuery,
|
|
22
|
-
} from '../utils';
|
|
18
|
+
import { getQueryParamString, checkReleaseVersionInBeta, getFilterQuery } from '../utils';
|
|
23
19
|
import { TsEmbed } from './ts-embed';
|
|
24
20
|
import { version } from '../../package.json';
|
|
25
21
|
import { ERROR_MESSAGE } from '../errors';
|
|
@@ -37,7 +33,8 @@ export interface SearchOptions {
|
|
|
37
33
|
/**
|
|
38
34
|
* Boolean to determine if the search should be executed or not.
|
|
39
35
|
* if it is executed, put the focus on the results.
|
|
40
|
-
* if it’s not executed, put the focus in the search bar - at the end of
|
|
36
|
+
* if it’s not executed, put the focus in the search bar - at the end of
|
|
37
|
+
* the tokens
|
|
41
38
|
*/
|
|
42
39
|
executeSearch?: boolean;
|
|
43
40
|
}
|
|
@@ -45,7 +42,7 @@ export interface SearchOptions {
|
|
|
45
42
|
/**
|
|
46
43
|
* The configuration attributes for the embedded search view.
|
|
47
44
|
*
|
|
48
|
-
* @
|
|
45
|
+
* @group Embed components
|
|
49
46
|
*/
|
|
50
47
|
export interface SearchViewConfig extends ViewConfig {
|
|
51
48
|
/**
|
|
@@ -63,12 +60,9 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
63
60
|
* using raw answer data.
|
|
64
61
|
*/
|
|
65
62
|
hideResults?: boolean;
|
|
66
|
-
/**
|
|
67
|
-
* If set to true, expands all the data sources panel.
|
|
68
|
-
*/
|
|
69
|
-
expandAllDataSource?: boolean;
|
|
70
63
|
/**
|
|
71
64
|
* If set to true, the Search Assist feature is enabled.
|
|
65
|
+
*
|
|
72
66
|
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
73
67
|
*/
|
|
74
68
|
enableSearchAssist?: boolean;
|
|
@@ -80,16 +74,19 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
80
74
|
/**
|
|
81
75
|
* The array of data source GUIDs to set on load.
|
|
82
76
|
* Only a single dataSource supported currently.
|
|
77
|
+
*
|
|
83
78
|
* @deprecated Use dataSource instead
|
|
84
79
|
*/
|
|
85
80
|
dataSources?: string[];
|
|
86
81
|
/**
|
|
87
82
|
* The array of data source GUIDs to set on load.
|
|
83
|
+
*
|
|
88
84
|
* @version: SDK: 1.19.0
|
|
89
85
|
*/
|
|
90
86
|
dataSource?: string;
|
|
91
87
|
/**
|
|
92
88
|
* The initial search query to load the answer with.
|
|
89
|
+
*
|
|
93
90
|
* @deprecated Use {@link searchOptions} instead
|
|
94
91
|
*/
|
|
95
92
|
searchQuery?: string;
|
|
@@ -104,6 +101,7 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
104
101
|
/**
|
|
105
102
|
* If set to true, search page will render without the Search Bar
|
|
106
103
|
* The chart/table should still be visible.
|
|
104
|
+
*
|
|
107
105
|
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
|
|
108
106
|
*/
|
|
109
107
|
hideSearchBar?: boolean;
|
|
@@ -120,7 +118,7 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
|
|
|
120
118
|
/**
|
|
121
119
|
* Embed ThoughtSpot search
|
|
122
120
|
*
|
|
123
|
-
* @
|
|
121
|
+
* @group Embed components
|
|
124
122
|
*/
|
|
125
123
|
export class SearchEmbed extends TsEmbed {
|
|
126
124
|
/**
|
|
@@ -149,23 +147,16 @@ export class SearchEmbed extends TsEmbed {
|
|
|
149
147
|
return dataSourceMode;
|
|
150
148
|
}
|
|
151
149
|
|
|
152
|
-
|
|
153
|
-
* Construct the URL of the embedded ThoughtSpot search to be
|
|
154
|
-
* loaded in the iframe
|
|
155
|
-
* @param answerId The GUID of a saved answer
|
|
156
|
-
* @param dataSources A list of data source GUIDs
|
|
157
|
-
*/
|
|
158
|
-
private getIFrameSrc(answerId: string, dataSources?: string[]) {
|
|
150
|
+
protected getEmbedParams(): string {
|
|
159
151
|
const {
|
|
160
152
|
hideResults,
|
|
161
|
-
expandAllDataSource,
|
|
162
153
|
enableSearchAssist,
|
|
163
154
|
forceTable,
|
|
164
155
|
searchOptions,
|
|
165
156
|
runtimeFilters,
|
|
166
157
|
dataSource,
|
|
158
|
+
dataSources,
|
|
167
159
|
} = this.viewConfig;
|
|
168
|
-
const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';
|
|
169
160
|
const queryParams = this.getBaseQueryParams();
|
|
170
161
|
|
|
171
162
|
queryParams[Param.HideActions] = [
|
|
@@ -210,11 +201,21 @@ export class SearchEmbed extends TsEmbed {
|
|
|
210
201
|
if (filterQuery) {
|
|
211
202
|
query += `&${filterQuery}`;
|
|
212
203
|
}
|
|
204
|
+
return query;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Construct the URL of the embedded ThoughtSpot search to be
|
|
209
|
+
* loaded in the iframe
|
|
210
|
+
*
|
|
211
|
+
* @param answerId The GUID of a saved answer
|
|
212
|
+
* @param dataSources A list of data source GUIDs
|
|
213
|
+
*/
|
|
214
|
+
private getIFrameSrc(answerId: string) {
|
|
215
|
+
const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';
|
|
213
216
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
214
217
|
|
|
215
|
-
return `${this.
|
|
216
|
-
query,
|
|
217
|
-
)}/${answerPath}${tsPostHashParams}`;
|
|
218
|
+
return `${this.getRootIframeSrc()}/embed/${answerPath}${tsPostHashParams}`;
|
|
218
219
|
}
|
|
219
220
|
|
|
220
221
|
/**
|
|
@@ -222,10 +223,10 @@ export class SearchEmbed extends TsEmbed {
|
|
|
222
223
|
*/
|
|
223
224
|
public render(): SearchEmbed {
|
|
224
225
|
super.render();
|
|
225
|
-
const { answerId
|
|
226
|
+
const { answerId } = this.viewConfig;
|
|
226
227
|
|
|
227
|
-
const src = this.getIFrameSrc(answerId
|
|
228
|
-
this.renderIFrame(src
|
|
228
|
+
const src = this.getIFrameSrc(answerId);
|
|
229
|
+
this.renderIFrame(src);
|
|
229
230
|
getAuthPromise().then(() => {
|
|
230
231
|
if (
|
|
231
232
|
checkReleaseVersionInBeta(
|
|
@@ -19,27 +19,27 @@ init({
|
|
|
19
19
|
});
|
|
20
20
|
|
|
21
21
|
describe('Search embed tests when authType is Basic', () => {
|
|
22
|
+
/**
|
|
23
|
+
*
|
|
24
|
+
* @param version
|
|
25
|
+
*/
|
|
22
26
|
function setupVersion(version: string) {
|
|
23
|
-
jest.spyOn(window, 'addEventListener').mockImplementationOnce(
|
|
24
|
-
(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
json: () => ({
|
|
37
|
-
...mockSessionInfo,
|
|
38
|
-
releaseVersion: version,
|
|
39
|
-
}),
|
|
40
|
-
status: 200,
|
|
27
|
+
jest.spyOn(window, 'addEventListener').mockImplementationOnce((event, handler, options) => {
|
|
28
|
+
handler({
|
|
29
|
+
data: {
|
|
30
|
+
type: 'xyz',
|
|
31
|
+
},
|
|
32
|
+
ports: [3000],
|
|
33
|
+
source: null,
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
jest.spyOn(authService, 'fetchSessionInfoService').mockImplementation(async () => ({
|
|
37
|
+
json: () => ({
|
|
38
|
+
...mockSessionInfo,
|
|
39
|
+
releaseVersion: version,
|
|
41
40
|
}),
|
|
42
|
-
|
|
41
|
+
status: 200,
|
|
42
|
+
}));
|
|
43
43
|
jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(version);
|
|
44
44
|
}
|
|
45
45
|
beforeEach(() => {
|
|
@@ -76,9 +76,7 @@ describe('Search embed tests when authType is Basic', () => {
|
|
|
76
76
|
|
|
77
77
|
test('releaseVersion is above 8.4.0.sw', async () => {
|
|
78
78
|
setupVersion('8.8.0.sw');
|
|
79
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
|
|
80
|
-
() => 'http://tshost',
|
|
81
|
-
);
|
|
79
|
+
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
82
80
|
const mockAlert = jest.spyOn(window, 'alert');
|
|
83
81
|
const searchEmbed = new SearchEmbed(getRootEl(), {});
|
|
84
82
|
await searchEmbed.render();
|
|
@@ -87,9 +85,7 @@ describe('Search embed tests when authType is Basic', () => {
|
|
|
87
85
|
|
|
88
86
|
test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is ts7.dec.cl', async () => {
|
|
89
87
|
setupVersion('ts7.dec.cl');
|
|
90
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
|
|
91
|
-
() => 'http://tshost',
|
|
92
|
-
);
|
|
88
|
+
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
93
89
|
jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
|
|
94
90
|
suppressSearchEmbedBetaWarning: true,
|
|
95
91
|
});
|
|
@@ -101,9 +97,7 @@ describe('Search embed tests when authType is Basic', () => {
|
|
|
101
97
|
|
|
102
98
|
test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is 8.4.0.sw', async () => {
|
|
103
99
|
setupVersion('8.4.0.sw');
|
|
104
|
-
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
|
|
105
|
-
() => 'http://tshost',
|
|
106
|
-
);
|
|
100
|
+
jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(() => 'http://tshost');
|
|
107
101
|
jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
|
|
108
102
|
suppressSearchEmbedBetaWarning: true,
|
|
109
103
|
});
|