Giter VIP home page Giter VIP logo

dg-repo's People

Contributors

adam-wudzinski avatar kamil-gawlik avatar majcherpiotrek avatar merqqq avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

dg-repo's Issues

Wysyłanie DTO do backendu

Teraz backend odbiera stringo-jsony i parsuje je na nasze metadane. Może jest jakiś zgrabny sposób na wysyłanie tego jako jakiś data transfer object (DTO), co ułatwiłoby obsługę wszystkiego na backendzie i zabezpieczyło apkę przed wysypywaniem takim jak np. w issue 3. Nie robiłem wcześniej nigdy tego, więc na pewno da się to zrobić lepiej, jak ktoś wie jak to dawać.

Unikalne id załącznika

Każdy załącznik powinien mieć jakieś unikalne id, żeby można się do niego odwołać. W połączeniu z id rekordu, musi jednoznacznie identyfikować plik. Najprościej, żeby był to po prostu numer miejsca na liście plików. Można by po prostu zrobić tak, że zawsze byśmy patrzyli, na którym miejscu na liście jest plik, ale lepiej będzie jednak dodać do pole, ponieważ jeśli dodamy wyszukiwanie pojedynczych plików, to wtedy będą one zwracane już na innej liście i to nie zadziała.

Edit załącznika przy uploadzie

Po kliknięciu "edit" przy załączniku, wpisaniu danych i kliknięciu "save" dane zostają wymitowane wyżej i dodane do rekordu. Jednak po ponownym kliknięciu edit, mamy stan wyjściowy (brak danych). Powinno być natomiast tak, że po dodaniu metadanych i ponownym kliknięciu edit, powiniśmy mieć tam to, co wpisaliśmy wcześniej.

Refactor upload page

Piszący się na bieżąco snippet rekordu nie wygląda dobrze, należałoby zrobić tak:

  • Na początku mamy tylko główny formularz, wpisujemy metadane całego rekordu, dodajemy pliki.
  • Po kliknięciu "add record" znika formularz i pojawia się snippet rekordu. Nad listą plików powinien być jakiś jednoznaczny prompt zachęcający do dodania metadanych do plików. Poniżej wielki, czerwony button "upload record", po wciśnięciu którego pójdzie dopiero request.
  • Po wysłaniu requestu powinien pojawić się informacja o sukcesie + snippet wstawionego właśnie rekordu, lub informacja o błędzie i przycisk umożliwiający ponowną próbę wysłania rekordu.
  • Niezelażnie czy request zakończył się sukcesem, czy nie, pod spodem powinien pojawić się przycisk "add another rekord", tak jak jest już teraz w sumie.

Dodam jak będę miał chwilę jakieś profesjonalne mockupy z painta.

Download link

Po dodaniu rekordu powinien się wyświetlić download link, który możemy skopiować i komuś wysłać

Edycja istniejącego rekordu

Po wyszukaniu rekordu potrzebna jest opcja zmiany jego treści.

Zmiany najpewniej najelpiej zacząć od pliku record.component.ts, jest tam przygotowana metoda editRecord()

Search page UI

Trzeba zrobić widok dla strony wyszukiwania. Proponowałbym takie rozwiązanie:

  • bezpośrednio w search-page.component.html wkładamy input do wprowadzenia tesktu (póki co umówmy się, że będzie to tylko nazwa rekordu, może uda się potem zrobić to wyszukiwanie pełnotekstowe to będzie tam szedł wtedy cały tekst). Niech to będzie w tagu , do tego przycisk submit. Submit będzie wywoływał serwis wysyłający zapytanie wyszukiwania. Po otrzymaniu odpowiedzi, będzie wyświetlana albo informacja o niepowodzeniu albo lista znalezionych rekordów.
  • Póki co, można zahardkodować listę rekordów jakąś w komponencie i po prostu po kliknięciu submit, żeby wyświetlał się widok z tą listą. Jak to będzie banglało to dodamy serwis. Równolegle trzeba ten serwis napisać i napisać też coś co będzie nam parsowało odpowiedź na jakiś model (Issue 2).
  • Lista mini-snippetów rekordów jako oddzielny komponent, mini snippet również, wyświetlanie całego snippeta kolejny, i snippety załączników kolejny. Tak będzie przejrzyście i nie będzimy mieli jednego trzykilometrowego htmla. Proponuję, żeby to działało tak: klikasz na details któregoś mini-snippeta na liście i to generuje event podając w treści rekord, jakiemu odpowiada, search-page-component nasłuchuje sobie na ten event i jak go otrzyma, to ustawia otrzymany rekord komponentowi wyświetlania snippeta dużego. Przyciski details przy załącznikach powinny tylko rozwijać i zwijać szczegóły i tyle, to już bez jakiegoś dodatkowego komponentu.
  • Do dużego snippeta rekordu dodać przycisk "download", który będzie łączył się z odpowiednim serwisem (Issue 9)

Jak będą jakieś pytania to piszczcie komentarze tutaj pod issue a nie na slacku, bo tam zginie!

Zrobiłem dwa super mockupy do pomocy. Powodzenia.

search_found
search_notfound

Serwis do edytowania metadanych pojedynczego załącznika

Analogicznie do tego jak już jest w RecordService:: editRecord() i deleteFileFromRecord() zrobić serwis editFileMetadata(id: string, filname: string). Do tego podpiąć ten serwis pod button "edit" w record.component. Trzeba by tam przekopiować i dostosować trochę kodu z file-edit.component.

Odbieranie DTO od backendu

Trzeba znaleźć sposób na przetworzenie odebranego JSON'a na model w naszym kliencie. Najfajniej by było, jakby to się robiło jakoś z automatu, bez pisania jakiś parserów. Ale jeśli nie znajdziemy takiego rozwiązania, to trzeba będzie napisać parser, który będzie iterował po wszyskich kluczach jsona i wpisywał je w pola modelu. Nie ważne czy będzie parser, czy jakaś zgrabniejsza metoda już gotowa, dodać tę funkcjonalność jako serwis i dodać w app.module jako provider.

Ednpoint do pobieranie pojedynczych załączników z rekordu

Trzeba udostępnić możliwość pobierania pojedynczych załączników. Endpoint powinien dostawać id recordu oraz pewne unikalne id załącznika (póki co nie ma czegoś takiego, name ani filname nie są unikalne -> do zrobienia w Issue 12)

Animacja pokazująca, że czkeamy na odpowiedź serwera przy wyszukiwaniu

W search page'u jest tak, że request wysyłany jest na każde klinknięcie klawisza. Niestety dopóki nie dostaniemy response'a żadnego, wygląda to tak od strony użytkownika, jakby program się zawiesił, albo nic nie robił. Myślę, że to fajny feature, żeby dynamicznie odpytywało, a nie tylko po naciśnięciu search. ALE:

  • przydałaby się jakaś animacja, taki kręciołek czy coś, na środku ekranu, tam gdzie potem ma się pojawić snippet, która pokazałaby że coś się zadziało po wpisaniu
  • dodałbym search button tak czy siak, któy też by wysyłał request - popatrzcie jak jest w googlu, w trakcie pisania już ci wyszukuje, ale przycisk wyszukania też jest i na enter też wysyła request

Endpoind znajdujący rekordy użytkownika

Endpoint na zasadzie /records?created_by=<user_id>. jako że nie mamy na razie systemu logowania proponuję jako tymczasowe rozwiązanie, w celach prezentacji, umożliwienie wyszukiwania po nazwie utora.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.