@thoughtspot/visual-embed-sdk 1.12.0-alpha.1 → 1.13.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/CHANGELOG.md +22 -4
  2. package/README.md +1 -1
  3. package/dist/src/auth.d.ts +4 -1
  4. package/dist/src/auth.spec.d.ts +1 -0
  5. package/dist/src/embed/liveboard.d.ts +7 -1
  6. package/dist/src/embed/search.d.ts +1 -0
  7. package/dist/src/embed/searchEmbed-basic-auth.spec.d.ts +1 -0
  8. package/dist/src/embed/ts-embed.d.ts +2 -1
  9. package/dist/src/errors.d.ts +2 -0
  10. package/dist/src/types.d.ts +19 -2
  11. package/dist/src/utils.d.ts +1 -0
  12. package/dist/tsembed.es.js +60 -6
  13. package/dist/tsembed.js +60 -6
  14. package/lib/package.json +4 -2
  15. package/lib/src/auth.d.ts +4 -1
  16. package/lib/src/auth.js +10 -2
  17. package/lib/src/auth.js.map +1 -1
  18. package/lib/src/auth.spec.d.ts +1 -0
  19. package/lib/src/auth.spec.js +4 -1
  20. package/lib/src/auth.spec.js.map +1 -1
  21. package/lib/src/embed/app.spec.js +4 -3
  22. package/lib/src/embed/app.spec.js.map +1 -1
  23. package/lib/src/embed/embed.spec.js +2 -0
  24. package/lib/src/embed/embed.spec.js.map +1 -1
  25. package/lib/src/embed/events.spec.js +1 -0
  26. package/lib/src/embed/events.spec.js.map +1 -1
  27. package/lib/src/embed/liveboard.d.ts +7 -1
  28. package/lib/src/embed/liveboard.js +12 -0
  29. package/lib/src/embed/liveboard.js.map +1 -1
  30. package/lib/src/embed/liveboard.spec.js +18 -4
  31. package/lib/src/embed/liveboard.spec.js.map +1 -1
  32. package/lib/src/embed/pinboard.spec.js +4 -3
  33. package/lib/src/embed/pinboard.spec.js.map +1 -1
  34. package/lib/src/embed/search.d.ts +1 -0
  35. package/lib/src/embed/search.js +9 -1
  36. package/lib/src/embed/search.js.map +1 -1
  37. package/lib/src/embed/search.spec.js +9 -1
  38. package/lib/src/embed/search.spec.js.map +1 -1
  39. package/lib/src/embed/searchEmbed-basic-auth.spec.d.ts +1 -0
  40. package/lib/src/embed/searchEmbed-basic-auth.spec.js +90 -0
  41. package/lib/src/embed/searchEmbed-basic-auth.spec.js.map +1 -0
  42. package/lib/src/embed/ts-embed.d.ts +2 -1
  43. package/lib/src/embed/ts-embed.js +7 -5
  44. package/lib/src/embed/ts-embed.js.map +1 -1
  45. package/lib/src/embed/ts-embed.spec.js +12 -5
  46. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  47. package/lib/src/errors.d.ts +2 -0
  48. package/lib/src/errors.js +2 -0
  49. package/lib/src/errors.js.map +1 -1
  50. package/lib/src/react/index.js +3 -2
  51. package/lib/src/react/index.js.map +1 -1
  52. package/lib/src/react/index.spec.js +3 -2
  53. package/lib/src/react/index.spec.js.map +1 -1
  54. package/lib/src/types.d.ts +19 -2
  55. package/lib/src/types.js +11 -0
  56. package/lib/src/types.js.map +1 -1
  57. package/lib/src/utils/processTrigger.js +7 -0
  58. package/lib/src/utils/processTrigger.js.map +1 -1
  59. package/lib/src/utils.d.ts +1 -0
  60. package/lib/src/utils.js +8 -0
  61. package/lib/src/utils.js.map +1 -1
  62. package/lib/src/utils.spec.js +16 -1
  63. package/lib/src/utils.spec.js.map +1 -1
  64. package/lib/src/visual-embed-sdk.d.ts +32 -5
  65. package/package.json +4 -2
  66. package/src/auth.spec.ts +10 -1
  67. package/src/auth.ts +11 -2
  68. package/src/embed/app.spec.ts +4 -3
  69. package/src/embed/embed.spec.ts +2 -0
  70. package/src/embed/events.spec.ts +1 -0
  71. package/src/embed/liveboard.spec.ts +27 -4
  72. package/src/embed/liveboard.ts +13 -0
  73. package/src/embed/pinboard.spec.ts +4 -3
  74. package/src/embed/search.spec.ts +11 -1
  75. package/src/embed/search.ts +15 -1
  76. package/src/embed/searchEmbed-basic-auth.spec.ts +110 -0
  77. package/src/embed/ts-embed.spec.ts +19 -5
  78. package/src/embed/ts-embed.ts +8 -5
  79. package/src/errors.ts +3 -0
  80. package/src/react/index.spec.tsx +4 -2
  81. package/src/react/index.tsx +3 -2
  82. package/src/types.ts +17 -0
  83. package/src/utils/processTrigger.ts +9 -0
  84. package/src/utils.spec.ts +21 -0
  85. package/src/utils.ts +13 -0
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @jest-environment node
3
3
  */
