quickbox icon indicating copy to clipboard operation
quickbox copied to clipboard

Odečtení času na libovolném postupu mezi kontrolami z celkového času pro vybranou kategorii

Open janpalas opened this issue 6 years ago • 29 comments

Hodila by se nám možnost, aby šel odečíst čas vybraného postupu mezi 2 kontrolami z celkového času všech závodníků ve vybrané kategorii.

Motivace: Závodním prostorem prochází železniční trať, kterou budou závodníci přebíhat ve vyznačeném koridoru. Víme, že v průběhu závodu pojede vlak. Chtěli bychom závodníkům z jejich výsledného času odečíst dobu, kterou strávili čekáním, než projede vlak. Naše idea je taková, že bychom na každý konec koridoru dali jednu kontrolu a z výsledného času všech závodníků odečetli mezičas mezi těmito 2 kontrolami.

janpalas avatar Jul 09 '19 11:07 janpalas

Diskutovalo se to již zhruba před rokem zde: #311 , ale třeba už na to dozrál čas :-)

janpalas avatar Jul 09 '19 11:07 janpalas

nevim, co s mezicasy. Posunout je nebo se smirit s tim, ze cas na posledni kontrole bude vyssi nez cas v cili?

fvacek avatar Jul 09 '19 15:07 fvacek

Klidně bych se smířil s variantou, že čas na poslední kontrole bude vyšší než čas v cíli (předpokládám, že to je implementačně snazší varianta). Závodníci vědí, že se dělalo něco nestandardního, takže budou IMHO tušit, proč tomu tak je...

janpalas avatar Jul 09 '19 16:07 janpalas

Pokud je to takhle, stacil by asi SQL skript. Neco jako

BEGIN 
UPDATE runs SET timems=timems-runlaps.laptimems FROM runlaps WHERE runs.id=runlaps.runid AND runs.stageid=1 AND runlaps.code=123
UPDATE runlaps SET laptimems=0 FROM runs WHERE runs.id=runlaps.runid AND runs.stageid=1 AND runlaps.code=123
COMMIT

fvacek avatar Jul 10 '19 19:07 fvacek

Díky, to vyzkouším. Co když budou závodníci probíhat daným koridorem (osazen kontrolami např. 31 a 32) 2x? (To je reálně plánovaný stav.) Tzn. potřebuji odečíst 2 mezičasy - jednou mezi kontrolami 31-32 a podruhé mezi 32-31.

V tom skriptu se chytáš jen na (asi) koncový kód mezičasu, který chceš odečíst, že? V našem případě nebude unikátní...

janpalas avatar Jul 10 '19 19:07 janpalas

tak to je mnohem horsi, vubec si nejsem jistej, jestli dokazu takovy SQL dotaz napsat, tady bych asi doporucil si napsat kousek pythonu

fvacek avatar Jul 10 '19 22:07 fvacek

Možná by stačilo do "úseky/etapy" a "vyčítání SI čipů" přidat mezi sloupce: /start/čas/cíl/ sloupec něco jako "povinný úsek" kam by se zadal čas kolik že to chci odečíst ... ovšem netuším co by to udělalo s mezičasy (přidat na konec řádek s mezičasem se zápornou hodnotou ?)


(pořádali jsme závod pro ZŠ bez SportIdentu a jen jsem dopisoval "časy v cíli", QE to bezvadně dopočítal a měli jsem hned výsledky)

Pjootr avatar Jul 11 '19 11:07 Pjootr

nestacilo by vynulovat mezicasy na kontroly?

xkenia avatar Jul 11 '19 15:07 xkenia

nestacilo by vynulovat mezicasy na kontroly?

to ne, QE si drzi zvlast jeste celkovy cas

fvacek avatar Jul 11 '19 15:07 fvacek

Možná by stačilo do "úseky/etapy" a "vyčítání SI čipů" přidat mezi sloupce: /start/čas/cíl/ sloupec něco jako "povinný úsek" kam by se zadal čas kolik že to chci odečíst ... ovšem netuším co by to udělalo s mezičasy (přidat na konec řádek s mezičasem se zápornou hodnotou ?)

tohle mi prijde zatim jako nejlepsi napad, pridal bych sloupec penalizace nebo neco tak, kam by se pridal cas, ktery se ma pricist k rozdilu finish - start, tkaze time = finish - start + penalty. Tako funkce by se dala vyuzit i na detskych zavodech, kde se penalizuje treba za chybejici kontrolu nebo na scorelaufech

fvacek avatar Jul 11 '19 15:07 fvacek

