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

Commit

Permalink
Merge pull request #297 from zanata/ProjectLanguageSorting
Browse files Browse the repository at this point in the history
Fix project/language sorting in languages and projects tab
  • Loading branch information
carlosmunoz committed Nov 26, 2013
2 parents 19c23e1 + 92336cc commit 6e23630
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 27 deletions.
Expand Up @@ -127,31 +127,46 @@ public void setPageRendered(boolean pageRendered) {
private class LanguageComparator implements Comparator<HLocale> {
private SortingType sortingType;

@Setter
private Long selectedVersionId;

public LanguageComparator(SortingType sortingType) {
this.sortingType = sortingType;
}

@Override
public int compare(HLocale locale, HLocale locale2) {
public int compare(HLocale compareFrom, HLocale compareTo) {
final HLocale item1, item2;

if (sortingType.isDescending()) {
item1 = locale;
item2 = locale2;
item1 = compareFrom;
item2 = compareTo;
} else {
item1 = locale2;
item2 = locale;
item1 = compareTo;
item2 = compareFrom;
}

SortingType.SortOption selectedSortOption =
sortingType.getSelectedSortOption();

// Need to get statistic for comparison
if (!selectedSortOption.equals(SortingType.SortOption.ALPHABETICAL)) {
WordStatistic wordStatistic1 =
getStatisticsForLocale(item1.getLocaleId());
WordStatistic wordStatistic2 =
getStatisticsForLocale(item2.getLocaleId());
WordStatistic wordStatistic1;
WordStatistic wordStatistic2;

if (selectedVersionId == null) {
wordStatistic1 =
getStatisticsForLocale(item1.getLocaleId());
wordStatistic2 =
getStatisticsForLocale(item2.getLocaleId());
} else {
wordStatistic1 =
statisticMap.get(new VersionLocaleKey(
selectedVersionId, item1.getLocaleId()));
wordStatistic2 =
statisticMap.get(new VersionLocaleKey(
selectedVersionId, item2.getLocaleId()));
}

if (selectedSortOption
.equals(SortingType.SortOption.PERCENTAGE)) {
Expand All @@ -174,38 +189,42 @@ public int compare(HLocale locale, HLocale locale2) {
private class VersionComparator implements Comparator<HProjectIteration> {
private SortingType sortingType;

@Setter
private LocaleId selectedLocaleId;

public VersionComparator(SortingType sortingType) {
this.sortingType = sortingType;
}

@Override
public int
compare(HProjectIteration version, HProjectIteration version2) {
compare(HProjectIteration compareFrom, HProjectIteration compareTo) {
final HProjectIteration item1, item2;

if (sortingType.isDescending()) {
item1 = version;
item2 = version2;
item1 = compareFrom;
item2 = compareTo;
} else {
item1 = version2;
item2 = version;
item1 = compareTo;
item2 = compareFrom;
}

SortingType.SortOption selectedSortOption =
sortingType.getSelectedSortOption();
// Need to get statistic for comparison
if (!selectedSortOption.equals(SortingType.SortOption.ALPHABETICAL)) {
WordStatistic wordStatistic1 = new WordStatistic();
WordStatistic wordStatistic2 = new WordStatistic();
if (selectedLocale != null) {
WordStatistic wordStatistic1;
WordStatistic wordStatistic2;
if (selectedLocaleId != null) {
wordStatistic1 =
statisticMap
.get(new VersionLocaleKey(item1.getId(),
selectedLocale.getLocaleId()));
statisticMap.get(new VersionLocaleKey(
item1.getId(), selectedLocaleId));
wordStatistic2 =
statisticMap
.get(new VersionLocaleKey(item2.getId(),
selectedLocale.getLocaleId()));
statisticMap.get(new VersionLocaleKey(
item2.getId(), selectedLocaleId));
} else {
wordStatistic1 = getStatisticForProject(item1.getId());
wordStatistic2 = getStatisticForProject(item2.getId());
}

if (selectedSortOption
Expand Down Expand Up @@ -238,11 +257,37 @@ public boolean isUserProjectMaintainer() {
&& authenticatedAccount.getPerson().isMaintainerOfProjects();
}

/**
* Sort language list based on overall locale statistic for the group
*/
public void sortLanguageList() {
languageComparator.setSelectedVersionId(null);
Collections.sort(activeLocales, languageComparator);
}

/**
* Sort language list based on statistics of the version on selected locale
*/
public void sortLanguageList(Long versionId) {
languageComparator.setSelectedVersionId(versionId);
Collections.sort(activeLocales, languageComparator);
}

/**
* Sort project list based on selected locale - language tab
*
* @param localeId
*/
public void sortProjectList(LocaleId localeId) {
versionComparator.setSelectedLocaleId(localeId);
Collections.sort(projectIterations, versionComparator);
}

/**
* Sort project list based on version's overall statistics
*/
public void sortProjectList() {
versionComparator.setSelectedLocaleId(null);
Collections.sort(projectIterations, versionComparator);
}

Expand Down Expand Up @@ -435,8 +480,8 @@ private void loadStatistic() {
public List<HProjectIteration> getProjectIterations() {
if (projectIterations == null) {
projectIterations =
versionGroupServiceImpl.getNonObsoleteProjectIterationsBySlug(
slug);
versionGroupServiceImpl
.getNonObsoleteProjectIterationsBySlug(slug);
}

Collections.sort(projectIterations, versionComparator);
Expand Down
Expand Up @@ -121,7 +121,7 @@
<div
class="g__item w--1-2 w--1-2-s txt--align-right txt--s-align-right">
<zanata:sortlist id="languages-project_sorting"
sortAction="#{versionGroupHomeAction.sortProjectList()}"
sortAction="#{versionGroupHomeAction.sortProjectList(versionGroupHomeAction.selectedLocale.localeId)}"
render="languages-project_list"
sortingList="#{versionGroupHomeAction.projectSortingList}"/>
</div>
Expand Down
Expand Up @@ -122,7 +122,7 @@
<div
class="g__item w--1-2 w--1-2-s txt--align-right txt--s-align-right">
<zanata:sortlist id="projects-language_sorting"
sortAction="#{versionGroupHomeAction.sortLanguageList()}"
sortAction="#{versionGroupHomeAction.sortLanguageList(versionGroupHomeAction.selectedVersion.id)}"
render="projects-language_list"
sortingList="#{versionGroupHomeAction.languageSortingList}"/>
</div>
Expand Down

0 comments on commit 6e23630

Please sign in to comment.