@thoughtspot/visual-embed-sdk 1.20.0-alpha.2 → 1.20.0-prerender.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/dist/src/auth.d.ts +75 -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 -3
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +76 -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 +429 -97
- 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 +818 -285
- package/dist/tsembed.js +791 -284
- package/lib/package.json +4 -3
- package/lib/src/auth.d.ts +75 -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 -3
- 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 +76 -5
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +150 -72
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +23 -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 +4 -6
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +3 -6
- 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 +429 -97
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +310 -72
- 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 +664 -141
- package/package.json +4 -3
- package/src/auth.spec.ts +68 -150
- package/src/auth.ts +141 -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 +67 -65
- 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 -22
- package/src/embed/searchEmbed-basic-auth.spec.ts +22 -28
- package/src/embed/ts-embed.spec.ts +70 -148
- package/src/embed/ts-embed.ts +180 -157
- 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 +11 -20
- package/src/react/index.tsx +40 -71
- package/src/react/util.ts +8 -4
- package/src/test/test-utils.ts +43 -39
- package/src/types.ts +427 -97
- 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
|
/**
|
|
@@ -65,6 +62,7 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
65
62
|
hideResults?: boolean;
|
|
66
63
|
/**
|
|
67
64
|
* If set to true, the Search Assist feature is enabled.
|
|
65
|
+
*
|
|
68
66
|
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
69
67
|
*/
|
|
70
68
|
enableSearchAssist?: boolean;
|
|
@@ -76,16 +74,19 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
76
74
|
/**
|
|
77
75
|
* The array of data source GUIDs to set on load.
|
|
78
76
|
* Only a single dataSource supported currently.
|
|
77
|
+
*
|
|
79
78
|
* @deprecated Use dataSource instead
|
|
80
79
|
*/
|
|
81
80
|
dataSources?: string[];
|
|
82
81
|
/**
|
|
83
82
|
* The array of data source GUIDs to set on load.
|
|
83
|
+
*
|
|
84
84
|
* @version: SDK: 1.19.0
|
|
85
85
|
*/
|
|
86
86
|
dataSource?: string;
|
|
87
87
|
/**
|
|
88
88
|
* The initial search query to load the answer with.
|
|
89
|
+
*
|
|
89
90
|
* @deprecated Use {@link searchOptions} instead
|
|
90
91
|
*/
|
|
91
92
|
searchQuery?: string;
|
|
@@ -100,6 +101,7 @@ export interface SearchViewConfig extends ViewConfig {
|
|
|
100
101
|
/**
|
|
101
102
|
* If set to true, search page will render without the Search Bar
|
|
102
103
|
* The chart/table should still be visible.
|
|
104
|
+
*
|
|
103
105
|
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl
|
|
104
106
|
*/
|
|
105
107
|
hideSearchBar?: boolean;
|
|
@@ -116,7 +118,7 @@ export const HiddenActionItemByDefaultForSearchEmbed = [
|
|
|
116
118
|
/**
|
|
117
119
|
* Embed ThoughtSpot search
|
|
118
120
|
*
|
|
119
|
-
* @
|
|
121
|
+
* @group Embed components
|
|
120
122
|
*/
|
|
121
123
|
export class SearchEmbed extends TsEmbed {
|
|
122
124
|
/**
|
|
@@ -145,13 +147,7 @@ export class SearchEmbed extends TsEmbed {
|
|
|
145
147
|
return dataSourceMode;
|
|
146
148
|
}
|
|
147
149
|
|
|
148
|
-
|
|
149
|
-
* Construct the URL of the embedded ThoughtSpot search to be
|
|
150
|
-
* loaded in the iframe
|
|
151
|
-
* @param answerId The GUID of a saved answer
|
|
152
|
-
* @param dataSources A list of data source GUIDs
|
|
153
|
-
*/
|
|
154
|
-
private getIFrameSrc(answerId: string, dataSources?: string[]) {
|
|
150
|
+
protected getEmbedParams(): string {
|
|
155
151
|
const {
|
|
156
152
|
hideResults,
|
|
157
153
|
enableSearchAssist,
|
|
@@ -159,8 +155,8 @@ export class SearchEmbed extends TsEmbed {
|
|
|
159
155
|
searchOptions,
|
|
160
156
|
runtimeFilters,
|
|
161
157
|
dataSource,
|
|
158
|
+
dataSources,
|
|
162
159
|
} = this.viewConfig;
|
|
163
|
-
const answerPath = answerId ? `saved-answer/${answerId}` : 'answer';
|
|
164
160
|
const queryParams = this.getBaseQueryParams();
|
|
165
161
|
|
|
166
162
|
queryParams[Param.HideActions] = [
|
|
@@ -205,11 +201,21 @@ export class SearchEmbed extends TsEmbed {
|
|
|
205
201
|
if (filterQuery) {
|
|
206
202
|
query += `&${filterQuery}`;
|
|
207
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';
|
|
208
216
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
209
217
|
|
|
210
|
-
return `${this.
|
|
211
|
-
query,
|
|
212
|
-
)}/${answerPath}${tsPostHashParams}`;
|
|
218
|
+
return `${this.getRootIframeSrc()}/embed/${answerPath}${tsPostHashParams}`;
|
|
213
219
|
}
|
|
214
220
|
|
|
215
221
|
/**
|
|
@@ -217,10 +223,10 @@ export class SearchEmbed extends TsEmbed {
|
|
|
217
223
|
*/
|
|
218
224
|
public render(): SearchEmbed {
|
|
219
225
|
super.render();
|
|
220
|
-
const { answerId
|
|
226
|
+
const { answerId } = this.viewConfig;
|
|
221
227
|
|
|
222
|
-
const src = this.getIFrameSrc(answerId
|
|
223
|
-
this.renderIFrame(src
|
|
228
|
+
const src = this.getIFrameSrc(answerId);
|
|
229
|
+
this.renderIFrame(src);
|
|
224
230
|
getAuthPromise().then(() => {
|
|
225
231
|
if (
|
|
226
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
|
});
|