Closed motyc closed 2 months ago
Dobry den, pozadavek persistence po dobu session a nacteni z lokalniho zdroje jde proti sobe: 1./Uprimne priznavam, ze pozadavek na GeoTIFF,GPX,shapefile pro nas znamena implementovat 3 pro nas nove/ruzne knihovny 2./Po analyze knihovana architektury django jsme si jisti, ze neni mozne mit v browseru lokalne nactene soubory a po celou dobu session je mit v leafletu jako vrstvy (jsme to schopni pouze po dobu nacteni jedne stranky), Vami pozadovana funkcionalita je mozna pouze tak, ze bude existovat samostatna stranka, kam si uzivatel nahraje sve soubory(implementovano napriklad jako public adresar nginx) s podklady a oznaci, ktere chce v session videt (toto se ulozi do DB) a pak se mu tyto podkady budou zobrazovat po dobu cele session.
@motyc prosim potvrdite, ze chcete mapy po dobu session a @pesikj prosim odhadni pracnost vytvoreni stranky ktera bude nahravat/mazat "nejspise" do write public weboveho adresare a do DB ukladat pro uzivatele vsechny jeho a aktivni (pripojene) soubory. Nejpise do public adresare se nahraji soubory s uuid misto jmena a do db se budou ukladat pro kazdeho uzivatele jeho uuid, zda je aktivni a puvodni nazev souboru
@ScottVanWagenen
@jiri-bartos-huld Děkuji za zpětnou vazbu. Toto issue musíme ještě lépe prodiskutovat interně. Prosím odhady zatím nedělejte. V kontextu napsaného revidujeme zadání a ozveme se. Nejde o něco zařazeného do stávající objednávky, zdržení zde tedy nehrozí.
Zadání kompletně přepracováno a původní přístup nahrazen jiným, vhodnějším řešením.
@motyc prosim o zodpovezeni dotazu, kolik dat pocitame, ze bude v souboru? Pokud to bude malo, muzeme pouzit modalni dialog, ale kdyz budou stovky geometrii, tak musime resit jinak.
@jiri-bartos-huld Otázka je, co znamená málo. Obecně si myslím, že většinou jich budou max. desítky, výjimečně stovky. Lze k tomu ale dát buď nějaké omezení, nebo doporučení pro uživatele, pokud by to věci komplikovalo. V čem přesněji je ten limit?
@motyc Podle mě by bylo schůdné v modal okně zobrazit tak 10 až 20 záznamů. Pokud jich má být více, byla by lepší samostatná stránka.
Teď jsme to ještě s @pesikj probírali po telefonu a má představa byla taková, že by se v modal okně zobrazilo pole s drop-down listem, do kterého by se na četly všechny položky z tabulky ze sloupce nadepsaného label
a nic dalšího. Ze seznamu by šlo normálně vybrat jednu položku (chování stejné, jako máme všude, tj. s možností vyhledávání podřetězců v rámci seznamu labelů). K ní by se pak po potvrzení načetla do mapy geometrie (sloupec geometry
). V tomto případě mám pocit, že na počtu řádků víceméně nesejde, protože ten rozbalovací seznam jich snese poměrně hodně.
K tomu mne napadá:
label
, epsg
, geometry
) a vlastně vůbec nemusíme řešit, zda budou v tabulce i nějaké další nebo nelabel
budou duplicitní označení (vícekrát stejná hodnota), protože jinak bude výběr nejednoznačnýUkazka bez prepisu geometrie:
Ukazka s prepisem geometrie & labelu:
@jnihnat @pesikj 1./prosim kouknte na https://github.com/ARUP-CAS/aiscr-webamcr/pull/1264 je tam implementovana funkcionalita popsana v prispevku nahore 2./Nyni zbyva vytvorit to tlacitko na nahrani tabulky a vyberu radku (myslim, ze je dohodnuto, ze tohle bud delat @jnihnat) Pote co se vybere radek v CSV tak staci presmerovat na stranku: /arch-z/akce/detail/C-202211987A/dj/{{DJ_ID}}/pian/edit/{{PIAN_ID}}?label={{label}}&geometry={{WKTgemetrie}}
@jnihnat prosim rozmysli dialog
@jiri-bartos-huld pripravene pro tebe #1287.
@pesikj @jnihnat dodelal jsem fce pro validaci epsg (vraci True/False)/geometrie(vraci pole[True/False, "duvod"] prosim muzete donapojit. Na vstupu je vzdy string (krom epsg, kde to zvladne i cislo)
pouziti je jednoduche:
print(file_validate_epsg("4326")) print(file_validate_epsg("4326a")) print(file_validate_epsg(4326)) print("geometry---") print("point---") print(file_validate_geometry("multi (10 20)")) print(file_validate_geometry("point (10 20)")) print(file_validate_geometry("POINT (10 20 55 a)")) print("---line") print(file_validate_geometry("LINESTRING ()")) print(file_validate_geometry("LINESTRING (30 10, 10 30, 40 40)")) print(file_validate_geometry("LINESTRING (30 10, 10 30, 40 a)")) print("polygon---") print(file_validate_geometry("POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))"))
@pesikj Rád bych otestoval, ale nikde nevidím volbu, jak PIAN importovat. Čekal bych ji v menu dokumentační jednotky bez PIAN, tam ale není: http://192.168.254.30:8080/arch-z/akce/detail/C-9723779A/dj/C-9723779A-D02
@motyc a @jiri-bartos-huld tu doslo asi k nejakemu nedorozumeni, Jirka to udelal na pian/edit:
/arch-z/akce/detail/C-202211987A/dj/{{DJ_ID}}/pian/edit/{{PIAN_ID}}?label={{label}}&geometry={{WKTgemetrie}}
Podle p. Novaka to ma byt asi na:
/arch-z/akce/detail/
@jnihnat A jak se to u toho editu chová? Pokud je možno importem nahradit stávající geometrii PIAN bez přečíslování, tak to není špatná funkce, ale určitě to potřebujeme i pro zápis nového, kde to bude užívané mnohem častěji.
@jnihnat Do URLs jsem doplnil pro import PIAN akce pian_import_new
a pian_import_change
@jnihnat @ Mluvil jsem s @motyc a dohodli jsme se, ze by melo byt pridano tlacitko do menu pod mapu: 1./Podminka zobrazeni talcitka pokud dj nema zadny pian 2./Pri zmacknuti tlacitka by pak stacilo nacist tabulku, vybrat pian a pak presmerovat na stranku:
arch-z/akce/detail/C-202300521A/dj/C-202300521A-D02/pian/zapsat?geometry=POLYGON%20((13.2164736%2049.9596986,13.2154006%2049.9589111,13.2178685%2049.9583378,13.2183513%2049.9593602,13.2164736%2049.9596986))&label=moje
vse by pak melo fungovat
dodelano v #1338 Musel som uprit i odkud tahame "context" pro lokality a zjednotit to s akci at to nemame na dvou mistech. Prosim pro jistotu teda proklikat lokalitu i akci s DJ/komponentami. @pesikj - FYI
Nelze testovat kvůli #1342
Při pokusu o upload CSV se zobrazí hláška o úspěchu, ale soubor zase zmizí a modal se vyprázdní, jako bych tam žádný soubor nevložil. Je úplně jedno, zda to zkouším pro nový PIAN, nebo pro aktualizaci, stejně jako v jaké části aplikace to dělám.
Testováno na tomto CSV: PIAN_import_test.csv
za mne opravy a vylepseni v #1351 dostanu se uz na zapsat a edit s danou geometrii a vsak po ulozeni se neulozi, protoze se nic do requestu neposle: { "csrfmiddlewaretoken": "mZ3EQgU5CERhTXVCTxyAuJx1jjP7U2mJCn0bRCEFizXJUNub9e0zhXC58wjYQVlV", "presnost": "861", "geom": "", "geom_sjtsk": "", "geom_system": "4326", "dj_ident_cely": "C-9108572A-D01" }
@jiri-bartos-huld kouknes na tohle ty, nebo mam ja?
@jiri-bartos-huld Ještě mě napadá jedno úskalí daného řešení, a to že pokud budeme geometrii posílat přes GET, tak u velkých geometrií můžeme teoreticky přesáhnout maximální délku URL (2000 znaků) a nebude to fungovat. Navrhoval bych tedy upravit z GET na POST.
@jnihnat koukneme na to spolu-na callu @motyc omezeni je jen pro MS Edge ostatni problem nemaji. Jednoduzse zapsat to do body a vyzvednout si to pres JS nepujde, pokud to budeme chtit resit tak POST na python z neho naplnit django promenou, tu nacpat do javascript promnene a z ni cist. Neco cookies. Ale obe metody nas pripravy o refresh F5, po nem geometrie zmizi.
@pesikj @motyc @jnihnat 1./Neukladani opraveno-pujde na MR spolu s prechodem na x1,x2 souradnice 2./Obejit omezeni na 2000 znaku @jnihnat navrhl pomoci redisu, @pesikj prosimmuzes dohodnout at je to samostatny task
@motyc Souhlasím s @jiri-bartos-huld a řešení omezení nad 2000 znaků navrhuji odsunout do speciálního issue, protože to bude vyžadovat dočasné ukládání geometrií do redisu.
@pesikj Ok. Vyčleněno do #1369. Jinak jsem Vám prosím volal. Až budete mít chvilku, ozvěte se mi prosím, něco bych potřeboval vysvětlit.
pian.views.importovatPianView.check.wrongEpsg
pro situaci, kdy je chybné záhlaví sloupce a kdy je chybný obsah sloupce (EPSG není 4326). Chybovou hlášku jinak nejde smysluplně univerzálně nastavit, protože pokaždé je třeba sdělit něco jiného. Ekvivalentně pak platí pro pian.views.importovatPianView.check.wrongGeometry.label
nebo geometry
prázdné v CSV, dostanu neodchycenou chybu:
@motyc Můžete mi prosím poslat soubory, se kterými jste prováděl testování?
@pesikj Stále to zkouším na této, ale dělal jsem do ní ad hoc zásahy, abych nasimuloval ty různé zmíněné situace: https://github.com/ARUP-CAS/aiscr-webamcr/files/13392968/PIAN_import_test.csv
@motyc Včera bylo domluveno, že validaci souřadnic si převezmete vy. Funkce pro validaci je zde:
Funkce je ve skriptu webclient/core/utils.py
, název funkce file_validate_geometry
.
@jhavrlant Honzo, to je tedy prosím na Tebe (https://github.com/ARUP-CAS/aiscr-webamcr/issues/298#issuecomment-1896440026).
@motyc Prosím o doplnění informace, zda body týkající se validace souboru jsou již v pořádku.
label
nebo geometry
prázdné v CSV, dostanu neodchycenou chybu:
pian.views.importovatPianView.check.no_data
-- pian.views.importovatPianView.check.wrongColumnName
geometry
prázdné v CSV, dostanu neodchycenou chybu:
Mapa je teď celkově rozbitá kvůli #1619, což může test ovlivňovat.
@jhavrlant Nemohl bys prosím případně pomoci s opravou?
Zdá se, že úprava od @pesikj nyní blokuje vracení akcí:
Vlastně ani nevím, proč se v danou chvíli http://192.168.254.30:8080/pian/validovat-geometrii/ volá, ale každopádně vrací error 500 a akce nejde vrátit (test na http://192.168.254.30:8080/arch-z/akce/detail/M-9101236A).
label
- uživatelské označení geoprvkuepsg
- označení souřadnicového systému, přípustné hodnoty 4326 (5514 doplníme v budoucnu, až bude podporovat i mapa)geometry
- geometrie ve formátu WKT (přípustné point, polyline a polygon)label
Pro usnadnění přípravy na straně uživatelů ARÚ zajistí vytvoření exportního pluginu pro QGIS (není součástí zadání).