I have a Kendo UI Sparkline as part of my dashboard. I have a dropdown control that has dates in it and I want my Sparkline to change when the date is changed on the date dropdown. I've checked the URL of the datasource and it updates when the dropdown is changed, however the sparkline doesn't make the API call when I perform a datasource sync. How do I get the sparkline to update? I'm trying to mimic the functionality present in the Northwind sample app located here: http://demos.telerik.com/aspnet-mvc/html5-dashboard-sample-app/
Here is my code:
<div class="row"> <div class="col-md-12"> <input type="search" id="sparklineDropdown" style="width: 200px;float:right;"/> </div></div><div class="row"> <div id="RevenueContainer" class="col-md-4"> <h4>REVENUE</h4> <p><span style="font-weight:bold;font-size:1.5em;" id="RevenueLabel"></span></p> <span id="Revenue" class="k-sparkline" style="width: 100%;line-height: 175px;"></span> <script> </script> </div> <div id="WorkOrderContainer" class="col-md-4"> <h4>WORK ORDERS</h4> <p><span style="font-weight:bold;font-size:1.5em;" id="WorkOrderLabel"></span></p> <span id="WorkOrders" class="k-sparkline" style="width: 100%;line-height: 175px;"></span> </div> <div class="col-md-4"> <script> function createChart() { ... } $(document).ready(createChart); $(document).bind("kendo:skinChange", createChart); </script> </div> </div></div> <div id="grid"></div> <script> $(document).ready(function() { var data = [ { text: "This month", value: "0" }, { text: "September 2016", value: "1" }, { text: "August 2016", value: "2" }, { text: "July 2016", value: "3" } ]; $("#sparklineDropdown").kendoDropDownList({ dataTextField: "text", dataValueField: "value", dataSource: data, change: onChange }); }); function onChange() { var d = new Date(); d.setMonth(d.getMonth() - $("#sparklineDropdown").val()); var wosparkline = $("#WorkOrders").data("kendoSparkline"); wosparkline.dataSource.transport.options.read.url = "/api/workorder/workordersbymonth/all/" + d.getFullYear() + "/" + (d.getMonth() + 1); wosparkline.dataSource.sync(); } function createWOSparklines() { var workorderDataSource = new kendo.data.DataSource({ type: "json", transport: { read: { url: "/api/workorder/workordersbymonth/all/2016/10", contentType: "application/json" } }, schema: { data: "Data", total: "Total", model: { fields: { Date : { type: "date" }, WorkOrders: { type: "number" } } } } }); $("#WorkOrders").kendoSparkline({ theme: "metro", series: [{ type: "column", field: "WorkOrders", color: "#1996e4", gap: 0.2, categoryField: "Date", aggregate: "sum" }], categoryAxis: [{ type: "date", baseUnit: "days" }], dataSource: workorderDataSource, autoBind: true, dataBound: function onDataBound(e) { $('#WorkOrderLabel').text(e.sender.dataSource.total()); } }); } function createSparklines() { // Create var revenueDataSource = new kendo.data.DataSource({ type: "json", transport: { read: { url: "/api/workorder/revenuebymonth/all/2016/10", contentType: "application/json" } }, schema: { data: "Data", total: "Total", model: { fields: { Date: { type: "date" }, Revenue: { type: "number" } } } } }); $("#Revenue").kendoSparkline({ theme: "metro", series: [{ type: "column", field: "Revenue", color: "#1996e4", gap: 0.2, categoryField: "Date", aggregate: "sum" }], categoryAxis: [{ type: "date", baseUnit: "days" }], dataSource: revenueDataSource, tooltip: { format: "{0:c2}" }, autoBind: true, dataBound: function onDataBound(e) { $('#RevenueLabel').text("$" + e.sender.dataSource.total() + ".00"); } }); } $(document).ready(createSparklines); $(document).bind("kendo: skinChange", createSparklines); $(document).ready(createWOSparklines); $(document).bind("kendo: skinChange", createWOSparklines); </script>