4
- import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, getRedirectUrl, } from './utils';
4
+ import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, getRedirectUrl, checkReleaseVersionInBeta, } from './utils';
5
5
  import { RuntimeFilterOp } from './types';
6
6
  describe('unit test for utils', () => {
7
7
  test('getQueryParamString', () => {
@@ -71,5 +71,20 @@ describe('unit test for utils', () => {
71
71
  expect(getEncodedQueryParamsString('')).toBe('');
72
72
  expect(getEncodedQueryParamsString('test')).toBe('dGVzdA');
73
73
  });
74
+ test('when cluster has dev version', () => {
75
+ expect(checkReleaseVersionInBeta('dev', false)).toBe(false);
76
+ });
77
+ test('when cluster is above 8.3.0.sw software version', () => {
78
+ expect(checkReleaseVersionInBeta('8.8.0.sw', false)).toBe(false);
79
+ });
80
+ test('when cluster is bellow 8.0.0.sw software version', () => {
81
+ expect(checkReleaseVersionInBeta('7.2.1.sw', false)).toBe(true);
82
+ });
83
+ test('when suppressBetaWarning is true and ReleaseVersionBeta is 7.0.1', () => {
84
+ expect(checkReleaseVersionInBeta('7.0.1', true)).toBe(false);
85
+ });
86
+ test('when suppressBetaWarning is false ReleaseVersionBeta is 7.0.1', () => {
87
+ expect(checkReleaseVersionInBeta('7.0.1', false)).toBe(true);
88
+ });
74
89
  });
75
90
  //# sourceMappingURL=utils.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/utils.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.spec.js","sourceRoot":"","sources":["../../src/utils.spec.ts"],"names":[],"mappings":"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"}
@@ -207,7 +207,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
207
207
  * @summary Liveboard & visualization embed
208
208
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
209
209
  */
210
- import { DOMSelector } from '@thoughtspot/visual-embed-sdk/types';
210
+ import { DOMSelector, HostEvent } from '@thoughtspot/visual-embed-sdk/types';
211
211
  import { V1Embed, ViewConfig } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
212
212
  /**
213
213
  * The configuration for the embedded Liveboard or visualization page view.
@@ -278,6 +278,12 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
278
278
  export class LiveboardEmbed extends V1Embed {
279
279
  protected viewConfig: LiveboardViewConfig;
280
280
  constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig);
281
+ /**
282
+ * Triggers an event to the embedded app
283
+ * @param messageType The event type
284
+ * @param data The payload to send with the message
285
+ */
286
+ trigger(messageType: HostEvent, data?: any): Promise<any>;
281
287
  /**
282
288
  * Render an embedded ThoughtSpot Liveboard or visualization
283
289
  * @param renderOptions An object specifying the Liveboard ID,
@@ -341,6 +347,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
341
347
  hideResults?: boolean;
342
348
  /**
343
349
  * If set to true, the Search Assist feature is enabled.
350
+ * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl
344
351
  */
345
352
  enableSearchAssist?: boolean;
346
353
  /**
@@ -391,7 +398,6 @@ declare module '@thoughtspot/visual-embed-sdk/auth' {
391
398
  export let loggedInStatus: boolean;
392
399
  export let samlAuthWindow: Window;
393
400
  export let samlCompletionPromise: Promise<void>;
394
- export let sessionInfo: any;
395
401
  export const SSO_REDIRECTION_MARKER_GUID = "5e16222e-ef02-43e9-9fbd-24226bf3ce5b";
396
402
  export const EndPoints: {
397
403
  AUTH_VERIFICATION: string;
@@ -412,6 +418,10 @@ declare module '@thoughtspot/visual-embed-sdk/auth' {
412
418
  SUCCESS = "SUCCESS",
413
419
  LOGOUT = "LOGOUT"
414
420
  }
421
+ /**
422
+ * Return releaseVersion if available
423
+ */
424
+ export function getReleaseVersion(): string;
415
425
  /**
416
426
  * Return sessionInfo if available else make a loggedIn check to fetch the sessionInfo
417
427
  */
@@ -601,6 +611,12 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
601
611
  * @version SDK: 1.10.4 | ThoughtSpot: *
602
612
  */
603
613
  detectCookieAccessSlow?: boolean;
614
+ /**
615
+ * Hide beta alert warning message for SearchEmbed.
616
+ *
617
+ * @version SDK: 1.12.0 | ThoughtSpot: *
618
+ */
619
+ suppressSearchEmbedBetaWarning?: boolean;
604
620
  }
605
621
  /**
606
622
  * MessagePayload: Embed event payload: message type, data and status (start/end)
@@ -1015,7 +1031,14 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1015
1031
  * Gets the current pinboard content.
1016
1032
  * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl
1017
1033
  */
1018
- getExportRequestForCurrentPinboard = "getExportRequestForCurrentPinboard"
1034
+ getExportRequestForCurrentPinboard = "getExportRequestForCurrentPinboard",
1035
+ /**
1036
+ * Fires the pin action on an embedded object
1037
+ * @param - incase of liveboard embed, takes in an object with vizId as a key
1038
+ * can be left empty for search and viz embeds
1039
+ * @version SDK: 1.15.0 | ThoughtSpot: 8.7.0.cl
1040
+ */
1041
+ Pin = "pin"
1019
1042
  }
