Informacje o wersji 1.12.0.0 z dn. 09-10-2023
Ważne informacje
Zapowiedź: Wycofanie obsługi organizacji
W wersji 1.13 planowane jest ostateczne wycofanie obsługi organizacji z platformy nAxiom. Ten krok był zapowiadany od dłuższego czasu. Nie będzie dostępny interfejs do tworzenia nowych organizacji, nie będzie można przypisywać organizacji użytkownikowi, zostanie wycofana obsługa kontrolki organizacje, a domyślnie generowany formularz nie będzie miał kontrolki do obsługi tego pola. Zostanie także usunięte sprawdzanie czy użytkownik ma przypisaną organizację, np. podczas tworzenia struktury organizacyjnej.
W celu zapewnienia kompatybilności wstecznej w istniejących bazach danych pozostawione zostaną tabela core.Organizations i kolumna Organization w tabelach modeli danych oraz lista wyboru organizacji na istniejących formularzach.
Wobec planowanego wycofania obsługi organizacji zaleca się przegląd aplikacji biznesowych pod kątem tej zmiany w celu zapewnienia ich prawidłowego działania po aktualizacji do wersji 1.13.
Zmiana roli Administrator na biznesową
Zmieniono typ roli Administrator z systemowej (core.Roles.Type = 0) na biznesową (core.Roles.Type = 1). W nowych instalacjach nAxiom ta rola biznesowa jest tworzona domyślnie z takimi samymi uprawnieniami jak dotychczas.
W istniejących instalacjach profilom użytkowników, które miały przypisaną tę rolę, zostaje przypisana rola systemowa Klient. Rola Administrator pozostaje przypisana jako rola biznesowa.
W związku z powyższą zmianą licencja nAxiom nie ma już pozycji USER_ADMIN. W istniejących instalacjach dotychczasowa liczba licencji na rolę Administrator zostaje dodana do liczby licencji na rolę Klient.
Jeśli w istniejących aplikacjach używano referencji do typu roli Administrator (core.Roles.Type), konieczne jest uwzględnienie zmiany tej wartości z 0 na 1.
Usunięcie kolumn z tabeli core.AclInstanceEntries
Ze względu na nieprawidłowe dane zwracane przez funkcję UserTask_View, z tabeli core.AclInstanceEntries usunięto kolumny TaskOwnerUserId i TaskOwnerName. Dane właściciela zadania są nadal zwracane przez funkcję UserTask_View, ale obecnie są pobierane z tabel dokumentów.
Konieczna jest modyfikacja własnych rozwiązań konsultantów w istniejących aplikacji biznesowych, które pobierają dane z kolumn TaskOwnerUserId i TaskOwnerName w tabeli core.AclInstanceEntries.
Wymagania WCAG 2.1, poziom AA
Wprowadzono szereg zmian w kodzie HTML aplikacji FrontSPA w celu spełnienia wymagań WCAG 2.1 na poziomie AA. Zmiany obejmują między innymi nawigację za pomocą klawiatury oraz obsługę aplikacji przez czytniki ekranu.
W ramach tych zmian dodano także menu skrótów, które pozwala pominąć część elementów strony w nawigacji przy użyciu klawiszy TAB i przejść od razu do żądanej sekcji. Menu jest wyświetlane po pierwszym naciśnięciu klawisza TAB po przeładowaniu strony i zawiera trzy pozycje przełączane klawiszem TAB:
Przejdź do menu głównego
Przejdź do nagłówka strony
Przejdź do treści strony
W celu wybrania polecenia należy nacisnąć klawisz Enter.
Wskazówka: Akcja generowania raportu
Próba wygenerowania raportu przy użyciu akcji przypisanej do przejścia między blokiem startowym i pierwszym blokiem ze statusem nie powiedzie się ze względu na blokadę tabeli zakładaną przez transakcję wstawiającą nowy rekord.
Aby pominąć tę blokadę należy w zapytaniu źródłowym dla raportu dodać instrukcję WITH(NOLOCK). Na przykład:
SELECT * FROM dbo.tableName
WITH(NOLOCK)
Nowe i zmodernizowane funkcje
Nowy tryb otwierania formularza
Opracowano nowy tryb otwierania formularza: Panel boczny. W tym trybie formularz jest otwierany jako panel zadokowany do prawej strony okna przeglądarki. Ten tryb jest przewidziany do wyświetlania formularza po kliknięciu rekordu na liście. Aby umożliwić otwarcie formularza w tym trybie, w definicji listy (karta Ustawienia listy
) dodano przełącznik Wywołaj akcje po interakcji z rekordem listy
. Jego włączenie powoduje wyświetlenie komponentu do wyboru akcji, w którym można zdefiniować odpowiednią akcję otwierania formularza.
Sekwencja akcji zdefiniowanych dla zdarzenia interakcji będzie wywoływana po kliknięciu w dowolnej kolumnie, z wyjątkiem kolumny akcji i kolumny checkbox.
Zarządzanie pulpitami
Zmieniono sposób zarządzania pulpitami (dashboard) w aplikacji FrontSPA. Obecnie z lewej strony nagłówka znajduje się lista rozwijana z definicjami pulpitów. Ta lista zawiera także polecenie Lista pulpitów
oraz, o ile bieżący użytkownik jest właścicielem bieżącego pulpitu, polecenie Edytuj bieżący pulpit
.
Lista pulpitów to lista zdefiniowanych pulpitów, na której użytkownik może zarządzać zdefiniowanymi pulpitami (kopiować, edytować metadane, usuwać, ustawiać jako pulpit domyślny). W trybie edycji pulpitu użytkownik może zarządzać widżetami na pulpicie i zmieniać układ pulpitu.
Ponadto przygotowano aplikację demo z różnymi typami widżetów wykorzystującymi nowe opcje konfiguracji przycisków, formatowanie warunkowe kolumny HTML oraz wykresy z biblioteki Chart.js.
Aplikacja jest dostępna w repozytorium wersji w katalogu aplikacji demo.
Nowe opcje widżetów
Dodano szereg ustawień umożliwiających dostosowanie wyświetlania widżetów, w tym widżetów formularzy z sekcją typu lista. Te ustawienia to:
- Widżety (wszystkie rodzaje, karta
Ogólne
):-
Minimalna wysokość widżetu w unitach
: dostępne wartości 1 unit, 2 unity, bez ograniczeń. 1 unit odpowiada mniej więcej 1/3 wysokości obszaru pulpitu w aplikacji FrontSPA dla rozdzielczości FullHD. -
Pokazuj toolbar widżetu
: pozwala wyłączyć pasek z nazwą widżetu i ikoną do zmiany parametrów (o ile widżet ma zdefiniowane parametry); w przypadku widżetu formularz jest to sekcja toolbar.
-
- Sekcja typu lista (okno
Ustawienia sekcji
):-
Wymuś wyświetlanie listy w trybie mobilnym
: stosuje ustawienia trybu mobilnego do wyświetlania listy. -
Wyświetlaj nazwę kolumn listy w tej sekcji
: pozwala wyłączyć wyświetlanie nazw kolumn w sekcji. Wymuś wyświetlanie przycisków kolumny akcji jeden nad drugim
-
Pokazuj w paginatorach liczbę kart i nawigację między kartami (jeżeli włączono paginację)
: pozwala ograniczyć informacje wyświetlane na pasku paginacji pod listą.
-
Obsługa chart.js w sekcji HTML
W sekcji HTML na formularzu i w widżecie sekcja HTML dodano obsługę biblioteki chart.js. Patrz chartjs.org/docs/latest/. Wykres jest generowany przez kod JavaScript w elemencie canvas. Na wykresie można prezentować dane zwracane przez zapytanie SQL. W tym celu w kodzie JavaScript wykresu należy zadeklarować zmienną dla każdej etykiety i/lub wartości prezentowanej na wykresie. Deklaracja zmiennej musi mieć formę:
var nazwaZmiennej = window["kodFormularza_QueryModel"][nr-rekordu].nazwaKolumny;
gdzie: kodFormularza to kod bieżącego formularza (w przypadku widżetu sekcja HTML należy podać kod pulpitu, na którym widżet ma być używany, w widżecie typu formularz należ podać kod formularza), nr-rekordu to numer rekordu (liczony od 0) zwróconego przez zapytanie, a nazwaKolumny to nazwa kolumny, z której ma zostać podstawiona wartość.
Przykładowa deklaracja prostego wykresu to:
HTML:
<div>
<canvas id="myChart"></canvas>
</div>
SQL:
SELECT 200 AS SalesEurope
,400 AS SalesAsia
JavaScript:
var ctx = document.getElementById('myChart');
var value1 = window["formCode_QueryModel"][0].SalesEurope;
var value2 = window["formCode_QueryModel"][0].SalesAsia;
new Chart(ctx, {
type: 'bar',
data: {
labels: ['Europe', 'Asia'],
datasets: [{
label: 'Regional Sales',
data: [value1, value2],
borderWidth: 1
}]
},
options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
Zalecenia:
- W celu poprawnego rozpoznawania serii danych i konfiguracji właściwych dla konkretnego wykresu podczas wyświetlania wielu wykresów jednocześnie zaleca się stosowanie unikalnych nazw dla wykresu, jego serii danych i jego konfiguracji.
- Dla uzyskania oczekiwanych efektów rozmieszczenia wykresu w obrębie pojedynczej sekcji zaleca się stosowanie techniki Flexbox Layout
Znane ograniczenia:
- nAxiom nie wspiera biblioteki Utils stosowanej w przykładach w dokumentacji Chart.js. Potrzebny kod i konfiguracje należy wprowadzać samodzielnie.
- Mogą występować problemy z wczytywaniem danych do wykresów z uwagi na istniejący mechanizm renderowania formularza. Należy odświeżyć stronę, aby spróbować wczytać dane ponownie. Trwają prace nad wyeliminowaniem tego problemu.
- W kolejnych wersjach planowane jest dodanie obsługi biblioteki chart.js na listach w kolumnie HTML oraz w kontrolce bloku HTML.
- Wykresy nie oferują definiowania zbioru akcji, w tym akcji otwórz formularz, ani funkcjonalności drill-down. Dostępne są jedynie zdarzenia opisane w dokumentacji chart.js.
Nowe właściwości przycisków
Dodano nowe właściwości przycisku za pomocą których można określać położenie ikony względem tekstu, rozmiar ikony, rozmiar tekstu, odstęp ikony od tekstu, margines wewnętrzny pionowy i poziomy. Ustawienia rozmiaru ikony i tekstu określa się w procentach względem ustawienia w kreatorze stylów (w którym dodano ustawienie domyślnego rozmiaru ikony). Ustawienia marginesów mają pierwszeństwo przed ustawieniami odstępu od tekstu w pionie i w poziomie definiowanymi w kreatorze stylów.
Wszystkie właściwości dotyczące wyświetlania przycisków są obecnie zapisywane w nowej tabeli bazy danych core.ButtonSettings.
Informacje o zastępstwach
Dodano funkcję tabelaryczną core.SubstitutionsPerformedByUser ({@UserId}, {@LangId}), która zwraca informacje o aktywnych zastępstwach użytkownika o podanym identyfikatorze. Funkcja zwraca jeden rekord na każde zastępstwo, a w nim informacje o zastępowanym, jego rolach i jednostkach organizacyjnych, czas trwania zastępstwa oraz zakres zastępstwa (właściciel zadania, rola i rola w jednostce).
Funkcji można użyć w widżecie typu sekcja HTML lub formularz do prezentowania informacji o zastępstwach bieżącego użytkownika.
Wyłączanie dokumentacji Swagger
W plikach appsettings.json, w gałęzi SwaggerConf dodano właściwość Enabled. Wartość domyślna dla wszystkich serwisów - z wyjątkiem Public API - to false. To ustawienie powoduje wyłączenie wyświetlania dokumentacji API danego serwisu.
Kreator modeli danych
W kreatorze modeli danych dodano obsługę dwukrotnego kliknięcia widoku lub funkcji skalarnej w celu otworzenia okna przypisania do modułu.
Edycja inline, sygnalizacja błędów
We właściwościach kolumn listy na karcie Edycja inline
dodano dwa ustawienia dotyczące wymagalności:
-
Wymagane uzupełnienie komórki
: po włączeniu tej opcji nie będzie można zapisać rekordu bez podania wartości w wymaganym polu. -
Komunikat o błędzie
: pozwala skonfigurować komunikat o błędzie wyświetlany pod polem w razie braku podania wartości.
Brak podania wartości w komórce jest sygnalizowany czerwoną obwódką i wyświetleniem etykietki z komunikatem o błędzie.
Kontrolki formularza, sygnalizacja błędów
Ujednolicono sposób sygnalizacji niewypełnionej lub wypełnionej niezgodnie z właściwościami kontrolki na formularzu. Obecnie w takiej sytuacji kontrolka jest oznaczana czerwoną ramką i wyświetlany jest komunikat o błędzie zdefiniowany przez użytkownika.
W ramach zadania do następujących kontrolek dodano właściwości Wartość minimalna
i Wartość maksymalna
:
- pole tekstowe i obszar tekstowy: minimalna i maksymalna liczba znaków;
- pola numeryczne: minimalna i maksymalna wartość liczbowa;
- pole czasu/daty, datepicker oraz datepicker i pole czasu: najwcześniejsza i najpóźniejsza data/godzina.
Wartości minimalne i maksymalne mogą być określane jako statyczne (stałe) lub zwracane przez SQL.
Ponadto dodano obsługę tłumaczeń dla komunikatów o błędach definiowanych przez konsultanta.
Zakładki sekcji, sygnalizacja błędów
Dodano oznaczenie braku wypełnienia wymaganych pól formularza na zakładkach sekcji, które są niewidoczne.
Etykieta dla sekcji/pozycji menu
W definicji sekcji i pozycji menu użytkownika dodano możliwość wyświetlania etykiety. Etykieta jest wyświetlana na panelu menu w FrontSPA na wysokości danej sekcji/pozycji z prawej strony. W celu zdefiniowania etykiety należy napisać zapytanie, które zwróci trzy parametry: LabelText (nvarchar), LabelTextColor (HEX) i LabelBackgroundColor (HEX). Jeśli zapytanie zwróci więcej niż jeden rekord, etykieta zostanie wyrenderowana na podstawie parametrów z pierwszego rekordu.
Podstawowym przeznaczeniem etykiety jest możliwość definiowania liczników rekordów dla pozycji menu, które wyświetlają widok listy.
Obecnie w zapytaniu SQL nie jest obsługiwana składnia smart numbers.
Zawijanie nazw menu
W ustawieniach sekcji menu użytkownika dodano dwie opcje określające sposób wyświetlania nazw, których długość przekracza szerokość panelu menu we FrontSPA:
Wyświetlaj jeden wiersz i dopisuj wielokropek
Zawijaj na białym znaku
Wybrane ustawienie jest dziedziczone przez wszystkie pozycje danej sekcji menu.
Aktywne sekcje i pozycje nadrzędne menu użytkownika
Rozszerzono funkcjonalność menu użytkownika. Obecnie można przypisywać formularze i/lub listy do sekcji menu oraz do pozycji nadrzędnych. W przypadku pozycji nadrzędnych kliknięcie nazwy pozycji wyświetla przypisany formularz/listę, a kliknięcie znacznika z prawej strony rozwija/zwija pozycje podrzędne menu.
Procedura dodająca e-maile do kolejki
Dodano procedurę składowaną core.PrepareEmailToSend, która dodaje do tabeli core.Emails rekord z parametrami wiadomości do wysłania. Procedury można używać w akcji SQL do systemowej bazy danych.
Parametr SenderEmail musi mieć wartość skonfigurowaną w ustawieniach systemu (
Nazwa użytkownika powiązana z poświadczeniami
lubExchange - Konto użytkownika
).
Przykład wywołania:
EXEC core.PrepareEmailToSend
@SenderEmail = 'default_sender@company.com'
,@ToEmails = 'receipient@company.com'
,@CcEmails = ''
,@BccEmails = ''
,@Title = 'message subject'
,@Body = 'message body'
Adres nadawcy, adres odbiorcy, temat i treść są obowiązkowe. Aby podać więcej adresów e-mail, należy je rozdzielić średnikami (;).
Uprawnienia PBA do zastępstw
Dodano nowe uprawnienia PBA obejmujące możliwość definiowania zastępstw. Dostęp do menu zastępstw jest definiowany jak dotychczas, na podstawie roli biznesowej.
Nowe uprawnienia znajdują się w gałęzi Zarządzanie strukturą…
/Zarządzanie użytkownikami
/Zastępstwa
:
-
Definiowanie zastępstw za dowolnego użytkownika
: dowolny zastępujący, dowolny zastępowany; -
Definiowanie własnych zastępstw
: dowolny zastępujący, zastępowany = bieżący użytkownik; -
Definiowanie zastępstw podległych pracowników
: dowolny zastępujący, zastępowany = bieżący użytkownik, podwładny i podwładny podwładnego.
Public API User/Save i AddNew
Zmodyfikowano działanie endpointu User/Save w Public API. Obecnie, gdy w treści żądania zostanie podany nowy identyfikator użytkownika, żądanie utworzy nowy profil użytkownika o podanym identyfikatorze. Jeśli identyfikator nie zostanie podany lub będzie złożony z samych zer, zostanie utworzony nowy profil użytkownika o losowym identyfikatorze. Jeśli zostanie podany identyfikator istniejącego profilu, żądanie zapisze zmiany w tym profilu.
Ponadto utworzono nowy endpoint User/AddNew, który obsługuje tylko tworzenie nowych profili (nowy identyfikator lub brak identyfikatora). Podanie w żądaniu identyfikatora istniejącego profilu spowoduje zwrócenie błędu.
Dokumentacja konfiguracji logowania zewnętrznego
Opublikowano opis parametrów konfiguracji logowania zewnętrznego do nAxiom wraz z przykładowymi konfiguracjami dla różnych dostawców uwierzytelniania.
Nowa funkcja powiadomień
Funkcjonalność powiadomień w aplikacji FrontSPA rozszerzono o rejestrowanie informacji dotyczących błędów, które wystąpiły podczas pracy użytkownika w bieżącej sesji. Dotychczasowy panel powiadomień podzielono na dwie karty: Powiadomienia
i Alerty
. Kliknięcie ikony szczegółów obok wpisu na karcie alerty wyświetla okno dialogowe ze szczegółami błędu oraz datą i godziną wystąpienia. Jeśli w ustawieniach systemu skonfigurowano dodatkowy adres e-mail (Ustawienia systemu
> Notyfikacje
> Adres email do wysyłki powiadomień o błędach od użytkowników
), w tym oknie dialogowym można także dopisać własne uwagi i razem z komunikatem wysłać jako email do administratora. W e-mailu jest także wysyłany identyfikator żądania HTTP, na podstawie którego można odnaleźć odpowiedni wpis w logach systemu.
Ikona powiadomień w nagłówku pulpitu aplikacji FrontSPA ma osobny licznik powiadomień i osobny licznik alertów.
FrontSPA, komunikaty o błędach
Dodano mechanizm przechwytujący niektóre komunikaty o błędach występujących po stronie serwera. Komunikaty te są zastępowane generycznym komunikatem „Wystąpił błąd. Skontaktuj się z administratorem.” Treść błędu jest logowana jak dotychczas w logach systemowych.
Poprawki i usunięte błędy
Odświeżanie formularza
Zmieniono zachowanie formularza podczas przełączania między trybami desktop i mobile, a także podczas odświeżania formularza za pomocą systemowej ikony odświeżania. Obecnie w takiej sytuacji formularz zapamiętuje aktywną kartę i nie zmienia jej po odświeżeniu. Natomiast odświeżenie okna przeglądarki (F5) powoduje przeładowanie formularza i wyświetlenie jako aktywnej karty pierwszej sekcji.
Akcja otwierania formularza
W akcji otwierania formularza dodano obsługę sytuacji, kiedy w kontekście formularza nie będzie pola wskazanego do przekazania parametru. Zostanie wówczas wyświetlony komunikat z ostrzeżeniem, a formularz zostanie otwarty bez ustawiania parametru.
Błędna interpretacja języka
Usunięto problem, który powodował, że niektóre przeglądarki oferowały opcję tłumaczenia strony witryny nAxiom w języku polskim, interpretując język strony jako angielski.
Brak pozycji na liście Pole formularza
Usunięto problem, który powodował, że lista wyboru we właściwości Pole formularza
dla kontrolki formularza była pusta. Problem występował w przypadku, gdy zapytanie źródłowe dla formularza było szczególnie złożone.
Błędy odświeżania formularza
Usunięto błąd, który powodował, że po zamknięciu formularza wyświetlonego w trybie dialog z wywołaniem akcji Zapisz rekord
, ale bez włączonej opcji Odśwież widok po akcji zapisu
, w nagłówku formularza głównego wyświetlane były błędne przyciski przejścia.
Akcja otwierania formularza
Usunięto błąd, który powodował, że akcja otwierania formularza używana na przejściu za blokiem decyzyjnym nie przekazywała ustawionych parametrów.
Akcja dodawania warstwy tekstowej
Poprawiono działanie akcji tworzenia pliku PDF z warstwą tekstową:
- Poprawiono błąd, który powodował, że warstwa tekstowa pliku PDF nie była indeksowana na potrzeby wyszukiwarki ElasticSearch.
- Usunięto problem, który występował w przypadku użycia tej akcji na dokumentach ze zdefiniowanymi uprawnieniami ACL; w tym celu wyłączono sprawdzanie uprawnień w przypadku operacji wykonywanych w trybie użytkownika systemowego, takich jak:
- zadania cykliczne
- przejścia diagramu procesów wychodzące z bloku oczekiwania
- akcje dla monitora e-mail
- akcja dodawania warstwy tekstowej
Migracja wyzwalaczy
Poprawiono błąd w działaniu migratora, który powodował, że wraz z migrowaną tabelą nie przenosiły się zdefiniowane dla tabeli wyzwalacze.
Migracja ustawień dostępności
Poprawiono błąd migratora, który powodował, że nie były migrowane ustawienia dostępności przycisków w sekcji typu lista.
Lista wyboru interesariuszy
Zmodyfikowano konfigurację listy wyboru interesariuszy. Obecnie po wybraniu roli biznesowej w celu zawężenia listy użytkowników, w konfiguracji listy jest dodawana klauzule WHERE z odwołaniem do roli przy użyciu składni smart numbers.
Uprawnienia formularza, paski przewijania
Poprawiono wyświetlanie pasków przewijania w oknie uprawnień formularza.