1

I want to use ChartJS so I can display charts on my website, but I don't want the JavaScript to be separate from the html. I am using pug (jade) as my view engine which I know is working properly.

First I linked ChartJS in my index.pug file and created my canvas:

html
head
    link(rel='stylesheet', href='/stylesheets/styles.css', type='text/css')
    script(type="text/javascript", src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.bundle.min.js')
    script(type="text/javascript", src='/javascripts/chart.js')
    title= title
body
    h1= message
    canvas#myChart(width='400', height='400')

Next, In my chart.js file I did:

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
    type: 'bar',
    data: {
        labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
        datasets: [{
            label: '# of Votes',
            data: [12, 19, 3, 5, 2, 3],
            backgroundColor: [
                'rgba(255, 99, 132, 0.2)',
                'rgba(54, 162, 235, 0.2)',
                'rgba(255, 206, 86, 0.2)',
                'rgba(75, 192, 192, 0.2)',
                'rgba(153, 102, 255, 0.2)',
                'rgba(255, 159, 64, 0.2)'
            ],
            borderColor: [
                'rgba(255,99,132,1)',
                'rgba(54, 162, 235, 1)',
                'rgba(255, 206, 86, 1)',
                'rgba(75, 192, 192, 1)',
                'rgba(153, 102, 255, 1)',
                'rgba(255, 159, 64, 1)'
            ],
            borderWidth: 1
        }]
    },
    options: {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:true
                }
            }]
        }
    }
});

For some reason, the chart isn't being displayed, however if I use script tags and put the JavaScript directly in the pug file it works fine. I know that the JavaScript file is being linked correctly because I checked it using an alert. Any ideas on why my chart isn't being displayed?

1 Answer 1

1

Add your code inside the document ready like this:

$( document ).ready(function() {
    // your chart code goes here.
});
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.