console
var d_convocations = {
"1": { "id": 1, "years": "0126" },
"2": { "id": 2, "years": "0127" },
"3": { "id": 3, "years": "0128" },
"4": { "id": 4, "years": "2004 – 2007" },
"5": { "id": 5, "years": "2008 – 2011" },
"6": { "id": 6, "years": "2011 – 2016" },
"7": { "id": 7, "years": "2016 – 2021" },
}
var a_convocations = Object.keys(d_convocations).map(function (a) { return d_convocations[a]; });
var d_fractions = {
"5707": {
"id": 5707,
"order": 7,
"partyId": 1,
"size": 54,
"convocationId": 1,
"offset": 271
},
"5708": { "id": 5708, "order": 9, "partyId": 2, "size": 58, "convocationId": 1, "offset": 349 },
"5709": { "id": 5709, "order": 1, "partyId": 3, "size": 29, "convocationId": 1, "offset": 35 },
"5710": { "id": 5710, "order": 0, "partyId": 4, "size": 35, "convocationId": 1, "offset": 0 },
"5711": { "id": 5711, "order": 5, "partyId": 5, "size": 40, "convocationId": 1, "offset": 177 },
"5712": { "id": 5712, "order": 6, "partyId": 6, "size": 54, "convocationId": 1, "offset": 217 },
"5713": { "id": 5713, "order": 3, "partyId": 7, "size": 64, "convocationId": 1, "offset": 77 },
"5714": { "id": 5714, "order": 11, "partyId": 8, "size": 48, "convocationId": 1, "offset": 418 },
"5715": { "id": 5715, "order": 2, "partyId": 9, "size": 13, "convocationId": 1, "offset": 64 },
"5716": { "id": 5716, "order": 8, "partyId": 10, "size": 24, "convocationId": 1, "offset": 325 },
"5717": { "id": 5717, "order": 4, "partyId": 11, "size": 36, "convocationId": 1, "offset": 141 },
"5718": { "id": 5718, "order": 10, "partyId": 12, "size": 11, "convocationId": 1, "offset": 407 },
"5719": { "id": 5719, "order": 2, "partyId": 13, "size": 47, "convocationId": 2, "offset": 106 },
"5720": { "id": 5720, "order": 5, "partyId": 2, "size": 42, "convocationId": 2, "offset": 270 },
"5721": { "id": 5721, "order": 7, "partyId": 8, "size": 127, "convocationId": 2, "offset": 364 },
"5722": { "id": 5722, "order": 6, "partyId": 14, "size": 52, "convocationId": 2, "offset": 312 },
"5723": { "id": 5723, "order": 0, "partyId": 3, "size": 46, "convocationId": 2, "offset": 0 },
"5724": { "id": 5724, "order": 3, "partyId": 7, "size": 77, "convocationId": 2, "offset": 153 },
"5725": { "id": 5725, "order": 1, "partyId": 15, "size": 60, "convocationId": 2, "offset": 46 },
"5726": { "id": 5726, "order": 4, "partyId": 16, "size": 40, "convocationId": 2, "offset": 230 },
"5735": { "id": 5735, "order": 0, "partyId": 22, "size": 35, "convocationId": 3, "offset": 0 },
"5730": { "id": 5730, "order": 1, "partyId": 18, "size": 66, "convocationId": 3, "offset": 35 },
"5731": { "id": 5731, "order": 2, "partyId": 19, "size": 86, "convocationId": 3, "offset": 101 },
"5734": { "id": 5734, "order": 3, "partyId": 3, "size": 19, "convocationId": 3, "offset": 187 },
"5736": { "id": 5736, "order": 4, "partyId": 2, "size": 16, "convocationId": 3, "offset": 206 },
"5728": { "id": 5728, "order": 5, "partyId": 7, "size": 23, "convocationId": 3, "offset": 222 },
"5729": { "id": 5729, "order": 6, "partyId": 17, "size": 49, "convocationId": 3, "offset": 245 },
"5732": { "id": 5732, "order": 7, "partyId": 20, "size": 50, "convocationId": 3, "offset": 294 },
"5733": { "id": 5733, "order": 8, "partyId": 21, "size": 44, "convocationId": 3, "offset": 344 },
"5727": { "id": 5727, "order": 9, "partyId": 8, "size": 88, "convocationId": 3, "offset": 388 },
"5737": { "id": 5737, "order": 1, "partyId": 2, "size": 30, "convocationId": 4, "offset": 328 },
"5738": { "id": 5738, "order": 0, "partyId": 23, "size": 328, "convocationId": 4, "offset": 0 },
"5739": { "id": 5739, "order": 3, "partyId": 24, "size": 46, "convocationId": 4, "offset": 380 },
"5740": { "id": 5740, "order": 2, "partyId": 7, "size": 22, "convocationId": 4, "offset": 358 },
"5741": { "id": 5741, "order": 4, "partyId": 8, "size": 50, "convocationId": 4, "offset": 426 },
"5743": { "id": 5743, "order": 1, "partyId": 2, "size": 44, "convocationId": 5, "offset": 348 },
"5744": { "id": 5744, "order": 0, "partyId": 23, "size": 348, "convocationId": 5, "offset": 0 },
"5745": { "id": 5745, "order": 2, "partyId": 25, "size": 39, "convocationId": 5, "offset": 392 },
"5746": { "id": 5746, "order": 3, "partyId": 8, "size": 62, "convocationId": 5, "offset": 431 },
"5747": { "id": 5747, "order": 3, "partyId": 8, "size": 92, "convocationId": 6, "offset": 358 },
"5748": { "id": 5748, "order": 0, "partyId": 23, "size": 238, "convocationId": 6, "offset": 0 },
"5749": { "id": 5749, "order": 1, "partyId": 2, "size": 56, "convocationId": 6, "offset": 238 },
"5750": { "id": 5750, "order": 2, "partyId": 25, "size": 64, "convocationId": 6, "offset": 294 },
"7000": { "id": 7000, "order": 0, "partyId": 23, "size": 345, "convocationId": 7, "offset": 0 },
"7001": { "id": 7001, "order": 1, "partyId": 2, "size": 39, "convocationId": 7, "offset": 345 },
"7002": { "id": 7002, "order": 2, "partyId": 25, "size": 24, "convocationId": 7, "offset": 384 },
"7003": { "id": 7003, "order": 3, "partyId": 8, "size": 42, "convocationId": 7, "offset": 408 },
"7004": { "id": 7004, "order": 4, "partyId": 24, "size": 1, "convocationId": 7, "offset": 450 },
"7005": { "id": 7005, "order": 5, "partyId": 26, "size": 1, "convocationId": 7, "offset": 451 },
}
var a_fractions = Object.keys(d_fractions).map(function (a) { return d_fractions[a]; });
a_fractions.reverse();
var d_parties = {
"1": { "id": 1, "name": "Аграрная партия России", color: "#a3ff6a" },
"2": { "id": 2, "name": "ЛДПР", color: "#73b9e0" },
"3": { "id": 3, "name": "Яблоко", color: "#44ad3c" },
"4": { "id": 4, "name": "Стабильность", color: "#3ea9ac" },
"5": { "id": 5, "name": "Новая региональная политика — Дума-96", color: "#743679" },
"6": { "id": 6, "name": "Выбор России", color: "#eb7676" },
"7": { "id": 7, "name": "Независимые", color: "#c8cac4" },
"8": { "id": 8, "name": "КПРФ", color: "#d50200" },
"9": { "id": 9, "name": "Партия российского единства и согласия", color: "#a0e0d6" },
"10": { "id": 10, "name": "Женщины России", color: "#f56dcd" },
"11": { "id": 11, "name": "Россия", color: "#dedbb4" },
"12": { "id": 12, "name": "Демократическая партия России", color: "#a644a4" },
"13": { "id": 13, "name": "Российские регионы", color: "#538697" },
"14": { "id": 14, "name": "Народовластие", color: "#ca6886" },
"15": { "id": 15, "name": "Наш дом — Россия", color: "#9e8775" },
"16": { "id": 16, "name": "Аграрная депутатская группа", color: "#80d878" },
"17": { "id": 17, "name": "Народный депутат", color: "#9ba0a5" },
"18": { "id": 18, "name": "Отечество — Единая Россия", color: "#ae87d6" },
"19": { "id": 19, "name": "Единство — Единая Россия", color: "#4381bb" },
"20": { "id": 20, "name": "Регионы России", color: "#b4d351" },
"21": { "id": 21, "name": "Агропромышленная депутатская группа", color: "#62b97e" },
"22": { "id": 22, "name": "СПС", color: "#0394d3" },
"23": { "id": 23, "name": "Единая Россия", color: "#0053a0" },
"24": { "id": 24, "name": "Родина", color: "#fffb62" },
"25": { "id": 25, "name": "Справедливая Россия", color: "#fab512" },
"26": { "id": 26, "name": "Гражданская платформа", color: "#F0F0F0" }
}
var a_transitions_jump = [
{ "id": 1, "from": 5718, "to": 5727, "number": 1, "leftOffset": 3, "rightOffset": 58 },
{ "id": 2, "from": 5710, "to": 5729, "number": 1, "leftOffset": 5, "rightOffset": 0 },
{ "id": 3, "from": 5707, "to": 5730, "number": 1, "leftOffset": 1, "rightOffset": 9 },
{ "id": 4, "from": 5717, "to": 5731, "number": 1, "leftOffset": 2, "rightOffset": 6 },
{ "id": 5, "from": 5711, "to": 5731, "number": 1, "leftOffset": 2, "rightOffset": 7 },
{ "id": 6, "from": 5717, "to": 5732, "number": 1, "leftOffset": 6, "rightOffset": 12 },
{ "id": 7, "from": 5707, "to": 5733, "number": 1, "leftOffset": 18, "rightOffset": 7 },
{ "id": 8, "from": 5712, "to": 5735, "number": 4, "leftOffset": 0, "rightOffset": 8 },
{ "id": 9, "from": 5720, "to": 5737, "number": 1, "leftOffset": 10, "rightOffset": 6 },
{ "id": 10, "from": 5710, "to": 5738, "number": 1, "leftOffset": 0, "rightOffset": 50 },
{ "id": 11, "from": 5725, "to": 5738, "number": 2, "leftOffset": 1, "rightOffset": 51 },
{ "id": 12, "from": 5719, "to": 5738, "number": 1, "leftOffset": 1, "rightOffset": 102 },
{ "id": 13, "from": 5724, "to": 5738, "number": 3, "leftOffset": 4, "rightOffset": 103 },
{ "id": 14, "from": 5718, "to": 5738, "number": 1, "leftOffset": 0, "rightOffset": 152 },
{ "id": 15, "from": 5722, "to": 5739, "number": 1, "leftOffset": 20, "rightOffset": 13 },
{ "id": 16, "from": 5721, "to": 5739, "number": 1, "leftOffset": 9, "rightOffset": 17 },
{ "id": 17, "from": 5722, "to": 5740, "number": 1, "leftOffset": 19, "rightOffset": 11 },
{ "id": 18, "from": 5726, "to": 5741, "number": 1, "leftOffset": 12, "rightOffset": 0 },
{ "id": 19, "from": 5722, "to": 5741, "number": 1, "leftOffset": 25, "rightOffset": 1 },
{ "id": 20, "from": 5721, "to": 5741, "number": 1, "leftOffset": 64, "rightOffset": 9 },
{ "id": 21, "from": 5724, "to": 5743, "number": 1, "leftOffset": 20, "rightOffset": 0 },
{ "id": 22, "from": 5729, "to": 5744, "number": 2, "leftOffset": 21, "rightOffset": 168 },
{ "id": 23, "from": 5707, "to": 5744, "number": 1, "leftOffset": 0, "rightOffset": 170 },
{ "id": 24, "from": 5732, "to": 5744, "number": 1, "leftOffset": 18, "rightOffset": 171 },
{ "id": 25, "from": 5722, "to": 5744, "number": 2, "leftOffset": 0, "rightOffset": 172 },
{ "id": 26, "from": 5735, "to": 5745, "number": 1, "leftOffset": 3, "rightOffset": 0 },
{ "id": 27, "from": 5728, "to": 5745, "number": 2, "leftOffset": 9, "rightOffset": 2 },
{ "id": 28, "from": 5732, "to": 5745, "number": 1, "leftOffset": 26, "rightOffset": 4 },
{ "id": 29, "from": 5722, "to": 5746, "number": 1, "leftOffset": 26, "rightOffset": 0 },
{ "id": 30, "from": 5733, "to": 5746, "number": 1, "leftOffset": 15, "rightOffset": 1 },
{ "id": 31, "from": 5727, "to": 5746, "number": 7, "leftOffset": 33, "rightOffset": 33 },
{ "id": 32, "from": 5727, "to": 5747, "number": 4, "leftOffset": 4, "rightOffset": 0 },
{ "id": 33, "from": 5741, "to": 5747, "number": 1, "leftOffset": 0, "rightOffset": 4 },
{ "id": 34, "from": 5738, "to": 5748, "number": 2, "leftOffset": 168, "rightOffset": 108 },
{ "id": 35, "from": 5713, "to": 5748, "number": 1, "leftOffset": 1, "rightOffset": 110 },
{ "id": 36, "from": 5731, "to": 5748, "number": 1, "leftOffset": 49, "rightOffset": 111 },
{ "id": 37, "from": 5719, "to": 5748, "number": 1, "leftOffset": 2, "rightOffset": 112 },
{ "id": 38, "from": 5739, "to": 5748, "number": 1, "leftOffset": 0, "rightOffset": 114 },
{ "id": 39, "from": 5720, "to": 5749, "number": 1, "leftOffset": 8, "rightOffset": 0 },
{ "id": 40, "from": 5737, "to": 5749, "number": 1, "leftOffset": 0, "rightOffset": 1 },
{ "id": 41, "from": 5738, "to": 5750, "number": 1, "leftOffset": 171, "rightOffset": 0 },
{ "id": 42, "from": 5740, "to": 5750, "number": 1, "leftOffset": 1, "rightOffset": 2 },
{ "id": 43, "from": 5738, "to": 7000, "number": 1, "leftOffset": 170, "rightOffset": 139 },
{ "id": 44, "from": 5744, "to": 7000, "number": 7, "leftOffset": 108, "rightOffset": 132 },
{ "id": 45, "from": 5740, "to": 7000, "number": 1, "leftOffset": 0, "rightOffset": 140 },
{ "id": 46, "from": 5721, "to": 7000, "number": 1, "leftOffset": 0, "rightOffset": 141 },
{ "id": 47, "from": 5729, "to": 7002, "number": 1, "leftOffset": 28, "rightOffset": 17 },
{ "id": 48, "from": 5745, "to": 7002, "number": 1, "leftOffset": 31, "rightOffset": 18 }
];
var a_transitions_direct = [
{ "id": 49, "from": 5710, "to": 5719, "number": 2, "leftOffset": 3, "rightOffset": 0 },
{ "id": 50, "from": 5715, "to": 5719, "number": 1, "leftOffset": 2, "rightOffset": 2 },
{ "id": 51, "from": 5713, "to": 5719, "number": 7, "leftOffset": 4, "rightOffset": 3 },
{ "id": 52, "from": 5717, "to": 5719, "number": 2, "leftOffset": 3, "rightOffset": 10 },
{ "id": 53, "from": 5711, "to": 5719, "number": 5, "leftOffset": 3, "rightOffset": 12 },
{ "id": 54, "from": 5712, "to": 5719, "number": 1, "leftOffset": 4, "rightOffset": 17 },
{ "id": 55, "from": 5716, "to": 5719, "number": 2, "leftOffset": 0, "rightOffset": 18 },
{ "id": 56, "from": 5708, "to": 5720, "number": 21, "leftOffset": 8, "rightOffset": 0 },
{ "id": 57, "from": 5707, "to": 5721, "number": 1, "leftOffset": 19, "rightOffset": 0 },
{ "id": 58, "from": 5714, "to": 5721, "number": 29, "leftOffset": 6, "rightOffset": 1 },
{ "id": 59, "from": 5713, "to": 5722, "number": 6, "leftOffset": 18, "rightOffset": 0 },
{ "id": 60, "from": 5717, "to": 5722, "number": 1, "leftOffset": 7, "rightOffset": 6 },
{ "id": 61, "from": 5711, "to": 5722, "number": 1, "leftOffset": 9, "rightOffset": 7 },
{ "id": 62, "from": 5716, "to": 5722, "number": 1, "leftOffset": 3, "rightOffset": 8 },
{ "id": 63, "from": 5718, "to": 5722, "number": 1, "leftOffset": 2, "rightOffset": 9 },
{ "id": 64, "from": 5709, "to": 5723, "number": 18, "leftOffset": 0, "rightOffset": 0 },
{ "id": 65, "from": 5713, "to": 5723, "number": 1, "leftOffset": 0, "rightOffset": 18 },
{ "id": 66, "from": 5709, "to": 5724, "number": 2, "leftOffset": 18, "rightOffset": 0 },
{ "id": 67, "from": 5715, "to": 5724, "number": 1, "leftOffset": 3, "rightOffset": 2 },
{ "id": 68, "from": 5713, "to": 5724, "number": 7, "leftOffset": 11, "rightOffset": 3 },
{ "id": 69, "from": 5717, "to": 5724, "number": 1, "leftOffset": 5, "rightOffset": 10 },
{ "id": 70, "from": 5711, "to": 5724, "number": 1, "leftOffset": 8, "rightOffset": 11 },
{ "id": 71, "from": 5712, "to": 5724, "number": 7, "leftOffset": 5, "rightOffset": 12 },
{ "id": 72, "from": 5707, "to": 5724, "number": 1, "leftOffset": 3, "rightOffset": 19 },
{ "id": 73, "from": 5708, "to": 5724, "number": 8, "leftOffset": 0, "rightOffset": 20 },
{ "id": 74, "from": 5718, "to": 5724, "number": 1, "leftOffset": 1, "rightOffset": 28 },
{ "id": 75, "from": 5714, "to": 5724, "number": 3, "leftOffset": 0, "rightOffset": 29 },
{ "id": 76, "from": 5710, "to": 5725, "number": 2, "leftOffset": 1, "rightOffset": 0 },
{ "id": 77, "from": 5715, "to": 5725, "number": 2, "leftOffset": 0, "rightOffset": 2 },
{ "id": 78, "from": 5713, "to": 5725, "number": 2, "leftOffset": 2, "rightOffset": 4 },
{ "id": 79, "from": 5717, "to": 5725, "number": 2, "leftOffset": 0, "rightOffset": 6 },
{ "id": 80, "from": 5711, "to": 5725, "number": 2, "leftOffset": 0, "rightOffset": 8 },
{ "id": 81, "from": 5707, "to": 5725, "number": 1, "leftOffset": 2, "rightOffset": 10 },
{ "id": 82, "from": 5707, "to": 5726, "number": 14, "leftOffset": 4, "rightOffset": 0 },
{ "id": 83, "from": 5716, "to": 5726, "number": 1, "leftOffset": 2, "rightOffset": 14 },
{ "id": 84, "from": 5714, "to": 5726, "number": 3, "leftOffset": 3, "rightOffset": 15 },
{ "id": 85, "from": 5722, "to": 5727, "number": 4, "leftOffset": 21, "rightOffset": 0 },
{ "id": 86, "from": 5721, "to": 5727, "number": 54, "leftOffset": 10, "rightOffset": 4 },
{ "id": 87, "from": 5723, "to": 5728, "number": 2, "leftOffset": 17, "rightOffset": 0 },
{ "id": 88, "from": 5725, "to": 5728, "number": 1, "leftOffset": 10, "rightOffset": 2 },
{ "id": 89, "from": 5724, "to": 5728, "number": 5, "leftOffset": 9, "rightOffset": 3 },
{ "id": 90, "from": 5720, "to": 5728, "number": 1, "leftOffset": 7, "rightOffset": 8 },
{ "id": 91, "from": 5722, "to": 5728, "number": 1, "leftOffset": 3, "rightOffset": 9 },
{ "id": 92, "from": 5721, "to": 5728, "number": 2, "leftOffset": 1, "rightOffset": 10 },
{ "id": 93, "from": 5725, "to": 5729, "number": 2, "leftOffset": 11, "rightOffset": 1 },
{ "id": 94, "from": 5719, "to": 5729, "number": 2, "leftOffset": 6, "rightOffset": 3 },
{ "id": 95, "from": 5724, "to": 5729, "number": 5, "leftOffset": 14, "rightOffset": 5 },
{ "id": 96, "from": 5720, "to": 5729, "number": 1, "leftOffset": 9, "rightOffset": 10 },
{ "id": 97, "from": 5722, "to": 5729, "number": 1, "leftOffset": 4, "rightOffset": 11 },
{ "id": 98, "from": 5721, "to": 5729, "number": 1, "leftOffset": 3, "rightOffset": 12 },
{ "id": 99, "from": 5723, "to": 5730, "number": 1, "leftOffset": 2, "rightOffset": 0 },
{ "id": 100, "from": 5725, "to": 5730, "number": 2, "leftOffset": 3, "rightOffset": 1 },
{ "id": 101, "from": 5719, "to": 5730, "number": 2, "leftOffset": 3, "rightOffset": 3 },
{ "id": 102, "from": 5724, "to": 5730, "number": 1, "leftOffset": 7, "rightOffset": 5 },
{ "id": 103, "from": 5726, "to": 5730, "number": 3, "leftOffset": 0, "rightOffset": 6 },
{ "id": 104, "from": 5722, "to": 5730, "number": 1, "leftOffset": 2, "rightOffset": 10 },
{ "id": 105, "from": 5725, "to": 5731, "number": 5, "leftOffset": 5, "rightOffset": 0 },
{ "id": 106, "from": 5719, "to": 5731, "number": 1, "leftOffset": 5, "rightOffset": 5 },
{ "id": 107, "from": 5726, "to": 5731, "number": 2, "leftOffset": 3, "rightOffset": 8 },
{ "id": 108, "from": 5720, "to": 5731, "number": 1, "leftOffset": 0, "rightOffset": 10 },
{ "id": 109, "from": 5719, "to": 5732, "number": 12, "leftOffset": 8, "rightOffset": 0 },
{ "id": 110, "from": 5724, "to": 5732, "number": 1, "leftOffset": 19, "rightOffset": 13 },
{ "id": 111, "from": 5722, "to": 5732, "number": 7, "leftOffset": 5, "rightOffset": 14 },
{ "id": 112, "from": 5726, "to": 5733, "number": 7, "leftOffset": 5, "rightOffset": 0 },
{ "id": 113, "from": 5722, "to": 5733, "number": 7, "leftOffset": 12, "rightOffset": 8 },
{ "id": 114, "from": 5721, "to": 5733, "number": 5, "leftOffset": 4, "rightOffset": 15 },
{ "id": 115, "from": 5723, "to": 5734, "number": 14, "leftOffset": 3, "rightOffset": 0 },
{ "id": 116, "from": 5724, "to": 5734, "number": 1, "leftOffset": 8, "rightOffset": 14 },
{ "id": 117, "from": 5723, "to": 5735, "number": 2, "leftOffset": 0, "rightOffset": 0 },
{ "id": 118, "from": 5725, "to": 5735, "number": 1, "leftOffset": 0, "rightOffset": 2 },
{ "id": 119, "from": 5719, "to": 5735, "number": 1, "leftOffset": 0, "rightOffset": 3 },
{ "id": 120, "from": 5724, "to": 5735, "number": 4, "leftOffset": 0, "rightOffset": 4 },
{ "id": 121, "from": 5720, "to": 5736, "number": 6, "leftOffset": 1, "rightOffset": 0 },
{ "id": 122, "from": 5736, "to": 5737, "number": 6, "leftOffset": 1, "rightOffset": 0 },
{ "id": 123, "from": 5735, "to": 5738, "number": 3, "leftOffset": 0, "rightOffset": 0 },
{ "id": 124, "from": 5730, "to": 5738, "number": 47, "leftOffset": 0, "rightOffset": 3 },
{ "id": 125, "from": 5731, "to": 5738, "number": 49, "leftOffset": 0, "rightOffset": 53 },
{ "id": 126, "from": 5734, "to": 5738, "number": 1, "leftOffset": 0, "rightOffset": 106 },
{ "id": 127, "from": 5736, "to": 5738, "number": 1, "leftOffset": 0, "rightOffset": 107 },
{ "id": 128, "from": 5728, "to": 5738, "number": 1, "leftOffset": 0, "rightOffset": 108 },
{ "id": 129, "from": 5729, "to": 5738, "number": 21, "leftOffset": 0, "rightOffset": 109 },
{ "id": 130, "from": 5732, "to": 5738, "number": 18, "leftOffset": 0, "rightOffset": 130 },
{ "id": 131, "from": 5733, "to": 5738, "number": 4, "leftOffset": 0, "rightOffset": 148 },
{ "id": 132, "from": 5736, "to": 5739, "number": 1, "leftOffset": 8, "rightOffset": 0 },
{ "id": 133, "from": 5728, "to": 5739, "number": 3, "leftOffset": 6, "rightOffset": 1 },
{ "id": 134, "from": 5729, "to": 5739, "number": 4, "leftOffset": 24, "rightOffset": 4 },
{ "id": 135, "from": 5732, "to": 5739, "number": 5, "leftOffset": 21, "rightOffset": 8 },
{ "id": 136, "from": 5733, "to": 5739, "number": 3, "leftOffset": 5, "rightOffset": 14 },
{ "id": 137, "from": 5727, "to": 5739, "number": 3, "leftOffset": 1, "rightOffset": 18 },
{ "id": 138, "from": 5734, "to": 5740, "number": 2, "leftOffset": 1, "rightOffset": 0 },
{ "id": 139, "from": 5736, "to": 5740, "number": 1, "leftOffset": 7, "rightOffset": 2 },
{ "id": 140, "from": 5728, "to": 5740, "number": 5, "leftOffset": 1, "rightOffset": 3 },
{ "id": 141, "from": 5729, "to": 5740, "number": 1, "leftOffset": 23, "rightOffset": 8 },
{ "id": 142, "from": 5732, "to": 5740, "number": 2, "leftOffset": 19, "rightOffset": 9 },
{ "id": 143, "from": 5733, "to": 5740, "number": 1, "leftOffset": 4, "rightOffset": 12 },
{ "id": 144, "from": 5727, "to": 5740, "number": 1, "leftOffset": 0, "rightOffset": 13 },
{ "id": 145, "from": 5733, "to": 5741, "number": 7, "leftOffset": 8, "rightOffset": 2 },
{ "id": 146, "from": 5727, "to": 5741, "number": 25, "leftOffset": 8, "rightOffset": 10 },
{ "id": 147, "from": 5737, "to": 5743, "number": 18, "leftOffset": 1, "rightOffset": 1 },
{ "id": 148, "from": 5738, "to": 5744, "number": 168, "leftOffset": 0, "rightOffset": 0 },
{ "id": 149, "from": 5738, "to": 5745, "number": 1, "leftOffset": 172, "rightOffset": 1 },
{ "id": 150, "from": 5740, "to": 5745, "number": 4, "leftOffset": 2, "rightOffset": 5 },
{ "id": 151, "from": 5739, "to": 5745, "number": 8, "leftOffset": 1, "rightOffset": 9 },
{ "id": 152, "from": 5741, "to": 5746, "number": 31, "leftOffset": 1, "rightOffset": 2 },
{ "id": 153, "from": 5746, "to": 5747, "number": 46, "leftOffset": 0, "rightOffset": 5 },
{ "id": 154, "from": 5744, "to": 5748, "number": 108, "leftOffset": 0, "rightOffset": 0 },
{ "id": 155, "from": 5743, "to": 5748, "number": 1, "leftOffset": 0, "rightOffset": 113 },
{ "id": 156, "from": 5745, "to": 5748, "number": 5, "leftOffset": 0, "rightOffset": 115 },
{ "id": 157, "from": 5743, "to": 5749, "number": 20, "leftOffset": 1, "rightOffset": 2 },
{ "id": 158, "from": 5743, "to": 5750, "number": 1, "leftOffset": 21, "rightOffset": 1 },
{ "id": 159, "from": 5745, "to": 5750, "number": 26, "leftOffset": 5, "rightOffset": 3 },
{ "id": 160, "from": 5748, "to": 7000, "number": 132, "leftOffset": 0, "rightOffset": 0 },
{ "id": 161, "from": 5749, "to": 7001, "number": 25, "leftOffset": 0, "rightOffset": 0 },
{ "id": 162, "from": 5748, "to": 7002, "number": 2, "leftOffset": 132, "rightOffset": 0 },
{ "id": 163, "from": 5749, "to": 7002, "number": 1, "leftOffset": 25, "rightOffset": 2 },
{ "id": 164, "from": 5750, "to": 7002, "number": 14, "leftOffset": 0, "rightOffset": 3 },
{ "id": 165, "from": 5747, "to": 7003, "number": 33, "leftOffset": 0, "rightOffset": 0 }
];
// TODO:
// - check on mobile
if (!String.prototype.format) {
String.prototype.format = function () {
var args = arguments;
return this.replace(/{(\d+)}/g, function (match, number) {
return typeof args[number] != 'undefined'
? args[number]
: match
;
});
};
}
if (!String.prototype.transliterate) {
var tr = { "Ё": "Yo", "Й": "I", "Ц": "Ts", "У": "U", "К": "K", "Е": "E", "Н": "N", "Г": "G", "Ш": "Sh", "Щ": "Sch", "З": "Z", "Х": "H", "Ъ": "'", "ё": "yo", "й": "i", "ц": "ts", "у": "u", "к": "k", "е": "e", "н": "n", "г": "g", "ш": "sh", "щ": "sch", "з": "z", "х": "h", "ъ": "'", "Ф": "F", "Ы": "I", "В": "V", "А": "A", "П": "P", "Р": "R", "О": "O", "Л": "L", "Д": "D", "Ж": "Zh", "Э": "E", "ф": "f", "ы": "i", "в": "v", "а": "a", "п": "p", "р": "r", "о": "o", "л": "l", "д": "d", "ж": "zh", "э": "e", "Я": "Ya", "Ч": "Ch", "С": "S", "М": "M", "И": "I", "Т": "T", "Ь": "'", "Б": "B", "Ю": "Yu", "я": "ya", "ч": "ch", "с": "s", "м": "m", "и": "i", "т": "t", "ь": "'", "б": "b", "ю": "yu" };
String.prototype.transliterate = function () {
if (!ENGLISH)
return this;
return this.split('').map(function (char) {
return tr[char] || char;
}).join('');
}
}
//=====================
var LEFT_MARGIN = 50,
TOP_MARGIN = 50,
CONVO_OFFSET = 150,
FRACTION_WIDTH = 10,
SHADOW_K = .1,
SCALE_Y = 1,
L_ALL_DEPS = 'Все депутаты',
L_CONVO = 'созыв',
L_DEP_OF_CONVO = 'Депутаты {0} созыва',
L_PPL = '{0} чел.'
ENGLISH = false;
var dom = {
svg: undefined,
convocations: undefined,
fractions: undefined,
transitions: undefined,
defs: undefined,
deputies: undefined,
header: undefined,
}
var s = {}
//=====================
function setTitle(name) {
var counter = L_PPL.format(dom.deputies.selectAll('.deputat:not(.hidden)').size());
dom.header.select('#title').html(name === undefined ? L_ALL_DEPS : name);
dom.header.select('#supp').text(counter);
//dom.header.select('#counter').text(supp === undefined ? '' : counter);
dom.header.select('#clear').classed('hidden', name === undefined);
}
function hoverConvocation(convocation) {
s.fractions
.classed('active', function (d) { return convocation !== undefined && d.convocationId == convocation.id; });
s.transitions
.classed('active', false);
}
function hoverFraction(fraction) {
s.fractions
.classed('active', function (d) { return fraction !== undefined && d.id == fraction.id; });
}
function hoverTransition(transition) {
s.transitions
.classed('active', function (d) { return transition !== undefined && d.id == transition.id; });
s.fractions
.classed('active', function (d) {
return transition !== undefined && (d.id == transition.from || d.id == transition.to);
});
}
function hoverDeputat(deputat) {
s.fractions
.classed('active', function (d) {
return deputat !== undefined && deputat.fractionIds.indexOf(d.id) != -1;
})
.classed('faded', function (d) {
if (deputat !== undefined)
return deputat.fractionIds.indexOf(d.id) == -1;
else
if (noSelection)
return false
else
return !d3.select(this).classed('selected');
});
s.transitions
.classed('active', function (d) {
if (deputat === undefined)
return false;
var i = deputat.fractionIds.indexOf(d.from);
return i != -1 && deputat.fractionIds.indexOf(d.to) == i + 1;
})
.classed('faded', function (d) {
if (deputat !== undefined) {
var i = deputat.fractionIds.indexOf(d.from);
return i == -1 || deputat.fractionIds.indexOf(d.to) != i + 1;
}
else
if (noSelection)
return false;
else
return !d3.select(this).classed('selected');
});
}
var noSelection = true;
function clearSelection() {
if (!noSelection) {
noSelection = true;
s.fractions
.classed('selected', false)
.classed('faded', false);
s.transitions
.classed('selected', false)
.classed('faded', false);
s.deputies.classed('hidden', false);
}
}
function selectFraction(fraction) {
noSelection = false;
s.fractions
.classed('selected', function (d) { return d.id == fraction.datum().id; })
.classed('faded', function (d) { return d.id != fraction.datum().id; });
s.transitions
.classed('faded', true)
.classed('selected', false);
s.deputies
.classed('hidden', function (d) { return d.fractionIds.indexOf(fraction.datum().id) == -1; });
setTitle(
'{0}, {1} {2}'.format(
fraction.datum()._name,
d_convocations[fraction.datum().convocationId].number,
L_CONVO
)
);
}
function selectTransition(transition) {
noSelection = false;
s.fractions
.classed('faded', function (d) { return d.id != transition.datum().from && d.id != transition.datum().to; })
.classed('selected', function (d) { return d.id == transition.datum().from || d.id == transition.datum().to; });
s.transitions
.classed('faded', function (d) { return d.id != transition.datum().id; })
.classed('selected', function (d) { return d.id == transition.datum().id; });
s.deputies
.classed('hidden', function (d) {
var i = d.fractionIds.indexOf(transition.datum().from)
return i == -1 || d.fractionIds.indexOf(transition.datum().to) != i + 1;
});
var title = d_fractions[transition.datum().from].partyId == d_fractions[transition.datum().to].partyId ?
'{0}, {1} → {2} {3}'.format(
d_fractions[transition.datum().from]._name,
d_fractions[transition.datum().from]._convoName,
d_fractions[transition.datum().to]._convoName,
L_CONVO
) :
'{0}, {1} → {2}, {3}'.format(
d_fractions[transition.datum().from]._name,
d_fractions[transition.datum().from]._convoName,
d_fractions[transition.datum().to]._name,
d_fractions[transition.datum().to]._convoName
);
setTitle(
title,
'{0} → {1}'.format(d_fractions[transition.datum().from]._convoName, d_fractions[transition.datum().to]._convoName)
);
}
function selectConvocation(convo) {
noSelection = false;
s.fractions
.classed('selected', function (d) { return d.convocationId == convo.datum().id; })
.classed('faded', function (d) { return d.convocationId != convo.datum().id; });
s.transitions
.classed('faded', true)
.classed('selected', false);
s.deputies
.classed('hidden', function (d) { return d.convocations[convo.datum().id - 1].partyId === undefined; });
setTitle(
L_DEP_OF_CONVO.format(convo.datum().number)
);
}
//=====================
function fractionPosition(fraction) {
return [
(LEFT_MARGIN + (d_convocations[fraction.convocationId].id - 1) * CONVO_OFFSET),
SCALE_Y * (fraction.offset + fraction.order * 3) + TOP_MARGIN
]
}
function drawConvocations() {
var convocations = dom.convocations.selectAll('.convocation').data(a_convocations).enter();
var groups = convocations.append('g')
.classed('convocation', true)
.attr('transform', function (d) { return 'translate({0},{1})'.format(LEFT_MARGIN + (d.id - 1) * CONVO_OFFSET, TOP_MARGIN); });
var labels = groups.append('g')
.classed('convocationLabel', true)
.attr('transform', 'translate(0,-20)')
.on('mouseover', hoverConvocation)
.on('mouseout', function (d) { hoverConvocation(); })
.on('click', function (d) {
event.stopPropagation();
selectConvocation(d3.select(this.parentNode));
});
labels.append('text')
.classed('convocationYears', true)
.text(function (d) { return d.years; });
}
function drawTransitions() {
var transitionsDirect = dom.transitionsDirect.selectAll('.transition').data(a_transitions_direct).enter();
var transitionsJump = dom.transitionsJump.selectAll('.transition').data(a_transitions_jump).enter();
var transitionsHover = dom.transitionsHover.selectAll('.transition').data(a_transitions_jump.concat(a_transitions_direct)).enter();
var grads = dom.defs.selectAll('linearGradient')
.data(a_transitions_direct.concat(a_transitions_jump), function (d) { return d.from + '-' + d.to })
.enter()
.append('linearGradient')
.attr('id', function (d) { return 'g' + d.from + '-' + d.to; })
.attr('x1', 0)
.attr('y1', 0)
.attr('x2', 1)
.attr('y2', 0);
grads.append('stop')
.attr('offset', '0%')
.attr('stop-color', function (d) { return d_fractions[d.from]._color; });
grads.append('stop')
.attr('offset', '100%')
.attr('stop-color', function (d) { return d_fractions[d.to]._color; });
function drawHelper(transitions, forHover) {
var groups = transitions.append('g')
.classed('transition', true);
if (forHover !== undefined)
groups
.on('mouseover', hoverTransition)
.on('mouseout', function (d) { hoverTransition(); })
.on('click', function (d) {
event.stopPropagation();
selectTransition(d3.select(this));
});
var lines1 = groups.filter(function (d) {
return d_fractions[d.from]._position[1] + d.leftOffset * SCALE_Y == d_fractions[d.to]._position[1] + d.rightOffset * SCALE_Y;
})
lines1.append('rect')
.attr('x', function (d) { return d_fractions[d.from]._position[0] + FRACTION_WIDTH / 2; })
.attr('y', function (d) { return d_fractions[d.from]._position[1] + d.leftOffset * SCALE_Y; })
.attr('width', function (d) { return d_fractions[d.to]._position[0] - d_fractions[d.from]._position[0] - FRACTION_WIDTH; })
.attr('height', function (d) { return d.number * SCALE_Y; })
.attr('stroke', 'none')
.attr('fill', function (d) {
if (forHover === undefined)
return 'url(#g{0}-{1})'.format(d.from, d.to);
else
return 'rgba(0, 0, 0, 0)';
});
var lines2 = groups.filter(function (d) {
return d_fractions[d.from]._position[1] + d.leftOffset != d_fractions[d.to]._position[1] + d.rightOffset;
})
lines2.append('path')
.attr('d', function (d) {
var f1 = d_fractions[d.from],
f2 = d_fractions[d.to];
var result = 'M {0} {1} C {2} {3}, {4} {5}, {6} {7}'.format(
f1._position[0] + FRACTION_WIDTH / 2, f1._position[1] + (d.leftOffset + d.number / 2) * SCALE_Y,
(f1._position[0] + f2._position[0]) / 2, f1._position[1] + (d.leftOffset + d.number / 2) * SCALE_Y,
(f1._position[0] + f2._position[0]) / 2, f2._position[1] + (d.rightOffset + d.number / 2) * SCALE_Y,
f2._position[0] - FRACTION_WIDTH / 2, f2._position[1] + (d.rightOffset + d.number / 2) * SCALE_Y
);
return result;
})
.attr('fill', 'none')
.attr('stroke', function (d) {
if (forHover === undefined)
return 'url(#g{0}-{1})'.format(d.from, d.to);
else
return 'rgba(0, 0, 0, 0)';
})
.attr('stroke-width', function (d) {
if (forHover === undefined || d.number > 5)
return d.number * SCALE_Y;
else
return 6;
});
}
drawHelper(transitionsDirect);
drawHelper(transitionsJump);
drawHelper(transitionsHover, true);
s.transitions = dom.drawArea.selectAll('.transition');
}
function drawFractions() {
var fractions = dom.fractions.selectAll('.fraction').data(a_fractions).enter();
var fractionsHover = dom.fractionsHover.selectAll('.fraction').data(a_fractions).enter();
var groups = fractions.append('g')
.classed('fraction', true)
.attr('transform', function (d) {
d._position = fractionPosition(d);
d._color = d_parties[d.partyId].color;
d._name = d_parties[d.partyId].name.transliterate();
d._convoName = d_convocations[d.convocationId].number;
return 'translate({0},{1})'.format(d._position[0], d._position[1]);
});
var hoverGroups = fractionsHover.append('g')
.classed('fraction', true)
.attr('transform', function (d) {
return 'translate({0},{1})'.format(d._position[0], d._position[1]);
})
.on('mouseover', hoverFraction)
.on('mouseout', function () { hoverFraction(); })
.on('click', function () {
event.stopPropagation();
selectFraction(d3.select(this));
});
groups.append('rect')
.attr('x', -FRACTION_WIDTH / 2)
.attr('y', 0)
.attr('width', FRACTION_WIDTH)
.attr('height', function (d) { return d.size * SCALE_Y; })
.attr('fill', function (d) { return d._color; });
hoverGroups.append('rect')
.attr('x', -FRACTION_WIDTH / 2)
.attr('y', function (d) {
if (d.size < 5)
return -(5 - d.size) / 2 * SCALE_Y;
else
return 0;
})
.attr('width', FRACTION_WIDTH)
.attr('height', function (d) {
if (d.size < 5)
return 5 * SCALE_Y;
else
return d.size * SCALE_Y;
})
.attr('fill', 'rgba(0, 0, 0, 0)');
var labels = groups.append('g')
.classed('fractionLabel', true)
.attr('transform', function (d) {
var y = 0;
var x = d.convocationId == 7 ? -13 : 7;
var toShift = {
5713: 10,
5714: 10,
5707: 10,
5729: 10,
5739: 10,
7000: 20,
5726: 15,
5733: 15,
7004: -12
}
if (toShift[d.id] !== undefined) y = toShift[d.id]
return 'translate({0}, {1})'.format(x, y + 2);
})
.attr('text-anchor', function (d) {
return d.convocationId == 7 ? 'end' : 'start';
});
labels.append('rect')
.attr('y', 0)
.attr('height', 16);
labels.append('text')
.text(function (d) { return d._name; })
.attr('x', 3)
.attr('y', 12);
labels.each(function (d) {
var bbox = d3.select(this).select('text').node().getBBox();
d3.select(this).select('rect').attr('x', bbox.x - 3);
d3.select(this).select('rect').attr('width', bbox.width + 6);
})
s.fractions = dom.fractions.selectAll('.fraction');
}
function draw(eng) {
if (eng !== undefined) {
ENGLISH = true;
L_ALL_DEPS = 'All Deputies';
L_CONVO = 'Convocation';
L_DEP_OF_CONVO = 'Deputies, {0} Convocation';
L_PPL = '{0} pers.'
}
if (window.innerHeight < 575 + 85 + 25) {
SCALE_Y = (575 - TOP_MARGIN - (575 + 85 + 25 - window.innerHeight)) / (575 - TOP_MARGIN);
}
if (window.innerWidth < 1000 + 210 + 20) {
CONVO_OFFSET = (1000 - (1000 + 210 + 20 - window.innerWidth) - 2 * LEFT_MARGIN) / 6;
}
dom.svg = d3.select('#diagram svg');
dom.convocations = dom.svg.select('.convocations');
dom.fractions = dom.svg.select('.fractions');
dom.transitionsDirect = dom.svg.select('.transitions .direct');
dom.transitionsJump = dom.svg.select('.transitions .jump');
dom.defs = dom.svg.select('defs');
// dom.deputies = d3.select('.deputies');
dom.header = d3.select('#listHeader');
dom.transitionsHover = d3.select('.hoverTransitions');
dom.fractionsHover = d3.select('.hoverFractions');
dom.drawArea = d3.select('svg .drawings');
drawConvocations();
drawFractions();
drawTransitions();
// addDeputies();
// setTitle();
// scrollEvents();
d3.select(window).on('click', function () {
clearSelection();
setTitle();
});
}
draw(false);
<script src="http://petrdevaikin.com/duma/d3.min.js">
</script>
<body>
<div id="wrap">
<h1>新型冠状病毒可视化</h1>
<div id="diagram">
<svg>
<defs>
</defs>
<g class="drawings">
<g class="convocations"></g>
<g class="transitions">
<g class="jump"></g>
<g class="direct"></g>
</g>
<g class="fractions"></g>
</g>
<g class="hovers">
<g class="hoverTransitions"></g>
<g class="hoverFractions"></g>
</g>
</svg>
</div>
</div>
</body>
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr6DRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr4TRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr5DRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr6TRASf6M7VBj.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr5jRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0370-03FF;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr6jRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr6zRASf6M7VBj.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Noto Sans';
font-style: normal;
font-weight: 400;
src: local('Noto Sans'), local('NotoSans'), url(https://fonts.gstatic.com/s/notosans/v9/o-0IIpQlx3QUlC5A4PNr5TRASf6M7Q.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
body {
margin: 0;
background: #171717;
color: #9a9a9a;
font-family: 'Noto Sans', sans-serif;
}
#wrap {
position: relative;
width: 100%;
max-width: 1300px;
min-width: 800px;
margin-left: auto;
margin-right: auto;
height: 50px;
}
#diagram {
position: fixed;
top: 84px;
bottom: 0;
}
h1 {
position: fixed;
display: block;
top: 0;
margin: 20px 0 40px;
left: 0;
right: 0;
text-align: center;
font-weight: normal;
font-size: 18px;
color: #eee;
}
svg {
position: relative;
margin-top: 0px;
width: 1000px;
height: 570px;
}
svg .convocation line {
stroke: #000;
}
svg .convocationLabel {
cursor: pointer;
}
svg .convocationYears {
text-anchor: middle;
fill: #9a9a9a;
font-size: 12px;
}
svg .fraction {
-webkit-transition: opacity .5s;
transition: opacity .5s;
}
svg .transition {
-webkit-transition: opacity .5s;
transition: opacity .5s;
}
svg .convocationNumber {
text-anchor: middle;
fill: #eee;
font-size: 14px;
}
svg .fraction rect {
stroke: none;
cursor: pointer;
}
svg .fraction .fractionLabel {
opacity: 0;
-webkit-transition: opacity .2s;
transition: opacity .2s;
}
svg .fraction.active .fractionLabel {
opacity: 1;
}
svg .fraction.selected .fractionLabel {
opacity: 1;
}
svg .fraction.selected.faded .fractionLabel {
opacity: 0;
}
svg .fractionLabel rect {
fill: rgba(23, 23, 23, .7);
stroke: none;
}
svg .fractionLabel text {
fill: #eee;
font-size: 12px;
font-family: sans-serif;
}
svg .transition {
opacity: .7;
cursor: pointer;
}
svg .transitions .jump .transition {
opacity: .6;
}
svg .faded:not(.active) {
opacity: .15 !important;
}
#clear {
cursor: pointer;
}
#clear.hidden {
display: none;
}
.deputies {
box-sizing: border-box;
position: relative;
margin-left: 10px;
margin-right: 10px;
margin-bottom: 20px;
margin-top: -5px;
}
.deputies .deputat {
position: relative;
padding: 3px 0;
cursor: default;
}
.deputies .deputat.hidden {
display: none;
}
.deputies .deputat .deputatName {
color: #9a9a9a;
position: relative;
margin-left: 65px;
font-size: 12px;
}
.deputies .deputat:hover .deputatName {
color: #eee;
}
.depConvos {
position: absolute;
left: 0;
top: 10px;
width: 70px;
}
.depConvo {
box-sizing: border-box;
position: relative;
float: left;
width: 6px;
height: 6px;
border-radius: 50%;
margin-right: 2px;
}
.depConvo.empty {
border: 1px solid #333;
}