Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Implement suggested changes from code review
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Feb 10, 2014
1 parent 58cd148 commit 31b2bbe
Show file tree
Hide file tree
Showing 12 changed files with 304 additions and 318 deletions.
49 changes: 26 additions & 23 deletions zanata-war/src/main/java/org/zanata/action/AbstractSortAction.java
Expand Up @@ -22,26 +22,25 @@

package org.zanata.action;

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import org.zanata.model.HLocale;
import org.zanata.service.VersionLocaleKey;

import org.zanata.ui.model.statistic.WordStatistic;
import org.zanata.util.StatisticsUtil;

import java.util.Comparator;
import com.google.common.collect.Lists;

/**
* @author Alex Eng <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*
* Action Handler for sort component - sortlist.xhtml
*/
public abstract class AbstractSortAction {

// reset all page cached statistics
abstract void resetPageData();

abstract protected void loadStatistic();
abstract protected void loadStatistics();

abstract String getMessage(String key, Object... args);

Expand All @@ -56,28 +55,30 @@ protected DisplayUnit getDisplayUnit(SortingType.SortOption sortOption,
WordStatistic statistic) {
DisplayUnit displayUnit;

if (sortOption.equals(SortingType.SortOption.HOURS)) {
switch (sortOption) {
case HOURS:
displayUnit =
new DisplayUnit("", StatisticsUtil.formatHours(statistic
.getRemainingHours()),
getMessage("jsf.stats.HoursRemaining"));
} else if (sortOption.equals(SortingType.SortOption.WORDS)) {
break;

case WORDS:
displayUnit =
new DisplayUnit("", String.valueOf(statistic
.getUntranslated()), getMessage("jsf.Words"));
} else {
break;

default:
String figure =
StatisticsUtil.formatPercentage(statistic
.getPercentTranslated()) + "%";
if (statistic.getPercentTranslated() == 0) {
displayUnit =
new DisplayUnit("txt--neutral", figure,
getMessage("jsf.Translated"));
} else {
displayUnit =
new DisplayUnit("txt--success", figure,
getMessage("jsf.Translated"));
}
String style =
statistic.getPercentTranslated() == 0 ? "txt--neutral"
: "txt--success";
displayUnit =
new DisplayUnit(style, figure, getMessage("jsf.Translated"));
break;
}
return displayUnit;
}
Expand All @@ -92,17 +93,19 @@ public final class DisplayUnit {

public int compareWordStatistic(WordStatistic stats1, WordStatistic stats2,
SortingType.SortOption sortOption) {
if (sortOption.equals(SortingType.SortOption.HOURS)) {
switch (sortOption) {
case HOURS:
return Double.compare(stats1.getRemainingHours(),
stats2.getRemainingHours());
} else if (sortOption.equals(SortingType.SortOption.PERCENTAGE)) {

case PERCENTAGE:
return Double.compare(stats1.getPercentTranslated(),
stats2.getPercentTranslated());

} else if (sortOption.equals(SortingType.SortOption.WORDS)) {
case WORDS:
return Double.compare(stats1.getUntranslated(),
stats2.getUntranslated());
default:
return 0;
}
return 0;
}
}
5 changes: 3 additions & 2 deletions zanata-war/src/main/java/org/zanata/action/SortingType.java
Expand Up @@ -33,8 +33,9 @@ public void setSelectedSortOption(SortOption selectedSortOption) {
}

public enum SortOption {
PERCENTAGE("%"), HOURS("hours"), WORDS("words"), ALPHABETICAL(
"alphabetical");
PERCENTAGE("percent translated"), HOURS("hours remaining"), WORDS(
"words remaining"), ALPHABETICAL("alphabetical"), LAST_UPDATED(
"last updated"), LAST_TRANSLATED("last translated");

@Getter
String display;
Expand Down
Expand Up @@ -27,8 +27,12 @@
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.annotation.Nullable;

import lombok.Getter;
import lombok.Setter;

import org.apache.commons.lang.StringUtils;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
Expand All @@ -48,14 +52,12 @@
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 <a href="mailto:aeng@redhat.com">aeng@redhat.com</a>
*/
Expand Down Expand Up @@ -127,7 +129,7 @@ public class VersionGroupHomeAction extends AbstractSortAction implements

public void setPageRendered(boolean pageRendered) {
if (pageRendered) {
loadStatistic();
loadStatistics();
}
this.pageRendered = pageRendered;
}
Expand Down Expand Up @@ -176,17 +178,15 @@ public int compare(HLocale compareFrom, HLocale compareTo) {
selectedVersionId, item2.getLocaleId()));
}

if (selectedSortOption
.equals(SortingType.SortOption.PERCENTAGE)) {
switch (selectedSortOption) {
case PERCENTAGE:
return Double.compare(
wordStatistic1.getPercentTranslated(),
wordStatistic2.getPercentTranslated());
} else if (selectedSortOption
.equals(SortingType.SortOption.HOURS)) {
case HOURS:
return Double.compare(wordStatistic1.getRemainingHours(),
wordStatistic2.getRemainingHours());
} else if (selectedSortOption
.equals(SortingType.SortOption.WORDS)) {
case WORDS:
return Double.compare(wordStatistic1.getUntranslated(),
wordStatistic2.getUntranslated());
}
Expand Down Expand Up @@ -239,23 +239,17 @@ public int compare(HProjectIteration compareFrom,
wordStatistic2 = getStatisticForProject(item2.getId());
}

if (selectedSortOption
.equals(SortingType.SortOption.PERCENTAGE)) {
switch (selectedSortOption) {
case PERCENTAGE:
return Double.compare(
wordStatistic1.getPercentTranslated(),
wordStatistic2.getPercentTranslated());
} else if (selectedSortOption
.equals(SortingType.SortOption.HOURS)) {
case HOURS:
return Double.compare(wordStatistic1.getRemainingHours(),
wordStatistic2.getRemainingHours());
} else if (selectedSortOption
.equals(SortingType.SortOption.WORDS)) {
if (wordStatistic1.getUntranslated() == wordStatistic2
.getUntranslated()) {
return 0;
}
return wordStatistic1.getTotal() > wordStatistic2
.getTotal() ? 1 : -1;
case WORDS:
return Double.compare(wordStatistic1.getUntranslated(),
wordStatistic2.getUntranslated());
}
} else {
return item1.getProject().getName().toLowerCase()
Expand Down Expand Up @@ -331,13 +325,13 @@ public List<HLocale> getActiveLocales() {
}

public List<HLocale> getFilteredLocales() {
List<HLocale> list = getActiveLocales();
List<HLocale> unfiltered = getActiveLocales();
if (StringUtils.isEmpty(languageQuery)) {
return list;
return unfiltered;
}

Collection<HLocale> filtered =
Collections2.filter(list, new Predicate<HLocale>() {
Collections2.filter(unfiltered, new Predicate<HLocale>() {
@Override
public boolean apply(@Nullable HLocale input) {
return input.retrieveDisplayName().toLowerCase()
Expand Down Expand Up @@ -487,7 +481,7 @@ public boolean isLocaleActivatedInVersion(HProjectIteration version,
* group.
*/
@Override
protected void loadStatistic() {
protected void loadStatistics() {
statisticMap = Maps.newHashMap();

for (HLocale locale : getActiveLocales()) {
Expand Down Expand Up @@ -515,20 +509,22 @@ public List<HProjectIteration> getProjectIterations() {
}

public List<HProjectIteration> getFilteredProjectIterations() {
List<HProjectIteration> list = getProjectIterations();
List<HProjectIteration> unfiltered = getProjectIterations();
if (StringUtils.isEmpty(projectQuery)) {
return list;
return unfiltered;
}

Collection<HProjectIteration> filtered =
Collections2.filter(list, new Predicate<HProjectIteration>() {
@Override
public boolean apply(@Nullable HProjectIteration input) {
HProject project = input.getProject();
return project.getName().toLowerCase()
.contains(projectQuery.toLowerCase());
}
});
Collections2.filter(unfiltered,
new Predicate<HProjectIteration>() {
@Override
public boolean apply(
@Nullable HProjectIteration input) {
HProject project = input.getProject();
return project.getName().toLowerCase()
.contains(projectQuery.toLowerCase());
}
});

return Lists.newArrayList(filtered);
}
Expand All @@ -540,7 +536,7 @@ public void resetPageData() {
selectedLocale = null;
selectedVersion = null;
missingLocaleVersionMap = null;
loadStatistic();
loadStatistics();
}

@Override
Expand Down
1 change: 1 addition & 0 deletions zanata-war/src/main/resources/messages.properties
Expand Up @@ -627,6 +627,7 @@ jsf.ServerConfiguration=Server Configuration
jsf.ManageUsers=Manage Users
jsf.ManageRoles=Manage Roles
jsf.ManageLanguage=Manage Languages
jsf.ManageProjects=Manage Projects
jsf.ManageSearch=Manage Search
jsf.OverallStatistics=Overall Statistics
jsf.RoleAssignmentRules=Role Assignment Rules
Expand Down
Expand Up @@ -48,8 +48,8 @@
<div class="panel__results__type">
<i class="i i--language txt--neutral"></i>
</div>
<span
class="txt--meta"><strong>#{versionGroupHomeAction.activeLocales.size()}</strong></span>
<span
class="txt--meta"><strong>#{versionGroupHomeAction.activeLocales.size()}</strong></span>
</div>
</div>
<h:form id="languages-language_form" styleClass="l--push-bottom-0">
Expand Down Expand Up @@ -84,28 +84,28 @@
styleClass="bx--block">
<div class="list__item">
<div class="list__item__info">
<span class="list__title">
#{hLocale.retrieveDisplayName()}
<s:span
rendered="#{!versionGroupHomeAction.getMissingVersion(hLocale.localeId).isEmpty()}"
styleClass="badge--danger"
title="#{versionGroupHomeAction.getMissingVersionTitle(hLocale.localeId)}">
#{versionGroupHomeAction.getMissingVersion(hLocale.localeId).size()}
</s:span>
</span>
<span class="list__title">
#{hLocale.retrieveDisplayName()}
<s:span
rendered="#{!versionGroupHomeAction.getMissingVersion(hLocale.localeId).isEmpty()}"
styleClass="badge--danger"
title="#{versionGroupHomeAction.getMissingVersionTitle(hLocale.localeId)}">
#{versionGroupHomeAction.getMissingVersion(hLocale.localeId).size()}
</s:span>
</span>
</div>
<s:div styleClass="list__item__stats"
rendered="#{versionGroupHomeAction.pageRendered}">
<ui:param name="displayUnit"
value="#{versionGroupHomeAction.getStatisticFigureForLocale(versionGroupHomeAction.languageSortingList.selectedSortOption, hLocale.localeId)}"/>
<span class="stats--small #{displayUnit.cssClass}">
<span class="stats__figure">
#{displayUnit.figure}
</span>
<span class="stats__unit">
#{displayUnit.unit}
</span>
</span>
<span class="stats--small #{displayUnit.cssClass}">
<span class="stats__figure">
#{displayUnit.figure}
</span>
<span class="stats__unit">
#{displayUnit.unit}
</span>
</span>
</s:div>
</div>

Expand Down Expand Up @@ -191,28 +191,28 @@
<div class="list__item">
<div class="list__item__info">
<h3 class="list__title">#{version.project.name}</h3>
<span class="list__item__meta">
<i
class="txt--neutral i i--version"></i> #{version.slug}
<span class="list__item__meta">
<i
class="txt--neutral i i--version"></i> #{version.slug}

<s:fragment
rendered="#{!versionGroupHomeAction.isLocaleActivatedInVersion(version, versionGroupHomeAction.selectedLocale.localeId)}">
<span
class="badge--danger l--push-left-quarter">#{messages['jsf.Missing']}</span>
</s:fragment>
</span>
<s:fragment
rendered="#{!versionGroupHomeAction.isLocaleActivatedInVersion(version, versionGroupHomeAction.selectedLocale.localeId)}">
<span
class="badge--danger l--push-left-quarter">#{messages['jsf.Missing']}</span>
</s:fragment>
</span>
</div>
<div class="list__item__stats">
<ui:param name="displayUnit"
value="#{versionGroupHomeAction.getStatisticFigureForProjectWithLocale(versionGroupHomeAction.projectSortingList.selectedSortOption, versionGroupHomeAction.selectedLocale.localeId, version.id)}"/>
<span class="stats--small #{displayUnit.cssClass}">
<span class="stats__figure">
#{displayUnit.figure}
</span>
<span class="stats__unit txt--lowercase">
#{displayUnit.unit}
</span>
</span>
<span class="stats--small #{displayUnit.cssClass}">
<span class="stats__figure">
#{displayUnit.figure}
</span>
<span class="stats__unit txt--lowercase">
#{displayUnit.unit}
</span>
</span>
</div>
</div>

Expand Down
5 changes: 2 additions & 3 deletions zanata-war/src/main/webapp/WEB-INF/template/banner.xhtml
Expand Up @@ -4,11 +4,10 @@
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.org/schema/seam/taglib"
xmlns:rich="http://richfaces.org/rich"
xmlns:zanata="http://java.sun.com/jsf/composite/zanata"
xmlns:a4j="http://richfaces.org/a4j">
xmlns:zanata="http://java.sun.com/jsf/composite/zanata">

<script type="text/javascript"
src="#{request.contextPath}/resources/script/component-autocomplete.js"></script>
src="#{request.contextPath}/resources/script/components-script.js"></script>

<script type="text/javascript">
function selectItem(item) {
Expand Down

0 comments on commit 31b2bbe

Please sign in to comment.