@@ -28,6 +28,10 @@ import { tabifyGetColumns } from '../../../agg_response/tabify/_get_columns';
2828import chrome from '../../../chrome' ;
2929// @ts -ignore
3030import { fieldFormats } from '../../../registry/field_formats' ;
31+ // @ts -ignore
32+ import { dateRange } from '../../../utils/date_range' ;
33+ // @ts -ignore
34+ import { ipRange } from '../../../utils/ip_range' ;
3135
3236interface TermsFieldFormatParams {
3337 otherBucketLabel : string ;
@@ -58,7 +62,8 @@ const getFieldFormat = (id: string | undefined, params: object = {}) => {
5862export const createFormat = ( agg : AggConfig ) : SerializedFieldFormat => {
5963 const format : SerializedFieldFormat = agg . params . field ? agg . params . field . format . toJSON ( ) : { } ;
6064 const formats : Record < string , ( ) => SerializedFieldFormat > = {
61- date_range : ( ) => ( { id : 'string' } ) ,
65+ date_range : ( ) => ( { id : 'date_range' , params : format } ) ,
66+ ip_range : ( ) => ( { id : 'ip_range' , params : format } ) ,
6267 percentile_ranks : ( ) => ( { id : 'percent' } ) ,
6368 count : ( ) => ( { id : 'number' } ) ,
6469 cardinality : ( ) => ( { id : 'number' } ) ,
@@ -109,6 +114,20 @@ export const getFormat: FormatFactory = (mapping = {}) => {
109114 } ) ;
110115 } ) ;
111116 return new RangeFormat ( ) ;
117+ } else if ( id === 'date_range' ) {
118+ const nestedFormatter = mapping . params as SerializedFieldFormat ;
119+ const DateRangeFormat = FieldFormat . from ( ( range : any ) => {
120+ const format = getFieldFormat ( nestedFormatter . id , nestedFormatter . params ) ;
121+ return dateRange . toString ( range , format . convert . bind ( format ) ) ;
122+ } ) ;
123+ return new DateRangeFormat ( ) ;
124+ } else if ( id === 'ip_range' ) {
125+ const nestedFormatter = mapping . params as SerializedFieldFormat ;
126+ const IpRangeFormat = FieldFormat . from ( ( range : any ) => {
127+ const format = getFieldFormat ( nestedFormatter . id , nestedFormatter . params ) ;
128+ return ipRange . toString ( range , format . convert . bind ( format ) ) ;
129+ } ) ;
130+ return new IpRangeFormat ( ) ;
112131 } else if ( isTermsFieldFormat ( mapping ) && mapping . params ) {
113132 const params = mapping . params ;
114133 return {
0 commit comments