Bylo by fajn kdyby sloupec "penalizace" byl vidět ve "vyčítání SI", protože tam je možnost zobrazit data z čipu a najít si tak mezičas který chci odečíst, ale i v "úseky/etapy" to když budu chtít penalizovat a budu závodit bez SportIdentu.

trocha teorie:

  • představa je taková, že u kolejí bude stát regulovčík u sebe dvě SIkrabičky a když pojede mašina zastaví závodníka ten orazí první krabičku a při propuštění orazí druhou, vzniklý mezičas mu bude odečten
  • SIkrabičky co bude mít regulovčík nebudou součástí tratě, takže na "výčetce" je uvidíme jako extra a v datech z čipu najdu čas který mám odečíst - viz.obr. vycetka_a_data P.S.: ty regulovčící tam budou dva, na každé straně jeden, protože se přes koleje poběží tam i zpět :-O
  • a pokud budu dělat "povinný úsek" a mít na začátku i na konci kontroly, které jsou součástí tratě, odečte se čas který uvidím na "výčetce"

Pjootr avatar Jul 11 '19 16:07 Pjootr

ty krabicky s extra kody se mi libi, protoze to vubec nebude zasahovat do normalniho zavodu

fvacek avatar Jul 11 '19 16:07 fvacek

Vypada to nadherne, jedinej problem je, ze zavedeni penalty se projevi skoro ve vech sestavach a exportech QE. Bude to rutinni prace, ale muze se mi stat, ze to nekde vynecham

fvacek avatar Jul 11 '19 16:07 fvacek

Asi bych to po procteni diskuze udelal tak, ze budou jine krabicky na cestu zpet a muzes pouzit ten sql dotaz... J.

Díky, to vyzkouším. Co když budou závodníci probíhat daným koridorem (osazen kontrolami např. 31 a 32) 2x? (To je reálně plánovaný stav.) Tzn. potřebuji odečíst 2 mezičasy - jednou mezi kontrolami 31-32 a podruhé mezi 32-31.

V tom skriptu se chytáš jen na (asi) koncový kód mezičasu, který chceš odečíst, že? V našem případě nebude unikátní...

janzhanal avatar Jul 11 '19 18:07 janzhanal

@janzhanal Ano, díky, to nás včera také napadlo, ale hned potom nás napadla varianta, kterou popisuje @Pjootr - nebude to tak náročné na inteligenci závodníka (=vysvětlit to v pokynech, rozdělit koridor, pak hlídat aby nerazili zrovna ty druhé 2 kontroly). Takže to uděláme touto variantou. Pokud bude implementovaná funkce penalty bude to super, pokud ne, budeme to schopni odečíst ručně na základě dat na lístečku závodníka (časy mezi přebývajícími kontrolami).

janpalas avatar Jul 12 '19 06:07 janpalas

do kdy bych mel penalty stihnout?

fvacek avatar Jul 15 '19 18:07 fvacek

@fvacek Pořádáme 16.-18. srpna, tak kdyby se to do té doby povedlo, bylo by to super!

janpalas avatar Jul 16 '19 04:07 janpalas

nic neslibuji, ale pokusim se

fvacek avatar Jul 16 '19 08:07 fvacek

@fvacek Mohu se zeptat jaký je stav? Ne že bych na to chtěl nějak tlačit (chápu že to je volnočasová aktivita), spíš abych věděl, na co se máme na víkend psychicky připravit :-)

janpalas avatar Aug 12 '19 15:08 janpalas

