logo-softwarestudio-2020-600

timeline.aspx

System YMS

Wiele informacji w bazie programu StudioSystem rejestrowanych jest w formie zdarzeń powiązanych określonym w czasie. Jeżeli wydarzenia takie chcemy zaprezentować użytkownikowi na osi czasu z możliwością podglądu lub przejścia do konkretnego wydarzenia to należy skorzystać z transakcji timeline.aspx.

System YMS

Transakcja działa w oparciu o konfigurację skorowidza TIMLN.

Przykład konfiguracji i wygląd transakcji timeline.aspx

Wygląd (kształt, rozmiar, kolory ) prezentowanych danych można dowolnie zmienić za pomocą poleceń CSS, wyjątkiem jest górny pasek wyszukiwarki i pionowy pasek osi czasu.

Obiekty znajdujące się na liście wyników to:

  • Grupa – dane grupujące wyniki, zwykle na osi czasu będzie to data, ale można zastosować dowolną informację grupującą np. nazwę towaru, kontrahenta, miejscowość lub dowolną inną wielkość
  • Opis zdarzenia składający się z dwóch elementów: tytuł (pierwsza linia) i opis (druga linia)
  • Przycisk lub link do polecenia- pozwala na interakcję  z użytkownikiem do wyświetlenia np. okna ze szczegółami zdarzenia (rekordu)

Uruchomienie

Transakcję uruchamia się z folderu /role_sys/timeline.aspx z parametrem wymaganym KOD

np.

/role_sys/timeline.aspx?kod=CRM

gdzie wartość parametru KOD to oznaczenie kodu ze skorowidza TIMLN

timln

Skorowidz TIMLN

Standardowo skorowidz uruchamiany z poziomu modułu administratora,

Kolumny do wypełnienia

Kod

Unikalny identyfikator pozycji skorowidza przechowujący informacje dotyczące konfiguracji, kod przekazywany jest przy uruchomieniu transakcji

Warunek wyszukiwarki

W kolumnie podajemy metodę w jaki sposób dane mają być ograniczane (odszukiwane) jeżeli użytkownik wpisuje coś w polu wyszukiwarki.

Warunek podajemy ze zmienną $$SearchString która oznacza znaki wprowadzane przez użytkownika, przykładowo:

tytul like '%$SearchString%'

wyniki będą filtrowane tylko pozycje, które w kolumnie tytul zawierają znaki wpisane przez użytkownika

tytul like '%$$SearchString%’ or convert(nvarchar(10), ddowod, 23) like '%$$SearchString%’

wyniki będą filtrowane tylko pozycje, które w kolumnie tytul lub kolumnie ddowod zawierają znaki wpisane przez użytkownika

Styl

Definiuje w jaki sposób ma być prezentowana pojedyncza informacja na osi czasu np.

width:500px; margin:10px; margin-left:60px; background-color: #DFEDFF; padding:5px; webkit-border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px;

 Zapytanie

Zawierać musi kolumny, które tworzyć będą obiekty umieszczane na ekranie. Kolumny o określonych nazwach są wymagane i program sprawdza czy takie występują w zapytaniu.

  • grupa
  • tytul
  • opis
  • link

Przykładowo:

SELECT ROW_NUMBER() OVER(ORDER BY kiedy desc) AS NUMBER, convert(nvarchar(10), ddowod, 23) as grupa, tytul, UWAGI as opis, '<div class="art-button art-buttonSiberia" style="margin-left: 400px !important;width: 100px;" onclick="JqxiFrame(''Spotkanie'', ''../role_sys/j_tab.aspx?GRUPA=WIZ&refno='+upper(refno)+' '')">Szczegóły</div>' as link FROM dpcrm

Zwróć uwagę na wartość kolumny link, która zawiera definicję przycisku akcji

'<div class=”art-button art-buttonSiberia” style=”margin-left: 400px !important;width: 100px;” onclick=”JqxiFrame(”Spotkanie”, ”../role_sys/j_tab.aspx?GRUPA=WIZ&refno=’+upper(refno)+’ ”)”>Szczegóły</div>’

