Javascript 拉维公司;livewire图表显示不好

Javascript 拉维公司;livewire图表显示不好,javascript,php,laravel-8,laravel-livewire,Javascript,Php,Laravel 8,Laravel Livewire,我正在用laravel 8和livewire开发一个应用程序。 在我的应用程序的刀片视图中,我需要插入一个图形,该图形被插入到我选择的模板中。 在模板中,我有一个示例文件,指示如何填充图形,名为morris init.js,然后在vendor/morris中,我有一个文件morris.min.js。 这两个Java脚本是从我的脚本和css配置文件dz.php中调用的。 在我的blade视图中,我有两个livewire组件,在第二个组件中我有一个表(正确显示)和带有相关脚本的图形。 我的问题是图形

我正在用laravel 8和livewire开发一个应用程序。 在我的应用程序的刀片视图中,我需要插入一个图形,该图形被插入到我选择的模板中。 在模板中,我有一个示例文件,指示如何填充图形,名为
morris init.js
,然后在
vendor/morris
中,我有一个文件
morris.min.js
。 这两个Java脚本是从我的脚本和css配置文件
dz.php
中调用的。 在我的blade视图中,我有两个livewire组件,在第二个组件中我有一个表(正确显示)和带有相关脚本的图形。 我的问题是图形显示正确,但不是使用脚本传递的数据,而是使用
morris init.js
文件中的数据。 通过从配置文件中删除
morris init.js
文件,图形不会在我的livewire组件中呈现。 在控制台上,我注意到了这些错误(附屏幕截图),但我无法理解问题可能是什么。 有人对可能出现的问题有什么建议或想法吗? 谢谢大家!

我的代码:

  • dz.php

您的代码中有几个错误:

  • 以下几行应该放在browserChart对象的内部
像这样

var browsersChart = Morris.Donut({
            element: 'morris', 
            data: Data,
            formatter: function(value, data) {
                return Math.floor(value / total * 100) + '%';
            },
            resize: true,
            redraw: true,
            colors: ['#3a7afe', 'rgb(255, 159, 0)', '#10ca93']
        });
  • 您的
    元素是
    'morris'
    ,但在代码中有一个名为
    的div“morris\u donught”
    ,里面有一个嵌套的
    'morris'
    ,只需删除嵌套的元素并调用外部的
    morris

  • 您的总数硬编码为62,但您的元素之和为122,图表将不正确显示

  • 要显示6个数据标签,但只定义了3种颜色

{{-- Extends layout --}}
@extends('layout.layout2')

{{-- Content --}}
@section('content')
<!-- row -->
<div class="container-fluid">
    <div class="row page-titles mx-0">
        <div class="col-sm-6 p-md-0">
          <div class="welcome-text">
            <h4>Report dei residui</h4>
            <p class="mb-0">Situazione dei residui per soggetto e per fasce di credito</p>
          </div>
        </div>
    </div>
    <!-- componente header-filter per raggruppare i residui per codice fiscale -->
    <livewire:report-residui-header-filter />
    <!-- importo il componente livewire per mostrare i residui -->
    <livewire:table-report-residui />
    <!-- importo il componente table-residui-fasce, con i residui suddivisi per fasce -->
    <livewire:table-report-residui-fasce />
    <!-- TODO -->
    <button class="btn btn-primary" id="export">Esporta Ricerca</button>
