<!-- * OpenTally: Open-source election vote counting * Copyright © 2021–2022 Lee Yingtong Li (RunasSudo) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. --> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>OpenTally</title> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpWvQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w==" crossorigin="anonymous" /> <link rel="stylesheet" type="text/css" href="main.css?v=GITVERSION"> </head> <body class="interactive"> <div id="divLoading"> Loading… </div> <div id="divUI" style="display: none;"> <div class="menudiv"> <input type="file" id="bltFile"> <button onclick="clickCount()">Count</button> <label> Preset: <select id="selPreset" onchange="changePreset()"> <optgroup label="Recommended"> <option value="wigm" selected>OpenTally WIGM</option> <option value="scottish">Scottish STV</option> <option value="meek87">OpenTally Meek</option> </optgroup> <optgroup label="Legislative"> <option value="senate">Australian Senate STV</option> <option value="act">Australian Capital Territory STV</option> <option value="nswlg">NSW Local Government STV</option> <option value="wa">Western Australia STV</option> <option value="meeknz">Meek STV (New Zealand)</option> <option value="minneapolis">Minneapolis STV</option> <option value="cambridge">Cambridge STV</option> <option value="dail">Dáil Éireann STV</option> </optgroup> <optgroup label="Hand-count"> <option value="prsa77">PRSA 1977</option> <option value="ers97">ERS97</option> <option value="ers76">ERS76</option> <option value="ers73">ERS73</option> <option value="cofe">Church of England</option> </optgroup> <optgroup label="Computer-count"> <option value="meek06">Meek STV (2006)</option> <option value="wright">Wright STV</option> </optgroup> </select> </label> <button id="btnAdvancedOptions" onclick="clickAdvancedOptions()">Show advanced options</button> OpenTally (revision <span id="spanRevNum"></span>) · <a href="https://yingtongli.me/opentally/">Information and instructions</a> </div> <div id="divAdvancedOptions" class="menudiv cols-12 cols-sm-6" style="display: none;"> <div class="col-6" style="align-self: start;"> <div class="subheading"> Method specification: </div> <div> <label> Quota: <select id="selQuotaCriterion"> <option value="geq">≥</option> <option value="gt" selected>></option> </select> </label> <label> <select id="selQuota"> <option value="droop" selected>Droop</option> <option value="droop_exact">Droop (exact)</option> <option value="hare">Hare</option> <option value="hare_exact">Hare (exact)</option> </select> </label> <label> <select id="selQuotaMode"> <option value="static" selected>Static quota</option> <!--<option value="progressive">Progressive quota</option>--> <option value="ers97">Static with ERS97 rules</option> <option value="ers76">Static with ERS76 rules</option> <option value="dynamic_by_total">Dynamic by total vote</option> <option value="dynamic_by_active">Dynamic by active vote</option> </select> </label> </div> <div> <label> Surplus order: <select id="selSurplus"> <option value="by_size" selected>By size</option> <option value="by_order">By order</option> </select> </label> <label> Method: <select id="selMethod"> <option value="wig" selected>Weighted inclusive Gregory</option> <option value="uig">Unweighted inclusive Gregory</option> <option value="eg">Exclusive Gregory (last bundle)</option> <option value="meek">Meek method</option> <option value="hare">Hare (exclusive sample)</option> <option value="ihare">Inclusive Hare (sample)</option> </select> </label> <label> <select id="selPapers"> <option value="both" selected>Include non-transferable ballots</option> <option value="transferable">Use transferable ballots only</option> <option value="subtract_nontransferable">Subtract non-transferables</option> </select> </label> </div> <div> <label style="margin-right:1em;"> <span class="pill-grey" title="This option has effect only if “Method” is set to a Gregory method">Gregory</span> Exclusion: <select id="selExclusion"> <option value="single_stage" selected>Single stage</option> <option value="by_value">By value</option> <option value="by_source">By source</option> <option value="parcels_by_order">By parcel (by order)</option> <option value="wright">Wright method (re-iterate)</option> </select> </label> <label> <input type="checkbox" id="chkMeekNZExclusion"> <span class="pill-grey" title="This option has effect only if “Method” is set to “Meek method”">Meek</span> NZ-style exclusion </label> </div> <div> <label style="margin-right:1em;"> <span class="pill-grey" title="This option has effect only if “Method” is set to a Hare method">Hare</span> Sample method: <select id="selSample"> <option value="stratify" selected>Stratify</option> <!--<option value="stratify_floor" selected>Stratify (floor)</option>--> <option value="by_order">By order</option> <option value="cincinnati">Cincinnati</option> </select> </label> <label> <input type="checkbox" id="chkSamplePerBallot"> Per-ballot transfers </label> </div> <div class="subheading"> Tie-breaking: </div> <div> <label> Ties: <select id="selTies"> <option value="backwards,random" selected>Backwards then random</option> <option value="forwards,random">Forwards then random</option> <option value="random">Random</option> <option value="prompt">Prompt</option> </select> </label> <label> Random seed: <input type="text" id="txtSeed" value=""> </label> </div> <div class="subheading"> Constraints: </div> <div> <label> <input type="file" id="conFile"> </label> <label> Method: <select id="selConstraintMethod"> <option value="guard_doom" selected>Guard/doom</option> <option value="repeat_count">Repeat count</option> </select> </label> </div> <div class="subheading"> Report options: </div> <div class="col-12"> <label style="margin-right:1em;"> Report style: <select id="selReport"> <option value="votes">Votes only</option> <option value="votes_transposed" selected>Votes (transposed)</option> <option value="ballots_votes">Ballots and votes</option> </select> </label> </div> <label class="col-12"> Display up to <input type="number" id="txtPPDP" value="2" min="0" style="width: 3em;"> d.p. </label> </div> <div class="col-6 cols-12" style="align-self: start;"> <div class="col-12 subheading"> Numeric representation: </div> <div class="col-12"> <label style="margin-right:1em;"> Numbers: <select id="selNumbers"> <option value="rational" selected>Rational</option> <option value="fixed">Fixed</option> <option value="gfixed">Fixed (guarded)</option> <option value="float64">Float (64-bit)</option> </select> </label> <label> <span class="pill-grey" title="This option has effect only if “Numbers” is set to “Fixed” or “Fixed (guarded)”">Fixed</span> Decimal places: <input type="number" id="txtDP" value="5" min="0" style="width: 3em;"> </label> </div> <div class="col-12 subheading"> Count optimisations: </div> <label class="col-6"> <input type="checkbox" id="chkBulkElection" checked> Early bulk election </label> <label class="col-6"> <input type="checkbox" id="chkBulkExclusion"> Bulk exclusion </label> <label class="col-6"> <input type="checkbox" id="chkDeferSurpluses"> Defer surpluses </label> <label class="col-6"> <input type="checkbox" id="chkImmediateElect" checked> Immediate election </label> <label class="col-12"> Minimum threshold: <input type="number" id="txtMinThreshold" value="0" min="0" style="width: 3em;"> </label> <div class="col-12 subheading"> Rounding: </div> <div class="col-6"> <label> <input type="checkbox" id="chkRoundQuota"> Quota: </label> <label> <input type="number" id="txtRoundQuota" value="0" min="0" style="width: 3em;"> d.p. </label> </div> <div class="col-6"> <label> <input type="checkbox" id="chkRoundVotes"> Votes: </label> <label> <input type="number" id="txtRoundVotes" value="0" min="0" style="width: 3em;"> d.p. </label> </div> <div class="col-6"> <label> <input type="checkbox" id="chkRoundSFs"> Surplus fractions: </label> <label> <input type="number" id="txtRoundSFs" value="0" min="0" style="width: 3em;"> d.p. </label> </div> <div class="col-6"> <label> <input type="checkbox" id="chkRoundValues"> Ballot values: </label> <label> <input type="number" id="txtRoundValues" value="0" min="0" style="width: 3em;"> d.p. </label> </div> <label class="col-12"> <span class="pill-grey" title="This option has effect only if “Method” is a Gregory method">Gregory</span> Round subtransfers: <select id="selSumTransfers"> <option value="single_step" selected>Single step</option> <option value="by_value">By value</option> <option value="by_value_and_source">By value and source</option> <option value="by_parcel">By parcel</option> <option value="per_ballot">Per ballot</option> </select> </label> <label class="col-12"> <span class="pill-grey" title="This option has effect only if “Method” is set to “Meek method”">Meek</span> Surplus tolerance: <input type="text" id="txtMeekSurplusTolerance" value="0.001%" style="width: 5em;"> </label> </div> </div> <div id="resultsDiv"> <div id="resultLogs1" style="white-space: pre-wrap;"></div> <table id="result" class="result"></table> <div id="resultLogs2"></div> </div> <div id="printPane" style="display: none;"> <button onclick="printResult()">Print result</button> <label> Paper size: <select id="selPaperSize"> <option value="A4" selected>A4</option> <option value="A3">A3</option> <option value="letter">US Letter</option> </select> (Landscape) </label> </div> </div> <div id="printWarning">Printing directly from this page is not supported. Use the ‘Print result’ button to generate a printer-friendly report.</div> <script src="vendor/vanilla-js-dropdown.min.js"></script> <script src="index.js?v=GITVERSION"></script> <script src="presets.js?v=GITVERSION"></script> </body> </html>