lab 14

by HSilvaDaytona

HTML

Assignment 14
<p /> From
<select id="from">
      <option value='A'>A</option>
      <option value='B'>B</option>
      <option value='C'>C</option>
      <option value='D'>D</option>
      <option value='E'>E</option>
      <option value='F'>F</option>
      <option value='G'>G</option>
  </select>To
<select id="to">
      <option value='A'>A</option>
      <option value='B'>B</option>
      <option value='C'>C</option>
      <option value='D'>D</option>
      <option value='E'>E</option>
      <option value='F'>F</option>
      <option value='G'>G</option>
  </select>

<input type="button" id="click" onclick="Calc();" value="Calc" />
<br/>
<br/><span id="output" />

JavaScript

//adding nodes. 
class graph {
  constructor() {
    this.edges = {};
  }

  addingNodes(label) {
    this.edges[label] = {};
  };

  addingEdge(from, to, cost) {
    this.edges[from][to] = cost;
    this.edges[to][from] = cost;
  };

  CalcPath(from, to, cost, paths) {
    paths.push(from);

    if (from == to) {

      ShowPaths(paths, cost);
    } else {

      for (var connected in this.edges[from]) {
        if (paths.indexOf(connected) < 0) { // not visited yet
          var thiscost = this.edges[from][connected];
          this.CalcPath(connected, to, cost + thiscost, paths);
        }
      }
    }
    paths.pop();
  };
} //Graph



function ShowPaths(paths, cost) {
  var value = paths[0];
  for (var i = 1; i < paths.length; i++) {
    value = value + ", " + paths[i];
  }
  value += ": " + cost;

  var result = document.getElementById('result');
  result.innerHTML += value + "<br />";
} //showpaths

window.Calc = function() {
  var result = document.getElementById('output');
  result.innerHTML = "";

  var from = document.getElementById('from').value;
  var to = document.getElementById('to').value;
  let SomeGraph = new graph();

  // nodes
  SomeGraph.addingNodes('A');
  SomeGraph.addingNodes('B');
  SomeGraph.addingNodes('C');
  SomeGraph.addingNodes('D');
  SomeGraph.addingNodes('E');
  SomeGraph.addingNodes('F');
  SomeGraph.addingNodes('G');

  // add edges 
  SomeGraph.addingEdge('A', 'B', 2);
  SomeGraph.addingEdge('A', 'C', 1);
  SomeGraph.addingEdge('B', 'D', 1);
  SomeGraph.addingEdge('B', 'G', 1);
  SomeGraph.addingEdge('C', 'D', 1);
  SomeGraph.addingEdge('C', 'E', 1);
  SomeGraph.addingEdge('D', 'E', 2);
  SomeGraph.addingEdge('D', 'F', 1);
  SomeGraph.addingEdge('D', 'G', 2);

  result.innerHTML = from + " to " + to + "<br />";
  SomeGraph.CalcPath(from, to, 0, []);
}; //end calculate