| <!doctype html> | |
| <html> | |
| <head> | |
|     <title>Network | Les miserables</title> | |
| 
 | |
|     <style type="text/css"> | |
|         #mynetwork { | |
|             width: 900px; | |
|             height: 900px; | |
|             border: 1px solid lightgray; | |
|         } | |
|         #loadingBar { | |
|             position:absolute; | |
|             top:0px; | |
|             left:0px; | |
|             width: 902px; | |
|             height: 902px; | |
|             background-color:rgba(200,200,200,0.8); | |
|             -webkit-transition: all 0.5s ease; | |
|             -moz-transition: all 0.5s ease; | |
|             -ms-transition: all 0.5s ease; | |
|             -o-transition: all 0.5s ease; | |
|             transition: all 0.5s ease; | |
|             opacity:1; | |
|         } | |
|         #wrapper { | |
|             position:relative; | |
|             width:900px; | |
|             height:900px; | |
|         } | |
| 
 | |
|         #text { | |
|             position:absolute; | |
|             top:8px; | |
|             left:530px; | |
|             width:30px; | |
|             height:50px; | |
|             margin:auto auto auto auto; | |
|             font-size:22px; | |
|             color: #000000; | |
|         } | |
| 
 | |
| 
 | |
|         div.outerBorder { | |
|             position:relative; | |
|             top:400px; | |
|             width:600px; | |
|             height:44px; | |
|             margin:auto auto auto auto; | |
|             border:8px solid rgba(0,0,0,0.1); | |
|             background: rgb(252,252,252); /* Old browsers */ | |
|             background: -moz-linear-gradient(top,  rgba(252,252,252,1) 0%, rgba(237,237,237,1) 100%); /* FF3.6+ */ | |
|             background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(252,252,252,1)), color-stop(100%,rgba(237,237,237,1))); /* Chrome,Safari4+ */ | |
|             background: -webkit-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Chrome10+,Safari5.1+ */ | |
|             background: -o-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* Opera 11.10+ */ | |
|             background: -ms-linear-gradient(top,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* IE10+ */ | |
|             background: linear-gradient(to bottom,  rgba(252,252,252,1) 0%,rgba(237,237,237,1) 100%); /* W3C */ | |
|             filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfcfc', endColorstr='#ededed',GradientType=0 ); /* IE6-9 */ | |
|             border-radius:72px; | |
|             box-shadow: 0px 0px 10px rgba(0,0,0,0.2); | |
|         } | |
| 
 | |
|         #border { | |
|             position:absolute; | |
|             top:10px; | |
|             left:10px; | |
|             width:500px; | |
|             height:23px; | |
|             margin:auto auto auto auto; | |
|             box-shadow: 0px 0px 4px rgba(0,0,0,0.2); | |
|             border-radius:10px; | |
|         } | |
| 
 | |
|         #bar { | |
|             position:absolute; | |
|             top:0px; | |
|             left:0px; | |
|             width:20px; | |
|             height:20px; | |
|             margin:auto auto auto auto; | |
|             border-radius:11px; | |
|             border:2px solid rgba(30,30,30,0.05); | |
|             background: rgb(0, 173, 246); /* Old browsers */ | |
|             box-shadow: 2px 0px 4px rgba(0,0,0,0.4); | |
|         } | |
|     </style> | |
| 
 | |
|     <script type="text/javascript" src="../../../dist/vis.js"></script> | |
|     <link href="../../../dist/vis-network.min.css" rel="stylesheet" type="text/css"/> | |
| 
 | |
