13f1885eb5
viz. --round-{tvs,votes,weights}, --defer-surpluses, --meek-immediate-elect and --meek-surplus-tolerance
276 lines
8.9 KiB
HTML
276 lines
8.9 KiB
HTML
<!--
|
||
* OpenTally: Open-source election vote counting
|
||
* Copyright © 2021 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()">
|
||
<option value="wigm" selected>Recommended WIGM</option>
|
||
<option value="scottish">Scottish STV</option>
|
||
<option value="meek87">Meek STV (1987)</option>
|
||
<option value="meek06">Meek STV (2006)</option>
|
||
<option value="senate">Australian Senate STV</option>
|
||
<!--<option value="wright">Wright STV</option>-->
|
||
<option value="prsa77">PRSA 1977</option>
|
||
<option value="ers97">ERS97</option>
|
||
</select>
|
||
</label>
|
||
<button id="btnAdvancedOptions" onclick="clickAdvancedOptions()">Show advanced options</button>
|
||
OpenTally (revision <span id="spanRevNum"></span>)
|
||
<!--· <a href="https://yingtongli.me/blog/2020/12/24/pyrcv2.html">Information and instructions</a> ·
|
||
<a href="blt/">Ballot input/editor</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">Droop</option>
|
||
<option value="droop_exact" selected>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>
|
||
</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="selTransfers">
|
||
<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>
|
||
</select>
|
||
</label>
|
||
<label>
|
||
<select id="selPapers">
|
||
<option value="both" selected>Include non-transferable papers</option>
|
||
<option value="transferable">Use transferable papers only</option>
|
||
</select>
|
||
</label>
|
||
</div>
|
||
<div>
|
||
<label>
|
||
Exclusion:
|
||
<select id="selExclusion">
|
||
<option value="single_stage" selected>Single stage</option>
|
||
<option value="by_value">By value</option>
|
||
<option value="parcels_by_order">By parcel (by order)</option>
|
||
<!--<option value="wright">Wright method (re-iterate)</option>-->
|
||
</select>
|
||
</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>
|
||
<input type="file" id="conFile">
|
||
</div>-->
|
||
</div>
|
||
<div class="col-6 cols-12" style="align-self: start;">
|
||
<div class="col-12 subheading">
|
||
Numeric representation:
|
||
</div>
|
||
<div class="col-12">
|
||
<label>
|
||
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>
|
||
Decimal places (if <i>Numbers</i> = <i>Fixed</i>):
|
||
<input type="number" id="txtDP" value="5" min="0" style="width: 3em;">
|
||
</label>
|
||
</div>
|
||
<label class="col-12">
|
||
Display up to
|
||
<input type="number" id="txtPPDP" value="2" min="0" style="width: 3em;">
|
||
d.p.
|
||
</label>
|
||
<label class="col-12">
|
||
<input type="checkbox" id="chkNormaliseBallots">
|
||
Normalise ballots
|
||
</label>
|
||
<div class="col-12 subheading">
|
||
Count optimisations:
|
||
</div>
|
||
<label class="col-6">
|
||
<input type="checkbox" id="chkBulkElection" checked disabled>
|
||
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="chkMeekImmediateElect">
|
||
(Meek) Immediate election
|
||
</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="chkRoundTVs">
|
||
Surplus fractions:
|
||
</label>
|
||
<label>
|
||
<input type="number" id="txtRoundTVs" value="0" min="0" style="width: 3em;">
|
||
d.p.
|
||
</label>
|
||
</div>
|
||
<div class="col-6">
|
||
<label>
|
||
<input type="checkbox" id="chkRoundWeights">
|
||
Ballot weights:
|
||
</label>
|
||
<label>
|
||
<input type="number" id="txtRoundWeights" value="0" min="0" style="width: 3em;">
|
||
d.p.
|
||
</label>
|
||
</div>
|
||
<label class="col-12">
|
||
Sum surplus transfers:
|
||
<select id="selSumTransfers">
|
||
<option value="single_step" selected>Single step</option>
|
||
<option value="by_value">By value</option>
|
||
<option value="per_ballot">Per ballot</option>
|
||
</select>
|
||
</label>
|
||
<label class="col-12">
|
||
(Meek) 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="opentally.js?v=GITVERSION"></script>
|
||
<script src="index.js?v=GITVERSION"></script>
|
||
</body>
|
||
</html>
|