</div>
@endsection
<div class="row">
    <div class="col-12">
        <div class="card">
          <div class="card-header">
            <h4 class="card-title">Report residui per fasce</h4>
          </div>
          <div class="card-body">
            <div class="table-responsive">
              <table class="table table-responsive-md" style="min-width: 845px">
                <thead>
                  <tr>
                    <th>Fascia</th>
                    <th># Posizioni</th>
                    <th>Residuo &euro;</th>
                    <th>% Posizioni</th>
                    <th>% Residuo</th>
                    <th>Valore Medio &euro;</th>
                  </tr>
                </thead>
                <tbody>
                  @if($fascia1[0]['total'] !== 0)
                    <tr>
                      <td><span class="badge light badge-lg badge-info"> < 100 &euro;</span></td>
                      <td>{{ $fascia1[0]['total'] }}</td>
                      <td>{{ $fascia1[0]['residuo'] }} &euro;</td>
                      <td>{{ round((100*$fascia1[0]['total'])/$tot_posizioni, 2) }} % </td>
                      <td>{{ round((100*$fascia1[0]['residuo'])/$tot_residuo , 2) }} %</td>
                      <td>@if(!empty($fascia1[0]['total'])) {{ round($fascia1[0]['residuo']/$fascia1[0]['total'], 2) }} @else  0 @endif &euro;</td>
                    </tr>
                  @else
                  <tr>
                    <td><span class="badge light badge-lg badge-info"> < 100 &euro;</span> </td>
                    <td>0</td>
                    <td>0 &euro;</td>
                    <td>0 % </td>
                    <td>0 %</td>
                    <td>0 &euro;</td>
                  </tr>
                  @endif
                  @if($fascia2[0]['total'] !== 0)
                    <tr>
                      <td><span class="badge light badge-lg badge-success">100 - 1000 &euro;</span></td>
                      <td>{{ $fascia2[0]['total'] }}</td>
                      <td>{{ $fascia2[0]['residuo'] }} &euro;</td>
                      <td>{{ round((100*$fascia2[0]['total'])/$tot_posizioni, 2) }} % </td>
                      <td>{{ round((100*$fascia2[0]['residuo'])/$tot_residuo , 2) }} %</td>
                      <td>@if(!empty($fascia2[0]['total'])) {{ round($fascia2[0]['residuo']/$fascia2[0]['total'], 2) }} @else  0 @endif &euro;</td>
                    </tr>
                  @else
                    <tr>
                      <td><span class="badge light badge-lg badge-success"> 100 - 1000 &euro;</span></td>
                      <td>0</td>
                      <td>0 &euro;</td>
                      <td>0 % </td>
                      <td>0 %</td>
                      <td>0 &euro;</td>
                    </tr>
                  @endif
                  @if($fascia3[0]['total'] !== 0) 
                  <tr>
                    <td><span class="badge light badge-lg badge-light">1000 - 5000 &euro;</span></td>
                    <td>{{ $fascia3[0]['total'] }}</td>
                    <td>{{ $fascia3[0]['residuo'] }} &euro;</td>
                    <td>{{ round((100*$fascia3[0]['total'])/$tot_posizioni, 2) }} % </td>
                    <td>{{ round((100*$fascia3[0]['residuo'])/$tot_residuo , 2) }} %</td>
                    <td>@if(!empty($fascia3[0]['total'])) {{ round($fascia3[0]['residuo']/$fascia3[0]['total'], 2) }} @else  0 @endif &euro;</td>
                  </tr>
                  @else
                  <tr>
                    <td><span class="badge light badge-lg badge-light"> 1000 - 5000 &euro;</span></td>
                    <td>0</td>
                    <td>0 &euro;</td>
                    <td>0 % </td>
                    <td>0 %</td>
                    <td>0 &euro;</td>
                  </tr>
                  @endif
                  @if($fascia4[0]['total'] !== 0)
                  <tr>
                    <td><span class="badge light badge-lg badge-dark">5000 - 10000 &euro;</span></td>
                    <td>{{ $fascia4[0]['total'] }}</td>
                    <td>{{ $fascia4[0]['residuo'] }} &euro;</td>
                    <td>{{ round((100*$fascia4[0]['total'])/$tot_posizioni, 2) }} % </td>
                    <td>{{ round((100*$fascia4[0]['residuo'])/$tot_residuo , 2) }} %</td>
                    <td>@if(!empty($fascia4[0]['total'])) {{ round($fascia4[0]['residuo']/$fascia4[0]['total'], 2) }} @else  0 @endif &euro;</td>
                  </tr>
                  @else
                  <tr>
                    <td><span class="badge light badge-lg badge-dark"> 5000 - 10000 &euro;</span> </td>
                    <td>0</td>
                    <td>0 &euro;</td>
                    <td>0 % </td>
                    <td>0 %</td>
                    <td>0 &euro;</td>
                  </tr>
                  @endif
                  @if($fascia5[0]['total'] !== 0)
                  <tr>
                    <td><span class="badge light badge-lg badge-warning">10000 - 20000 &euro;</span></td>
                    <td>{{ $fascia5[0]['total'] }}</td>
                    <td>{{ $fascia5[0]['residuo'] }} &euro;</td>
                    <td>{{ round((100*$fascia5[0]['total'])/$tot_posizioni, 2) }} % </td>
                    <td>{{ round((100*$fascia5[0]['residuo'])/$tot_residuo , 2) }} %</td>
                    <td>@if(!empty($fascia5[0]['total'])) {{ round($fascia5[0]['residuo']/$fascia5[0]['total'], 2) }} @else  0 @endif &euro;</td>
                  </tr>
                  @else
                  <tr>
                    <td><span class="badge light badge-lg badge-warning"> 10000 - 20000 &euro; </span></td>
                    <td>0</td>
                    <td>0 &euro;</td>
                    <td>0 % </td>
                    <td>0 %</td>
                    <td>0 &euro;</td>
                  </tr>
                  @endif
                  @if($fascia6[0]['total'] !== 0)
                  <tr>
                    <td><span class="badge light badge-lg badge-danger"> > 2000 &euro;</span></td>
                    <td>{{ $fascia6[0]['total'] }}</td>
                    <td>{{ $fascia6[0]['residuo'] }} &euro;</td>
                    <td>{{ round((100*$fascia6[0]['total'])/$tot_posizioni, 2)}} % </td>
                    <td>{{ round((100*$fascia6[0]['residuo'])/$tot_residuo , 2) }} %</td>
                    <td>@if(!empty($fascia6[0]['total'])) {{ round($fascia6[0]['residuo']/$fascia6[0]['total'], 2) }} @else  0 @endif &euro;</td>
                  </tr>
                  @else
                  <tr>
                    <td><span class="badge light badge-lg badge-danger"> > 20000 &euro;</span> </td>
                    <td>0</td>
                    <td>0 &euro;</td>
                    <td>0 % </td>
                    <td>0 %</td>
                    <td>0 &euro;</td>
                  </tr>
                  @endif
                </tbody>
                <tfoot>
                  <th></th>
                  <th>Tot posizioni: {{ $tot_posizioni }}</th>
                  <th>Tot residuo: {{ $tot_residuo }} &euro;</th>
                  <th>100%</th>
                  <th>100%</th>
                  <th>Tot medio: @if($tot_posizioni != 0) {{ round($tot_residuo/$tot_posizioni, 2) }} @else 0 @endif &euro;</th>
                </tfoot>
              </table>
            </div>
          </div>
        </div>
    </div>
    <!-- grafichiamo i risultati stampati in tabella -->
    <div class="col-xl-6 col-lg-12">
      <div class="card">
        <div class="card-header">
          <h4 class="card-title">Residui per fasce</h4>
        </div>
        <div class="card-body">
          <div id="morris_donught" class="morris_chart_height">
            <div id="morris">
                
            </div>
          </div>
        </div>
      </div>
    </div>
    
