Zadanie #1705
Dodanie operacji do zarządzania strukturą na drzewie
Status: | Testowanie | Start date: | 2017-06-08 | |
---|---|---|---|---|
Priority: | Normalny | Due date: | 2017-06-08 | |
Assignee: | Łukasz Waśkiewicz | % Done: | 100% | |
Category: | ui | |||
Target version: | 0.3 | |||
Developer: | Łukasz Waśkiewicz | Tester: | Jarosław Bąbel |
Description
Należy udostępnić 2 opcje :
- Przenoszenie elementu jako dziecko wskazanego elementu
- Przenoszenie dzieci
W przypadku przenoszenia dzieci, użytkownik powinien mieć możliwosćś wskazania, które dzieci chce przenieść (oraz oczywiście wybór elementu docelowego). Gdy wybrane są wszystkie dzieci, powinna istnieć możliwość oznaczenie flagi "Usuń rodzica", co spowoduje automatyczne usunięcie rodzica przenoszonych dzieci.
Dodać czytanie websocketa o zmianach struktury, gdy zmieni się struktura jednego z wyświetlanych elementów, należy go przenieść na dobre miejsce w drzewie - do zastanowienia się jak dokładnie ma to działać
Related issues
Associated revisions
refs #1705. Nie rozwijanie ostatniego node, brak expandera przy artykułach
refs #1705 UI zarządzanie strukturą
refs #1705 UI zarządzanie strukturą, dialog-tree
refs #1705 UI zarządzanie strukturą, ograniczenie wybierania
refs #1705 UI zarządzanie strukturą, dostosowanie pod przenoszenie
dzieci
refs #1705 UI zarządzanie strukturą, tłumaczenia
refs #1705 UI zarządzanie strukturą, wołanie backendu
refs #1705 poprawki context menu
refs #1705 poprawki modyfikacji struktury
refs #1705 poprawka zaznaczania elementu
refs #1705 obsługa sync z infoną
refs #1705 poprawa obsługi sync z infoną
refs #1705 obsługa sync z infoną, poprawa rozwiązania
refs #1705 ukrycie dokumentu w wyszukiwaniu do momentu zaindeksowania
zmiany rodzica
refs #1705 obsługa sync z infoną, poprawka ostatniej poprawki (przywrócenie możliwości dodawania czasopisma do bazy danych)
History
#1 Updated by Michał Komar over 7 years ago
- Follows Zadanie #1560: Oprogramowanie drzewa publikacji added
#2 Updated by Michał Komar over 7 years ago
- Follows Zadanie #1726: Obsługa operacji na strukturze added
#3 Updated by Michał Komar over 7 years ago
- Description updated (diff)
#4 Updated by Michał Komar over 7 years ago
- Assignee changed from Monika Maksymiuk to Michał Komar
#5 Updated by Michał Komar over 7 years ago
- Assignee changed from Michał Komar to Łukasz Waśkiewicz
#6 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Nowy to Testowanie
- % Done changed from 0 to 100
- Developer Łukasz Waśkiewicz added
- Tester Michał Komar added
#7 Updated by Łukasz Waśkiewicz about 7 years ago
- Assignee changed from Łukasz Waśkiewicz to Michał Komar
#8 Updated by Michał Komar about 7 years ago
- Assignee changed from Michał Komar to Jarosław Bąbel
- Tester Jarosław Bąbel added
#9 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
Można wybrać całą bazę danych jako cel dla przenoszonych zasobów¶
- kliknij na artykule "Przenieś dokument"
- pojawia się okno wyboru z drzewem
- zaznacz bazę danych i kliknij "Wybierz"
- Pojawia się okno "Błąd po stronie serwera"
Podwójne kliknięcie zasobu w oknie wyboru celu przenoszenia powoduje otwarcie podglądu tego zasobu w głównym oknie aplikacji "po spodem"¶
Wybranie zasobu w oknie wyboru celu przenoszenia czasem powoduje przewinięcie listy do góry i zniknięcie wybranego elementu z pola widzenia¶
- Kliknij "Przenieś dzieci dokumentu" dla czasopisma "Acta Scientiarum Polonorum. Oeconomiaa" w BazEkon (http://localhost:4200/editor/document/bwmeta1.element.ekon-element-issn-1644-0757/preview)
- W drzewie wyboru rozwiń węzeł tego czasopisma
- Przewiń na dół i kliknij na następnym czasopiśmie w drzewie wyboru
- Lista zostaje przewinięta do góry, a wybrane czasopismo znika na dole
Próba przeniesienia zasobu, który ma błąd w danych (nie waliduje się po otwarciu w UI) kończy się niepowodzeniem bez komunikatu. Jeżeli takie dane będą istniały w systemie, to przydałby się komunikat przy przenoszeniu.¶
Np. pierwszy artykuł z:
BazEkon -> Acta Scientiarum Polonorum. Oeconomiaa -> 9 (2010) -> nr 1
http://localhost:4200/editor/document/bwmeta1.element.ekon-element-000171198405/preview
Po przenoszeniu żółta belka zaznaczająca edytowany element pozostaje na stałe przy jednym elemencie¶
- Przygotować artykuł A i nr N, do którego można przenieść A
- Otworzyć edycję elementu X innego niż A i N
- Rozwinąć w drzewie rodzica A i N
- Przenieść A do N
- Poczekać aż A pojawi się w N
- Otworzyć edycję elementu Y (innego niż A, N, X)
- Belka pozostaje na X
Po przenoszeniu żółta belka zaznaczająca edytowany element znika¶
- Przygotować artykuł A i nr N, do którego można przenieść A
- Otworzyć edycję A
- Przenieść A do N
- Żółta belka znika (pojawia się informacja "dokument został zmieniony")
- Otworzyć edycję elementu Y (innego niż A, N)
- Brak żółtej belki na Y
- Kliknąć odśwież przy N,
- belka pojawia się na A
- kliknąć edycję Y - belka nadal zostaje na A
Przy przenoszeniu zasobu w konsoli pojawia się błąd¶
Błąd przetwarzania XML: nie znaleziono głównego elementu
Obszar: http://localhost:8080/api/structure/move/fd6dac44-8422-452f-9b1f-8642b2d0f7c6?deleteParent=false
Numer wiersza: 1, kolumna 1:
Nie widać, żeby powodował jakieś problemy.
Nie można przenieść numeru do rocznika jeżeli nie utworzono wolumenu¶
(niezależnie od przenoszenia dokumentów, w ogóle nie można dodać bezpośrednio numeru do rocznika)
Być może to nie jest błąd tylko kwestia konfiguracji hierarchii dla danej bazy i tak ma być?
Np. w BazEkon, czasopismo "Acta Scientiarum Polonorum. Oeconomiaa" nie ma wolumenów i nie da się przenosić numerów między rocznikami tego czasopisma.
Problemy z aktualizacją drzewa podczas przenoszenia elementów, nie wiadomo kiedy kończy się operacja przenoszenia¶
Zaraz po wykonaniu akcji przenieś drzewo jest aktualizowane, ale operacja nadal trwa w backendzie. Przyciski "odśwież" w drzewie pokazują aktualny stan przenoszenia. Użytkownik w oczekiwaniu na wynik przenoszenia może zacząć klikać "odśwież" na węzłach drzewa.
Przykład:- Przenieś artykuł A z numeru N1 do numeru N2
- A pojawia się w drzewie pod N2 i znika z N1
- kliknij odśwież na N1 i N2
- A pojawia się z powrotem w N1 i znika z N2
- Po zakończeniu przenoszenia, kliknięcie odśwież na N1 i N2 wyświetli A prawidłowo w N2
Podobnie, gdy przenosimy z usuwaniem rodzica - po odśwież rodzica znika skreślenie usuwanego elementu.
Podczas przenoszenia w drzewie mogą pojawić się "kopie" zasobów. Powstaje wtedy efekt "powiązania":Przykład:
- Przenieść artykuł A z N1 do N2
- Poczekać aż A pojawi się w miejscu docelowym N2
- Po zniknięciu A z N1, odświeżyć N1 (A pojawia się ponownie)
- Teraz mamy A w N1 i w N2
- Po kliknięciu na którąś kopię A zielona belka pojawia się dla obu kopii
- Akcje w drzewie są dublowane dla skopiowanych węzłów (np. rozwinięcie potomków)
Przy przenoszeniu elementów z wieloma potomkami i klikaniu odśwież elementy pojawiają się i znikają w zależności od etapu przenoszenia. Nie wiadomo, w którym momencie kończy się proces przenoszenia i czy to co widzimy w drzewie to końcowy efekt, czy tymczasowe położenie węzłów związane z odświeżaniem.
Pojawia się też "błąd połączenia" opisany w #1927, związany z usunięciem elementu, który nadal jest widoczny w drzewie (przez akcję odśwież).
Jeżeli uruchomimy kolejną akcję przenoszenia zanim zakończy się poprzednia to odświeżanie węzłów będzie też "psuło" drzewo w okienku, w którym wybieramy cel dla przenoszonych zasobów.
Jeśli poczekamy na zakończenie przenoszenia przez backend, to opisane problemy nie występują.
Na przenoszonych węzłach można wywoływać akcje przed zakończeniem przenoszenia.¶
Brak oznaczenia i blokowania przenoszonych węzłów powoduje, że można na nich wywoływać kolejne akcje przed zakończeniem przenoszenia np.: przenieś, usuń, dodaj nowy element. W połączeniu z akcją odśwież pokazującą częściowy stan przenoszenia zaczynają się pojawiać trudne do uchwycenia błędy:
m.in. natknąłem się na NPE w:
pl.edu.icm.jupiter.services.storage.hierarchy.HierarchyManagementServiceImpl.getAllowedChildTypes(HierarchyManagementServiceImpl.java:101)
Zdarzyło się też usunięcie całego czasopisma podczas usuwania numeru. Stało się, to na czasopiśmie, którego zawartość wielokrotnie przenosiłem i "psułem". Mogła to być moja pomyłka, ale wyglądało na "skumulowany podczas klikania" problem w UI (najpierw został skreślony usuwany element, dopiero potem całe drzewo).
Może też się zdarzyć puste okno edytora jeżeli edytujemy usuwanego rodzica.
Nie opisuję poszczególnych przypadków, bo trudno je wyłapać i opisać. Mają wspólne źródło i nie ma sensu ich katalogować.
Może przydało by się blokowanie ekranu aplikacji podczas przenoszenia (wtedy nie można nic popsuć i wiadomo, kiedy akcja się zakończyła)? Może wystarczy tylko implementacja #1691: Cache danych tymczasowych (tak jak w #1881)?
Według opisu zadania powinna być możliwość wybrania pojedynczych dzieci do przenoszenia, ale być może zostało ustalone ustnie, że tego nie robimy¶
#10 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Odpowiedź to W toku
#11 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from W toku to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Jarosław Bąbel
- Wybranie zasobu w oknie wyboru celu przenoszenia czasem powoduje przewinięcie listy do góry i zniknięcie wybranego elementu z pola widzenia
nie udało mi się odtworzyć
- Po przenoszeniu żółta belka zaznaczająca edytowany element pozostaje na stałe przy jednym elemencie
wystarczyło otworzyć okno w dodatkowym drzewem
- Nie można przenieść numeru do rocznika jeżeli nie utworzono wolumenu
jeśli konfiguracja hierarchii nie pozwala na dany element w docelowym miejscu to nie można go tam przenieść
- Według opisu zadania powinna być możliwość wybrania pojedynczych dzieci do przenoszenia, ale być może zostało ustalone ustnie, że tego nie robimy
ustaliliśmy z Michałem, że w pierwsze kolejności przenosimy wszystkie dzieci, ewentualnie później mieliśmy dorobić wybór
- przenoszone elementy są wyszarzane i nie powinno być możliwości uruchamiania na nich akcji, uruchamianie REST, jak ktoś będzie chciał przenieść ponownie element, który przed chwilą był przenoszony to elementy ostatecznie wyląduje w miejscu z ostatniej operacji przenoszenia
#12 Updated by Jarosław Bąbel about 7 years ago
- Status changed from Testowanie to Odpowiedź
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
- Można wybrać całą bazę danych jako cel dla przenoszonych zasobów
powyższy problem nadal występuje
Łukasz Waśkiewicz wrote:
- Wybranie zasobu w oknie wyboru celu przenoszenia czasem powoduje przewinięcie listy do góry i zniknięcie wybranego elementu z pola widzenia
nie udało mi się odtworzyć
problem występuje w Firefox (w Chrome działa dobrze)
- Po przenoszeniu żółta belka zaznaczająca edytowany element pozostaje na stałe przy jednym elemencie
wystarczyło otworzyć okno w dodatkowym drzewem
nie rozumiem odpowiedzi, co znaczy "otworzyć okno z dodatkowym drzewem"?
- przenoszone elementy są wyszarzane i nie powinno być możliwości uruchamiania na nich akcji, uruchamianie REST, jak ktoś będzie chciał przenieść ponownie element, który przed chwilą był przenoszony to elementy ostatecznie wyląduje w miejscu z ostatniej operacji przenoszenia
nie widzę, żeby elementy były wyszarzane, nadal można je usuwać, edytować, odświeżać itp. może coś źle robię po swojej stronie?
#13 Updated by Łukasz Waśkiewicz about 7 years ago
- Status changed from Odpowiedź to Testowanie
- Assignee changed from Łukasz Waśkiewicz to Jarosław Bąbel
- Wybranie zasobu w oknie wyboru celu przenoszenia czasem powoduje przewinięcie listy do góry i zniknięcie wybranego elementu z pola widzenia
duplikat #1928
- Po przenoszeniu żółta belka zaznaczająca edytowany element pozostaje na stałe przy jednym elemencie wystarczyło otworzyć okno w dodatkowym drzewem
chodziło mi ze wystarczy otworzyć okno przenoszenia, (kliknąć w context menu przenieś...) to już powodowało problem z drzewem nie było konieczności przenoszenia dokumentów
- przenoszenie dokumentów, przenoszone dokumenty są usuwane z wyników wyszukania dopóki wynik wyszukania w indeksie nie będzie wskazywał ze mają poprawnego rodzica
#14 Updated by Jarosław Bąbel about 7 years ago
- Assignee changed from Jarosław Bąbel to Łukasz Waśkiewicz
- jest jeszcze drobiazg związany z możliwością przeniesienia artykułu/zasobu do innej bazy danych - leci błąd po stronie serwera
- pierwszy odruch użytkownika po zleceniu przenoszenia, to klikanie na odśwież, żeby zobaczyć efekt operacji. Klikając kilka razy odśwież na docelowym węźle zaraz po uruchomieniu przenoszenia zasobu mamy taki efekt:
- nie widać zasobu
- pojawia się
- znika
- nie widać go aż do zakończenia operacji (ten punkt jest ok)
Mi się nadal wydaje, że nie było by nic złego w zablokowaniu całego ekranu podczas przenoszenia, a żeby było super można by pokazywać jakiś progres bar, albo informację w stylu "przeniesiono X dokumentów, pozostało Y", bazując na odpytywaniu Infony. Myślę, że przenoszenie to jest solidna porcja przetwarzania i trudno, żeby aplikacja w tym czasie działała dobrze.
#15 Updated by Łukasz Waśkiewicz about 7 years ago
samo moje ukrywanie to średnio można przyśpieszyć, ono jest zapięte na starcie publikacji, wcześniej idzie zapis + potwierdzenie i jak tu odświeżymy to dostaniemy zasób, tylko one działają na danych lokalnych i tu nie można ukrywać zasobów
blokada całego ekranu była by spoko dla jednego użytkownika ale jak było by ich kilku to już inni by mieli te problemy co my mamy + nasz użytkownik mógłbym kliknąć F5 przeładować aplikację i ominąć tą przesłonkę
i będzie też ten problem dla innych forkflow: przy uruchomieniu procesu publikacji (ten idzie zupełnie async) proces zapisze zasób do infony, skasuje CurrentDocument i mamy ten sam problem co teraz (różnica jest taka że po starcie publikacji użytkownik jest w innych ekranach i nie ma drzewa, ale jak by szybko klikał to mógłby tam dotrzeć podczas procesu)
jedyne co można zrobić to blokować częste odświeżanie ... ale nie ważne jak to zrobimy dokument przez chwile będzie w docelowym miejscu (Current) potem idzie publikacja (tu aktywuje sie moje ukrywanie) i jest kasowanie Current, wiec dokument i tak się pojawi i zniknie, można jak teraz usuwam dokument z listy wyników to zastępować go jakimś placeholderem typu "dokument w trakcie modyfikacji" zamiast go usuwać
a jak dokument jest widoczny to można go jeszcze po WS próbować zamienić ->
jak user ma widoczny dokument a ktoś inny coś z nim robi to można było by wysłać WS informacje ze dokument jest w trakcie publikacji i wszystkie dokumenty z taką flagą jakoś blokować
WS = WebSocket