@thoughtspot/visual-embed-sdk 1.28.0-preRender → 1.28.1-alpha.1
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 +3 -4
- package/cjs/src/auth.d.ts +16 -1
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +5 -1
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/auth.spec.d.ts.map +1 -1
- package/cjs/src/auth.spec.js +9 -0
- package/cjs/src/auth.spec.js.map +1 -1
- package/cjs/src/authToken.d.ts +6 -0
- package/cjs/src/authToken.d.ts.map +1 -1
- package/cjs/src/authToken.js +6 -0
- package/cjs/src/authToken.js.map +1 -1
- package/cjs/src/embed/app.d.ts +155 -6
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +3 -3
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +20 -1
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +2 -3
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/embed.spec.js +0 -15
- package/cjs/src/embed/embed.spec.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +121 -6
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +2 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +21 -2
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/pinboard.spec.js +21 -1
- package/cjs/src/embed/pinboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -1
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +2 -2
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +37 -6
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +2 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +90 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +2 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +26 -1
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/cjs/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/cjs/src/embed/ts-embed-trigger.spec.js +34 -0
- package/cjs/src/embed/ts-embed-trigger.spec.js.map +1 -0
- package/cjs/src/embed/ts-embed.d.ts +1 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +12 -7
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +46 -17
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +3 -1
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +5 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +1 -1
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/test/test-utils.d.ts +1 -0
- package/cjs/src/test/test-utils.d.ts.map +1 -1
- package/cjs/src/test/test-utils.js +10 -1
- package/cjs/src/test/test-utils.js.map +1 -1
- package/cjs/src/tokenizedFetch.d.ts +9 -0
- package/cjs/src/tokenizedFetch.d.ts.map +1 -1
- package/cjs/src/tokenizedFetch.js +9 -0
- package/cjs/src/tokenizedFetch.js.map +1 -1
- package/cjs/src/types.d.ts +289 -43
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +103 -20
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/authService/authService.d.ts.map +1 -1
- package/cjs/src/utils/authService/authService.js +9 -3
- package/cjs/src/utils/authService/authService.js.map +1 -1
- package/cjs/src/utils/authService/authService.spec.js +22 -0
- package/cjs/src/utils/authService/authService.spec.js.map +1 -1
- package/dist/src/auth.d.ts +16 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/auth.spec.d.ts.map +1 -1
- package/dist/src/authToken.d.ts +6 -0
- package/dist/src/authToken.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +155 -6
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +121 -6
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -1
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +37 -6
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +90 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/dist/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/dist/src/embed/ts-embed.d.ts +1 -1
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/test/test-utils.d.ts +1 -0
- package/dist/src/test/test-utils.d.ts.map +1 -1
- package/dist/src/tokenizedFetch.d.ts +9 -0
- package/dist/src/tokenizedFetch.d.ts.map +1 -1
- package/dist/src/types.d.ts +289 -43
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/authService/authService.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +155 -43
- package/dist/tsembed-react.js +141 -42
- package/dist/tsembed.es.js +157 -47
- package/dist/tsembed.js +144 -45
- package/dist/visual-embed-sdk-react-full.d.ts +731 -66
- package/dist/visual-embed-sdk-react.d.ts +731 -66
- package/dist/visual-embed-sdk.d.ts +731 -66
- package/lib/package.json +3 -4
- package/lib/src/auth.d.ts +16 -1
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +5 -1
- package/lib/src/auth.js.map +1 -1
- package/lib/src/auth.spec.d.ts.map +1 -1
- package/lib/src/auth.spec.js +9 -0
- package/lib/src/auth.spec.js.map +1 -1
- package/lib/src/authToken.d.ts +6 -0
- package/lib/src/authToken.d.ts.map +1 -1
- package/lib/src/authToken.js +6 -0
- package/lib/src/authToken.js.map +1 -1
- package/lib/src/embed/app.d.ts +155 -6
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +3 -3
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +20 -1
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +2 -3
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/embed.spec.js +2 -17
- package/lib/src/embed/embed.spec.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +121 -6
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +2 -2
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +21 -2
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/pinboard.spec.js +21 -1
- package/lib/src/embed/pinboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -1
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +2 -2
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +37 -6
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +2 -2
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +90 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +2 -2
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +26 -1
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed-trigger.spec.d.ts +2 -0
- package/lib/src/embed/ts-embed-trigger.spec.d.ts.map +1 -0
- package/lib/src/embed/ts-embed-trigger.spec.js +32 -0
- package/lib/src/embed/ts-embed-trigger.spec.js.map +1 -0
- package/lib/src/embed/ts-embed.d.ts +1 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +12 -7
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +40 -11
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +3 -1
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +3 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/index.spec.js +1 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/test/test-utils.d.ts +1 -0
- package/lib/src/test/test-utils.d.ts.map +1 -1
- package/lib/src/test/test-utils.js +8 -0
- package/lib/src/test/test-utils.js.map +1 -1
- package/lib/src/tokenizedFetch.d.ts +9 -0
- package/lib/src/tokenizedFetch.d.ts.map +1 -1
- package/lib/src/tokenizedFetch.js +9 -0
- package/lib/src/tokenizedFetch.js.map +1 -1
- package/lib/src/types.d.ts +289 -43
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +103 -20
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/authService/authService.d.ts.map +1 -1
- package/lib/src/utils/authService/authService.js +9 -3
- package/lib/src/utils/authService/authService.js.map +1 -1
- package/lib/src/utils/authService/authService.spec.js +22 -0
- package/lib/src/utils/authService/authService.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +738 -66
- package/package.json +3 -4
- package/src/auth.spec.ts +10 -0
- package/src/auth.ts +21 -2
- package/src/authToken.ts +6 -0
- package/src/embed/app.spec.ts +25 -1
- package/src/embed/app.ts +163 -11
- package/src/embed/base.ts +3 -5
- package/src/embed/embed.spec.ts +0 -18
- package/src/embed/liveboard.spec.ts +25 -2
- package/src/embed/liveboard.ts +128 -9
- package/src/embed/pinboard.spec.ts +25 -1
- package/src/embed/sage.ts +2 -2
- package/src/embed/search-bar.tsx +38 -7
- package/src/embed/search.spec.ts +30 -1
- package/src/embed/search.ts +97 -4
- package/src/embed/ts-embed-trigger.spec.ts +39 -0
- package/src/embed/ts-embed.spec.ts +48 -16
- package/src/embed/ts-embed.ts +19 -12
- package/src/index.ts +4 -0
- package/src/react/index.spec.tsx +1 -0
- package/src/test/test-utils.ts +9 -0
- package/src/tokenizedFetch.ts +9 -0
- package/src/types.ts +298 -50
- package/src/utils/authService/authService.spec.ts +27 -0
- package/src/utils/authService/authService.ts +14 -13
package/src/embed/liveboard.ts
CHANGED
|
@@ -28,12 +28,30 @@ import { V1Embed } from './ts-embed';
|
|
|
28
28
|
*
|
|
29
29
|
* @group Embed components
|
|
30
30
|
*/
|
|
31
|
-
export interface LiveboardViewConfig
|
|
31
|
+
export interface LiveboardViewConfig
|
|
32
|
+
extends Omit<
|
|
33
|
+
ViewConfig,
|
|
34
|
+
'hiddenHomepageModules' | 'hiddenHomeLeftNavItems' | 'reorderedHomepageModules'
|
|
35
|
+
> {
|
|
32
36
|
/**
|
|
33
37
|
* If set to true, the embedded object container dynamically resizes
|
|
34
38
|
* according to the height of the Liveboard.
|
|
39
|
+
* **Note**: Using fullHeight loads all visualizations on the
|
|
40
|
+
* Liveboard simultaneously, which results in multiple warehouse
|
|
41
|
+
* queries and potentially a longer wait for the topmost
|
|
42
|
+
* visualizations to display on the screen.
|
|
43
|
+
* Setting `fullHeight` to `false` fetches visualizations
|
|
44
|
+
* incrementally as users scroll the page to view the charts and tables.
|
|
35
45
|
*
|
|
36
46
|
* @version SDK: 1.1.0 | ThoughtSpot: ts7.may.cl, 7.2.1
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```js
|
|
50
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
51
|
+
* ... // other liveboard view config
|
|
52
|
+
* fullHeight: true,
|
|
53
|
+
* });
|
|
54
|
+
* ```
|
|
37
55
|
*/
|
|
38
56
|
fullHeight?: boolean;
|
|
39
57
|
/**
|
|
@@ -43,10 +61,28 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
43
61
|
*
|
|
44
62
|
* @version SDK: 1.5.0 | ThoughtSpot: ts7.oct.cl, 7.2.1
|
|
45
63
|
* @default 500
|
|
64
|
+
* @example
|
|
65
|
+
* ```js
|
|
66
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
67
|
+
* ... // other liveboard view config
|
|
68
|
+
* fullHeight: true,
|
|
69
|
+
* defaultHeight: 600,
|
|
70
|
+
* });
|
|
71
|
+
* ```
|
|
46
72
|
*/
|
|
47
73
|
defaultHeight?: number;
|
|
48
74
|
/**
|
|
49
75
|
* @Deprecated If set to true, the context menu in visualizations will be enabled.
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```js
|
|
79
|
+
* const embed = new LiveboardEmbed('#tsEmbed', {
|
|
80
|
+
* ... // other options
|
|
81
|
+
* enableVizTransformations:true,
|
|
82
|
+
* })
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
50
86
|
*/
|
|
51
87
|
enableVizTransformations?: boolean;
|
|
52
88
|
/**
|
|
@@ -54,6 +90,12 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
54
90
|
* Use either liveboardId or pinboardId to reference the Liveboard to embed.
|
|
55
91
|
*
|
|
56
92
|
* @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1
|
|
93
|
+
* @example
|
|
94
|
+
* ```js
|
|
95
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
96
|
+
* ... // other options
|
|
97
|
+
* liveboardId:id of liveboard,
|
|
98
|
+
* })
|
|
57
99
|
*/
|
|
58
100
|
liveboardId?: string;
|
|
59
101
|
/**
|
|
@@ -64,6 +106,16 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
64
106
|
pinboardId?: string;
|
|
65
107
|
/**
|
|
66
108
|
* The visualization within the Liveboard to display.
|
|
109
|
+
*
|
|
110
|
+
* @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```js
|
|
114
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
115
|
+
* ... // other options
|
|
116
|
+
* vizId:'430496d6-6903-4601-937e-2c691821af3c',
|
|
117
|
+
* })
|
|
118
|
+
* ```
|
|
67
119
|
*/
|
|
68
120
|
vizId?: string;
|
|
69
121
|
/**
|
|
@@ -71,6 +123,13 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
71
123
|
* Liveboard page will be read-only (no X buttons)
|
|
72
124
|
*
|
|
73
125
|
* @version SDK: 1.3.0 | ThoughtSpot ts7.aug.cl, 7.2.1.sw
|
|
126
|
+
* @example
|
|
127
|
+
* ```js
|
|
128
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
129
|
+
* ... // other options
|
|
130
|
+
* preventLiveboardFilterRemoval:true,
|
|
131
|
+
* })
|
|
132
|
+
* ```
|
|
74
133
|
*/
|
|
75
134
|
preventLiveboardFilterRemoval?: boolean;
|
|
76
135
|
/**
|
|
@@ -79,6 +138,16 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
79
138
|
* event.
|
|
80
139
|
*
|
|
81
140
|
* @version SDK: 1.9.1 | ThoughtSpot: 8.1.0.cl, 8.4.1-sw
|
|
141
|
+
*
|
|
142
|
+
* @example
|
|
143
|
+
* ```js
|
|
144
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
145
|
+
* ... // other options
|
|
146
|
+
* visibleVizs: [
|
|
147
|
+
* '430496d6-6903-4601-937e-2c691821af3c',
|
|
148
|
+
* 'f547ec54-2a37-4516-a222-2b06719af726'
|
|
149
|
+
* ]
|
|
150
|
+
* })
|
|
82
151
|
*/
|
|
83
152
|
visibleVizs?: string[];
|
|
84
153
|
/**
|
|
@@ -92,12 +161,26 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
92
161
|
* new Liveboard experience mode.
|
|
93
162
|
*
|
|
94
163
|
* @version SDK: 1.14.0 | ThoughtSpot: 8.6.0.cl, 8.8.1-sw
|
|
164
|
+
* @example
|
|
165
|
+
* ```js
|
|
166
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
167
|
+
* ... // other options
|
|
168
|
+
* liveboardV2:true,
|
|
169
|
+
* })
|
|
170
|
+
* ```
|
|
95
171
|
*/
|
|
96
172
|
liveboardV2?: boolean;
|
|
97
173
|
/**
|
|
98
174
|
* Set a Liveboard tab as an active tab.
|
|
99
175
|
* Specify the tab ID.
|
|
100
176
|
*
|
|
177
|
+
* @example
|
|
178
|
+
* ```js
|
|
179
|
+
* const embed = new LiveboardEmbed('#tsEmbed', {
|
|
180
|
+
* ... // other options
|
|
181
|
+
* activeTabId:'id-1234',
|
|
182
|
+
* })
|
|
183
|
+
* ```
|
|
101
184
|
* @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl, 8.8.1-sw
|
|
102
185
|
*/
|
|
103
186
|
activeTabId?: string;
|
|
@@ -105,6 +188,14 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
105
188
|
* Show or hide the tab panel of the embedded Liveboard.
|
|
106
189
|
*
|
|
107
190
|
* @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl, 9.8.0.sw
|
|
191
|
+
*
|
|
192
|
+
* @example
|
|
193
|
+
* ```js
|
|
194
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
195
|
+
* ... // other options
|
|
196
|
+
* hideTabPanel:true,
|
|
197
|
+
* })
|
|
198
|
+
* ```
|
|
108
199
|
*/
|
|
109
200
|
hideTabPanel?: boolean;
|
|
110
201
|
/**
|
|
@@ -112,20 +203,41 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
112
203
|
*
|
|
113
204
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
|
|
114
205
|
* @default false
|
|
206
|
+
* @example
|
|
207
|
+
* ```js
|
|
208
|
+
* const embed = new LiveboardEmbed('#embed', {
|
|
209
|
+
* ... // other liveboard view config
|
|
210
|
+
* hideLiveboardHeader:true,
|
|
211
|
+
* });
|
|
212
|
+
* ```
|
|
115
213
|
*/
|
|
116
214
|
hideLiveboardHeader?: boolean;
|
|
117
215
|
/**
|
|
118
216
|
* Show or hide the Liveboard title.
|
|
119
|
-
*
|
|
120
|
-
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
|
|
121
217
|
* @default false
|
|
218
|
+
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```js
|
|
222
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
223
|
+
* ... // other options
|
|
224
|
+
* showLiveboardTitle:true,
|
|
225
|
+
* })
|
|
226
|
+
* ```
|
|
122
227
|
*/
|
|
123
228
|
showLiveboardTitle?: boolean;
|
|
124
229
|
/**
|
|
125
230
|
* Show or hide the Liveboard description.
|
|
126
|
-
*
|
|
127
|
-
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
|
|
128
231
|
* @default false
|
|
232
|
+
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl, 9.8.0.sw
|
|
233
|
+
*
|
|
234
|
+
* @example
|
|
235
|
+
* ```js
|
|
236
|
+
* const embed = new LiveboardEmbed('#embed-container', {
|
|
237
|
+
* ... // other options
|
|
238
|
+
* showLiveboardDescription:true,
|
|
239
|
+
* })
|
|
240
|
+
* ```
|
|
129
241
|
*/
|
|
130
242
|
showLiveboardDescription?: boolean;
|
|
131
243
|
/**
|
|
@@ -146,8 +258,15 @@ export interface LiveboardViewConfig extends Omit<ViewConfig, 'hiddenHomepageMod
|
|
|
146
258
|
/**
|
|
147
259
|
* enable or disable ask sage
|
|
148
260
|
*
|
|
149
|
-
* @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
|
|
150
261
|
* @default false
|
|
262
|
+
* @version SDK: 1.29.0 | Thoughtspot: 9.12.0.cl
|
|
263
|
+
* @example
|
|
264
|
+
* ```js
|
|
265
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
266
|
+
* ... // other options
|
|
267
|
+
* enableAskSage:true,
|
|
268
|
+
* })
|
|
269
|
+
* ```
|
|
151
270
|
*/
|
|
152
271
|
enableAskSage?: boolean;
|
|
153
272
|
}
|
|
@@ -362,11 +481,11 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
362
481
|
* @param renderOptions An object specifying the Liveboard ID,
|
|
363
482
|
* visualization ID and the runtime filters.
|
|
364
483
|
*/
|
|
365
|
-
public render(): LiveboardEmbed {
|
|
484
|
+
public async render(): Promise<LiveboardEmbed> {
|
|
366
485
|
super.render();
|
|
367
486
|
|
|
368
487
|
const src = this.getIFrameSrc();
|
|
369
|
-
this.renderV1Embed(src);
|
|
488
|
+
await this.renderV1Embed(src);
|
|
370
489
|
|
|
371
490
|
return this;
|
|
372
491
|
}
|
|
@@ -389,4 +508,4 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
389
508
|
/**
|
|
390
509
|
* @hidden
|
|
391
510
|
*/
|
|
392
|
-
export class PinboardEmbed extends LiveboardEmbed {
|
|
511
|
+
export class PinboardEmbed extends LiveboardEmbed {}
|
|
@@ -169,6 +169,7 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
169
169
|
values: [1000],
|
|
170
170
|
},
|
|
171
171
|
],
|
|
172
|
+
excludeRuntimeFiltersfromURL: false,
|
|
172
173
|
} as LiveboardViewConfig);
|
|
173
174
|
pinboardEmbed.render();
|
|
174
175
|
await executeAfterWait(() => {
|
|
@@ -179,7 +180,7 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
179
180
|
});
|
|
180
181
|
});
|
|
181
182
|
|
|
182
|
-
test('should not
|
|
183
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
183
184
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
184
185
|
...defaultViewConfig,
|
|
185
186
|
pinboardId,
|
|
@@ -202,6 +203,29 @@ describe('Pinboard/viz embed tests', () => {
|
|
|
202
203
|
});
|
|
203
204
|
});
|
|
204
205
|
|
|
206
|
+
test('should append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
|
|
207
|
+
const liveboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
208
|
+
...defaultViewConfig,
|
|
209
|
+
pinboardId,
|
|
210
|
+
vizId,
|
|
211
|
+
runtimeFilters: [
|
|
212
|
+
{
|
|
213
|
+
columnName: 'sales',
|
|
214
|
+
operator: RuntimeFilterOp.EQ,
|
|
215
|
+
values: [1000],
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
} as LiveboardViewConfig);
|
|
219
|
+
liveboardEmbed.render();
|
|
220
|
+
const runtimeFilter = 'col1=sales&op1=EQ&val1=1000';
|
|
221
|
+
await executeAfterWait(() => {
|
|
222
|
+
expectUrlMatchesWithParams(
|
|
223
|
+
getIFrameSrc(),
|
|
224
|
+
`http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParamsVizEmbed}&${runtimeFilter}#/embed/viz/${pinboardId}/${vizId}`,
|
|
225
|
+
);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
|
|
205
229
|
test('should register event handler to adjust iframe height', async () => {
|
|
206
230
|
const pinboardEmbed = new PinboardEmbed(getRootEl(), {
|
|
207
231
|
...defaultViewConfig,
|
package/src/embed/sage.ts
CHANGED
|
@@ -237,11 +237,11 @@ export class SageEmbed extends V1Embed {
|
|
|
237
237
|
*
|
|
238
238
|
* @returns {SageEmbed} Eureka/Sage embed
|
|
239
239
|
*/
|
|
240
|
-
public render(): SageEmbed {
|
|
240
|
+
public async render(): Promise<SageEmbed> {
|
|
241
241
|
super.render();
|
|
242
242
|
|
|
243
243
|
const src = this.getIFrameSrc();
|
|
244
|
-
this.renderV1Embed(src);
|
|
244
|
+
await this.renderV1Embed(src);
|
|
245
245
|
|
|
246
246
|
return this;
|
|
247
247
|
}
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -23,18 +23,44 @@ export interface SearchBarViewConfig
|
|
|
23
23
|
* Only a single data source is supported currently.
|
|
24
24
|
*
|
|
25
25
|
* @deprecated Use `dataSource` instead
|
|
26
|
+
*
|
|
27
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.1-sw
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```js
|
|
31
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
32
|
+
* ... // other options
|
|
33
|
+
* dataSources:['id-2345','id-2345'],
|
|
34
|
+
* })
|
|
35
|
+
* ```
|
|
26
36
|
*/
|
|
27
37
|
dataSources?: string[];
|
|
28
38
|
/**
|
|
29
|
-
*
|
|
39
|
+
* Pass the ID of the source to be selected.
|
|
30
40
|
*
|
|
31
41
|
* @version: SDK: 1.19.0, ThoughtSpot 9.0.0.cl, 9.0.1.sw
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```js
|
|
45
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
46
|
+
* ... // other options
|
|
47
|
+
* dataSource:'id-2345',
|
|
48
|
+
* })
|
|
49
|
+
* ```
|
|
32
50
|
*/
|
|
33
51
|
dataSource?: string;
|
|
34
52
|
/**
|
|
35
53
|
* Boolean to define if the last selected data source should be used
|
|
36
54
|
*
|
|
37
55
|
* @version: SDK: 1.24.0, ThoughtSpot 9.5.0.cl, 9.5.0.sw
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```js
|
|
59
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
60
|
+
* ... // other options
|
|
61
|
+
* useLastSelectedSources:false,
|
|
62
|
+
* })
|
|
63
|
+
* ```
|
|
38
64
|
*/
|
|
39
65
|
useLastSelectedSources?: boolean;
|
|
40
66
|
/**
|
|
@@ -48,12 +74,17 @@ export interface SearchBarViewConfig
|
|
|
48
74
|
* If it’s not executed, the focus is placed at the end of
|
|
49
75
|
* the token string in the search bar.
|
|
50
76
|
*
|
|
77
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.4.0.sw
|
|
78
|
+
*
|
|
51
79
|
* @example
|
|
52
80
|
* ```js
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
81
|
+
* const embed = new SearchBarEmbed('#tsEmbed', {
|
|
82
|
+
* ... // other options
|
|
83
|
+
* searchOptions: {
|
|
84
|
+
* searchTokenString: '[quantity purchased] [region]',
|
|
85
|
+
* executeSearch: true,
|
|
86
|
+
* }
|
|
87
|
+
* })
|
|
57
88
|
* ```
|
|
58
89
|
*/
|
|
59
90
|
searchOptions?: SearchOptions;
|
|
@@ -130,11 +161,11 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
130
161
|
/**
|
|
131
162
|
* Render the embedded ThoughtSpot search
|
|
132
163
|
*/
|
|
133
|
-
public render(): SearchBarEmbed {
|
|
164
|
+
public async render(): Promise<SearchBarEmbed> {
|
|
134
165
|
super.render();
|
|
135
166
|
|
|
136
167
|
const src = this.getIFrameSrc();
|
|
137
|
-
this.renderIFrame(src);
|
|
168
|
+
await this.renderIFrame(src);
|
|
138
169
|
return this;
|
|
139
170
|
}
|
|
140
171
|
}
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -178,6 +178,7 @@ describe('Search embed tests', () => {
|
|
|
178
178
|
values: ['berkeley'],
|
|
179
179
|
},
|
|
180
180
|
],
|
|
181
|
+
excludeRuntimeFiltersfromURL: false,
|
|
181
182
|
});
|
|
182
183
|
searchEmbed.render();
|
|
183
184
|
await executeAfterWait(() => {
|
|
@@ -188,7 +189,7 @@ describe('Search embed tests', () => {
|
|
|
188
189
|
});
|
|
189
190
|
});
|
|
190
191
|
|
|
191
|
-
test('should not
|
|
192
|
+
test('should not append runtime filters in URL if excludeRuntimeFiltersfromURL is true', async () => {
|
|
192
193
|
const dataSources = ['data-source-1'];
|
|
193
194
|
const searchOptions = {
|
|
194
195
|
searchTokenString: '[commit date][revenue]',
|
|
@@ -216,6 +217,34 @@ describe('Search embed tests', () => {
|
|
|
216
217
|
});
|
|
217
218
|
});
|
|
218
219
|
|
|
220
|
+
test('should append runtime filters in URL if excludeRuntimeFiltersfromURL is undefined', async () => {
|
|
221
|
+
const dataSources = ['data-source-1'];
|
|
222
|
+
const searchOptions = {
|
|
223
|
+
searchTokenString: '[commit date][revenue]',
|
|
224
|
+
};
|
|
225
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
226
|
+
...defaultViewConfig,
|
|
227
|
+
hideDataSources: true,
|
|
228
|
+
dataSources,
|
|
229
|
+
searchOptions,
|
|
230
|
+
runtimeFilters: [
|
|
231
|
+
{
|
|
232
|
+
columnName: 'city',
|
|
233
|
+
operator: RuntimeFilterOp.EQ,
|
|
234
|
+
values: ['berkeley'],
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
});
|
|
238
|
+
searchEmbed.render();
|
|
239
|
+
const runtimeFilter = 'col1=city&op1=EQ&val1=berkeley';
|
|
240
|
+
await executeAfterWait(() => {
|
|
241
|
+
expectUrlMatchesWithParams(
|
|
242
|
+
getIFrameSrc(),
|
|
243
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&${runtimeFilter}&dataSources=[%22data-source-1%22]&searchTokenString=%5Bcommit%20date%5D%5Brevenue%5D&dataSourceMode=hide&useLastSelectedSources=false${prefixParams}#/embed/answer`,
|
|
244
|
+
);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
|
|
219
248
|
test('Should add dataSource', async () => {
|
|
220
249
|
const dataSource = 'data-source-1';
|
|
221
250
|
const searchOptions = {
|
package/src/embed/search.ts
CHANGED
|
@@ -8,7 +8,11 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import {
|
|
11
|
-
DataSourceVisualMode,
|
|
11
|
+
DataSourceVisualMode,
|
|
12
|
+
DOMSelector,
|
|
13
|
+
Param,
|
|
14
|
+
Action,
|
|
15
|
+
ViewConfig,
|
|
12
16
|
} from '../types';
|
|
13
17
|
import {
|
|
14
18
|
getQueryParamString,
|
|
@@ -57,27 +61,74 @@ export interface SearchViewConfig
|
|
|
57
61
|
/**
|
|
58
62
|
* If set to true, the data sources panel is collapsed on load,
|
|
59
63
|
* but can be expanded manually.
|
|
64
|
+
*
|
|
65
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
66
|
+
*
|
|
67
|
+
* @example
|
|
68
|
+
* ```js
|
|
69
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
70
|
+
* ... // other options
|
|
71
|
+
* collapseDataSources:true,
|
|
72
|
+
* })
|
|
73
|
+
* ```
|
|
60
74
|
*/
|
|
61
75
|
collapseDataSources?: boolean;
|
|
62
76
|
/**
|
|
63
77
|
* Show or hide the data sources panel.
|
|
78
|
+
*
|
|
79
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```js
|
|
83
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
84
|
+
* ... // other options
|
|
85
|
+
* hideDataSources:true,
|
|
86
|
+
* })
|
|
87
|
+
* ```
|
|
64
88
|
*/
|
|
65
89
|
hideDataSources?: boolean;
|
|
66
90
|
/**
|
|
67
91
|
* Show or hide the charts and tables in search answers.
|
|
68
92
|
* This attribute can be used to create a custom visualization
|
|
69
93
|
* using raw answer data.
|
|
94
|
+
*
|
|
95
|
+
* @version: SDK: 1.2.0 | ThoughtSpot: 9.1.0.sw
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```js
|
|
99
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
100
|
+
* ... // other options
|
|
101
|
+
* hideResults:true,
|
|
102
|
+
* })
|
|
103
|
+
* ```
|
|
70
104
|
*/
|
|
71
105
|
hideResults?: boolean;
|
|
72
106
|
/**
|
|
73
107
|
* If set to true, the Search Assist feature is enabled.
|
|
74
108
|
*
|
|
75
109
|
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```js
|
|
113
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
114
|
+
* ... // other options
|
|
115
|
+
* enableSearchAssist:true,
|
|
116
|
+
* })
|
|
117
|
+
* ```
|
|
76
118
|
*/
|
|
77
119
|
enableSearchAssist?: boolean;
|
|
78
120
|
/**
|
|
79
121
|
* If set to true, the tabular view is set as the default
|
|
80
122
|
* format for presenting search data.
|
|
123
|
+
*
|
|
124
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```js
|
|
128
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
129
|
+
* ... // other options
|
|
130
|
+
* forceTable:true,
|
|
131
|
+
* })
|
|
81
132
|
*/
|
|
82
133
|
forceTable?: boolean;
|
|
83
134
|
/**
|
|
@@ -85,12 +136,28 @@ export interface SearchViewConfig
|
|
|
85
136
|
* Only a single data source is supported currently.
|
|
86
137
|
*
|
|
87
138
|
* @deprecated Use `dataSource` instead.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```js
|
|
142
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
143
|
+
* ... // other options
|
|
144
|
+
* dataSources:['id-234','id-456'],
|
|
145
|
+
* })
|
|
146
|
+
* ```
|
|
88
147
|
*/
|
|
89
148
|
dataSources?: string[];
|
|
90
149
|
/**
|
|
91
150
|
* The array of data source GUIDs to set on load.
|
|
92
151
|
*
|
|
93
152
|
* @version: SDK: 1.19.0
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```js
|
|
156
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
157
|
+
* ... // other options
|
|
158
|
+
* dataSource:'id-234',
|
|
159
|
+
* })
|
|
160
|
+
* ```
|
|
94
161
|
*/
|
|
95
162
|
dataSource?: string;
|
|
96
163
|
/**
|
|
@@ -123,6 +190,16 @@ export interface SearchViewConfig
|
|
|
123
190
|
searchOptions?: SearchOptions;
|
|
124
191
|
/**
|
|
125
192
|
* The GUID of a saved answer to load initially.
|
|
193
|
+
*
|
|
194
|
+
* @version: SDK: 1.1.0 | ThoughtSpot: 8.1.0.sw
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```js
|
|
198
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
199
|
+
* ... // other options
|
|
200
|
+
* answerId:'sed-1234',
|
|
201
|
+
* })
|
|
202
|
+
* ```
|
|
126
203
|
*/
|
|
127
204
|
answerId?: string;
|
|
128
205
|
/**
|
|
@@ -130,6 +207,14 @@ export interface SearchViewConfig
|
|
|
130
207
|
* The chart/table should still be visible.
|
|
131
208
|
*
|
|
132
209
|
* @version SDK: 1.21.0 | ThoughtSpot: 9.2.0.cl, 9.5.0.sw
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* ```js
|
|
213
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
214
|
+
* ... // other options
|
|
215
|
+
* hideSearchBar:true,
|
|
216
|
+
* })
|
|
217
|
+
* ```
|
|
133
218
|
*/
|
|
134
219
|
hideSearchBar?: boolean;
|
|
135
220
|
/**
|
|
@@ -137,6 +222,14 @@ export interface SearchViewConfig
|
|
|
137
222
|
*
|
|
138
223
|
* @default false
|
|
139
224
|
* @version SDK: 1.26.0 | Thoughtspot: 9.7.0.cl
|
|
225
|
+
*
|
|
226
|
+
* @example
|
|
227
|
+
* ```js
|
|
228
|
+
* const embed = new SearchEmbed('#tsEmbed', {
|
|
229
|
+
* ... // other options
|
|
230
|
+
* dataPanelV2:false,
|
|
231
|
+
* })
|
|
232
|
+
* ```
|
|
140
233
|
*/
|
|
141
234
|
dataPanelV2?: boolean;
|
|
142
235
|
/**
|
|
@@ -281,18 +374,18 @@ export class SearchEmbed extends TsEmbed {
|
|
|
281
374
|
/**
|
|
282
375
|
* Render the embedded ThoughtSpot search
|
|
283
376
|
*/
|
|
284
|
-
public render(): SearchEmbed {
|
|
377
|
+
public async render(): Promise<SearchEmbed> {
|
|
285
378
|
super.render();
|
|
286
379
|
const { answerId } = this.viewConfig;
|
|
287
380
|
|
|
288
381
|
const src = this.getIFrameSrc();
|
|
289
|
-
this.renderIFrame(src);
|
|
382
|
+
await this.renderIFrame(src);
|
|
290
383
|
getAuthPromise().then(() => {
|
|
291
384
|
if (
|
|
292
385
|
checkReleaseVersionInBeta(
|
|
293
386
|
getReleaseVersion(),
|
|
294
387
|
getEmbedConfig().suppressSearchEmbedBetaWarning
|
|
295
|
-
|
|
388
|
+
|| getEmbedConfig().suppressErrorAlerts,
|
|
296
389
|
)
|
|
297
390
|
) {
|
|
298
391
|
alert(ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE);
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
init, AuthType, LiveboardEmbed, HostEvent,
|
|
3
|
+
} from '../index';
|
|
4
|
+
import {
|
|
5
|
+
executeAfterWait,
|
|
6
|
+
getDocumentBody,
|
|
7
|
+
getIFrameEl,
|
|
8
|
+
getRootEl,
|
|
9
|
+
} from '../test/test-utils';
|
|
10
|
+
|
|
11
|
+
describe('Trigger', () => {
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
document.body.innerHTML = getDocumentBody();
|
|
14
|
+
});
|
|
15
|
+
test('should trigger the event', async (done) => {
|
|
16
|
+
init({
|
|
17
|
+
thoughtSpotHost: 'https://tshost',
|
|
18
|
+
authType: AuthType.None,
|
|
19
|
+
});
|
|
20
|
+
const lb = new LiveboardEmbed(getRootEl(), {
|
|
21
|
+
frameParams: {
|
|
22
|
+
width: '100%',
|
|
23
|
+
height: '100%',
|
|
24
|
+
},
|
|
25
|
+
liveboardId: '123',
|
|
26
|
+
});
|
|
27
|
+
const val = await lb.render();
|
|
28
|
+
const iframe = getIFrameEl();
|
|
29
|
+
jest.spyOn(iframe.contentWindow, 'postMessage');
|
|
30
|
+
executeAfterWait(() => {
|
|
31
|
+
lb.trigger(HostEvent.DownloadAsCsv, { vizId: 'testId' });
|
|
32
|
+
expect(iframe.contentWindow.postMessage).toHaveBeenCalledWith(expect.objectContaining({
|
|
33
|
+
type: HostEvent.DownloadAsCsv,
|
|
34
|
+
data: { vizId: 'testId' },
|
|
35
|
+
}), 'https://tshost', expect.anything());
|
|
36
|
+
done();
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|