@thoughtspot/visual-embed-sdk 1.24.0-alpha.6 → 1.24.0-dev

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 (119) hide show
  1. package/cjs/package.json +2 -2
  2. package/cjs/src/embed/app.d.ts +1 -0
  3. package/cjs/src/embed/app.d.ts.map +1 -1
  4. package/cjs/src/embed/app.js +1 -0
  5. package/cjs/src/embed/app.js.map +1 -1
  6. package/cjs/src/embed/liveboard.d.ts +6 -1
  7. package/cjs/src/embed/liveboard.d.ts.map +1 -1
  8. package/cjs/src/embed/liveboard.js +10 -2
  9. package/cjs/src/embed/liveboard.js.map +1 -1
  10. package/cjs/src/embed/liveboard.spec.js +23 -7
  11. package/cjs/src/embed/liveboard.spec.js.map +1 -1
  12. package/cjs/src/embed/search.d.ts +5 -1
  13. package/cjs/src/embed/search.d.ts.map +1 -1
  14. package/cjs/src/embed/search.js +4 -1
  15. package/cjs/src/embed/search.js.map +1 -1
  16. package/cjs/src/embed/search.spec.js +15 -0
  17. package/cjs/src/embed/search.spec.js.map +1 -1
  18. package/cjs/src/embed/ts-embed.d.ts +19 -0
  19. package/cjs/src/embed/ts-embed.d.ts.map +1 -1
  20. package/cjs/src/embed/ts-embed.js +136 -6
  21. package/cjs/src/embed/ts-embed.js.map +1 -1
  22. package/cjs/src/embed/ts-embed.spec.js +38 -1
  23. package/cjs/src/embed/ts-embed.spec.js.map +1 -1
  24. package/cjs/src/react/all-types-export.d.ts +1 -1
  25. package/cjs/src/react/all-types-export.d.ts.map +1 -1
  26. package/cjs/src/react/all-types-export.js +2 -1
  27. package/cjs/src/react/all-types-export.js.map +1 -1
  28. package/cjs/src/react/index.d.ts +1 -0
  29. package/cjs/src/react/index.d.ts.map +1 -1
  30. package/cjs/src/react/index.js +18 -4
  31. package/cjs/src/react/index.js.map +1 -1
  32. package/cjs/src/types.d.ts +87 -7
  33. package/cjs/src/types.d.ts.map +1 -1
  34. package/cjs/src/types.js +60 -5
  35. package/cjs/src/types.js.map +1 -1
  36. package/cjs/src/utils.d.ts +9 -1
  37. package/cjs/src/utils.d.ts.map +1 -1
  38. package/cjs/src/utils.js +36 -1
  39. package/cjs/src/utils.js.map +1 -1
  40. package/cjs/src/utils.spec.js +24 -0
  41. package/cjs/src/utils.spec.js.map +1 -1
  42. package/dist/src/embed/app.d.ts +1 -0
  43. package/dist/src/embed/app.d.ts.map +1 -1
  44. package/dist/src/embed/liveboard.d.ts +6 -1
  45. package/dist/src/embed/liveboard.d.ts.map +1 -1
  46. package/dist/src/embed/search.d.ts +5 -1
  47. package/dist/src/embed/search.d.ts.map +1 -1
  48. package/dist/src/embed/ts-embed.d.ts +19 -0
  49. package/dist/src/embed/ts-embed.d.ts.map +1 -1
  50. package/dist/src/react/all-types-export.d.ts +1 -1
  51. package/dist/src/react/all-types-export.d.ts.map +1 -1
  52. package/dist/src/react/index.d.ts +1 -0
  53. package/dist/src/react/index.d.ts.map +1 -1
  54. package/dist/src/types.d.ts +87 -7
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/dist/src/utils.d.ts +9 -1
  57. package/dist/src/utils.d.ts.map +1 -1
  58. package/dist/tsembed-react.es.js +264 -21
  59. package/dist/tsembed-react.js +264 -20
  60. package/dist/tsembed.es.js +245 -16
  61. package/dist/tsembed.js +245 -16
  62. package/dist/visual-embed-sdk-react-full.d.ts +115 -7
  63. package/dist/visual-embed-sdk-react.d.ts +115 -7
  64. package/dist/visual-embed-sdk.d.ts +114 -7
  65. package/lib/package.json +2 -2
  66. package/lib/src/embed/app.d.ts +1 -0
  67. package/lib/src/embed/app.d.ts.map +1 -1
  68. package/lib/src/embed/app.js +1 -0
  69. package/lib/src/embed/app.js.map +1 -1
  70. package/lib/src/embed/liveboard.d.ts +6 -1
  71. package/lib/src/embed/liveboard.d.ts.map +1 -1
  72. package/lib/src/embed/liveboard.js +11 -3
  73. package/lib/src/embed/liveboard.js.map +1 -1
  74. package/lib/src/embed/liveboard.spec.js +23 -7
  75. package/lib/src/embed/liveboard.spec.js.map +1 -1
  76. package/lib/src/embed/search.d.ts +5 -1
  77. package/lib/src/embed/search.d.ts.map +1 -1
  78. package/lib/src/embed/search.js +5 -2
  79. package/lib/src/embed/search.js.map +1 -1
  80. package/lib/src/embed/search.spec.js +15 -0
  81. package/lib/src/embed/search.spec.js.map +1 -1
  82. package/lib/src/embed/ts-embed.d.ts +19 -0
  83. package/lib/src/embed/ts-embed.d.ts.map +1 -1
  84. package/lib/src/embed/ts-embed.js +137 -7
  85. package/lib/src/embed/ts-embed.js.map +1 -1
  86. package/lib/src/embed/ts-embed.spec.js +38 -1
  87. package/lib/src/embed/ts-embed.spec.js.map +1 -1
  88. package/lib/src/react/all-types-export.d.ts +1 -1
  89. package/lib/src/react/all-types-export.d.ts.map +1 -1
  90. package/lib/src/react/all-types-export.js +1 -1
  91. package/lib/src/react/all-types-export.js.map +1 -1
  92. package/lib/src/react/index.d.ts +1 -0
  93. package/lib/src/react/index.d.ts.map +1 -1
  94. package/lib/src/react/index.js +17 -3
  95. package/lib/src/react/index.js.map +1 -1
  96. package/lib/src/types.d.ts +87 -7
  97. package/lib/src/types.d.ts.map +1 -1
  98. package/lib/src/types.js +60 -5
  99. package/lib/src/types.js.map +1 -1
  100. package/lib/src/utils.d.ts +9 -1
  101. package/lib/src/utils.d.ts.map +1 -1
  102. package/lib/src/utils.js +32 -0
  103. package/lib/src/utils.js.map +1 -1
  104. package/lib/src/utils.spec.js +25 -1
  105. package/lib/src/utils.spec.js.map +1 -1
  106. package/lib/src/visual-embed-sdk.d.ts +116 -9
  107. package/package.json +5 -5
  108. package/src/embed/app.ts +1 -0
  109. package/src/embed/liveboard.spec.ts +29 -10
  110. package/src/embed/liveboard.ts +19 -2
  111. package/src/embed/search.spec.ts +18 -0
  112. package/src/embed/search.ts +16 -1
  113. package/src/embed/ts-embed.spec.ts +40 -1
  114. package/src/embed/ts-embed.ts +174 -14
  115. package/src/react/all-types-export.ts +1 -0
  116. package/src/react/index.tsx +25 -8
  117. package/src/types.ts +97 -16
  118. package/src/utils.spec.ts +31 -0
  119. package/src/utils.ts +43 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @jest-environment node
3
3
  */
4
- import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, getRedirectUrl, checkReleaseVersionInBeta, } from './utils';
4
+ import { getQueryParamString, getFilterQuery, getCssDimension, getEncodedQueryParamsString, appendToUrlHash, getRedirectUrl, checkReleaseVersionInBeta, getRuntimeParameters, } from './utils';
5
5
  import { RuntimeFilterOp } from './types';
6
6
  describe('unit test for utils', () => {
7
7
  test('getQueryParamString', () => {
@@ -44,6 +44,30 @@ describe('unit test for utils', () => {
44
44
  ];
45
45
  expect(getFilterQuery(filters)).toBe('col1=foo&op1=EQ&val1=42&col2=bar&op2=BW_INC&val2=1&val2=10&col3=baz&op3=CONTAINS&val3=abc');
46
46
  });
47
+ test('getParameterOverride', () => {
48
+ expect(getRuntimeParameters([])).toBe(null);
49
+ expect(getRuntimeParameters([
50
+ {
51
+ name: 'foo',
52
+ value: 'bar',
53
+ },
54
+ ])).toBe('param1=foo&paramVal1=bar');
55
+ const params = [
56
+ {
57
+ name: 'foo',
58
+ value: 42,
59
+ },
60
+ {
61
+ name: 'bar',
62
+ value: 'abc',
63
+ },
64
+ {
65
+ name: 'baz',
66
+ value: true,
67
+ },
68
+ ];
69
+ expect(getRuntimeParameters(params)).toBe('param1=foo&paramVal1=42&param2=bar&paramVal2=abc&param3=baz&paramVal3=true');
70
+ });
47
71
  test('getCssDimension', () => {
48
72
  expect(getCssDimension(100)).toBe('100px');
49
73
  expect(getCssDimension('100%')).toBe('100%');
@@ -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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"}
@@ -341,7 +341,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
341
341
  * @summary Liveboard & visualization embed
342
342
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
343
343
  */
344
- import { DOMSelector, HostEvent, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
344
+ import { RuntimeParameter, DOMSelector, HostEvent, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
345
345
  import { V1Embed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
346
346
  /**
347
347
  * The configuration for the embedded Liveboard or visualization page view.
@@ -425,6 +425,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
425
425
  * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
426
426
  */
427
427
  hideTabPanel?: boolean;
428
+ /**
429
+ * The list of parameter override to apply to a Liveboard.
430
+ */
431
+ runtimeParameters?: RuntimeParameter[];
428
432
  }
429
433
  /**
430
434
  * Embed a ThoughtSpot Liveboard or a Thoughtspot visualization. When rendered it already
@@ -463,6 +467,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/liveboard' {
463
467
  * visualization ID and the runtime filters.
464
468
  */
465
469
  render(): LiveboardEmbed;
470
+ preRender(): LiveboardEmbed;
466
471
  navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string): void;
467
472
  }
468
473
  /**
@@ -481,7 +486,7 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
481
486
  * @summary Search embed
482
487
  * @author Ayon Ghosh <ayon.ghosh@thoughtspot.com>
483
488
  */
484
- import { DOMSelector, Action, ViewConfig } from '@thoughtspot/visual-embed-sdk/types';
489
+ import { DOMSelector, Action, ViewConfig, RuntimeParameter } from '@thoughtspot/visual-embed-sdk/types';
485
490
  import { TsEmbed } from '@thoughtspot/visual-embed-sdk/embed/ts-embed';
486
491
  /**
487
492
  * Configuration for search options
@@ -578,6 +583,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/search' {
578
583
  * @version: SDK: 1.24.0
579
584
  */
580
585
  useLastSelectedSources?: boolean;
586
+ /**
587
+ * The list of parameter override to apply to a search answer.
588
+ */
589
+ runtimeParameters?: RuntimeParameter[];
581
590
  }
582
591
  export const HiddenActionItemByDefaultForSearchEmbed: Action[];
583
592
  /**
@@ -1452,6 +1461,11 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1452
1461
  * visualization, or Liveboard.
1453
1462
  */
1454
1463
  runtimeFilters?: RuntimeFilter[];
1464
+ /**
1465
+ * The list of parameter override to apply to a search answer,
1466
+ * visualization, or Liveboard.
1467
+ */
1468
+ runtimeParameters?: RuntimeParameter[];
1455
1469
  /**
1456
1470
  * The locale/language to use for the embedded view.
1457
1471
  *
@@ -1561,6 +1575,7 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1561
1575
  /**
1562
1576
  * Hide the home page modules
1563
1577
  * eg: hiddenHomepageModules = [HomepageModule.MyLibrary]
1578
+ *
1564
1579
  * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
1565
1580
  */
1566
1581
  hiddenHomepageModules?: HomepageModule[];
@@ -1588,9 +1603,14 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1588
1603
  * There are 8 home nav list items, we will send those item as list
1589
1604
  * which we want to hide for TSE.
1590
1605
  * eg: hiddenHomeLeftNavItems = [HomeLeftNavItem.Home] to hide home.
1606
+ *
1591
1607
  * @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
1592
1608
  */
1593
1609
  hiddenHomeLeftNavItems?: HomeLeftNavItem[];
1610
+ /**
1611
+ * TBD
1612
+ */
1613
+ preRenderId?: string;
1594
1614
  }
1595
1615
  /**
1596
1616
  * MessagePayload: Embed event payload: message type, data and status (start/end)
@@ -1751,6 +1771,20 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
1751
1771
  */
1752
1772
  values: (number | boolean | string)[];
1753
1773
  }
1774
+ /**
1775
+ * A filter that can be applied to ThoughtSpot answers, Liveboards, or
1776
+ * visualizations at runtime.
1777
+ */
1778
+ export interface RuntimeParameter {
1779
+ /**
1780
+ * The name of the runtime parameter to filter on (case-sensitive)
1781
+ */
1782
+ name: string;
1783
+ /**
1784
+ * Values
1785
+ */
1786
+ value: number | boolean | string;
1787
+ }
1754
1788
  /**
1755
1789
  * Event types emitted by the embedded ThoughtSpot application.
1756
1790
  *
@@ -2175,21 +2209,21 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
2175
2209
  */
2176
2210
  InsertIntoSlide = "insertInToSlide",
2177
2211
  /**
2212
+ * @hidden
2178
2213
  * Emitted when a user changes any filter on a Liveboard.
2179
- *
2180
2214
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
2181
2215
  */
2182
2216
  FilterChanged = "filterChanged",
2183
2217
  /**
2184
2218
  * Emitted when a user click on Go button in Sage Embed
2185
2219
  *
2186
- * @version SDK : 1.27.0 | Thoughtspot: 9.7.0.cl
2220
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2187
2221
  */
2188
2222
  SageEmbedQuery = "sageEmbedQuery",
2189
2223
  /**
2190
2224
  * Emitten when a user select data source in Sage Embed
2191
2225
  *
2192
- * @version SDK : 1.27.0 | Thoughtspot: 9.7.0.cl
2226
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2193
2227
  */
2194
2228
  SageWorksheetUpdated = "sageWorksheetUpdated",
2195
2229
  /**
@@ -2197,7 +2231,52 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
2197
2231
  *
2198
2232
  * @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
2199
2233
  */
2200
- UpdateConnection = "updateConnection"
2234
+ UpdateConnection = "updateConnection",
2235
+ /**
2236
+ * Emitted when name, status (private or public) or filter values of a
2237
+ * PersonalisedView is updated.
2238
+ *
2239
+ * @returns viewName: string
2240
+ * @returns viewId: string
2241
+ * @returns liveboardId: string
2242
+ * @returns isPublic: boolean
2243
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2244
+ */
2245
+ UpdatePersonalisedView = "updatePersonalisedView",
2246
+ /**
2247
+ * Emitted when a PersonalisedView is saved.
2248
+ *
2249
+ * @returns viewName: string
2250
+ * @returns viewId: string
2251
+ * @returns liveboardId: string
2252
+ * @returns isPublic: boolean
2253
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2254
+ */
2255
+ SavePersonalisedView = "savePersonalisedView",
2256
+ /**
2257
+ * Emitted when a Liveboard is reset.
2258
+ *
2259
+ * @returns viewName: string
2260
+ * @returns viewId: string
2261
+ * @returns liveboardId: string
2262
+ * @returns isPublic: boolean
2263
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2264
+ */
2265
+ ResetLiveboard = "resetLiveboard",
2266
+ /**
2267
+ * Emitted when a PersonalisedView is deleted.
2268
+ *
2269
+ * @returns views: string[]
2270
+ * @returns liveboardId: string
2271
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
2272
+ */
2273
+ DeletePersonalisedView = "deletePersonalisedView",
2274
+ /**
2275
+ * Emitten when a user creates a new worksheet
2276
+ *
2277
+ * @version SDK : 1.27.0 | Thoughtspot: 9.8.0.cl
2278
+ */
2279
+ CreateWorksheet = "createWorksheet"
2201
2280
  }
2202
2281
  /**
2203
2282
  * Event types that can be triggered by the host application
@@ -2840,16 +2919,16 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
2840
2919
  */
2841
2920
  ResetSearch = "resetSearch",
2842
2921
  /**
2922
+ * @hidden
2843
2923
  * Gets the currents visible and runtime filters applied on a Liveboard
2844
- *
2845
2924
  * @example
2846
2925
  * liveboardEmbed.trigger(HostEvent.GetFilters)
2847
2926
  * @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
2848
2927
  */
2849
2928
  GetFilters = "getFilters",
2850
2929
  /**
2930
+ * @hidden
2851
2931
  * Updates the visible filters on the Liveboard.
2852
- *
2853
2932
  * @param - filter: filter object containing column name and filter operation and values
2854
2933
  * @example
2855
2934
  *
@@ -3829,7 +3908,17 @@ declare module '@thoughtspot/visual-embed-sdk/types' {
3829
3908
  * disabledActions: [Action.ManageMonitor]
3830
3909
  * ```
3831
3910
  */
3832
- ManageMonitor = "ManageMonitor"
3911
+ ManageMonitor = "ManageMonitor",
3912
+ /**
3913
+ * Action ID for Liveboard Personalised Views dropdown
3914
+ *
3915
+ * @example
3916
+ * ```js
3917
+ * disabledActions: [Action.PersonalisedViewsDropdown]
3918
+ * ```
3919
+ * @version SDK : 1.26.0 | Thoughtspot: 9.7.0.cl
3920
+ */
3921
+ PersonalisedViewsDropdown = "personalisedViewsDropdown"
3833
3922
  }
