Result sheets printing

This commit is contained in:
Claude Brisson
2024-01-24 14:25:12 +01:00
parent d725587c88
commit 8fe420bf6a
5 changed files with 144 additions and 0 deletions

View File

@@ -431,4 +431,65 @@
} }
} }
.page {
width: 96vw;
height: 96vh;
page-break-after: always;
.page-item {
font-size: 1.4rem;
line-height: 1.5rem;
height: 24vh;
border-bottom: 1px dotted gray;
display: flex;
flex-flow: column nowrap;
justify-content: space-evenly;
.title {
margin-top: 1vh;
font-weight: bold;
text-align: center;
}
.subtitle {
font-size: 1rem;
text-align: center;
}
.details {
margin: 1vh 1em;
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
line-height: 1.1rem;
}
.instructions {
text-align: center;
font-style: italic;
}
.players {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
gap: 1em;
.equal {
padding: 0.2em 1em;
border: solid 1px gray;
}
.player {
padding: 0.2em 1em;
border: solid 1px gray;
flex: 1;
}
}
.signatures {
height: 8vh;
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
.signature {
font-style: italic;
text-align: left;
flex: 1;
}
}
}
}
} }

View File

@@ -292,6 +292,12 @@
padding: 0.2em 0.8em; padding: 0.2em 0.8em;
} }
.result-sheets {
position: absolute;
bottom: 1em;
right: 1em;
}
/* results section */ /* results section */
#results-list { #results-list {

View File

@@ -113,6 +113,7 @@ Your feedback is most welcome! Vos retours sont les bienvenus !
and uses the same algorithm internally, as well as import and export features towards its format. et utilise le même algorithme en interne, ainsi que des fonctionnalités dimport et dexport vers et depuis son format. and uses the same algorithm internally, as well as import and export features towards its format. et utilise le même algorithme en interne, ainsi que des fonctionnalités dimport et dexport vers et depuis son format.
apache licence licence Apache apache licence licence Apache
black noir black noir
Black Noir
club club club club
country pays country pays
d d d d
@@ -135,6 +136,7 @@ pairing system, ideal for championships with no handicap games, as well as the ,
pairing system, more suited for classical tournaments and cups. It is still in an alpha stage. Future versions will support more pairing systems and more features. , plus adapté pour les tournois classiques et les coupes. Il en est encore à une phase « alpha ». Les versions futures comporteront plus de systèmes dappariements et de fonctionnalités. pairing system, more suited for classical tournaments and cups. It is still in an alpha stage. Future versions will support more pairing systems and more features. , plus adapté pour les tournois classiques et les coupes. Il en est encore à une phase « alpha ». Les versions futures comporteront plus de systèmes dappariements et de fonctionnalités.
project is fully open source, and under the very permissive est un logiciel libre, et sous la très permissive project is fully open source, and under the very permissive est un logiciel libre, et sous la très permissive
result résultat result résultat
result sheets feuilles de résultat
sources sources sources sources
sources on FFG's gitlab sur le serveur gitab de la FFG sources on FFG's gitlab sur le serveur gitab de la FFG
standalone, standard interface indépendant, interface standard standalone, standard interface indépendant, interface standard
@@ -146,5 +148,6 @@ to à
unpairable players joueurs non disponibles unpairable players joueurs non disponibles
version 0.1 supports the version 0.1 supporte le système dappariement version 0.1 supports the version 0.1 supporte le système dappariement
white blanc white blanc
White Blanc
white vs. black blanc vs. Noir white vs. black blanc vs. Noir
confirmed. confirmé(s). confirmed. confirmé(s).

View File

@@ -0,0 +1,73 @@
#macro(rank $rank)#if( $rank<0 )#set( $k = -$rank )${k}k#else#set( $d=$rank+1 )${d}d#end#end
#if (!$tour)
<div class="section">
<h2 class="error">Invalid tournament id</h2>
</div>
#end
#set($round = $math.toInteger($!params.round))
#if(!$round)
#set($round = 1)
#else
#set($round = $math.min($math.max($round, 1), $tour.rounds))
#end
<div class="section">
#set($parts = $api.get("tour/${params.id}/part"))
#set($pmap = $utils.toMap($parts))
#set($roundPairing = $api.get("tour/${params.id}/pair/$round"))
#if($roundPairing.error)
<script type="text/javascript">
onLoad(() => {
showError("$roundPairing.error")
});
</script>
#stop
#end
#set($games = $roundPairing.games)
#foreach($game in $games)
#set($white = $pmap[$game.w])
#set($black = $pmap[$game.b])
#if($foreach.index % 4 == 0)
<div class="page">
#end
<div class="page-item">
<div class="title">$tour.name</div>
<div class="subtitle">Result sheet</div>
<div class="details">
<div>Table $game.t</div>
<div>Hd $game.h</div>
<div>Round $round</div>
</div>
<div class="instructions">
Surround winner's name or ½-½
</div>
<div class="players">
<div class="white player">
<div class="color">White</div>
<div class="name">$white.name $white.firstname #rank($white.rank)<br/>($white.country, $white.club)</div>
## <div class="pin">$white.egf</div>
</div>
<div class="equal">½-½</div>
<div class="black player">
<div class="color">Black</div>
<div class="name">$black.name $black.firstname #rank($black.rank)<br/>($black.country, $black.club)</div>
## <div class="pin">$black.egf</div>
</div>
</div>
<div class="signatures">
<div class="signature">Signature:</div>
<div class="equal">&nbsp;&nbsp;&nbsp;</div>
<div class="signature">Signature:</div>
</div>
</div>
#if($foreach.index % 4 == 3)
</div>
#end
#end
</div>
<script type="text/javascript">
onLoad(() => {
window.print();
});
</script>

View File

@@ -113,3 +113,4 @@
</form> </form>
</div> </div>
</div> </div>
<div class="result-sheets"><a href="result-sheets?id=${tour.id}&round=${round}" target="_blank" class="ui mini floating icon button">result sheets <i class="fa fa-external-link"></i></a></div>