1020
1043
  /**
1021
1044
  * The different visual modes that the data sources panel within
@@ -1209,7 +1232,11 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1209
1232
  /**
1210
1233
  * @version SDK: 1.11.0 | ThoughtSpot: 8.3.0.cl
1211
1234
  */
1212
- CreateMonitor = "createMonitor"
1235
+ CreateMonitor = "createMonitor",
1236
+ /**
1237
+ * @version SDK: 1.11.1 | ThoughtSpot: 8.3.0.cl
1238
+ */
1239
+ ReportError = "reportError"
1213
1240
  }
1214
1241
  export interface SessionInterface {
1215
1242
  sessionId: string;
@@ -1260,7 +1287,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
1260
1287
  * This parameters will be passed on the iframe
1261
1288
  * as is.
1262
1289
  */
1263
- [key: string]: string | number | boolean;
1290
+ [key: string]: string | number | boolean | undefined;
1264
1291
  }
1265
1292
  /**
1266
1293
  * The configuration object for an embedded view.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.12.0-alpha.1",
3
+ "version": "1.13.0-alpha.0",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -45,7 +45,9 @@
45
45
  "algoliasearch": "^4.10.5",
46
46
  "classnames": "^2.3.1",
47
47
  "eventemitter3": "^4.0.7",
48
- "mixpanel-browser": "^2.45.0"
48
+ "html-react-parser": "^1.4.12",
49
+ "mixpanel-browser": "^2.45.0",
50
+ "use-deep-compare-effect": "^1.8.1"
49
51
  },
50
52
  "devDependencies": {
51
53
  "@mdx-js/mdx": "^1.6.22",
package/src/auth.spec.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as authInstance from './auth';
2
2
  import * as authService from './utils/authService';
3
+ import * as checkReleaseVersionInBetaInstance from './utils';
3
4
  import { AuthType, EmbedConfig } from './types';
4
5
  import { executeAfterWait } from './test/test-utils';
5
6
 
@@ -8,7 +9,7 @@ const username = 'tsuser';
8
9
  const password = '12345678';
9
10
  const samalLoginUrl = `${thoughtSpotHost}/callosum/v1/saml/login?targetURLPath=%235e16222e-ef02-43e9-9fbd-24226bf3ce5b`;
10
11
 
11
- const embedConfig: any = {
12
+ export const embedConfig: any = {
12
13
  doTokenAuthSuccess: (token: string) => ({
13
14
  thoughtSpotHost,
14
15
  username,
@@ -242,6 +243,10 @@ describe('Unit test for auth', () => {
242
243
  });
243
244
 
244
245
  it('when user is loggedIn', async () => {
246
+ spyOn(
247
+ checkReleaseVersionInBetaInstance,
248
+ 'checkReleaseVersionInBeta',
249
+ );
245
250
  jest.spyOn(
246
251
  authService,
247
252
  'fetchSessionInfoService',
@@ -280,6 +285,10 @@ describe('Unit test for auth', () => {
280
285
  });
281
286
 
282
287
  it('when user is loggedIn & isAtSSORedirectUrl is true', async () => {
288
+ spyOn(
289
+ checkReleaseVersionInBetaInstance,
290
+ 'checkReleaseVersionInBeta',
291
+ );
283
292
  Object.defineProperty(window, 'location', {
284
293
  value: {
285
294
  href: authInstance.SSO_REDIRECTION_MARKER_GUID,
package/src/auth.ts CHANGED
@@ -16,8 +16,8 @@ export let loggedInStatus = false;
16
16
  export let samlAuthWindow: Window = null;
17
17
  // eslint-disable-next-line import/no-mutable-exports
18
18
  export let samlCompletionPromise: Promise<void> = null;
19
- // eslint-disable-next-line import/no-mutable-exports
20
- export let sessionInfo: any = null;
19
+ let sessionInfo: any = null;
20
+ let releaseVersion = '';
21
21
 
22
22
  export const SSO_REDIRECTION_MARKER_GUID =
23
23
  '5e16222e-ef02-43e9-9fbd-24226bf3ce5b';
@@ -55,12 +55,21 @@ async function isLoggedIn(thoughtSpotHost: string): Promise<boolean> {
55
55
  let response = null;
56
56
  try {
57
57
  response = await fetchSessionInfoService(authVerificationUrl);
58
+ const sessionInfoResp = await response.json();
59
+ releaseVersion = sessionInfoResp.releaseVersion;
58
60
  } catch (e) {
59
61
  return false;
60
62
  }
61
63
  return response.status === 200;
62
64
  }
63
65
 
66
+ /**
67
+ * Return releaseVersion if available
68
+ */
69
+ export function getReleaseVersion() {
70
+ return releaseVersion;
71
+ }
72
+
64
73
  /**
65
74
  * Return sessionInfo if available else make a loggedIn check to fetch the sessionInfo
66
75
  */
