atviriduomenys / katalogas

Lietuvos atvirų duomenų katalogas (data.gov.lt).
14 stars 2 forks source link

Modelio duomenų peržiūra #300

Closed sirex closed 1 year ago

sirex commented 1 year ago

URL: /datasets/{id}/data/{model}?select(name, country)&population>1000&sort(-population).

image

Atvaizduojant duomenis, daroma užklausa į Saugyklą (get.data.gov.lt) ir rezultatas atvaizduojamas lentelėje.

Epic

Susiję

sirex commented 1 year ago

Jei nėra jokių duomenų, tada reikia rodyti pranešimą, kad duomenų nėra, dabar rodo tai:

Image

Atsisiuntimo iškrentantis sąrašas neveikia, rodo keistai tik _id lauką.

sirex commented 1 year ago

Image

Reikėtų rodyti, kaip iškrentantį sąrašą, panašiai, kaip mygtukas „Atsisiųsti“.

sirex commented 1 year ago

Užpildžius filtro formą:

Image

Ir paspaudus filtruoti, gaunu tokią klaidą:

Unexpected token Token('NAME', 'r') at line 1, column 39. Expected one of: LPAR $END VBAR DOT COMMA COMP FACTOR AMPERSAND TERM LSQB Previous tokens: [Token('NAME', 'Vilniaus')]

Kaip suprantu, klaida susijusi su tuo, kad neuždedamos kabutės ant filtro reikšmės, nes nukreipimas daromas į tokį URL:

?municipality_name=Vilniaus%20r.%20sav.

O turėtu būti

?municipality_name="Vilniaus%20r.%20sav."

Kabutes reikia uždėti string ir date tipo laukams.

sirex commented 1 year ago

Image

Nerodo horizontalios slinkties juostos. Duomenų lentelė turi būti įdėta į div, kuris turi vertikalią slinkties juostą (scrollbar), jei duomenys netelpa horizontaliai.

sirex commented 1 year ago

Atsisiunčiant duomenis CSV ar kitu formatu, neturi būti taikomas limit, nes limit taikomas tik atvaizduojant duomenis html formatu.

Dabar formuojama tokia nuoroda duomenų atsisiuntimui:

https://get.data.gov.lt/datasets/gov/lsd/covid19/AtvejaiIrMirtys?limit(100)&format(csv)

Nors turėtu būti:

https://get.data.gov.lt/datasets/gov/lsd/covid19/AtvejaiIrMirtys?format(csv)
sirex commented 1 year ago

Nežinau dėl kokių priežasčių, bet modelio duomenų peržiūros puslapį, krauna beveik 5 sekundes, kas yra nepriimtinai lėtai. Patikrinau, ta pati lentelė saugykloje išvedama per pusę sekundės, tai reiškia katalogo pusėje yra 4.5 sekundės labai neefektyvaus kodo.

sirex commented 1 year ago

Request Method: GET Request URL: http://localhost:8000/datasets/1223/models/Organization/

Django Version: 3.2.16 Python Version: 3.10.10

Traceback (most recent call last):
  File "vitrina/structure/models.py", line 75, in uri_link
    prefix, name = self.uri.split(':', 1)

Exception Type: ValueError at /datasets/1223/models/Organization/
Exception Value: not enough values to unpack (expected 2, got 1)

Čia tokia klaida atsiranda bandant užkrauti https://github.com/atviriduomenys/manifest/blob/master/datasets/gov/ivpk/adk.csv

Kuriame, prie Organization.description yra nurodyta uri: dct.description. Užkraunant duomenis reikėtų patikrinti ar yra nurodytas uri prefiksas ir jei jis nenurodytas tada mesti klaidą. Į uri stulpelį galima įrašyti URI su prefiksu, arba pilna forma https://..., be prefikso. Tai siūlau patikrinti ar uri yra :// arba :. Jei yra :// reiškia URI yra pilnas, jei yra tik :, reiškia URI yra su prefiksu, jei nėra nei ://, nei :, tada klaida.

Ir atvaizduojant URI metaduomenis, reikėtų įvertinti, kad gali būti URI pilnas ir su prefiksu.

Jei yra nurodytas prefiksas, jis turi būti apibrėžtas prie duomenų rinkinio.

sirex commented 1 year ago

Šoninėje juostoje, modelių sąrašas turi būti surūšiuotas pagal modelio kodinį pavadinimą, abėcėlės tvarka.

sirex commented 1 year ago

Image

Filtro mygtukas, prie duomenų lauko neturėtų persikelti į naują eilutę.

sirex commented 1 year ago

Image

Checkbox ir lauko pavadinimas turėtu išlikti vienoje eilutėje.

sirex commented 1 year ago

Image

Paspaudus ant select() checkbox, sąrašas neturėtu iš karto užsidaryti, turėtu leisti pasirinkti kitus laukus. Pasirinkimai turi būti rodomi paspaudus mygtuką „Rodyti“, kuris yra iškrentančio sąrašo apačioje.

Dabar kai yra daugiau laukų, labai sudėtinga daryti atranką, nes kiekvieną kartą pasirinkus lauką, sąrašas užsidaro ir puslapis persikrauna. Jei nori pažymėti 10 laukų, tai padaryti labai sudėtinga, kai kiekvienas paspaudimas perkrauna puslapį.

sirex commented 1 year ago

Operatorių sąraše trūksta != operatoriaus.

Ir dar viena problema. Dabar padaryta, kad įrašius filtro reikšmę, string tipui automatiškai uždedamos kabutės. Tačiau reikia padaryti išimtį, jei įrašoma null reikšmė, tada kabučių uždėti nereikia. Tačiau jei įrašyta "null" su kabutėmis, tada taip ir siųsti, t.y. atlikti paiešką tekstui "null", t.y. nereikia uždėti dar vienų kabučių.

