{"text_format":"1","workbook":"xlsx","n_sheets":4,"sheets":["d3allparameters","CIs","Rels","d3MarkerForce"],"not_rendered":{"charts":0,"images":0,"macros":1,"external_links":0,"defined_names":2,"comments":0,"pivot_tables":0},"unopened":[],"bounds":{"document_bytes":16777216,"sheet_cells":100000,"rows_first":2000,"rows_last":500,"rows_between":2000,"halvings":0,"cell_chars":16384,"cell_head_chars":4096},"cells_cut":0,"cells_raw":0,"read":"whole","date_system":"1900"}

{"sheet":"d3allparameters","index":0,"n_rows":62,"n_cols":3,"rows_kept":62,"cut":false,"hidden":false,"merged":[]}
["force","Value","Comments"]
["titles","<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n  <meta charset=\"utf-8\" />\n  <title>d3.js from Excel - ramblings.mcpher.com</title>\n  <!-- Always force latest IE rendering engine (even in intranet) & Chrome Frame\n  Remove this if you use the .htaccess -->\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\" />\n\n  <script type=\"text/javascript\"\n  src=\"https://www.google.com/jsapi\"></script>\n  <script type=\"text/javascript\">\n   google.load(\"jquery\", \"1\");\n   google.setOnLoadCallback(function() {\n    doTheTreeViz(\"#chart\", mcpherTreeData);\n   });\n  </script>\n\n  <script type=\"text/javascript\"\n  src=\"http://d3js.org/d3.v2.min.js?2.9.1\"></script>","Probably dont need to touch"]
["styles","<style>\n\n\n   body {\n    position: relative;\n    font-family: \"Helvetica Neue\", Helvetica, sans-serif;\n    margin: 1em auto 4em auto;\n    width: 960px;\n   }\n\n   h1 {\n    font-size: 64px;\n    font-weight: 300;\n    letter-spacing: -2px;\n    margin: .3em 0 .1em 0;\n   }\n\n   h2 {\n    margin-top: 2em;\n   }\n\n   h1, h2 {\n    text-rendering: optimizeLegibility;\n   }\n\n   h2 a {\n    color: #ccc;\n    left: -20px;\n    position: absolute;\n    width: 740px;\n   }\n\n   footer {\n    font-size: small;\n    margin-top: 8em;\n   }\n\n   header aside {\n    margin-top: 20px;\n   }\n\n   header aside, footer aside {\n    color: #636363;\n    text-align: right;\n   }\n\n   aside {\n float:right;\n display:inline;\n font-size: small;\n   }\n   .attribution {\n    font-size: small;\n    margin-bottom: 2em;\n   }\n\n   body > p, li > p {\n    line-height: 1.5em;\n   }\n\n   body > p {\n    width: 720px;\n   }\n\n   body > blockquote {\n    width: 640px;\n   }\n\n   li {\n    width: 680px;\n   }\n\n   pre, code, textarea {\n    font-family: \"Menlo\", monospace;\n   }\n\n   code {\n    line-height: 1em;\n   }\n\n   textarea {\n    font-size: 100%;\n   }\n\n   body > pre {\n    border-left: solid 2px #ccc;\n    padding-left: 18px;\n    margin: 2em 0 2em -20px;\n   }\n\n   .html .value, .javascript .string, .javascript .regexp {\n    color: #756bb1;\n   }\n\n   .html .tag, .css .tag, .javascript .keyword {\n    color: #3182bd;\n   }\n\n   .comment {\n    color: #636363;\n   }\n\n   .html .doctype, .javascript .number {\n    color: #31a354;\n   }\n\n   .html .attribute, .css .attribute, .javascript .class, .javascript .special {\n    color: #e6550d;\n   }\n\n   svg {\n    font: 10px sans-serif;\n   }\n\n   .axis path, .axis line {\n    fill: none;\n    stroke: #000;\n    shape-rendering: crispEdges;\n   }\n\n   sup, sub {\n    line-height: 0;\n   }\n\n   q:before, blockquote:before {\n    content: \"�\";\n   }\n\n   q:after, blockquote:after {\n    content: \"�\";\n   }\n\n   blockquote:before {\n    position: absolute;\n    left: 2em;\n   }\n\n   blockquote:after {\n    position: absolute;\n   }\n\n  </style>\n  <style>\n   #chart {\n    height: 600px;\n   }\n   .node rect {\n    cursor: move;\n    fill-opacity: .9;\n    shape-rendering: crispEdges;\n   }\n   .node text {\n    pointer-events: none;\n    text-shadow: 0 1px 0 #fff;\n   }\n   .link {\n    fill: none;\n    stroke: #000;\n    stroke-opacity: .2;\n   }\n   .link:hover {\n    stroke-opacity: .5;\n   }\n\n   circle.node-dot {\n    fill: DarkSlateGray;\n    stroke: SlateGray;\n    stroke-width: 1px;\n   }\n\n\n   path.link {\n    fill: none;\n    stroke: SlateGray;\n    stroke-width: 1.5px;\n   }\n\n   marker#defaultMarker {\n    fill: SlateGray;\n   }\n\n   path.link.defaultMarker {\n    stroke: SlateGray;\n   }\n\n   circle {\n    fill: #ccc;\n    stroke: #333;\n    stroke-width: 1.5px;\n   }\n\n   text {\n    pointer-events: none;\n   }\n\n   text.shadow {\n    stroke: #fff;\n    stroke-width: 3px;\n    stroke-opacity: .8;\n   }\n\n  </style>","Default Style - change general layout here"]
["code","<script>\n   /**\n    * do the force vizualization\n    * @param {string} divName name of the div to hold the tree\n    * @param {object} inData the source data\n    */\n   function doTheTreeViz(divName, inData) {\n    // tweak the options\n    var options = $.extend({\n     stackHeight : 12,\n     radius : 5,\n     fontSize : 12,\n     labelFontSize : 8,\n     nodeLabel : null,\n     markerWidth : 0,\n     markerHeight : 0,\n     width : $(divName).outerWidth(),\n     gap : 1.5,\n     nodeResize : \"\",\n     linkDistance : 30,\n     charge : -120,\n     styleColumn : null,\n     styles : null,\n     linkName : null,\n     height : $(divName).outerHeight()\n    }, inData.d3.options);\n    // set up the parameters\n    options.gap = options.gap * options.radius;\n    var width = options.width;\n    var height = options.height;\n    var data = inData.d3.data;\n    var nodes = data.nodes;\n    var links = data.links;\n    var color = d3.scale.category20();\n\n    var force = d3.layout.force().nodes(nodes).links(links).size([width, height]).linkDistance(options.linkDistance).charge(options.charge).on(\"tick\", tick).start();\n\n    var svg = d3.select(divName).append(\"svg:svg\").attr(\"width\", width).attr(\"height\", height);\n\n    // get list of unique values in stylecolumn\n    linkStyles = [];\n    if (options.styleColumn) {\n     var x;\n     for (var i = 0; i < links.length; i++) {\n      if (linkStyles.indexOf( x = links[i][options.styleColumn].toLowerCase()) == -1)\n       linkStyles.push(x);\n     }\n    } else\n     linkStyles[0] = \"defaultMarker\";\n\n    // do we need a marker?\n\n    if (options.markerWidth) {\n     svg.append(\"svg:defs\").selectAll(\"marker\").data(linkStyles).enter().append(\"svg:marker\").attr(\"id\", String).attr(\"viewBox\", \"0 -5 10 10\").attr(\"refX\", 15).attr(\"refY\", -1.5).attr(\"markerWidth\", options.markerWidth).attr(\"markerHeight\", options.markerHeight).attr(\"orient\", \"auto\").append(\"svg:path\").attr(\"d\", \"M0,-5L10,0L0,5\");\n    }\n\n    var path = svg.append(\"svg:g\").selectAll(\"path\").data(force.links()).enter().append(\"svg:path\").attr(\"class\", function(d) {\n     return \"link \" + (options.styleColumn ? d[options.styleColumn].toLowerCase() : linkStyles[0]);\n    }).attr(\"marker-end\", function(d) {\n     return \"url(#\" + (options.styleColumn ? d[options.styleColumn].toLowerCase() : linkStyles[0] ) + \")\";\n    });\n\n    var circle = svg.append(\"svg:g\").selectAll(\"circle\").data(force.nodes()).enter().append(\"svg:circle\").attr(\"r\", function(d) {\n     return getRadius(d);\n    }).style(\"fill\", function(d) {\n     return color(d.group);\n    }).call(force.drag);\n\n    if (options.nodeLabel) {\n     circle.append(\"title\").text(function(d) {\n      return d[options.nodeLabel];\n     });\n    }\n    \n    if (options.linkName) {\n     path.append(\"title\").text(function(d) {\n      return d[options.linkName];\n     });\n    }\n    var text = svg.append(\"svg:g\").selectAll(\"g\").data(force.nodes()).enter().append(\"svg:g\");\n\n    // A copy of the text with a thick white stroke for legibility.\n    text.append(\"svg:text\").attr(\"x\", options.labelFontSize).attr(\"y\", \".31em\").attr(\"class\", \"shadow\").text(function(d) {\n     return d[options.nodeLabel];\n    });\n\n    text.append(\"svg:text\").attr(\"x\", options.labelFontSize).attr(\"y\", \".31em\").text(function(d) {\n     return d[options.nodeLabel];\n    });\n    function getRadius(d) {\n     return options.radius * (options.nodeResize ? Math.sqrt(d[options.nodeResize]) / Math.PI : 1);\n    }\n\n    // Use elliptical arc path segments to doubly-encode directionality.\n    function tick() {\n     path.attr(\"d\", function(d) {\n      var dx = d.target.x - d.source.x, dy = d.target.y - d.source.y, dr = Math.sqrt(dx * dx + dy * dy);\n      return \"M\" + d.source.x + \",\" + d.source.y + \"A\" + dr + \",\" + dr + \" 0 0,1 \" + d.target.x + \",\" + d.target.y;\n     });\n\n     circle.attr(\"transform\", function(d) {\n      return \"translate(\" + d.x + \",\" + d.y + \")\";\n     });\n\n     text.attr(\"transform\", function(d) {\n      return \"translate(\" + d.x + \",\" + d.y + \")\";\n     });\n    }\n\n   }\n  </script>","Dont touch"]
["body","<aside><small>\n   <a href='http://ramblings.mcpher.com'>ramblings.mcpher.com</a><br>\n    works best on Chrome<br> ackowledgements:<a href='http://bost.ocks.org/mike/'>Mike Bostok for d3.js</a></small>\n   </aside>\n</div>\n  <div id=\"chart\">\n\n  </div>\n\n </body>\n</html>","change body of report here"]
["banner","d3.js from Excel force diagram","report title"]
["htmlName","d3Force.html","where to generate the executable"]
[]
["force options","Value","Comments"]
["radius",6,"size of the circles (weighted by nodeResize)"]
["fontSize",30,"sfont size for call outs"]
["labelFontSize",8,"font size for node labels"]
["width",null,"px.. Blank uses size of chart container"]
["height",null,"px.. Blank uses size of chart container"]
["linkDistance",240,"distance nodes apart - default 30"]
["charge",-900,"negative repulsion between nodes - default -120"]
["nodeResize",null,"data field to use to size nodes - blank for all the same size"]
["nodeLabel","label","data field to use for label - blank for no label"]
["outerRadius",{"$f":"960/2","v":480},"outer radius for big circles"]
["markerHeight",6,"height of markers on links"]
["markerWidth",6,"width of markers on links"]
["styleColumn","styleColumn","the column to use to define the styles to use"]
["linkName","linkName","if you want names for the links on hover put the column name here"]
[]
["sysmap force options","Value","Comments"]
["radius",6,"size of the circles (weighted by nodeResize)"]
["fontSize",30,"sfont size for call outs"]
["labelFontSize",8,"font size for node labels"]
["width",null,"px.. Blank uses size of chart container"]
["height",null,"px.. Blank uses size of chart container"]
["linkDistance",100,"distance nodes apart - default 30"]
["charge",-120,"negative repulsion between nodes - default -120"]
["nodeResize",null,"data field to use to size nodes - blank for all the same size"]
["nodeLabel","label","data field to use for label - blank for no label"]
["outerRadius",{"$f":"960/2","v":480},"outer radius for big circles"]
["markerHeight",6,"height of markers on links"]
["markerWidth",6,"width of markers on links"]
["styleColumn","styleColumn","the column to use to define the styles to use"]
["linkName","linkName","if you want names for the links on hover put the column name here"]
[]
[]
["force fields","Value","comments"]
["links","FromKey,ToKey","the columns to make links between"]
["groups","Group,Group","which groups to put them in  - groups get different colors"]
["names","From,To","columns to use for call outs"]
["count",null,"if blank will count number of links - otherwise specify some data column"]
["labels",{"$f":"B45","v":"From,To"},"columns to use for labels, blank will use name"]
["styleColumn","link Style","the column to use to define the styles to use"]
["linkStyles","marker#direct{fill:green;}\n marker#bus{fill:blue;}\n marker#manual{fill:red;}\n path.link.direct{stroke:green;  }\n path.link.bus{stroke:blue;} \npath.link.manual{stroke:red;stroke-dasharray: 0, 2 1;} ","these should contain styles specific to the contents of style column .. For example \nmarker#xyz { fill: green;} path.link.xyz {\n    stroke: green;\n   }"]
["linkName","link Name","if you want names for the links on hover put the column name here"]
["banner",":integration mapping","this is used for the title"]
[]
["sysmap force fields","Value","comments"]
["links","Parent_CI_Name,Child_CI_Name","the columns to make links between"]
["groups","Group,Group","which groups to put them in  - groups get different colors"]
["names","Parent_CI_Name,Child_CI_Name","columns to use for call outs"]
["count",null,"if blank will count number of links - otherwise specify some data column"]
["labels","Parent_CI_Name,Child_CI_Name","columns to use for labels, blank will use name"]
["styleColumn","link Style","the column to use to define the styles to use"]
["linkStyles","marker#direct{fill:green;}\n marker#bus{fill:blue;}\n marker#manual{fill:red;}\n path.link.direct{stroke:green;  }\n path.link.bus{stroke:blue;} \npath.link.manual{stroke:red;stroke-dasharray: 0, 2 1;} ","these should contain styles specific to the contents of style column .. For example \nmarker#xyz { fill: green;} path.link.xyz {\n    stroke: green;\n   }"]
["linkName","link Name","if you want names for the links on hover put the column name here"]
["banner",":sysmap mapping","this is used for the title"]

