Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MČR KT, KL - tvorba startovek pro finále dle výsledků kvalifikace #524

Open
lukaskett opened this issue Mar 6, 2020 · 22 comments
Open

Comments

@lukaskett
Copy link

Zdarec,

tahle funkce by zase o trošku usnadnila práci pořadatelům mistrovství republiky na krátké i klasické trati. Startovka finálového závodu vychází z výsledků kvalifikace podle jasně daných pravidel. Bylo by potřeba, aby na základě vybraných výsledků uměl QE v novém závodě startovky sestavit.

Viz soutěžní řád - pro klasickou trať hlavně odstavce 1.11 a 1.12, pro krátkou trať 2.11 a 2.12, odkaz
http://www.orientacnibeh.cz/upload/dokumenty/sekce-ob/sr-ob20.pdf.

Příklad výsledky kvalifikace: https://oris.orientacnisporty.cz/Vysledky?id=4307
Příklad startovka finále: https://oris.orientacnisporty.cz/Startovka?id=4306

Díky za reakce
Cáš

@xkenia
Copy link
Collaborator

xkenia commented Mar 6, 2020

Vypada to jednoduse, ale uplne tak jednoduche to neni ;)
Navic se kdykoli muze stat, ze se zmeni pravidla a bude se muset menit kod.

Co by se mohlo udelat je, ze se vezme definovany pocet zavodniku z rozbehu + nasledujici se stejnym casem, a ti se posunou do finale. Nasledne si ale finalovou startovku budes muset zkontrolovat, zda tam neni nejaka minela.

@fvacek
Copy link
Collaborator

fvacek commented Mar 7, 2020

Priznam se, ze v tomhle vam moc neporadim. Souhlasim s Kenou, ze dratovat to primo do QE nema cenu. Spis bych vymyslel nejaky postup, jak by to slo zvladnout pomoci sikovneho exportovani a importovani, to si myslim, ze by smysl melo, protoze by to slo pouzit i pro jine specialitky, nez je MCR

@lukaskett
Copy link
Author

Je mi jasný, že to nebude "one button solution". Ideální by mi přišel import výsledků kvalifikace, nějaké základní seřazení - rozdělení závodníků do příslušných finále(na základě semifinálové kategorie, počtů a časů jak píše Keňa). Ve sloupcích by se mohly zobrazovat navíc informace z kvalifikace - čas, kategorie, umístění, podle kterých by bylo možné ručně zkontrolovat a upravit.

@fvacek co myslíš šikovným exportování a importováním? Jaké další spacialitky tě napadly?

@fvacek
Copy link
Collaborator

fvacek commented Mar 8, 2020

co myslíš šikovným exportování a importováním? Jaké další spacialitky tě napadly?

Myslel jsem, ze by se dal z QE vyexportovat zavod podle nejakeho filtru, jako kat==H21 && place<=25 a tento fragment zavodu by se dal priimportovat do jineho zavodu (jestli to neni blbost). Takhle nejak bych si predstavoval, ze by bylo mozne sestavit finalovy zavod z rozebehu.

@xkenia
Copy link
Collaborator

xkenia commented Mar 8, 2020

Co by mohlo jit relativne jednoduse, tak export ze semifinaloveho zavodu a import do finaloveho:

  • v menu polozka "Export pro finale" a "Import ze semifinale"
    Export:
  • Options dialog se vsemi kategoriemi ze semifinale (ty podkategorie pouze jako jedna, tedy nazev pro tisk) a pro kazdou textove pole; mozna i checkbox, zda chci tuto kategorii exportovat
  • do textoveho pole by se vypisovali pocty postupujicich do jednotlivych finale; pokud tedy z rozbehu H21A postupuje 12 do A finale, 15 do B, 30 do C, zbytek do D, tak by se tam zadalo "12,15,30,999"
  • pokud se kategorie nedeli, tak bud zadat "nic" nebo "999", nebo opet checkbox
  • program by naplnil finalove skupiny podle poradi (pokud na poslednim postupovem miste jsou 2, tak postupuji oba)
  • dale uz by to bylo na rozhodcim, at zkontroluje poradi

@xrust01
Copy link

