import { i18n } from '@kbn/i18n' ; import { ExpressionFunctionDefinition , Datatable , Render } from '../../../expressions/public' ; import { vislibSlicesResponseHandler } from './vislib/response_handler' ; import { PieVisParams } from './pie' ; import { VislibChartType } from './types' ; import { vislibVisName } from './vis_type_vislib_vis_fn' ; export const vislibPieName = 'vislib_pie_vis' ; interface Arguments { visConfig : string ; } export interface PieRenderValue { visType : Extract < VislibChartType , 'pie' > ; visData : unknown ; visConfig : PieVisParams ; } export type VisTypeVislibPieExpressionFunctionDefinition = ExpressionFunctionDefinition < typeof vislibPieName , Datatable , Arguments , Render < PieRenderValue > > ; export const createPieVisFn = ( ) : VisTypeVislibPieExpressionFunctionDefinition => ( { name : vislibPieName , type : 'render' , inputTypes : [ 'datatable' ] , help : i18n . translate ( 'visTypeVislib.functions.pie.help' , { defaultMessage : 'Pie visualization' , } ) , args : { visConfig : { types : [ 'string' ] , default : '"{}"' , help : 'vislib pie vis config' , } , } , fn ( input , args , handlers ) { const visConfig = JSON . parse ( args . visConfig ) as PieVisParams ; const visData = vislibSlicesResponseHandler ( input , visConfig . dimensions ) ; if ( handlers ?. inspectorAdapters ?. tables ) { handlers . inspectorAdapters . tables . logDatatable ( 'default' , input ) ; } return { type : 'render' , as : vislibVisName , value : { visData , visConfig , visType : VislibChartType . Pie , } , } ; } , } ) ;