{"sheet":"CIs","index":1,"n_rows":4,"n_cols":3,"rows_kept":4,"cut":false,"hidden":false,"merged":[]}
["CI_Name","CI_Group","CI_Type"]
["sw1a","NAB","switch"]
["sw1a.p1","NAB","pport"]
["sw1a.p1.v1","NAB","vport"]

{"sheet":"Rels","index":2,"n_rows":3,"n_cols":7,"rows_kept":3,"cut":false,"hidden":false,"merged":[]}
["Parent_CI_Name","Child_CI_Name","Parent_Child_Group","Parent_Child_Type","Group","link Style","link Name"]
["sw1a.p1.v1","sw1a.p1","Common","depends",{"$f":"VLOOKUP(A2,CIs!A2:C4,3,FALSE)","v":"vport"},"bus",{"$f":"A2&\"_\"&B2","v":"sw1a.p1.v1_sw1a.p1"}]
["sw1a.p1","sw1a","Common","depends",{"$f":"VLOOKUP(A3,CIs!A3:C4,3,FALSE)","v":"pport"},"bus","sw1a.p1_sw1a"]

{"sheet":"d3MarkerForce","index":3,"n_rows":25,"n_cols":7,"rows_kept":25,"cut":false,"hidden":false,"merged":[]}
["From","To","FromKey","ToKey","Group","link Style","link Name"]
[{"$f":"\"System \" & C2","v":"System 1"},{"$f":"\"System \" & D2","v":"System 2"},1,2,"business A","bus",{"$f":"A2&\"_\"&B2","v":"System 1_System 2"}]
[{"$f":"\"System \" & C3","v":"System 4"},{"$f":"\"System \" & D3","v":"System 2"},4,2,"business A","bus","System 4_System 2"]
["System 9","System 6",9,6,"business A","bus","System 9_System 6"]
["System 6","System 7",6,7,"Business B","bus","System 6_System 7"]
["System 6","System 9",6,9,"Business B","bus","System 6_System 9"]
["System 7","System 1",7,1,"Business B","direct","System 7_System 1"]
["System 8","System 1",8,1,"Business B","direct","System 8_System 1"]
["System 11","System 2",11,2,"Business B","direct","System 11_System 2"]
["System 11","System 3",11,3,"Business B","direct","System 11_System 3"]
["System 11","System 4",11,4,"Business B","direct","System 11_System 4"]
["System 13","System 1",13,1,"Business C","direct","System 13_System 1"]
["System 13","System 2",13,2,"Business C","direct","System 13_System 2"]
["System 13","System 3",13,3,"Business C","direct","System 13_System 3"]
["System 13","System 4",13,4,"Business C","direct","System 13_System 4"]
["System 13","System 5",13,5,"Business C","direct","System 13_System 5"]
["System 13","System 7",13,7,"Business C","direct","System 13_System 7"]
["System 13","System 8",13,8,"Business C","direct","System 13_System 8"]
["System 13","System 9",13,9,"Business C","manual","System 13_System 9"]
["System 13","System 14",13,14,"Business C","manual","System 13_System 14"]
["System 14","System 1",14,1,"Business D","manual","System 14_System 1"]
["System 14","System 3",14,3,"Business C","manual","System 14_System 3"]
["System 14","System 4",14,4,"Business C","manual","System 14_System 4"]
["System 14","System 5",14,5,"Business D","manual","System 14_System 5"]
["System 14","System 6",14,6,"Business D","manual","System 14_System 6"]