xrust01 commented Mar 14, 2020

Ahoj, hele já jsem tohle s @lukaskett řešil a asi mi nedělá problém napsat nějaký python script který z výsledku kvaldy + nějaké meta specifikace udělá startovku. Takže jestli byste pak měli kde tento nástroj pouštět, tak rád pomůžu :) Jenom jem teda s quickeventem moc nikdy nepracoval, tak bych potřeboval uázku výstupu a vstupu (nejlépe asi csv, případně xmlko) co by to mělo schroustnout a vracet..

@xkenia
Copy link
Collaborator

xkenia commented Mar 15, 2020

Chtelo by to nekde zalozit nejaky chat/forum, kde nebudeme zahlcovat toto issue - podle meho, to bude za chvili neprehledne.

Za mne idealne pouzit jako vstup vysledky kvalifikace ve formatu IOF XML 3 (tady staci pro testy vzit vysledky jakehokoli zavodu, kde ma alespon jedna kategorie nejakou podkategorii - H21A, H21B ...). Jako nasledny vstup pro startovku finale mame zatim jediny format a to je OB2000. Nemuzu ted nikde najit nejaky priklad, tak poprosim @fvacek nebo @arnost00 .

@paukert
Copy link
Member

paukert commented Mar 15, 2020

Příklad formátu pro import OB2000 je třeba tady #95

@fvacek
Copy link
Collaborator

fvacek commented Mar 15, 2020

Pouzit pro import startovky vysledky v IOF-XML3 je skvelej napad 👍

@fvacek
Copy link
Collaborator

fvacek commented Mar 15, 2020

@xrust01

asi mi nedělá problém napsat nějaký python script který z výsledku kvaldy + nějaké meta specifikace udělá startovku.

museli bychom QE dodavat s pythonem, protoze windows. Rad bych se tomu vyhnul, uz jenom kvuli python knihovnam pouzitych ve skriptech, ktere bychom museli dodavat taky. Nasat to v C++ neni o tolik horsi, protoze staci opsate nektrey existujici import nebo export :)

@xkenia
Copy link
Collaborator

xkenia commented Mar 15, 2020

@xrust01 odpovi, ale pocitam, ze by to byl mezikus "nekde volne dostupny", pripadne lokalne spusteny a s QE by nemel nic spolecneho - proste nezavisle losovatko.
Ale jak jsem s nim mluvil, pokud napise obecne algoritmus, tak prepsat to do cehokoli uz nebude problem.

@fvacek
Copy link
Collaborator

fvacek commented Mar 15, 2020

jestli to nebude soucast distribuce QE, tak je mi to jedno, jenom bacha na to, ze se o to stejne bude muset nekdo starat. QE se jeste vyviji, obcas jeste i v DB a tyto doprovodne skripty to budou muset reflektovat. Pokud to bude soucast QE, bude to mnohem jednodussi. Pokud by to bez skriptovani neslo, Qt umoznuji skriptovat v JS, ale znovu opakuji, moje zkusenost je, ze v c++ to nakonec jde stejne lip, kdyz se podivate do gitu, uvidite kolik skriptu jsem z JS prepsal do c++, protoze jsem potreboval, aby to opravdu rychle a hlavne spolehlive fungovalo. Prekladac obvykle najde spoustu chyb, ktere netypovany jazyk zjisti az za runtime.

@xrust01
Copy link

xrust01 commented Mar 15, 2020

@fvacek @xkenia presně, moje původní idea byla to udělat jen pro naší mčr klasika, s c++ neumím, takže tam by to asi moc bolelo, takže spíš bych vymyslel nějakej algoritmus, ten napsal a otestoval v pythonu a pak by se to dalo určitě přepsat, nemám problém to pak poskytnout.

Jinak ten formát startovky je nějaký podivný.. takže tam spíš asi vidím output že by byl jenom dataframe kategorie, čas startu a id závodníka. S tím že pak by se tohle upravilo už tam kde by se to implementovalo..

A pokud nám Babiš udělá karanténu, tak se do toho možná pustim spíš dřív než později.. :D

@otahirs
Copy link
Member

otahirs commented Mar 15, 2020

