<!DOCTYPE html>
|
<html>
|
<head>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
<meta name="viewport" content="width=device-width, user-scalable=no" />
|
<title>Obliczenia brydżowe</title>
|
<link rel="stylesheet" href="bridge.css" type="text/css" />
|
</head>
|
<body>
|
<form onchange="javascript:compute()">
|
|
<p>
|
<label><input type="radio" name="kontrakt" value="0" checked="checked"/> <span>4 pasy</span></label>
|
<label><input type="radio" name="kontrakt" value="1"/> <span>1</span></label>
|
<label><input type="radio" name="kontrakt" value="2"/> <span>2</span></label>
|
<label><input type="radio" name="kontrakt" value="3"/> <span>3</span></label>
|
<label><input type="radio" name="kontrakt" value="4"/> <span>4</span></label>
|
<label><input type="radio" name="kontrakt" value="5"/> <span>5</span></label>
|
<label><input type="radio" name="kontrakt" value="6"/> <span>6</span></label>
|
<label><input type="radio" name="kontrakt" value="7"/> <span>7</span></label>
|
</p>
|
|
<p>
|
<label><input type="radio" name="typ" value="0" checked="checked" /> <span>♣/♦</span></label>
|
<label><input type="radio" name="typ" value="1" /> <span>♥/♠</span></label>
|
<label><input type="radio" name="typ" value="2" /> <span>NT</span></label>
|
<span style="display: inline-block; margin-left:1.5em;"></span>
|
<label><input type="radio" name="kontra" value="0" checked="checked" /> <span>norm.</span></label>
|
<label><input type="radio" name="kontra" value="1" /> <span>ktr.</span></label>
|
<label><input type="radio" name="kontra" value="2" /> <span>rektr.</span></label>
|
</p>
|
|
<p>
|
<label><input type="radio" name="partia" value="0" checked="checked"/> <span>przed/przed</span></label>
|
<label><input type="radio" name="partia" value="1" /> <span>przed/po</span></label>
|
<label><input type="radio" name="partia" value="2" /> <span>po/przed</span></label>
|
<label><input type="radio" name="partia" value="3" /> <span>po/po</span></label>
|
</p>
|
|
<table class="range">
|
<tr>
|
<td>PC:</td> <td width="100%"><input type="range" name="punkty" value="0" min="0" max="40" step="1" oninput="punktyvalue.value=value" /></td> <td><output id="punktyvalue">0</output></td>
|
</tr>
|
<tr>
|
<td>Lewy:</td> <td width="100%"><input type="range" name="lewy" value="0" min="0" max="13" step="1" oninput="lewyvalue.value=value" /></td> <td><output id="lewyvalue">0</output></td>
|
</tr>
|
</table>
|
|
<p id="result"></p>
|
</form>
|
|
<script type="text/javascript" src="bridge_compute.js"></script>
|
<script type="text/javascript">
|
var zapis;
|
|
function compute() {
|
var kontraktField = document.querySelector('input[name=kontrakt]:checked');
|
var kontraktChoice = document.querySelector('input[name=typ]:checked');
|
var kontraChoice = document.querySelector('input[name=kontra]:checked');
|
var partiaChoice = document.querySelector('input[name=partia]:checked');
|
var punktyField = document.querySelector('input[name=punkty]');
|
var lewyField = document.querySelector('input[name=lewy]');
|
var kontrakt, typ, kontra, partia, punkty, lewy;
|
|
kontrakt = parseInt(kontraktField.value, 10);
|
typ = parseInt(kontraktChoice.value, 10);
|
kontra = parseInt(kontraChoice.value, 10);
|
partia = parseInt(partiaChoice.value, 10);
|
punkty = parseInt(punktyField.valueAsNumber, 10);
|
lewy = parseInt(lewyField.valueAsNumber, 10);
|
resultText = {
|
setText: function(text) {
|
document.getElementById('result').innerText = text;
|
}
|
};
|
|
if( kontrakt < 0 || kontrakt > 7 ) {
|
resultText.setText("Niepoprawny kontrakt.");
|
return;
|
}
|
|
if( typ != 0 && typ != 1 && typ != 2 ) {
|
resultText.setText("Niepoprawny typ kontraktu.");
|
return;
|
}
|
|
if( kontra < 0 || kontra > 2 ) {
|
resultText.setText("Niepoprawna informacja o kontrze.");
|
return;
|
}
|
|
if( partia < 0 || partia > 3) {
|
resultText.setText("Niepoprawna informacja o partii.");
|
return;
|
}
|
|
if( punkty < 0 || punkty > 40 ) {
|
resultText.setText("Niepoprawna ilość punktów");
|
return;
|
}
|
|
if( lewy < 0 || lewy > 13 ) {
|
resultText.setText("Niepoprawna ilość wziętych lew.");
|
return;
|
}
|
|
if( kontrakt == 0 && punkty < 20 ) {
|
resultText.setText("Przy czterech pasach podaj większą liczę punktów.");
|
return;
|
}
|
|
var wynik = BrydzLicz.policz(kontrakt, typ, kontra, partia, punkty, lewy);
|
|
resultText.setText((wynik.dla == 0 ? "Zapis dla rozgrywających" : "Zapis dla przeciwników.")+
|
"\nPunktów (bez PC): "+wynik.punkty_przed+
|
"\nPunktów (z PC): "+wynik.punkty+
|
"\nIMP-ów: "+wynik.IMP+
|
"\nProcent: "+wynik.procent);
|
zapis = wynik;
|
}
|
|
function send() {
|
window.opener.postMessage(zapis, '*');
|
window.close();
|
}
|
|
if(window.opener) {
|
var button = document.createElement('button');
|
button.onclick = send;
|
button.innerText = 'Zapisz';
|
document.body.appendChild(button);
|
}
|
</script>
|
</body>
|
</html>
|