j_kalendarz.aspx

Kalendarz jest podstawowym narzędziem wielu programów. Program SoftwareStudio udostępnia użytkownikom kalendarz przystosowany do użytkownika.

W domyślnym ustawieniu transakcja wyświetli pełen kalendarz.

W prawym górnym rogu znajdują się przyciski do przełączania pomiędzy widokami, z domyślnie wybranym widokiem tygodnia. Widok agendy jest jedynym który nie daje użytkownikowi możliwości dopisywania i edytowania wydarzeń.

W lewym górnym rogu znajdują się przyciski poruszania po kalendarzu. Strzałki będą zmieniały wyświetlany zakres z zależności od wybranego widoku. Podczas przeglądania pojedynczego dnia będą przeskakiwały o jeden dzień w przód lub w tył, przy widoku tygodnia lub agendy będą pozwalały na zmianę tygodnia, a przy widoku miesiąca o cały miesiąc.

Używanie kalendarza

Korzystanie z kalendarza jest bardzo proste. Aby dodać wydarzenie wystarczy kliknąć prawym przyciskiem myszy w wybrane miejsce w kalendarzu i wybrać Nowe wydarzenie, albo dwukrotnie kliknąć na wybrane miejsce. Otworzy to okienko i ustawi automatycznie datę i godzinę na wybraną z kalendarza. Można także przeciągając zaznaczyć jakiś obszar godzinowy a formularz ustawi godziny jakie wybraliśmy.

Klikając prawym przyciskiem myszy na istniejące zadanie można je usunąć albo edytować. Można także szybko przenosić albo przedłużać wydarzenia zwyczajnie przeciągając je.

Parametry

Transakcja przyjmuje jeden parametrem obowiązkowy – prx oraz jeden opcjonalny – lang

  • PRX – wskazuje na kolumnę PRX w tabeli x_kalendarz, która przechowuje całą konfigurację kalendarza
  • LANG – Parametr umożliwia zmianę języka. W przypadku braku parametru lub wartości PL język ustawiony będzie na polski, gdy parametr przyjmie jakąkolwiek inną wartość język zmieni się na angielski
  • Poza dwoma powyższymi parametrami można przekazać dowolną liczbę parametrów o nazwach takich, jak nazwy kolumn z tabeli calendar i dowolnymi wartościami.
    Przykład: description=ABC&login=rmeller – w efekcie kalendarz odfiltruje tylko wydarzenia, które dopisał uzytkownik o loginie rmeller oraz o wartości kolumny description ABC. Ponadto można przekazać wiele wartości jednej kolumny np. login=rmeller|pczyzak, w takim przypadku do zapytania wyświetlającego wydarzenia w kalendarzu dołożony zostanie warunek filtrujący login IN (‚rmeller’, ‚pczyzak’).

Konfiguracja

Zakładka Dane podstawowe.

  • Kod – kod PRX jednoznacznie identyfikujący wpis.
  • Nazwa kalendarza – pole do nadania nazwy dla tworzonego kalendarza.
  • Zapytanie – RESOURCES – podzapytanie do zapytania odnoszącego się do tabeli calendar. Ma ono za zadanie wskazanie miejsca, gdzie szukać opisów dla kodów obiektów zapisanych w calendar.RESOURCEID, a następnie wyświetlenie ich u dołu kalendarza jako legendę
    np. wskazanie, że opisy znajdują się w tabeli x_skorowidze

    (SELECT TOP(1) OPIS FROM x_skorowidze WHERE x_skorowidze.KOD=calendar.RESOURCEID AND x_skorowidze.PRX='KAL' AND x_skorowidze.AKTYWNE='1')
  • Warunek filtrowania danych – określenie parametrów jakie mają być przekazywane do DataTable, np. AKTYWNE=1 AND ACH=’1′
  • Lista możliwych widoków – lista, rozdzielonych przecinkiem możliwych do wyświetlenia widoków kalendarza np. dayView, weekView, monthView, agendaView, timelineDayView, timelineWeekView, timelineMonthView

  • Kolorystyka obiektów – za pomocą tej kolumny definiujemy kolorystykę obiektów – przyjmuje wartości: schema00, schema01,.., schema26 – domyślna wartość schema04

  • Sposób prezentacji danych – pozwala wybrać widok z jakim ma być wyświetlany standardowo kalendarz (np. tydzień) – przyjmuje jedną z wartości: dayView, weekView, monthView, agendaView, timelineDayView, timelineWeekView, timelineMonthView – domyślna wartość weekView
  • Godzina rozpoczęcia – godzina od której wyświetlany jest kalendarz (szare pole).
  • Godzina zakończenia – godzina do której wyświetlany jest kalendarz (szare pole).
  • Czas pracy od – godzina rozpoczęcia pracy (białe pole).
  • Czas pracy do – godzina zakończenia pracy (białe pole).
  • Aktywne – wpis konfiguracyjny musi być aktywny, aby był brany pod uwagę

