Use last election results

master
Michał Górny 2023-10-20 11:15:18 +02:00
rodzic d670a53813
commit d6f5bbecef
7 zmienionych plików z 231 dodań i 226 usunięć

Wyświetl plik

@ -5,11 +5,11 @@ import {
} from './types';
export const pastSupport: PastSupport = {
pis: 43.59,
ko: 27.4,
lewica: 12.56,
psl: 8.55,
konfederacja: 6.81,
pis: 35.38,
ko: 30.7,
td: 14.4,
lewica: 8.61,
konfederacja: 7.16,
};
export const committees: Committee[] = [
@ -27,19 +27,19 @@ export const committees: Committee[] = [
threshold: 8,
pastSupportEquivalence: [['ko', 1]],
},
{
id: 'lewica',
name: 'Nowa Lewica',
shortName: 'NL',
threshold: 5,
pastSupportEquivalence: [['lewica', 1]],
},
{
id: 'td',
name: 'Trzecia Droga',
shortName: 'TD',
threshold: 8,
pastSupportEquivalence: [['psl', 0.48], ['lewica', 0.23], ['konfederacja', 0.17], ['ko', 0.15], ['pis', 0.03]],
pastSupportEquivalence: [['td', 1]],
},
{
id: 'lewica',
name: 'Lewica',
shortName: 'Lew.',
threshold: 5,
pastSupportEquivalence: [['lewica', 1]],
},
{
id: 'konfederacja',
@ -71,451 +71,451 @@ export const constituencies: Constituency[] = [
name: 'Legnica',
size: 12,
pastSupport: {
ko: 25.02,
konfederacja: 5.85,
psl: 7.17,
pis: 42.4,
lewica: 16.43,
pis: 34.80,
ko: 33.78,
td: 10.75,
lewica: 9.51,
konfederacja: 6.33,
},
},
{
name: 'Wałbrzych',
size: 8,
pastSupport: {
ko: 32.09,
konfederacja: 5.42,
psl: 7.25,
pis: 40.54,
lewica: 12.35,
ko: 37.17,
pis: 33.34,
td: 12.13,
lewica: 7.98,
konfederacja: 6.02,
},
},
{
name: 'Wrocław',
size: 14,
pastSupport: {
ko: 32.8,
konfederacja: 7.45,
psl: 6.46,
pis: 34.67,
lewica: 15.41,
ko: 36.94,
pis: 26.66,
td: 13.74,
lewica: 11.35,
konfederacja: 6.98,
},
},
{
name: 'Bydgoszcz',
size: 12,
pastSupport: {
ko: 31.05,
konfederacja: 7.05,
psl: 9.02,
pis: 36.43,
lewica: 15.17,
ko: 35.01,
pis: 30.45,
td: 15.06,
lewica: 9.92,
konfederacja: 6.42,
},
},
{
name: 'Toruń',
size: 13,
pastSupport: {
ko: 26.42,
konfederacja: 6.33,
psl: 10.88,
pis: 40.38,
lewica: 14.83,
pis: 34.06,
ko: 29.52,
td: 15.68,
lewica: 11.25,
konfederacja: 6.37,
},
},
{
name: 'Lublin',
size: 15,
pastSupport: {
ko: 19.3,
konfederacja: 7.07,
psl: 9.1,
pis: 55.39,
lewica: 7.81,
pis: 45.48,
ko: 20.32,
td: 15.87,
konfederacja: 8.38,
lewica: 5.72,
},
},
{
name: 'Chełm',
size: 12,
pastSupport: {
ko: 14.8,
konfederacja: 5.84,
psl: 11.86,
pis: 59.5,
lewica: 6.83,
pis: 50.75,
ko: 17.40,
td: 13.04,
konfederacja: 7.79,
lewica: 5.62,
},
},
{
name: 'Zielona Góra',
size: 12,
pastSupport: {
ko: 31.27,
konfederacja: 7.19,
psl: 11.63,
pis: 34.3,
lewica: 15.61,
ko: 37.73,
pis: 27.76,
td: 15.07,
lewica: 9.27,
konfederacja: 6.51,
},
},
{
name: 'Łódź',
size: 10,
pastSupport: {
ko: 35.82,
konfederacja: 6.65,
psl: 4.53,
pis: 32.9,
lewica: 20.1,
ko: 41.07,
pis: 26.82,
lewica: 12.22,
td: 11.89,
konfederacja: 5.57,
},
},
{
name: 'Piotrków Trybunalski',
size: 9,
pastSupport: {
ko: 15.64,
konfederacja: 6.76,
psl: 10.44,
pis: 56.21,
lewica: 10.95,
pis: 46.60,
ko: 21.69,
td: 13.73,
konfederacja: 7.62,
lewica: 6.39,
},
},
{
name: 'Sieradz',
size: 12,
pastSupport: {
ko: 20.48,
konfederacja: 5.88,
psl: 10.29,
pis: 49.81,
lewica: 11.98,
pis: 41.46,
ko: 25.89,
td: 14.50,
lewica: 7.73,
konfederacja: 6.82,
},
},
{
name: 'Chrzanów',
size: 8,
pastSupport: {
ko: 23.04,
konfederacja: 7.06,
psl: 7.9,
pis: 53.48,
lewica: 8.51,
pis: 42.86,
ko: 24.24,
td: 14.97,
konfederacja: 7.88,
lewica: 6.04,
},
},
{
name: 'Kraków',
size: 14,
pastSupport: {
ko: 30.48,
konfederacja: 7.99,
psl: 7.27,
pis: 39.56,
lewica: 13.01,
ko: 30.73,
pis: 30.68,
td: 16.86,
lewica: 11.04,
konfederacja: 7.71,
},
},
{
name: 'Nowy Sącz',
size: 10,
pastSupport: {
ko: 13.83,
konfederacja: 6.95,
psl: 7.35,
pis: 65.8,
lewica: 6.07,
pis: 53.73,
ko: 16.10,
td: 11.58,
konfederacja: 8.73,
lewica: 3.18,
},
},
{
name: 'Tarnów',
size: 9,
pastSupport: {
ko: 14.0,
konfederacja: 7.11,
psl: 13.35,
pis: 59.59,
lewica: 5.94,
pis: 48.67,
td: 18.64,
ko: 17.02,
konfederacja: 7.99,
lewica: 4.00,
},
},
{
name: 'Płock',
size: 10,
pastSupport: {
ko: 16.85,
konfederacja: 5.24,
psl: 15.17,
pis: 52.45,
lewica: 8.76,
pis: 44.11,
ko: 22.40,
td: 17.07,
konfederacja: 6.52,
lewica: 6.52,
},
},
{
name: 'Radom',
size: 9,
pastSupport: {
ko: 17.15,
konfederacja: 5.89,
psl: 10.2,
pis: 57.82,
lewica: 7.43,
pis: 48.68,
ko: 20.96,
td: 13.98,
konfederacja: 7.31,
lewica: 5.34,
},
},
{
name: 'Siedlce',
size: 12,
pastSupport: {
ko: 13.94,
konfederacja: 6.49,
psl: 11.94,
pis: 59.76,
lewica: 6.45,
pis: 48.62,
ko: 18.71,
td: 15.51,
konfederacja: 8.21,
lewica: 4.85,
},
},
{
name: 'Warszawa I',
size: 20,
pastSupport: {
ko: 42.05,
konfederacja: 7.51,
psl: 4.75,
pis: 27.49,
lewica: 18.19,
ko: 43.23,
pis: 20.14,
lewica: 13.45,
td: 13.25,
konfederacja: 7.24,
},
},
{
name: 'Warszawa II',
size: 12,
pastSupport: {
ko: 28.61,
konfederacja: 6.63,
psl: 8.6,
pis: 40.89,
lewica: 13.09,
ko: 35.23,
pis: 31.74,
td: 15.06,
konfederacja: 7.06,
lewica: 7.06,
},
},
{
name: 'Opole',
size: 12,
pastSupport: {
ko: 26.71,
konfederacja: 5.7,
psl: 10.31,
pis: 37.64,
lewica: 11.74,
ko: 33.59,
pis: 31.26,
td: 12.74,
lewica: 7.24,
konfederacja: 6.49,
},
},
{
name: 'Krosno',
size: 11,
pastSupport: {
ko: 15.94,
konfederacja: 6.81,
psl: 7.85,
pis: 63.36,
lewica: 6.04,
pis: 54.70,
ko: 15.85,
td: 13.79,
konfederacja: 8.62,
lewica: 4.47,
},
},
{
name: 'Rzeszów',
size: 15,
pastSupport: {
ko: 14.39,
konfederacja: 8.25,
psl: 7.79,
pis: 62.38,
lewica: 6.59,
pis: 51.60,
ko: 17.70,
td: 12.42,
konfederacja: 9.48,
lewica: 4.87,
},
},
{
name: 'Białystok',
size: 14,
pastSupport: {
ko: 21.04,
konfederacja: 6.96,
psl: 9.33,
pis: 52.04,
lewica: 9.09,
pis: 42.39,
ko: 20.84,
td: 18.86,
konfederacja: 9.79,
lewica: 4.84,
},
},
{
name: 'Gdańsk',
size: 12,
pastSupport: {
ko: 41.31,
konfederacja: 7.21,
psl: 5.9,
pis: 32.1,
lewica: 13.47,
ko: 41.70,
pis: 25.20,
td: 14.70,
lewica: 9.41,
konfederacja: 6.23,
},
},
{
name: 'Gdynia',
size: 14,
pastSupport: {
ko: 35.85,
konfederacja: 7.3,
psl: 7.94,
pis: 36.43,
lewica: 12.47,
ko: 37.91,
pis: 29.24,
td: 13.59,
lewica: 8.33,
konfederacja: 7.21,
},
},
{
name: 'Bielsko-Biała',
size: 9,
pastSupport: {
ko: 27.2,
konfederacja: 7.42,
psl: 7.13,
pis: 46.76,
lewica: 11.48,
pis: 36.71,
ko: 28.67,
td: 14.55,
konfederacja: 7.84,
lewica: 7.77,
},
},
{
name: 'Częstochowa',
size: 7,
pastSupport: {
ko: 22.63,
konfederacja: 6.07,
psl: 8.68,
pis: 44.28,
lewica: 15.59,
pis: 36.35,
ko: 29.11,
td: 14.72,
lewica: 9.41,
konfederacja: 6.56,
},
},
{
name: 'Gliwice',
size: 9,
pastSupport: {
ko: 32.61,
konfederacja: 7.67,
psl: 5.99,
pis: 37.75,
lewica: 13.38,
ko: 36.06,
pis: 30.16,
td: 13.34,
lewica: 9.21,
konfederacja: 6.95,
},
},
{
name: 'Rybnik',
size: 9,
pastSupport: {
ko: 27.71,
konfederacja: 7.17,
psl: 5.64,
pis: 48.28,
lewica: 9.68,
pis: 38.06,
ko: 29.98,
td: 12.45,
konfederacja: 8.00,
lewica: 6.84,
},
},
{
name: 'Katowice',
size: 12,
pastSupport: {
ko: 37.2,
konfederacja: 7.33,
psl: 4.37,
pis: 39.19,
lewica: 11.92,
ko: 36.79,
pis: 30.88,
td: 13.27,
lewica: 8.46,
konfederacja: 6.70,
},
},
{
name: 'Sosnowiec',
size: 9,
pastSupport: {
ko: 29.66,
konfederacja: 6.45,
psl: 4.85,
pis: 37.13,
lewica: 21.9,
ko: 30.30,
pis: 29.74,
lewica: 21.60,
td: 9.85,
konfederacja: 5.69,
},
},
{
name: 'Kielce',
size: 16,
pastSupport: {
ko: 16.65,
konfederacja: 5.95,
psl: 9.88,
pis: 55.18,
lewica: 9.95,
pis: 47.07,
ko: 20.93,
td: 13.80,
lewica: 6.83,
konfederacja: 6.55,
},
},
{
name: 'Elbląg',
size: 8,
pastSupport: {
ko: 28.43,
konfederacja: 5.66,
psl: 10.89,
pis: 40.86,
lewica: 11.64,
pis: 35.20,
ko: 31.87,
td: 15.40,
lewica: 8.11,
konfederacja: 6.54,
},
},
{
name: 'Olsztyn',
size: 10,
pastSupport: {
ko: 26.46,
konfederacja: 6.97,
psl: 13.19,
pis: 38.82,
lewica: 13.84,
ko: 33.07,
pis: 32.33,
td: 16.11,
lewica: 8.09,
konfederacja: 6.93,
},
},
{
name: 'Kalisz',
size: 12,
pastSupport: {
ko: 24.72,
konfederacja: 6.57,
psl: 12.8,
pis: 42.48,
lewica: 13.43,
pis: 35.85,
ko: 28.58,
td: 16.16,
lewica: 8.52,
konfederacja: 6.98,
},
},
{
name: 'Konin',
size: 9,
pastSupport: {
ko: 20.48,
konfederacja: 6.74,
psl: 9.81,
pis: 47.29,
lewica: 15.04,
pis: 38.69,
ko: 23.99,
td: 16.63,
lewica: 9.48,
konfederacja: 6.97,
},
},
{
name: 'Piła',
size: 9,
pastSupport: {
ko: 30.6,
konfederacja: 6.62,
psl: 13.86,
pis: 35.64,
lewica: 13.28,
ko: 34.87,
pis: 29.11,
td: 17.66,
lewica: 7.84,
konfederacja: 6.87,
},
},
{
name: 'Poznań',
size: 10,
pastSupport: {
ko: 45.38,
konfederacja: 6.61,
psl: 6.2,
pis: 25.33,
lewica: 16.49,
ko: 44.09,
pis: 19.57,
td: 16.54,
lewica: 12.31,
konfederacja: 5.90,
},
},
{
name: 'Koszalin',
size: 8,
pastSupport: {
ko: 32.31,
konfederacja: 5.98,
psl: 9.43,
pis: 36.83,
lewica: 15.44,
ko: 38.69,
pis: 31.36,
td: 12.35,
lewica: 8.72,
konfederacja: 6.02,
},
},
{
name: 'Szczecin',
size: 12,
pastSupport: {
ko: 35.71,
konfederacja: 6.53,
psl: 7.4,
pis: 35.11,
lewica: 15.25,
ko: 40.13,
pis: 28.79,
td: 12.62,
lewica: 9.39,
konfederacja: 5.94,
},
},
];

Wyświetl plik

@ -47,6 +47,9 @@ const displayResults = (mandates: number[]) => {
const committeeId = committees[index].id;
const td = document.querySelector<HTMLTableCellElement>(`tr.${committeeId} td:last-child`);
if (td) td.textContent = value.toString();
if (index === 5 && value > 0 && td?.parentElement) {
td.parentElement.style.display = 'table-row';
}
});
};

