@@ -6,19 +6,18 @@ import {
66 Json ,
77 SupersetClientClass ,
88} from '@superset-ui/connection' ;
9+ import { QueryFormData , Datasource } from '@superset-ui/query' ;
910import getChartBuildQueryRegistry from '../registries/ChartBuildQueryRegistrySingleton' ;
1011import getChartMetadataRegistry from '../registries/ChartMetadataRegistrySingleton' ;
11- import { AnnotationLayerMetadata } from '../types/Annotation' ;
12- import { ChartFormData } from '../types/ChartFormData' ;
1312import { QueryData } from '../models/ChartProps' ;
14- import { Datasource } from '../types/Datasource ' ;
13+ import { AnnotationLayerMetadata } from '../types/Annotation ' ;
1514
1615// This expands to Partial<All> & (union of all possible single-property types)
1716type AtLeastOne < All , Each = { [ K in keyof All ] : Pick < All , K > } > = Partial < All > & Each [ keyof Each ] ;
1817
1918export type SliceIdAndOrFormData = AtLeastOne < {
2019 sliceId : number ;
21- formData : Partial < ChartFormData > ;
20+ formData : Partial < QueryFormData > ;
2221} > ;
2322
2423interface AnnotationData {
@@ -28,7 +27,7 @@ interface AnnotationData {
2827export interface ChartData {
2928 annotationData : AnnotationData ;
3029 datasource : object ;
31- formData : ChartFormData ;
30+ formData : QueryFormData ;
3231 queryData : QueryData ;
3332}
3433
@@ -47,7 +46,7 @@ export default class ChartClient {
4746 loadFormData (
4847 input : SliceIdAndOrFormData ,
4948 options ?: Partial < RequestConfig > ,
50- ) : Promise < ChartFormData > {
49+ ) : Promise < QueryFormData > {
5150 /* If sliceId is provided, use it to fetch stored formData from API */
5251 if ( 'sliceId' in input ) {
5352 const promise = this . client
@@ -62,19 +61,19 @@ export default class ChartClient {
6261 * If formData is also specified, override API result
6362 * with user-specified formData
6463 */
65- return promise . then ( ( dbFormData : ChartFormData ) => ( {
64+ return promise . then ( ( dbFormData : QueryFormData ) => ( {
6665 ...dbFormData ,
6766 ...input . formData ,
6867 } ) ) ;
6968 }
7069
7170 /* If sliceId is not provided, returned formData wrapped in a Promise */
7271 return input . formData
73- ? Promise . resolve ( input . formData as ChartFormData )
72+ ? Promise . resolve ( input . formData as QueryFormData )
7473 : Promise . reject ( new Error ( 'At least one of sliceId or formData must be specified' ) ) ;
7574 }
7675
77- async loadQueryData ( formData : ChartFormData , options ?: Partial < RequestConfig > ) : Promise < object > {
76+ async loadQueryData ( formData : QueryFormData , options ?: Partial < RequestConfig > ) : Promise < object > {
7877 const { viz_type : visType } = formData ;
7978 const metaDataRegistry = getChartMetadataRegistry ( ) ;
8079 const buildQueryRegistry = getChartBuildQueryRegistry ( ) ;
@@ -132,17 +131,23 @@ export default class ChartClient {
132131 }
133132
134133 loadChartData ( input : SliceIdAndOrFormData ) : Promise < ChartData > {
135- return this . loadFormData ( input ) . then ( formData =>
136- Promise . all ( [
137- this . loadAnnotations ( formData . annotation_layers ) ,
138- this . loadDatasource ( formData . datasource ) ,
139- this . loadQueryData ( formData ) ,
140- ] ) . then ( ( [ annotationData , datasource , queryData ] ) => ( {
141- annotationData,
142- datasource,
143- formData,
144- queryData,
145- } ) ) ,
134+ return this . loadFormData ( input ) . then (
135+ (
136+ formData : QueryFormData & {
137+ // eslint-disable-next-line camelcase
138+ annotation_layers ?: AnnotationLayerMetadata [ ] ;
139+ } ,
140+ ) =>
141+ Promise . all ( [
142+ this . loadAnnotations ( formData . annotation_layers ) ,
143+ this . loadDatasource ( formData . datasource ) ,
144+ this . loadQueryData ( formData ) ,
145+ ] ) . then ( ( [ annotationData , datasource , queryData ] ) => ( {
146+ annotationData,
147+ datasource,
148+ formData,
149+ queryData,
150+ } ) ) ,
146151 ) ;
147152 }
148153}
0 commit comments