2013-04-05 3 views
2

У меня есть требование, т. Е. На основе выбора дерева, выберите нулевую ось, которую нужно обновить. Я использую 4 флажка с 4-значной осью. Когда я проверяю первый позиция, соответствующая оси значений, должна быть изменена .3 Другая ось должна находиться в невидимом состоянии.Основываясь на выборе, можно изменить ось значений

Здесь я попытался с некоторым кодом и обновлен.

Код:

<div id="treeview"></div> 
    <div id="example" class="k-content"> 
      <div class="chart-wrapper"> 
       <div id="chart"></div> 
      </div> 
     </div> 

var valueAxes = [ 
     { name: "KM",visible:false, 
     title: { text: "KM" ,visible:false} 
           }, 
           { name: "Miles Per Gallon", 
            title: { text: "Miles Per Gallon" } 
           }, 

          { 
           name: "Miles", 

           title: { text: "Miles " } 
          }, 

          { 
           name: "liters per 100km", 
           title: { text: "liters per 100km" } 
          } 
         ]; 
    function createChart() { 
         $("#chart").kendoChart({ 

          legend: { 
           position: "top" 
          }, 
          series: [{ 
           type: "column", 
           data: [20, 40, 45, 30, 50], 
           stack: true, 
           name: "on battery", 
           color: "#003c72" 
          }, { 
           type: "column", 
           data: [20, 30, 35, 35, 40], 
           stack: true, 
           name: "on gas", 
           color: "#0399d4" 
          }, { 
           type: "area", 
           data: [30, 38, 40, 32, 42], 
           name: "mpg", 
           color: "#642381" 

          }, { 
           type: "area", 
           data: [7.8, 6.2, 5.9, 7.4, 5.6], 
           name: "l/100 km", 
           color: "#e5388a" 

          }], 
          valueAxes:valueAxes,      
          categoryAxis: { 
           categories: ["Mon", "Tue", "Wed", "Thu", "Fri"], 

           axisCrossingValues: [0, 0, 10, 10] 
          } 

         }); 
        } 

     $(document).ready(function() {  
      createChart();  
      $("#treeview").kendoTreeView({ 
       checkboxes: { 
       checkChildren: true 
       }, 
      dataSource: [{ 
      id: 1, 
      text: "Value axis", 
      expanded: true, 
      items: [{ 
       id: 2, 
       text: "KM" 
      }, 
      { 
       id: 3, 
       text: "Miles Per Gallon" 
      }, 
       { 
       id: 4, 
       text: "Miles " 
      }, 
       { 
       id: 5, 
       text: "liters per 100km" 
      }] 
     }] 
    }).data("kendoTreeView"); 
    $("#treeview").on("change", function (e) { 
     var chart = $("#chart").data("kendoChart"); 
     var checkedSeries = [];  
     $("#treeview").find(":checked").each(function() { 
      var nodeText =$(this).parent().parent().text();   
      $.each(valueAxes, function(index, valueAxes) { 
      if (valueAxes.name == nodeText) { 
       checkedSeries.push(valueAxes); 
      checkedSeries.visible==="true"; 
      checkedSeries.title.visible===true; 
       } 
      }); 
     });  
     chart.options.valueAxes = checkedSeries; 
     chart.refresh(); 
    });      
    }); 

jsbin: Value axis change

ответ

2


Да, можно связать и отвязать ось значений и серию в то время.
Изменение скриптов, как показано ниже

var valueAxes = [ 
       { 
        name: "KM", labels: { 
         format: "{0}" 
        }, min: 0, 
        max: 9, 


        title: { text: "KM" } 
       }, 
       { 
        name: "Miles Per Gallon", labels: { 
         format: "{0}%" 
        }, min: 0, 
        max: 5, 


        title: { text: "Miles Per Gallon" } 
       }, 

       { 
        name: "Miles", labels: { 
         format: "{0}%" 
        }, 

        title: { text: "Miles " } 
       }, 

       { 
        name: "liters per 100km", min: 0, 
        max: 1, 

        title: { text: "liters per 100km" } 
       }]; 

     var series = [{ 
      type: "column", 
      axis: "KM", 
      data: [20, 40, 45, 30, 50], 
      stack: true, 
      name: "KM", 
      color: "#003c72" 
     }, { 
      type: "column", 
      data: [20, 30, 35, 35, 40], 
      axis: "Miles Per Gallon", 
      stack: true, 
      name: "Miles Per Gallon", 
      color: "#0399d4" 
     }, { 
      type: "column", 
      data: [30, 38, 40, 32, 42], 
      axis: "Miles", 
      name: "Miles", 
      color: "#642381" 

     }, { 
      type: "column", 
      axis: "liters per 100km", 
      data: [7.8, 6.2, 5.9, 7.4, 5.6], 
      name: "liters per 100km", 
      color: "#e5388a" 

     }]; 
     function createChart(inputValueAxes, inputSeries) { 
      $("#chart").kendoChart({ 

       legend: { 
        position: "top" 
       }, 
       series: inputSeries, 
       valueAxes: inputValueAxes, 
       categoryAxis: { 
        categories: ["Mon", "Tue", "Wed", "Thu", "Fri"], 

        axisCrossingValues: [0, 0, 10, 10] 
       } 

      }); 
     } 

     $(document).ready(function() { 
      createChart(valueAxes, series); 
      $("#treeview").kendoTreeView({ 
       checkboxes: { 
        checkChildren: true 
       }, 
       dataSource: [{ 
        id: 1, 
        text: "Value axis", 
        expanded: true, 
        items: [{ 
         id: 2, 
         text: "KM" 
        }, 
        { 
         id: 3, 
         text: "Miles Per Gallon" 
        }, 
         { 
          id: 4, 
          text: "Miles " 
         }, 
         { 
          id: 5, 
          text: "liters per 100km" 
         }] 
       }] 
      }).data("kendoTreeView"); 

      $("#treeview").on("change", function (e) { 
       var chart = $("#chart").data("kendoChart"); 
       var checkedSeries = []; 
       var checkedAxes = []; 
       if ($("#treeview").find(":checked").length !== 0) { 
        $("#treeview").find(":checked").each(function() { 
         var nodeText = $(this).parent().parent().text(); 

         $.each(valueAxes, function (index, valueAxes) { 
          if (valueAxes.name == nodeText.trim()) { 
           checkedAxes.push(valueAxes); 
           checkedAxes.visible = true; 
          } 
         }); 

         $.each(series, function (index, series) { 
          if (series.name == nodeText.trim()) { 
           checkedSeries.push(series); 
          } 
         }); 
        });      

        createChart(checkedAxes, checkedSeries); 
       } 

       else { 
        createChart(checkedAxes, checkedSeries); 
       } 

      }); 
     }); 

См этот http://jsbin.com/eyibar/49/edit

2

Для удобства Intially я загрузить все диаграммы axeses. Его рабочий, как вы просили ....

jsbin: http://jsbin.com/eyibar/37/edit

<html> 
    <head> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.common.min.css" rel="stylesheet" type="text/css" /> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.rtl.min.css" rel="stylesheet" type="text/css" /> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.default.min.css" rel="stylesheet" type="text/css" /> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.dataviz.min.css" rel="stylesheet" type="text/css" /> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.dataviz.default.min.css" rel="stylesheet" type="text/css" /> 
     <link href="http://cdn.kendostatic.com/2013.1.319/styles/kendo.mobile.all.min.css" rel="stylesheet" type="text/css" /> 
     <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
     <script src="http://cdn.kendostatic.com/2013.1.319/js/kendo.all.min.js"></script> 
     <meta charset="utf-8" /> 
     <title>JS Bin</title> 
     <style> 
      #chart { width: 600px; } 
     </style> 
    </head> 
    <body> 
     <div id="treeview"></div> 
     <div id="example" class="k-content"> 
      <div class="chart-wrapper"> 
       <div id="chart"></div> 
      </div> 
     </div> 

     <script type="text/javascript"> 
      var valueAxes = [ 
       { 
        name: "KM", 
        title: { text: "KM" } 
       }, 
       { 
        name: "Miles Per Gallon", 
        title: { text: "Miles Per Gallon" } 
       }, 

       { 
        name: "Miles", 
        title: { text: "Miles " } 
       }, 

       { 
        name: "liters per 100km", 
        title: { text: "liters per 100km" } 
       }]; 

      function createChart(valueAxes) { 
       $("#chart").kendoChart({ 

        legend: { 
         position: "top" 
        }, 
        series: [{ 
         type: "column", 
         data: [20, 40, 45, 30, 50], 
         stack: true, 
         name: "on battery", 
         color: "#003c72" 
        }, { 
         type: "column", 
         data: [20, 30, 35, 35, 40], 
         stack: true, 
         name: "on gas", 
         color: "#0399d4" 
        }, { 
         type: "area", 
         data: [30, 38, 40, 32, 42], 
         name: "mpg", 
         color: "#642381" 

        }, { 
         type: "area", 
         data: [7.8, 6.2, 5.9, 7.4, 5.6], 
         name: "l/100 km", 
         color: "#e5388a" 

        }], 
        valueAxes: valueAxes, 
        categoryAxis: { 
         categories: ["Mon", "Tue", "Wed", "Thu", "Fri"], 

         axisCrossingValues: [0, 0, 10, 10] 
        } 

       }); 
      } 

      $(document).ready(function() { 
       createChart(valueAxes); 
       $("#treeview").kendoTreeView({ 
        checkboxes: { 
         checkChildren: true 
        }, 
        dataSource: [{ 
         id: 1, 
         text: "Value axis", 
         expanded: true, 
         items: [{ 
          id: 2, 
          text: "KM" 
         }, 
         { 
          id: 3, 
          text: "Miles Per Gallon" 
         }, 
          { 
           id: 4, 
           text: "Miles " 
          }, 
          { 
           id: 5, 
           text: "liters per 100km" 
          }] 
        }] 
       }).data("kendoTreeView"); 

       $("#treeview").on("change", function (e) { 
        var chart = $("#chart").data("kendoChart"); 
        var checkedSeries = []; 
        if ($("#treeview").find(":checked").length != 0) { 
         $("#treeview").find(":checked").each(function() { 
          var nodeText = $(this).parent().parent().text(); 
          $.each(valueAxes, function (index, valueAxes) { 
           if (valueAxes.name == nodeText.trim()) { 
            checkedSeries.push(valueAxes); 
            checkedSeries["visible"] = true; 
           } 
          }); 
         }); 
         createChart(checkedSeries); 
        } 
        else { 
         createChart(checkedSeries); 
        } 
       }); 
      }); 

     </script> 
    </body> 
    </html> 
+0

Большое спасибо ... Его работает отлично ... – kvs

+0

Хай, Со значением оси его рабочей .Но это можно связать и отвязать значение ось и ряд за один раз. Здесь работает скрипт js. http://jsbin.com/eyibar/41/edit – kvs

+0

Hai, у меня есть еще одно сомнение в диаграмме акций кендо, когда я выбираю тип столбца, который навигатор не прокручивает до конца, вы можете предложить любой ответ, и тип навигатора меняется как столбец или line можно указать тип по умолчанию. вот js bin.http: //jsbin.com/ilemel/2/edit – kvs

1

Я редактировал свой код, что я могу в состоянии связать и отвязать valueaxis путем вызова функции creatChart (checkedAxes), если условие с length == - 1, в то время серия не обновляется.

$("#treeview").on("change", function (e) { 
       var chart = $("#chart").data("kendoChart"); 
       var checkedSeries = []; 
       var checkedAxes = []; 
       if ($("#treeview").find(":checked").length !== -1){ 
        $("#treeview").find(":checked").each(function() { 
        var nodeText = $(this).parent().parent().text(); 

        $.each(valueAxes, function (index, valueAxes) { 
          if (valueAxes.name == nodeText) { 
           checkedAxes.push(valueAxes); 
           checkedAxes.visible = true; 
          } 
        }); 

        $.each(series, function (index, series) { 
         if (series.name == nodeText) { 
          checkedSeries.push(series); 
         } 
         }); 
        }); 

        chart.options.series = checkedSeries; 
        chart.options.valeAxes = checkedAxes; 
        chart.refresh(); 
       } 
        createChart(checkedAxes); 
      }); 

, но если бы я попытался без вызова функции creatChart (checkedAxes), серия переплетены на графике обновляются.

$("#treeview").on("change", function (e) { 
       var chart = $("#chart").data("kendoChart"); 
       var checkedSeries = []; 
       var checkedAxes = []; 
       if ($("#treeview").find(":checked").length !== -1){ 
        $("#treeview").find(":checked").each(function() { 
        var nodeText = $(this).parent().parent().text(); 

        $.each(valueAxes, function (index, valueAxes) { 
          if (valueAxes.name == nodeText) { 
           checkedAxes.push(valueAxes); 
           checkedAxes.visible = true; 
          } 
        }); 

        $.each(series, function (index, series) { 
         if (series.name == nodeText) { 
          checkedSeries.push(series); 
         } 
         }); 
        }); 

        chart.options.series = checkedSeries; 
        chart.options.valeAxes = checkedAxes; 
        chart.refresh(); 
       } 
      }); 

Я не получил оба сценария одновременно. Выразите надежды, что найдете решение.

Приветствие, Счастливого Кодирование ...

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