|     <script type="text/javascript"> | |
|         function draw() { | |
|             // create some nodes | |
|             var nodes = [ | |
|                 {id: 0, "label": "Myriel", "group": 1}, | |
|                 {id: 1, "label": "Napoleon", "group": 1}, | |
|                 {id: 2, "label": "Mlle.Baptistine", "group": 1}, | |
|                 {id: 3, "label": "Mme.Magloire", "group": 1}, | |
|                 {id: 4, "label": "CountessdeLo", "group": 1}, | |
|                 {id: 5, "label": "Geborand", "group": 1}, | |
|                 {id: 6, "label": "Champtercier", "group": 1}, | |
|                 {id: 7, "label": "Cravatte", "group": 1}, | |
|                 {id: 8, "label": "Count", "group": 1}, | |
|                 {id: 9, "label": "OldMan", "group": 1}, | |
|                 {id: 10, "label": "Labarre", "group": 2}, | |
|                 {id: 11, "label": "Valjean", "group": 2}, | |
|                 {id: 12, "label": "Marguerite", "group": 3}, | |
|                 {id: 13, "label": "Mme.deR", "group": 2}, | |
|                 {id: 14, "label": "Isabeau", "group": 2}, | |
|                 {id: 15, "label": "Gervais", "group": 2}, | |
|                 {id: 16, "label": "Tholomyes", "group": 3}, | |
|                 {id: 17, "label": "Listolier", "group": 3}, | |
|                 {id: 18, "label": "Fameuil", "group": 3}, | |
|                 {id: 19, "label": "Blacheville", "group": 3}, | |
|                 {id: 20, "label": "Favourite", "group": 3}, | |
|                 {id: 21, "label": "Dahlia", "group": 3}, | |
|                 {id: 22, "label": "Zephine", "group": 3}, | |
|                 {id: 23, "label": "Fantine", "group": 3}, | |
|                 {id: 24, "label": "Mme.Thenardier", "group": 4}, | |
|                 {id: 25, "label": "Thenardier", "group": 4}, | |
|                 {id: 26, "label": "Cosette", "group": 5}, | |
|                 {id: 27, "label": "Javert", "group": 4}, | |
|                 {id: 28, "label": "Fauchelevent", "group": 0}, | |
|                 {id: 29, "label": "Bamatabois", "group": 2}, | |
|                 {id: 30, "label": "Perpetue", "group": 3}, | |
|                 {id: 31, "label": "Simplice", "group": 2}, | |
|                 {id: 32, "label": "Scaufflaire", "group": 2}, | |
|                 {id: 33, "label": "Woman1", "group": 2}, | |
|                 {id: 34, "label": "Judge", "group": 2}, | |
|                 {id: 35, "label": "Champmathieu", "group": 2}, | |
|                 {id: 36, "label": "Brevet", "group": 2}, | |
|                 {id: 37, "label": "Chenildieu", "group": 2}, | |
|                 {id: 38, "label": "Cochepaille", "group": 2}, | |
|                 {id: 39, "label": "Pontmercy", "group": 4}, | |
|                 {id: 40, "label": "Boulatruelle", "group": 6}, | |
|                 {id: 41, "label": "Eponine", "group": 4}, | |
|                 {id: 42, "label": "Anzelma", "group": 4}, | |
|                 {id: 43, "label": "Woman2", "group": 5}, | |
|                 {id: 44, "label": "MotherInnocent", "group": 0}, | |
|                 {id: 45, "label": "Gribier", "group": 0}, | |
|                 {id: 46, "label": "Jondrette", "group": 7}, | |
|                 {id: 47, "label": "Mme.Burgon", "group": 7}, | |
|                 {id: 48, "label": "Gavroche", "group": 8}, | |
|                 {id: 49, "label": "Gillenormand", "group": 5}, | |
|                 {id: 50, "label": "Magnon", "group": 5}, | |
|                 {id: 51, "label": "Mlle.Gillenormand", "group": 5}, | |
|                 {id: 52, "label": "Mme.Pontmercy", "group": 5}, | |
|                 {id: 53, "label": "Mlle.Vaubois", "group": 5}, | |
|                 {id: 54, "label": "Lt.Gillenormand", "group": 5}, | |
|                 {id: 55, "label": "Marius", "group": 8}, | |
|                 {id: 56, "label": "BaronessT", "group": 5}, | |
|                 {id: 57, "label": "Mabeuf", "group": 8}, | |
|                 {id: 58, "label": "Enjolras", "group": 8}, | |
|                 {id: 59, "label": "Combeferre", "group": 8}, | |
|                 {id: 60, "label": "Prouvaire", "group": 8}, | |
|                 {id: 61, "label": "Feuilly", "group": 8}, | |
|                 {id: 62, "label": "Courfeyrac", "group": 8}, | |
|                 {id: 63, "label": "Bahorel", "group": 8}, | |
|                 {id: 64, "label": "Bossuet", "group": 8}, | |
|                 {id: 65, "label": "Joly", "group": 8}, | |
|                 {id: 66, "label": "Grantaire", "group": 8}, | |
|                 {id: 67, "label": "MotherPlutarch", "group": 9}, | |
|                 {id: 68, "label": "Gueulemer", "group": 4}, | |
|                 {id: 69, "label": "Babet", "group": 4}, | |
|                 {id: 70, "label": "Claquesous", "group": 4}, | |
|                 {id: 71, "label": "Montparnasse", "group": 4}, | |
|                 {id: 72, "label": "Toussaint", "group": 5}, | |
|                 {id: 73, "label": "Child1", "group": 10}, | |
|                 {id: 74, "label": "Child2", "group": 10}, | |
|                 {id: 75, "label": "Brujon", "group": 4}, | |
|                 {id: 76, "label": "Mme.Hucheloup", "group": 8} | |
|             ]; | |
| 
 | |
|             // create some edges | |
|             var edges = [ | |
|                 {"from": 1, "to": 0}, | |
|                 {"from": 2, "to": 0}, | |
|                 {"from": 3, "to": 0}, | |
|                 {"from": 3, "to": 2}, | |
|                 {"from": 4, "to": 0}, | |
|                 {"from": 5, "to": 0}, | |
|                 {"from": 6, "to": 0}, | |
|                 {"from": 7, "to": 0}, | |
|                 {"from": 8, "to": 0}, | |
|                 {"from": 9, "to": 0}, | |
|                 {"from": 11, "to": 10}, | |
|                 {"from": 11, "to": 3}, | |
|                 {"from": 11, "to": 2}, | |
|                 {"from": 11, "to": 0}, | |
|                 {"from": 12, "to": 11}, | |
|                 {"from": 13, "to": 11}, | |
|                 {"from": 14, "to": 11}, | |
|                 {"from": 15, "to": 11}, | |
|                 {"from": 17, "to": 16}, | |
|                 {"from": 18, "to": 16}, | |
|                 {"from": 18, "to": 17}, | |
|                 {"from": 19, "to": 16}, | |
|                 {"from": 19, "to": 17}, | |
|                 {"from": 19, "to": 18}, | |
|                 {"from": 20, "to": 16}, | |
|                 {"from": 20, "to": 17}, | |
|                 {"from": 20, "to": 18}, | |
|                 {"from": 20, "to": 19}, | |
|                 {"from": 21, "to": 16}, | |
|                 {"from": 21, "to": 17}, | |
|                 {"from": 21, "to": 18}, | |
|                 {"from": 21, "to": 19}, | |
|                 {"from": 21, "to": 20}, | |
|                 {"from": 22, "to": 16}, | |
|                 {"from": 22, "to": 17}, | |
|                 {"from": 22, "to": 18}, | |
|                 {"from": 22, "to": 19}, | |
|                 {"from": 22, "to": 20}, | |
|                 {"from": 22, "to": 21}, | |
|                 {"from": 23, "to": 16}, | |
|                 {"from": 23, "to": 17}, | |
|                 {"from": 23, "to": 18}, | |
|                 {"from": 23, "to": 19}, | |
|                 {"from": 23, "to": 20}, | |
|                 {"from": 23, "to": 21}, | |
|                 {"from": 23, "to": 22}, | |
|                 {"from": 23, "to": 12}, | |
|                 {"from": 23, "to": 11}, | |
|                 {"from": 24, "to": 23}, | |
|                 {"from": 24, "to": 11}, | |
|                 {"from": 25, "to": 24}, | |
|                 {"from": 25, "to": 23}, | |
|                 {"from": 25, "to": 11}, | |
|                 {"from": 26, "to": 24}, | |
|                 {"from": 26, "to": 11}, | |
|                 {"from": 26, "to": 16}, | |
|                 {"from": 26, "to": 25}, | |
|                 {"from": 27, "to": 11}, | |
|                 {"from": 27, "to": 23}, | |
|                 {"from": 27, "to": 25}, | |
|                 {"from": 27, "to": 24}, | |
|                 {"from": 27, "to": 26}, | |
|                 {"from": 28, "to": 11}, | |
|                 {"from": 28, "to": 27}, | |
|                 {"from": 29, "to": 23}, | |
|                 {"from": 29, "to": 27}, | |
|                 {"from": 29, "to": 11}, | |
|                 {"from": 30, "to": 23}, | |
|                 {"from": 31, "to": 30}, | |
|                 {"from": 31, "to": 11}, | |
|                 {"from": 31, "to": 23}, | |
|                 {"from": 31, "to": 27}, | |
|                 {"from": 32, "to": 11}, | |
|                 {"from": 33, "to": 11}, | |
|                 {"from": 33, "to": 27}, | |
|                 {"from": 34, "to": 11}, | |
|                 {"from": 34, "to": 29}, | |
|                 {"from": 35, "to": 11}, | |
|                 {"from": 35, "to": 34}, | |
|                 {"from": 35, "to": 29}, | |
|                 {"from": 36, "to": 34}, | |
|                 {"from": 36, "to": 35}, | |
|                 {"from": 36, "to": 11}, | |
|                 {"from": 36, "to": 29}, | |
|                 {"from": 37, "to": 34}, | |
|                 {"from": 37, "to": 35}, | |
|                 {"from": 37, "to": 36}, | |
|                 {"from": 37, "to": 11}, | |
|                 {"from": 37, "to": 29}, | |
|                 {"from": 38, "to": 34}, | |
|                 {"from": 38, "to": 35}, | |
|                 {"from": 38, "to": 36}, | |
|                 {"from": 38, "to": 37}, | |
|                 {"from": 38, "to": 11}, | |
|                 {"from": 38, "to": 29}, | |
|                 {"from": 39, "to": 25}, | |
|                 {"from": 40, "to": 25}, | |
|                 {"from": 41, "to": 24}, | |
|                 {"from": 41, "to": 25}, | |
|                 {"from": 42, "to": 41}, | |
|                 {"from": 42, "to": 25}, | |
|                 {"from": 42, "to": 24}, | |
|                 {"from": 43, "to": 11}, | |
|                 {"from": 43, "to": 26}, | |
|                 {"from": 43, "to": 27}, | |
|                 {"from": 44, "to": 28}, | |
|                 {"from": 44, "to": 11}, | |
|                 {"from": 45, "to": 28}, | |
|                 {"from": 47, "to": 46}, | |
|                 {"from": 48, "to": 47}, | |
|                 {"from": 48, "to": 25}, | |
|                 {"from": 48, "to": 27}, | |
|                 {"from": 48, "to": 11}, | |
|                 {"from": 49, "to": 26}, | |
|                 {"from": 49, "to": 11}, | |
|                 {"from": 50, "to": 49}, | |
|                 {"from": 50, "to": 24}, | |
|                 {"from": 51, "to": 49}, | |
|                 {"from": 51, "to": 26}, | |
|                 {"from": 51, "to": 11}, | |
|                 {"from": 52, "to": 51}, | |
|                 {"from": 52, "to": 39}, | |
|                 {"from": 53, "to": 51}, | |
|                 {"from": 54, "to": 51}, | |
|                 {"from": 54, "to": 49}, | |
|                 {"from": 54, "to": 26}, | |
|                 {"from": 55, "to": 51}, | |
|                 {"from": 55, "to": 49}, | |
|                 {"from": 55, "to": 39}, | |
|                 {"from": 55, "to": 54}, | |
|                 {"from": 55, "to": 26}, | |
|                 {"from": 55, "to": 11}, | |
|                 {"from": 55, "to": 16}, | |
|                 {"from": 55, "to": 25}, | |
|                 {"from": 55, "to": 41}, | |
|                 {"from": 55, "to": 48}, | |
|                 {"from": 56, "to": 49}, | |
|                 {"from": 56, "to": 55}, | |
|                 {"from": 57, "to": 55}, | |
|                 {"from": 57, "to": 41}, | |
|                 {"from": 57, "to": 48}, | |
|                 {"from": 58, "to": 55}, | |
|                 {"from": 58, "to": 48}, | |
|                 {"from": 58, "to": 27}, | |
|                 {"from": 58, "to": 57}, | |
|                 {"from": 58, "to": 11}, | |
|                 {"from": 59, "to": 58}, | |
|                 {"from": 59, "to": 55}, | |
|                 {"from": 59, "to": 48}, | |
|                 {"from": 59, "to": 57}, | |
|                 {"from": 60, "to": 48}, | |
|                 {"from": 60, "to": 58}, | |
|                 {"from": 60, "to": 59}, | |
|                 {"from": 61, "to": 48}, | |
|                 {"from": 61, "to": 58}, | |
|                 {"from": 61, "to": 60}, | |
|                 {"from": 61, "to": 59}, | |
|                 {"from": 61, "to": 57}, | |
|                 {"from": 61, "to": 55}, | |
|                 {"from": 62, "to": 55}, | |
|                 {"from": 62, "to": 58}, | |
|                 {"from": 62, "to": 59}, | |
|                 {"from": 62, "to": 48}, | |
|                 {"from": 62, "to": 57}, | |
|                 {"from": 62, "to": 41}, | |
|                 {"from": 62, "to": 61}, | |
|                 {"from": 62, "to": 60}, | |
|                 {"from": 63, "to": 59}, | |
|                 {"from": 63, "to": 48}, | |
|                 {"from": 63, "to": 62}, | |
|                 {"from": 63, "to": 57}, | |
|                 {"from": 63, "to": 58}, | |
|                 {"from": 63, "to": 61}, | |
|                 {"from": 63, "to": 60}, | |
|                 {"from": 63, "to": 55}, | |
|                 {"from": 64, "to": 55}, | |
|                 {"from": 64, "to": 62}, | |
|                 {"from": 64, "to": 48}, | |
|                 {"from": 64, "to": 63}, | |
|                 {"from": 64, "to": 58}, | |
|                 {"from": 64, "to": 61}, | |
|                 {"from": 64, "to": 60}, | |
|                 {"from": 64, "to": 59}, | |
|                 {"from": 64, "to": 57}, | |
|                 {"from": 64, "to": 11}, | |
|                 {"from": 65, "to": 63}, | |
|                 {"from": 65, "to": 64}, | |
|                 {"from": 65, "to": 48}, | |
|                 {"from": 65, "to": 62}, | |
|                 {"from": 65, "to": 58}, | |
|                 {"from": 65, "to": 61}, | |
|                 {"from": 65, "to": 60}, | |
|                 {"from": 65, "to": 59}, | |
|                 {"from": 65, "to": 57}, | |
|                 {"from": 65, "to": 55}, | |
|                 {"from": 66, "to": 64}, | |
|                 {"from": 66, "to": 58}, | |
|                 {"from": 66, "to": 59}, | |
|                 {"from": 66, "to": 62}, | |
|                 {"from": 66, "to": 65}, | |
|                 {"from": 66, "to": 48}, | |
|                 {"from": 66, "to": 63}, | |
|                 {"from": 66, "to": 61}, | |
|                 {"from": 66, "to": 60}, | |
|                 {"from": 67, "to": 57}, | |
|                 {"from": 68, "to": 25}, | |
|                 {"from": 68, "to": 11}, | |
|                 {"from": 68, "to": 24}, | |
|                 {"from": 68, "to": 27}, | |
|                 {"from": 68, "to": 48}, | |
|                 {"from": 68, "to": 41}, | |
|                 {"from": 69, "to": 25}, | |
|                 {"from": 69, "to": 68}, | |
|                 {"from": 69, "to": 11}, | |
|                 {"from": 69, "to": 24}, | |
|                 {"from": 69, "to": 27}, | |
|                 {"from": 69, "to": 48}, | |
|                 {"from": 69, "to": 41}, | |
|                 {"from": 70, "to": 25}, | |
|                 {"from": 70, "to": 69}, | |
|                 {"from": 70, "to": 68}, | |
|                 {"from": 70, "to": 11}, | |
|                 {"from": 70, "to": 24}, | |
|                 {"from": 70, "to": 27}, | |
|                 {"from": 70, "to": 41}, | |
|                 {"from": 70, "to": 58}, | |
|                 {"from": 71, "to": 27}, | |
|                 {"from": 71, "to": 69}, | |
|                 {"from": 71, "to": 68}, | |
|                 {"from": 71, "to": 70}, | |
|                 {"from": 71, "to": 11}, | |
|                 {"from": 71, "to": 48}, | |
|                 {"from": 71, "to": 41}, | |
|                 {"from": 71, "to": 25}, | |
|                 {"from": 72, "to": 26}, | |
|                 {"from": 72, "to": 27}, | |
|                 {"from": 72, "to": 11}, | |
|                 {"from": 73, "to": 48}, | |
|                 {"from": 74, "to": 48}, | |
|                 {"from": 74, "to": 73}, | |
|                 {"from": 75, "to": 69}, | |
|                 {"from": 75, "to": 68}, | |
|                 {"from": 75, "to": 25}, | |
|                 {"from": 75, "to": 48}, | |
|                 {"from": 75, "to": 41}, | |
|                 {"from": 75, "to": 70}, | |
|                 {"from": 75, "to": 71}, | |
|                 {"from": 76, "to": 64}, | |
|                 {"from": 76, "to": 65}, | |
|                 {"from": 76, "to": 66}, | |
|                 {"from": 76, "to": 63}, | |
|                 {"from": 76, "to": 62}, | |
|                 {"from": 76, "to": 48}, | |
|                 {"from": 76, "to": 58} | |
|             ]; | |
| 
 | |
|             // create a network | |
|             var container = document.getElementById('mynetwork'); | |
|             var data = { | |
|                 nodes: nodes, | |
|                 edges: edges | |
|             }; | |
|             var options = { | |
|                 nodes: { | |
|                     shape: 'dot', | |
|                     size: 16 | |
|                 }, | |
|                 layout:{ | |
|                     randomSeed:34 | |
|                 }, | |
|                 physics: { | |
|                     forceAtlas2Based: { | |
|                         gravitationalConstant: -26, | |
|                         centralGravity: 0.005, | |
|                         springLength: 230, | |
|                         springConstant: 0.18 | |
|                     }, | |
|                     maxVelocity: 146, | |
|                     solver: 'forceAtlas2Based', | |
|                     timestep: 0.35, | |
|                     stabilization: { | |
|                         enabled:true, | |
|                         iterations:2000, | |
|                         updateInterval:25 | |
|                     } | |
|                 } | |
|             }; | |
|             var network = new vis.Network(container, data, options); | |
| 
 | |
|             network.on("stabilizationProgress", function(params) { | |
|                 var maxWidth = 496; | |
|                 var minWidth = 20; | |
|                 var widthFactor = params.iterations/params.total; | |
|                 var width = Math.max(minWidth,maxWidth * widthFactor); | |
| 
 | |
|                 document.getElementById('bar').style.width = width + 'px'; | |
|                 document.getElementById('text').innerHTML = Math.round(widthFactor*100) + '%'; | |
|             }); | |
|             network.once("stabilizationIterationsDone", function() { | |
|                 document.getElementById('text').innerHTML = '100%'; | |
|                 document.getElementById('bar').style.width = '496px'; | |
|                 document.getElementById('loadingBar').style.opacity = 0; | |
|                 // really clean the dom element | |
|                 setTimeout(function () {document.getElementById('loadingBar').style.display = 'none';}, 500); | |
|             }); | |
| 
 | |
|         } | |
|     </script> | |
|      | |
| </head> | |
| 
 | |
| <body onload="draw()"> | |
| <p> | |
|     With the new stabilization events you can implement your own custom loading bar for all those long loading times! | |
| </p> | |
| 
 | |
| <div id="wrapper"> | |
|     <div id="mynetwork"></div> | |
|     <div id="loadingBar"> | |
|         <div class="outerBorder"> | |
|             <div id="text">0%</div> | |
|             <div id="border"> | |
|                 <div id="bar"></div> | |
|             </div> | |
|         </div> | |
|     </div> | |
| </div> | |
| </body> | |
| </html>
 |