Index: lams_monitoring/web/grouping/viewGroups.jsp =================================================================== diff -u -ra8bfcfbbe983d3069b91882d551d9897b3b4a7fa -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_monitoring/web/grouping/viewGroups.jsp (.../viewGroups.jsp) (revision a8bfcfbbe983d3069b91882d551d9897b3b4a7fa) +++ lams_monitoring/web/grouping/viewGroups.jsp (.../viewGroups.jsp) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -93,5 +93,5 @@ - + \ No newline at end of file Index: lams_tool_doku/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r66aaa15469871d9f71cafcfc4222ffa90f2d9bb2 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 66aaa15469871d9f71cafcfc4222ffa90f2d9bb2) +++ lams_tool_doku/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -153,4 +153,8 @@ monitor.summary.date.restriction.set = Date availability has been set monitor.summary.date.restriction.removed = Date availability has been removed label.comment.textarea.tip = Type your comment here then click on the green tick. -warning.comment.blank = Comment text is missing. \ No newline at end of file +warning.comment.blank = Comment text is missing. + +monitoring.gallery.walk.cluster.view = Gallery Walk groups of groups +monitoring.gallery.walk.cluster.view.none = No groups have reached this activity yet +monitoring.summary.gallery.walk.cluster.view.button = View Gallery Walk groups of groups \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java =================================================================== diff -u -rdbb83a20e36def6c8cb9763e542714cef162e0a2 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java (.../DokumaranSession.java) (revision dbb83a20e36def6c8cb9763e542714cef162e0a2) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/model/DokumaranSession.java (.../DokumaranSession.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -26,6 +26,7 @@ import org.hibernate.annotations.SortComparator; import org.lamsfoundation.lams.etherpad.util.EtherpadUtil; import org.lamsfoundation.lams.tool.dokumaran.util.DokumaranSessionComparator; +import org.lamsfoundation.lams.tool.dokumaran.util.DokumaranSessionNameComparator; import javax.persistence.*; import java.util.Date; @@ -42,7 +43,8 @@ @Table(name = "tl_ladoku11_session") public class DokumaranSession { - public static final DokumaranSessionComparator SESSION_NAME_COMPARATOR = new DokumaranSessionComparator(); + public static final DokumaranSessionComparator SESSION_COMPARATOR = new DokumaranSessionComparator(); + public static final DokumaranSessionNameComparator SESSION_NAME_COMPARATOR = new DokumaranSessionNameComparator(); @Id @Column @@ -84,7 +86,7 @@ @JoinColumn(name = "source_session_uid") }, inverseJoinColumns = { @JoinColumn(name = "target_session_uid") }) @SortComparator(DokumaranSessionComparator.class) - private Set galleryWalkCluster = new TreeSet<>(SESSION_NAME_COMPARATOR); + private Set galleryWalkCluster = new TreeSet<>(SESSION_COMPARATOR); // ********************************************************** // Get/Set methods Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java =================================================================== diff -u -r6ff1966e270c9f86609b19a72f4906419f89670b -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 6ff1966e270c9f86609b19a72f4906419f89670b) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/DokumaranService.java (.../DokumaranService.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -419,6 +419,10 @@ return dokumaranSessionDao.getSessionBySessionId(sessionId); } + public List getDokumaranSessionsByToolContentId(long toolContentId) { + return dokumaranSessionDao.getByContentId(toolContentId); + } + @Override public String finishToolSession(Long toolSessionId, Long userId) throws DokumaranApplicationException { DokumaranUser user = dokumaranUserDao.getUserByUserIDAndSessionID(userId, toolSessionId); @@ -506,7 +510,7 @@ } } - Collections.sort(sessionList, DokumaranSession.SESSION_NAME_COMPARATOR); + Collections.sort(sessionList, DokumaranSession.SESSION_COMPARATOR); for (DokumaranSession session : sessionList) { // one new group for one session. @@ -530,7 +534,7 @@ if (!session.getGalleryWalkCluster().isEmpty()) { List cluster = new ArrayList<>(session.getGalleryWalkCluster()); - Collections.sort(cluster, DokumaranSession.SESSION_NAME_COMPARATOR); + Collections.sort(cluster, DokumaranSession.SESSION_COMPARATOR); for (DokumaranSession clusterMember : cluster) { group.getGalleryWalkClusterMembers() .put(clusterMember.getSessionId(), clusterMember.getSessionName()); Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java =================================================================== diff -u -rdbb83a20e36def6c8cb9763e542714cef162e0a2 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision dbb83a20e36def6c8cb9763e542714cef162e0a2) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/service/IDokumaranService.java (.../IDokumaranService.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -177,6 +177,8 @@ */ DokumaranSession getDokumaranSessionBySessionId(Long sessionId); + List getDokumaranSessionsByToolContentId(long toolContentId); + /** * If success return next activity's url, otherwise return null. */ Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionComparator.java =================================================================== diff -u -rdbb83a20e36def6c8cb9763e542714cef162e0a2 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionComparator.java (.../DokumaranSessionComparator.java) (revision dbb83a20e36def6c8cb9763e542714cef162e0a2) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionComparator.java (.../DokumaranSessionComparator.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -7,19 +7,8 @@ public class DokumaranSessionComparator implements Comparator { @Override public int compare(DokumaranSession o1, DokumaranSession o2) { - if (o1 != null && o2 != null) { - String name1 = o1.getSessionName().replaceAll("\\D+", ""); - String name2 = o2.getSessionName().replaceAll("\\D+", ""); - if (name1.length() == 0 || name2.length() == 0) { - return name1.compareTo(name2); - } - Long num1 = Long.parseLong(name1); - Long num2 = Long.parseLong(name2); - return num1.compareTo(num2); - } else if (o1 != null) { - return 1; - } else { - return -1; - } + String name1 = o1.getSessionName(); + String name2 = o2.getSessionName(); + return DokumaranSessionNameComparator.compareSessionNames(name1, name2); } } \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionNameComparator.java =================================================================== diff -u --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionNameComparator.java (revision 0) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/util/DokumaranSessionNameComparator.java (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -0,0 +1,32 @@ +package org.lamsfoundation.lams.tool.dokumaran.util; + +import java.util.Comparator; + +public class DokumaranSessionNameComparator implements Comparator { + @Override + public int compare(String name1, String name2) { + return compareSessionNames(name1, name2); + } + + public static int compareSessionNames(String name1, String name2) { + name1 = name1.toLowerCase(); + name2 = name2.toLowerCase(); + String nameWithoutNumbers1 = name1.replaceAll("\\d+", ""); + String nameWithoutNumbers2 = name2.replaceAll("\\d+", ""); + if (!nameWithoutNumbers1.equals(nameWithoutNumbers2)) { + return name1.compareTo(name2); + } + String numbers1 = name1.replaceAll("\\D+", ""); + String numbers2 = name2.replaceAll("\\D+", ""); + if (numbers1.length() == 0 || numbers2.length() == 0) { + return name1.compareTo(name2); + } + try { + Long num1 = Long.parseLong(numbers1); + Long num2 = Long.parseLong(numbers2); + return num1.compareTo(num2); + } catch (Exception e) { + return name1.compareTo(name2); + } + } +} \ No newline at end of file Index: lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java =================================================================== diff -u -reccd6838790a4369b6788e48fb5ae5851622fe35 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision eccd6838790a4369b6788e48fb5ae5851622fe35) +++ lams_tool_doku/src/java/org/lamsfoundation/lams/tool/dokumaran/web/controller/MonitoringController.java (.../MonitoringController.java) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -56,6 +56,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import reactor.core.publisher.Flux; @@ -329,6 +330,20 @@ dokumaranService.enableGalleryWalkLearnerEdit(toolContentId); } + @RequestMapping("/showGalleryWalkClusters") + private String showGalleryWalkClusters( + @RequestParam(name = AttributeNames.PARAM_TOOL_CONTENT_ID) long toolContentId, Model model) { + Map> groups = dokumaranService.getDokumaranSessionsByToolContentId(toolContentId).stream() + .collect(Collectors.toMap(DokumaranSession::getSessionName, + session -> session.getGalleryWalkCluster().stream().collect( + Collectors.mapping(DokumaranSession::getSessionName, Collectors.toCollection( + () -> new TreeSet<>(DokumaranSession.SESSION_NAME_COMPARATOR)))), + (session1Cluster, session2Cluster) -> session1Cluster, + () -> new TreeMap<>(DokumaranSession.SESSION_NAME_COMPARATOR))); + model.addAttribute("groups", groups); + return "pages/monitoring/viewGalleryWalkClusters"; + } + @RequestMapping("/ae") private String tblApplicationExcercise(HttpServletRequest request, HttpServletResponse response) throws EtherpadException { Index: lams_tool_doku/web/pages/monitoring/summary.jsp =================================================================== diff -u -r66aaa15469871d9f71cafcfc4222ffa90f2d9bb2 -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 66aaa15469871d9f71cafcfc4222ffa90f2d9bb2) +++ lams_tool_doku/web/pages/monitoring/summary.jsp (.../summary.jsp) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -51,6 +51,10 @@ width: 100%; } + .doku-monitoring-summary #gallery-walk-show-clusters { + margin-top: 20px; + } + .doku-monitoring-summary #gallery-walk-learner-edit { margin-top: 20px; margin-bottom: 20px; @@ -392,6 +396,9 @@ }); } + function openGalleryWalkClusters(){ + window.open('monitoring/showGalleryWalkClusters.do?toolContentID=${dokumaran.contentId}', '_blank'); + } function enableGalleryWalkLearnerEdit(){ if (!confirm('')) { @@ -532,8 +539,18 @@
+ + +
+ Index: lams_tool_doku/web/pages/monitoring/summary5.jsp =================================================================== diff -u -rfe19797ec82718905555353176ed719bec11043e -r305246a229ea020cd0677daa6fc7953772f7ed54 --- lams_tool_doku/web/pages/monitoring/summary5.jsp (.../summary5.jsp) (revision fe19797ec82718905555353176ed719bec11043e) +++ lams_tool_doku/web/pages/monitoring/summary5.jsp (.../summary5.jsp) (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -49,6 +49,10 @@ width: 100%; } + .doku-monitoring-summary #gallery-walk-show-clusters { + margin-top: 20px; + } + .doku-monitoring-summary #gallery-walk-learner-edit { margin-top: 20px; margin-bottom: 20px; @@ -340,7 +344,11 @@ }); } + function openGalleryWalkClusters(){ + window.open('monitoring/showGalleryWalkClusters.do?toolContentID=${dokumaran.contentId}', '_blank'); + } + function enableGalleryWalkLearnerEdit(){ if (!confirm('')) { return; @@ -479,8 +487,18 @@
+ + +
+ Index: lams_tool_doku/web/pages/monitoring/viewGalleryWalkClusters.jsp =================================================================== diff -u --- lams_tool_doku/web/pages/monitoring/viewGalleryWalkClusters.jsp (revision 0) +++ lams_tool_doku/web/pages/monitoring/viewGalleryWalkClusters.jsp (revision 305246a229ea020cd0677daa6fc7953772f7ed54) @@ -0,0 +1,84 @@ +<%-- +Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) +License Information: http://lamsfoundation.org/licensing/lams/2.0/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License version 2 as + published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + USA + + http://www.gnu.org/licenses/gpl.txt +--%> + +<%@ include file="/common/taglibs.jsp"%> + + + + + + <fmt:message key="monitoring.gallery.walk.cluster.view"/> + + + + + + + + + + + +
+ + + + + + +
+

+ +

+ + + + + + +
+ + + +
+
+
+
+
+
+ +
+ + + + +
\ No newline at end of file