CanvasJS Карусель не работает на Bootstrap 4 - PullRequest
0 голосов
/ 23 сентября 2018

Я хочу нарисовать диаграммы и применить к ним карусель.Я использую CanvasJS для этого.Но я не получаю никакого вывода.Я не вижу никаких графиков.Я использую Bootstrap 4.1.3.

До этого я пытался использовать Google Charts, но я не знаю, как применить к ним карусель.Я хочу несколько графиков подряд с каруселью.Я не смог найти ничего, связанного с применением карусели в Google Charts, поэтому я переключился на CanvasJS, но ничего не работает.

Пожалуйста, помогите мне с CanvasJS или с Google Charts.

Ниже приведен мой код CanvasJS:

CSS:

.carousel-control {
 position: absolute;
top: 150px;
left: 15px;
width: 40px;
height: 40px;
//margin-top: -20px;
font-size: 60px;
font-weight: 100;
line-height: 30px;
background-image: none !important;
filter: none !important;
text-align: center;
-webkit-border-radius: 23px;
 -moz-border-radius: 23px;
      border-radius: 23px;  
   }

       .glyphicon{
       font-size: 60px;
        color: black;
         text-shadow: -2px 0 black, 0 2px black, 2px 0 black, 0 -2px black;
          }

HTML AND JS / JQuery:

         <!-- Indicators -->
         <ul class="carousel-indicators">
          <li data-target="#demo" data-slide-to="0" class="active"></li>
          <li data-target="#demo" data-slide-to="1"></li>
           <li data-target="#demo" data-slide-to="2"></li>
           </ul>

        <!-- Wrapper for slides -->
      <div class="carousel-inner">
       <div class="carousel-item active"> 
        <div id="chartContainer1" class="chart" style="width:100%; 
      height:360px;"></div>
      </div>

      <div class="carousel-item">
       <div id="chartContainer2" class="chart" style="width:100%; 
        height:360px;"></div>
       </div>

        <div class="carousel-item">
         <div id="chartContainer3" class="chart" style="width:100%; 
         height:360px;"></div>
        </div>
        </div>

          <!-- Left and right controls -->
          <a class="carousel-control-prev" href="#demo" data-slide="prev">
          <span class="carousel-control-prev-icon"></span>
          </a>
          <a class="carousel-control-next" href="#demo" data-slide="next">
         <span class="carousel-control-next-icon"></span>
           </a>
          </div>


        <script> 
        var chart;
         var charts = [];
          var width;
         var height;

        width = $('#demo').width();
        height = $('#demo').height();

         $('.carousel').carousel({
        interval: false,
           });

            chart = new CanvasJS.Chart("chartContainer1", {
             title: {
             text: "Column Chart"
              },
          width: width,
         height: height,
         data: [{
           type: "column",
           dataPoints: [{
            x: 10,
            y: 171
             }, {
              x: 20,
             y: 155
               }, {
             x: 30,
             y: 150
                }, {
              x: 40,
               y: 165
               }, {
              x: 50,
              y: 195
               }, {
              x: 60,
              y: 168
               }, {
               x: 70,
               y: 128
                }, {
              x: 80,
              y: 134
               }, {
              x: 90,
              y: 114
               }]
               }]
              });
         chart.render();
        charts.push(chart);

        chart = new CanvasJS.Chart("chartContainer2", {
          title: {
            text: "Line Chart"
               },
           width: width,
            height: height,
              data: [{
             type: "line",
               dataPoints: [{
              x: 10,
                y: 71
                  }, {
                x: 20,
                y: 55
                 }, {
                x: 30,
                 y: 50
                 }, {
                 x: 40,
                 y: 65
                 }, {
                x: 50,
                y: 95
                  } , {
                x: 60,
                 y: 68
                }, {
                 x: 70,
               y: 28
                 }, {
                x: 80,
                y: 34
                 }, {
               x: 90,
                 y: 14
                  }]
                   }]
                  });
           chart.render();
           charts.push(chart);

            chart = new CanvasJS.Chart("chartContainer3", {
             title: {
              text: "Area Chart"
                  },
            width: width,
             height: height,
              data: [{
              type: "area",
               dataPoints: [{
                 x: 10,
                 y: 71
                  }, {
                 x: 20,
                  y: 55
                  }, {
                   x: 30,
                    y: 50
                     }, {
                    x: 40,
                    y: 65
                      }, {
                     x: 50,
                      y: 95
                       }, {
                     x: 60,
                    y: 68
                      }, {
                     x: 70,
                       y: 28
                      }, {
                       x: 80,
                       y: 34
                       }, {
                     x: 90,
                      y: 14
                        }]
                        }]
                         });
                   chart.render();
                   charts.push(chart);

                 $(window).resize(function() {
                 for (var i = 0; i < charts.length; i++) {
                  charts[i].options.width = $('.carousel').width();
                    charts[i].options.height = $('.carousel').height();
                charts[i].render();
                     }
                      });

                      </script> 

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Вы можете визуализировать график в Bootstrap Carousel.Взгляните на этот JSFiddle или найдите код ниже.

var charts = [];

var dps = [
  { x: 10, y: 71 },
  { x: 20, y: 55},
  { x: 30, y: 50 },
  { x: 40, y: 65 },
  { x: 50, y: 95 },
  { x: 60, y: 68 },
  { x: 70, y: 28 },
  { x: 80, y: 34 },
  { x: 90, y: 14}
];

$('.carousel').carousel({
  interval: 2000
});

$('.carousel').on('slide.bs.carousel', function (e) {
  $(".carousel-inner").height(parseFloat(charts[e.to].container.style.height));
});

$('.carousel').on('slid.bs.carousel', function (e) {
  charts[e.to].render();
});

var chart1 = new CanvasJS.Chart("chartContainer1", {
  title: {
text: "Column Chart"
  },
  data: [{
type: "column",
dataPoints: dps
  }]
});
chart1.render();
charts.push(chart1);

var chart2 = new CanvasJS.Chart("chartContainer2", {
  title: {
text: "Spline Chart"
  },
  data: [{
type: "spline",
dataPoints: dps
  }]
});
charts.push(chart2);

var chart3 = new CanvasJS.Chart("chartContainer3", {
  title: {
text: "Area Chart"
  },
  data: [{
type: "area",
dataPoints: dps
  }]
});
charts.push(chart3);
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
  
  <div id="chart-carousel" class="carousel slide" data-ride="carousel">
 
  <!-- Wrapper for slides -->
  <div class="carousel-inner">
    <div class="carousel-item active">  
      <div id="chartContainer1" class="chart" style="width:100%; height:300px;"></div>
    </div>
    <div class="carousel-item">
      <div id="chartContainer2" class="chart" style="width:100%; height:300px;"></div>
    </div>
    <div class="carousel-item">
     <div id="chartContainer3" class="chart" style="width:100%; height:300px;"></div>
    </div>
  </div>
 
 <!-- Left and right controls -->
  <a class="carousel-control-prev" href="#chart-carousel" data-slide="prev">
    <span class="carousel-control-prev-icon"></span>
  </a>
  <a class="carousel-control-next" href="#chart-carousel" data-slide="next">
    <span class="carousel-control-next-icon"></span>
  </a>
</div> <!-- Carousel -->
0 голосов
/ 24 сентября 2018

Сначала убедитесь, что ваша карусель Bootstrap работает.

Это основано на документах Bootstrap, отсюда: https://getbootstrap.com/docs/4.0/components/carousel/

Я включаю последнюю версию jQuery и CDN дляBootstrap 4.

Я также использую изображения-заполнители из https://placeholder.com.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
  <ol class="carousel-indicators">
    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
  </ol>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img class="d-block w-100" src="http://placehold.it/120x120&text=image1" alt="First slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="http://placehold.it/120x120&text=image2" alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="http://placehold.it/120x120&text=image3" alt="Third slide">
    </div>
  </div>
  <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

Если ваша Карусель Bootstrap правильно работает с некоторыми изображениями-заполнителями, вы можете сосредоточиться на том, чтобы ваши диаграммы правильно отображались в карусели.

...