diff --git a/zanata-war/src/main/java/org/zanata/action/VersionGroupHomeAction.java b/zanata-war/src/main/java/org/zanata/action/VersionGroupHomeAction.java
index 707c139df4..30c51c86c6 100644
--- a/zanata-war/src/main/java/org/zanata/action/VersionGroupHomeAction.java
+++ b/zanata-war/src/main/java/org/zanata/action/VersionGroupHomeAction.java
@@ -21,16 +21,15 @@
package org.zanata.action;
import java.io.Serializable;
+import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.Nullable;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.Setter;
-
+import org.apache.commons.lang.StringUtils;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@@ -42,16 +41,21 @@
import org.zanata.model.HAccount;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;
+import org.zanata.model.HProject;
import org.zanata.model.HProjectIteration;
import org.zanata.service.VersionGroupService;
import org.zanata.service.VersionLocaleKey;
import org.zanata.ui.model.statistic.WordStatistic;
import org.zanata.util.StatisticsUtil;
import org.zanata.util.ZanataMessages;
-
+import com.google.common.base.Predicate;
+import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
+import lombok.Getter;
+import lombok.Setter;
+
/**
* @author Alex Eng aeng@redhat.com
*/
@@ -92,6 +96,10 @@ public class VersionGroupHomeAction extends AbstractSortAction implements
@Getter
private WordStatistic overallStatistic;
+ @Setter
+ @Getter
+ private String projectQuery;
+
private List activeLocales;
private List projectIterations;
@@ -259,6 +267,15 @@ public boolean isUserProjectMaintainer() {
&& authenticatedAccount.getPerson().isMaintainerOfProjects();
}
+ public int getFilteredProjectSize() {
+ if (getSelectedLocale() == null) {
+ return 0;
+ } else {
+ return getFilteredProjectIterations().size();
+ }
+
+ }
+
/**
* Sort language list based on overall locale statistic for the group
*/
@@ -277,7 +294,7 @@ public void sortLanguageList(Long versionId) {
/**
* Sort project list based on selected locale - language tab
- *
+ *
* @param localeId
*/
public void sortProjectList(LocaleId localeId) {
@@ -386,7 +403,7 @@ private Map> getMissingLocaleVersionMap() {
/**
* Search for locale that is not activated in given version
- *
+ *
* @param version
*/
public List getMissingLocale(HProjectIteration version) {
@@ -411,7 +428,7 @@ public String getMissingLocaleTitle(HProjectIteration version) {
/**
* Search for version that doesn't activate given locale
- *
+ *
* @param localeId
*/
public List getMissingVersion(LocaleId localeId) {
@@ -469,6 +486,25 @@ public List getProjectIterations() {
return projectIterations;
}
+ public List getFilteredProjectIterations() {
+ List list = getProjectIterations();
+ if (StringUtils.isEmpty(projectQuery)) {
+ return list;
+ }
+
+ Collection filtered =
+ Collections2.filter(list, new Predicate() {
+ @Override
+ public boolean apply(@Nullable HProjectIteration input) {
+ HProject project = input.getProject();
+ return project.getName().toLowerCase()
+ .contains(projectQuery.toLowerCase());
+ }
+ });
+
+ return Lists.newArrayList(filtered);
+ }
+
@Override
public void resetPageData() {
projectIterations = null;
diff --git a/zanata-war/src/main/resources/messages.properties b/zanata-war/src/main/resources/messages.properties
index 3fe391b535..b7ed2d8332 100644
--- a/zanata-war/src/main/resources/messages.properties
+++ b/zanata-war/src/main/resources/messages.properties
@@ -443,6 +443,8 @@ jsf.ArchiveGroupMessage=This will set the group's status to obsolete and remove
jsf.ActivateGroupMessage=This will set the group's status to active and make it visible in the public groups list.
jsf.Missing=missing
+jsf.project.search.placeholder=Search project names
+jsf.ClearSearch=Clear search
#------ [home] > Groups > Create New Group ------
#------ [home] > Groups > [group-id] Edit Group ------
diff --git a/zanata-war/src/main/webapp/WEB-INF/layout/version-group/languages-tab.xhtml b/zanata-war/src/main/webapp/WEB-INF/layout/version-group/languages-tab.xhtml
index 120000b8ad..75b0a0422b 100644
--- a/zanata-war/src/main/webapp/WEB-INF/layout/version-group/languages-tab.xhtml
+++ b/zanata-war/src/main/webapp/WEB-INF/layout/version-group/languages-tab.xhtml
@@ -4,84 +4,86 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:zanata="http://java.sun.com/jsf/composite/zanata"
xmlns:a4j="http://richfaces.org/a4j"
- xmlns:f="http://java.sun.com/jsf/core">
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:rich="http://richfaces.org/rich">
-