sirex commented 1 year ago

Image

Jei filtre įvedu kabutes, gaunu klaidą:

No terminal matches '"' in the current parser context, at line 1 col 17 limit(100)&name=""" ^ Expected one of: STRING ALL LPAR NAME SIGN BOOL INT FLOAT * LSQB Previous tokens: Token('COMP', '=')

Reikėtų prieš visas kabutes pridėti \ simbolį, kad būtų \", tokiu būdu klaidos nebus.

sirex commented 1 year ago

Atlikus paiešką su filtru, jei nerandami jokie duomenys, tada nerodo pasirinktų filtrų ir nėra galimybės jų pakeisti ar pašalinti.

Image

Jei duomenų neranda, turi rodyti aktyvius filtrus ir laukų sąrašą.

Image

Tokiu būdu bus galima pataisyti filtrus, jei pagal ankstesnius filtrus nerasta jokių duomenų.

sirex commented 1 year ago

Ilgą tekstą apriboti iki 256 simbolių ir rodyti ... jei tekstas buvo nukirptas.

Image

sirex commented 1 year ago

Image

Paspaudus rodyklę į viršų, turi būti rūšiuojama Z -> A, paspaudus rodyklę žemyn turi rūšiuoti A -> Z. Dabar padaryta atvirkščiai, reikia sukeisti vietomis.

sirex commented 1 year ago

Image

Nerodom None, jei reikšmė yra None, tada celė turi būti tuščia ir su šviesiai pilku fonu.

sirex commented 1 year ago

Image

Jei modelis neturi title, rodom name.

sirex commented 1 year ago

Image

Nurodytoje vietoje reikia rodyti tokį tekstą:

Rodoma 100 objektų iš 10,000.

Kur 100 yra objektų skaičius, kuris rodomas puslapyje, o 10,000 yra skaičius, kiek iš viso yra objektų, šį skaičių galima gauti darant /Model?count() užklausą į Saugyklą.

sirex commented 1 year ago

http://localhost:8000/datasets/1223/models/

Traceback (most recent call last):
  File "vitrina/structure/models.py", line 180, in get_absolute_url
    return reverse('model-structure', kwargs={
  File "django/urls/base.py", line 86, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
  File "django/urls/resolvers.py", line 698, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /datasets/1223/models/
Exception Value: Reverse for 'model-structure' with keyword arguments '{'pk': 1223, 'model': ''}' not found. 1 pattern(s) tried: ['datasets/(?P<pk>[0-9]+)/models/(?P<model>[^/]+)/\\Z']

Ta pati klaida pasitaiko ir su http://localhost:8000/datasets/1223/data/Catalog/

Template error:
In template vitrina/structure/templates/vitrina/structure/side_menu.html, error at line 6
   Reverse for 'model-data' with keyword arguments '{'pk': 1223, 'model': ''}' not found. 1 pattern(s) tried: ['datasets/(?P<pk>[0-9]+)/data/(?P<model>[^/]+)/\\Z']
   1 : <nav class="category-panel">
   2 :     {% for model in models %}
   3 :         <div>
   4 :             <span class="has-tooltip-top" data-tooltip="{{ model.name }}">
   5 :                 {% if is_data %}
   6 :                     <a href=" {{ model.get_data_url }} " class="category-panel-block">
   7 :                 {% else %}
   8 :                     <a href="{{ model.get_absolute_url }}" class="category-panel-block">
   9 :                 {% endif%}
   10 : 
   11 :                 {% if not show_props and request.resolver_match.kwargs.model == model.name %}
   12 :                     <strong><span id="side_menu_elem">{{ model.name }}</span></strong>
   13 :                 {% else %}
   14 :                     <span id="side_menu_elem">{{ model.name }}</span>
   15 :                 {% endif %}
   16 :                 </a>

Traceback (most recent call last):
  File "vitrina/structure/models.py", line 186, in get_data_url
    return reverse('model-data', kwargs={
  File "django/urls/base.py", line 86, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
  File "django/urls/resolvers.py", line 698, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /datasets/1223/data/Catalog/
Exception Value: Reverse for 'model-data' with keyword arguments '{'pk': 1223, 'model': ''}' not found. 1 pattern(s) tried: ['datasets/(?P<pk>[0-9]+)/data/(?P<model>[^/]+)/\\Z']

Turiu įtarimą, kad kažkas blogai su duomenimis, bet problema, kad negaliu iš naujo importuoti struktūros aprašo. Todėl būtų gerai, kad tokios klaidos neuždarytų kelio, struktūros aprašo importavimui.

Gali būti, kad tai yra susiję su

sirex commented 1 year ago

Image

Nurodytoje vietoje reikia rodyti tokį tekstą:

Rodoma 100 objektų iš 10,000.

Kur 100 yra objektų skaičius, kuris rodomas puslapyje, o 10,000 yra skaičius, kiek iš viso yra objektų, šį skaičių galima gauti darant /Model?count() užklausą į Saugyklą.

image

Turi rodyti „Rodoma 2 objektai iš 2.“, t.y. count() pridedamas su filtru.

Jei skaičius didelis, turi būti kablelis, kas tūkstanį.

Ir tekstas su skaičiais turėtu naudoti daugiskaitos/vienaskaitos formą: https://docs.djangoproject.com/en/4.2/topics/i18n/translation/#pluralization

sirex commented 1 year ago

image

Jei nėra rezultatų, filtras pasislepia.

http://localhost:8000/datasets/389/data/Atkn1TendererGroupList/?group_name=%22aa%22