@thoughtspot/visual-embed-sdk 1.45.2 → 1.45.3-mcp.2
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 +2 -2
- package/cjs/src/css-variables.d.ts +48 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +37 -0
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +37 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +24 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/auto-frame-renderer.d.ts +3 -0
- package/cjs/src/embed/auto-frame-renderer.d.ts.map +1 -0
- package/cjs/src/embed/auto-frame-renderer.js +70 -0
- package/cjs/src/embed/auto-frame-renderer.js.map +1 -0
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/conversation.d.ts +128 -10
- package/cjs/src/embed/conversation.d.ts.map +1 -1
- package/cjs/src/embed/conversation.js +41 -18
- package/cjs/src/embed/conversation.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +96 -3
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +38 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +38 -10
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +179 -7
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js +104 -0
- package/cjs/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
- 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/index.d.ts +4 -3
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +3 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/types.d.ts +196 -41
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +185 -19
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/answerService/answerService.d.ts +34 -0
- package/cjs/src/utils/answerService/answerService.d.ts.map +1 -0
- package/cjs/src/utils/answerService/answerService.js +142 -0
- package/cjs/src/utils/answerService/answerService.js.map +1 -0
- package/cjs/src/utils/answerService/answerService.spec.d.ts +1 -0
- package/cjs/src/utils/answerService/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/answerService/answerService.spec.js +1 -0
- package/cjs/src/utils/answerService/answerService.spec.js.map +1 -0
- package/cjs/src/utils/answerService/graphql-queries.d.ts +6 -0
- package/cjs/src/utils/answerService/graphql-queries.d.ts.map +1 -0
- package/cjs/src/utils/answerService/graphql-queries.js +123 -0
- package/cjs/src/utils/answerService/graphql-queries.js.map +1 -0
- package/cjs/src/utils/answerService.d.ts +10 -0
- package/cjs/src/utils/answerService.d.ts.map +1 -0
- package/cjs/src/utils/answerService.js +61 -0
- package/cjs/src/utils/answerService.js.map +1 -0
- package/cjs/src/utils/answerService.spec.d.ts +2 -0
- package/cjs/src/utils/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/answerService.spec.js +31 -0
- package/cjs/src/utils/answerService.spec.js.map +1 -0
- package/cjs/src/utils/authService.d.ts +37 -0
- package/cjs/src/utils/authService.d.ts.map +1 -0
- package/cjs/src/utils/authService.js +106 -0
- package/cjs/src/utils/authService.js.map +1 -0
- package/cjs/src/utils/authService.spec.d.ts +2 -0
- package/cjs/src/utils/authService.spec.d.ts.map +1 -0
- package/cjs/src/utils/authService.spec.js +72 -0
- package/cjs/src/utils/authService.spec.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answer-queries.js +23 -1
- package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +2 -1
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.js +9 -1
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/answerService.spec.js +73 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.js +80 -0
- package/cjs/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
- package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts +3 -0
- package/cjs/src/utils/graphql/conversationService/conversation-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/conversationService/conversation-queries.js +318 -0
- package/cjs/src/utils/graphql/conversationService/conversation-queries.js.map +1 -0
- package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts +12 -0
- package/cjs/src/utils/graphql/conversationService/conversation-service.d.ts.map +1 -0
- package/cjs/src/utils/graphql/conversationService/conversation-service.js +89 -0
- package/cjs/src/utils/graphql/conversationService/conversation-service.js.map +1 -0
- package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts +3 -0
- package/cjs/src/utils/graphql/spotterService/conversation-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/spotterService/conversation-queries.js +318 -0
- package/cjs/src/utils/graphql/spotterService/conversation-queries.js.map +1 -0
- package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts +12 -0
- package/cjs/src/utils/graphql/spotterService/conversation-service.d.ts.map +1 -0
- package/cjs/src/utils/graphql/spotterService/conversation-service.js +89 -0
- package/cjs/src/utils/graphql/spotterService/conversation-service.js.map +1 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts +2 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js +403 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-queries.js.map +1 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts +12 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +1 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.js +55 -0
- package/cjs/src/utils/graphql/spotterService/nls-answer-service.js.map +1 -0
- package/cjs/src/utils.d.ts +15 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +33 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +49 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-BdkKLLo1.js → index-0serzuii.js} +1 -1
- package/dist/index-CqrIh3Vj.js +7370 -0
- package/dist/index-aFN9fe8V.js +7371 -0
- package/dist/src/css-variables.d.ts +48 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +37 -0
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/auto-frame-renderer.d.ts +3 -0
- package/dist/src/embed/auto-frame-renderer.d.ts.map +1 -0
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/conversation.d.ts +128 -10
- package/dist/src/embed/conversation.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +38 -1
- package/dist/src/embed/liveboard.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/index.d.ts +4 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +196 -41
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts +2 -1
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/dist/src/utils.d.ts +15 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +365 -52
- package/dist/tsembed-react.js +364 -51
- package/dist/tsembed.es.js +429 -53
- package/dist/tsembed.js +428 -51
- package/dist/visual-embed-sdk-react-full.d.ts +697 -343
- package/dist/visual-embed-sdk-react.d.ts +686 -332
- package/dist/visual-embed-sdk.d.ts +761 -380
- package/lib/package.json +2 -2
- package/lib/src/css-variables.d.ts +48 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +37 -0
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +39 -3
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +24 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/auto-frame-renderer.d.ts +3 -0
- package/lib/src/embed/auto-frame-renderer.d.ts.map +1 -0
- package/lib/src/embed/auto-frame-renderer.js +66 -0
- package/lib/src/embed/auto-frame-renderer.js.map +1 -0
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/conversation.d.ts +128 -10
- package/lib/src/embed/conversation.d.ts.map +1 -1
- package/lib/src/embed/conversation.js +42 -19
- package/lib/src/embed/conversation.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +96 -3
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +38 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +39 -11
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +179 -7
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +2 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts.map +1 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js +101 -0
- package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
- 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/index.d.ts +4 -3
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +1 -0
- package/lib/src/index.js.map +1 -1
- package/lib/src/types.d.ts +196 -41
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +185 -19
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answer-queries.js +22 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts +2 -1
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.js +9 -1
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -1
- package/lib/src/utils/graphql/answerService/answerService.spec.js +73 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -1
- package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts +3 -0
- package/lib/src/utils/graphql/conversationService/conversation-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/conversationService/conversation-queries.js +315 -0
- package/lib/src/utils/graphql/conversationService/conversation-queries.js.map +1 -0
- package/lib/src/utils/graphql/conversationService/conversation-service.d.ts +12 -0
- package/lib/src/utils/graphql/conversationService/conversation-service.d.ts.map +1 -0
- package/lib/src/utils/graphql/conversationService/conversation-service.js +84 -0
- package/lib/src/utils/graphql/conversationService/conversation-service.js.map +1 -0
- package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts +3 -0
- package/lib/src/utils/graphql/spotterService/conversation-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/spotterService/conversation-queries.js +315 -0
- package/lib/src/utils/graphql/spotterService/conversation-queries.js.map +1 -0
- package/lib/src/utils/graphql/spotterService/conversation-service.d.ts +12 -0
- package/lib/src/utils/graphql/spotterService/conversation-service.d.ts.map +1 -0
- package/lib/src/utils/graphql/spotterService/conversation-service.js +84 -0
- package/lib/src/utils/graphql/spotterService/conversation-service.js.map +1 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts +2 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.js +400 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-queries.js.map +1 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts +12 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-service.d.ts.map +1 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-service.js +50 -0
- package/lib/src/utils/graphql/spotterService/nls-answer-service.js.map +1 -0
- package/lib/src/utils.d.ts +15 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +30 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +50 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +7186 -0
- package/package.json +3 -3
- package/src/css-variables.ts +60 -0
- package/src/embed/app.spec.ts +32 -0
- package/src/embed/app.ts +97 -1
- package/src/embed/auto-frame-renderer.ts +78 -0
- package/src/embed/base.ts +1 -0
- package/src/embed/conversation.spec.ts +117 -3
- package/src/embed/conversation.ts +189 -30
- package/src/embed/liveboard.spec.ts +264 -10
- package/src/embed/liveboard.ts +100 -11
- package/src/errors.ts +1 -0
- package/src/index.ts +8 -1
- package/src/types.ts +198 -42
- package/src/utils/graphql/answerService/answer-queries.ts +23 -0
- package/src/utils/graphql/answerService/answerService.spec.ts +87 -0
- package/src/utils/graphql/answerService/answerService.ts +13 -1
- package/src/utils.spec.ts +56 -0
- package/src/utils.ts +36 -0
|
@@ -2,7 +2,7 @@ import isUndefined from 'lodash/isUndefined';
|
|
|
2
2
|
import { ERROR_MESSAGE } from '../errors';
|
|
3
3
|
import { Param, BaseViewConfig, RuntimeFilter, RuntimeParameter, ErrorDetailsTypes, EmbedErrorCodes } from '../types';
|
|
4
4
|
import { TsEmbed } from './ts-embed';
|
|
5
|
-
import { getQueryParamString, getFilterQuery, getRuntimeParameters } from '../utils';
|
|
5
|
+
import { getQueryParamString, getFilterQuery, getRuntimeParameters, validateHttpUrl, setParamIfDefined } from '../utils';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Configuration for search options
|
|
@@ -14,6 +14,106 @@ export interface SearchOptions {
|
|
|
14
14
|
searchQuery: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Configuration for the Spotter sidebar.
|
|
19
|
+
* Can be used in SpotterEmbed and AppEmbed.
|
|
20
|
+
* @group Embed components
|
|
21
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
22
|
+
*/
|
|
23
|
+
export interface SpotterSidebarViewConfig {
|
|
24
|
+
/**
|
|
25
|
+
* Controls the visibility of the past conversations sidebar.
|
|
26
|
+
* @default false
|
|
27
|
+
* @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
|
|
28
|
+
*/
|
|
29
|
+
enablePastConversationsSidebar?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Custom title text for the sidebar header.
|
|
32
|
+
* Defaults to translated "Spotter" text.
|
|
33
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
34
|
+
*/
|
|
35
|
+
spotterSidebarTitle?: string;
|
|
36
|
+
/**
|
|
37
|
+
* Boolean to set the default expanded state of the sidebar.
|
|
38
|
+
* @default false
|
|
39
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
40
|
+
*/
|
|
41
|
+
spotterSidebarDefaultExpanded?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Custom label text for the rename action in the conversation edit menu.
|
|
44
|
+
* Defaults to translated "Rename" text.
|
|
45
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
46
|
+
*/
|
|
47
|
+
spotterChatRenameLabel?: string;
|
|
48
|
+
/**
|
|
49
|
+
* Custom label text for the delete action in the conversation edit menu.
|
|
50
|
+
* Defaults to translated "DELETE" text.
|
|
51
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
52
|
+
*/
|
|
53
|
+
spotterChatDeleteLabel?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Custom title text for the delete conversation confirmation modal.
|
|
56
|
+
* Defaults to translated "Delete chat" text.
|
|
57
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
58
|
+
*/
|
|
59
|
+
spotterDeleteConversationModalTitle?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Custom message text for the past conversation banner alert.
|
|
62
|
+
* Defaults to translated alert message.
|
|
63
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
64
|
+
*/
|
|
65
|
+
spotterPastConversationAlertMessage?: string;
|
|
66
|
+
/**
|
|
67
|
+
* Custom URL for the documentation/best practices link.
|
|
68
|
+
* Defaults to ThoughtSpot docs URL based on release version.
|
|
69
|
+
* Note: URL must include the protocol (e.g., `https://www.example.com`).
|
|
70
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
71
|
+
*/
|
|
72
|
+
spotterDocumentationUrl?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Custom label text for the best practices button in the footer.
|
|
75
|
+
* Defaults to translated "Best Practices" text.
|
|
76
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
77
|
+
*/
|
|
78
|
+
spotterBestPracticesLabel?: string;
|
|
79
|
+
/**
|
|
80
|
+
* Number of conversations to fetch per batch when loading conversation history.
|
|
81
|
+
* @default 30
|
|
82
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
83
|
+
*/
|
|
84
|
+
spotterConversationsBatchSize?: number;
|
|
85
|
+
/**
|
|
86
|
+
* Custom title text for the "New Chat" button in the sidebar.
|
|
87
|
+
* Defaults to translated "New Chat" text.
|
|
88
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
89
|
+
*/
|
|
90
|
+
spotterNewChatButtonTitle?: string;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Configuration for customizing Spotter chat UI branding.
|
|
95
|
+
* @group Embed components
|
|
96
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.4.0.cl
|
|
97
|
+
*/
|
|
98
|
+
export interface SpotterChatViewConfig {
|
|
99
|
+
/**
|
|
100
|
+
* Hides the ThoughtSpot logo/icon in tool response
|
|
101
|
+
* cards. The branding label prefix is controlled
|
|
102
|
+
* separately via `toolResponseCardBrandingLabel`.
|
|
103
|
+
* External MCP tool branding is not affected.
|
|
104
|
+
* @default false
|
|
105
|
+
*/
|
|
106
|
+
hideToolResponseCardBranding?: boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Custom label to replace the "ThoughtSpot" prefix
|
|
109
|
+
* in tool response cards. Set to an empty string
|
|
110
|
+
* `''` to hide the prefix entirely. Works
|
|
111
|
+
* independently of `hideToolResponseCardBranding`.
|
|
112
|
+
* External MCP tool branding is not affected.
|
|
113
|
+
*/
|
|
114
|
+
toolResponseCardBrandingLabel?: string;
|
|
115
|
+
}
|
|
116
|
+
|
|
17
117
|
/**
|
|
18
118
|
* The configuration for the embedded spotterEmbed options.
|
|
19
119
|
* @group Embed components
|
|
@@ -62,7 +162,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
62
162
|
*
|
|
63
163
|
* Supported embed types: `SageEmbed`, `AppEmbed`, `SearchBarEmbed`, `LiveboardEmbed`, `SearchEmbed`
|
|
64
164
|
* @default true
|
|
65
|
-
* @
|
|
165
|
+
* @deprecated from SDK 1.46.0 | ThoughtSpot Cloud: 26.3.0.cl
|
|
66
166
|
* @example
|
|
67
167
|
* ```js
|
|
68
168
|
* // Replace <EmbedComponent> with embed component name. For example, SageEmbed, AppEmbed, or SearchBarEmbed
|
|
@@ -169,8 +269,7 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
169
269
|
*/
|
|
170
270
|
excludeRuntimeParametersfromURL?: boolean;
|
|
171
271
|
/**
|
|
172
|
-
*
|
|
173
|
-
* sidebar.
|
|
272
|
+
* updatedSpotterChatPrompt : Controls the updated spotter chat prompt.
|
|
174
273
|
*
|
|
175
274
|
* Supported embed types: `SpotterEmbed`
|
|
176
275
|
* @default false
|
|
@@ -178,28 +277,48 @@ export interface SpotterEmbedViewConfig extends Omit<BaseViewConfig, 'primaryAct
|
|
|
178
277
|
* ```js
|
|
179
278
|
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
180
279
|
* ... //other embed view config
|
|
181
|
-
*
|
|
280
|
+
* updatedSpotterChatPrompt : true,
|
|
182
281
|
* })
|
|
183
282
|
* ```
|
|
184
283
|
* @version SDK: 1.45.0 | ThoughtSpot: 26.2.0.cl
|
|
185
284
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
285
|
+
updatedSpotterChatPrompt?: boolean;
|
|
188
286
|
/**
|
|
189
|
-
*
|
|
287
|
+
* Configuration for the Spotter sidebar UI customization.
|
|
288
|
+
*
|
|
289
|
+
* Supported embed types: `SpotterEmbed`, `AppEmbed`
|
|
290
|
+
* @example
|
|
291
|
+
* ```js
|
|
292
|
+
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
293
|
+
* ... //other embed view config
|
|
294
|
+
* spotterSidebarConfig: {
|
|
295
|
+
* enablePastConversationsSidebar: true,
|
|
296
|
+
* spotterSidebarTitle: 'My Conversations',
|
|
297
|
+
* spotterSidebarDefaultExpanded: true,
|
|
298
|
+
* },
|
|
299
|
+
* })
|
|
300
|
+
* ```
|
|
301
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.3.0.cl
|
|
302
|
+
*/
|
|
303
|
+
spotterSidebarConfig?: SpotterSidebarViewConfig;
|
|
304
|
+
/**
|
|
305
|
+
* Configuration for customizing Spotter chat UI
|
|
306
|
+
* branding in tool response cards.
|
|
190
307
|
*
|
|
191
308
|
* Supported embed types: `SpotterEmbed`
|
|
192
|
-
* @default false
|
|
193
309
|
* @example
|
|
194
310
|
* ```js
|
|
195
311
|
* const embed = new SpotterEmbed('#tsEmbed', {
|
|
196
312
|
* ... //other embed view config
|
|
197
|
-
*
|
|
313
|
+
* spotterChatConfig: {
|
|
314
|
+
* hideToolResponseCardBranding: true,
|
|
315
|
+
* toolResponseCardBrandingLabel: 'MyBrand',
|
|
316
|
+
* },
|
|
198
317
|
* })
|
|
199
318
|
* ```
|
|
200
|
-
* @version SDK: 1.
|
|
319
|
+
* @version SDK: 1.46.0 | ThoughtSpot: 26.4.0.cl
|
|
201
320
|
*/
|
|
202
|
-
|
|
321
|
+
spotterChatConfig?: SpotterChatViewConfig;
|
|
203
322
|
}
|
|
204
323
|
|
|
205
324
|
/**
|
|
@@ -246,14 +365,30 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
246
365
|
dataPanelV2,
|
|
247
366
|
showSpotterLimitations,
|
|
248
367
|
hideSampleQuestions,
|
|
249
|
-
enablePastConversationsSidebar,
|
|
250
368
|
runtimeFilters,
|
|
251
369
|
excludeRuntimeFiltersfromURL,
|
|
252
370
|
runtimeParameters,
|
|
253
371
|
excludeRuntimeParametersfromURL,
|
|
254
372
|
updatedSpotterChatPrompt,
|
|
373
|
+
spotterSidebarConfig,
|
|
374
|
+
spotterChatConfig,
|
|
255
375
|
} = this.viewConfig;
|
|
256
376
|
|
|
377
|
+
// Extract sidebar config properties
|
|
378
|
+
const {
|
|
379
|
+
enablePastConversationsSidebar,
|
|
380
|
+
spotterSidebarTitle,
|
|
381
|
+
spotterSidebarDefaultExpanded,
|
|
382
|
+
spotterChatRenameLabel,
|
|
383
|
+
spotterChatDeleteLabel,
|
|
384
|
+
spotterDeleteConversationModalTitle,
|
|
385
|
+
spotterPastConversationAlertMessage,
|
|
386
|
+
spotterDocumentationUrl,
|
|
387
|
+
spotterBestPracticesLabel,
|
|
388
|
+
spotterConversationsBatchSize,
|
|
389
|
+
spotterNewChatButtonTitle,
|
|
390
|
+
} = spotterSidebarConfig || {};
|
|
391
|
+
|
|
257
392
|
if (!worksheetId) {
|
|
258
393
|
this.handleError({
|
|
259
394
|
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
|
|
@@ -264,27 +399,50 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
264
399
|
}
|
|
265
400
|
const queryParams = this.getBaseQueryParams();
|
|
266
401
|
queryParams[Param.SpotterEnabled] = true;
|
|
267
|
-
if (!isUndefined(disableSourceSelection)) {
|
|
268
|
-
queryParams[Param.DisableSourceSelection] = !!disableSourceSelection;
|
|
269
|
-
}
|
|
270
|
-
if (!isUndefined(hideSourceSelection)) {
|
|
271
|
-
queryParams[Param.HideSourceSelection] = !!hideSourceSelection;
|
|
272
|
-
}
|
|
273
402
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
403
|
+
// Boolean params
|
|
404
|
+
setParamIfDefined(queryParams, Param.DisableSourceSelection, disableSourceSelection, true);
|
|
405
|
+
setParamIfDefined(queryParams, Param.HideSourceSelection, hideSourceSelection, true);
|
|
406
|
+
setParamIfDefined(queryParams, Param.DataPanelV2Enabled, dataPanelV2, true);
|
|
407
|
+
setParamIfDefined(queryParams, Param.ShowSpotterLimitations, showSpotterLimitations, true);
|
|
408
|
+
setParamIfDefined(queryParams, Param.HideSampleQuestions, hideSampleQuestions, true);
|
|
409
|
+
setParamIfDefined(queryParams, Param.UpdatedSpotterChatPrompt, updatedSpotterChatPrompt, true);
|
|
410
|
+
setParamIfDefined(queryParams, Param.SpotterSidebarDefaultExpanded, spotterSidebarDefaultExpanded, true);
|
|
277
411
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
412
|
+
// String params
|
|
413
|
+
setParamIfDefined(queryParams, Param.SpotterSidebarTitle, spotterSidebarTitle);
|
|
414
|
+
setParamIfDefined(queryParams, Param.SpotterChatRenameLabel, spotterChatRenameLabel);
|
|
415
|
+
setParamIfDefined(queryParams, Param.SpotterChatDeleteLabel, spotterChatDeleteLabel);
|
|
416
|
+
setParamIfDefined(queryParams, Param.SpotterDeleteConversationModalTitle, spotterDeleteConversationModalTitle);
|
|
417
|
+
setParamIfDefined(queryParams, Param.SpotterPastConversationAlertMessage, spotterPastConversationAlertMessage);
|
|
418
|
+
setParamIfDefined(queryParams, Param.SpotterBestPracticesLabel, spotterBestPracticesLabel);
|
|
419
|
+
setParamIfDefined(queryParams, Param.SpotterConversationsBatchSize, spotterConversationsBatchSize);
|
|
420
|
+
setParamIfDefined(queryParams, Param.SpotterNewChatButtonTitle, spotterNewChatButtonTitle);
|
|
281
421
|
|
|
282
|
-
|
|
283
|
-
|
|
422
|
+
// URL param with validation
|
|
423
|
+
if (spotterDocumentationUrl !== undefined) {
|
|
424
|
+
const [isValid, validationError] = validateHttpUrl(spotterDocumentationUrl);
|
|
425
|
+
if (isValid) {
|
|
426
|
+
queryParams[Param.SpotterDocumentationUrl] = spotterDocumentationUrl;
|
|
427
|
+
} else {
|
|
428
|
+
this.handleError({
|
|
429
|
+
errorType: ErrorDetailsTypes.VALIDATION_ERROR,
|
|
430
|
+
message: ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
|
|
431
|
+
code: EmbedErrorCodes.INVALID_URL,
|
|
432
|
+
error: validationError?.message || ERROR_MESSAGE.INVALID_SPOTTER_DOCUMENTATION_URL,
|
|
433
|
+
});
|
|
434
|
+
}
|
|
284
435
|
}
|
|
285
436
|
|
|
286
|
-
|
|
287
|
-
|
|
437
|
+
// Handle spotterChatConfig params
|
|
438
|
+
if (spotterChatConfig) {
|
|
439
|
+
const {
|
|
440
|
+
hideToolResponseCardBranding,
|
|
441
|
+
toolResponseCardBrandingLabel,
|
|
442
|
+
} = spotterChatConfig;
|
|
443
|
+
|
|
444
|
+
setParamIfDefined(queryParams, Param.HideToolResponseCardBranding, hideToolResponseCardBranding, true);
|
|
445
|
+
setParamIfDefined(queryParams, Param.ToolResponseCardBrandingLabel, toolResponseCardBrandingLabel);
|
|
288
446
|
}
|
|
289
447
|
|
|
290
448
|
return queryParams;
|
|
@@ -298,11 +456,12 @@ export class SpotterEmbed extends TsEmbed {
|
|
|
298
456
|
excludeRuntimeFiltersfromURL,
|
|
299
457
|
runtimeParameters,
|
|
300
458
|
excludeRuntimeParametersfromURL,
|
|
301
|
-
|
|
459
|
+
spotterSidebarConfig,
|
|
302
460
|
} = this.viewConfig;
|
|
303
461
|
const path = 'insights/conv-assist';
|
|
304
462
|
const queryParams = this.getEmbedParamsObject();
|
|
305
463
|
|
|
464
|
+
const enablePastConversationsSidebar = spotterSidebarConfig?.enablePastConversationsSidebar;
|
|
306
465
|
if (!isUndefined(enablePastConversationsSidebar)) {
|
|
307
466
|
queryParams[Param.EnablePastConversationsSidebar] = !!enablePastConversationsSidebar;
|
|
308
467
|
}
|
|
@@ -855,6 +855,187 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
855
855
|
});
|
|
856
856
|
});
|
|
857
857
|
|
|
858
|
+
describe('personalizedViewId functionality', () => {
|
|
859
|
+
const personalizedViewId = 'view-456-guid';
|
|
860
|
+
|
|
861
|
+
test('should render liveboard with personalizedViewId', async () => {
|
|
862
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
863
|
+
...defaultViewConfig,
|
|
864
|
+
liveboardId,
|
|
865
|
+
personalizedViewId,
|
|
866
|
+
} as LiveboardViewConfig);
|
|
867
|
+
liveboardEmbed.render();
|
|
868
|
+
await executeAfterWait(() => {
|
|
869
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), { view: personalizedViewId });
|
|
870
|
+
});
|
|
871
|
+
});
|
|
872
|
+
|
|
873
|
+
test('should render liveboard with personalizedViewId and activeTabId together', async () => {
|
|
874
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
875
|
+
...defaultViewConfig,
|
|
876
|
+
liveboardId,
|
|
877
|
+
personalizedViewId,
|
|
878
|
+
activeTabId,
|
|
879
|
+
} as LiveboardViewConfig);
|
|
880
|
+
liveboardEmbed.render();
|
|
881
|
+
await executeAfterWait(() => {
|
|
882
|
+
// URL should be: #/embed/viz/{id}/tab/{tabId}?view={viewId}
|
|
883
|
+
expect(getIFrameSrc()).toMatch(
|
|
884
|
+
new RegExp(
|
|
885
|
+
`#/embed/viz/${liveboardId}/tab/${activeTabId}\\?view=${personalizedViewId}`,
|
|
886
|
+
),
|
|
887
|
+
);
|
|
888
|
+
});
|
|
889
|
+
});
|
|
890
|
+
|
|
891
|
+
test('should render liveboard with personalizedViewId and vizId together', async () => {
|
|
892
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
893
|
+
...defaultViewConfig,
|
|
894
|
+
liveboardId,
|
|
895
|
+
personalizedViewId,
|
|
896
|
+
vizId,
|
|
897
|
+
} as LiveboardViewConfig);
|
|
898
|
+
liveboardEmbed.render();
|
|
899
|
+
await executeAfterWait(() => {
|
|
900
|
+
// URL should be: #/embed/viz/{id}/{vizId}?view={viewId}
|
|
901
|
+
expect(getIFrameSrc()).toMatch(
|
|
902
|
+
new RegExp(`#/embed/viz/${liveboardId}/${vizId}\\?view=${personalizedViewId}`),
|
|
903
|
+
);
|
|
904
|
+
});
|
|
905
|
+
});
|
|
906
|
+
|
|
907
|
+
test('should render liveboard with personalizedViewId, activeTabId, and vizId together', async () => {
|
|
908
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
909
|
+
...defaultViewConfig,
|
|
910
|
+
liveboardId,
|
|
911
|
+
personalizedViewId,
|
|
912
|
+
activeTabId,
|
|
913
|
+
vizId,
|
|
914
|
+
} as LiveboardViewConfig);
|
|
915
|
+
liveboardEmbed.render();
|
|
916
|
+
await executeAfterWait(() => {
|
|
917
|
+
// URL should be: #/embed/viz/{id}/tab/{tabId}/{vizId}?view={viewId}
|
|
918
|
+
expect(getIFrameSrc()).toMatch(
|
|
919
|
+
new RegExp(
|
|
920
|
+
`#/embed/viz/${liveboardId}/tab/${activeTabId}/${vizId}\\?view=${personalizedViewId}`,
|
|
921
|
+
),
|
|
922
|
+
);
|
|
923
|
+
});
|
|
924
|
+
});
|
|
925
|
+
|
|
926
|
+
test('should not include view param when personalizedViewId is not provided', async () => {
|
|
927
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
928
|
+
...defaultViewConfig,
|
|
929
|
+
liveboardId,
|
|
930
|
+
} as LiveboardViewConfig);
|
|
931
|
+
liveboardEmbed.render();
|
|
932
|
+
await executeAfterWait(() => {
|
|
933
|
+
expect(getIFrameSrc()).not.toContain('view=');
|
|
934
|
+
});
|
|
935
|
+
});
|
|
936
|
+
|
|
937
|
+
test('should include personalizedViewId in getLiveboardUrl', async () => {
|
|
938
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
939
|
+
...defaultViewConfig,
|
|
940
|
+
liveboardId,
|
|
941
|
+
personalizedViewId,
|
|
942
|
+
} as LiveboardViewConfig);
|
|
943
|
+
await liveboardEmbed.render();
|
|
944
|
+
expect(liveboardEmbed.getLiveboardUrl()).toBe(
|
|
945
|
+
`http://${thoughtSpotHost}/#/pinboard/${liveboardId}?view=${personalizedViewId}`,
|
|
946
|
+
);
|
|
947
|
+
});
|
|
948
|
+
|
|
949
|
+
test('should include personalizedViewId with activeTabId in getLiveboardUrl', async () => {
|
|
950
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
951
|
+
...defaultViewConfig,
|
|
952
|
+
liveboardId,
|
|
953
|
+
personalizedViewId,
|
|
954
|
+
activeTabId,
|
|
955
|
+
} as LiveboardViewConfig);
|
|
956
|
+
await liveboardEmbed.render();
|
|
957
|
+
expect(liveboardEmbed.getLiveboardUrl()).toBe(
|
|
958
|
+
`http://${thoughtSpotHost}/#/pinboard/${liveboardId}/tab/${activeTabId}?view=${personalizedViewId}`,
|
|
959
|
+
);
|
|
960
|
+
});
|
|
961
|
+
|
|
962
|
+
test('personalizedViewId should work with runtime filters', async () => {
|
|
963
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
964
|
+
...defaultViewConfig,
|
|
965
|
+
liveboardId,
|
|
966
|
+
personalizedViewId,
|
|
967
|
+
runtimeFilters: [
|
|
968
|
+
{
|
|
969
|
+
columnName: 'sales',
|
|
970
|
+
operator: RuntimeFilterOp.EQ,
|
|
971
|
+
values: [1000],
|
|
972
|
+
},
|
|
973
|
+
],
|
|
974
|
+
excludeRuntimeFiltersfromURL: false,
|
|
975
|
+
} as LiveboardViewConfig);
|
|
976
|
+
liveboardEmbed.render();
|
|
977
|
+
await executeAfterWait(() => {
|
|
978
|
+
expectUrlToHaveParamsWithValues(getIFrameSrc(), {
|
|
979
|
+
view: personalizedViewId,
|
|
980
|
+
col1: 'sales',
|
|
981
|
+
op1: 'EQ',
|
|
982
|
+
val1: '1000',
|
|
983
|
+
});
|
|
984
|
+
});
|
|
985
|
+
});
|
|
986
|
+
|
|
987
|
+
describe('backward compatibility with liveboardId?view= workaround', () => {
|
|
988
|
+
const workaroundViewId = 'workaround-view-id';
|
|
989
|
+
const liveboardIdWithView = `${liveboardId}?view=${workaroundViewId}`;
|
|
990
|
+
|
|
991
|
+
test('should extract view from workaround and add at end of URL', async () => {
|
|
992
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
993
|
+
...defaultViewConfig,
|
|
994
|
+
liveboardId: liveboardIdWithView,
|
|
995
|
+
} as LiveboardViewConfig);
|
|
996
|
+
liveboardEmbed.render();
|
|
997
|
+
await executeAfterWait(() => {
|
|
998
|
+
// URL: #/embed/viz/{cleanId}?view={workaroundViewId}
|
|
999
|
+
expect(getIFrameSrc()).toMatch(
|
|
1000
|
+
new RegExp(`#/embed/viz/${liveboardId}\\?view=${workaroundViewId}`),
|
|
1001
|
+
);
|
|
1002
|
+
});
|
|
1003
|
+
});
|
|
1004
|
+
|
|
1005
|
+
test('should extract view and place after tab when activeTabId is provided', async () => {
|
|
1006
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1007
|
+
...defaultViewConfig,
|
|
1008
|
+
liveboardId: liveboardIdWithView,
|
|
1009
|
+
activeTabId,
|
|
1010
|
+
} as LiveboardViewConfig);
|
|
1011
|
+
liveboardEmbed.render();
|
|
1012
|
+
await executeAfterWait(() => {
|
|
1013
|
+
// URL: #/embed/viz/{id}/tab/{tabId}?view={viewId} (view at END, not middle)
|
|
1014
|
+
expect(getIFrameSrc()).toMatch(
|
|
1015
|
+
new RegExp(
|
|
1016
|
+
`#/embed/viz/${liveboardId}/tab/${activeTabId}\\?view=${workaroundViewId}`,
|
|
1017
|
+
),
|
|
1018
|
+
);
|
|
1019
|
+
});
|
|
1020
|
+
});
|
|
1021
|
+
|
|
1022
|
+
test('should use personalizedViewId over workaround when both provided', async () => {
|
|
1023
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1024
|
+
...defaultViewConfig,
|
|
1025
|
+
liveboardId: liveboardIdWithView,
|
|
1026
|
+
personalizedViewId,
|
|
1027
|
+
} as LiveboardViewConfig);
|
|
1028
|
+
liveboardEmbed.render();
|
|
1029
|
+
await executeAfterWait(() => {
|
|
1030
|
+
// personalizedViewId wins, workaround stripped
|
|
1031
|
+
expect(getIFrameSrc()).toMatch(
|
|
1032
|
+
new RegExp(`#/embed/viz/${liveboardId}\\?view=${personalizedViewId}`),
|
|
1033
|
+
);
|
|
1034
|
+
});
|
|
1035
|
+
});
|
|
1036
|
+
});
|
|
1037
|
+
});
|
|
1038
|
+
|
|
858
1039
|
test('navigateToLiveboard should trigger the navigate event with the correct path', async () => {
|
|
859
1040
|
mockMessageChannel();
|
|
860
1041
|
// mock getSessionInfo
|
|
@@ -979,6 +1160,40 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
979
1160
|
});
|
|
980
1161
|
});
|
|
981
1162
|
|
|
1163
|
+
test('should set hideToolResponseCardBranding parameter in url params via spotterChatConfig', async () => {
|
|
1164
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1165
|
+
...defaultViewConfig,
|
|
1166
|
+
liveboardId,
|
|
1167
|
+
spotterChatConfig: {
|
|
1168
|
+
hideToolResponseCardBranding: true,
|
|
1169
|
+
},
|
|
1170
|
+
} as LiveboardViewConfig);
|
|
1171
|
+
await liveboardEmbed.render();
|
|
1172
|
+
await executeAfterWait(() => {
|
|
1173
|
+
expectUrlMatchesWithParams(
|
|
1174
|
+
getIFrameSrc(),
|
|
1175
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&hideToolResponseCardBranding=true#/embed/viz/${liveboardId}`,
|
|
1176
|
+
);
|
|
1177
|
+
});
|
|
1178
|
+
});
|
|
1179
|
+
|
|
1180
|
+
test('should set toolResponseCardBrandingLabel parameter in url params via spotterChatConfig', async () => {
|
|
1181
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
1182
|
+
...defaultViewConfig,
|
|
1183
|
+
liveboardId,
|
|
1184
|
+
spotterChatConfig: {
|
|
1185
|
+
toolResponseCardBrandingLabel: 'MyBrand',
|
|
1186
|
+
},
|
|
1187
|
+
} as LiveboardViewConfig);
|
|
1188
|
+
await liveboardEmbed.render();
|
|
1189
|
+
await executeAfterWait(() => {
|
|
1190
|
+
expectUrlMatchesWithParams(
|
|
1191
|
+
getIFrameSrc(),
|
|
1192
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&toolResponseCardBrandingLabel=MyBrand#/embed/viz/${liveboardId}`,
|
|
1193
|
+
);
|
|
1194
|
+
});
|
|
1195
|
+
});
|
|
1196
|
+
|
|
982
1197
|
test('SetActiveTab Hostevent should not trigger the navigate event with the correct path, for vizEmbed', async () => {
|
|
983
1198
|
const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
|
|
984
1199
|
const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
|
|
@@ -1137,7 +1352,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1137
1352
|
) as HTMLIFrameElement;
|
|
1138
1353
|
|
|
1139
1354
|
// should render the generic link
|
|
1140
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1355
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1356
|
+
testLiveboardId,
|
|
1357
|
+
'testVizId',
|
|
1358
|
+
'testActiveTabId',
|
|
1359
|
+
undefined,
|
|
1360
|
+
);
|
|
1141
1361
|
expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
|
|
1142
1362
|
|
|
1143
1363
|
expect(consoleSpy).toHaveBeenCalledTimes(0);
|
|
@@ -1195,7 +1415,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1195
1415
|
libEmbed.getPreRenderIds().child,
|
|
1196
1416
|
) as HTMLIFrameElement;
|
|
1197
1417
|
// should render the generic link
|
|
1198
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1418
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1419
|
+
testLiveboardId,
|
|
1420
|
+
'testVizId',
|
|
1421
|
+
'testActiveTabId',
|
|
1422
|
+
undefined,
|
|
1423
|
+
);
|
|
1199
1424
|
expect(iFrame.src).toMatch(/http:\/\/tshost\/.*&isLiveboardEmbed=true.*#$/);
|
|
1200
1425
|
expect(consoleSpy).toHaveBeenCalledTimes(0);
|
|
1201
1426
|
}, 1005);
|
|
@@ -1528,9 +1753,13 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1528
1753
|
mockProcessTrigger.mockResolvedValue({ session: 'test' });
|
|
1529
1754
|
await executeAfterWait(async () => {
|
|
1530
1755
|
await liveboardEmbed.trigger(HostEvent.Save);
|
|
1531
|
-
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1532
|
-
|
|
1533
|
-
|
|
1756
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1757
|
+
HostEvent.Save,
|
|
1758
|
+
{
|
|
1759
|
+
vizId: 'testViz',
|
|
1760
|
+
},
|
|
1761
|
+
undefined,
|
|
1762
|
+
);
|
|
1534
1763
|
});
|
|
1535
1764
|
});
|
|
1536
1765
|
});
|
|
@@ -1564,7 +1793,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1564
1793
|
liveboardEmbed['executeEmbedContainerReadyCallbacks']();
|
|
1565
1794
|
|
|
1566
1795
|
// Now navigateToLiveboard should be called
|
|
1567
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1796
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1797
|
+
liveboardId,
|
|
1798
|
+
vizId,
|
|
1799
|
+
activeTabId,
|
|
1800
|
+
undefined,
|
|
1801
|
+
);
|
|
1568
1802
|
});
|
|
1569
1803
|
|
|
1570
1804
|
test('should update currentLiveboardState for prerender object when embed container loads', async () => {
|
|
@@ -1617,7 +1851,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1617
1851
|
liveboardEmbed['beforePrerenderVisible']();
|
|
1618
1852
|
|
|
1619
1853
|
// navigateToLiveboard should be called immediately
|
|
1620
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1854
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1855
|
+
liveboardId,
|
|
1856
|
+
vizId,
|
|
1857
|
+
activeTabId,
|
|
1858
|
+
undefined,
|
|
1859
|
+
);
|
|
1621
1860
|
});
|
|
1622
1861
|
|
|
1623
1862
|
test('should handle beforePrerenderVisible without prerender object', async () => {
|
|
@@ -1642,7 +1881,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1642
1881
|
liveboardEmbed['executeEmbedContainerReadyCallbacks']();
|
|
1643
1882
|
|
|
1644
1883
|
// navigateToLiveboard should still be called
|
|
1645
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1884
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1885
|
+
liveboardId,
|
|
1886
|
+
vizId,
|
|
1887
|
+
activeTabId,
|
|
1888
|
+
undefined,
|
|
1889
|
+
);
|
|
1646
1890
|
});
|
|
1647
1891
|
|
|
1648
1892
|
test('should work with all liveboard parameters', async () => {
|
|
@@ -1666,7 +1910,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1666
1910
|
liveboardEmbed['beforePrerenderVisible']();
|
|
1667
1911
|
|
|
1668
1912
|
// Check that all parameters are passed correctly
|
|
1669
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1913
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1914
|
+
customLiveboardId,
|
|
1915
|
+
customVizId,
|
|
1916
|
+
customActiveTabId,
|
|
1917
|
+
undefined,
|
|
1918
|
+
);
|
|
1670
1919
|
});
|
|
1671
1920
|
|
|
1672
1921
|
test('should work with minimal liveboard parameters', async () => {
|
|
@@ -1684,7 +1933,12 @@ describe('Liveboard/viz embed tests', () => {
|
|
|
1684
1933
|
liveboardEmbed['beforePrerenderVisible']();
|
|
1685
1934
|
|
|
1686
1935
|
// Check that undefined parameters are passed correctly
|
|
1687
|
-
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1936
|
+
expect(navigateToLiveboardSpy).toHaveBeenCalledWith(
|
|
1937
|
+
liveboardId,
|
|
1938
|
+
undefined,
|
|
1939
|
+
undefined,
|
|
1940
|
+
undefined,
|
|
1941
|
+
);
|
|
1688
1942
|
});
|
|
1689
1943
|
});
|
|
1690
1944
|
|