3834
3923
  export interface SessionInterface {
3835
3924
  sessionId: string;
@@ -4380,6 +4469,20 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
4380
4469
  * @param frameOptions
4381
4470
  */
4382
4471
  protected renderIFrame(url: string): Promise<any>;
4472
+ getPreRenderIds(): {
4473
+ wrapper: string;
4474
+ shield: string;
4475
+ child: string;
4476
+ };
4477
+ protected createPreRenderWrapper(child: HTMLElement): HTMLDivElement;
4478
+ protected preRenderWrapper: HTMLElement;
4479
+ protected preRenderShield: HTMLElement;
4480
+ protected preRenderChild: HTMLElement;
4481
+ protected isPreRenderAvailable(): boolean;
4482
+ protected insertIntoDOMForPreRender(child: string | HTMLElement): void;
4483
+ hidePreRender(): void;
4484
+ showPreRender(): void;
4485
+ syncPreRenderStyle(): void;
4383
4486
  protected insertIntoDOM(child: string | Node): void;
4384
4487
  /**
4385
4488
  * Sets the height of the iframe
@@ -4476,6 +4579,10 @@ declare module '@thoughtspot/visual-embed-sdk/embed/ts-embed' {
4476
4579
  * @param args
4477
4580
  */
4478
4581
  render(): TsEmbed;
4582
+ /**
4583
+ * Creates the preRender shell
4584
+ */
4585
+ preRender(): TsEmbed;
4479
4586
  /**
4480
4587
  * Get the Post Url Params for THOUGHTSPOT from the current
4481
4588
  * host app URL.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thoughtspot/visual-embed-sdk",
3
- "version": "1.24.0-alpha.6",
3
+ "version": "1.24.0-dev",
4
4
  "description": "ThoughtSpot Embed SDK",
5
5
  "module": "lib/src/index.js",
6
6
  "main": "dist/tsembed.js",
@@ -37,10 +37,10 @@
37
37
  },
38
38
  "size-limit": [
39
39
  {
40
- "path": "dist/tsembed.js",
41
- "limit": "40 kB"
40
+ "path": "dist/tsembed.js",
41
+ "limit": "40 kB"
42
42
  }
43
- ],
43
+ ],
44
44
  "scripts": {
45
45
  "lint": "eslint 'src/**'",
46
46
  "lint:fix": "eslint 'src/**/*.*' --fix",
@@ -64,7 +64,7 @@
64
64
  "test": "npm run test-sdk && npm run test-docs",
65
65
  "posttest": "cat ./coverage/sdk/lcov.info | coveralls",
66
66
  "is-publish-allowed": "node scripts/is-publish-allowed.js",
67
- "prepublishOnly": "npm run is-publish-allowed && npm run test && npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build",
67
+ "prepublishOnly": "npm run tsc && npm run bundle-dts-file && npm run bundle-dts && npm run bundle-dts-react && npm run bundle-dts-react-full && npm run build",
68
68
  "check-size": "npm run build && size-limit",
69
69
  "publish-dev": "npm publish --tag dev",
70
70
  "publish-prod": "npm publish --tag latest"
package/src/embed/app.ts CHANGED
@@ -277,6 +277,7 @@ export class AppEmbed extends V1Embed {
277
277
  * Gets the ThoughtSpot route of the page for a particular page ID.
278
278
  *
279
279
  * @param pageId The identifier for a page in the ThoughtSpot app.
280
+ * @param modularHomeExperience
280
281
  */
281
282
  private getPageRoute(pageId: Page, modularHomeExperience = false) {
282
283
  switch (pageId) {
@@ -337,22 +337,22 @@ describe('Liveboard/viz embed tests', () => {
337
337
  done();
338
338
  });
339
339
  });
340
-
341
- test('SetActiveTab Hostevent trigger the navigate event with the correct path, not vizEmbed', async () => {
342
- const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
340
+ test('should set runtime parametere values in url params', async () => {
343
341
  const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
344
- enableVizTransformations: true,
345
342
  ...defaultViewConfig,
346
343
  liveboardId,
344
+ runtimeParameters: [
345
+ {
346
+ name: 'Integer Date Range',
347
+ value: 1,
348
+ },
349
+ ],
347
350
  } as LiveboardViewConfig);
348
351
  liveboardEmbed.render();
349
352
  await executeAfterWait(() => {
350
- const result = liveboardEmbed.trigger(HostEvent.SetActiveTab, {
351
- tabId: newActiveTabId,
352
- });
353
- expect(mockProcessTrigger).toHaveBeenCalledWith(
354
- HostEvent.Navigate,
355
- `embed/viz/${liveboardId}/tab/${newActiveTabId}`,
353
+ expectUrlMatchesWithParams(
354
+ getIFrameSrc(),
355
+ `http://${thoughtSpotHost}/?embedApp=true${defaultParams}${prefixParams}&param1=Integer%20Date%20Range&paramVal1=1#/embed/viz/${liveboardId}`,
356
356
  );
357
357
  });
358
358
  });
@@ -373,4 +373,23 @@ describe('Liveboard/viz embed tests', () => {
373
373
  expect(mockProcessTrigger).not.toBeCalled();
374
374
  });
375
375
  });
376
+
377
+ test('SetActiveTab Hostevent trigger the navigate event with the correct path, not vizEmbed', async () => {
378
+ const mockProcessTrigger = jest.spyOn(tsEmbed.TsEmbed.prototype, 'trigger');
379
+ const liveboardEmbed = new LiveboardEmbed(getRootEl(), {
380
+ enableVizTransformations: true,
381
+ ...defaultViewConfig,
382
+ liveboardId,
383
+ } as LiveboardViewConfig);
384
+ liveboardEmbed.render();
385
+ await executeAfterWait(() => {
386
+ const result = liveboardEmbed.trigger(HostEvent.SetActiveTab, {
387
+ tabId: newActiveTabId,
388
+ });
389
+ expect(mockProcessTrigger).toHaveBeenCalledWith(
390
+ HostEvent.Navigate,
391
+ `embed/viz/${liveboardId}/tab/${newActiveTabId}`,
392
+ );
393
+ });
394
+ });
376
395
  });
