Dzień dobry. Z poziomu listy publikacji to jest trudniejsze, bo trzeba mieć dostęp do plików na serwerze. Może to być w dodatku rozwiązanie niepewne, bo nie wiem, jak przyszłe aktualizacje Omegi będą wpływać na zmienione pliki, a pliki na aktualizacje. Nie ma funkcjonalności pozwalającej na zmianę sposobów sortowania z poziomu administratora. Na poziomie konkretnego raportu można to zrobić z poziomu administratora. Najłatwiej będzie skopiować istniejący format eksportu. Jeżeli format "Bibliografia" (nazwa systemowa - bibliographicCitations) jest w porządku, to można skopiować właśnie ten. W skopiowanym raporcie, w polu funkcje trzeba znaleźć fragment: var citations = entities.stream().map(function(e){ return citationsExporter['export'](e, style, 'html'); }) .collect(Collectors.toList());
To jest kod, który generuje listę, która później jest przekazywana do widoku. Chodzi o to, żeby tę listę przed wysłaniem jeszcze posortować. Można to zrobić, wstawiając zamiast powyższego: var citations = entities.stream().collect(Collectors.groupingBy(function(publication){return publication.issueDate ? publication.issueDate : publication.journalissue ? publication.journalissue.issueDate : publication.book ? publication.book.issueDate : -1;}, function(){return new java.util.TreeMap();}, Collectors.mapping(function(e){ return citationsExporter['export'](e, style, 'html'); }, Collectors.toList()))).values().stream().flatMap(function(e){return e.stream();}).collect(Collectors.toList())
Ten kod najpierw grupuje rekordy według roku (groupingBy), jednocześnie formatując rekordy tak, jak mają być przekazane do widoku (mapping). Powstaje lista list typu TreeMap. Użycie TreeMap powoduje, że grupy są posortowane według klucza, tzn. według roku, bo grupujemy według roku. Na końcu kod łączy listy w jedną listę (flatMap i toList). Oczywiście, wśród raportów są tabele przestawne, w których żeby posortować publikacje według roku, wystarczy podać rok jako pierwszą kolumnę.