@janpalas tak bohuzel ne, odevzdavame v praci velky projekt a nemam cas vubec na nic :(

fvacek avatar Aug 12 '19 19:08 fvacek

Related to #248

paukert avatar Jan 04 '20 21:01 paukert

Related to #248

ani moc ne, tento problem to moc neresi, protoze penaltytimeMs je uz zapocitan do timeMs, takze pokud nekdo napise SQL script, ktery vyplni penaltytimeMs, na cas ve vysledcich to nebude mit vliv. Musel jsem se uchylit k teto implementaci penalty, jinak bych musel prepsat vsechny reporty. ne ze by to neslo, ale bojim se, ze bych napsal par regresi.

fvacek avatar Jan 05 '20 18:01 fvacek

Pokud jsem tuto issue nepochopil špatně, tak podle rychlého testu na dev buildu se mi zdá, že to funguje tak, jak se tady nakonec dohodnulo (obsluha by na základě informací z "Show card data" ručně vyplnila políčko penalizace). Jediná věc, která ještě není hotová, je zobrazení sloupce Penalty i v sekci vyčítání SI čípů.

Pokud nastavím nějakou penalizaci, tak se tato hodnota přičte k výslednému času (odečte od výsledného času). V reportech pro tisk výsledků potom také vidím tento nový čas a tento nový čas se dostane i do IOF XML 3.0 exportu – o tento čas se prodlouží (zkrátí) mezičas ze sběrky do cíle (netuším teda, jak by se ORIS tvářil na případný záporný mezičas ze sběrky do cíle). Pokud po nastavení penalizace vytisknu závodníkovi nový lísteček, tak tam se změna času neprojeví, ale to asi není ani potřeba. Na HTML stránce s mezičasy je zobrazen správně celkový čas, u mezičasů zůstal jako cílový čas ten původní, ale je opět otázka, zda je to potřeba vůbec řešit (závodníci vědí, že se dělo něco nestandartního).

paukert avatar Jan 06 '20 06:01 paukert

Jak to tedy nakonec dopadlo? Něco podobného by se nám asi hodilo při podzimních závodech (překonání hlavní silnice).

Jestli to chápu správně, nějaké řešení je, ale vyžaduje ruční zásahy po vyčítání?

OndrejSpanel avatar Aug 03 '20 13:08 OndrejSpanel

@OndrejSpanel My jsme to vyřešili tak, že před koleje jsme postavili hlídače s jednou kontrolou, za koleje hlídače s druhou kontrolou. Tyto kontroly neměla žádná kategorie na trati (a tedy nebyly zakreslené v mapě). Hlídači kontroly vytáhli pouze v momentech, kdy projížděl vlak a dali je orazit čekajícím závodníkům. Do pokynů jsme dali, že závodníci postižení průjezdem vlaku se mohou po doběhu přihlásit (=nebudeme to dělat automaticky všem ale pouze na vyžádání) a my jim ručně odečteme mezičas mezi těmito kontrolami. Přihlásilo se tuším 0 závodníků, přestože vlak párkrát projel a několik lidí čekalo :-)

janpalas avatar Aug 03 '20 14:08 janpalas

To zní pěkně. Je možné, že aut bude jezdit víc, než vlaků, na druhou stranu závodníků, kterým bude záležet na těch vteřinách (možná desítkách vteřin), co ztratili, taky nejspíš moc nebude.

A technicky to řešení odečtení probíhalo jak? Ruční editací hodnoty penalty v tabulce?

OndrejSpanel avatar Aug 03 '20 14:08 OndrejSpanel

@OndrejSpanel V době kdy nás to trápilo nebyla funkce penalty implementovaná. Chtěli jsme to řešit pouze ruční editací času závodníka (=přinese lísteček, vidím že čekal 30 sekund, nastavím dosažený čas závodníka o 30 sekund menší).

janpalas avatar Aug 03 '20 14:08 janpalas

QE obsahuje sloupec penalty, ktery muz obsahovat i zapornou hodnotu, ale to je pro vetsi zavody malo.

Jednoduche dobre reseni neznam, zatim jsem vymyslel toto:

  1. musela by se pridat tabulka povinne useky tam by bylo uvedeno
    1. code1
    2. code2
    3. fixTime
  2. do kodu, ktery kontroluje razeni by se muselo pripsat par radku, ktere by hledaly v razeni povinny usek a jeho cas prepsaly na fixTime, take by musely upravit cas na trati

neni to nakonec tak strasny, ale je to prace :)

fvacek avatar Aug 07 '20 18:08 fvacek

@OndrejSpanel My jsme to vyřešili tak, že před koleje jsme postavili hlídače s jednou kontrolou, za koleje hlídače s druhou kontrolou. Tyto kontroly neměla žádná kategorie na trati (a tedy nebyly zakreslené v mapě). Hlídači kontroly vytáhli pouze v momentech, kdy projížděl vlak a dali je orazit čekajícím závodníkům. Do pokynů jsme dali, že závodníci postižení průjezdem vlaku se mohou po doběhu přihlásit (=nebudeme to dělat automaticky všem ale pouze na vyžádání) a my jim ručně odečteme mezičas mezi těmito kontrolami. Přihlásilo se tuším 0 závodníků, přestože vlak párkrát projel a několik lidí čekalo :-)

tohle je dobry postreh, byl jsem ted na SandStones, kde byl take prebeh pres silnici a vubec to neresili. Otazka je, jestli to vubec stoji za to implementovat pro vsechny zavodniky a nevytvorit radsi podminky, kdy se do da rucne opravit tem, kteri se prihlasi, protoze je to skutecne poskodilo.

fvacek avatar Aug 07 '20 18:08 fvacek