@@ -15,11 +15,12 @@ import {
15
15
  MessagePayload,
16
16
  Param,
17
17
  RuntimeFilter,
18
+ RuntimeParameter,
18
19
  DOMSelector,
19
20
  HostEvent,
20
21
  ViewConfig,
21
22
  } from '../types';
22
- import { getQueryParamString } from '../utils';
23
+ import { getQueryParamString, getRuntimeParameters } from '../utils';
23
24
  import { getAuthPromise } from './base';
24
25
  import { V1Embed } from './ts-embed';
25
26
 
@@ -105,6 +106,10 @@ export interface LiveboardViewConfig extends ViewConfig {
105
106
  * @version SDK: 1.25.0 | Thoughtspot: 9.6.0.cl
106
107
  */
107
108
  hideTabPanel?: boolean;
109
+ /**
110
+ * The list of parameter override to apply to a Liveboard.
111
+ */
112
+ runtimeParameters?: RuntimeParameter[];
108
113
  }
109
114
 
110
115
  /**
@@ -154,6 +159,7 @@ export class LiveboardEmbed extends V1Embed {
154
159
  vizId,
155
160
  hideTabPanel,
156
161
  activeTabId,
162
+ runtimeParameters,
157
163
  } = this.viewConfig;
158
164
 
159
165
  const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
@@ -184,7 +190,10 @@ export class LiveboardEmbed extends V1Embed {
184
190
  if (hideTabPanel) {
185
191
  params[Param.HideTabPanel] = hideTabPanel;
186
192
  }
187
- const queryParams = getQueryParamString(params, true);
193
+ let queryParams = getQueryParamString(params, true);
194
+
195
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
196
+ if (parameterQuery) queryParams += `&${parameterQuery}`;
188
197
 
189
198
  return queryParams;
190
199
  }
@@ -282,6 +291,14 @@ export class LiveboardEmbed extends V1Embed {
282
291
  return this;
283
292
  }
284
293
 
294
+ public preRender(): LiveboardEmbed {
295
+ super.preRender();
296
+
297
+ this.render();
298
+
299
+ return this;
300
+ }
301
+
285
302
  public navigateToLiveboard(liveboardId: string, vizId?: string, activeTabId?: string) {
286
303
  const path = this.getIframeSuffixSrc(liveboardId, vizId, activeTabId);
287
304
  this.viewConfig.liveboardId = liveboardId;
@@ -393,4 +393,22 @@ describe('Search embed tests', () => {
393
393
  );
394
394
  });
395
395
  });
396
+ test('should set runtime parametere values in url params', async () => {
397
+ const searchEmbed = new SearchEmbed(getRootEl(), {
398
+ ...defaultViewConfig,
399
+ runtimeParameters: [
400
+ {
401
+ name: 'Integer Date Range',
402
+ value: 1,
403
+ },
404
+ ],
405
+ });
406
+ searchEmbed.render();
407
+ await executeAfterWait(() => {
408
+ expectUrlMatchesWithParams(
409
+ getIFrameSrc(),
410
+ `http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&useLastSelectedSources=false${prefixParams}&param1=Integer%20Date%20Range&paramVal1=1#/embed/saved-answer/${answerId}`,
411
+ );
412
+ });
413
+ });
396
414
  });
@@ -14,8 +14,14 @@ import {
14
14
  Action,
15
15
  ViewConfig,
16
16
  RuntimeFilter,
17
+ RuntimeParameter,
17
18
  } from '../types';
18
- import { getQueryParamString, checkReleaseVersionInBeta, getFilterQuery } from '../utils';
19
+ import {
20
+ getQueryParamString,
21
+ checkReleaseVersionInBeta,
22
+ getFilterQuery,
23
+ getRuntimeParameters,
24
+ } from '../utils';
19
25
  import { TsEmbed } from './ts-embed';
20
26
  import { version } from '../../package.json';
21
27
  import { ERROR_MESSAGE } from '../errors';
@@ -118,6 +124,10 @@ export interface SearchViewConfig extends ViewConfig {
118
124
  * @version: SDK: 1.24.0
119
125
  */
