ckportfolio.com - Forecast: JavaScript

Forecast: JavaScript

Events

$(document).on("input", "input[type='range']", display);
$(document).on("change", "input[type='range']", analyze);

Application Functions

function display() {

  var m = $("#month").val().padStart(2, "0");
  var d = $("#day").val().padStart(2, "0");
  var h = $("#hour").val().padStart(2, "0");

  $("#display_month").text(m);
  $("#display_day").text(d);
  $("#display_hour").text(h);

}

function analyze() {

  var m = $("#month").val().padStart(2, "0");
  var d = $("#day").val().padStart(2, "0");
  var h = $("#hour").val().padStart(2, "0");

  var mdh = m + d + h;

  $("#display_temp").text("...");

  var path = "chris.k/temperature/main.py";
  var input = mdh;

  $.ajax({
    url: "https://ocadu.goodcodeclub.com/temperature/?path=" + path + "&input=" + input,
    success: drawPrediction
  })

}

function drawPrediction(data) {

  data = parseFloat(data);

  var m = $("#month").val().padStart(2, "0");
  var d = $("#day").val().padStart(2, "0");
  var h = $("#hour").val().padStart(2, "0");

  var mdh = m + d + h;

  svg.selectAll("circle.current").remove();

  $("#display_temp").text(data.toFixed(2));

  svg.append("circle")
    .attr("class", "current")
    .attr("cx", function() {
      return x(mdh);
    })
    .attr("cy", function() {
      return y(data);
    })
    .attr("r", 2)
    .style("fill", "red");

}

D3 Visualization

var width = 300;
var height = 200;

var x = d3.scaleLinear()
  .domain([0, 123123])
  .range([20, width - 10])

var y = d3.scaleLinear()
  .domain([40, -40])
  .range([0, height - 20])

var svg = d3.select("#graph")
  .append("svg")
  .attr("width", width)
  .attr("height", height)

svg.append("g")
  .call(d3.axisLeft(y))
  .attr("transform", "translate(30, 10)")

var href = "https://ocadu.goodcodeclub.com/temperature/data.csv";

function drawDots(dot) {

  svg.append("circle")
    .attr("cx", function() {
      return x(dot.monthdayhour);
    })
    .attr("cy", function() {
      return y(dot.DegreeC);
    })
    .attr("r", 1)
    .style("fill", "lightgreen");

}

d3.csv(href, drawDots);
Fin