Quick-Event / quickbox

Quick Event - Orienteering Software
GNU General Public License v2.0
52 stars 41 forks source link

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

Open lukaskett opened 4 years ago

lukaskett commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

xrust01 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

fvacek commented 4 years ago

Pouzit pro import startovky vysledky v IOF-XML3 je skvelej napad :+1:

fvacek commented 4 years ago

@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 commented 4 years ago

@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 commented 4 years ago

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 commented 4 years ago

@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 commented 4 years ago

pokud uděláš něco v pythonu, o to jednoduší to pak bude připadně napsat i v c++ :wink: 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 commented 4 years ago

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 commented 4 years ago

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 commented 4 years ago

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

xrust01 commented 4 years ago

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 commented 2 months ago

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 commented 2 months ago

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 commented 2 months ago

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 commented 2 months ago

https://github.com/Quick-Event/quickbox/issues/978