pokud uděláš něco v pythonu, o to jednoduší to pak bude připadně napsat i v c++ 😉
hodně bych se přimluvil, aby byl vstup i výstup (také) v IOF XML, přecijenom je to standard (i když QE ho zatím importovat neumí, tak lepší pak psát jeden import, než pro každý pseudoformát navíc)

https://github.com/international-orienteering-federation/datastandard-v3/blob/master/IOF.xsd
tento soubor popisuje iof standard pomocí xsd souboru, je to spíš taková kuchařka, kde jaký prvek může být a jaké může mít hodnoty, výsledné XML se pomocí tohoto souboru dá např. validovat.

https://github.com/international-orienteering-federation/datastandard-v3/tree/master/examples
tady pak jsou už ukázky skutečných souborů, i startovek

@xrust01
Copy link

xrust01 commented Mar 21, 2020

Hele, podle čeho se z těch výsledků dá zjistit, že má závodník českou registračku? Nebo spíš proč třeba @otahirs tam má místo registračky pseudokód 02S98AA.. popřípadě kdybyste věděli přímo o výsledkách nějaké kvaldy v tomhle formátu, tak by to trochu pomohlo :) Díky

@otahirs
Copy link
Member

otahirs commented Mar 21, 2020

xml výše není z českých závodů, tedy 02S98AA je nějaké jejích psedoregistračka

jakékoliv výsledky se dají z orisu stáhnout https://oris.orientacnisporty.cz/ExportVysledkuXML&v=3?id={ORIS ID závodu}

např. kvalifikace z loňské klasiky: https://oris.orientacnisporty.cz/ExportVysledkuXML&v=3?id=4307

pokud se v tom chceš vyznat, doporučuji prohnat přes nějaký formater, např https://www.freeformatter.com/xml-formatter.html

@xrust01
Copy link

xrust01 commented Mar 21, 2020

dík, tohle bodne :) co jsem na to koukal tak to jsou asi nějaký slovenský závody.. :)

@xrust01
Copy link

xrust01 commented Mar 22, 2020

Hele, tak jsem to nějak zpatlal a docela to jede.. co s tim teď dál, tady to je kdyby jste se chteli mrknout, je to asi 400 radku kodu, takze da se, citelnost prosim posudte sami :)

GenerateStartlistForFinal.zip

jinak co jsem koukal tak minimálně ta klasika v Jablonci tam moc nerespektovali ty směrnice pro cizince, nebo jestli to mezitím změnili..? :) Jako ti cizinci to je teda jinak teda voser s nima :D

@xkenia
Copy link
Collaborator

xkenia commented Jun 11, 2024

Zdar, byla vytvorena utilitka, ktera umi vzit vysledky ze semifinale a podle konfigurace pripravit startovku pro finale.
Je online, vytvorena v Javascriptu, takze se da stahnout, upravit zdrojak a lokalne si pustit.

https://semi2final.kear.cz/

Aktualne probehli 2 testovaci a jeden ostry zavod (MCR KT 2024), kdy to pouzil clovek, ktery o tom nic nevedel ;)

PS 11.6.2024: jeste musim udelat zmenu v hostingu, at ma certifikat :(

@lukaskett
Copy link
Author

lukaskett commented Jun 11, 2024

Vyzkoušel jsem na datech z víkendového MČR exportovaných z Orisu (dokonce je tam případ stejného času na postupové pozici) a super, díky.

Do postupu bych jen doplnil, že po nastavení intervalu a upravení startu prvního závodníka (sloupec Start) je potřeba ještě provést losování se zachováním pořadí závodníků. Jen pro úplnost ;)
image

@michalpruch
Copy link

michalpruch commented Jun 11, 2024

Potvrzuji, Javascript od Keni jsme úspěšně použili na víkendovém MČR na krátké. Rozřazení nám udělal perfektně.

Pak ale samozřejmě následovala ruční práce s čipy, startovními čísly a časy, které jsem importoval do QE jako csv soubory. Losování se Zachováním pořadí závodníků mi bohužel nefungovalo správně a pořadí rozházelo.

Díky!

@fvacek
Copy link
Collaborator

fvacek commented Jun 11, 2024

#978

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants