Skip to content

Commit 1b276a3

Browse files
committed
new deployment
1 parent 46d285e commit 1b276a3

File tree

38 files changed

+1224
-45
lines changed

38 files changed

+1224
-45
lines changed

compiled/bar.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function barh(selector, data, options) {
2+
const width = options && options.width ? options.width : 400;
3+
const bar_height = 26;
4+
5+
const x = d3.scaleLinear().domain([0, d3.max(data, d => d.value)]).range([0, width]);
6+
7+
const chart = d3.select(selector).attr('width', width).attr('height', bar_height * data.length);
8+
9+
const bar = chart.selectAll('g').data(data).enter().append('g').attr('transform', (d, i) => 'translate(0,' + i * bar_height + ')');
10+
11+
bar.append('rect').attr('width', d => x(d.value)).attr('height', bar_height - 4);
12+
13+
bar.append('text').attr('x', 3).attr('y', bar_height / 2).attr('dy', bar_height / 16).text(d => d.name);
14+
}
15+
16+
(typeof exports !== 'undefined' ? exports : this).barh = barh;

compiled/berlin-bike-routes.js

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,45 @@
1-
let map;const lat=52.5233;const lon=13.4127;const zoom=11;const routes=[{name:"Wannsee-Route RR1",gpx:"/gpx/wannseeroute_rr1.gpx"},{name:"Gatow-Route RR2",gpx:"/gpx/gatow_route_rr2.gpx"},{name:"Spandau-Route RR3",gpx:"/gpx/spandau_route_rr3.gpx"},{name:"Hellersdorf-Route RR8",gpx:"/gpx/hellersdorf_route_rr8.gpx"},{name:"Teltow-Route RR12",gpx:"/gpx/teltow_route_rr12.gpx"},{name:"Nordspange TR2",gpx:"/gpx/nordspange_tr2.gpx"},{name:"S\xFCdspange TR4",gpx:"/gpx/suedspange_tr4.gpx"},{name:"Berliner Mauerweg 1 (Stadtroute)",gpx:"/gpx/mauerweg_1.gpx"},{name:"Berliner Mauerweg 2 (S\xFCdroute)",gpx:"/gpx/mauerweg_2.gpx"},{name:"Berliner Mauerweg 3 (Westroute)",gpx:"/gpx/mauerweg_3.gpx"},{name:"Europaradweg R1 (West)",gpx:"/gpx/europaradweg_r1_west.gpx"},{name:"Europaradweg R1 (Ost)",gpx:"/gpx/europaradweg_r1_ost.gpx"},{name:"Radfernweg Berlin-Kopenhagen",gpx:"/gpx/radfernweg_berlin_kopenhagen.gpx"},{name:"Radfernweg Berlin-Usedom",gpx:"/gpx/radfernweg_berlin_usedom.gpx"}];function setMapHeight(){const vis=document.getElementById("vis");const nav=document.querySelector("nav.navbar");const navHeight=nav?nav.offsetHeight:0;if(vis){vis.style.height=`${window.innerHeight-navHeight}px`}}function initMap(){setMapHeight();map=new OpenLayers.Map("vis",{controls:[new OpenLayers.Control.Navigation,new OpenLayers.Control.PanZoomBar,new OpenLayers.Control.LayerSwitcher,new OpenLayers.Control.Attribution]});const layerMapnik=new OpenLayers.Layer.OSM.Mapnik("Mapnik");map.addLayer(layerMapnik);const lonLat=new OpenLayers.LonLat(lon,lat).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject());map.setCenter(lonLat,zoom);routes.forEach((route,index)=>{const lgpx=new OpenLayers.Layer.Vector(route.name,{strategies:[new OpenLayers.Strategy.Fixed],protocol:new OpenLayers.Protocol.HTTP({url:route.gpx,format:new OpenLayers.Format.GPX}),style:{strokeColor:"#060",strokeWidth:5,strokeOpacity:0.7},projection:new OpenLayers.Projection("EPSG:4326"),visibility:index===0});map.addLayer(lgpx)})}window.addEventListener("load",initMap);window.addEventListener("resize",setMapHeight);
1+
let map;
2+
const lat = 52.5233;
3+
const lon = 13.4127;
4+
const zoom = 11;
5+
6+
const routes = [{ name: "Wannsee-Route RR1", gpx: "/gpx/wannseeroute_rr1.gpx" }, { name: "Gatow-Route RR2", gpx: "/gpx/gatow_route_rr2.gpx" }, { name: "Spandau-Route RR3", gpx: "/gpx/spandau_route_rr3.gpx" }, { name: "Hellersdorf-Route RR8", gpx: "/gpx/hellersdorf_route_rr8.gpx" }, { name: "Teltow-Route RR12", gpx: "/gpx/teltow_route_rr12.gpx" }, { name: "Nordspange TR2", gpx: "/gpx/nordspange_tr2.gpx" }, { name: "Südspange TR4", gpx: "/gpx/suedspange_tr4.gpx" }, { name: "Berliner Mauerweg 1 (Stadtroute)", gpx: "/gpx/mauerweg_1.gpx" }, { name: "Berliner Mauerweg 2 (Südroute)", gpx: "/gpx/mauerweg_2.gpx" }, { name: "Berliner Mauerweg 3 (Westroute)", gpx: "/gpx/mauerweg_3.gpx" }, { name: "Europaradweg R1 (West)", gpx: "/gpx/europaradweg_r1_west.gpx" }, { name: "Europaradweg R1 (Ost)", gpx: "/gpx/europaradweg_r1_ost.gpx" }, { name: "Radfernweg Berlin-Kopenhagen", gpx: "/gpx/radfernweg_berlin_kopenhagen.gpx" }, { name: "Radfernweg Berlin-Usedom", gpx: "/gpx/radfernweg_berlin_usedom.gpx" }];
7+
8+
function setMapHeight() {
9+
const vis = document.getElementById('vis');
10+
const nav = document.querySelector('nav.navbar');
11+
const navHeight = nav ? nav.offsetHeight : 0;
12+
if (vis) {
13+
vis.style.height = `${window.innerHeight - navHeight}px`;
14+
}
15+
}
16+
17+
function initMap() {
18+
setMapHeight();
19+
20+
map = new OpenLayers.Map("vis", {
21+
controls: [new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher(), new OpenLayers.Control.Attribution()]
22+
});
23+
24+
const layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
25+
map.addLayer(layerMapnik);
26+
27+
const lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
28+
map.setCenter(lonLat, zoom);
29+
30+
routes.forEach((route, index) => {
31+
const lgpx = new OpenLayers.Layer.Vector(route.name, {
32+
strategies: [new OpenLayers.Strategy.Fixed()],
33+
protocol: new OpenLayers.Protocol.HTTP({
34+
url: route.gpx,
35+
format: new OpenLayers.Format.GPX()
36+
}),
37+
style: { strokeColor: "#060", strokeWidth: 5, strokeOpacity: 0.7 },
38+
projection: new OpenLayers.Projection("EPSG:4326"),
39+
visibility: index === 0 });
40+
map.addLayer(lgpx);
41+
});
42+
}
43+
44+
window.addEventListener('load', initMap);
45+
window.addEventListener('resize', setMapHeight);
Lines changed: 143 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,143 @@
1-
(function(){var w=containerDim('#vis','width'),h=w/1.3,format=d3.format(',d'),lscale=d3.scale.sqrt().range([1,1.6]),platforms,maxval;var fill=d3.scale.threshold().domain([1,50,100,250,500,1000,4000,8000,20000]).range(['rgb(255,247,236)','rgb(254,232,200)','rgb(253,212,158)','rgb(253,187,132)','rgb(252,141,89)','rgb(239,101,72)','rgb(215,48,31)','rgb(179,0,0)','rgb(127,0,0)']);var spiral=d3.layout.pack().size([w,h]).padding(6.6);var vis=d3.select('#vis').append('svg').attr('width',w).attr('height',h).attr('class','spiral').append('svg:g').call(d3.behavior.zoom().on('zoom',rescale));d3.json('/json/exploit-db-platforms.json',function(error,json){d3.select('#platformcount').text(json.length);d3.select('#exploitcount').text(format(d3.sum(json,function(d){return d.value})));platforms=spiral.nodes(nodes(json)).filter(function(d){return!d.children});var node=vis.selectAll('g.node').data(platforms).enter().append('g').attr('class','node').attr('transform',function(d){return'translate('+d.x+','+d.y+')'});node.append('title').text(function(d){return d.name+': '+format(d.value)});node.append('circle').attr('r',function(d){return d.r}).style('fill',function(d){return fill(d.value)}).call(events);node.append('text').attr('text-anchor','middle').attr('dy','.3em').attr('style',function(d){return'font-size:'+lscale(d.value)+'px'}).text(function(d){return d.name}).call(events);bar('#platforms',platforms.slice(-15).reverse());hashchange()});d3.select('#close-help').on('click',function(){d3.select('#legend').style('display','none')});var obtn=d3.select('#overview');obtn.on('click',function(){location.replace('#','');obtn.style('display','none');d3.selectAll('.nodeinfo').style('display','none');d3.select('#expplatforms').style('display','block')});d3.select(window).on('hashchange',hashchange);function nodes(data){return{children:data}}function hashchange(){var name=decodeURIComponent(location.hash.substring(1)).trim();if(!name)return;d3.select('#overview').style('display','block');for(i in platforms){p=platforms[i];if(p.name==name){shownode(p);break}}}function bar(selector,data){maxval=d3.max(data,function(d){return d.value});var loff=130,barw=containerDim(selector,'width')-loff,barh=20*data.length,xoff=10,yoff=15,y=20,wscale=d3.scale.linear().domain([0,maxval]).range(['0px',barw+'px']),xticks=wscale.ticks(4);var bar=d3.select(selector);bar.selectAll('svg').remove();var svg=bar.append('svg').attr('class','bar').attr('width',barw+130).attr('height',barh+yoff).append('g').attr('transform','translate('+xoff+','+xoff+')');svg.selectAll('text').data(data).enter().append('text').attr('x',barw+xoff).attr('y',function(d,i){return i*y+yoff}).text(function(d){return d.name+': '+format(d.value)});svg.selectAll('line').data(xticks).enter().append('line').attr('x1',wscale).attr('x2',wscale).attr('y1',0).attr('y2',barh).style('stroke','#ccc').style('stroke-dasharray','5,2');svg.selectAll('rect').data(data).enter().append('rect').attr('y',function(d,i){return i*y}).attr('width',function(d){return wscale(d.value)}).attr('height',y-1);svg.selectAll('.rule').data(xticks).enter().append('text').attr('class','rule').attr('x',wscale).attr('y',0).attr('dy',-2).attr('text-anchor','middle').text(String)}function nodecolor(elt,color){if('text'==elt.nodeName)d3.select(elt.previousSibling).style('fill',color);else d3.select(elt).style('fill',color)}function shownode(d){location.replace('#'+encodeURIComponent(d.name));d3.select('#expplatforms').style('display','none');d3.selectAll('.nodeinfo').style('display','block');d3.select('#platform').text(d.name+' '+format(d.value)+' exploits');bar('#exptypes',d.types);bar('#expcode',d.code)}function events(d){d.on('click',function(d){shownode(d)});d.on('mouseover',function(d){nodecolor(this,'#ddd')});d.on('mouseout',function(d){nodecolor(this,fill(d.value))})}function rescale(){vis.attr('transform','translate('+d3.event.translate+')'+' scale('+d3.event.scale+')')}})();
1+
(function () {
2+
3+
var w = containerDim('#vis', 'width'),
4+
h = w / 1.3,
5+
format = d3.format(',d'),
6+
lscale = d3.scale.sqrt().range([1, 1.6]),
7+
platforms,
8+
maxval;
9+
10+
var fill = d3.scale.threshold().domain([1, 50, 100, 250, 500, 1000, 4000, 8000, 20000]).range(['rgb(255,247,236)', 'rgb(254,232,200)', 'rgb(253,212,158)', 'rgb(253,187,132)', 'rgb(252,141,89)', 'rgb(239,101,72)', 'rgb(215,48,31)', 'rgb(179,0,0)', 'rgb(127,0,0)']);
11+
12+
var spiral = d3.layout.pack().size([w, h]).padding(6.6);
13+
14+
var vis = d3.select('#vis').append('svg').attr('width', w).attr('height', h).attr('class', 'spiral').append('svg:g').call(d3.behavior.zoom().on('zoom', rescale));
15+
16+
d3.json('/json/exploit-db-platforms.json', function (error, json) {
17+
d3.select('#platformcount').text(json.length);
18+
d3.select('#exploitcount').text(format(d3.sum(json, function (d) {
19+
return d.value;
20+
})));
21+
22+
platforms = spiral.nodes(nodes(json)).filter(function (d) {
23+
return !d.children;
24+
});
25+
var node = vis.selectAll('g.node').data(platforms).enter().append('g').attr('class', 'node').attr('transform', function (d) {
26+
return 'translate(' + d.x + ',' + d.y + ')';
27+
});
28+
29+
node.append('title').text(function (d) {
30+
return d.name + ': ' + format(d.value);
31+
});
32+
33+
node.append('circle').attr('r', function (d) {
34+
return d.r;
35+
}).style('fill', function (d) {
36+
return fill(d.value);
37+
}).call(events);
38+
39+
node.append('text').attr('text-anchor', 'middle').attr('dy', '.3em').attr('style', function (d) {
40+
return 'font-size:' + lscale(d.value) + 'px';
41+
}).text(function (d) {
42+
return d.name;
43+
}).call(events);
44+
45+
bar('#platforms', platforms.slice(-15).reverse());
46+
47+
hashchange();
48+
});
49+
50+
d3.select('#close-help').on('click', function () {
51+
d3.select('#legend').style('display', 'none');
52+
});
53+
54+
var obtn = d3.select('#overview');
55+
obtn.on('click', function () {
56+
location.replace('#', '');
57+
obtn.style('display', 'none');
58+
d3.selectAll('.nodeinfo').style('display', 'none');
59+
d3.select('#expplatforms').style('display', 'block');
60+
});
61+
62+
d3.select(window).on('hashchange', hashchange);
63+
64+
function nodes(data) {
65+
return { children: data };
66+
}
67+
68+
function hashchange() {
69+
var name = decodeURIComponent(location.hash.substring(1)).trim();
70+
if (!name) return;
71+
d3.select('#overview').style('display', 'block');
72+
for (i in platforms) {
73+
p = platforms[i];
74+
if (p.name == name) {
75+
shownode(p);
76+
break;
77+
}
78+
}
79+
}
80+
81+
function bar(selector, data) {
82+
maxval = d3.max(data, function (d) {
83+
return d.value;
84+
});
85+
var loff = 130,
86+
barw = containerDim(selector, 'width') - loff,
87+
barh = 20 * data.length,
88+
xoff = 10,
89+
yoff = 15,
90+
y = 20,
91+
wscale = d3.scale.linear().domain([0, maxval]).range(['0px', barw + 'px']),
92+
xticks = wscale.ticks(4);
93+
94+
var bar = d3.select(selector);
95+
bar.selectAll('svg').remove();
96+
var svg = bar.append('svg').attr('class', 'bar').attr('width', barw + 130).attr('height', barh + yoff).append('g').attr('transform', 'translate(' + xoff + ',' + xoff + ')');
97+
98+
svg.selectAll('text').data(data).enter().append('text').attr('x', barw + xoff).attr('y', function (d, i) {
99+
return i * y + yoff;
100+
}).text(function (d) {
101+
return d.name + ': ' + format(d.value);
102+
});
103+
104+
svg.selectAll('line').data(xticks).enter().append('line').attr('x1', wscale).attr('x2', wscale).attr('y1', 0).attr('y2', barh).style('stroke', '#ccc').style('stroke-dasharray', '5,2');
105+
106+
svg.selectAll('rect').data(data).enter().append('rect').attr('y', function (d, i) {
107+
return i * y;
108+
}).attr('width', function (d) {
109+
return wscale(d.value);
110+
}).attr('height', y - 1);
111+
112+
svg.selectAll('.rule').data(xticks).enter().append('text').attr('class', 'rule').attr('x', wscale).attr('y', 0).attr('dy', -2).attr('text-anchor', 'middle').text(String);
113+
}
114+
115+
function nodecolor(elt, color) {
116+
if ('text' == elt.nodeName) d3.select(elt.previousSibling).style('fill', color);else d3.select(elt).style('fill', color);
117+
}
118+
119+
function shownode(d) {
120+
location.replace('#' + encodeURIComponent(d.name));
121+
d3.select('#expplatforms').style('display', 'none');
122+
d3.selectAll('.nodeinfo').style('display', 'block');
123+
d3.select('#platform').text(d.name + ' ' + format(d.value) + ' exploits');
124+
bar('#exptypes', d.types);
125+
bar('#expcode', d.code);
126+
}
127+
128+
function events(d) {
129+
d.on('click', function (d) {
130+
shownode(d);
131+
});
132+
d.on('mouseover', function (d) {
133+
nodecolor(this, '#ddd');
134+
});
135+
d.on('mouseout', function (d) {
136+
nodecolor(this, fill(d.value));
137+
});
138+
}
139+
140+
function rescale() {
141+
vis.attr('transform', 'translate(' + d3.event.translate + ')' + ' scale(' + d3.event.scale + ')');
142+
}
143+
})();

compiled/human-disease-network.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,21 @@
1-
$(function(){var props={drawing:{defaultLabelColor:'#fff',defaultLabelSize:12,defaultLabelBGColor:'#fff',defaultLabelHoverColor:'#000',labelThreshold:4,defaultEdgeType:'curve'},graph:{minNodeSize:.5,maxNodeSize:15,minEdgeSize:.2,maxEdgeSize:1},forceLabel:0,type:'directed'};visgexf.init('sig','/gexf/human-disease-network.json',props)});
1+
$(function () {
2+
var props = {
3+
drawing: {
4+
defaultLabelColor: '#fff',
5+
defaultLabelSize: 12,
6+
defaultLabelBGColor: '#fff',
7+
defaultLabelHoverColor: '#000',
8+
labelThreshold: 4,
9+
defaultEdgeType: 'curve'
10+
},
11+
graph: {
12+
minNodeSize: .5,
13+
maxNodeSize: 15,
14+
minEdgeSize: .2,
15+
maxEdgeSize: 1
16+
},
17+
forceLabel: 0,
18+
type: 'directed'
19+
};
20+
visgexf.init('sig', '/gexf/human-disease-network.json', props);
21+
});

0 commit comments

Comments
 (0)