@thoughtspot/visual-embed-sdk 1.24.0-sage.3 → 1.24.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/README.md +1 -1
- package/cjs/package.json +10 -3
- package/cjs/src/auth.d.ts.map +1 -1
- package/cjs/src/auth.js +3 -0
- package/cjs/src/auth.js.map +1 -1
- package/cjs/src/css-variables.d.ts +38 -0
- package/cjs/src/css-variables.d.ts.map +1 -1
- package/cjs/src/embed/app.d.ts +33 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +12 -8
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +46 -0
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/base.d.ts +6 -1
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +8 -3
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +6 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +6 -2
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +23 -7
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +1 -0
- package/cjs/src/embed/sage.d.ts.map +1 -1
- package/cjs/src/embed/sage.js +1 -0
- package/cjs/src/embed/sage.js.map +1 -1
- package/cjs/src/embed/search-bar.d.ts +7 -0
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +6 -2
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +16 -2
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +9 -2
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/search.spec.js +49 -0
- package/cjs/src/embed/search.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +4 -1
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +31 -8
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +186 -3
- package/cjs/src/embed/ts-embed.spec.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 +5 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts +1 -0
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +12 -3
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/mixpanel-service.spec.js +13 -3
- package/cjs/src/mixpanel-service.spec.js.map +1 -1
- package/cjs/src/react/index.d.ts +15 -15
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +7 -3
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +12 -0
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +216 -21
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +133 -13
- 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/graphql/answerService/answer-queries.d.ts +5 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.js +80 -0
- package/cjs/src/utils/graphql/answerService/answer-queries.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/cjs/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.js +182 -0
- package/cjs/src/utils/graphql/answerService/answerService.js.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js +201 -0
- package/cjs/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
- 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/graphql-request.d.ts +15 -0
- package/cjs/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/cjs/src/utils/graphql/graphql-request.js +40 -0
- package/cjs/src/utils/graphql/graphql-request.js.map +1 -0
- package/cjs/src/utils/graphql/sourceService.d.ts +8 -0
- package/cjs/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/cjs/src/utils/graphql/sourceService.js +69 -0
- package/cjs/src/utils/graphql/sourceService.js.map +1 -0
- package/cjs/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/cjs/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/cjs/src/utils/graphql/sourceService.spec.js +12 -0
- package/cjs/src/utils/graphql/sourceService.spec.js.map +1 -0
- package/cjs/src/utils/processData.d.ts.map +1 -1
- package/cjs/src/utils/processData.js +7 -11
- package/cjs/src/utils/processData.js.map +1 -1
- package/cjs/src/utils/processData.spec.js +13 -17
- package/cjs/src/utils/processData.spec.js.map +1 -1
- package/cjs/src/utils.d.ts +13 -1
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +45 -1
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +24 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/src/auth.d.ts.map +1 -1
- package/dist/src/css-variables.d.ts +38 -0
- package/dist/src/css-variables.d.ts.map +1 -1
- package/dist/src/embed/app.d.ts +33 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +6 -1
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +6 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +1 -0
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +7 -0
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +16 -2
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +4 -1
- package/dist/src/embed/ts-embed.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/mixpanel-service.d.ts +1 -0
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +15 -15
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +216 -21
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
- package/dist/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/dist/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/dist/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/dist/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/dist/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/dist/src/utils/graphql/graphql-request.d.ts +15 -0
- package/dist/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/dist/src/utils/graphql/sourceService.d.ts +8 -0
- package/dist/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/dist/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/dist/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/dist/src/utils/processData.d.ts.map +1 -1
- package/dist/src/utils.d.ts +13 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +603 -96
- package/dist/tsembed-react.js +596 -95
- package/dist/tsembed.es.js +655 -100
- package/dist/tsembed.js +649 -99
- package/dist/visual-embed-sdk-react-full.d.ts +615 -260
- package/dist/visual-embed-sdk-react.d.ts +617 -262
- package/dist/visual-embed-sdk.d.ts +380 -26
- package/lib/package.json +10 -3
- package/lib/src/.index.d.ts.swp +0 -0
- package/lib/src/auth.d.ts.map +1 -1
- package/lib/src/auth.js +3 -0
- package/lib/src/auth.js.map +1 -1
- package/lib/src/css-variables.d.ts +38 -0
- package/lib/src/css-variables.d.ts.map +1 -1
- package/lib/src/embed/app.d.ts +33 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +12 -8
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +46 -0
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/base.d.ts +6 -1
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +8 -3
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +6 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +7 -3
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +23 -7
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/sage.d.ts +1 -0
- package/lib/src/embed/sage.d.ts.map +1 -1
- package/lib/src/embed/sage.js +1 -0
- package/lib/src/embed/sage.js.map +1 -1
- package/lib/src/embed/search-bar.d.ts +7 -0
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +7 -3
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +16 -2
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +10 -3
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/search.spec.js +49 -0
- package/lib/src/embed/search.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +4 -1
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +32 -9
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +187 -4
- package/lib/src/embed/ts-embed.spec.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 +4 -3
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts +1 -0
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +12 -3
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js +13 -3
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/react/index.d.ts +15 -15
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +5 -3
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +13 -1
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +216 -21
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +132 -12
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/answerService/answerService.d.ts +34 -0
- package/lib/src/utils/answerService/answerService.d.ts.map +1 -0
- package/lib/src/utils/answerService/answerService.js +137 -0
- package/lib/src/utils/answerService/answerService.js.map +1 -0
- package/lib/src/utils/answerService/answerService.spec.d.ts +1 -0
- package/lib/src/utils/answerService/answerService.spec.d.ts.map +1 -0
- package/lib/src/utils/answerService/answerService.spec.js +1 -0
- package/lib/src/utils/answerService/answerService.spec.js.map +1 -0
- package/lib/src/utils/answerService/graphql-queries.d.ts +6 -0
- package/lib/src/utils/answerService/graphql-queries.d.ts.map +1 -0
- package/lib/src/utils/answerService/graphql-queries.js +120 -0
- package/lib/src/utils/answerService/graphql-queries.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts +5 -0
- package/lib/src/utils/graphql/answerService/answer-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js +77 -0
- package/lib/src/utils/graphql/answerService/answer-queries.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.d.ts +61 -0
- package/lib/src/utils/graphql/answerService/answerService.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.js +177 -0
- package/lib/src/utils/graphql/answerService/answerService.js.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.d.ts +2 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.js +199 -0
- package/lib/src/utils/graphql/answerService/answerService.spec.js.map +1 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.d.ts +5 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.d.ts.map +1 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.js +77 -0
- package/lib/src/utils/graphql/answerService/graphql-queries.js.map +1 -0
- package/lib/src/utils/graphql/graphql-request.d.ts +15 -0
- package/lib/src/utils/graphql/graphql-request.d.ts.map +1 -0
- package/lib/src/utils/graphql/graphql-request.js +36 -0
- package/lib/src/utils/graphql/graphql-request.js.map +1 -0
- package/lib/src/utils/graphql/sourceService.d.ts +8 -0
- package/lib/src/utils/graphql/sourceService.d.ts.map +1 -0
- package/lib/src/utils/graphql/sourceService.js +65 -0
- package/lib/src/utils/graphql/sourceService.js.map +1 -0
- package/lib/src/utils/graphql/sourceService.spec.d.ts +2 -0
- package/lib/src/utils/graphql/sourceService.spec.d.ts.map +1 -0
- package/lib/src/utils/graphql/sourceService.spec.js +10 -0
- package/lib/src/utils/graphql/sourceService.spec.js.map +1 -0
- package/lib/src/utils/processData.d.ts.map +1 -1
- package/lib/src/utils/processData.js +8 -12
- package/lib/src/utils/processData.js.map +1 -1
- package/lib/src/utils/processData.spec.js +14 -18
- package/lib/src/utils/processData.spec.js.map +1 -1
- package/lib/src/utils.d.ts +13 -1
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +41 -0
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +25 -1
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +389 -30
- package/package.json +10 -3
- package/src/auth.ts +6 -3
- package/src/css-variables.ts +47 -0
- package/src/embed/app.spec.ts +63 -0
- package/src/embed/app.ts +52 -15
- package/src/embed/base.ts +11 -6
- package/src/embed/liveboard.spec.ts +29 -10
- package/src/embed/liveboard.ts +13 -2
- package/src/embed/sage.ts +2 -0
- package/src/embed/search-bar.tsx +21 -6
- package/src/embed/search.spec.ts +61 -0
- package/src/embed/search.ts +36 -3
- package/src/embed/ts-embed.spec.ts +211 -8
- package/src/embed/ts-embed.ts +34 -9
- package/src/index.ts +9 -0
- package/src/mixpanel-service.spec.ts +13 -3
- package/src/mixpanel-service.ts +11 -3
- package/src/react/index.spec.tsx +33 -2
- package/src/react/index.tsx +37 -26
- package/src/types.ts +305 -103
- package/src/utils/graphql/answerService/answer-queries.ts +80 -0
- package/src/utils/graphql/answerService/answerService.spec.ts +231 -0
- package/src/utils/graphql/answerService/answerService.ts +234 -0
- package/src/utils/graphql/graphql-request.ts +45 -0
- package/src/utils/graphql/sourceService.spec.ts +10 -0
- package/src/utils/graphql/sourceService.ts +71 -0
- package/src/utils/processData.spec.ts +15 -25
- package/src/utils/processData.ts +13 -15
- package/src/utils.spec.ts +31 -0
- package/src/utils.ts +47 -0
- package/src/utils/answerService.spec.ts +0 -41
- package/src/utils/answerService.ts +0 -63
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thoughtspot/visual-embed-sdk",
|
|
3
|
-
"version": "1.24.
|
|
3
|
+
"version": "1.24.1",
|
|
4
4
|
"description": "ThoughtSpot Embed SDK",
|
|
5
5
|
"module": "lib/src/index.js",
|
|
6
6
|
"main": "dist/tsembed.js",
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
]
|
|
36
36
|
}
|
|
37
37
|
},
|
|
38
|
+
"size-limit": [
|
|
39
|
+
{
|
|
40
|
+
"path": "dist/tsembed.js",
|
|
41
|
+
"limit": "40 kB"
|
|
42
|
+
}
|
|
43
|
+
],
|
|
38
44
|
"scripts": {
|
|
39
45
|
"lint": "eslint 'src/**'",
|
|
40
46
|
"lint:fix": "eslint 'src/**/*.*' --fix",
|
|
@@ -59,6 +65,7 @@
|
|
|
59
65
|
"posttest": "cat ./coverage/sdk/lcov.info | coveralls",
|
|
60
66
|
"is-publish-allowed": "node scripts/is-publish-allowed.js",
|
|
61
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",
|
|
68
|
+
"check-size": "npm run build && size-limit",
|
|
62
69
|
"publish-dev": "npm publish --tag dev",
|
|
63
70
|
"publish-prod": "npm publish --tag latest"
|
|
64
71
|
},
|
|
@@ -89,6 +96,7 @@
|
|
|
89
96
|
"@rollup/plugin-json": "^4.1.0",
|
|
90
97
|
"@rollup/plugin-node-resolve": "^11.2.1",
|
|
91
98
|
"@rollup/plugin-replace": "^5.0.2",
|
|
99
|
+
"@size-limit/preset-big-lib": "^8.2.6",
|
|
92
100
|
"@testing-library/dom": "^7.31.0",
|
|
93
101
|
"@testing-library/jest-dom": "^5.14.1",
|
|
94
102
|
"@testing-library/react": "^11.2.7",
|
|
@@ -131,11 +139,10 @@
|
|
|
131
139
|
"identity-obj-proxy": "^3.0.0",
|
|
132
140
|
"istanbul-merge": "^1.1.1",
|
|
133
141
|
"jest": "^26.6.3",
|
|
134
|
-
"jest-
|
|
142
|
+
"jest-fetch-mock": "^3.0.3",
|
|
135
143
|
"jsdom": "^17.0.0",
|
|
136
144
|
"node-sass": "^8.0.0",
|
|
137
145
|
"prettier": "2.1.2",
|
|
138
|
-
"puppeteer": "^7.0.1",
|
|
139
146
|
"react": "^16.14.0",
|
|
140
147
|
"react-dom": "^16.14.0",
|
|
141
148
|
"react-resizable": "^1.11.0",
|
package/src/auth.ts
CHANGED
|
@@ -22,7 +22,7 @@ export let samlAuthWindow: Window = null;
|
|
|
22
22
|
export let samlCompletionPromise: Promise<void> = null;
|
|
23
23
|
let sessionInfo: sessionInfoInterface = null;
|
|
24
24
|
let sessionInfoResolver: (value: sessionInfoInterface) => void = null;
|
|
25
|
-
const sessionInfoPromise = new Promise((resolve:(value: sessionInfoInterface) => void) => {
|
|
25
|
+
const sessionInfoPromise = new Promise((resolve: (value: sessionInfoInterface) => void) => {
|
|
26
26
|
sessionInfoResolver = resolve;
|
|
27
27
|
});
|
|
28
28
|
let releaseVersion = '';
|
|
@@ -44,7 +44,7 @@ interface sessionInfoInterface {
|
|
|
44
44
|
userGUID: any;
|
|
45
45
|
isPublicUser: any;
|
|
46
46
|
mixpanelToken: any;
|
|
47
|
-
[key:string]:any;
|
|
47
|
+
[key: string]: any;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
/**
|
|
@@ -213,7 +213,7 @@ export const initSession = (sessionDetails: sessionInfoInterface) => {
|
|
|
213
213
|
}
|
|
214
214
|
};
|
|
215
215
|
|
|
216
|
-
export const getSessionDetails = (sessionInfoResp: any):sessionInfoInterface => {
|
|
216
|
+
export const getSessionDetails = (sessionInfoResp: any): sessionInfoInterface => {
|
|
217
217
|
const devMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.devSdkKey;
|
|
218
218
|
const prodMixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.prodSdkKey;
|
|
219
219
|
const mixpanelToken = sessionInfoResp.configInfo.mixpanelConfig.production
|
|
@@ -223,6 +223,9 @@ export const getSessionDetails = (sessionInfoResp: any):sessionInfoInterface =>
|
|
|
223
223
|
userGUID: sessionInfoResp.userGUID,
|
|
224
224
|
mixpanelToken,
|
|
225
225
|
isPublicUser: sessionInfoResp.configInfo.isPublicUser,
|
|
226
|
+
releaseVersion: sessionInfoResp.releaseVersion,
|
|
227
|
+
clusterId: sessionInfoResp.configInfo.selfClusterId,
|
|
228
|
+
clusterName: sessionInfoResp.configInfo.selfClusterName,
|
|
226
229
|
...sessionInfoResp,
|
|
227
230
|
};
|
|
228
231
|
};
|
package/src/css-variables.ts
CHANGED
|
@@ -23,6 +23,13 @@ export interface CustomCssVariables {
|
|
|
23
23
|
*/
|
|
24
24
|
'--ts-var-root-text-transform'?: string;
|
|
25
25
|
|
|
26
|
+
/**
|
|
27
|
+
* application color, it replaces #2770EF which is rd-color(blue,base) and
|
|
28
|
+
* its similar colors like rd-color(blue,60), rd-color(accent, base) and
|
|
29
|
+
* rd-color(text, accent) in the app.
|
|
30
|
+
*/
|
|
31
|
+
'--ts-var-application-color'?: string;
|
|
32
|
+
|
|
26
33
|
/**
|
|
27
34
|
* Background color of the top navigation panel.
|
|
28
35
|
*/
|
|
@@ -345,6 +352,11 @@ export interface CustomCssVariables {
|
|
|
345
352
|
*/
|
|
346
353
|
'--ts-var-menu--hover-background'?: string;
|
|
347
354
|
|
|
355
|
+
/**
|
|
356
|
+
* Text color for selected menu items.
|
|
357
|
+
*/
|
|
358
|
+
'--ts-var-menu-selected-text-color'?: string;
|
|
359
|
+
|
|
348
360
|
/**
|
|
349
361
|
* Background color of the dialogs.
|
|
350
362
|
*/
|
|
@@ -369,4 +381,39 @@ export interface CustomCssVariables {
|
|
|
369
381
|
* Background color of the footer area on dialogs.
|
|
370
382
|
*/
|
|
371
383
|
'--ts-var-dialog-footer-background'?: string;
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Background for selected state in list
|
|
387
|
+
*/
|
|
388
|
+
'--ts-var-list-selected-background'?: string;
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Background for hover state in list
|
|
392
|
+
*/
|
|
393
|
+
'--ts-var-list-hover-background'?: string;
|
|
394
|
+
|
|
395
|
+
/**
|
|
396
|
+
* Background for hover state in segment control.
|
|
397
|
+
*/
|
|
398
|
+
'--ts-var-segment-control-hover-background'?: string;
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Text color for slected item in modular home's watchlist.
|
|
402
|
+
*/
|
|
403
|
+
'--ts-var-home-watchlist-selected-text-color'?: string;
|
|
404
|
+
|
|
405
|
+
/**
|
|
406
|
+
* Text color for favorite carousel find your favorites card in modular home.
|
|
407
|
+
*/
|
|
408
|
+
'--ts-var-home-favorite-suggestion-card-text-color'?: string;
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Icon color for favorite carousel find your favorites card in modular home.
|
|
412
|
+
*/
|
|
413
|
+
'--ts-var-home-favorite-suggestion-card-icon-color'?: string;
|
|
414
|
+
|
|
415
|
+
/**
|
|
416
|
+
* Background for favorite carousel find your favorites card in modular home.
|
|
417
|
+
*/
|
|
418
|
+
'--ts-var-home-favorite-suggestion-card-background'?: string;
|
|
372
419
|
}
|
package/src/embed/app.spec.ts
CHANGED
|
@@ -144,6 +144,39 @@ describe('App embed tests', () => {
|
|
|
144
144
|
});
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
|
+
|
|
148
|
+
const pageRouteMapForModularHome = {
|
|
149
|
+
[Page.Search]: 'answer',
|
|
150
|
+
[Page.Answers]: 'home/answers',
|
|
151
|
+
[Page.Pinboards]: 'home/liveboards',
|
|
152
|
+
[Page.Liveboards]: 'home/liveboards',
|
|
153
|
+
[Page.Data]: 'data/tables',
|
|
154
|
+
[Page.Home]: 'home',
|
|
155
|
+
[Page.SpotIQ]: 'home/spotiq-analysis',
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const pageIdsForModularHomes = Object.keys(pageRouteMapForModularHome);
|
|
159
|
+
for (let i = 0; i < pageIdsForModularHomes.length; i++) {
|
|
160
|
+
const pageIdsForModularHome = pageIdsForModularHomes[i];
|
|
161
|
+
|
|
162
|
+
test(`${pageIdsForModularHome}`, async () => {
|
|
163
|
+
const route = pageRouteMap[pageIdsForModularHome];
|
|
164
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
165
|
+
...defaultViewConfig,
|
|
166
|
+
modularHomeExperience: true,
|
|
167
|
+
pageId: pageIdsForModularHome as Page,
|
|
168
|
+
} as AppViewConfig);
|
|
169
|
+
appEmbed.render();
|
|
170
|
+
|
|
171
|
+
await executeAfterWait(() => {
|
|
172
|
+
expectUrlMatchesWithParams(
|
|
173
|
+
getIFrameSrc(),
|
|
174
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false${defaultParams}${defaultParamsPost}#/${route}`,
|
|
175
|
+
);
|
|
176
|
+
cleanUp();
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
}
|
|
147
180
|
});
|
|
148
181
|
|
|
149
182
|
test('should navigate to a path', async () => {
|
|
@@ -269,6 +302,36 @@ describe('App embed tests', () => {
|
|
|
269
302
|
});
|
|
270
303
|
});
|
|
271
304
|
|
|
305
|
+
test('Should add modularHomeExperience flag to the iframe src', async () => {
|
|
306
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
307
|
+
...defaultViewConfig,
|
|
308
|
+
modularHomeExperience: true,
|
|
309
|
+
} as AppViewConfig);
|
|
310
|
+
|
|
311
|
+
appEmbed.render();
|
|
312
|
+
await executeAfterWait(() => {
|
|
313
|
+
expectUrlMatchesWithParams(
|
|
314
|
+
getIFrameSrc(),
|
|
315
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=true${defaultParams}${defaultParamsPost}#/home`,
|
|
316
|
+
);
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
|
|
320
|
+
test('Should add hideHomepageLeftNav flag to the iframe src', async () => {
|
|
321
|
+
const appEmbed = new AppEmbed(getRootEl(), {
|
|
322
|
+
...defaultViewConfig,
|
|
323
|
+
hideHomepageLeftNav: false,
|
|
324
|
+
} as AppViewConfig);
|
|
325
|
+
|
|
326
|
+
appEmbed.render();
|
|
327
|
+
await executeAfterWait(() => {
|
|
328
|
+
expectUrlMatchesWithParams(
|
|
329
|
+
getIFrameSrc(),
|
|
330
|
+
`http://${thoughtSpotHost}/?embedApp=true&primaryNavHidden=true&profileAndHelpInNavBarHidden=false&modularHomeExperience=false&hideHomepageLeftNav=false${defaultParams}${defaultParamsPost}#/home`,
|
|
331
|
+
);
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
|
|
272
335
|
test('should register event handlers to adjust iframe height', async () => {
|
|
273
336
|
const onSpy = jest.spyOn(AppEmbed.prototype, 'on')
|
|
274
337
|
.mockImplementation((event, callback) => {
|
package/src/embed/app.ts
CHANGED
|
@@ -59,8 +59,19 @@ export interface AppViewConfig extends ViewConfig {
|
|
|
59
59
|
/**
|
|
60
60
|
* If true, the main navigation bar within the ThoughtSpot app
|
|
61
61
|
* is displayed. By default, the navigation bar is hidden.
|
|
62
|
+
* This flag also control the homepage left nav-bar.
|
|
62
63
|
*/
|
|
63
64
|
showPrimaryNavbar?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Flag to control Homepage Left Nav Bar
|
|
67
|
+
* If showPrimaryNavbar is true, ie navigation bar(Global nav-bar) and Homepage left
|
|
68
|
+
* nav-bar is visible, this flag will only hide the homepage left nav.
|
|
69
|
+
* Precedence of showPrimaryNavbar flag > hideHomepageLeftNav flag.
|
|
70
|
+
*
|
|
71
|
+
* @default false
|
|
72
|
+
* @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
|
|
73
|
+
*/
|
|
74
|
+
hideHomepageLeftNav?: boolean;
|
|
64
75
|
/**
|
|
65
76
|
* If true, help and profile buttons will hide on NavBar. By default,
|
|
66
77
|
* they are shown.
|
|
@@ -79,12 +90,24 @@ export interface AppViewConfig extends ViewConfig {
|
|
|
79
90
|
/**
|
|
80
91
|
* A URL path within the app that is to be embedded.
|
|
81
92
|
* If both path and pageId attributes are defined, the path definition
|
|
82
|
-
* takes precedence.
|
|
93
|
+
* takes precedence. This is the path post the `#/` in the URL of the standalone
|
|
94
|
+
* ThoughtSpot app. Use this to open the embedded view to a specific path.
|
|
95
|
+
*
|
|
96
|
+
* For eg, if you want the component to open to a specific liveboard
|
|
97
|
+
* you could set the path to `pinboard/<liveboardId>/tab/<tabId>`.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```
|
|
101
|
+
* <AppEmbed path="pinboard/1234/tab/7464" />
|
|
102
|
+
* ```
|
|
83
103
|
*/
|
|
84
104
|
path?: string;
|
|
85
105
|
/**
|
|
86
106
|
* The application page to set as the start page
|
|
87
107
|
* in the embedded view.
|
|
108
|
+
*
|
|
109
|
+
* Use this to open to particular page in the app. To open to a specific
|
|
110
|
+
* path within the app, use the `path` attribute which is more flexible.
|
|
88
111
|
*/
|
|
89
112
|
pageId?: Page;
|
|
90
113
|
/**
|
|
@@ -111,13 +134,13 @@ export interface AppViewConfig extends ViewConfig {
|
|
|
111
134
|
* @version SDK: 1.13.0 | ThoughtSpot: 8.5.0.cl, 8.8.1-sw
|
|
112
135
|
*/
|
|
113
136
|
enableSearchAssist?: boolean;
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
fullHeight?:boolean;
|
|
137
|
+
/**
|
|
138
|
+
* If set to true, the embedded object container dynamically resizes
|
|
139
|
+
* according to the height of the pages which support fullHeight mode.
|
|
140
|
+
*
|
|
141
|
+
* @version SDK: 1.21.0 | ThoughtSpot: 9.4.0.cl, 9.4.0-sw
|
|
142
|
+
*/
|
|
143
|
+
fullHeight?: boolean;
|
|
121
144
|
/**
|
|
122
145
|
* Flag to control Data panel experience
|
|
123
146
|
*
|
|
@@ -126,6 +149,13 @@ export interface AppViewConfig extends ViewConfig {
|
|
|
126
149
|
* @hidden
|
|
127
150
|
*/
|
|
128
151
|
dataPanelV2?: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Flag to control new Modular Home experience
|
|
154
|
+
*
|
|
155
|
+
* @default false
|
|
156
|
+
* @version SDK: 1.27.0 | Thoughtspot: 9.8.0.cl
|
|
157
|
+
*/
|
|
158
|
+
modularHomeExperience?: boolean;
|
|
129
159
|
}
|
|
130
160
|
|
|
131
161
|
/**
|
|
@@ -138,6 +168,8 @@ export class AppEmbed extends V1Embed {
|
|
|
138
168
|
|
|
139
169
|
private defaultHeight = '100%';
|
|
140
170
|
|
|
171
|
+
protected embedComponentType = 'AppEmbed';
|
|
172
|
+
|
|
141
173
|
// eslint-disable-next-line no-useless-constructor
|
|
142
174
|
constructor(domSelector: DOMSelector, viewConfig: AppViewConfig) {
|
|
143
175
|
super(domSelector, viewConfig);
|
|
@@ -164,6 +196,8 @@ export class AppEmbed extends V1Embed {
|
|
|
164
196
|
enableSearchAssist,
|
|
165
197
|
fullHeight,
|
|
166
198
|
dataPanelV2 = false,
|
|
199
|
+
hideHomepageLeftNav = false,
|
|
200
|
+
modularHomeExperience = false,
|
|
167
201
|
} = this.viewConfig;
|
|
168
202
|
|
|
169
203
|
let params = {};
|
|
@@ -194,6 +228,8 @@ export class AppEmbed extends V1Embed {
|
|
|
194
228
|
}
|
|
195
229
|
|
|
196
230
|
params[Param.DataPanelV2Enabled] = dataPanelV2;
|
|
231
|
+
params[Param.HideHomepageLeftNav] = hideHomepageLeftNav;
|
|
232
|
+
params[Param.ModularHomeExperienceEnabled] = modularHomeExperience;
|
|
197
233
|
const queryParams = getQueryParamString(params, true);
|
|
198
234
|
|
|
199
235
|
return queryParams;
|
|
@@ -205,8 +241,8 @@ export class AppEmbed extends V1Embed {
|
|
|
205
241
|
* @param pageId The ID of the page to be embedded.
|
|
206
242
|
*/
|
|
207
243
|
private getIFrameSrc() {
|
|
208
|
-
const { pageId, path } = this.viewConfig;
|
|
209
|
-
const pageRoute = this.formatPath(path) || this.getPageRoute(pageId);
|
|
244
|
+
const { pageId, path, modularHomeExperience } = this.viewConfig;
|
|
245
|
+
const pageRoute = this.formatPath(path) || this.getPageRoute(pageId, modularHomeExperience);
|
|
210
246
|
let url = `${this.getRootIframeSrc()}/${pageRoute}`;
|
|
211
247
|
|
|
212
248
|
const tsPostHashParams = this.getThoughtSpotPostUrlParams();
|
|
@@ -243,21 +279,22 @@ export class AppEmbed extends V1Embed {
|
|
|
243
279
|
* Gets the ThoughtSpot route of the page for a particular page ID.
|
|
244
280
|
*
|
|
245
281
|
* @param pageId The identifier for a page in the ThoughtSpot app.
|
|
282
|
+
* @param modularHomeExperience
|
|
246
283
|
*/
|
|
247
|
-
private getPageRoute(pageId: Page) {
|
|
284
|
+
private getPageRoute(pageId: Page, modularHomeExperience = false) {
|
|
248
285
|
switch (pageId) {
|
|
249
286
|
case Page.Search:
|
|
250
287
|
return 'answer';
|
|
251
288
|
case Page.Answers:
|
|
252
|
-
return 'answers';
|
|
289
|
+
return modularHomeExperience ? 'home/answers' : 'answers';
|
|
253
290
|
case Page.Liveboards:
|
|
254
|
-
return 'pinboards';
|
|
291
|
+
return modularHomeExperience ? 'home/liveboards' : 'pinboards';
|
|
255
292
|
case Page.Pinboards:
|
|
256
|
-
return 'pinboards';
|
|
293
|
+
return modularHomeExperience ? 'home/liveboards' : 'pinboards';
|
|
257
294
|
case Page.Data:
|
|
258
295
|
return 'data/tables';
|
|
259
296
|
case Page.SpotIQ:
|
|
260
|
-
return 'insights/results';
|
|
297
|
+
return modularHomeExperience ? 'home/spotiq-analysis' : 'insights/results';
|
|
261
298
|
case Page.Home:
|
|
262
299
|
default:
|
|
263
300
|
return 'home';
|
package/src/embed/base.ts
CHANGED
|
@@ -44,13 +44,13 @@ export interface executeTMLInput {
|
|
|
44
44
|
|
|
45
45
|
export interface exportTMLInput {
|
|
46
46
|
metadata: {
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
identifier: string;
|
|
48
|
+
type?: 'LIVEBOARD' | 'ANSWER' | 'LOGICAL_TABLE' | 'CONNECTION';
|
|
49
49
|
}[];
|
|
50
50
|
export_associated?: boolean;
|
|
51
51
|
export_fqn?: boolean;
|
|
52
52
|
edoc_format?: 'YAML' | 'JSON';
|
|
53
|
-
|
|
53
|
+
}
|
|
54
54
|
|
|
55
55
|
export let authPromise: Promise<boolean>;
|
|
56
56
|
/**
|
|
@@ -192,9 +192,9 @@ export const init = (embedConfig: EmbedConfig): AuthEventEmitter => {
|
|
|
192
192
|
setAuthEE(authEE);
|
|
193
193
|
handleAuth();
|
|
194
194
|
|
|
195
|
+
const { password, ...configToTrack } = config;
|
|
195
196
|
uploadMixpanelEvent(MIXPANEL_EVENT.VISUAL_SDK_CALLED_INIT, {
|
|
196
|
-
|
|
197
|
-
host: config.thoughtSpotHost,
|
|
197
|
+
...configToTrack,
|
|
198
198
|
usedCustomizationSheet: embedConfig.customizations?.style?.customCSSUrl != null,
|
|
199
199
|
usedCustomizationVariables: embedConfig.customizations?.style?.customCSS?.variables != null,
|
|
200
200
|
usedCustomizationRules:
|
|
@@ -258,8 +258,10 @@ export const renderInQueue = (fn: (next?: (val?: any) => void) => Promise<any>):
|
|
|
258
258
|
|
|
259
259
|
/**
|
|
260
260
|
* Imports TML representation of the metadata objects into ThoughtSpot.
|
|
261
|
+
*
|
|
261
262
|
* @param data
|
|
262
263
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
264
|
+
* @group Global methods
|
|
263
265
|
*/
|
|
264
266
|
export const executeTML = async (data: executeTMLInput): Promise<any> => {
|
|
265
267
|
const { thoughtSpotHost, authType } = config;
|
|
@@ -305,9 +307,12 @@ export const executeTML = async (data: executeTMLInput): Promise<any> => {
|
|
|
305
307
|
};
|
|
306
308
|
|
|
307
309
|
/**
|
|
308
|
-
* Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
|
|
310
|
+
* Exports TML representation of the metadata objects from ThoughtSpot in JSON or YAML
|
|
311
|
+
* format.
|
|
312
|
+
*
|
|
309
313
|
* @param data
|
|
310
314
|
* @version SDK: 1.23.0 | ThoughtSpot: 9.4.0.cl
|
|
315
|
+
* @group Global methods
|
|
311
316
|
*/
|
|
312
317
|
export const exportTML = async (data: exportTMLInput): Promise<any> => {
|
|
313
318
|
const { thoughtSpotHost, authType } = config;
|
|
@@ -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
|
-
|
|
351
|
-
|
|
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}¶m1=Integer%20Date%20Range¶mVal1=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
|
});
|
package/src/embed/liveboard.ts
CHANGED
|
@@ -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
|
/**
|
|
@@ -127,6 +132,8 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
127
132
|
|
|
128
133
|
private defaultHeight = 500;
|
|
129
134
|
|
|
135
|
+
protected embedComponentType = 'LiveboardEmbed';
|
|
136
|
+
|
|
130
137
|
// eslint-disable-next-line no-useless-constructor
|
|
131
138
|
constructor(domSelector: DOMSelector, viewConfig: LiveboardViewConfig) {
|
|
132
139
|
super(domSelector, viewConfig);
|
|
@@ -154,6 +161,7 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
154
161
|
vizId,
|
|
155
162
|
hideTabPanel,
|
|
156
163
|
activeTabId,
|
|
164
|
+
runtimeParameters,
|
|
157
165
|
} = this.viewConfig;
|
|
158
166
|
|
|
159
167
|
const preventLiveboardFilterRemoval = this.viewConfig.preventLiveboardFilterRemoval
|
|
@@ -184,7 +192,10 @@ export class LiveboardEmbed extends V1Embed {
|
|
|
184
192
|
if (hideTabPanel) {
|
|
185
193
|
params[Param.HideTabPanel] = hideTabPanel;
|
|
186
194
|
}
|
|
187
|
-
|
|
195
|
+
let queryParams = getQueryParamString(params, true);
|
|
196
|
+
|
|
197
|
+
const parameterQuery = getRuntimeParameters(runtimeParameters || []);
|
|
198
|
+
if (parameterQuery) queryParams += `&${parameterQuery}`;
|
|
188
199
|
|
|
189
200
|
return queryParams;
|
|
190
201
|
}
|
package/src/embed/sage.ts
CHANGED
|
@@ -100,6 +100,8 @@ export class SageEmbed extends V1Embed {
|
|
|
100
100
|
*/
|
|
101
101
|
protected viewConfig: SageViewConfig;
|
|
102
102
|
|
|
103
|
+
protected embedComponentType = 'SageEmbed';
|
|
104
|
+
|
|
103
105
|
// eslint-disable-next-line no-useless-constructor
|
|
104
106
|
constructor(domSelector: DOMSelector, viewConfig: SageViewConfig) {
|
|
105
107
|
super(domSelector, viewConfig);
|
package/src/embed/search-bar.tsx
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
DOMSelector, Param, Action, ViewConfig,
|
|
3
|
-
} from '../types';
|
|
1
|
+
import { Param, ViewConfig } from '../types';
|
|
4
2
|
import { getQueryParamString } from '../utils';
|
|
5
3
|
import { TsEmbed } from './ts-embed';
|
|
6
4
|
import { SearchOptions } from './search';
|
|
@@ -8,7 +6,8 @@ import { SearchOptions } from './search';
|
|
|
8
6
|
/**
|
|
9
7
|
* @group Embed components
|
|
10
8
|
*/
|
|
11
|
-
export interface SearchBarViewConfig
|
|
9
|
+
export interface SearchBarViewConfig
|
|
10
|
+
extends Omit<ViewConfig, 'runtimeFilters' | 'showAlerts' | 'dataPanelV2'> {
|
|
12
11
|
/**
|
|
13
12
|
* The array of data source GUIDs to set on load.
|
|
14
13
|
* Only a single dataSource supported currently.
|
|
@@ -22,6 +21,12 @@ export interface SearchBarViewConfig extends Omit<ViewConfig, 'runtimeFilters' |
|
|
|
22
21
|
* @version: SDK: 1.19.0
|
|
23
22
|
*/
|
|
24
23
|
dataSource?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Flag to set if last selected dataSource should be used
|
|
26
|
+
*
|
|
27
|
+
* @version: SDK: 1.24.0
|
|
28
|
+
*/
|
|
29
|
+
useLastSelectedSources?: boolean;
|
|
25
30
|
/**
|
|
26
31
|
* Configuration for search options
|
|
27
32
|
*/
|
|
@@ -40,6 +45,8 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
40
45
|
*/
|
|
41
46
|
protected viewConfig: SearchBarViewConfig;
|
|
42
47
|
|
|
48
|
+
protected embedComponentType = 'SearchBarEmbed';
|
|
49
|
+
|
|
43
50
|
constructor(domSelector: string, viewConfig: SearchBarViewConfig) {
|
|
44
51
|
super(domSelector);
|
|
45
52
|
this.viewConfig = viewConfig;
|
|
@@ -52,7 +59,12 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
52
59
|
* @param dataSources A list of data source GUIDs
|
|
53
60
|
*/
|
|
54
61
|
private getIFrameSrc() {
|
|
55
|
-
const {
|
|
62
|
+
const {
|
|
63
|
+
searchOptions,
|
|
64
|
+
dataSource,
|
|
65
|
+
dataSources,
|
|
66
|
+
useLastSelectedSources = false,
|
|
67
|
+
} = this.viewConfig;
|
|
56
68
|
const path = 'search-bar-embed';
|
|
57
69
|
const queryParams = this.getBaseQueryParams();
|
|
58
70
|
|
|
@@ -74,7 +86,10 @@ export class SearchBarEmbed extends TsEmbed {
|
|
|
74
86
|
}
|
|
75
87
|
}
|
|
76
88
|
|
|
77
|
-
queryParams[Param.UseLastSelectedDataSource] =
|
|
89
|
+
queryParams[Param.UseLastSelectedDataSource] = useLastSelectedSources;
|
|
90
|
+
if (dataSource || dataSources) {
|
|
91
|
+
queryParams[Param.UseLastSelectedDataSource] = false;
|
|
92
|
+
}
|
|
78
93
|
queryParams[Param.searchEmbed] = true;
|
|
79
94
|
let query = '';
|
|
80
95
|
const queryParamsString = getQueryParamString(queryParams, true);
|
package/src/embed/search.spec.ts
CHANGED
|
@@ -350,4 +350,65 @@ describe('Search embed tests', () => {
|
|
|
350
350
|
);
|
|
351
351
|
});
|
|
352
352
|
});
|
|
353
|
+
test('should set useLastSelectedSources to true if useLastSelectedSources flag is true', async () => {
|
|
354
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
355
|
+
...defaultViewConfig,
|
|
356
|
+
useLastSelectedSources: true,
|
|
357
|
+
});
|
|
358
|
+
searchEmbed.render();
|
|
359
|
+
await executeAfterWait(() => {
|
|
360
|
+
expectUrlMatchesWithParams(
|
|
361
|
+
getIFrameSrc(),
|
|
362
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=true${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
363
|
+
);
|
|
364
|
+
});
|
|
365
|
+
});
|
|
366
|
+
test('should set useLastSelectedSources to false if datasource is given irrespective of useLastSelectedSources', async () => {
|
|
367
|
+
const dataSource = 'data-source-1';
|
|
368
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
369
|
+
...defaultViewConfig,
|
|
370
|
+
useLastSelectedSources: true,
|
|
371
|
+
dataSource,
|
|
372
|
+
});
|
|
373
|
+
searchEmbed.render();
|
|
374
|
+
await executeAfterWait(() => {
|
|
375
|
+
expectUrlMatchesWithParams(
|
|
376
|
+
getIFrameSrc(),
|
|
377
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
378
|
+
);
|
|
379
|
+
});
|
|
380
|
+
});
|
|
381
|
+
test('should set useLastSelectedSources to false if datasources are given irrespective of useLastSelectedSources', async () => {
|
|
382
|
+
const dataSources = ['data-source-1'];
|
|
383
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {
|
|
384
|
+
...defaultViewConfig,
|
|
385
|
+
useLastSelectedSources: true,
|
|
386
|
+
dataSources,
|
|
387
|
+
});
|
|
388
|
+
searchEmbed.render();
|
|
389
|
+
await executeAfterWait(() => {
|
|
390
|
+
expectUrlMatchesWithParams(
|
|
391
|
+
getIFrameSrc(),
|
|
392
|
+
`http://${thoughtSpotHost}/v2/?${defaultParamsWithHiddenActions}&dataSources=[%22data-source-1%22]&dataSourceMode=expand&enableDataPanelV2=false&useLastSelectedSources=false${prefixParams}#/embed/saved-answer/${answerId}`,
|
|
393
|
+
);
|
|
394
|
+
});
|
|
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}¶m1=Integer%20Date%20Range¶mVal1=1#/embed/saved-answer/${answerId}`,
|
|
411
|
+
);
|
|
412
|
+
});
|
|
413
|
+
});
|
|
353
414
|
});
|