@thoughtspot/visual-embed-sdk 1.35.12 → 1.35.14
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/cjs/package.json +1 -2
- package/cjs/src/auth.d.ts +2 -1
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +3 -1
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +2 -0
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +44 -0
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +10 -1
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +36 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/hostEventClient/contracts.d.ts +3 -3
- package/cjs/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js +6 -1
- package/cjs/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +8 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +4 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +4 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +56 -3
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +6 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +38 -13
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +132 -130
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/types.d.ts +43 -17
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +35 -7
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +9 -2
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processData.spec.js +51 -0
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/dist/index-B3hd6DTM.js +7370 -0
- package/dist/index-vxW97_xb.js +7370 -0
- package/dist/src/auth.d.ts +2 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +44 -0
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/contracts.d.ts +3 -3
- package/dist/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/dist/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +6 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/types.d.ts +43 -17
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +122 -34
- package/dist/tsembed-react.js +121 -33
- package/dist/tsembed.es.js +122 -34
- package/dist/tsembed.js +121 -33
- package/dist/visual-embed-sdk-react-full.d.ts +92 -21
- package/dist/visual-embed-sdk-react.d.ts +92 -21
- package/dist/visual-embed-sdk.d.ts +92 -21
- package/lib/package.json +1 -2
- package/lib/src/auth.d.ts +2 -1
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +3 -1
- package/lib/src/auth.js.map +1 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +2 -0
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +44 -0
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +10 -1
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +36 -0
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/hostEventClient/contracts.d.ts +3 -3
- package/lib/src/embed/hostEventClient/contracts.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.d.ts.map +1 -1
- package/lib/src/embed/hostEventClient/host-event-client.js +6 -1
- package/lib/src/embed/hostEventClient/host-event-client.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +8 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +4 -2
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +4 -2
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +56 -3
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +6 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +38 -13
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +133 -131
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/types.d.ts +43 -17
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +35 -7
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +9 -2
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js +51 -0
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +92 -21
- package/package.json +1 -2
- package/src/auth.ts +3 -1
- package/src/embed/app.ts +2 -0
- package/src/embed/conversation.spec.ts +52 -3
- package/src/embed/conversation.ts +60 -1
- package/src/embed/hostEventClient/contracts.ts +3 -3
- package/src/embed/hostEventClient/host-event-client.ts +7 -1
- package/src/embed/liveboard.ts +9 -4
- package/src/embed/search-bar.tsx +6 -4
- package/src/embed/search.spec.ts +71 -3
- package/src/embed/search.ts +6 -5
- package/src/embed/ts-embed.spec.ts +153 -180
- package/src/embed/ts-embed.ts +46 -30
- package/src/types.ts +44 -15
- package/src/utils/processData.spec.ts +63 -0
- package/src/utils/processData.ts +12 -2
|
@@ -4,13 +4,11 @@ import {
|
|
|
4
4
|
} from './conversation';
|
|
5
5
|
import * as authInstance from '../auth';
|
|
6
6
|
import { init } from '../index';
|
|
7
|
-
import {
|
|
7
|
+
import { AuthType } from '../types';
|
|
8
8
|
import {
|
|
9
|
-
executeAfterWait,
|
|
10
9
|
getDocumentBody,
|
|
11
10
|
getIFrameSrc,
|
|
12
11
|
getRootEl,
|
|
13
|
-
fixedEncodeURI,
|
|
14
12
|
defaultParamsWithoutHiddenActions as defaultParams,
|
|
15
13
|
expectUrlMatchesWithParams,
|
|
16
14
|
} from '../test/test-utils';
|
|
@@ -62,6 +60,40 @@ describe('ConversationEmbed', () => {
|
|
|
62
60
|
);
|
|
63
61
|
});
|
|
64
62
|
|
|
63
|
+
it('should render the conversation embed with spotter limitations text if flag is set', async () => {
|
|
64
|
+
const viewConfig: ConversationViewConfig = {
|
|
65
|
+
worksheetId: 'worksheetId',
|
|
66
|
+
searchOptions: {
|
|
67
|
+
searchQuery: 'searchQuery',
|
|
68
|
+
},
|
|
69
|
+
showSpotterLimitations: true,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
|
|
73
|
+
await conversationEmbed.render();
|
|
74
|
+
expectUrlMatchesWithParams(
|
|
75
|
+
getIFrameSrc(),
|
|
76
|
+
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&showSpotterLimitations=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
77
|
+
);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should render the conversation embed with sample questions hidden', async () => {
|
|
81
|
+
const viewConfig: ConversationViewConfig = {
|
|
82
|
+
worksheetId: 'worksheetId',
|
|
83
|
+
searchOptions: {
|
|
84
|
+
searchQuery: 'searchQuery',
|
|
85
|
+
},
|
|
86
|
+
hideSampleQuestions: true,
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
|
|
90
|
+
await conversationEmbed.render();
|
|
91
|
+
expectUrlMatchesWithParams(
|
|
92
|
+
getIFrameSrc(),
|
|
93
|
+
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&hideSampleQuestions=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
94
|
+
);
|
|
95
|
+
});
|
|
96
|
+
|
|
65
97
|
it('should render the conversation embed with worksheets hidden', async () => {
|
|
66
98
|
const viewConfig: ConversationViewConfig = {
|
|
67
99
|
worksheetId: 'worksheetId',
|
|
@@ -93,4 +125,21 @@ describe('ConversationEmbed', () => {
|
|
|
93
125
|
ERROR_MESSAGE.SPOTTER_EMBED_WORKSHEED_ID_NOT_FOUND,
|
|
94
126
|
);
|
|
95
127
|
});
|
|
128
|
+
|
|
129
|
+
it('should render the conversation embed if data panel v2 flag is true', async () => {
|
|
130
|
+
const viewConfig: ConversationViewConfig = {
|
|
131
|
+
worksheetId: 'worksheetId',
|
|
132
|
+
searchOptions: {
|
|
133
|
+
searchQuery: 'searchQuery',
|
|
134
|
+
},
|
|
135
|
+
dataPanelV2: true,
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
|
|
139
|
+
await conversationEmbed.render();
|
|
140
|
+
expectUrlMatchesWithParams(
|
|
141
|
+
getIFrameSrc(),
|
|
142
|
+
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&enableDataPanelV2=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
143
|
+
);
|
|
144
|
+
});
|
|
96
145
|
});
|
|
@@ -14,6 +14,10 @@ export interface SearchOptions {
|
|
|
14
14
|
searchQuery: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* The configuration for the embedded conversationEmbed options.
|
|
19
|
+
* @group Embed components
|
|
20
|
+
*/
|
|
17
21
|
export interface ConversationViewConfig extends ViewConfig {
|
|
18
22
|
/**
|
|
19
23
|
* The ID of the worksheet to use for the conversation.
|
|
@@ -48,6 +52,46 @@ export interface ConversationViewConfig extends ViewConfig {
|
|
|
48
52
|
* @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
|
|
49
53
|
*/
|
|
50
54
|
hideSourceSelection?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Flag to control Data panel experience
|
|
57
|
+
* @default false
|
|
58
|
+
* @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.4.0.cl
|
|
59
|
+
* @example
|
|
60
|
+
* ```js
|
|
61
|
+
* const embed = new AppEmbed('#tsEmbed', {
|
|
62
|
+
* ... // other options
|
|
63
|
+
* dataPanelV2: true,
|
|
64
|
+
* })
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
dataPanelV2?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* showSpotterLimitations : show limitation text
|
|
70
|
+
* of the spotter underneath the chat input.
|
|
71
|
+
* default is false.
|
|
72
|
+
* @example
|
|
73
|
+
* ```js
|
|
74
|
+
* const embed = new ConversationEmbed('#tsEmbed', {
|
|
75
|
+
* ... // other options
|
|
76
|
+
* showSpotterLimitations : true,
|
|
77
|
+
* })
|
|
78
|
+
* ```
|
|
79
|
+
* @version SDK: 1.36.0 | Thoughtspot: 10.5.0.cl
|
|
80
|
+
*/
|
|
81
|
+
showSpotterLimitations?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* hideSampleQuestions : Hide sample questions on
|
|
84
|
+
* the initial screen of the conversation.
|
|
85
|
+
* @example
|
|
86
|
+
* ```js
|
|
87
|
+
* const embed = new ConversationEmbed('#tsEmbed', {
|
|
88
|
+
* ... // other options
|
|
89
|
+
* hideSampleQuestions : true,
|
|
90
|
+
* })
|
|
91
|
+
* ```
|
|
92
|
+
* @version SDK: 1.36.0 | Thoughtspot: 10.6.0.cl
|
|
93
|
+
*/
|
|
94
|
+
hideSampleQuestions?: boolean;
|
|
51
95
|
}
|
|
52
96
|
|
|
53
97
|
/**
|
|
@@ -71,12 +115,15 @@ export class ConversationEmbed extends TsEmbed {
|
|
|
71
115
|
super(container, viewConfig);
|
|
72
116
|
}
|
|
73
117
|
|
|
74
|
-
public getIframeSrc() {
|
|
118
|
+
public getIframeSrc(): string {
|
|
75
119
|
const {
|
|
76
120
|
worksheetId,
|
|
77
121
|
searchOptions,
|
|
78
122
|
disableSourceSelection,
|
|
79
123
|
hideSourceSelection,
|
|
124
|
+
dataPanelV2,
|
|
125
|
+
showSpotterLimitations,
|
|
126
|
+
hideSampleQuestions,
|
|
80
127
|
} = this.viewConfig;
|
|
81
128
|
const path = 'insights/conv-assist';
|
|
82
129
|
if (!worksheetId) {
|
|
@@ -91,6 +138,18 @@ export class ConversationEmbed extends TsEmbed {
|
|
|
91
138
|
queryParams[Param.HideSourceSelection] = !!hideSourceSelection;
|
|
92
139
|
}
|
|
93
140
|
|
|
141
|
+
if (!isUndefined(dataPanelV2)) {
|
|
142
|
+
queryParams[Param.DataPanelV2Enabled] = !!dataPanelV2;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (!isUndefined(showSpotterLimitations)) {
|
|
146
|
+
queryParams[Param.ShowSpotterLimitations] = !!showSpotterLimitations;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
if (!isUndefined(hideSampleQuestions)) {
|
|
150
|
+
queryParams[Param.HideSampleQuestions] = !!hideSampleQuestions;
|
|
151
|
+
}
|
|
152
|
+
|
|
94
153
|
let query = '';
|
|
95
154
|
const queryParamsString = getQueryParamString(queryParams, true);
|
|
96
155
|
if (queryParamsString) {
|
|
@@ -16,13 +16,13 @@ export type UIPassthroughContractBase = {
|
|
|
16
16
|
vizId?: string;
|
|
17
17
|
newVizName: string;
|
|
18
18
|
newVizDescription?: string;
|
|
19
|
-
|
|
19
|
+
liveboardId?: string;
|
|
20
20
|
tabId?: string;
|
|
21
|
-
|
|
21
|
+
newLiveboardName?: string;
|
|
22
22
|
newTabName?: string;
|
|
23
23
|
};
|
|
24
24
|
response: {
|
|
25
|
-
|
|
25
|
+
liveboardId: string;
|
|
26
26
|
tabId: string;
|
|
27
27
|
vizId: string;
|
|
28
28
|
};
|
|
@@ -96,8 +96,14 @@ export class HostEventClient {
|
|
|
96
96
|
return this.hostEventFallback(HostEvent.Pin, payload);
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
+
const formattedPayload = {
|
|
100
|
+
...payload,
|
|
101
|
+
pinboardId: payload.liveboardId,
|
|
102
|
+
newPinboardName: payload.newLiveboardName,
|
|
103
|
+
};
|
|
104
|
+
|
|
99
105
|
return this.handleHostEventWithParam(
|
|
100
|
-
UIPassthroughEvent.PinAnswerToLiveboard,
|
|
106
|
+
UIPassthroughEvent.PinAnswerToLiveboard, formattedPayload,
|
|
101
107
|
);
|
|
102
108
|
}
|
|
103
109
|
|
package/src/embed/liveboard.ts
CHANGED
|
@@ -25,6 +25,13 @@ import { V1Embed } from './ts-embed';
|
|
|
25
25
|
import { addPreviewStylesIfNotPresent } from '../utils/global-styles';
|
|
26
26
|
import { TriggerPayload, TriggerResponse } from './hostEventClient/contracts';
|
|
27
27
|
|
|
28
|
+
const liveboardHeightWhitelistedRoutes = [
|
|
29
|
+
'/embed/viz/',
|
|
30
|
+
'/embed/insights/viz/',
|
|
31
|
+
'/tsl-editor/PINBOARD_ANSWER_BOOK/',
|
|
32
|
+
'/import-tsl/PINBOARD_ANSWER_BOOK/',
|
|
33
|
+
];
|
|
34
|
+
|
|
28
35
|
/**
|
|
29
36
|
* The configuration for the embedded Liveboard or visualization page view.
|
|
30
37
|
* @group Embed components
|
|
@@ -562,10 +569,8 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
562
569
|
};
|
|
563
570
|
|
|
564
571
|
private setIframeHeightForNonEmbedLiveboard = (data: MessagePayload) => {
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|| data.data.currentPath.startsWith('/embed/insights/viz/')
|
|
568
|
-
) {
|
|
572
|
+
const routePath = data.data.currentPath;
|
|
573
|
+
if (liveboardHeightWhitelistedRoutes.some((path) => routePath.startsWith(path))) {
|
|
569
574
|
return;
|
|
570
575
|
}
|
|
571
576
|
this.setIFrameHeight(this.defaultHeight);
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -143,10 +143,12 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
143
143
|
if (dataSource) {
|
|
144
144
|
queryParams[Param.DataSources] = `["${dataSource}"]`;
|
|
145
145
|
}
|
|
146
|
-
if (searchOptions?.searchTokenString
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
if (searchOptions?.searchTokenString) {
|
|
147
|
+
if (!excludeSearchTokenStringFromURL) {
|
|
148
|
+
queryParams[Param.searchTokenString] = encodeURIComponent(
|
|
149
|
+
searchOptions.searchTokenString,
|
|
150
|
+
);
|
|
151
|
+
}
|
|
150
152
|
|
|
151
153
|
if (searchOptions.executeSearch) {
|
|
152
154
|
queryParams[Param.executeSearch] = true;
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -539,10 +539,10 @@ describe('Search embed tests', () => {
|
|
|
539
539
|
});
|
|
540
540
|
});
|
|
541
541
|
|
|
542
|
-
test('with excludeSearchTokenStringFromURL', async () => {
|
|
542
|
+
test('with excludeSearchTokenStringFromURL, execute as false', async () => {
|
|
543
543
|
const searchOptions: SearchOptions = {
|
|
544
544
|
searchTokenString: '[commit date][revenue]',
|
|
545
|
-
executeSearch:
|
|
545
|
+
executeSearch: false,
|
|
546
546
|
};
|
|
547
547
|
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
548
548
|
...defaultViewConfig,
|
|
@@ -570,6 +570,9 @@ describe('Search embed tests', () => {
|
|
|
570
570
|
);
|
|
571
571
|
});
|
|
572
572
|
|
|
573
|
+
expect(getIFrameSrc().includes('searchTokenString')).toBeFalsy();
|
|
574
|
+
expect(getIFrameSrc().includes('executeSearch')).toBeFalsy();
|
|
575
|
+
|
|
573
576
|
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
574
577
|
type: EmbedEvent.APP_INIT,
|
|
575
578
|
data: expect.objectContaining({
|
|
@@ -580,22 +583,87 @@ describe('Search embed tests', () => {
|
|
|
580
583
|
});
|
|
581
584
|
});
|
|
582
585
|
|
|
583
|
-
test('
|
|
586
|
+
test('with excludeSearchTokenStringFromURL with execute true', async () => {
|
|
584
587
|
const searchOptions: SearchOptions = {
|
|
585
588
|
searchTokenString: '[commit date][revenue]',
|
|
586
589
|
executeSearch: true,
|
|
587
590
|
};
|
|
591
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
592
|
+
...defaultViewConfig,
|
|
593
|
+
searchOptions,
|
|
594
|
+
excludeSearchTokenStringFromURL: true,
|
|
595
|
+
});
|
|
596
|
+
const mockEmbedEventPayload = {
|
|
597
|
+
type: EmbedEvent.APP_INIT,
|
|
598
|
+
data: {},
|
|
599
|
+
};
|
|
600
|
+
searchEmbed.render();
|
|
601
|
+
|
|
602
|
+
const mockPort: any = {
|
|
603
|
+
postMessage: jest.fn(),
|
|
604
|
+
};
|
|
605
|
+
await executeAfterWait(() => {
|
|
606
|
+
const iframe = getIFrameEl();
|
|
607
|
+
postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
|
|
608
|
+
});
|
|
609
|
+
|
|
610
|
+
expect(getIFrameSrc().includes('searchTokenString')).toBeFalsy();
|
|
611
|
+
|
|
612
|
+
await executeAfterWait(() => {
|
|
613
|
+
expectUrlMatchesWithParams(
|
|
614
|
+
getIFrameSrc(),
|
|
615
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&executeSearch=true&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
616
|
+
);
|
|
617
|
+
});
|
|
618
|
+
|
|
619
|
+
expect(mockPort.postMessage).toHaveBeenCalledWith({
|
|
620
|
+
type: EmbedEvent.APP_INIT,
|
|
621
|
+
data: expect.objectContaining({
|
|
622
|
+
searchOptions: {
|
|
623
|
+
searchTokenString: '[commit date][revenue]',
|
|
624
|
+
},
|
|
625
|
+
}),
|
|
626
|
+
});
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
test('without excludeSearchTokenStringFromURL with execute search as false', async () => {
|
|
630
|
+
const searchOptions: SearchOptions = {
|
|
631
|
+
searchTokenString: '[commit date][revenue]',
|
|
632
|
+
executeSearch: false,
|
|
633
|
+
};
|
|
634
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
635
|
+
...defaultViewConfig,
|
|
636
|
+
searchOptions,
|
|
637
|
+
excludeSearchTokenStringFromURL: false,
|
|
638
|
+
});
|
|
639
|
+
searchEmbed.render();
|
|
640
|
+
await executeAfterWait(() => {
|
|
641
|
+
expectUrlMatchesWithParams(
|
|
642
|
+
getIFrameSrc(),
|
|
643
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
644
|
+
);
|
|
645
|
+
});
|
|
646
|
+
});
|
|
647
|
+
|
|
648
|
+
test('without excludeSearchTokenStringFromURL with executeSearch as false', async () => {
|
|
649
|
+
const searchOptions: SearchOptions = {
|
|
650
|
+
searchTokenString: '[commit date][revenue]',
|
|
651
|
+
executeSearch: false,
|
|
652
|
+
};
|
|
588
653
|
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
589
654
|
...defaultViewConfig,
|
|
590
655
|
searchOptions,
|
|
591
656
|
excludeSearchTokenStringFromURL: false,
|
|
592
657
|
});
|
|
593
658
|
searchEmbed.render();
|
|
659
|
+
|
|
594
660
|
await executeAfterWait(() => {
|
|
595
661
|
expectUrlMatchesWithParams(
|
|
596
662
|
getIFrameSrc(),
|
|
597
663
|
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false&searchTokenString=[commit date][revenue]${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
598
664
|
);
|
|
599
665
|
});
|
|
666
|
+
|
|
667
|
+
expect(getIFrameSrc().includes('executeSearch')).toBeFalsy();
|
|
600
668
|
});
|
|
601
669
|
});
|
package/src/embed/search.ts
CHANGED
|
@@ -392,11 +392,12 @@ export class SearchEmbed extends TsEmbed {
|
|
|
392
392
|
if (dataSource) {
|
|
393
393
|
queryParams[Param.DataSources] = `["${dataSource}"]`;
|
|
394
394
|
}
|
|
395
|
-
if (searchOptions?.searchTokenString
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
395
|
+
if (searchOptions?.searchTokenString) {
|
|
396
|
+
if (!excludeSearchTokenStringFromURL) {
|
|
397
|
+
queryParams[Param.searchTokenString] = encodeURIComponent(
|
|
398
|
+
searchOptions.searchTokenString,
|
|
399
|
+
);
|
|
400
|
+
}
|
|
400
401
|
if (searchOptions.executeSearch) {
|
|
401
402
|
queryParams[Param.executeSearch] = true;
|
|
402
403
|
}
|