@thoughtspot/visual-embed-sdk 1.39.2-alpha.1 → 1.39.2-spotter-agent
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 -1
- package/cjs/src/config.spec.js +9 -0
- package/cjs/src/config.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +24 -4
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
- package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +2 -60
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +1 -9
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +0 -102
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/pages/embed-test.page.d.ts +8 -0
- package/cjs/src/pages/embed-test.page.d.ts.map +1 -0
- package/cjs/src/pages/embed-test.page.js +20 -0
- package/cjs/src/pages/embed-test.page.js.map +1 -0
- package/cjs/src/pages/home.page.d.ts +6 -0
- package/cjs/src/pages/home.page.d.ts.map +1 -0
- package/cjs/src/pages/home.page.js +12 -0
- package/cjs/src/pages/home.page.js.map +1 -0
- package/cjs/src/pages/login.page.d.ts +15 -0
- package/cjs/src/pages/login.page.d.ts.map +1 -0
- package/cjs/src/pages/login.page.js +22 -0
- package/cjs/src/pages/login.page.js.map +1 -0
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +3 -2
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +71 -20
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +79 -42
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +436 -100
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/tests/auth.test.d.ts +1 -0
- package/cjs/src/tests/auth.test.d.ts.map +1 -0
- package/cjs/src/tests/auth.test.js +1 -0
- package/cjs/src/tests/auth.test.js.map +1 -0
- package/cjs/src/tests/e2e/auth.spec.d.ts +2 -0
- package/cjs/src/tests/e2e/auth.spec.d.ts.map +1 -0
- package/cjs/src/tests/e2e/auth.spec.js +54 -0
- package/cjs/src/tests/e2e/auth.spec.js.map +1 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/cjs/src/utils.spec.js +25 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/index-2QHwuA-G.js +7371 -0
- package/dist/{index-DeFzsyFF.js → index-Cj4BVGHL.js} +1 -1
- package/dist/{index-UuEbsISo.js → index-DUaG1OG2.js} +1 -1
- package/dist/{index-CmEQfuE3.js → index-DnIvX1FR.js} +1 -1
- package/dist/{index-Dpf0rd6w.js → index-Fhk1V_Gw.js} +1 -1
- package/dist/index-OuiZF3zE.js +7371 -0
- package/dist/src/embed/bodyless-conversation.d.ts +19 -7
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +2 -60
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +71 -20
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +112 -63
- package/dist/tsembed-react.js +112 -61
- package/dist/tsembed.es.js +29 -15
- package/dist/tsembed.js +28 -14
- package/dist/visual-embed-sdk-react-full.d.ts +90 -85
- package/dist/visual-embed-sdk-react.d.ts +90 -85
- package/dist/visual-embed-sdk.d.ts +20 -66
- package/lib/package.json +1 -1
- package/lib/src/config.spec.js +9 -0
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +19 -7
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +23 -4
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.spec.js +9 -191
- package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +2 -60
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +2 -10
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +2 -104
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/index.d.ts +71 -20
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +79 -43
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +439 -103
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/lib/src/utils.spec.js +26 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +21 -67
- package/package.json +1 -1
- package/src/config.spec.ts +11 -0
- package/src/embed/bodyless-conversation.spec.ts +9 -203
- package/src/embed/bodyless-conversation.ts +24 -10
- package/src/embed/conversation.spec.ts +5 -131
- package/src/embed/conversation.ts +10 -82
- package/src/errors.ts +1 -0
- package/src/react/all-types-export.ts +2 -1
- package/src/react/index.spec.tsx +556 -157
- package/src/react/index.tsx +117 -51
- package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
- package/src/utils.spec.ts +29 -0
|
@@ -13,11 +13,6 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
|
|
|
13
13
|
* The ID of the worksheet to use for the conversation.
|
|
14
14
|
*/
|
|
15
15
|
worksheetId: string;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Optional CSS class name to add to the container div.
|
|
19
|
-
*/
|
|
20
|
-
containerClassName?: string;
|
|
21
16
|
}
|
|
22
17
|
|
|
23
18
|
/**
|
|
@@ -29,14 +24,14 @@ export interface SpotterAgentEmbedViewConfig extends Omit<BaseViewConfig, 'prima
|
|
|
29
24
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
30
25
|
export interface BodylessConversationViewConfig extends SpotterAgentEmbedViewConfig {}
|
|
31
26
|
|
|
32
|
-
interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
|
|
27
|
+
export interface SpotterAgentMessageViewConfig extends SpotterAgentEmbedViewConfig {
|
|
33
28
|
sessionId: string;
|
|
34
29
|
genNo: number;
|
|
35
30
|
acSessionId: string;
|
|
36
31
|
acGenNo: number;
|
|
37
32
|
}
|
|
38
33
|
|
|
39
|
-
class ConversationMessage extends TsEmbed {
|
|
34
|
+
export class ConversationMessage extends TsEmbed {
|
|
40
35
|
constructor(container: HTMLElement, protected viewConfig: SpotterAgentMessageViewConfig) {
|
|
41
36
|
viewConfig.embedComponentType = 'bodyless-conversation';
|
|
42
37
|
super(container, viewConfig);
|
|
@@ -116,9 +111,6 @@ export class SpotterAgentEmbed {
|
|
|
116
111
|
}
|
|
117
112
|
|
|
118
113
|
const container = document.createElement('div');
|
|
119
|
-
if (this.viewConfig.containerClassName) {
|
|
120
|
-
container.className = this.viewConfig.containerClassName;
|
|
121
|
-
}
|
|
122
114
|
|
|
123
115
|
const embed = new ConversationMessage(container, {
|
|
124
116
|
...this.viewConfig,
|
|
@@ -130,6 +122,28 @@ export class SpotterAgentEmbed {
|
|
|
130
122
|
await embed.render();
|
|
131
123
|
return { container, viz: embed };
|
|
132
124
|
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Send a message to the conversation service and return only the data.
|
|
128
|
+
* @param userMessage - The message to send to the conversation service.
|
|
129
|
+
* @returns The data from the conversation service.
|
|
130
|
+
*/
|
|
131
|
+
public async sendMessageData(userMessage: string) {
|
|
132
|
+
try {
|
|
133
|
+
const { data, error } = await this.conversationService.sendMessage(userMessage);
|
|
134
|
+
if (error) {
|
|
135
|
+
return { error };
|
|
136
|
+
}
|
|
137
|
+
return { data: {
|
|
138
|
+
sessionId: data.sessionId,
|
|
139
|
+
genNo: data.genNo,
|
|
140
|
+
acSessionId: data.stateKey.transactionId,
|
|
141
|
+
acGenNo: data.stateKey.generationNumber,
|
|
142
|
+
} };
|
|
143
|
+
} catch (error) {
|
|
144
|
+
return { error: error as Error };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
133
147
|
}
|
|
134
148
|
|
|
135
149
|
/**
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
SpotterEmbed,
|
|
3
|
+
SpotterEmbedViewConfig,
|
|
4
|
+
} from './conversation';
|
|
3
5
|
import * as authInstance from '../auth';
|
|
4
6
|
import { Action, init } from '../index';
|
|
5
|
-
import { AuthType, Param
|
|
7
|
+
import { AuthType, Param } from '../types';
|
|
6
8
|
import {
|
|
7
9
|
getDocumentBody,
|
|
8
10
|
getIFrameSrc,
|
|
@@ -178,132 +180,4 @@ describe('ConversationEmbed', () => {
|
|
|
178
180
|
`http://${thoughtSpotHost}/v2/?${defaultParams}&${Param.DisableActions}=[%22${Action.InConversationTraining}%22]&${Param.DisableActionReason}=${disabledReason}&isSpotterExperienceEnabled=true&enableDataPanelV2=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
179
181
|
);
|
|
180
182
|
});
|
|
181
|
-
|
|
182
|
-
it('should render the conversation embed with runtime filters', async () => {
|
|
183
|
-
const viewConfig: SpotterEmbedViewConfig = {
|
|
184
|
-
worksheetId: 'worksheetId',
|
|
185
|
-
searchOptions: {
|
|
186
|
-
searchQuery: 'searchQuery',
|
|
187
|
-
},
|
|
188
|
-
runtimeFilters: [
|
|
189
|
-
{
|
|
190
|
-
columnName: 'revenue',
|
|
191
|
-
operator: RuntimeFilterOp.EQ,
|
|
192
|
-
values: [1000],
|
|
193
|
-
},
|
|
194
|
-
],
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
198
|
-
await conversationEmbed.render();
|
|
199
|
-
expectUrlMatchesWithParams(
|
|
200
|
-
getIFrameSrc(),
|
|
201
|
-
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&col1=revenue&op1=EQ&val1=1000#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
202
|
-
);
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
it('should render the conversation embed with runtime parameters', async () => {
|
|
206
|
-
const viewConfig: SpotterEmbedViewConfig = {
|
|
207
|
-
worksheetId: 'worksheetId',
|
|
208
|
-
searchOptions: {
|
|
209
|
-
searchQuery: 'searchQuery',
|
|
210
|
-
},
|
|
211
|
-
runtimeParameters: [
|
|
212
|
-
{
|
|
213
|
-
name: 'Date Range',
|
|
214
|
-
value: '30',
|
|
215
|
-
},
|
|
216
|
-
],
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
220
|
-
await conversationEmbed.render();
|
|
221
|
-
expectUrlMatchesWithParams(
|
|
222
|
-
getIFrameSrc(),
|
|
223
|
-
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
224
|
-
);
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
it('should render the conversation embed with runtime parameters excluded from URL', async () => {
|
|
228
|
-
const viewConfig: SpotterEmbedViewConfig = {
|
|
229
|
-
worksheetId: 'worksheetId',
|
|
230
|
-
searchOptions: {
|
|
231
|
-
searchQuery: 'searchQuery',
|
|
232
|
-
},
|
|
233
|
-
runtimeParameters: [
|
|
234
|
-
{
|
|
235
|
-
name: 'Date Range',
|
|
236
|
-
value: '30',
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
name: 'Region',
|
|
240
|
-
value: 'North America',
|
|
241
|
-
},
|
|
242
|
-
],
|
|
243
|
-
excludeRuntimeParametersfromURL: true,
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
247
|
-
await conversationEmbed.render();
|
|
248
|
-
expectUrlMatchesWithParams(
|
|
249
|
-
getIFrameSrc(),
|
|
250
|
-
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
251
|
-
);
|
|
252
|
-
});
|
|
253
|
-
|
|
254
|
-
it('should render the conversation embed with both runtime filters and parameters', async () => {
|
|
255
|
-
const viewConfig: SpotterEmbedViewConfig = {
|
|
256
|
-
worksheetId: 'worksheetId',
|
|
257
|
-
searchOptions: {
|
|
258
|
-
searchQuery: 'searchQuery',
|
|
259
|
-
},
|
|
260
|
-
runtimeParameters: [
|
|
261
|
-
{
|
|
262
|
-
name: 'Date Range',
|
|
263
|
-
value: '30',
|
|
264
|
-
},
|
|
265
|
-
],
|
|
266
|
-
runtimeFilters: [
|
|
267
|
-
{
|
|
268
|
-
columnName: 'revenue',
|
|
269
|
-
operator: RuntimeFilterOp.EQ,
|
|
270
|
-
values: [1000],
|
|
271
|
-
},
|
|
272
|
-
],
|
|
273
|
-
excludeRuntimeParametersfromURL: false,
|
|
274
|
-
excludeRuntimeFiltersfromURL: false,
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
const conversationEmbed = new SpotterEmbed(getRootEl(), viewConfig);
|
|
278
|
-
await conversationEmbed.render();
|
|
279
|
-
expectUrlMatchesWithParams(
|
|
280
|
-
getIFrameSrc(),
|
|
281
|
-
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true&col1=revenue&op1=EQ&val1=1000¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
282
|
-
);
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
it('should ensure deprecated ConversationEmbed class maintains same functionality as SpotterEmbed', async () => {
|
|
286
|
-
const viewConfig: SpotterEmbedViewConfig = {
|
|
287
|
-
worksheetId: 'worksheetId',
|
|
288
|
-
searchOptions: {
|
|
289
|
-
searchQuery: 'searchQuery',
|
|
290
|
-
},
|
|
291
|
-
runtimeParameters: [
|
|
292
|
-
{
|
|
293
|
-
name: 'Date Range',
|
|
294
|
-
value: '30',
|
|
295
|
-
},
|
|
296
|
-
],
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
// Test with deprecated class
|
|
300
|
-
const conversationEmbed = new ConversationEmbed(getRootEl(), viewConfig);
|
|
301
|
-
await conversationEmbed.render();
|
|
302
|
-
|
|
303
|
-
// Verify it generates the same URL structure as SpotterEmbed
|
|
304
|
-
expectUrlMatchesWithParams(
|
|
305
|
-
getIFrameSrc(),
|
|
306
|
-
`http://${thoughtSpotHost}/v2/?${defaultParams}&isSpotterExperienceEnabled=true¶m1=Date%20Range¶mVal1=30#/embed/insights/conv-assist?worksheet=worksheetId&query=searchQuery`,
|
|
307
|
-
);
|
|
308
|
-
});
|
|
309
183
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import isUndefined from 'lodash/isUndefined';
|
|
2
2
|
import { ERROR_MESSAGE } from '../errors';
|
|
3
|
-
import { Param, BaseViewConfig
|
|
3
|
+
import { Param, BaseViewConfig } from '../types';
|
|
4
4
|
import { TsEmbed } from './ts-embed';
|
|
5
|
-
import { getQueryParamString
|
|
5
|
+
import { getQueryParamString } from '../utils';
|
|
6
6
|
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
8
|
* Configuration for search options
|
|
9
9
|
*/
|
|
10
10
|
export interface SearchOptions {
|
|
@@ -20,8 +20,7 @@ export interface SearchOptions {
|
|
|
20
20
|
*/
|
|
21
21
|
export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAction'> {
|
|
22
22
|
/**
|
|
23
|
-
* The ID of the data source object. For example, Model, View, or Table. Spotter uses
|
|
24
|
-
* this object to query data and generate Answers.
|
|
23
|
+
* The ID of the data source object. For example, Model, View, or Table. Spotter uses this object to query data and generate Answers.
|
|
25
24
|
*/
|
|
26
25
|
worksheetId: string;
|
|
27
26
|
/**
|
|
@@ -31,7 +30,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
31
30
|
/**
|
|
32
31
|
* disableSourceSelection : Disables data source selection
|
|
33
32
|
* but still display the selected data source.
|
|
34
|
-
*
|
|
33
|
+
*
|
|
35
34
|
* Supported embed types: `SpotterEmbed`
|
|
36
35
|
* @example
|
|
37
36
|
* ```js
|
|
@@ -45,7 +44,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
45
44
|
disableSourceSelection?: boolean;
|
|
46
45
|
/**
|
|
47
46
|
* hideSourceSelection : Hide data source selection
|
|
48
|
-
*
|
|
47
|
+
*
|
|
49
48
|
* Supported embed types: `SpotterEmbed`
|
|
50
49
|
* @example
|
|
51
50
|
* ```js
|
|
@@ -59,7 +58,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
59
58
|
hideSourceSelection?: boolean;
|
|
60
59
|
/**
|
|
61
60
|
* Flag to control Data panel experience
|
|
62
|
-
*
|
|
61
|
+
*
|
|
63
62
|
* Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
|
|
64
63
|
* @default false
|
|
65
64
|
* @version SDK: 1.36.0 | ThoughtSpot Cloud: 10.4.0.cl
|
|
@@ -77,7 +76,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
77
76
|
* showSpotterLimitations : show limitation text
|
|
78
77
|
* of the spotter underneath the chat input.
|
|
79
78
|
* default is false.
|
|
80
|
-
*
|
|
79
|
+
*
|
|
81
80
|
* Supported embed types: `SpotterEmbed`
|
|
82
81
|
* @example
|
|
83
82
|
* ```js
|
|
@@ -92,7 +91,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
92
91
|
/**
|
|
93
92
|
* hideSampleQuestions : Hide sample questions on
|
|
94
93
|
* the initial screen of the conversation.
|
|
95
|
-
*
|
|
94
|
+
*
|
|
96
95
|
* Supported embed types: `SpotterEmbed`
|
|
97
96
|
* @example
|
|
98
97
|
* ```js
|
|
@@ -104,63 +103,6 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
104
103
|
* @version SDK: 1.36.0 | ThoughtSpot: 10.6.0.cl
|
|
105
104
|
*/
|
|
106
105
|
hideSampleQuestions?: boolean;
|
|
107
|
-
/**
|
|
108
|
-
* The list of runtime filters to apply to a search Answer,
|
|
109
|
-
* visualization, or Liveboard.
|
|
110
|
-
*
|
|
111
|
-
* Supported embed types: `SpotterEmbed`
|
|
112
|
-
* @example
|
|
113
|
-
* ```js
|
|
114
|
-
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
115
|
-
* ... // other embed view config
|
|
116
|
-
* runtimeFilters: [
|
|
117
|
-
* {
|
|
118
|
-
* columnName: 'value',
|
|
119
|
-
* operator: RuntimeFilterOp.EQ,
|
|
120
|
-
* values: ['string' | 123 | true],
|
|
121
|
-
* },
|
|
122
|
-
* ],
|
|
123
|
-
* })
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
runtimeFilters?: RuntimeFilter[];
|
|
127
|
-
/**
|
|
128
|
-
* Flag to control whether runtime filters should be included in the URL.
|
|
129
|
-
* If true, filters will be passed via app initialization payload instead.
|
|
130
|
-
* If false/undefined, filters will be added to URL (default behavior).
|
|
131
|
-
*
|
|
132
|
-
* Supported embed types: `SpotterEmbed`
|
|
133
|
-
* @default false
|
|
134
|
-
*/
|
|
135
|
-
excludeRuntimeFiltersfromURL?: boolean;
|
|
136
|
-
/**
|
|
137
|
-
* The list of runtime parameters to apply to the conversation.
|
|
138
|
-
*
|
|
139
|
-
* Supported embed types: `SpotterEmbed`
|
|
140
|
-
* @example
|
|
141
|
-
* ```js
|
|
142
|
-
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
143
|
-
* ... // other embed view config
|
|
144
|
-
* runtimeParameters: [
|
|
145
|
-
* {
|
|
146
|
-
* name: 'Parameter Name',
|
|
147
|
-
* value: 'Parameter Value',
|
|
148
|
-
* },
|
|
149
|
-
* ],
|
|
150
|
-
* })
|
|
151
|
-
* ```
|
|
152
|
-
*/
|
|
153
|
-
runtimeParameters?: RuntimeParameter[];
|
|
154
|
-
/**
|
|
155
|
-
* Flag to control whether runtime parameters should be included in the URL.
|
|
156
|
-
* If true, parameters will be passed via app initialization payload instead.
|
|
157
|
-
* If false/undefined, parameters will be added to URL (default behavior).
|
|
158
|
-
*
|
|
159
|
-
* Supported embed types: `SpotterEmbed`
|
|
160
|
-
* @default false
|
|
161
|
-
*
|
|
162
|
-
*/
|
|
163
|
-
excludeRuntimeParametersfromURL?: boolean;
|
|
164
106
|
}
|
|
165
107
|
|
|
166
108
|
/**
|
|
@@ -202,10 +144,6 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
202
144
|
dataPanelV2,
|
|
203
145
|
showSpotterLimitations,
|
|
204
146
|
hideSampleQuestions,
|
|
205
|
-
runtimeFilters,
|
|
206
|
-
excludeRuntimeFiltersfromURL,
|
|
207
|
-
runtimeParameters,
|
|
208
|
-
excludeRuntimeParametersfromURL,
|
|
209
147
|
} = this.viewConfig;
|
|
210
148
|
const path = 'insights/conv-assist';
|
|
211
149
|
if (!worksheetId) {
|
|
@@ -237,21 +175,11 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
237
175
|
if (queryParamsString) {
|
|
238
176
|
query = `?${queryParamsString}`;
|
|
239
177
|
}
|
|
240
|
-
|
|
241
|
-
const filterQuery = getFilterQuery(runtimeFilters || []);
|
|
242
|
-
if (filterQuery && !excludeRuntimeFiltersfromURL) {
|
|
243
|
-
query += `&${filterQuery}`;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
247
|
-
if (parameterQuery && !excludeRuntimeParametersfromURL) {
|
|
248
|
-
query += `&${parameterQuery}`;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
178
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams({
|
|
252
179
|
worksheet: worksheetId,
|
|
253
180
|
query: searchOptions?.searchQuery || '',
|
|
254
181
|
});
|
|
182
|
+
|
|
255
183
|
return `${this.getEmbedBasePath(query)}/embed/${path}${tsPostHashParams}`;
|
|
256
184
|
}
|
|
257
185
|
|
package/src/errors.ts
CHANGED
|
@@ -17,4 +17,5 @@ export const ERROR_MESSAGE = {
|
|
|
17
17
|
CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE: 'Please set up CSP correctly for the application to start working. For more information, see https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts. \n If the issue persists, refer to https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts',
|
|
18
18
|
MISSING_REPORTING_OBSERVER: 'ReportingObserver not supported',
|
|
19
19
|
RENDER_CALLED_BEFORE_INIT: 'Looks like render was called before calling init, the render won\'t start until init is called.\nFor more info check\n1. https://developers.thoughtspot.com/docs/Function_init#_init\n2.https://developers.thoughtspot.com/docs/getting-started#initSdk',
|
|
20
|
+
SPOTTER_AGENT_NOT_INITIALIZED: 'SpotterAgent not initialized',
|
|
20
21
|
};
|