Hello,
does anybody know how to create a tooltip on hover for a Kendo treemap? Something like this but for ASP.NET MVC:
http://docs.telerik.com/kendo-ui/controls/charts/treemap/how-to/show-treemap-tooltip
I already tried this, but when i move the mouse over the fields nothing appears..
$("#treemap").kendoTooltip({ filter: ".k-leaf,.k-treemap-title", position: "top", content: function (e) { var treemap = $("#treemap").data("kendoTreeMap"); var item = treemap.dataItem(e.target.closest(".k-treemap-tile")); return item.name + ": " + item.value; } });
When i use the jquery function i can write the right values of each Treemap fiel in the javascript console.
$("#treeMap").on("mouseenter", ".k-leaf", function () { var item = $("#treeMap").data("kendoTreeMap").dataItem($(this).closest(".k-treemap-tile")); var text = "Name: " + item.Name + " Value: " + item.Value;console.log(text);
Thanks,
Stefan
5 Answers, 1 is accepted
Thank you for taking the time to explore the functionality of the UI for ASP.NET MVC wrappers.
To achieve the same functionality as in the referenced Kendo UI how-to article with the UI for ASP.NET MVC wrappers, you can do the following:
- Initialize the Kendo UI Tooltip from an element which has an id equal to the Name() of the TreeMap
For example:
@(Html.Kendo().TreeMap() .Name("treeMap")// configuration)@(Html.Kendo().Tooltip() .For("#treeMap"))- Use a .ContentTemplateId("template")
<script id="template" type="text/x-kendo-template"> <p>#=getItem(data.target)#</p></script>API reference: http://docs.telerik.com/aspnet-mvc/api/Kendo.Mvc.UI.Fluent/TooltipSettingsBuilder#methods-ContentTemplateId(System.String)
Official Demo: http://demos.telerik.com/aspnet-mvc/tooltip/template
- In the content template, add a JavaScript function, which will return the desired dataItem information
<script>function getItem(tile) { var treemap = $("#treeMap").data("kendoTreeMap"); var item = treemap.dataItem(tile); return item.Name + ": " + item.Value;}</script>Kind Regards,
Alex Hajigeorgieva
Progress Telerik
Hi Alex,
I've a fab looking treeMap but am unable to display a tooltip with the value of the current segment.
I think I've followed your directions but the item variable is undefined when the getItem(tile) script executes so I am missing something fundamental!
My client side code looks like the following:
01.<div class="container-fluid">02. <div class="row my-5">03. <div class="col">04. @(Html.Kendo().TreeMap()05. .Name("treeMap")06. .DataSource(ds => ds.Read(read => read.Action("Stats_Read", "Dashboard")).Model(m => m.Children("Items")))07. .ValueField("Value")08. .TextField("Name")09. .ColorField("Color")10. .Type(TreeMapType.Squarified)11. .Deferred())12. 13. @(Html.Kendo().Tooltip()14. .For("#treeMap")15. .ContentTemplateId("template")16. .Deferred())17. </div>18. </div>19. 20.</div>21. 22.<script id="template" type="text/x-kendo-template">23. <p>#=getItem(data.target)#</p>24.</script>25. 26.<script>27. function getItem(tile) {28. var treeMap = $("#treeMap").data("kendoTreeMap");29. var item = treeMap.dataItem(tile);30. 31. return item.Name + ": " + item.Value + " properties.";32. }33.</script>
Where am I going wrong?
Kind regards,
Marc
I am pleased to hear that you are happy with the appearance of the Kendo UI TreeMap.
As far as the tooltip foes, you can try adding a filter to the Kendo UI Tooltip as well and also checking that the correct item and target are being passed to the Tooltip.
@(Html.Kendo().Tooltip() .For("#treeMap") .Filter(".k-leaf,.k-treemap-title") .ContentTemplateId("template"))<script id="template" type="text/x-kendo-template"> <p>#=getItem(data.target)#</p></script><script> function getItem(target) { var treemap = $("#treeMap").data("kendoTreeMap"); var item = treemap.dataItem(target.closest(".k-treemap-tile")); console.log(target, item, treemap); return item.Name + ": " + item.Value; }</script>If the suggestion does not help, can you log data in the template like below and let me know what you get:
<script id="template" type="text/x-kendo-template"> # console.log(data) # <p>#=getItem(data.target)#</p></script>Kind Regards,
Alex Hajigeorgieva
Progress Telerik
Thank you Alex, that has worked perfectly.
If I have understood correctly, the tooltip needed to be filtered so that it is only triggered when it's over a leaf which is when the item data is available.
Thank you for the quick response.
Marc
I am glad that the requirements to show a tooltip over the TreeMap for ASP.NET MVC are now met.
The filter option determines over which elements the Kendo UI Tooltip should be shown.
In this case, I also edited the JavaScript code, looking for the closest tile - the HTML element to which a dataItem is bound. And as all our data-bound widgets have a dataItem() method, we are able to extract the matching dataItem(data object) from its HTML representation(the tile).
Kind Regards,
Alex Hajigeorgieva
Progress Telerik
