11import { ISelection , IVariable , IWidget } from '../../../Dashboard'
2- import { ILayerFeature , IMapDialogSettings , IMapTooltipSettings , IMapTooltipSettingsLayer , IMapWidgetCrossNavigation , IMapWidgetLayer , IMapWidgetLinkConfiguration , IMapWidgetPreview , IMapWidgetSelectionConfiguration , IMapWidgetVisualizationType } from '../../../interfaces/mapWidget/DashboardMapWidget'
2+ import { ILayerFeature , IMapDialogSettings , IMapDialogSettingsProperty , IMapTooltipSettings , IMapTooltipSettingsLayer , IMapWidgetCrossNavigation , IMapWidgetLayer , IMapWidgetLinkConfiguration , IMapWidgetPreview , IMapWidgetSelectionConfiguration , IMapWidgetVisualizationType } from '../../../interfaces/mapWidget/DashboardMapWidget'
33import { getColumnName } from '../LeafletHelper'
44import L from 'leaflet'
55import { ChartValuesRecord } from './MapChartsVizualizationHelper'
@@ -23,6 +23,7 @@ export const createDialogFromDataset = (tooltip: boolean, layerVisualizationSett
2323 const layersList = settings . layers . filter ( ( layer : IMapTooltipSettingsLayer ) => layer . name === layerVisualizationSettings . target )
2424 layersList . forEach ( ( item : IMapTooltipSettingsLayer ) => {
2525 item . columns . forEach ( ( column : string ) => {
26+ const layerSettings = settings . layers . find ( ( layerSettings : IMapDialogSettingsProperty | IMapTooltipSettingsLayer ) => layerSettings . name === layerVisualizationSettings . target && layerSettings . columns . includes ( column ) )
2627 const value = `${ column } : ${ row [ getColumnName ( column , meta ) ] } `
2728 const dataMap = { }
2829
@@ -31,7 +32,7 @@ export const createDialogFromDataset = (tooltip: boolean, layerVisualizationSett
3132 dataMap [ field . header ] = row [ field . dataIndex ]
3233 } )
3334
34- list . append ( createTooltipListItem ( value , ( settings as IMapDialogSettings ) . style , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables , dataMap ) )
35+ list . append ( createTooltipListItem ( value , ( settings as IMapDialogSettings ) . style , layerSettings , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables , dataMap ) )
3536 } )
3637 } )
3738 if ( tooltip ) return L . tooltip ( ) . setContent ( list )
@@ -65,18 +66,7 @@ export const addTooltipToMarkerForLayerData = (feature: ILayerFeature, model: IW
6566}
6667
6768// Function that creates popup/tooltip for the maps that use layers as the target
68- const createDialogForLayerData = (
69- feature : ILayerFeature ,
70- tooltip : boolean ,
71- layerVisualizationSettings : IMapWidgetVisualizationType ,
72- settings : IMapTooltipSettings | IMapDialogSettings ,
73- value : string | number | ChartValuesRecord ,
74- widgetModel : IWidget ,
75- activeSelections : ISelection [ ] ,
76- dashboardId : string ,
77- variables : IVariable [ ] ,
78- foreignKeyValue ?: string | null
79- ) => {
69+ const createDialogForLayerData = ( feature : ILayerFeature , tooltip : boolean , layerVisualizationSettings : IMapWidgetVisualizationType , settings : IMapTooltipSettings | IMapDialogSettings , value : string | number | ChartValuesRecord , widgetModel : IWidget , activeSelections : ISelection [ ] , dashboardId : string , variables : IVariable [ ] , foreignKeyValue ?: string | null ) => {
8070 const container = document . createElement ( 'div' )
8171 const layersList = settings . layers . filter ( ( layer : IMapTooltipSettingsLayer ) => layer . name === layerVisualizationSettings . target ) as any
8272
@@ -88,18 +78,19 @@ const createDialogForLayerData = (
8878 const targetDatasetList = document . createElement ( 'ul' )
8979 targetDatasetList . classList . add ( 'customLeafletPopup' )
9080 targetDatasetList . append ( createTooltipListHeader ( layerVisualizationSettings . targetDataset ) )
91- targetDatasetList . append ( createTooltipListItem ( `${ layerVisualizationSettings . targetDatasetForeignKeyColumn } : ${ getTooltipHeaderValue ( value , layerVisualizationSettings . targetDatasetForeignKeyColumn , foreignKeyValue ) } ` , ( settings as IMapDialogSettings ) . style , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables ) )
81+ targetDatasetList . append ( createTooltipListItem ( `${ layerVisualizationSettings . targetDatasetForeignKeyColumn } : ${ getTooltipHeaderValue ( value , layerVisualizationSettings . targetDatasetForeignKeyColumn , foreignKeyValue ) } ` , ( settings as IMapDialogSettings ) . style , null , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables ) )
9282 container . appendChild ( targetDatasetList )
9383 }
9484
9585 const list = document . createElement ( 'ul' )
9686 list . classList . add ( 'customLeafletPopup' )
9787
9888 layersList . forEach ( ( item : IMapTooltipSettingsLayer ) => {
99- if ( layerVisualizationSettings . targetDataset && layerVisualizationSettings . targetProperty ) list . append ( createTooltipListHeader ( item . name ) )
89+ if ( layerVisualizationSettings . targetDataset && layerVisualizationSettings . targetProperty ) list . append ( createTooltipListHeader ( layerVisualizationSettings . layerName ?? '' ) )
10090 item . columns . forEach ( ( property : string ) => {
91+ const layerSettings = settings . layers . find ( ( layerSettings : IMapDialogSettingsProperty | IMapTooltipSettingsLayer ) => layerSettings . name === layerVisualizationSettings . target && layerSettings . columns . includes ( property ) )
10192 const dataMap = feature . properties
102- list . append ( createTooltipListItem ( `${ property } : ${ feature . properties [ property ] ?? '' } ` , ( settings as IMapDialogSettings ) . style , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables , dataMap ) )
93+ list . append ( createTooltipListItem ( `${ property } : ${ feature . properties [ property ] ?? '' } ` , ( settings as IMapDialogSettings ) . style , layerSettings , widgetModel , layerVisualizationSettings , activeSelections , dashboardId , variables , dataMap ) )
10394 } )
10495 } )
10596
@@ -122,9 +113,13 @@ const createTooltipListHeader = (header: string) => {
122113 return headerElement
123114}
124115
125- const createTooltipListItem = ( value : string , style : IListItemStyle | undefined , widgetModel : IWidget , layerVisualizationSettings : IMapWidgetVisualizationType , activeSelections : ISelection [ ] , dashboardId : string , variables : IVariable [ ] , dataMap ?: Record < string , string | number > | null ) => {
116+ const createTooltipListItem = ( value : string , style : IListItemStyle | undefined , layerSettings : IMapDialogSettingsProperty | IMapTooltipSettingsLayer | null | undefined , widgetModel : IWidget , layerVisualizationSettings : IMapWidgetVisualizationType , activeSelections : ISelection [ ] , dashboardId : string , variables : IVariable [ ] , dataMap ?: Record < string , string | number > | null ) => {
126117 const li = document . createElement ( 'li' )
127- li . innerHTML = value
118+ const [ rawValueColumn , rawValue ] = value . split ( ':' )
119+ const column = rawValueColumn . trim ( )
120+ const formattedValue = rawValue . trim ( )
121+
122+ li . innerHTML = column + ': ' + ( layerSettings ?. prefix || '' ) + getFormattedValueForTheTooltipListItem ( formattedValue , layerSettings ?. precision ) + ( layerSettings ?. suffix || '' )
128123
129124 li . classList . add ( 'kn-cursor-pointer' )
130125
@@ -150,6 +145,18 @@ const createTooltipListItem = (value: string, style: IListItemStyle | undefined,
150145 return li
151146}
152147
148+ const getFormattedValueForTheTooltipListItem = ( value : string , precision : number | undefined ) => {
149+ if ( ! precision ) return value
150+
151+ const floatValue = parseFloat ( value )
152+
153+ if ( ! isNaN ( floatValue ) && Number . isFinite ( floatValue ) && ! Number . isInteger ( floatValue ) ) {
154+ return floatValue . toFixed ( precision )
155+ }
156+
157+ return value
158+ }
159+
153160const checkInteractionsIfColumnIsClickable = ( value : string , widgetModel : IWidget , layerVisualizationSettings : IMapWidgetVisualizationType ) => {
154161 const [ rawValueColumn ] = value . split ( ':' )
155162 const column = rawValueColumn . trim ( )
0 commit comments