2013-12-03 2 views
1

Я новичок в Highcharts, Sharepoint и JS. Что мне нужно сделать, это сделать каждую ссылку бар с видом SharePoint Этот код получает данныеHighcharts добавление url к диаграмме столбца

IWSChartBuilder.EngagementsSegmentChart = функция() {

var load = function() { 
    var year = new Date().getFullYear(); 
    //Variable to hold counts 
    var countArray = []; 

    $.when(
     //Consulting Engagements List 
     IWSChartBuilder.RESTQuery.execute("valid REST query") 
    ).done(
     function (engagements1) { 
      var dataArray = []; 
      var countArray = []; 
      //Get data from Consulting Engagements list 
      var results = engagements1.d.results; 
      for (var i = 0; i < results.length; i++) { 
       for (var i = 0; i < results.length; i++) { 
        dataArray.push(results[i].Segment); 
       } 
      } 

    var baseUrl = "valid url"; 
      countArray = IWSChartBuilder.Utilities.buildCategoryCountsWithLink(countArray, dataArray, baseUrl); 

      //Put data into format for stacked bar chart 
      var seriesData = []; 
      var xCategories = []; 
      var links = []; 
      for (var i = 0; i < countArray.length; i++) { 
       xCategories.push(countArray[i].name); 
       seriesData.push(countArray[i].y); 
       links.push(countArray[i].url); 
      } 
      //Build Chart 
      IWSChartBuilder.Utilities.loadColumnChartWithLink(links, xCategories, seriesData, "#engagementSegmentChart", "Engagements by Segment", "Total Projects"); 
     } 
    ).fail(
     function (engagements1) { 
      $("#engagementSegmentChart").html("<strong>An error has occurred.</strong>"); 
     } 
    ); 
}; 

return { 
    load: load 
} 
}(); 

// код для отображения графических

loadColumnChartWithLink = function (xCategories, seriesData, divId, chartTitle, yAxisTitle) { 
    //Build Column Chart 
    $(divId).highcharts({ 
     chart: { 
      type: 'column' 
     }, 
     credits: { 
      enabled: false 
     }, 
     title: { 
      text: chartTitle 
     }, 
     xAxis: { 
      categories: xCategories, 
      allowDecimals: false, 
      labels: { 
       rotation: -45, 
       align: 'right' 
      } 
     }, 
     yAxis: { 
      min: 0, 
      allowDecimals: false, 
      title: { 
       text: yAxisTitle 
      } 
     }, 
     legend: { 
      enabled: false 
     }, 
     plotOptions: { 
      bar: { 
       dataLabels: { 
        enabled: false 
       } 
      }, 
      series: { 
       cursor: 'pointer', 
       point: { 
        events: { 
         click: function() { 
          location.href = this.options.url; 
         } 
        } 
       } 
      } 
     }, 
     series: [{ 
      name: yAxisTitle, 
      data: seriesData 
     }] 
    }); 
}, 

Любая помощь с благодарностью Mark

ответ

0

Вам необходимо адаптировать свои данные для создания объектов в виде точек, например в следующем примере:

{y:10,url:'http://google.com'} 

, а затем нажмите событие click по порядку.

http://jsfiddle.net/2tL5T/

+0

Куда уходит? – skifreak

+0

Могу ли я передать массив url на loadColumnChartWithLink, а затем связать его каким-то образом? – skifreak

+0

«Куда это идет?» ? Он должен быть в объекте series.data в массиве, как в прикрепленном jsfiddle. –

Смежные вопросы