120
126
  useLastSelectedSources?: boolean;
127
+ /**
128
+ * The list of parameter override to apply to a search answer.
129
+ */
130
+ runtimeParameters?: RuntimeParameter[];
121
131
  }
122
132
 
123
133
  export const HiddenActionItemByDefaultForSearchEmbed = [
@@ -172,6 +182,7 @@ export class SearchEmbed extends TsEmbed {
172
182
  excludeRuntimeFiltersfromURL,
173
183
  dataPanelV2 = false,
174
184
  useLastSelectedSources = false,
185
+ runtimeParameters,
175
186
  } = this.viewConfig;
176
187
  const queryParams = this.getBaseQueryParams();
177
188
 
@@ -219,6 +230,10 @@ export class SearchEmbed extends TsEmbed {
219
230
  if (queryParamsString) {
220
231
  query = `?${queryParamsString}`;
221
232
  }
233
+
234
+ const parameterQuery = getRuntimeParameters(runtimeParameters || []);
235
+ if (parameterQuery) query += `&${parameterQuery}`;
236
+
222
237
  const filterQuery = getFilterQuery(runtimeFilters || []);
223
238
  if (filterQuery && !excludeRuntimeFiltersfromURL) {
224
239
  query += `&${filterQuery}`;
@@ -185,7 +185,7 @@ describe('Unit test case for ts embed', () => {
185
185
  });
186
186
  });
187
187
 
188
- test('Runtime filters from view Config should be part of app_init payload', async () => {
188
+ test('Runtime filters from view Config should be part of app_init payload when excludeRuntimeFiltersfromURL is true', async () => {
189
189
  const mockEmbedEventPayload = {
190
190
  type: EmbedEvent.APP_INIT,
191
191
  data: {},
@@ -200,6 +200,7 @@ describe('Unit test case for ts embed', () => {
200
200
 
201
201
  const searchEmbed = new SearchEmbed(getRootEl(), {
202
202
  ...defaultViewConfig,
203
+ excludeRuntimeFiltersfromURL: true,
203
204
  runtimeFilters: mockRuntimeFilters,
204
205
  });
205
206
  searchEmbed.render();
@@ -222,6 +223,44 @@ describe('Unit test case for ts embed', () => {
222
223
  });
223
224
  });
224
225
 
226
+ test('Runtime filters from view Config should not be part of app_init payload when excludeRuntimeFiltersfromURL is false', async () => {
227
+ const mockEmbedEventPayload = {
228
+ type: EmbedEvent.APP_INIT,
229
+ data: {},
230
+ };
231
+ const mockRuntimeFilters: RuntimeFilter[] = [
232
+ {
233
+ columnName: 'color',
234
+ operator: RuntimeFilterOp.EQ,
235
+ values: ['blue'],
236
+ },
237
+ ];
238
+
239
+ const searchEmbed = new SearchEmbed(getRootEl(), {
240
+ ...defaultViewConfig,
241
+ excludeRuntimeFiltersfromURL: false,
242
+ runtimeFilters: mockRuntimeFilters,
243
+ });
244
+ searchEmbed.render();
245
+ const mockPort: any = {
246
+ postMessage: jest.fn(),
247
+ };
248
+ await executeAfterWait(() => {
249
+ const iframe = getIFrameEl();
250
+ postMessageToParent(iframe.contentWindow, mockEmbedEventPayload, mockPort);
251
+ });
252
+ expect(mockPort.postMessage).toHaveBeenCalledWith({
253
+ type: EmbedEvent.APP_INIT,
254
+ data: {
255
+ customisations,
256
+ authToken: '',
257
+ runtimeFilterParams: null,
258
+ hiddenHomeLeftNavItems: [],
259
+ hiddenHomepageModules: [],
260
+ },
261
+ });
262
+ });
263
+
225
264
  test('homeLeftNav from view Config should be part of app_init payload', async () => {
226
265
  const mockEmbedEventPayload = {
227
266
  type: EmbedEvent.APP_INIT,