@thoughtspot/visual-embed-sdk 1.24.0 → 1.24.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/package.json +2 -3
- package/cjs/src/embed/app.d.ts +23 -1
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +5 -1
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/base.d.ts +3 -4
- package/cjs/src/embed/base.d.ts.map +1 -1
- package/cjs/src/embed/base.js +3 -4
- package/cjs/src/embed/base.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +23 -1
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +11 -1
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/sage.d.ts +2 -1
- 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 +2 -1
- package/cjs/src/embed/search-bar.d.ts.map +1 -1
- package/cjs/src/embed/search-bar.js +1 -0
- package/cjs/src/embed/search-bar.js.map +1 -1
- package/cjs/src/embed/search.d.ts +2 -1
- package/cjs/src/embed/search.d.ts.map +1 -1
- package/cjs/src/embed/search.js +1 -0
- package/cjs/src/embed/search.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +1 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +4 -10
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +49 -2
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/index.d.ts +3 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +3 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/mixpanel-service.d.ts.map +1 -1
- package/cjs/src/mixpanel-service.js +2 -0
- package/cjs/src/mixpanel-service.js.map +1 -1
- package/cjs/src/mixpanel-service.spec.js +1 -0
- package/cjs/src/mixpanel-service.spec.js.map +1 -1
- package/cjs/src/types.d.ts +46 -39
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +7 -13
- package/cjs/src/types.js.map +1 -1
- 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/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 +6 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +27 -2
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +10 -0
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/src/embed/app.d.ts +23 -1
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/base.d.ts +3 -4
- package/dist/src/embed/base.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +23 -1
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/sage.d.ts +2 -1
- package/dist/src/embed/sage.d.ts.map +1 -1
- package/dist/src/embed/search-bar.d.ts +2 -1
- package/dist/src/embed/search-bar.d.ts.map +1 -1
- package/dist/src/embed/search.d.ts +2 -1
- package/dist/src/embed/search.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +1 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/mixpanel-service.d.ts.map +1 -1
- package/dist/src/types.d.ts +46 -39
- 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 +6 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +400 -81
- package/dist/tsembed-react.js +400 -81
- package/dist/tsembed.es.js +452 -89
- package/dist/tsembed.js +452 -88
- package/dist/visual-embed-sdk-react-full.d.ts +158 -49
- package/dist/visual-embed-sdk-react.d.ts +158 -49
- package/dist/visual-embed-sdk.d.ts +158 -49
- package/lib/package.json +2 -3
- package/lib/src/embed/app.d.ts +23 -1
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +5 -1
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/base.d.ts +3 -4
- package/lib/src/embed/base.d.ts.map +1 -1
- package/lib/src/embed/base.js +3 -4
- package/lib/src/embed/base.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +23 -1
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +11 -1
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/sage.d.ts +2 -1
- 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 +2 -1
- package/lib/src/embed/search-bar.d.ts.map +1 -1
- package/lib/src/embed/search-bar.js +1 -0
- package/lib/src/embed/search-bar.js.map +1 -1
- package/lib/src/embed/search.d.ts +2 -1
- package/lib/src/embed/search.d.ts.map +1 -1
- package/lib/src/embed/search.js +1 -0
- package/lib/src/embed/search.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +1 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +4 -10
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +49 -2
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/index.d.ts +3 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -1
- package/lib/src/index.js.map +1 -1
- package/lib/src/mixpanel-service.d.ts.map +1 -1
- package/lib/src/mixpanel-service.js +2 -0
- package/lib/src/mixpanel-service.js.map +1 -1
- package/lib/src/mixpanel-service.spec.js +1 -0
- package/lib/src/mixpanel-service.spec.js.map +1 -1
- package/lib/src/types.d.ts +46 -39
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +6 -12
- package/lib/src/types.js.map +1 -1
- 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/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 +6 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +24 -1
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +10 -0
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +164 -50
- package/package.json +4 -5
- package/src/embed/app.ts +30 -1
- package/src/embed/base.ts +3 -4
- package/src/embed/liveboard.ts +36 -1
- package/src/embed/sage.ts +9 -4
- package/src/embed/search-bar.tsx +12 -1
- package/src/embed/search.ts +7 -1
- package/src/embed/ts-embed.spec.ts +51 -2
- package/src/embed/ts-embed.ts +4 -12
- package/src/index.ts +5 -0
- package/src/mixpanel-service.spec.ts +1 -0
- package/src/mixpanel-service.ts +1 -0
- package/src/types.ts +50 -40
- 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 +13 -0
- package/src/utils.ts +25 -1
- package/cjs/src/utils/answerService.d.ts +0 -10
- package/cjs/src/utils/answerService.d.ts.map +0 -1
- package/cjs/src/utils/answerService.js +0 -61
- package/cjs/src/utils/answerService.js.map +0 -1
- package/cjs/src/utils/answerService.spec.d.ts +0 -2
- package/cjs/src/utils/answerService.spec.d.ts.map +0 -1
- package/cjs/src/utils/answerService.spec.js +0 -31
- package/cjs/src/utils/answerService.spec.js.map +0 -1
- package/dist/src/utils/answerService.d.ts +0 -10
- package/dist/src/utils/answerService.d.ts.map +0 -1
- package/dist/src/utils/answerService.spec.d.ts +0 -2
- package/dist/src/utils/answerService.spec.d.ts.map +0 -1
- package/lib/src/utils/answerService.d.ts +0 -10
- package/lib/src/utils/answerService.d.ts.map +0 -1
- package/lib/src/utils/answerService.js +0 -57
- package/lib/src/utils/answerService.js.map +0 -1
- package/lib/src/utils/answerService.spec.d.ts +0 -2
- package/lib/src/utils/answerService.spec.d.ts.map +0 -1
- package/lib/src/utils/answerService.spec.js +0 -29
- package/lib/src/utils/answerService.spec.js.map +0 -1
- package/src/utils/answerService.spec.ts +0 -41
- package/src/utils/answerService.ts +0 -63
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const bachSessionId = `
|
|
2
|
+
id {
|
|
3
|
+
sessionId
|
|
4
|
+
genNo
|
|
5
|
+
acSession {
|
|
6
|
+
sessionId
|
|
7
|
+
genNo
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
`;
|
|
11
|
+
export const getUnaggregatedAnswerSession = `
|
|
12
|
+
mutation GetUnAggregatedAnswerSession($session: BachSessionIdInput!, $columns: [UserPointSelectionInput!]!) {
|
|
13
|
+
Answer__getUnaggregatedAnswer(session: $session, columns: $columns) {
|
|
14
|
+
${bachSessionId}
|
|
15
|
+
answer {
|
|
16
|
+
visualizations {
|
|
17
|
+
... on TableViz {
|
|
18
|
+
columns {
|
|
19
|
+
column {
|
|
20
|
+
id
|
|
21
|
+
name
|
|
22
|
+
referencedColumns {
|
|
23
|
+
guid
|
|
24
|
+
displayName
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
`;
|
|
34
|
+
export const removeColumns = `
|
|
35
|
+
mutation RemoveColumns($session: BachSessionIdInput!, $logicalColumnIds: [GUID!], $columnIds: [GUID!]) {
|
|
36
|
+
Answer__removeColumns(
|
|
37
|
+
session: $session
|
|
38
|
+
logicalColumnIds: $logicalColumnIds
|
|
39
|
+
columnIds: $columnIds
|
|
40
|
+
) {
|
|
41
|
+
${bachSessionId}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
`;
|
|
45
|
+
export const addColumns = `
|
|
46
|
+
mutation AddColumns($session: BachSessionIdInput!, $columns: [AnswerColumnInfo!]!) {
|
|
47
|
+
Answer__addColumn(session: $session, columns: $columns) {
|
|
48
|
+
${bachSessionId}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
`;
|
|
52
|
+
export const getAnswerData = `
|
|
53
|
+
query GetTableWithHeadlineData($session: BachSessionIdInput!, $deadline: Int!, $dataPaginationParams: DataPaginationParamsInput!) {
|
|
54
|
+
getAnswer(session: $session) {
|
|
55
|
+
${bachSessionId}
|
|
56
|
+
answer {
|
|
57
|
+
id
|
|
58
|
+
visualizations {
|
|
59
|
+
id
|
|
60
|
+
... on TableViz {
|
|
61
|
+
columns {
|
|
62
|
+
column {
|
|
63
|
+
id
|
|
64
|
+
name
|
|
65
|
+
type
|
|
66
|
+
aggregationType
|
|
67
|
+
dataType
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
data(deadline: $deadline, pagination: $dataPaginationParams)
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
`;
|
|
77
|
+
//# sourceMappingURL=answer-queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answer-queries.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answer-queries.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG;;;UAGlC,aAAa;;;;;;;;;;;;;;;;;;;CAmBtB,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;cAOf,aAAa;;;KAGtB,CAAC;AAEN,MAAM,CAAC,MAAM,UAAU,GAAG;;;cAGZ,aAAa;;;KAGtB,CAAC;AAEN,MAAM,CAAC,MAAM,aAAa,GAAG;;;cAGf,aAAa;;;;;;;;;;;;;;;;;;;;;CAqB1B,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { VizPoint } from '../../../types';
|
|
2
|
+
export interface SessionInterface {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
genNo: number;
|
|
5
|
+
acSession: {
|
|
6
|
+
sessionId: string;
|
|
7
|
+
genNo: number;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export declare enum OperationType {
|
|
11
|
+
GetChartWithData = "GetChartWithData",
|
|
12
|
+
GetTableWithHeadlineData = "GetTableWithHeadlineData"
|
|
13
|
+
}
|
|
14
|
+
interface UnderlyingDataPoint {
|
|
15
|
+
columnId: string;
|
|
16
|
+
dataValue: any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Class representing the answer service provided with the
|
|
20
|
+
* custom action payload. This service could be used to run
|
|
21
|
+
* graphql queries in the context of the answer on which the
|
|
22
|
+
* custom action was triggered.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```js
|
|
26
|
+
* embed.on(EmbedEvent.CustomAction, e => {
|
|
27
|
+
* const underlying = await e.answerService.getUnderlyingDataForPoint([
|
|
28
|
+
* 'col name 1'
|
|
29
|
+
* ]);
|
|
30
|
+
* const data = await underlying.fetchData(0, 100);
|
|
31
|
+
* })
|
|
32
|
+
* ```
|
|
33
|
+
* @version
|
|
34
|
+
* ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
|
|
35
|
+
*/
|
|
36
|
+
export declare class AnswerService {
|
|
37
|
+
private session;
|
|
38
|
+
private answer;
|
|
39
|
+
private thoughtSpotHost;
|
|
40
|
+
private selectedPoints?;
|
|
41
|
+
constructor(session: SessionInterface, answer: any, thoughtSpotHost: string, selectedPoints?: VizPoint[]);
|
|
42
|
+
getSourceDetail(): Promise<any>;
|
|
43
|
+
removeColumns(columnIds: string[]): Promise<any>;
|
|
44
|
+
addColumns(columnIds: string[]): Promise<any>;
|
|
45
|
+
fetchData(offset?: number, size?: number): Promise<{
|
|
46
|
+
columns: any;
|
|
47
|
+
data: any;
|
|
48
|
+
}>;
|
|
49
|
+
/**
|
|
50
|
+
*
|
|
51
|
+
* @param userLocale
|
|
52
|
+
* @param omitInfo Omit the download Info on top of the CSV
|
|
53
|
+
* @returns Response
|
|
54
|
+
*/
|
|
55
|
+
fetchCSVBlob(userLocale?: string, omitInfo?: boolean): Promise<Response>;
|
|
56
|
+
getUnderlyingDataForPoint(outputColumnNames: string[], selectedPoints?: UnderlyingDataPoint[]): Promise<AnswerService>;
|
|
57
|
+
executeQuery(query: string, variables: any): Promise<any>;
|
|
58
|
+
getSession(): SessionInterface;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=answerService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerService.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM5D,MAAM,WAAW,gBAAgB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAGD,oBAAY,aAAa;IACrB,gBAAgB,qBAAqB;IACrC,wBAAwB,6BAA6B;CACxD;AAED,UAAU,mBAAmB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IAElB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,cAAc,CAAC;gBAHf,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,GAAG,EACX,eAAe,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,QAAQ,EAAE;IAK1B,eAAe;IAQf,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE;IASjC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE;IAS9B,SAAS,CAAC,MAAM,SAAI,EAAE,IAAI,SAAO;;;;IAmB9C;;;;;OAKG;IACU,YAAY,CAAC,UAAU,SAAU,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAUvE,yBAAyB,CAClC,iBAAiB,EAAE,MAAM,EAAE,EAC3B,cAAc,CAAC,EAAE,mBAAmB,EAAE,GACvC,OAAO,CAAC,aAAa,CAAC;IA8CZ,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAe/D,UAAU;CAGpB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { deepMerge, removeTypename } from '../../../utils';
|
|
2
|
+
import { graphqlQuery } from '../graphql-request';
|
|
3
|
+
import { getSourceDetail } from '../sourceService';
|
|
4
|
+
import * as queries from './answer-queries';
|
|
5
|
+
// eslint-disable-next-line no-shadow
|
|
6
|
+
export var OperationType;
|
|
7
|
+
(function (OperationType) {
|
|
8
|
+
OperationType["GetChartWithData"] = "GetChartWithData";
|
|
9
|
+
OperationType["GetTableWithHeadlineData"] = "GetTableWithHeadlineData";
|
|
10
|
+
})(OperationType || (OperationType = {}));
|
|
11
|
+
/**
|
|
12
|
+
* Class representing the answer service provided with the
|
|
13
|
+
* custom action payload. This service could be used to run
|
|
14
|
+
* graphql queries in the context of the answer on which the
|
|
15
|
+
* custom action was triggered.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```js
|
|
19
|
+
* embed.on(EmbedEvent.CustomAction, e => {
|
|
20
|
+
* const underlying = await e.answerService.getUnderlyingDataForPoint([
|
|
21
|
+
* 'col name 1'
|
|
22
|
+
* ]);
|
|
23
|
+
* const data = await underlying.fetchData(0, 100);
|
|
24
|
+
* })
|
|
25
|
+
* ```
|
|
26
|
+
* @version
|
|
27
|
+
* ThoughtSpot: 9.9.0.cl / SDK: 1.25.0
|
|
28
|
+
*/
|
|
29
|
+
export class AnswerService {
|
|
30
|
+
constructor(session, answer, thoughtSpotHost, selectedPoints) {
|
|
31
|
+
this.session = session;
|
|
32
|
+
this.answer = answer;
|
|
33
|
+
this.thoughtSpotHost = thoughtSpotHost;
|
|
34
|
+
this.selectedPoints = selectedPoints;
|
|
35
|
+
this.session = removeTypename(session);
|
|
36
|
+
}
|
|
37
|
+
async getSourceDetail() {
|
|
38
|
+
const sourceId = this.answer.sources[0].header.guid;
|
|
39
|
+
return getSourceDetail(this.thoughtSpotHost, sourceId);
|
|
40
|
+
}
|
|
41
|
+
async removeColumns(columnIds) {
|
|
42
|
+
return this.executeQuery(queries.removeColumns, {
|
|
43
|
+
logicalColumnIds: columnIds,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async addColumns(columnIds) {
|
|
47
|
+
return this.executeQuery(queries.addColumns, {
|
|
48
|
+
columns: columnIds.map((colId) => ({ logicalColumnId: colId })),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async fetchData(offset = 0, size = 1000) {
|
|
52
|
+
const { answer } = await this.executeQuery(queries.getAnswerData, {
|
|
53
|
+
deadline: 0,
|
|
54
|
+
dataPaginationParams: {
|
|
55
|
+
isClientPaginated: true,
|
|
56
|
+
offset,
|
|
57
|
+
size,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
const { columns, data } = answer.visualizations[0];
|
|
61
|
+
return {
|
|
62
|
+
columns,
|
|
63
|
+
data,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
*
|
|
68
|
+
* @param userLocale
|
|
69
|
+
* @param omitInfo Omit the download Info on top of the CSV
|
|
70
|
+
* @returns Response
|
|
71
|
+
*/
|
|
72
|
+
async fetchCSVBlob(userLocale = 'en-us', omitInfo = false) {
|
|
73
|
+
if (omitInfo) {
|
|
74
|
+
console.warn('omitInfo not supported yet.');
|
|
75
|
+
}
|
|
76
|
+
const fetchUrl = `${this.thoughtSpotHost}/prism/download/answer/csv?sessionId=${this.session.sessionId}&genNo=${this.session.genNo}&userLocale=${userLocale}&exportFileName=data&omitInfo=${omitInfo}`;
|
|
77
|
+
return fetch(fetchUrl, {
|
|
78
|
+
credentials: 'include',
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
async getUnderlyingDataForPoint(outputColumnNames, selectedPoints) {
|
|
82
|
+
if (!selectedPoints && !this.selectedPoints) {
|
|
83
|
+
throw new Error('Needs to be triggered in context of a point');
|
|
84
|
+
}
|
|
85
|
+
if (!selectedPoints) {
|
|
86
|
+
selectedPoints = getSelectedPointsForUnderlyingDataQuery(this.selectedPoints);
|
|
87
|
+
}
|
|
88
|
+
const sourceDetail = await this.getSourceDetail();
|
|
89
|
+
const ouputColumnGuids = getGuidsFromColumnNames(sourceDetail, outputColumnNames);
|
|
90
|
+
const unAggAnswer = await graphqlQuery({
|
|
91
|
+
query: queries.getUnaggregatedAnswerSession,
|
|
92
|
+
variables: {
|
|
93
|
+
session: this.session,
|
|
94
|
+
columns: selectedPoints,
|
|
95
|
+
},
|
|
96
|
+
thoughtSpotHost: this.thoughtSpotHost,
|
|
97
|
+
});
|
|
98
|
+
const unaggAnswerSession = new AnswerService(unAggAnswer.id, unAggAnswer.answer, this.thoughtSpotHost);
|
|
99
|
+
const currentColumns = new Set(unAggAnswer.answer.visualizations[0].columns
|
|
100
|
+
.map((c) => c.column.referencedColumns[0].guid));
|
|
101
|
+
const columnsToAdd = [...ouputColumnGuids].filter((col) => !currentColumns.has(col));
|
|
102
|
+
if (columnsToAdd.length) {
|
|
103
|
+
await unaggAnswerSession.addColumns(columnsToAdd);
|
|
104
|
+
}
|
|
105
|
+
const columnsToRemove = [...currentColumns].filter((col) => !ouputColumnGuids.has(col));
|
|
106
|
+
if (columnsToRemove.length) {
|
|
107
|
+
await unaggAnswerSession.removeColumns(columnsToRemove);
|
|
108
|
+
}
|
|
109
|
+
return unaggAnswerSession;
|
|
110
|
+
}
|
|
111
|
+
async executeQuery(query, variables) {
|
|
112
|
+
const data = await graphqlQuery({
|
|
113
|
+
query,
|
|
114
|
+
variables: {
|
|
115
|
+
session: this.session,
|
|
116
|
+
...variables,
|
|
117
|
+
},
|
|
118
|
+
thoughtSpotHost: this.thoughtSpotHost,
|
|
119
|
+
isCompositeQuery: false,
|
|
120
|
+
});
|
|
121
|
+
this.session = deepMerge(this.session, (data === null || data === void 0 ? void 0 : data.id) || {});
|
|
122
|
+
return data;
|
|
123
|
+
}
|
|
124
|
+
getSession() {
|
|
125
|
+
return this.session;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
*
|
|
130
|
+
* @param sourceDetail
|
|
131
|
+
* @param colNames
|
|
132
|
+
*/
|
|
133
|
+
function getGuidsFromColumnNames(sourceDetail, colNames) {
|
|
134
|
+
const cols = sourceDetail.columns.reduce((colSet, col) => {
|
|
135
|
+
colSet[col.name] = col;
|
|
136
|
+
return colSet;
|
|
137
|
+
}, {});
|
|
138
|
+
return new Set(colNames.map((colName) => {
|
|
139
|
+
const col = cols[colName];
|
|
140
|
+
return col.id;
|
|
141
|
+
}));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
*
|
|
145
|
+
* @param selectedPoints
|
|
146
|
+
*/
|
|
147
|
+
function getSelectedPointsForUnderlyingDataQuery(selectedPoints) {
|
|
148
|
+
const underlyingDataPoint = [];
|
|
149
|
+
/**
|
|
150
|
+
*
|
|
151
|
+
* @param colVal
|
|
152
|
+
*/
|
|
153
|
+
function addPointFromColVal(colVal) {
|
|
154
|
+
const dataType = colVal.column.dataType;
|
|
155
|
+
const id = colVal.column.id;
|
|
156
|
+
let dataValue;
|
|
157
|
+
if (dataType === 'DATE') {
|
|
158
|
+
dataValue = [{
|
|
159
|
+
epochRange: {
|
|
160
|
+
startEpoch: colVal.value,
|
|
161
|
+
},
|
|
162
|
+
}];
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
dataValue = [{ value: colVal.value }];
|
|
166
|
+
}
|
|
167
|
+
underlyingDataPoint.push({
|
|
168
|
+
columnId: colVal.column.id,
|
|
169
|
+
dataValue,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
selectedPoints.forEach((p) => {
|
|
173
|
+
p.selectedAttributes.forEach(addPointFromColVal);
|
|
174
|
+
});
|
|
175
|
+
return underlyingDataPoint;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=answerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerService.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerService.spec.d.ts","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.spec.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import 'jest-fetch-mock';
|
|
2
|
+
import { AnswerService } from './answerService';
|
|
3
|
+
import { getAnswerData, removeColumns } from './answer-queries';
|
|
4
|
+
const defaultSession = {
|
|
5
|
+
sessionId: 'id',
|
|
6
|
+
genNo: 1,
|
|
7
|
+
acSession: {
|
|
8
|
+
sessionId: 'ac',
|
|
9
|
+
genNo: 0,
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @param answer
|
|
15
|
+
* @param point
|
|
16
|
+
*/
|
|
17
|
+
function createAnswerService(answer = {}, point) {
|
|
18
|
+
return new AnswerService(defaultSession, answer, 'https://tshost', point);
|
|
19
|
+
}
|
|
20
|
+
describe('Answer service tests', () => {
|
|
21
|
+
beforeEach(() => {
|
|
22
|
+
fetchMock.resetMocks();
|
|
23
|
+
});
|
|
24
|
+
test('Execute query should execute the supplied graphql on the session', async () => {
|
|
25
|
+
fetchMock.mockResponseOnce(JSON.stringify({
|
|
26
|
+
data: {
|
|
27
|
+
Bla: {
|
|
28
|
+
id: {},
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
const answerService = createAnswerService();
|
|
33
|
+
answerService.executeQuery('query Bla {}', { a: 1 });
|
|
34
|
+
expect(fetchMock).toBeCalledWith('https://tshost/prism/?op=Bla', expect.objectContaining({
|
|
35
|
+
body: JSON.stringify({
|
|
36
|
+
operationName: 'Bla',
|
|
37
|
+
query: 'query Bla {}',
|
|
38
|
+
variables: {
|
|
39
|
+
session: defaultSession,
|
|
40
|
+
a: 1,
|
|
41
|
+
},
|
|
42
|
+
}),
|
|
43
|
+
}));
|
|
44
|
+
});
|
|
45
|
+
test('Should return error when failure', async () => {
|
|
46
|
+
fetchMock.mockRejectOnce(new Error('testError'));
|
|
47
|
+
const answerService = createAnswerService();
|
|
48
|
+
const data = await answerService.executeQuery('query Bla {}', { a: 1 });
|
|
49
|
+
expect(data.message).toBe('testError');
|
|
50
|
+
});
|
|
51
|
+
test('fetchData should call the right graphql, and return data', async () => {
|
|
52
|
+
fetchMock.mockResponseOnce(JSON.stringify({
|
|
53
|
+
data: {
|
|
54
|
+
getAnswer: {
|
|
55
|
+
id: {},
|
|
56
|
+
answer: {
|
|
57
|
+
visualizations: [{
|
|
58
|
+
columns: [{
|
|
59
|
+
column: {
|
|
60
|
+
id: 'id1',
|
|
61
|
+
},
|
|
62
|
+
}],
|
|
63
|
+
data: {
|
|
64
|
+
foo: 1,
|
|
65
|
+
},
|
|
66
|
+
}],
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
}));
|
|
71
|
+
const answerService = createAnswerService();
|
|
72
|
+
const data = await answerService.fetchData(20, 10);
|
|
73
|
+
expect(fetchMock).toHaveBeenCalledWith('https://tshost/prism/?op=GetTableWithHeadlineData', expect.objectContaining({
|
|
74
|
+
body: JSON.stringify({
|
|
75
|
+
operationName: 'GetTableWithHeadlineData',
|
|
76
|
+
query: getAnswerData,
|
|
77
|
+
variables: {
|
|
78
|
+
session: defaultSession,
|
|
79
|
+
deadline: 0,
|
|
80
|
+
dataPaginationParams: {
|
|
81
|
+
isClientPaginated: true,
|
|
82
|
+
offset: 20,
|
|
83
|
+
size: 10,
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
}),
|
|
87
|
+
}));
|
|
88
|
+
expect(data.columns[0].column.id).toBe('id1');
|
|
89
|
+
expect(data.data.foo).toBe(1);
|
|
90
|
+
});
|
|
91
|
+
test('fetchCSVBlob should call the right API', async () => {
|
|
92
|
+
fetchMock.once('Bla');
|
|
93
|
+
const answerService = createAnswerService();
|
|
94
|
+
answerService.fetchCSVBlob(undefined, true);
|
|
95
|
+
expect(fetchMock).toHaveBeenCalledWith(`https://tshost/prism/download/answer/csv?sessionId=${defaultSession.sessionId}&genNo=${defaultSession.genNo}&userLocale=en-us&exportFileName=data&omitInfo=true`, expect.objectContaining({}));
|
|
96
|
+
});
|
|
97
|
+
test('getUnderlyingDataForPoint should call the right APIs', async () => {
|
|
98
|
+
fetchMock.mockResponses(JSON.stringify({
|
|
99
|
+
data: {
|
|
100
|
+
getSourceDetailById: [{
|
|
101
|
+
columns: [{
|
|
102
|
+
id: 'id1',
|
|
103
|
+
name: 'col1',
|
|
104
|
+
}, {
|
|
105
|
+
id: 'id2',
|
|
106
|
+
name: 'col2',
|
|
107
|
+
}, {
|
|
108
|
+
id: 'id3',
|
|
109
|
+
name: 'col3',
|
|
110
|
+
}],
|
|
111
|
+
}],
|
|
112
|
+
},
|
|
113
|
+
}), JSON.stringify({
|
|
114
|
+
data: {
|
|
115
|
+
Answer__getUnaggregatedAnswer: {
|
|
116
|
+
id: {
|
|
117
|
+
...defaultSession,
|
|
118
|
+
},
|
|
119
|
+
answer: {
|
|
120
|
+
visualizations: [{
|
|
121
|
+
columns: [{
|
|
122
|
+
column: {
|
|
123
|
+
id: 'oid1',
|
|
124
|
+
name: 'col1',
|
|
125
|
+
referencedColumns: [{
|
|
126
|
+
guid: 'id1',
|
|
127
|
+
}],
|
|
128
|
+
},
|
|
129
|
+
}],
|
|
130
|
+
}],
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
}), JSON.stringify({
|
|
135
|
+
data: {
|
|
136
|
+
Answer__addColumn: {
|
|
137
|
+
id: {
|
|
138
|
+
genNo: 2,
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
},
|
|
142
|
+
}), JSON.stringify({
|
|
143
|
+
data: {
|
|
144
|
+
Answer__removeColumns: {
|
|
145
|
+
id: {
|
|
146
|
+
genNo: 3,
|
|
147
|
+
},
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
}));
|
|
151
|
+
const answerService = createAnswerService({
|
|
152
|
+
sources: [{
|
|
153
|
+
header: {
|
|
154
|
+
guid: 'source1',
|
|
155
|
+
},
|
|
156
|
+
}],
|
|
157
|
+
}, [{
|
|
158
|
+
selectedAttributes: [{
|
|
159
|
+
column: {
|
|
160
|
+
id: 'oid1',
|
|
161
|
+
name: 'col1',
|
|
162
|
+
dataType: 'CHAR',
|
|
163
|
+
},
|
|
164
|
+
value: '1',
|
|
165
|
+
}, {
|
|
166
|
+
column: {
|
|
167
|
+
id: 'oid3',
|
|
168
|
+
name: 'col3',
|
|
169
|
+
dataType: 'DATE',
|
|
170
|
+
},
|
|
171
|
+
value: 12345,
|
|
172
|
+
}],
|
|
173
|
+
selectedMeasures: [],
|
|
174
|
+
}]);
|
|
175
|
+
const underlying = await answerService.getUnderlyingDataForPoint(['col2']);
|
|
176
|
+
expect(fetchMock).toHaveBeenCalledTimes(4);
|
|
177
|
+
expect(underlying.getSession().genNo).toBe(3);
|
|
178
|
+
expect(fetchMock).toHaveBeenCalledWith('https://tshost/prism/?op=RemoveColumns', expect.objectContaining({
|
|
179
|
+
body: JSON.stringify({
|
|
180
|
+
operationName: 'RemoveColumns',
|
|
181
|
+
query: removeColumns,
|
|
182
|
+
variables: {
|
|
183
|
+
session: {
|
|
184
|
+
...defaultSession,
|
|
185
|
+
genNo: 2,
|
|
186
|
+
},
|
|
187
|
+
logicalColumnIds: [
|
|
188
|
+
'id1',
|
|
189
|
+
],
|
|
190
|
+
},
|
|
191
|
+
}),
|
|
192
|
+
}));
|
|
193
|
+
});
|
|
194
|
+
test('getUnderlyingDataForPoint should throw when no point is selected', async () => {
|
|
195
|
+
const answerService = createAnswerService({}, null);
|
|
196
|
+
await expect(answerService.getUnderlyingDataForPoint(['col2'])).rejects.toThrow();
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=answerService.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"answerService.spec.js","sourceRoot":"","sources":["../../../../../src/utils/graphql/answerService/answerService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param root0
|
|
4
|
+
* @param root0.query
|
|
5
|
+
* @param root0.variables
|
|
6
|
+
* @param root0.thoughtSpotHost
|
|
7
|
+
* @param root0.isCompositeQuery
|
|
8
|
+
*/
|
|
9
|
+
export declare function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery, }: {
|
|
10
|
+
query: string;
|
|
11
|
+
variables: any;
|
|
12
|
+
thoughtSpotHost: string;
|
|
13
|
+
isCompositeQuery?: boolean;
|
|
14
|
+
}): Promise<any>;
|
|
15
|
+
//# sourceMappingURL=graphql-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-request.d.ts","sourceRoot":"","sources":["../../../../src/utils/graphql/graphql-request.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,eAAe,EACf,gBAAwB,GAC3B,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,GAAG,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC7B,gBAwBA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { getOperationNameFromQuery } from '../../utils';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param root0
|
|
5
|
+
* @param root0.query
|
|
6
|
+
* @param root0.variables
|
|
7
|
+
* @param root0.thoughtSpotHost
|
|
8
|
+
* @param root0.isCompositeQuery
|
|
9
|
+
*/
|
|
10
|
+
export async function graphqlQuery({ query, variables, thoughtSpotHost, isCompositeQuery = false, }) {
|
|
11
|
+
const operationName = getOperationNameFromQuery(query);
|
|
12
|
+
try {
|
|
13
|
+
const response = await fetch(`${thoughtSpotHost}/prism/?op=${operationName}`, {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
headers: {
|
|
16
|
+
'content-type': 'application/json;charset=UTF-8',
|
|
17
|
+
'x-requested-by': 'ThoughtSpot',
|
|
18
|
+
accept: '*/*',
|
|
19
|
+
'accept-language': 'en-us',
|
|
20
|
+
},
|
|
21
|
+
body: JSON.stringify({
|
|
22
|
+
operationName,
|
|
23
|
+
query,
|
|
24
|
+
variables,
|
|
25
|
+
}),
|
|
26
|
+
credentials: 'include',
|
|
27
|
+
});
|
|
28
|
+
const result = await response.json();
|
|
29
|
+
const dataValues = Object.values(result.data);
|
|
30
|
+
return (isCompositeQuery) ? result.data : dataValues[0];
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
return error;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=graphql-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphql-request.js","sourceRoot":"","sources":["../../../../src/utils/graphql/graphql-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,EAC/B,KAAK,EACL,SAAS,EACT,eAAe,EACf,gBAAgB,GAAG,KAAK,GAM3B;IACG,MAAM,aAAa,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,cAAc,aAAa,EAAE,EAAE;YAC1E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,gCAAgC;gBAChD,gBAAgB,EAAE,aAAa;gBAC/B,MAAM,EAAE,KAAK;gBACb,iBAAiB,EAAE,OAAO;aAC7B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,aAAa;gBACb,KAAK;gBACL,SAAS;aACZ,CAAC;YACF,WAAW,EAAE,SAAS;SACzB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9C,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC3D;IAAC,OAAO,KAAK,EAAE;QACZ,OAAO,KAAK,CAAC;KAChB;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const getSourceDetailQuery = "\n query GetSourceDetail($ids: [GUID!]!) {\n getSourceDetailById(ids: $ids, type: LOGICAL_TABLE) {\n id\n name\n description\n authorName\n authorDisplayName\n isExternal\n type\n created\n modified\n columns {\n id\n name\n author\n authorDisplayName\n description\n dataType\n type\n modified\n ownerName\n owner\n dataRecency\n sources {\n tableId\n tableName\n columnId\n columnName\n __typename\n }\n synonyms\n cohortAnswerId\n __typename\n }\n relationships\n destinationRelationships\n dataSourceId\n __typename\n }\n } \n";
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @param thoughtSpotHost
|
|
5
|
+
* @param sourceId
|
|
6
|
+
*/
|
|
7
|
+
export declare function getSourceDetail(thoughtSpotHost: string, sourceId: string): Promise<any>;
|
|
8
|
+
//# sourceMappingURL=sourceService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sourceService.d.ts","sourceRoot":"","sources":["../../../../src/utils/graphql/sourceService.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,43BAyChC,CAAC;AAIF;;;;GAIG;AACH,wBAAsB,eAAe,CACjC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,GAAG,CAAC,CAed"}
|