X-Git-Url: https://git.openstreetmap.org./nominatim-ui.git/blobdiff_plain/538e9b96540c07059f725475c2b7fb80278c0dd6..942e9d3331b172ec46dec46d7b8be6d0afcaee6f:/src/handlebar_helpers.js diff --git a/src/handlebar_helpers.js b/src/handlebar_helpers.js index 8970578..20ecb7c 100644 --- a/src/handlebar_helpers.js +++ b/src/handlebar_helpers.js @@ -47,11 +47,22 @@ Handlebars.registerHelper({ if (!aFeature) return ''; if (!aFeature.place_id) return ''; - sTitle = 'details >'; - var sTitle = Handlebars.escapeExpression(sTitle); + sTitle = Handlebars.escapeExpression(sTitle || 'details >'); return new Handlebars.SafeString( - '' + (sTitle ? sTitle : aFeature.place_id ) + '' + '' + sTitle + '' + ); + }, + detailsPermaLink: function(aFeature, sTitle) { + if (!aFeature) return ''; + + var sOSMType = formatOSMType(aFeature.osm_type, false); + if (!sOSMType) return ''; + + sTitle = Handlebars.escapeExpression(sTitle || sOSMType + ' ' + aFeature.osm_id); + + return new Handlebars.SafeString( + '' + sTitle + '' ); }, coverageType: function(aPlace) { @@ -80,7 +91,8 @@ Handlebars.registerHelper({ formatMapIcon: function(sIcon) { if (!sIcon) return; - var url = Nominatim_Config.Images_Base_Url + sIcon; + var url = sIcon; + if (!url.match(/^http/)) url = get_config_value('Images_Base_Url') + url; return new Handlebars.SafeString( '' + sIcon + '' @@ -100,6 +112,47 @@ Handlebars.registerHelper({ return capitalize(aPlace.type.replace(/_/g, ' ')); } }, + formatSearchRank: function(iRank) { + // same as + // https://github.com/openstreetmap/Nominatim/blob/master/sql/functions.sql + // get_searchrank_label() + + if (iRank < 2) { + return 'continent'; + } else if (iRank < 4) { + return 'sea'; + } else if (iRank < 8) { + return 'country'; + } else if (iRank < 12) { + return 'state'; + } else if (iRank < 16) { + return 'county'; + } else if (iRank == 16) { + return 'city'; + } else if (iRank == 17) { + return 'town / island'; + } else if (iRank == 18) { + return 'village / hamlet'; + } else if (iRank == 20) { + return 'suburb'; + } else if (iRank == 21) { + return 'postcode area'; + } else if (iRank == 22) { + return 'croft / farm / locality / islet'; + } else if (iRank == 23) { + return 'postcode area'; + } else if (iRank == 25) { + return 'postcode point'; + } else if (iRank == 26) { + return 'street / major landmark'; + } else if (iRank == 27) { + return 'minory street / path'; + } else if (iRank == 28) { + return 'house / building'; + } else { + return 'other: ' + iRank; + } + }, tooManyHierarchyLinesWarning: function(aPlace) { if (!aPlace.hierarchy) return;