Wyświetl plik

@ -20,7 +20,7 @@ const calculateLocalSupport = (
committeeSupport * localSupportDeviation[index]
));
if (constituency.name === 'Opole') {
localSupport.push(7.9);
localSupport.push(5.37);
}
return localSupport;
};

Wyświetl plik

@ -22,6 +22,8 @@ main(class=(embed ? 'embed' : ''))
#[a(href='https://biqdata.wyborcza.pl/biqdata/7,159116,26083709,analiza-przeplywow-wyborcow-za-duda-tylko-pis-lewicowcy-nie.html') #[i Analiza przepływów wyborców]] z 29 czerwca 2020 roku.
li.
2023-08-21: dodano koalicyjny komitet wyborczy Trzecia Droga (Polska 2050 + PSL – Koalicja Polska).
li.
2023-10-20: od teraz w prognozie brane są pod uwagę wyniki wyborów do Sejmu z 2023 roku.
form#support-form

Wyświetl plik

@ -4,7 +4,7 @@ table
th Poparcie
th Mandaty
each committee in committees
tr(class=committee.id)
tr(class=committee.id style=(committee.id == 'mn' ? 'display: none' : ''))
td
label(for=committee.id) #{committee.name}
td

Wyświetl plik

@ -1,4 +1,4 @@
type PastCommiteeId = 'pis' | 'ko' | 'lewica' | 'psl' | 'konfederacja'
type PastCommiteeId = 'pis' | 'ko' | 'td' | 'lewica' | 'konfederacja'
export type PastSupport = {
[pastCommitteeId in PastCommiteeId]: number;

Wyświetl plik

@ -1,22 +1,22 @@
import calculateMandates from '../src/mandates';
test('calculates correct results (1)', () => {
const support = [43.59, 27.4, 12.56, 8.55, 6.81];
const support = [35.38, 30.7, 14.4, 8.61, 7.16];
const mandates = calculateMandates(support);
expect(mandates).toEqual([237, 133, 48, 31, 10, 1]);
expect(mandates).toEqual([194, 157, 65, 26, 18, 0]);
});
test('calculates correct results (2)', () => {
const support = [30, 25, 10, 20, 6];
const support = [30, 25, 20, 10, 6];
const mandates = calculateMandates(support);
expect(mandates).toEqual([176, 131, 39, 104, 9, 1]);
expect(mandates).toEqual([176, 130, 103, 39, 12, 0]);
});
test('calculates correct results (3)', () => {
const support = [39.7, 42.4, 0, 0, 7.2];
const mandates = calculateMandates(support);
expect(mandates).toEqual([225, 216, 0, 0, 18, 1]);
expect(mandates).toEqual([223, 219, 0, 0, 18, 0]);
});