Zakładka Uprawnienia.

  • Dodawanie wydarzeń – pole określające możliwość dodawania wydarzeń w kalendarzu za pomocą dwukliku lub opcji w menu kontekstowym
  • Usuwanie wydarzeń – pole określające możliwość usuwania wydarzeń w kalendarzu za pomocą opcji w menu kontekstowym
  • Edycja wydarzeń – pole określające możliwość edycji wydarzeń w kalendarzu za pomocą dwukliku lub opcji w menu kontekstowym
  • Edycja daty – przesuwanie – pole określające możliwość edytowania dat wydarzeń za pomocą przesuwania obiektów
  • Edycja daty – rozciąganie – pole określające możliwość edytowania dat wydarzeń za pomocą rozciągania obiektów
  • Menu kontekstowe – pole określające możliwość wyświetlania menu kontekstowego (włączanego prawym przyciskiem myszy). Domyślnie ustawiona na zezwalanie.
  • Wyświetl ToolTip – pole określające, czy nad zdarzeniem będzie wyświetlany tooltip. Domyślna wartość TAK.
  • Wyświetl Toolbar – pole określające możliwość wyświetlania górnego wiersz wyboru kalendarza i zmiany sposobu prezentacji danych (domyślnie TAK).
  • Wyświetl legendę – pole określające możliwość wyświetlania legendy (domyślnie TAK).
  • Pozycja legendy – pole określające położenie opisu zasobów, domyślnie na dole (bottom), można wyświetlać na górze (top).

Zakładka Zdarzenia.

  • Treść ToolTip – dodatkowe informacje o obiekcie w formie okna nad obiektem.
  • Treść pozycji 1 – treść wyświetlana w polach wydarzeń. Przykład:
