Last active
March 16, 2016 07:12
-
-
Save michalskop/2e2a2aed537d1a5f03c3 to your computer and use it in GitHub Desktop.
Hemicycle: a single vote event
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
d3.hemicycle = function() { | |
function hemicycle(selection) { | |
selection.each(function(d, i) { | |
// options | |
var nvar = (typeof(n) === "function" ? n(d) : n), | |
gapvar = (typeof(gap) === "function" ? gap(d) : gap), | |
widthIconvar = (typeof(widthIcon) === "function" ? widthIcon(d) : widthIcon), | |
widthvar = (typeof(width) === "function" ? width(d) : width); | |
peoplevar = (typeof(people) === "function" ? people(d) : people); | |
var rmax = 1 + nvar.length *gapvar*widthIconvar; | |
var xScale = d3.scale.linear() | |
.domain([-1*rmax, rmax]) | |
.range([0, widthvar]), | |
xxScale = d3.scale.linear() | |
.domain([0, 2*rmax]) | |
.range([0, widthvar]) | |
yScale = d3.scale.linear() | |
.domain([0, rmax]) | |
.range([widthvar/2,0]); | |
var data = [], | |
s = []; | |
for (i in nvar) { | |
s.push((Math.PI/widthIconvar + Math.PI*i*gapvar-nvar[i])/(nvar[i] - 1)); | |
var ninrow = nvar[i], | |
radwidth = Math.PI/(nvar[i]+(nvar[i]-1)*s[i]), | |
radspace = radwidth*s[i], | |
r = 1 + i*gapvar*widthIconvar; | |
for (j=0;j<ninrow;j++) { | |
var x = Math.cos(radwidth*(0.5+j)+j*radspace)*r, | |
y = Math.sin(radwidth*(0.5+j)+j*radspace)*r, | |
rot = -1*(radwidth*(0.5+j)+j*radspace)/Math.PI*180+90; | |
data.push({'x':x,'y':y,'rot':rot}); | |
} | |
} | |
data.sort(function(x,y) { | |
if (x['rot'] < y['rot']) return -1; | |
if (x['rot'] > y['rot']) return 1; | |
return 0 | |
}); | |
var i = 0; | |
//for (j=0;j<group['n'];j++) { | |
for (key in peoplevar) { | |
person = peoplevar[key]; | |
for (var attrname in person) { data[i][attrname] = person[attrname]; } | |
//data[i]['color'] = group['color']; | |
//data[i]['name'] = //group['name']; | |
data[i]['widthIcon'] = widthIconvar; | |
if (parseInt(person["option_code"]) == -1) data[i]['background'] = "red"; | |
if (parseInt(person["option_code"]) == 0) data[i]['background'] = "gray"; | |
if (parseInt(person["option_code"]) == 1) data[i]['background'] = "green"; | |
i++; | |
} | |
/*var angle = [{'startangle':0,'endangle':Math.PI/2}]; | |
var arci = d3.svg.arc() | |
.startAngle(function(d){return d.startangle}) | |
.endAngle(function(d){return d.endangle}) | |
.outerRadius(x0Scale(rmax)) | |
.innerRadius(0); | |
var position = [xScale(0),yScale(0)];*/ | |
var element = d3.select(this); | |
var icons = element.selectAll(".icon") | |
.data(data) | |
.enter().append("a") | |
.attr("transform",function(d) {return "rotate("+d.rot+","+xScale(d.x)+","+yScale(d.y)+")"}) | |
.attr("xlink:href",function(d) {return d.link}) | |
.on("mouseover", tip.show) | |
.on("mouseout", tip.hide) | |
; | |
//http://stackoverflow.com/questions/13203897/d3-nested-appends-and-data-flow | |
icons.append("text") | |
.attr('font-size',xxScale( | |
d.widthIcon*1.15/2)) | |
.attr('font-family', 'FontAwesome') | |
.attr('x',function(d) {return xScale(d.x+d.widthIcon/2.8);}) | |
.attr('y',function(d) {return yScale(d.y+d.widthIcon/2.8);}) | |
.attr('fill',function(d) {return d.background}) | |
.attr('fill-opacity', function(d) { | |
if (Math.abs(parseInt(d.option_code)) == 1) return 1; | |
else return 0.25; | |
}) | |
.attr('text-anchor',"middle") | |
//.text('\uf005'); | |
.text(function(d) {if (d.background == 'red') return '\uf0a3'; else return '\uf0a3';}); | |
icons.append("text") | |
.attr('font-family', 'FontAwesome') | |
.attr('font-size',xxScale( | |
d.widthIcon*1.15)) //the icon is about 1.15times higher then wide | |
.attr('fill', function(d) { | |
return d.color; | |
}) | |
.attr('fill-opacity', function(d) { | |
if (Math.abs(parseInt(d.option_code)) == 1) return 1; | |
else return 0.25; | |
}) | |
.attr('stroke-width', function(d) {return 1;}) | |
.attr('stroke-opacity',function(d) { | |
if (Math.abs(parseInt(d.option_code)) == 1) return 0.9; | |
else return 0.25; | |
}) | |
.attr('text-anchor',"middle") | |
.attr('class', 'shadow') | |
.attr('x',function(d) {return xScale(d.x);}) | |
.attr('y',function(d) {return yScale(d.y);}) | |
.text('\uf007'); | |
}); | |
} | |
hemicycle.n = function(value) { | |
if (!arguments.length) return value; | |
n = value; | |
return hemicycle; | |
}; | |
hemicycle.gap = function(value) { | |
if (!arguments.length) return value; | |
gap = value; | |
return hemicycle; | |
}; | |
hemicycle.widthIcon = function(value) { | |
if (!arguments.length) return value; | |
widthIcon = value; | |
return hemicycle; | |
}; | |
hemicycle.width = function(value) { | |
if (!arguments.length) return value; | |
width = value; | |
return hemicycle; | |
}; | |
hemicycle.people = function(value) { | |
if (!arguments.length) return value; | |
people = value; | |
return hemicycle; | |
}; | |
return hemicycle; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// d3.tip | |
// Copyright (c) 2013 Justin Palmer | |
// | |
// Tooltips for d3.js SVG visualizations | |
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
// AMD. Register as an anonymous module with d3 as a dependency. | |
define(['d3'], factory) | |
} else { | |
// Browser global. | |
root.d3.tip = factory(root.d3) | |
} | |
}(this, function (d3) { | |
// Public - contructs a new tooltip | |
// | |
// Returns a tip | |
return function() { | |
var direction = d3_tip_direction, | |
offset = d3_tip_offset, | |
html = d3_tip_html, | |
node = initNode(), | |
svg = null, | |
point = null, | |
target = null | |
function tip(vis) { | |
svg = getSVGNode(vis) | |
point = svg.createSVGPoint() | |
document.body.appendChild(node) | |
} | |
// Public - show the tooltip on the screen | |
// | |
// Returns a tip | |
tip.show = function() { | |
var args = Array.prototype.slice.call(arguments) | |
if(args[args.length - 1] instanceof SVGElement) target = args.pop() | |
var content = html.apply(this, args), | |
poffset = offset.apply(this, args), | |
dir = direction.apply(this, args), | |
nodel = d3.select(node), | |
i = directions.length, | |
coords, | |
scrollTop = document.documentElement.scrollTop || document.body.scrollTop, | |
scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft | |
nodel.html(content) | |
.style({ opacity: 1, 'pointer-events': 'all' }) | |
while(i--) nodel.classed(directions[i], false) | |
coords = direction_callbacks.get(dir).apply(this) | |
nodel.classed(dir, true).style({ | |
top: (coords.top + poffset[0]) + scrollTop + 'px', | |
left: (coords.left + poffset[1]) + scrollLeft + 'px' | |
}) | |
return tip | |
} | |
// Public - hide the tooltip | |
// | |
// Returns a tip | |
tip.hide = function() { | |
nodel = d3.select(node) | |
nodel.style({ opacity: 0, 'pointer-events': 'none' }) | |
return tip | |
} | |
// Public: Proxy attr calls to the d3 tip container. Sets or gets attribute value. | |
// | |
// n - name of the attribute | |
// v - value of the attribute | |
// | |
// Returns tip or attribute value | |
tip.attr = function(n, v) { | |
if (arguments.length < 2 && typeof n === 'string') { | |
return d3.select(node).attr(n) | |
} else { | |
var args = Array.prototype.slice.call(arguments) | |
d3.selection.prototype.attr.apply(d3.select(node), args) | |
} | |
return tip | |
} | |
// Public: Proxy style calls to the d3 tip container. Sets or gets a style value. | |
// | |
// n - name of the property | |
// v - value of the property | |
// | |
// Returns tip or style property value | |
tip.style = function(n, v) { | |
if (arguments.length < 2 && typeof n === 'string') { | |
return d3.select(node).style(n) | |
} else { | |
var args = Array.prototype.slice.call(arguments) | |
d3.selection.prototype.style.apply(d3.select(node), args) | |
} | |
return tip | |
} | |
// Public: Set or get the direction of the tooltip | |
// | |
// v - One of n(north), s(south), e(east), or w(west), nw(northwest), | |
// sw(southwest), ne(northeast) or se(southeast) | |
// | |
// Returns tip or direction | |
tip.direction = function(v) { | |
if (!arguments.length) return direction | |
direction = v == null ? v : d3.functor(v) | |
return tip | |
} | |
// Public: Sets or gets the offset of the tip | |
// | |
// v - Array of [x, y] offset | |
// | |
// Returns offset or | |
tip.offset = function(v) { | |
if (!arguments.length) return offset | |
offset = v == null ? v : d3.functor(v) | |
return tip | |
} | |
// Public: sets or gets the html value of the tooltip | |
// | |
// v - String value of the tip | |
// | |
// Returns html value or tip | |
tip.html = function(v) { | |
if (!arguments.length) return html | |
html = v == null ? v : d3.functor(v) | |
return tip | |
} | |
function d3_tip_direction() { return 'n' } | |
function d3_tip_offset() { return [0, 0] } | |
function d3_tip_html() { return ' ' } | |
var direction_callbacks = d3.map({ | |
n: direction_n, | |
s: direction_s, | |
e: direction_e, | |
w: direction_w, | |
nw: direction_nw, | |
ne: direction_ne, | |
sw: direction_sw, | |
se: direction_se | |
}), | |
directions = direction_callbacks.keys() | |
function direction_n() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.n.y - node.offsetHeight, | |
left: bbox.n.x - node.offsetWidth / 2 | |
} | |
} | |
function direction_s() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.s.y, | |
left: bbox.s.x - node.offsetWidth / 2 | |
} | |
} | |
function direction_e() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.e.y - node.offsetHeight / 2, | |
left: bbox.e.x | |
} | |
} | |
function direction_w() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.w.y - node.offsetHeight / 2, | |
left: bbox.w.x - node.offsetWidth | |
} | |
} | |
function direction_nw() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.nw.y - node.offsetHeight, | |
left: bbox.nw.x - node.offsetWidth | |
} | |
} | |
function direction_ne() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.ne.y - node.offsetHeight, | |
left: bbox.ne.x | |
} | |
} | |
function direction_sw() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.sw.y, | |
left: bbox.sw.x - node.offsetWidth | |
} | |
} | |
function direction_se() { | |
var bbox = getScreenBBox() | |
return { | |
top: bbox.se.y, | |
left: bbox.e.x | |
} | |
} | |
function initNode() { | |
var node = d3.select(document.createElement('div')) | |
node.style({ | |
position: 'absolute', | |
top: 0, | |
opacity: 0, | |
'pointer-events': 'none', | |
'box-sizing': 'border-box' | |
}) | |
return node.node() | |
} | |
function getSVGNode(el) { | |
el = el.node() | |
if(el.tagName.toLowerCase() == 'svg') | |
return el | |
return el.ownerSVGElement | |
} | |
// Private - gets the screen coordinates of a shape | |
// | |
// Given a shape on the screen, will return an SVGPoint for the directions | |
// n(north), s(south), e(east), w(west), ne(northeast), se(southeast), nw(northwest), | |
// sw(southwest). | |
// | |
// +-+-+ | |
// | | | |
// + + | |
// | | | |
// +-+-+ | |
// | |
// Returns an Object {n, s, e, w, nw, sw, ne, se} | |
function getScreenBBox() { | |
var targetel = target || d3.event.target, | |
bbox = {}, | |
matrix = targetel.getScreenCTM(), | |
tbbox = targetel.getBBox(), | |
width = tbbox.width, | |
height = tbbox.height, | |
x = tbbox.x, | |
y = tbbox.y | |
point.x = x | |
point.y = y | |
bbox.nw = point.matrixTransform(matrix) | |
point.x += width | |
bbox.ne = point.matrixTransform(matrix) | |
point.y += height | |
bbox.se = point.matrixTransform(matrix) | |
point.x -= width | |
bbox.sw = point.matrixTransform(matrix) | |
point.y -= height / 2 | |
bbox.w = point.matrixTransform(matrix) | |
point.x += width | |
bbox.e = point.matrixTransform(matrix) | |
point.x -= width / 2 | |
point.y -= height / 2 | |
bbox.n = point.matrixTransform(matrix) | |
point.y += height | |
bbox.s = point.matrixTransform(matrix) | |
return bbox | |
} | |
return tip | |
}; | |
})); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="https://code.jquery.com/jquery-1.11.1.js"></script> | |
<style> | |
/*http://www.d3noob.org/2013/01/adding-drop-shadow-to-allow-text-to.html*/ | |
text.shadow { | |
stroke: gray; | |
stroke-width: 1px; | |
opacity: 0.9; | |
} | |
/* D3 tips */ | |
.d3-tip { | |
line-height: 1; | |
font-weight: bold; | |
padding: 12px; | |
background: rgba(0, 0, 0, 0.8); | |
color: #fff; | |
border-radius: 2px; | |
} | |
/* Creates a small triangle extender for the tooltip */ | |
/*.d3-tip:after { | |
box-sizing: border-box; | |
display: inline; | |
font-size: 10px; | |
width: 100%; | |
line-height: 1; | |
color: rgba(0, 0, 0, 0.8); | |
content: "\25BC"; | |
position: absolute; | |
text-align: center; | |
}*/ | |
/* Style northward tooltips differently */ | |
.d3-tip.n:after { | |
margin: -1px 0 0 0; | |
top: 100%; | |
left: 0; | |
} | |
.stronger { | |
color: yellow; | |
} | |
</style> | |
<script src="d3.hemicycle.js"></script> | |
<script src="d3.tip.js"></script> | |
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"> | |
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootswatch/3.2.0/cerulean/bootstrap.min.css"> | |
</head> | |
<body> | |
<div id="chart" style="width:400px;margin-left:100px;margin-top:35px;"></div> | |
<div id="legend" style="width:400px;padding:15px;margin-left:100px;"> | |
<div class="row" style="text-align:center">Legenda:</div> | |
<div class="row" style="border-bottom:1px solid #ccc;"> | |
<div class="col-xs-2"></div> | |
<div class="col-xs-5"><i class="fa fa-certificate" style="color:red;font-size:20px;"> </i><strong> PROTI</strong></div> | |
<div class="col-xs-5"><i class="fa fa-certificate" style="color:green;font-size:20px;"> </i> PRO</div> | |
</div> | |
<div class="row" id="legendin"> | |
</div> | |
</div> | |
<script type="text/javascript"> | |
d3.csv("single_vote_event.csv",function(error,data) { | |
/*var json = (function () { | |
var json = null; | |
$.ajax({ | |
'async': false, | |
'global': false, | |
'url': "./hemicycle.json", | |
'dataType': "json", | |
'success': function (data) { | |
json = data; | |
} | |
}); | |
return json; | |
})();*/ | |
var hemicycle = [{ | |
//"n":[9,13,16,20,23], | |
"n": [8,11,15,19,22,26,29,33,37], | |
"gap": 1.20, | |
"widthIcon": 0.39, | |
"width": 400, | |
"people": data | |
}]; | |
/* Initialize tooltip */ | |
tip = d3.tip().attr("class", "d3-tip").html(function(d) { | |
foragaints = "Neutrálně (nepřítomen)"; | |
if (parseInt(d["option_code"]) == 1) foragaints = "Pro návrh"; | |
if (parseInt(d["option_code"]) == -1) foragaints = "Proti návrhu"; | |
return "<span class=\'stronger\'>" + d["name"] + "</span><br>" + d["party"] + "<br>" + foragaints; | |
}); | |
var w=400,h=205, | |
svg=d3.select("#chart") | |
.append("svg") | |
.attr("width",w) | |
.attr("height",h); | |
var hc = d3.hemicycle() | |
.n(function(d) {return d.n;}) | |
.gap(function(d) {return d.gap;}) | |
.widthIcon(function(d) {return d.widthIcon;}) | |
.width(function(d) {return d.width;}) | |
.people(function(d) {return d.people;}); | |
var item = svg.selectAll(".hc") | |
.data(hemicycle) | |
.enter() | |
.append("svg:g") | |
.call(hc); | |
/* Invoke the tip in the context of your visualization */ | |
svg.call(tip); | |
// Add tooltip div | |
var div = d3.select("body").append("div") | |
.attr("class", "tooltip") | |
.style("opacity", 1e-6); | |
/*inhtml = ''; | |
for (k in data) { | |
if (k == 12) break; | |
group = data[k]; | |
if (k % 4 == 0) { | |
inhtml = inhtml + "<div class='row'>"; | |
} | |
inhtml = inhtml + '<div class="col-xs-3"><i class="fa fa-user" style="color:' + group['color'] + ';font-size:15px;"> </i>' + group["abbreviation"] + "</div> "; | |
if (k % 4 == 3) { | |
inhtml = inhtml + "</div>"; | |
} | |
} | |
$("#legendin").html(inhtml)*/ | |
}) | |
</script> | |
</body> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
id | name | party | option_code | color | |
---|---|---|---|---|---|
5462abe8a87408609940ec8d | Miroslava Němcová | ODS | -1 | blue | |
5462abf5a87408609940efb1 | Marek Benda | ODS | -1 | blue | |
5462abeea87408609940edeb | Martin Novotný | ODS | -1 | blue | |
5462abdfa87408609940ea35 | Pavel Blažek | ODS | -1 | blue | |
5462abf2a87408609940eee5 | Radim Holeček | ODS | -1 | blue | |
5462abe7a87408609940ec2f | Jana Fischerová | ODS | -1 | blue | |
5462abe7a87408609940ec31 | Simeon Karamazov | ODS | -1 | blue | |
5462abf6a87408609940efc3 | Petr Fiala | ODS | -1 | blue | |
5462abf5a87408609940ef7f | Ivan Adamec | ODS | -1 | blue | |
5462abe0a87408609940ea7b | Vladislav Vilímec | ODS | -1 | blue | |
5462abe5a87408609940ebd7 | Zbyněk Stanjura | ODS | -1 | blue | |
5462abeda87408609940edcf | Jan Zahradník | ODS | -1 | blue | |
5462abe6a87408609940ebf5 | Jan Volný | ANO | -1 | cyan | |
5462abfba87408609940f0dd | Jaroslav Krákora | ČSSD | -1 | orange | |
5462abf5a87408609940efad | Ladislav Velebný | ČSSD | -1 | orange | |
5462abe5a87408609940ebd3 | Jeroným Tejc | ČSSD | -1 | orange | |
5462abe5a87408609940ebc1 | Markéta Wernerová | ČSSD | -1 | orange | |
5462abf7a87408609940efef | Miroslava Strnadlová | ČSSD | -1 | orange | |
5462abe0a87408609940ea57 | Jiří Koskuba | ČSSD | -1 | orange | |
5462abe8a87408609940ec77 | Jaroslav Zavadil | ČSSD | -1 | orange | |
5462abe0a87408609940ea9f | Stanislav Huml | ČSSD | -1 | orange | |
5462abdfa87408609940ea07 | Josef Novotný | ČSSD | -1 | orange | |
5462abe4a87408609940eb89 | Tomio Okamura | Úsvit | -1 | pink | |
5462abf6a87408609940efcd | Jana Hnyková | Úsvit | -1 | pink | |
5462abeda87408609940eddf | David Kádner | Úsvit | -1 | pink | |
5462abeca87408609940ed71 | Martin Lank | Úsvit | -1 | pink | |
5462abfaa87408609940f087 | Radim Fiala | Úsvit | -1 | pink | |
5462abeca87408609940ed73 | Josef Vondrášek | KSČM | -1 | red | |
5462abeba87408609940ed69 | Miroslav Opálka | KSČM | -1 | red | |
5462abe9a87408609940eca1 | Milada Halíková | KSČM | -1 | red | |
5462abf2a87408609940ef0b | Jiří Dolejš | KSČM | -1 | red | |
5462abeea87408609940ede9 | Marie Pěnčíková | KSČM | -1 | red | |
5462abf3a87408609940ef43 | Jan Klán | KSČM | -1 | red | |
5462abe3a87408609940eb6f | Vladimír Koníček | KSČM | -1 | red | |
5462abf8a87408609940f01f | Karel Šidlo | KSČM | -1 | red | |
5462abf7a87408609940f007 | Vojtěch Filip | KSČM | -1 | red | |
5462abe2a87408609940eaf7 | Marta Semelová | KSČM | -1 | red | |
5462abf3a87408609940ef19 | Zdeněk Ondráček | KSČM | -1 | red | |
5462abf0a87408609940ee75 | Soňa Marková | KSČM | -1 | red | |
5462abf3a87408609940ef33 | René Číp | KSČM | -1 | red | |
5462abe2a87408609940eb33 | Ivo Pojezný | KSČM | -1 | red | |
5462abdfa87408609940ea4f | Květa Matušovská | KSČM | -1 | red | |
5462abeaa87408609940ed25 | Stanislav Grospič | KSČM | -1 | red | |
5462abeaa87408609940eceb | Gabriela Hubáčková | KSČM | -1 | red | |
5462abe0a87408609940ea79 | Zuzka Bebarová-Rujbrová | KSČM | -1 | red | |
5462abfaa87408609940f08f | Jaroslav Borka | KSČM | -1 | red | |
5462abe4a87408609940eb99 | Josef Zahradníček | KSČM | -1 | red | |
5462abf6a87408609940efd1 | Pavel Kováčik | KSČM | -1 | red | |
5462abe7a87408609940ec59 | Miloslava Vostrá | KSČM | -1 | red | |
5462abe9a87408609940ecb7 | Alena Nohavová | KSČM | -1 | red | |
5462abe1a87408609940eadb | Stanislav Mackovík | KSČM | -1 | red | |
5462abe7a87408609940ec43 | Leo Luzar | KSČM | -1 | red | |
5462abeca87408609940ed75 | Josef Šenfeld | KSČM | -1 | red | |
5462abe2a87408609940eb0f | Jiří Valenta | KSČM | -1 | red | |
5462abe2a87408609940eb27 | Alexander Černý | KSČM | -1 | red | |
5462abfaa87408609940f0a7 | Jiří Koubek | TOP 09 | -1 | darkviolet | |
5462abe2a87408609940eafd | Bohuslav Svoboda | ODS | 0 | blue | |
5462abf8a87408609940f02b | Petr Bendl | ODS | 0 | blue | |
5462abeea87408609940edf1 | Jana Černochová | ODS | 0 | blue | |
5462abe5a87408609940ebbd | Adolf Beznoska | ODS | 0 | blue | |
5462abe8a87408609940ec89 | Jan Sedláček | ANO | 0 | cyan | |
5462abe2a87408609940eb23 | Věra Jourová | ANO | 0 | cyan | |
5462abe0a87408609940ea95 | Ivan Pilný | ANO | 0 | cyan | |
5462abe7a87408609940ec5b | Radka Maxová | ANO | 0 | cyan | |
5462abf4a87408609940ef6b | Pavel Čihák | ANO | 0 | cyan | |
5462abdfa87408609940ea1b | Helena Válková | ANO | 0 | cyan | |
5462abf2a87408609940eee7 | Jiří Holeček | ANO | 0 | cyan | |
5462abf3a87408609940ef27 | Josef Vozdecký | ANO | 0 | cyan | |
5462abeca87408609940ed6b | Matěj Fichtner | ANO | 0 | cyan | |
5462abeba87408609940ed2f | Andrej Babiš | ANO | 0 | cyan | |
5462abf0a87408609940ee93 | Stanislav Berkovec | ANO | 0 | cyan | |
5462abf7a87408609940f005 | Martina Berdychová | ANO | 0 | cyan | |
5462abeaa87408609940ed19 | Jiří Zlatuška | ANO | 0 | cyan | |
5462abf1a87408609940eead | Milan Chovanec | ČSSD | 0 | orange | |
5462abf7a87408609940f00b | Štěpán Stupčuk | ČSSD | 0 | orange | |
5462abdfa87408609940ea37 | Ladislav Šincl | ČSSD | 0 | orange | |
5462abe2a87408609940eb11 | Vlastimil Gabrhel | ČSSD | 0 | orange | |
5462abf8a87408609940f045 | Milan Urban | ČSSD | 0 | orange | |
5462abe3a87408609940eb49 | Jan Mládek | ČSSD | 0 | orange | |
5462abeca87408609940ed9d | Marie Benešová | ČSSD | 0 | orange | |
5462abf1a87408609940ee9f | Pavlína Nytrová | ČSSD | 0 | orange | |
5462abe6a87408609940ec0f | Karel Černý | ČSSD | 0 | orange | |
5462abe5a87408609940ebc5 | Marek Černoch | Úsvit | 0 | pink | |
5462abeda87408609940edb7 | Miroslav Grebeníček | KSČM | 0 | red | |
5462abe2a87408609940eaf5 | Václav Snopek | KSČM | 0 | red | |
5462abf9a87408609940f081 | Josef Nekl | KSČM | 0 | red | |
5462abf7a87408609940efff | Vojtěch Adam | KSČM | 0 | red | |
5462abeca87408609940ed89 | Hana Aulická-Jírovcová | KSČM | 0 | red | |
5462abeba87408609940ed63 | Marek Ženíšek | TOP 09 | 0 | darkviolet | |
5462abf4a87408609940ef6f | František Vácha | TOP 09 | 0 | darkviolet | |
5462abe9a87408609940eccd | Daniel Korte | TOP 09 | 0 | darkviolet | |
5462abe8a87408609940ec95 | Karel Tureček | TOP 09 | 0 | darkviolet | |
5462abe3a87408609940eb4f | Jan Farský | TOP 09 | 0 | darkviolet | |
5462abe7a87408609940ec57 | Herbert Pavera | TOP 09 | 0 | darkviolet | |
5462abf3a87408609940ef31 | Jiří Skalický | TOP 09 | 0 | darkviolet | |
5462abf9a87408609940f067 | Miroslav Kalousek | TOP 09 | 0 | darkviolet | |
5462abe6a87408609940ebe9 | Petr Gazdík | TOP 09 | 0 | darkviolet | |
5462abe6a87408609940ebf7 | Marian Jurečka | KDU-ČSL | 0 | yellow | |
5462abe8a87408609940ec71 | Pavel Bělobrádek | KDU-ČSL | 0 | yellow | |
5462abf4a87408609940ef51 | Margita Balaštíková | ANO | 1 | cyan | |
5462abdfa87408609940ea1f | Roman Kubíček | ANO | 1 | cyan | |
5462abeca87408609940ed6d | Jana Pastuchová | ANO | 1 | cyan | |
5462abdfa87408609940ea4b | Jaroslava Jermanová | ANO | 1 | cyan | |
5462abf0a87408609940ee91 | Igor Nykl | ANO | 1 | cyan | |
5462abf2a87408609940ef03 | Martin Stropnický | ANO | 1 | cyan | |
5462abf6a87408609940efb7 | Martin Kolovratník | ANO | 1 | cyan | |
5462abe9a87408609940ecc1 | Jana Lorencová | ANO | 1 | cyan | |
5462abeca87408609940ed7d | Bohuslav Chalupa | ANO | 1 | cyan | |
5462abf1a87408609940eecf | Ivana Dobešová | ANO | 1 | cyan | |
5462abe7a87408609940ec35 | Josef Hájek | ANO | 1 | cyan | |
5462abe9a87408609940eccb | Roman Procházka | ANO | 1 | cyan | |
5462abf0a87408609940ee85 | Rostislav Vyzula | ANO | 1 | cyan | |
5462abf6a87408609940efd7 | Ladislav Okleštěk | ANO | 1 | cyan | |
5462abefa87408609940ee33 | Richard Brabec | ANO | 1 | cyan | |
5462abe1a87408609940eabd | Kristýna Zelienková | ANO | 1 | cyan | |
5462abe8a87408609940ec9b | Zdeněk Soukup | ANO | 1 | cyan | |
5462abeaa87408609940ecfd | Karel Rais | ANO | 1 | cyan | |
5462abeca87408609940ed91 | Pavel Šrámek | ANO | 1 | cyan | |
5462abf2a87408609940ef01 | Miloslav Janulík | ANO | 1 | cyan | |
5462abf8a87408609940f02f | Josef Kott | ANO | 1 | cyan | |
5462abf8a87408609940f043 | Vlastimil Vozka | ANO | 1 | cyan | |
5462abf8a87408609940f04d | Jaroslav Faltýnek | ANO | 1 | cyan | |
5462abeaa87408609940ecf1 | Bronislav Schwarz | ANO | 1 | cyan | |
5462abeda87408609940ede5 | David Kasal | ANO | 1 | cyan | |
5462abeba87408609940ed41 | Stanislav Pfléger | ANO | 1 | cyan | |
5462abe5a87408609940ebab | Pavel Volčík | ANO | 1 | cyan | |
5462abe9a87408609940ecd1 | Radek Vondráček | ANO | 1 | cyan | |
5462abeea87408609940eded | Milan Brázdil | ANO | 1 | cyan | |
5462abe5a87408609940ebd9 | Miloš Babiš | ANO | 1 | cyan | |
5462abe6a87408609940ec03 | Martin Sedlář | ANO | 1 | cyan | |
5462abfaa87408609940f0a9 | Martin Komárek | ANO | 1 | cyan | |
5462abe9a87408609940ecb3 | Pavel Plzák | ANO | 1 | cyan | |
5462abe4a87408609940eb7b | František Adámek | ČSSD | 1 | orange | |
5462abeea87408609940ee13 | Petr Kořenek | ČSSD | 1 | orange | |
5462abe4a87408609940eb81 | Dana Váhalová | ČSSD | 1 | orange | |
5462abefa87408609940ee27 | Vítězslav Jandák | ČSSD | 1 | orange | |
5462abf7a87408609940effd | Roman Váňa | ČSSD | 1 | orange | |
5462abe6a87408609940ec01 | Adam Rykala | ČSSD | 1 | orange | |
5462abe7a87408609940ec39 | Richard Dolejš | ČSSD | 1 | orange | |
5462abf4a87408609940ef4b | Václav Zemek | ČSSD | 1 | orange | |
5462abeba87408609940ed2d | Václav Klučka | ČSSD | 1 | orange | |
5462abf2a87408609940eeeb | Lubomír Toufar | ČSSD | 1 | orange | |
5462abe1a87408609940eaeb | Pavel Holík | ČSSD | 1 | orange | |
5462abefa87408609940ee49 | Pavel Antonín | ČSSD | 1 | orange | |
5462abe4a87408609940eb9f | Zuzana Kailová | ČSSD | 1 | orange | |
5462abeaa87408609940ecfb | Jan Chvojka | ČSSD | 1 | orange | |
5462abe0a87408609940ea93 | Roman Sklenák | ČSSD | 1 | orange | |
5462abe4a87408609940eb83 | Jiří Zemánek | ČSSD | 1 | orange | |
5462abe0a87408609940ea91 | Jaroslav Foldyna | ČSSD | 1 | orange | |
5462abeaa87408609940ed0f | Vlasta Bohdalová | ČSSD | 1 | orange | |
5462abe4a87408609940eb87 | Bohuslav Sobotka | ČSSD | 1 | orange | |
5462abeaa87408609940ed21 | Zdeněk Syblík | ČSSD | 1 | orange | |
5462abf9a87408609940f077 | Jan Hamáček | ČSSD | 1 | orange | |
5462abe3a87408609940eb47 | Antonín Seďa | ČSSD | 1 | orange | |
5462abf2a87408609940eee3 | Pavel Havíř | ČSSD | 1 | orange | |
5462abf3a87408609940ef1b | Lubomír Zaorálek | ČSSD | 1 | orange | |
5462abf9a87408609940f069 | Pavel Ploc | ČSSD | 1 | orange | |
5462abf6a87408609940efdb | Jiří Petrů | ČSSD | 1 | orange | |
5462abf0a87408609940ee8b | Igor Jakubčík | ČSSD | 1 | orange | |
5462abdfa87408609940ea2d | Robin Böhnisch | ČSSD | 1 | orange | |
5462abe9a87408609940ecbd | Václav Votava | ČSSD | 1 | orange | |
5462abe5a87408609940ebb5 | Jiří Běhounek | ČSSD | 1 | orange | |
5462abf1a87408609940eea7 | Lukáš Pleticha | ČSSD | 1 | orange | |
5462abe7a87408609940ec33 | Jan Birke | ČSSD | 1 | orange | |
5462abe9a87408609940ecb1 | Petr Adam | Úsvit | 1 | pink | |
5462abe5a87408609940ebad | Karel Fiedler | Úsvit | 1 | pink | |
5462abe5a87408609940ebb3 | Augustin Karel Andrle Sylor | Úsvit | 1 | pink | |
5462abe6a87408609940ec07 | Olga Havlová | Úsvit | 1 | pink | |
5462abf8a87408609940f02d | Jiří Štětina | Úsvit | 1 | pink | |
5462abeba87408609940ed43 | Karel Pražák | Úsvit | 1 | pink | |
5462abf0a87408609940ee63 | Jaroslav Holík | Úsvit | 1 | pink | |
5462abe3a87408609940eb73 | Milan Šarapatka | Úsvit | 1 | pink | |
5462abf4a87408609940ef45 | Michal Kučera | TOP 09 | 1 | darkviolet | |
5462abfba87408609940f0db | Věra Kovářová | TOP 09 | 1 | darkviolet | |
5462abeea87408609940ee03 | Jitka Chalánková | TOP 09 | 1 | darkviolet | |
5462abf4a87408609940ef5d | Jaroslav Lobkowicz | TOP 09 | 1 | darkviolet | |
5462abf3a87408609940ef11 | Leoš Heger | TOP 09 | 1 | darkviolet | |
5462abf1a87408609940ee9d | Helena Langšádlová | TOP 09 | 1 | darkviolet | |
5462abe8a87408609940ec73 | Martin Plíšek | TOP 09 | 1 | darkviolet | |
5462abe6a87408609940ec05 | František Laudát | TOP 09 | 1 | darkviolet | |
5462abf9a87408609940f071 | Anna Putnová | TOP 09 | 1 | darkviolet | |
5462abe7a87408609940ec19 | Markéta Adamová | TOP 09 | 1 | darkviolet | |
5462abfba87408609940f0cf | Václav Horáček | TOP 09 | 1 | darkviolet | |
5462abe1a87408609940eabb | Rom Kostřica | TOP 09 | 1 | darkviolet | |
5462abf6a87408609940efc7 | Zdeněk Bezecný | TOP 09 | 1 | darkviolet | |
5462abeba87408609940ed4b | Gabriela Pecková | TOP 09 | 1 | darkviolet | |
5462abeda87408609940edd3 | Nina Nováková | TOP 09 | 1 | darkviolet | |
5462abf0a87408609940ee7d | Karel Schwarzenberg | TOP 09 | 1 | darkviolet | |
5462abfaa87408609940f0a5 | Josef Uhlík | KDU-ČSL | 1 | yellow | |
5462abe1a87408609940eab5 | Jaroslav Klaška | KDU-ČSL | 1 | yellow | |
5462abf6a87408609940efe9 | Ivan Gabal | KDU-ČSL | 1 | yellow | |
5462abe1a87408609940eae7 | Ondřej Benešík | KDU-ČSL | 1 | yellow | |
5462abefa87408609940ee37 | Jan Bartošek | KDU-ČSL | 1 | yellow | |
5462abe5a87408609940ebdb | Tomáš Jan Podivínský | KDU-ČSL | 1 | yellow | |
5462abeda87408609940edc5 | Daniel Herman | KDU-ČSL | 1 | yellow | |
5462abe8a87408609940ec99 | Jiří Mihola | KDU-ČSL | 1 | yellow | |
5462abf0a87408609940ee6f | Vít Kaňkovský | KDU-ČSL | 1 | yellow | |
5462abf1a87408609940eeb1 | Jiří Junek | KDU-ČSL | 1 | yellow | |
5462abf8a87408609940f049 | Petr Kudela | KDU-ČSL | 1 | yellow | |
5462abefa87408609940ee61 | Ludvík Hovorka | KDU-ČSL | 1 | yellow |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment