New CSV-based example
[tech-radar.git] / examples / csv.html
diff --git a/examples/csv.html b/examples/csv.html
new file mode 100644 (file)
index 0000000..17e8c87
--- /dev/null
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="utf-8">
+  <title>Tech Radar Example</title>
+  <link href='http://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,700italic,400,300,700' rel='stylesheet' type='text/css'>
+  <script src="chance.js"></script>
+  <script src="d3.min.js"></script>
+  <script src="d3-queue.js"></script>
+  <script src="tech-radar.min.js"></script>
+  <link href="base.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+  <div id="radar">
+  </div>
+  <div id="ref-table"></div>
+</body>
+<script>
+//  var adopt = new tr.models.Cycle('Adopt', 0);
+//  var trial = new tr.models.Cycle('Trial', 1);
+//  var assess = new tr.models.Cycle('Assess', 2);
+//  var hold = new tr.models.Cycle('Hold', 3);
+
+
+  function processRows(data) {
+
+      var adopt = new tr.models.Cycle('Adopt', 0);
+      var trial = new tr.models.Cycle('Trial', 1);
+      var assess = new tr.models.Cycle('Assess', 2);
+      var hold = new tr.models.Cycle('Hold', 3);
+      var cycles = [adopt, trial, assess, hold];
+  
+      error = "";
+      var blips = {};
+      blips["tool"] = [];
+      blips["technique"] = [];
+      blips["platform"] = [];
+      blips["language"] = [];
+      for (var i=0; i < data.length; i++) {
+         row = data[i];
+
+         idx_cycle = ["adapt", "trial", "assess", "hold"].indexOf(row.cycle)
+
+          if (idx_cycle === -1) {
+              error += "Unexpected cycle: " + row.cycle + " in row " + i.toString() + "<br />";
+          } else if (["tool", "technique", "platform", "language"].indexOf(row.quadrant) === -1) {
+              error += "Unexpected quadrant: " + row.quadrant + " in row " + i.toString() + "<br />";
+          } else if (["true","false"].indexOf(row.is_new) === -1) {
+              error += "Unboolean is_new: " + row.is_new + " in row " + i.toString() + "<br />";
+         } else {
+             if (row.is_new === "true") {
+                 b_IsNew = true                
+             } else {
+                 b_IsNew = false               
+             }
+             a_cycle = cycles[idx_cycle];
+             a_blip = new tr.models.Blip(row.name, a_cycle, b_IsNew, row.description);
+              blips[row.quadrant].push(a_blip);
+          }
+      }
+      if (error !== "") {
+       throw error             
+      }                        
+      return blips;
+  }
+
+  function showRadar(error,rows) {
+
+      var radar = new tr.models.Radar();
+      var toolsQuadrant = new tr.models.Quadrant('Tools');
+      var techniquesQuadrant = new tr.models.Quadrant('Techniques');
+      var platformsQuadrant = new tr.models.Quadrant('Platforms');
+      var languageFramework = new tr.models.Quadrant('Languages & Frameworks');
+
+      var radarGraph;                  
+
+      blips = processRows(rows);
+      toolsQuadrant.add(blips.tool);
+      techniquesQuadrant.add(blips.technique);
+      platformsQuadrant.add(blips.platform);
+      languageFramework.add(blips.language);
+
+      radar.setFirstQuadrant(toolsQuadrant);
+      radar.setSecondQuadrant(techniquesQuadrant);
+      radar.setThirdQuadrant(platformsQuadrant);
+      radar.setFourthQuadrant(languageFramework);
+
+      radarGraph = new tr.graphing.Radar(1080, radar);
+      radarGraph.init("#radar").plot();
+      var refTable = new tr.graphing.RefTable(radar);
+      refTable.init('#ref-table').render();
+  }                    
+
+  // CSV file:
+  // first line is a header:  it should be "quadrant,cycle,is_new,name,description"
+  // quadrant values should be one of [tool,technique,platform,language]
+  // cycle should be one of [asses,hold,adapt,trial]
+  // is_new : true if new to the radar since the last version
+  // name: 
+  d3.queue()
+    .defer(d3.csv, "./tech-radar.csv") 
+    .await(showRadar); //only function name is needed
+                       
+</script>
+</html>