@@ -19,8 +19,9 @@ const defaultViewConfig = {
19
19
  },
20
20
  };
21
21
  const thoughtSpotHost = 'tshost';
22
- const defaultParams = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
23
- const defaultParamsForPinboardEmbed = `hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
22
+ const defaultParamsWithoutHiddenActions = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
23
+ const defaultParams = `${defaultParamsWithoutHiddenActions}&hideAction=[%22${Action.ReportError}%22]`;
24
+ const defaultParamsForPinboardEmbed = `hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}&hideAction=[%22${Action.ReportError}%22]`;
24
25
  const defaultParamsPost = '&isPinboardV2Enabled=false';
25
26
 
26
27
  beforeAll(() => {
@@ -155,7 +156,7 @@ describe('App embed tests', () => {
155
156
  appEmbed.render();
156
157
  await executeAfterWait(() => {
157
158
  expect(getIFrameSrc()).toBe(
158
- `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${defaultParams}&disableAction=[%22save%22,%22update%22]&disableHint=Access%20denied&hideAction=[%22download%22]${defaultParamsPost}#/home`,
159
+ `http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=false&profileAndHelpInNavBarHidden=false${defaultParamsWithoutHiddenActions}&disableAction=[%22save%22,%22update%22]&disableHint=Access%20denied&hideAction=[%22${Action.ReportError}%22,%22download%22]${defaultParamsPost}#/home`,
159
160
  );
