GUI -- Added CSS classes for primary, secondary, animated, and optical links
 - refactored showTraffic(...) to handle the updated payload.
 - created 'traffic' scenario:: run with ... webapp/index2.html#topo,traffic?local

Change-Id: I5e3a33abcbc9c82f751165b4f52807f7cd59ef03
diff --git a/web/gui/src/main/webapp/json/ev/intentSketch/ev_3_ui.json b/web/gui/src/main/webapp/json/ev/intentSketch/ev_3_ui.json
index e15f211..f6a2b17 100644
--- a/web/gui/src/main/webapp/json/ev/intentSketch/ev_3_ui.json
+++ b/web/gui/src/main/webapp/json/ev/intentSketch/ev_3_ui.json
@@ -2,6 +2,7 @@
   "event": "requestTraffic",
   "sid": 2,
   "payload": {
-    "ids": [ "00:00:00:00:00:01/-1",  "00:00:00:00:00:02/-1" ]
+    "ids": [ "00:00:00:00:00:01/-1",  "00:00:00:00:00:02/-1" ],
+    "hover": ""
   }
 }
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_10_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_10_onos.json
new file mode 100644
index 0000000..b25604d
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_10_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffff0003/4-of:0000ffffffffff03/1",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffff0003",
+    "srcPort": "4",
+    "dst": "of:0000ffffffffff03",
+    "dstPort": "1",
+    "props" : {
+      "BW": "90 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_11_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_11_onos.json
new file mode 100644
index 0000000..2939f35
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_11_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffffff08/4-of:0000ffffffffff03/1",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffffff08",
+    "srcPort": "4",
+    "dst": "of:0000ffffffffff03",
+    "dstPort": "1",
+    "props" : {
+      "BW": "90 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_12_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_12_onos.json
new file mode 100644
index 0000000..a5ee5c9
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_12_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addHost",
+  "payload": {
+    "id": "0E:2A:69:30:13:86/-1",
+    "ingress": "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+    "egress": "of:0000ffffffff0003/101-0E:2A:69:30:13:86/-1/0",
+    "cp": {
+      "device": "of:0000ffffffff0003",
+      "port": 101
+    },
+    "labels": [
+      "1.2.3.4",
+      "0E:2A:69:30:13:86"
+    ],
+    "props": {}
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_13_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_13_onos.json
new file mode 100644
index 0000000..6efcda9
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_13_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addHost",
+  "payload": {
+    "id": "0E:2A:69:30:13:88/-1",
+    "ingress": "0E:2A:69:30:13:88/-1/0-of:0000ffffffff0007/101",
+    "egress": "of:0000ffffffff0007/101-0E:2A:69:30:13:86/-1/0",
+    "cp": {
+      "device": "of:0000ffffffff0007",
+      "port": 101
+    },
+    "labels": [
+      "4.5.7.6",
+      "0E:2A:69:30:13:88"
+    ],
+    "props": {}
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_14_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_14_onos.json
new file mode 100644
index 0000000..af031a6
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_14_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addHost",
+  "payload": {
+    "id": "0E:2A:69:30:13:aa/-1",
+    "ingress": "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/101",
+    "egress": "of:0000ffffffff0008/101-0E:2A:69:30:13:aa/-1/0",
+    "cp": {
+      "device": "of:0000ffffffff0008",
+      "port": 101
+    },
+    "labels": [
+      "12.13.14.15",
+      "0E:2A:69:30:13:aa"
+    ],
+    "props": {}
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_15_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_15_onos.json
new file mode 100644
index 0000000..657900c
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_15_onos.json
@@ -0,0 +1,25 @@
+{
+  "event": "showTraffic",
+  "sid": 1,
+  "payload": {
+    "paths": [
+      {
+        "intentId": "0x4321",
+        "links": [
+          "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+          "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/101"
+        ],
+        "class": "primary"
+      },
+      {
+        "intentId": "0xbab3",
+        "links": [
+          "of:0000ffffffff0003/4-of:0000ffffffffff03/1",
+          "of:0000ffffffff0008/4-of:0000ffffffffff08/1",
+          "of:0000ffffffffff08/4-of:0000ffffffffff03/1"
+        ],
+        "class": "primary optical"
+      }
+    ]
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_16_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_16_onos.json
new file mode 100644
index 0000000..5198454
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_16_onos.json
@@ -0,0 +1,25 @@
+{
+  "event": "showTraffic",
+  "sid": 1,
+  "payload": {
+    "paths": [
+      {
+        "intentId": "0x4321",
+        "links": [
+          "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+          "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/101"
+        ],
+        "class": "secondary"
+      },
+      {
+        "intentId": "0xbab3",
+        "links": [
+          "of:0000ffffffff0003/4-of:0000ffffffffff03/1",
+          "of:0000ffffffff0008/4-of:0000ffffffffff08/1",
+          "of:0000ffffffffff08/4-of:0000ffffffffff03/1"
+        ],
+        "class": "secondary optical"
+      }
+    ]
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_17_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_17_onos.json
new file mode 100644
index 0000000..0a1fd74
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_17_onos.json
@@ -0,0 +1,25 @@
+{
+  "event": "showTraffic",
+  "sid": 1,
+  "payload": {
+    "paths": [
+      {
+        "intentId": "0x4321",
+        "links": [
+          "0E:2A:69:30:13:86/-1/0-of:0000ffffffff0003/101",
+          "0E:2A:69:30:13:aa/-1/0-of:0000ffffffff0008/101"
+        ],
+        "class": "animated"
+      },
+      {
+        "intentId": "0xbab3",
+        "links": [
+          "of:0000ffffffff0003/4-of:0000ffffffffff03/1",
+          "of:0000ffffffff0008/4-of:0000ffffffffff08/1",
+          "of:0000ffffffffff08/4-of:0000ffffffffff03/1"
+        ],
+        "class": "animated optical"
+      }
+    ]
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_18_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_18_onos.json
new file mode 100644
index 0000000..571ba99
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_18_onos.json
@@ -0,0 +1,50 @@
+{
+  "event": "showTraffic",
+  "sid": 1,
+  "payload": {
+    "paths": [
+      {
+        "intentId": "0x1234",
+        "links": [
+          "of:0000ffffffff0008/2-of:0000ffffffff0003/1"
+        ],
+        "class": "primary"
+      },
+      {
+        "intentId": "0x4321",
+        "links": [
+          "of:0000ffffffff0003/9-of:0000ffffffff0007/2"
+        ],
+        "class": "secondary"
+      },
+      {
+        "intentId": "0xbabe",
+        "links": [
+          "of:0000ffffffff0008/4-of:0000ffffffff0007/1"
+        ],
+        "class": "animated"
+      },
+      {
+        "intentId": "0xbab1",
+        "links": [
+          "of:0000ffffffff0008/4-of:0000ffffffffff08/1"
+        ],
+        "class": "primary optical"
+      },
+      {
+        "intentId": "0xbab2",
+        "links": [
+          "of:0000ffffffff0003/4-of:0000ffffffffff03/1"
+        ],
+        "class": "secondary optical"
+      },
+      {
+        "intentId": "0xbab3",
+        "links": [
+          "of:0000ffffffffff08/4-of:0000ffffffffff03/1"
+        ],
+        "class": "animated optical"
+      }
+    ]
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_19_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_19_onos.json
new file mode 100644
index 0000000..6d3c08a
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_19_onos.json
@@ -0,0 +1,8 @@
+{
+  "event": "showTraffic",
+  "sid": 1,
+  "payload": {
+    "paths": [
+    ]
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_1_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_1_onos.json
new file mode 100644
index 0000000..1357cef
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_1_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addDevice",
+  "payload": {
+    "id": "of:0000ffffffff0008",
+    "type": "switch",
+    "online": true,
+    "labels": [
+      "0000ffffffff0008",
+      "FF:FF:FF:FF:00:08",
+      "sw-8"
+    ],
+    "metaUi": {
+      "x": 734,
+      "y": 477
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_2_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_2_onos.json
new file mode 100644
index 0000000..df9b623
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_2_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addDevice",
+  "payload": {
+    "id": "of:0000ffffffff0003",
+    "type": "switch",
+    "online": true,
+    "labels": [
+      "0000ffffffff0003",
+      "FF:FF:FF:FF:00:03",
+      "sw-3"
+    ],
+    "metaUi": {
+      "x": 282,
+      "y": 503
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_3_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_3_onos.json
new file mode 100644
index 0000000..d49d597
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_3_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addDevice",
+  "payload": {
+    "id": "of:0000ffffffff0007",
+    "type": "switch",
+    "online": true,
+    "labels": [
+      "0000ffffffff0007",
+      "FF:FF:FF:FF:00:07",
+      "sw-7"
+    ],
+    "metaUi": {
+      "x": 530,
+      "y": 330
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_4_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_4_onos.json
new file mode 100644
index 0000000..631ed27
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_4_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addDevice",
+  "payload": {
+    "id": "of:0000ffffffffff08",
+    "type": "roadm",
+    "online": true,
+    "labels": [
+      "0000ffffffffff08",
+      "FF:FF:FF:FF:FF:08",
+      "opt-8"
+    ],
+    "metaUi": {
+      "x": 734,
+      "y": 577
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_5_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_5_onos.json
new file mode 100644
index 0000000..4c8cc7c
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_5_onos.json
@@ -0,0 +1,17 @@
+{
+  "event": "addDevice",
+  "payload": {
+    "id": "of:0000ffffffffff03",
+    "type": "roadm",
+    "online": true,
+    "labels": [
+      "0000ffffffffff03",
+      "FF:FF:FF:FF:FF:03",
+      "opt-3"
+    ],
+    "metaUi": {
+      "x": 282,
+      "y": 603
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_6_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_6_onos.json
new file mode 100644
index 0000000..70dc216
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_6_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffff0003/9-of:0000ffffffff0007/2",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffff0003",
+    "srcPort": "9",
+    "dst": "of:0000ffffffff0007",
+    "dstPort": "2",
+    "props" : {
+      "BW": "120 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_7_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_7_onos.json
new file mode 100644
index 0000000..78e6a39
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_7_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffff0008/2-of:0000ffffffff0003/1",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffff0008",
+    "srcPort": "2",
+    "dst": "of:0000ffffffff0003",
+    "dstPort": "1",
+    "props" : {
+      "BW": "70 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_8_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_8_onos.json
new file mode 100644
index 0000000..d9d27e7
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_8_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffff0008/4-of:0000ffffffff0007/1",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffff0008",
+    "srcPort": "4",
+    "dst": "of:0000ffffffff0007",
+    "dstPort": "1",
+    "props" : {
+      "BW": "90 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/ev_9_onos.json b/web/gui/src/main/webapp/json/ev/traffic/ev_9_onos.json
new file mode 100644
index 0000000..8437c21
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/ev_9_onos.json
@@ -0,0 +1,15 @@
+{
+  "event": "addLink",
+  "payload": {
+    "id": "of:0000ffffffff0008/4-of:0000ffffffffff08/1",
+    "type": "direct",
+    "linkWidth": 2,
+    "src": "of:0000ffffffff0008",
+    "srcPort": "4",
+    "dst": "of:0000ffffffffff08",
+    "dstPort": "1",
+    "props" : {
+      "BW": "90 Gb"
+    }
+  }
+}
diff --git a/web/gui/src/main/webapp/json/ev/traffic/scenario.json b/web/gui/src/main/webapp/json/ev/traffic/scenario.json
new file mode 100644
index 0000000..06f9bf8
--- /dev/null
+++ b/web/gui/src/main/webapp/json/ev/traffic/scenario.json
@@ -0,0 +1,16 @@
+{
+  "comments": [
+    "Stepping through showTraffic"
+  ],
+  "title": "Show Traffic Scenario",
+  "params": {
+    "lastAuto": 14
+  },
+  "description": [
+    "Figure out primary, secondary and animated link visualizations.",
+    "",
+    "Press 'S' to load initial events.",
+    "",
+    "Press spacebar to complete the scenario..."
+  ]
+}