import { i18n } from '@kbn/i18n' ; import { CLIENT_GEO_COUNTRY_ISO_CODE , SERVICE_NAME , TRANSACTION_URL , USER_AGENT_DEVICE , USER_AGENT_NAME , USER_AGENT_OS , } from './elasticsearch_fieldnames' ; export const uxFiltersByName = { transactionUrl : { title : i18n . translate ( 'xpack.apm.localFilters.titles.transactionUrl' , { defaultMessage : 'URL' , } ) , fieldName : TRANSACTION_URL , } , transactionUrlExcluded : { title : i18n . translate ( 'xpack.apm.localFilters.titles.transactionUrl' , { defaultMessage : 'URL' , } ) , fieldName : TRANSACTION_URL , excluded : true , } , browser : { title : i18n . translate ( 'xpack.apm.localFilters.titles.browser' , { defaultMessage : 'Browser' , } ) , fieldName : USER_AGENT_NAME , } , browserExcluded : { title : i18n . translate ( 'xpack.apm.localFilters.titles.browser' , { defaultMessage : 'Browser' , } ) , fieldName : USER_AGENT_NAME , excluded : true , } , device : { title : i18n . translate ( 'xpack.apm.localFilters.titles.device' , { defaultMessage : 'Device' , } ) , fieldName : USER_AGENT_DEVICE , } , deviceExcluded : { title : i18n . translate ( 'xpack.apm.localFilters.titles.device' , { defaultMessage : 'Device' , } ) , fieldName : USER_AGENT_DEVICE , excluded : true , } , location : { title : i18n . translate ( 'xpack.apm.localFilters.titles.location' , { defaultMessage : 'Location' , } ) , fieldName : CLIENT_GEO_COUNTRY_ISO_CODE , } , locationExcluded : { title : i18n . translate ( 'xpack.apm.localFilters.titles.location' , { defaultMessage : 'Location' , } ) , fieldName : CLIENT_GEO_COUNTRY_ISO_CODE , excluded : true , } , os : { title : i18n . translate ( 'xpack.apm.localFilters.titles.os' , { defaultMessage : 'OS' , } ) , fieldName : USER_AGENT_OS , } , osExcluded : { title : i18n . translate ( 'xpack.apm.localFilters.titles.os' , { defaultMessage : 'OS' , } ) , fieldName : USER_AGENT_OS , excluded : true , } , serviceName : { title : i18n . translate ( 'xpack.apm.localFilters.titles.serviceName' , { defaultMessage : 'Service name' , } ) , fieldName : SERVICE_NAME , } , } ; export type UxLocalUIFilterName = keyof typeof uxFiltersByName ; export interface UxLocalUIFilter { name : UxLocalUIFilterName ; title : string ; fieldName : string ; excluded ? : boolean ; value : string [ ] ; } type UxLocalUIFilterMap = { [ key in UxLocalUIFilterName ] : UxLocalUIFilter ; } ; export const uxLocalUIFilterNames = Object . keys ( uxFiltersByName ) as UxLocalUIFilterName [ ] ; export const uxLocalUIFilters = uxLocalUIFilterNames . reduce ( ( acc , key ) => { const field = uxFiltersByName [ key ] ; return { ... acc , [ key ] : { ... field , name : key , } , } ; } , { } as UxLocalUIFilterMap ) ;