Обновление chart.js и данных после отправки формы - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в Flask и в целом по веб-разработке.У меня есть простое веб-приложение, которое отображает данные дома, когда я задаю запрос.Однако, когда я отправляю параметр из формы, отправляю данные, и диаграмма не обновляется, они полностью пустые.Как сделать обновление данных и диаграмм.Также все js находятся в статической папке.Я потратил немало времени на изучение ajax и jquery, но не повезло.Любые примеры будут оценены.

<script>
  rfmchart({{ rfm_score|safe }},{{ rfm_month|safe }},15);
  df_data({{ fin|safe }});
</script>

function df_data(dataset) { 
$(document).ready(function() {
    $('#dataTable').DataTable( {
       "ordering": false,
        data: dataset,
        columns: [
            { title: "ID" },
            { title: "Market" },
            { title: "Sale" }
        ]
    } );
} )
};

Функция Chart.js

// RFM Chart
var ctxx = document.getElementById("rfm_chart");

function rfmchart(val,lbs,max_tick) {
var rfm_chart = new Chart(ctxx, {
  type: 'line',
  data: {
   labels :lbs,
    datasets: [{
      label: "RFM",
      lineTension: 0.3,
      backgroundColor: "rgba(37, 63, 131,0.7)",
      borderColor: "rgba(2,117,216,1)",
      pointRadius: 5,
      pointBackgroundColor: "rgba(23,117,33,1)",
      pointBorderColor: "rgba(255,255,255,0.8)",
      pointHoverRadius: 5,
      pointHoverBackgroundColor: "rgba(2,117,216,1)",
      pointHitRadius: 50,
      pointBorderWidth: 2,
      data : val,
    }],
  },
  options: {
    scales: {
      xAxes: [{
        gridLines: {
          display: false
        },
        ticks: {
          maxTicksLimit: 7
        }
      }],
      yAxes: [{
        ticks: {
          min: 0,
          max: max_tick,
          maxTicksLimit: 5
        },
        gridLines: {
          color: "rgba(0, 0, 0, .125)",
        }
      }],
    },
    legend: {
      display: false
    }
  }
})

};

App.py

## This works!!
@app.route('/',methods=['POST','GET'])
def home():

    loc = 15158
    fin = fin_data(loc)
    rfm_month,rfm_score = rfm_data(loc)
    return render_template('home.html',fin_data = fin,rfm_month=rfm_month,rfm_score = rfm_score)

## Does not work    
@app.route('/plt',methods=['POST','GET'])
def get_plt():
    if request.method=='POST':
        result=request.form
        loc = result['loc']
        fin = fin_data(loc)
        rfm_month,rfm_score = rfm_data(loc)
    return render_template('home.html',fin_data = fin,rfm_month=rfm_month,rfm_score = rfm_score)

HTML

<script>
  rfmchart({{ rfm_score|safe }},{{ rfm_month|safe }},15);
  df_data({{ fin|safe }});
</script>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...