160
161
  });
161
162
  });
@@ -20,6 +20,7 @@ beforeAll(() => {
20
20
  thoughtSpotHost,
21
21
  authType: AuthType.None,
22
22
  });
23
+ spyOn(window, 'alert');
23
24
  });
24
25
 
25
26
  describe('test view config', () => {
@@ -48,6 +49,7 @@ describe('test view config', () => {
48
49
  });
49
50
 
50
51
  test('trying to register event handler after render should throw error', async () => {
52
+ spyOn(console, 'error');
51
53
  const onErrorSpy = jest.fn();
52
54
  const searchEmbed = new SearchEmbed(getRootEl(), defaultViewConfig);
53
55
  searchEmbed
@@ -34,6 +34,7 @@ beforeAll(() => {
34
34
  thoughtSpotHost,
35
35
  authType: AuthType.None,
36
36
  });
37
+ spyOn(window, 'alert');
37
38
  });
38
39
 
39
40
  describe('test communication between host app and ThoughtSpot', () => {
@@ -1,6 +1,12 @@
1
1
  import { LiveboardEmbed, LiveboardViewConfig } from './liveboard';
2
2
  import { init } from '../index';
3
- import { Action, AuthType, EmbedEvent, RuntimeFilterOp } from '../types';
3
+ import {
4
+ Action,
5
+ AuthType,
6
+ EmbedEvent,
7
+ HostEvent,
8
+ RuntimeFilterOp,
9
+ } from '../types';
4
10
  import {
5
11
  executeAfterWait,
6
12
  getDocumentBody,
@@ -8,6 +14,7 @@ import {
8
14
  getRootEl,
9
15
  } from '../test/test-utils';
10
16
  import { version } from '../../package.json';
17
+ import * as processTriggerInstance from '../utils/processTrigger';
11
18
 
12
19
  const defaultViewConfig = {
13
20
  frameParams: {
@@ -18,7 +25,8 @@ const defaultViewConfig = {
18
25
  const liveboardId = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
19
26
  const vizId = '6e73f724-660e-11eb-ae93-0242ac130002';
20
27
  const thoughtSpotHost = 'tshost';
21
- const defaultParams = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
28
+ const defaultParamsSansHideAction = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
29
+ const defaultParams = `${defaultParamsSansHideAction}&hideAction=[%22${Action.ReportError}%22]`;
22
30
  const prefixParams = '&isLiveboardEmbed=true&isPinboardV2Enabled=false';
23
31
 
24
32
  beforeAll(() => {
@@ -60,7 +68,7 @@ describe('Liveboard/viz embed tests', () => {
60
68
  liveboardEmbed.render();
61
69
  await executeAfterWait(() => {
62
70
  expect(getIFrameSrc()).toBe(
63
- `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied${prefixParams}#/embed/viz/${liveboardId}`,
71
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParamsSansHideAction}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied&hideAction=[%22${Action.ReportError}%22]${prefixParams}#/embed/viz/${liveboardId}`,
64
72
  );
65
73
  });
66
74
  });
@@ -78,7 +86,7 @@ describe('Liveboard/viz embed tests', () => {
78
86
  liveboardEmbed.render();
79
87
  await executeAfterWait(() => {
80
88
  expect(getIFrameSrc()).toBe(
81
- `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&hideAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${liveboardId}`,
89
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParamsSansHideAction}&hideAction=[%22${Action.ReportError}%22,%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${liveboardId}`,
82
90
  );
83
91
  });
84
92
  });
@@ -209,4 +217,19 @@ describe('Liveboard/viz embed tests', () => {
209
217
  );
210
218
  });
211
219
  });
220
+ test('should process the trigger, for vizEmbed', async () => {
221
+ const mockProcessTrigger = spyOn(
222
+ processTriggerInstance,
223
+ 'processTrigger',
224
+ );
225
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
226
+ enableVizTransformations: true,
227
+ ...defaultViewConfig,
228
+ vizId: '1234',
229
+ liveboardId,
230
+ } as LiveboardViewConfig);
231
+ liveboardEmbed.render();
232
+ const result = await liveboardEmbed.trigger(HostEvent.Pin);
233
+ expect(mockProcessTrigger).toBeCalled();
234
+ });
212
235
  });
@@ -194,6 +194,19 @@ export class LiveboardEmbed extends V1Embed {
194
194
  }
195
195
  };
196
196
 
197
+ /**
198
+ * Triggers an event to the embedded app
199
+ * @param messageType The event type
200
+ * @param data The payload to send with the message
201
+ */
202
+ public trigger(messageType: HostEvent, data: any = {}): Promise<any> {
203
+ const dataWithVizId = data;
204
+ if (this.viewConfig.vizId) {
205
+ dataWithVizId.vizId = this.viewConfig.vizId;
206
+ }
207
+ return super.trigger(messageType, dataWithVizId);
208
+ }
209
+
197
210
  /**
198
211
  * Render an embedded ThoughtSpot Liveboard or visualization
199
212
  * @param renderOptions An object specifying the Liveboard ID,
@@ -18,7 +18,8 @@ const defaultViewConfig = {
18
18
  const pinboardId = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
19
19
  const vizId = '6e73f724-660e-11eb-ae93-0242ac130002';
20
20
  const thoughtSpotHost = 'tshost';
21
- const defaultParams = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
21
+ const defaultParamsWithoutHideActions = `&hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
22
+ const defaultParams = `${defaultParamsWithoutHideActions}&hideAction=[%22${Action.ReportError}%22]`;
22
23
  const prefixParams = '&isLiveboardEmbed=true&isPinboardV2Enabled=false';
23
24
 
24
25
  beforeAll(() => {
@@ -60,7 +61,7 @@ describe('Pinboard/viz embed tests', () => {
60
61
  pinboardEmbed.render();
61
62
  await executeAfterWait(() => {
62
63
  expect(getIFrameSrc()).toBe(
63
- `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied${prefixParams}#/embed/viz/${pinboardId}`,
64
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParamsWithoutHideActions}&disableAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]&disableHint=Action%20denied&hideAction=[%22${Action.ReportError}%22]${prefixParams}#/embed/viz/${pinboardId}`,
64
65
  );
65
66
  });
66
67
  });
@@ -78,7 +79,7 @@ describe('Pinboard/viz embed tests', () => {
78
79
  pinboardEmbed.render();
79
80
  await executeAfterWait(() => {
80
81
  expect(getIFrameSrc()).toBe(
81
- `http://${thoughtSpotHost}/?embedApp=true${defaultParams}&hideAction=[%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${pinboardId}`,
82
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParamsWithoutHideActions}&hideAction=[%22${Action.ReportError}%22,%22${Action.DownloadAsCsv}%22,%22${Action.DownloadAsPdf}%22,%22${Action.DownloadAsXlsx}%22]${prefixParams}#/embed/viz/${pinboardId}`,
82
83
  );
83
84
  });
84
85
  });
@@ -1,4 +1,5 @@
1
1
  import { SearchEmbed, HiddenActionItemByDefaultForSearchEmbed } from './search';
2
+ import * as authInstance from '../auth';
2
3
  import { init } from '../index';
3
4
  import { Action, AuthType } from '../types';
4
5
  import {
@@ -20,7 +21,10 @@ const answerId = 'eca215d4-0d2c-4a55-90e3-d81ef6848ae0';
20
21
  const thoughtSpotHost = 'tshost';
21
22
  const defaultParams = `hostAppUrl=local-host&viewPortHeight=768&viewPortWidth=1024&sdkVersion=${version}`;
22
23
  const hideBydefault = `&hideAction=${fixedEncodeURI(
23
- JSON.stringify(HiddenActionItemByDefaultForSearchEmbed),
24
+ JSON.stringify([
25
+ Action.ReportError,
26
+ ...HiddenActionItemByDefaultForSearchEmbed,
27
+ ]),
24
28
  )}`;
25
29
  const defaultParamsWithHiddenActions = defaultParams + hideBydefault;
26
30
  const prefixParams = '&isSearchEmbed=true';
@@ -30,11 +34,15 @@ beforeAll(() => {
30
34
  thoughtSpotHost,
31
35
  authType: AuthType.None,
32
36
  });
37
+ spyOn(window, 'alert');
33
38
  });
34
39
 
35
40
  describe('Search embed tests', () => {
36
41
  beforeEach(() => {
37
42
  document.body.innerHTML = getDocumentBody();
43
+ jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(
44
+ '7.4.0.sw',
45
+ );
38
46
  });
39
47
 
40
48
  test('should render', async () => {
@@ -197,6 +205,7 @@ describe('Search embed tests', () => {
197
205
  searchEmbed.render();
198
206
  const hideActionUrl = fixedEncodeURI(
199
207
  JSON.stringify([
208
+ Action.ReportError,
200
209
  ...hiddenActionsForSearch,
201
210
  ...HiddenActionItemByDefaultForSearchEmbed,
202
211
  ]),
@@ -220,6 +229,7 @@ describe('Search embed tests', () => {
220
229
  searchEmbed.render();
221
230
  const hideActionUrl = fixedEncodeURI(
222
231
  JSON.stringify([
232
+ Action.ReportError,
223
233
  ...hiddenActionsForSearch,
224
234
  ...HiddenActionItemByDefaultForSearchEmbed,
225
235
  ]),
@@ -8,9 +8,12 @@
8
8
  */
9
9
 
10
10
  import { DataSourceVisualMode, DOMSelector, Param, Action } from '../types';
11
- import { getQueryParamString } from '../utils';
11
+ import { getQueryParamString, checkReleaseVersionInBeta } from '../utils';
12
12
  import { ViewConfig, TsEmbed } from './ts-embed';
13
13
  import { version } from '../../package.json';
14
+ import { ERROR_MESSAGE } from '../errors';
15
+ import { getAuthPromise, getEmbedConfig } from './base';
16
+ import { getReleaseVersion } from '../auth';
14
17
 
15
18
  /**
16
19
  * Configuration for search options
@@ -51,6 +54,7 @@ export interface SearchViewConfig extends ViewConfig {
51
54
  hideResults?: boolean;
52
55
  /**
53
56
  * If set to true, the Search Assist feature is enabled.
57
+ * @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl
54
58
  */
55
59
  enableSearchAssist?: boolean;
56
60
  /**
@@ -184,6 +188,16 @@ export class SearchEmbed extends TsEmbed {
184
188
 
185
189
  const src = this.getIFrameSrc(answerId, dataSources);
186
190
  this.renderIFrame(src, this.viewConfig.frameParams);
191
+ getAuthPromise().then(() => {
192
+ if (
193
+ checkReleaseVersionInBeta(
194
+ getReleaseVersion(),
195
+ getEmbedConfig().suppressSearchEmbedBetaWarning,
196
+ )
197
+ ) {
198
+ alert(ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE);
199
+ }
200
+ });
187
201
  return this;
188
202
  }
189
203
  }
@@ -0,0 +1,110 @@
1
+ import { SearchEmbed } from './search';
2
+ import * as baseInstance from './base';
3
+ import * as authService from '../utils/authService';
4
+ import * as authInstance from '../auth';
5
+ import * as config from '../config';
6
+
7
+ import { init } from '../index';
8
+ import { AuthType } from '../types';
9
+ import { getDocumentBody, getRootEl } from '../test/test-utils';
10
+ import { mockSessionInfo } from '../auth.spec';
11
+ import { ERROR_MESSAGE } from '../errors';
12
+
13
+ const thoughtSpotHost = 'tshost';
14
+ init({
15
+ thoughtSpotHost,
16
+ authType: AuthType.Basic,
17
+ username: 'tsadmin',
18
+ password: 'admin',
19
+ });
20
+
21
+ describe('Search embed tests when authType is Basic', () => {
22
+ function setupVersion(version: string) {
23
+ jest.spyOn(window, 'addEventListener').mockImplementationOnce(
24
+ (event, handler, options) => {
25
+ handler({
26
+ data: {
27
+ type: 'xyz',
28
+ },
29
+ ports: [3000],
30
+ source: null,
31
+ });
32
+ },
33
+ );
34
+ jest.spyOn(authService, 'fetchSessionInfoService').mockImplementation(
35
+ async () => ({
36
+ json: () => ({
37
+ ...mockSessionInfo,
38
+ releaseVersion: version,
39
+ }),
40
+ status: 200,
41
+ }),
42
+ );
43
+ jest.spyOn(authInstance, 'getReleaseVersion').mockReturnValue(version);
44
+ }
45
+ beforeEach(() => {
46
+ document.body.innerHTML = getDocumentBody();
47
+ jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValue(true);
48
+ });
49
+
50
+ afterEach(() => {
51
+ jest.clearAllMocks();
52
+ });
53
+
54
+ test('when releaseVersion is bellow 8.4.0.sw', async () => {
55
+ setupVersion('8.0.0.sw');
56
+ const mockAlert = jest.spyOn(window, 'alert');
57
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
58
+ await searchEmbed.render();
59
+ expect(mockAlert).toBeCalledWith(
60
+ ERROR_MESSAGE.SEARCHEMBED_BETA_WRANING_MESSAGE,
61
+ );
62
+ });
63
+
64
+ test('when releaseVersion is above 8.4.0.sw', async () => {
65
+ setupVersion('8.4.0.sw');
66
+ const mockAlert = jest.spyOn(window, 'alert');
67
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
68
+ await searchEmbed.render();
69
+ expect(mockAlert).not.toBeCalled();
70
+ });
71
+
72
+ test('releaseVersion is above 8.4.0.sw', async () => {
73
+ setupVersion('8.8.0.sw');
74
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
75
+ () => 'http://tshost',
76
+ );
77
+ const mockAlert = jest.spyOn(window, 'alert');
78
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
79
+ await searchEmbed.render();
80
+ expect(mockAlert).not.toBeCalled();
81
+ });
82
+
83
+ test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is ts7.dec.cl', async () => {
84
+ setupVersion('ts7.dec.cl');
85
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
86
+ () => 'http://tshost',
87
+ );
88
+ jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
89
+ suppressSearchEmbedBetaWarning: true,
90
+ });
91
+ const mockAlert = jest.spyOn(window, 'alert');
92
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
93
+ await searchEmbed.render();
94
+ expect(mockAlert).not.toBeCalled();
95
+ });
96
+
97
+ test('Alert should not appear when suppressSearchEmbedBetaWarning is true and releaseVersion is 8.4.0.sw', async () => {
98
+ setupVersion('8.4.0.sw');
99
+ jest.spyOn(config, 'getThoughtSpotHost').mockImplementation(
100
+ () => 'http://tshost',
101
+ );
102
+ jest.spyOn(baseInstance, 'getEmbedConfig').mockReturnValue({
103
+ suppressSearchEmbedBetaWarning: true,
104
+ });
105
+ const mockAlert = jest.spyOn(window, 'alert');
106
+ const searchEmbed = new SearchEmbed(getRootEl(), {});
107
+ await searchEmbed.render();
108
+ expect(mockAlert).not.toBeCalled();
109
+ });
110
+ });