Camarillo weekupdate 2017-W12

Deze week is Judging grondig aangepakt. We hebben de volgende kleine wijzigingen doorgevoerd:

  • De cursor in de geselecteerde cel komt niet meer op de prints
  • De stijl van een actieve cel is wat duidelijker gemaakt (bedankt voor het opmerken Pierre!)
  • De map waar de pdf files worden opgeslagen is nu instelbaar
  • De zijbalk klapt nu in na het selecteren van een wedstrijd op kleine schermen

De belangrijkste update aan Judging is echter de manier waarop berekeningen tussen cellen worden gedaan. Dit zorgt ervoor dat alles veel sneller aanvoelt en dat er wat nieuwe mogelijkheden zijn ontstaan.

Het probleem

Er is een aantal cellen die een formule bevatten, bijvoorbeeld de totalen aan de onderkant. De manier waarop dat geprogrammeerd was, was een beetje kort door de bocht. Bij elke toetsaanslag, van elke cel in het protocol, werd het volgende voor elke cel met een formule uitgevoerd:

  • De formule wordt uitgelezen en omgezet naar code
  • De code wordt uitgevoerd, waarbij de waarde van andere cellen wordt opgehaald
  • Als een andere cel ook een formule bevat, wordt ook deze uitgelezen, omgezet en uitgevoerd

Dat is veel werk. En ook dubbel werk. Om bijvoorbeeld het eindtotaal uit te rekenen, wordt eerst het subtotaal en het totaal van de strafpunten berekend, terwijl deze al eerder berekend zijn om die cellen te vullen. Ook werd alles herberekend wanneer commentaar werd ingevuld, terwijl dit helemaal geen invloed heeft op het resultaat. Dit alles zorgde ervoor dat het hele programma onwerkbaar werd als er meer dan een paar cellen met formules in zaten.

De oplossing

Dat hebben we dus veranderd. Nu wordt een formule alleen herberekend als een cel waarvan deze afhankelijk is gewijzigd is. Bij het invullen van commentaar wordt er dus niks berekend. Bij het invullen van een punt, alleen het totaal van de punten, het eindtotaal, het percentage en de winstpunten. Niet ook nog het totaal van de strafpunten, want dat is niet gewijzigd. Ook wordt de formule in de cel maar één keer omgezet naar code, namelijk bij het inladen van het protocol.

Het gevolg hiervan is dat alles een stuk sneller aanvoelt. Bovendien kunnen we nu wél meer dan een paar cellen met formules hebben. En dat geeft mogelijkheden. Eén van die mogelijkheden is bijvoorbeeld het aangeven of er per ongeluk een veld is overgeslagen. Hiervoor moet voor elke cel worden bekeken of deze leeg is, en zo ja, of één van de cellen erna wel is ingevuld. Als dat het geval is, is er een probleem.

Mennen

Dit alles zorgt er ook voor dat we nu heel makkelijk protocollen kunnen maken met meer berekeningen. Bijvoorbeel bij het mennen. Hieronder is een voorbeeld van de Kür op muziek op M niveau:

Bij deze proef moet een hoop met de hand worden uitgerekend. Elk punt moet met een coefficient worden vermenigvuldigd en dat wordt vervolgens opgeteld. Daarna wordt het resultaat berekend door het gemiddelde te nemen van de twee deelresultaten.

Met Camarillo is in deze berekeningen geen kans meer op fouten. Geen doorhalingen meer op het protocol en een direct overzicht van de resultaten