(SELECT top(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDODN) +' '+(SELECT top(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDCRM)
  • Treść pozycji 2 – dodatkowa treść wyświetlana w polach wydarzeń. Przykład:
CONVERT(varchar(16), DATE_FROM, 120)+'\n'+CONVERT(varchar(16), DATE
    W celu pozostawienia pola pustego, należy wpisać w treści: ”

  • Skrypt przy zmianie (ScriptOnChange)- pozwala zdefiniować własny skrypt do wykonania, gdy użytkownik dokona zmiany w kalendarzu metodą drag and drop. Przykładowo:
     let cZapytanie = "INSERT INTO _historia (PRX, LOGIN, REFNO, NUMERDOK, TYTUL, UWAGI) VALUES ('MAW','@KTO','','"+refno+"','Zmiana terminu',(SELECT TOP(1) SUBSTRING(CONVERT(varchar(16), DATE_FROM, 120),1,17) + ' - ' + SUBSTRING(CONVERT(varchar(16), DATE_TO, 120),1,17) FROM calendar where refno="+refno+") + ' => " + dateFrom+" - "+dateTo+"')"; PageMethods.ssSQL(cZapytanie, 'softwarestudioConnectionString');

    Zapisuje w tabeli _historia każdą zmianę daty i czasu w kalendarzu.
    Gdy chcemy wysłać mail z powiadomieniem do użytkownika o zmianie terminu w kalendarzy użyć możemy polecenia:

    let ssZrodloUser = PobierzDataTable("select TOP(1) *, CONVERT(varchar(10), DATE_FROM, 120) AS DATA_OD, (SELECT TOP(1) NAZWA FROM KNKON WHERE NRIDODN=v_events.nridcrm) AS ODBIERAJACY , (SELECT TOP(1) OPIS FROM X_SKOROWIDZE WHERE PRX='MAG' AND AKTYWNE=1 AND KOD=v_events.RESOURCEID) AS MAGAZYN_OPIS, (SELECT TOP(1) MAIL FROM KNKON WHERE NRIDODN=v_events.NRIDODN) AS MAIL from v_events where refno=" + refno);let cSubject = "Zmiana awizacji magazyn CEVA LP:" + ssZrodloUser[0].MAGAZYN_OPIS;let cMailContent = "Szanowni Państwo<br/><br/><br/>Magazyn CEVA LP:" + ssZrodloUser[0].MAGAZYN_OPIS + "<br/>zmienił Państwa awizacje numer referencyjny: <b>" + refno + "</b><br/>Data: <b>" + ssZrodloUser[0].DATA_OD + " od:" + ssZrodloUser[0].TIME_FROM + " ("+dateFrom+") do:" + ssZrodloUser[0].TIME_TO + " ("+dateTo+")</b>";cMailContent += "<br/>Nr Zlecenia Produkcyjnego IFS / MM: <b>" + ssZrodloUser[0].NRAWIZO + "</b>";cMailContent += "<br/>Osoba odbierająca: <b>" + ssZrodloUser[0].ODBIERAJACY + "</b>";cMailContent += "<br/>Uwagi: <b>" + ssZrodloUser[0].UWAGI + "</b>";let cReplyTo = ssZrodloUser[0].MAIL;let cZapytanie = "INSERT INTO _send ([REFNO],[REFNO_TEMPLATE],[REFNO_GROUP],[SUBJECT],[MAIL_CONTENT],[REPLY_TO],[REPEAT],[ACH],[PRX],[KONTO_MAIL])";cZapytanie += " VALUES ";cZapytanie += "(" + refno + "," + refno + "," + refno + ",'" + cSubject + "','" + cMailContent + "','" + cReplyTo + "',1,'1','EML','CEV') ";cZapytanie += " INSERT INTO _task ([ROLASYS],[PRX],[REFNO],[REFNO_SEND],[TEMAT],[TRESC],[EMAIL],[STATUS],[LOGIN],[REPEAT], [NRIDODN])";cZapytanie += " VALUES ";cZapytanie += "('CEV','EML'," + refno + "," + refno + ",'" + cSubject + "','" + cMailContent + "','" + cReplyTo + "','','@KTO',1, " + ssZrodloUser[0].NRIDODN + ") ";PageMethods.ssSQL(cZapytanie, 'softwarestudioConnectionString');
  • Skrypt na start (ScriptOnLoad) pozwala zdefiniować jaki skrypt JS ma być wykonany po załadowaniu kalendarza.
    $(".ssTextBoxSearch").hide();$("#scheduler").jqxScheduler({min: new $.jqx.date('todayDate').addDays(1),
    max: new $.jqx.date('todayDate').addDays(20)
    });
  • Szerokość okna – szerokość okna, które ma wyświetlać się przy edycji/dodaniu wydarzenia – domyślna wartość 600
  • Wysokość okna – wysokość okna, które ma wyświetlać się przy edycji/dodaniu wydarzenia – domyślna wartość 400
  • Nowe zdarzenie – transakcja, która ma być wywołana przy próbie dodania nowego eventu.
    Aby przekazać do transakcji j_insert_update zaznaczony przedział czasu dla którego chcemy dodać nowe wydarzenie

Legenda
należy do wywołania j_insert_update dodać parametry all_day_event=@ALLDAY&date_from=@DATAOD&date_to=@DATADO oraz podpiąć skrypt script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady(), który podstawi do kontrolek o nazwach all_day_event, date_from, date_to wartości odczytane z kalendarza. Zaleca się też użycie parametru return=ZamknijOknoJqx aby po zapisie program zamknął okno z transakcją. Przykład wartości dla pola Nowe zdarzenie:

../role_sys/j_insert_update.aspx?kodtransakcji=ADD_CALENDAR_EVENT&leftpanelwidth=0&anuluj=0&return=ZamknijOknoJqx&script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady()&all_day_event=@ALLDAY&date_from=@DATAOD&date_to=@DATADO&refno=@REFNO

Przykład konfiguracji zestawienia ADD_CALENDAR_EVENT

  • Edycja zdarzenia– transakcja, która ma się wywołać podczas edycji zdarzenia. Należy użyć zmiennej @REFNO
    ../role_sys/j_insert_update.aspx?kodtransakcji=ADD_CALENDAR_EVENT&leftpanelwidth=0&anuluj=0&return=ZamknijOknoJqx&script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady()&refno=@REFNO
  • Orientacja – pole określające czy będzie jeden kalendarz dla wszystkich obiektów (zasobów) – wartość domyślna: ‚none‚. Alternatywnie można podać ‚vertical’ lub ‚horizontal’, wówczas tworzonych jest wiele kalendarzy, zależnie od zasobu.
  • Szerokość kolumny zasobów – dla widoków o ustalonej orientacji (Orientation=vertical lub horizontal) możemy definiować własną szerokość wiersza, wartość 0 jako domyślna oznacza, że program sam dobierze optymalna szerokość.
  • Wysokość kolumny zasobów – dla widoków o ustalonej orientacji (Orientation=vertical lub horizontal) możemy definiować własną wysokość wiersza, wartość 0 jako domyślna oznacza, że program sam dobierze optymalna wysokość.
  • Wysokość zasobów – określa wysokość wiersza dla widoków o orientacji nieokreślonej (orientation=none).

Konfiguracja za pomocą tabeli SQL_ x_kalendarz.

  • AKTYWNE – wpis konfiguracyjny musi być aktywny, aby był brany pod uwagę
  • PRX – jednoznacznie identyfikuje wpis
  • DefaultStyleMode – za pomocą tej kolumny definiujemy kolorystykę obiektów – przyjmuje wartości: schema00, schema01,.., schema26 – domyślna wartość schema04

  • EventsParameters – definiowanie dodatkowych filtrów do zapytania do tabeli calendar, w której przechowywane są eventy. Pozwoli to na wyświetlanie w kalendarzu odpowiednio ograniczonej liczby wpisów. Domyślną filtracją jest filtracja po kolumnach dataod datado. Możemy dołożyć dowolną inną np LOGIN=’@KTO’ AND PRX=’TEST’
  • SelectedViewMode – pozwala wybrać widok z jakim ma być odpalany kalendarz (dzień, tydzień miesiąc) – przyjmuje jedną z wartości: dayView, weekView, monthView, agendaView, timelineDayView, timelineWeekView, timelineMonthView – domyślna wartość weekView

  • AllowAdd – kolumna bitowa oznaczająca, czy ma być możliwość dodawania nowych eventów za pomocą dwukliku lub opcji w menu kontekstowym
  • AllowEdit – kolumna bitowa oznaczająca, czy ma być możliwość edytowania eventów za pomocą dwukliku lub opcji w menu kontekstowym
  • AllowMove – kolumna bitowa oznaczająca, czy ma być możliwość edytowania daty eventów za pomocą przesuwania obiektu
  • AllowResize – kolumna bitowa oznaczająca, czy ma być możliwość edytowania daty eventów za pomocą rozciągania obiektu
  • AllowDelete – kolumna bitowa oznaczająca, czy ma być możliwość usuwania eventów za pomocą opcji w menu kontekstowym
  • AddingUrl – transakcja, która ma być wywołana przy próbie dodania nowego eventu.
    Aby przekazać do transakcji j_insert_update zaznaczony przedział czasu dla którego chcemy dodać nowe wydarzenie
    Legenda
    należy do wywołania j_insert_update dodać parametry all_day_event=@ALLDAY&date_from=@DATAOD&date_to=@DATADO oraz podpiąć skrypt script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady(), który podstawi do kontrolek o nazwach all_day_event, date_from, date_to wartości odczytane z kalendarza. Zaleca się też użycie parametru return=ZamknijOknoJqx aby po zapisie program zamknął okno z transakcją.Przykład wartości dla kolumny AddingUrl

    ../role_sys/j_insert_update.aspx?kodtransakcji=ADD_CALENDAR_EVENT&leftpanelwidth=0&anuluj=0&return=ZamknijOknoJqx&script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady()&all_day_event=@ALLDAY&date_from=@DATAOD&date_to=@DATADO&refno=@REFNO

    Przykład konfiguracji zestawienia ADD_CALENDAR_EVENT

  • EditingUrl – transakcja, która ma sie wywołać podczas edycji eventu. Należy użyć zmiennej @REFNO
    ../role_sys/j_insert_update.aspx?kodtransakcji=ADD_CALENDAR_EVENT&leftpanelwidth=0&anuluj=0&return=ZamknijOknoJqx&script=../role_sys/j_kalendarz_script&scriptonready=MojaOnReady()&refno=@REFNO
  • FRAME_W – szerokość okna, które ma wyświetla się przy edycji/dodaniu wydarzenia – domyślna wartość 600
  • FRAME_H – wysokość okna, które ma wyświetla się przy edycji/dodaniu wydarzenia – domyślna wartość 400
  • RESOURCES – podzapytanie do zapytania odnoszącego się do tabeli calendar. Ma ono za zadanie wskazanie miejsca, gdzie szukać opisów dla kodów obiektów zapisanych w calendar.RESOURCEID, a następnie wyświetlenie ich u dołu kalendarza jako legendę
    np. wskazanie, że opisy znajdują się w tabeli x_skorowidze

    (SELECT TOP(1) OPIS FROM x_skorowidze WHERE x_skorowidze.KOD=calendar.RESOURCEID AND x_skorowidze.PRX='KAL' AND x_skorowidze.AKTYWNE='1')
  • VIEWS – lista, rozdzielonych przecinkiem możliwych do wyświetlenia widoków. Obsługiwane wartośći dayView, weekView, monthView, agendaView, timelineDayView, timelineWeekView, timelineMonthView
  • START_HOUR – godzina od której wyświetlany jest kalendarz.
  • END_HOUR – godzina do której wyświetlany jest kalendarz.
  • START_WORK – godzina rozpoczęcia pracy (białe pole).
  • END_WORK – godzina zakończenia pracy (białe pole).
  • AllowContexMenu – kolumna bitowa pozwalająca na wyświetlanie menu kontekstowego (włączanego prawym przyciskiem myszy). Domyślnie ustawiona na zezwalanie.
  • AppointmentTooltips – kolumna bitowa określająca, czy nad zdarzeniem będzie wyświetlany tooltip. Domyślna wartość TAK.
  • ShowToolbar – kolumna bitowa określająca, czy będzie wyświetlany górny wiersz wyboru kalendarza i zmiany sposobu prezentacji danych (domyślnie TAK).
  • ShowLegend – kolumna bitowa określająca, czy legenda ma być widoczna (domyślnie TAK).
  • LegendPosition – kolumna bitowa określająca położenie opisu zasobów, domyślnie na dole (bottom), można wyświetlać na górze (top).
  • ReadyFunction – nie używane
  • Orientation – określa czy będzie jeden kalendarz dla wszystkich obiektów (zasobów) – wartość domyślna ‚none’. Alternatywnie można podać ‚vertical’ lub ‚horizontal’, wówczas tworzonych jest wiele kalendarzy, zależnie od zasobu.
  • ResourceColumnWidth – dla widoków o ustalonej orientacji (Orientation=vertical lub horizontal) możemy definiować własną szerokość wiersza, wartość 0 jako domyślna oznacza, że program sam dobierze optymalna szerokość.
  • ResourceRowHeight – dla widoków o ustalonej orientacji (Orientation=vertical lub horizontal) możemy definiować własną wysokość wiersza, wartość 0 jako domyślna oznacza, że program sam dobierze optymalna wysokość.
  • RowsHeight – określa wysokość wiersza dla widoków o orientacji nieokreślonej (orientation=none).
  • ToolTip – dodatkowe informacje o obiekcie w formie okna nad obiektem.
  • CalendarTekst– treść wyświetlana w polach wydarzeń. Przykład:
(SELECT top(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDODN) +' '+(SELECT top(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDCRM)
  • LocationTekst – dodatkowa treść wyświetlana w polach wydarzeń. Przykład:
CONVERT(varchar(16), DATE_FROM, 120)+'\n'+CONVERT(varchar(16), DATE
    W celu pozostawienia pola pustego, należy wpisać w treści: ”

  • ScriptOnChange – pozwala zdefiniować własny skrypt do wykonania, gdy użytkownik dokona zmiany w kalendarzu metodą drag and drop. Przykładowo:
    let cZapytanie = „INSERT INTO _historia (PRX, LOGIN, REFNO, NUMERDOK, TYTUL, UWAGI) VALUES (‚MAW’,’@KTO’,”,'”+refno+”‚,’Zmiana terminu’,(SELECT TOP(1) SUBSTRING(CONVERT(varchar(16), DATE_FROM, 120),1,17) + ‚ – ‚ + SUBSTRING(CONVERT(varchar(16), DATE_TO, 120),1,17) FROM calendar where refno=”+refno+”) + ‚ => ” + dateFrom+” – „+dateTo+”‚)”; PageMethods.ssSQL(cZapytanie, ‚softwarestudioConnectionString’);
    Zapisuje w tabeli _historia każdą zmianę daty i czasu w kalendarzu.

Problem z wyświetlaniem danych w kalendarzu

Może się zdarzyć taka sytuacja, że pomimo prawidłowej konfiguracji kalendarza przestanie on nagle wyświetlać dane, a po wywołaniu transakcji widoczna jest tylko ikonka Proszę czekać. W takim wypadku istnieje spore prawdopodobieństwo, że do tabeli calendar lub dpmaw został wpisany znak, którego transakcja nie potrafi obsłużyć. Do takich znaków niewątpliwie należą znaki: pionowej kreski (|), cudzysłowia („), ukośnika (\). Aby zabezpieczyć problem z wyświetlaniem danych w kalendarzu możemy zamieniać kłopotliwe znaki na wartość pustą korzystając z funkcji REPLACE.

Przykładowo:

Treść ToolTip wynika z zapytania:

(SELECT TOP(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDODN ) + (SELECT TOP(1)  ‚\nAwizo:’ + NRAWIZO + ‚\nAuto: ‚ + NRAUTA + ‚\nLP:’ + ISNULL(NRDOKUMENTU,”) FROM dpmaw WHERE REFNO=calendar.REFNO)

Funkcją Replace zamieniamy kłopotliwe znaki, a więc cudzysłowiu („), pionowej kreski (|) i ukośnika (\) na puste znaki

(SELECT TOP(1) SKROCO FROM KNKON WHERE NRIDODN=calendar.NRIDODN ) + (SELECT TOP(1) replace(replace(replace(‚\nAwizo:’ + NRAWIZO + ‚\nAuto: ‚ + NRAUTA + ‚\nLP:’ + ISNULL(NRDOKUMENTU,”), ‚”‚, ”), ‚|’, ”), ‚\’, ”) FROM dpmaw WHERE REFNO=calendar.REFNO)

Zmiany zapytania w razie potrzeby należy także dokonać w polach Treść pozycji 1 i Treść pozycji 1.

 

Kolorystyka schematów kalendarzy:

 schema01

schema02

schema03

schema04

schema05

schema06

schema07

schema08

schema09

schema10

schema11

schema12

schema13

schema14

schema15

schema16

schema17

schema18

schema19

schema20

schema21

schema22

schema23