na który skład się obiekt <div> z klasą formatującą art-button art-buttonSiberia

style pozwala nam przesunąć przycisk na prawo o 400px, i ustawia jego szerokość na 100px.

Ponadto dodajemy do przycisku polecenie onclik i definiujemy co ma się wydarzyć, możemy użyć dowolnej funkcji javascript wchodzącej w skład StudioSystem. Ja użyłem w tym przykładzie wywołanie funkcji

JqxiFrame, która przyjmuje dwa parametry:

  • tytuł okna („Spotkanie”)
  • wskazanie transakcji jaka ma być w tym oknie wyświetlona („../role_sys/j_tab.aspx?GRUPA=WIZ&refno=’+upper(refno)+’ '”)

upper(refno) zapewnia przekazanie wartości identyfikatora wiersza danego zdarzenia.

timeline szczegoly
timeline okno

Ilość wierszy

Parametr wskazuje ile wierszy ma być pobieranych za pierwszym każdym kolejnym razem gdy użytkownik przesunie ekran na dół strony. Ponieważ pobierani danych powiązane jest z akcją przesunięcia strony, to minimalne ustawienie ilości musi zapewnić, aby pierwsza ilość danych wypełniła ponad całą stroną. Zalecany wartość parametru ilość wierszy to od 10 do 50.

Dodatkowy filtr

Dane pobierane do wyników możemy ograniczyć za pomocą dodatkowego stałego warunku np. oddział, rola, magazyn, komórka, login itp.

Styl grupy

Definiujemy sposób prezentowania danych stanowiących grupę. Przykładowo:

width:100%; padding:10px; font-size:30px;background-color: lightsteelblue

Okno Szukaj

W górnej części okna transakcji wyświetlane jest okienko pozwalające na wyszukiwanie wyników. Ponieważ zapytania są dowolnie konfigurowane tak samo należy ustawić metodę jaka będzie realizowana, aby odszukać wyniki. W tym celu należy zdefiniować w skorowidzu TIMLN kolumnę WARUNEK WYSZUKIWARKA, można zdefiniować dowolne prawidłowe zapytanie pamiętając że zmienna $$SearchString reprezentuje ciąg znaków wprowadzony przez użytkownika.

Przykłady

Ankiety

SELECT ROW_NUMBER() OVER(ORDER BY kiedy desc) AS NUMBER, convert(nvarchar(10), kiedy , 23) as grupa, tytul, opis, '<div class="art-button art-buttonSiberia" style="margin-left: 700px !important;width: 100px;" onclick="window.location.href = ''../role_sys/x_ankieta.aspx?refno='+upper(refno)+' ''">Wypełnij ankietę</div>' as link FROM x_ankiety

dpdok

SELECT ROW_NUMBER() OVER(ORDER BY id_dpdok desc) AS NUMBER, convert(nvarchar(10), ddowod, 23) as grupa, tytul, (nrsprawy + ' ' + tagi + '' + convert(nvarchar(10), kiedy, 20)) as opis, '<div class="art-button art-buttonSiberia" style="margin-left: 400px !important;width: 100px;" onclick="JqxiFrame(''Spotkanie'', ''../role_sys/j_tab.aspx?GRUPA=WIZ&refno='+upper(refno)+' '')">Szczegóły</div>' as link FROM dpdok

crm

SELECT ROW_NUMBER() OVER(ORDER BY kiedy desc) AS NUMBER, convert(nvarchar(10), ddowod, 23) as grupa, tytul, UWAGI as opis, '<div class="art-button art-buttonSiberia" style="margin-left: 400px !important;width: 100px;" onclick="JqxiFrame(''Spotkanie'', ''../role_sys/j_tab.aspx?GRUPA=WIZ&refno='+upper(refno)+' '')">Szczegóły</div>' as link FROM dpcrm

Parametr opcjonalny galeria

Ustawienie parametru galeria=1 pozwala na włączenie podglądu dla obrazów znajdujących się w opisie. Kliknięcie dowolnego obrazu w opisie otworzy przyjemny dla użytkownika podgląd wszystkich obrazów.

galeria

Parametr opcjonalny more

timeline okno

Parametr more=1 sprawdza, czy w tekście pojawia się ciąg znaków /*MORE*/ – jeżeli tak, to użytkownikowi prezentowana jest tylko część treści (do znacznika /*MORE*/), ciąg dalszy treści może być dostępny po naciśnięciu przycisku więcej. W przypadku, gdy ciąg znaków /*MORE*/ nie występuje w opisie, wyświetlany jest cały tekst, a przycisk więcej nie jest wyświetlany.

timeline okno

Filtry CheckBox

Dodatkowe filtry typu CheckBox umożliwiają w szybki sposób na odfiltrowanie danych za pomocą jednego kliknięcia.

Konfiguracja

Wywołanie transakcji

Dodatkowym parametrem, który należy przekazać jest parametr filtry=KOD, gdzie KOD oznacza kolumne KOD skorowidza TIMLF

/role_sys/timeline.aspx?kod=ABC&filtry=ABC

Skorowidz TIMLF

Do konfiguracji filtrów CheckBox służy specjalnie do tego przygotowany skorowidz TIMLF. Pola skorowidza:

  • Kod – kod identyfikujący grupę filtrów, które mają zostać zbudowane
  • Opis – treść, która ma się wyświetlać przy CheckBox’ie np.
    < img src='/images_s/32x32/led_red.png' style='width:24px;height:24px'/> Bardzo ważne
  • Zapytanie filtr – zapytanie filtrujące, jakie ma się wykonać po naciśnieciu CheckBoxa np.
    (SELECT TOP(1) OPIS FROM x_skorowidze WHERE x_skorowidze.KOD=dpuwa.TEMAT AND PRX='FLG' AND KOD1='EDYTOR' AND AKTYWNE='1') like '%Bardzo ważne%'
  • Kolejność – kolejność w jakiej CheckBox’y zostaną zbudowane
timeline okno
timeline okno
timeline okno
timeline okno

Wyszukiwarka i filtry

timeline okno

Aby przenieść wyszukiwarkę i filtry z górnej belki na prawą stronę należy dodać parametr right=1

 

Potwierdzenie przeczytania

Timeline może być sortowany według tego czy post został przeczytany przez użytkownika. Wymaga to zmian w konfiguracji timeline i edytora.

Pole sortowania z prostego:

SELECT ROW_NUMBER() OVER(ORDER BY kolumna_sort desc) AS NUMBER

Powinno zostać rozbudowane do:

SELECT ROW_NUMBER() OVER(ORDER BY CASE WHEN POTWIERDZENIE='0' THEN '1' ELSE CASE WHEN EXISTS(SELECT TOP(1) REFNO FROM _read WHERE _read.REFNO=dpuwa.REFNO AND PRX='TML' AND USERNAME='@KTO') THEN '1' ELSE '0' END END, kolumna_sort desc) AS NUMBER

Gdzie kolumna POTWIERDZENIE to kolumna która przechowuje informację, czy dany post wymaga potwierdzenia. dpuwa w tym przypadku to tabela, która przechowuje post, a REFNO to jej klucz domyślny.

Tabla _read przechowuje informację o tym czy użytkownik potwierdził przeczytanie wiadomości.

Do parametrów konfiguracyjnych należy dodać tab=TABELA&kol=KOLUMNA&id=KLUCZ_TABELI – w naszym przypadku wyglądałoby to tak: tab=dpuwa&kol= POTWIERDZENIE&id=REFNO – te informacje są niezbędne aby z poziomu timeline pobrać informację o przeczytaniu każdego z postów.

Konfiguracja edytora

Transakcja editor.aspx musi być odpowiednio przygotowana do obsługi potwierdzeń przeczytania.

Jako Przyciski polecenia trzeba dopisać wartość ’potwierdzenie’

Dodatkowo jeżeli umieścimy w treści znacznik /*ACCEPT*/ zostanie on zamieniony na checkbox jeżeli użytkownik odczytał już wiadomość.