</div>
<script type="text/javascript">
    console.log('Sono entrato nel codice js');
    //Codice per popolare il grafico
        
        var setChartWidth = function(){
            if(screenWidth <= 768)
            {
                var chartBlockWidth = 0;
                chartBlockWidth = (screenWidth < 300 )?screenWidth:300;
                jQuery('.morris_chart_height').css('min-width',chartBlockWidth - 31);
            }
        }

    let Data= [
        {label: "Fascia < 100 &euro;", value: 12},
        {label: "Fascia 100 - 1000 &euro;", value: 30},
        {label: "Fascia 1000 - 5000 &euro;", value: 20},
        {label: "Fascia 5000 - 10000 &euro;", value: 20},
        {label: "Fascia 10000 - 20000 &euro;", value: 20},
        {label: "Fascia > 20000 $euro;", value: 20},
  ];
    let total = 62;
  var browsersChart = Morris.Donut({
    element: 'morris',
    data: Data,
    formatter: function (value, data) { 
      return Math.floor(value/total*100) + '%'; 
    }
  }),
  resize = true,
                redraw = true,
                colors = ['#3a7afe', 'rgb(255, 159, 0)', '#10ca93'];

</script>
resize = true,
redraw = true,
colors = ['#3a7afe', 'rgb(255, 159, 0)', '#10ca93'];

var browsersChart = Morris.Donut({
            element: 'morris', 
            data: Data,
            formatter: function(value, data) {
                return Math.floor(value / total * 100) + '%';
            },
            resize: true,
            redraw: true,
            colors: ['#3a7afe', 'rgb(255, 159, 0)', '#10ca93']
        });