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

Commit

Permalink
Implment language tab in group page
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Nov 6, 2013
1 parent 1166081 commit e8fe3f9
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 126 deletions.
Expand Up @@ -89,7 +89,7 @@ public class VersionGroupHomeAction extends SlugHome<HIterationGroup> {

@Getter
@Setter
private String view = "tab-languages";
private String view = "languages_tab";

@Getter
private OverallStatistic overallStatistic;
Expand Down
15 changes: 5 additions & 10 deletions zanata-war/src/main/java/org/zanata/util/StatisticsUtil.java
Expand Up @@ -22,21 +22,18 @@ public static int calculateUntranslated(Long totalCount,
}

public static double getRemainingHours(WordStatistic wordsStatistic) {
return getRemainingHours(wordsStatistic.getTranslated(),
wordsStatistic.getUntranslated(),
return getRemainingHours(wordsStatistic.getUntranslated(),
wordsStatistic.getNeedReview() + wordsStatistic.getRejected());
}

public static double getRemainingHours(
TranslationStatistics translationStatistics) {
return getRemainingHours(translationStatistics.getTranslatedOnly(),
translationStatistics.getUntranslated(),
return getRemainingHours(translationStatistics.getUntranslated(),
translationStatistics.getDraft());
}

public static double getRemainingHours(TransUnitWords transUnitWords) {
return getRemainingHours(transUnitWords.getTranslated(),
transUnitWords.getUntranslated(),
return getRemainingHours(transUnitWords.getUntranslated(),
transUnitWords.getNeedReview());
}

Expand All @@ -48,13 +45,11 @@ public static String formatHours(double hours) {
return String.valueOf(Math.ceil(hours * 100.0) / 100);
}

private static double getRemainingHours(double translated,
double untranslated, double draft) {
private static double getRemainingHours(double untranslated, double draft) {
double untranslatedHours = untranslated / 250.0;
double draftHours = draft / 500.0;
double translatedHours = translated / 500.0;

return translatedHours + untranslatedHours + draftHours;
return untranslatedHours + draftHours;
}

}
Expand Up @@ -31,7 +31,6 @@
</div>
<div
class="g__item w--1-2 w--1-2-s txt--align-right txt--s-align-right">

<zanata:sortlist id="language_sorting"
sortAction="#{versionGroupHomeAction.sortLanguageList()}"
render="language_list"
Expand Down Expand Up @@ -61,7 +60,7 @@
class="progress-bar__expander panels__panel__item bg--highest--hover">
<a4j:commandLink
action="#{versionGroupHomeAction.setSelectedLocale(locale)}"
render="projects_column"
render="project_list"
onclick="update_activeRow(this), toggleColumn()">
<div class="list__item">
<div class="list__item__info">
Expand Down Expand Up @@ -98,50 +97,48 @@
</div>

<div class="g__item w--1-2 w--1-2-s panels__panel is-active">
<s:div styleClass="bg--pop-higher" id="projects_column">
<s:fragment
rendered="#{versionGroupHomeAction.selectedLocale != null}">
<div class="panels__panel__header">
<div class="g--tight">
<div class="g__item w--1-2 w--1-2-s">
<h2 class="heading--secondary epsilon">
<span class="is-hidden--l-up">
<a href="#" onclick="toggleColumn()">
#{messages['jsf.Languages']}
</a>
<i class="i i--arrow-right"></i>
</span>
<i class="i i--project l--push-right-quarter"></i>
#{versionGroupHomeAction.selectedLocale.retrieveDisplayName()}
#{messages['Projects']}
</h2>
</div>
<div
class="g__item w--1-2 w--1-2-s txt--align-right txt--s-align-right">
<zanata:sortlist id="project_sorting"
sortAction="#{versionGroupHomeAction.sortProjectList()}"
render="project_list"
sortingList="#{versionGroupHomeAction.projectSortingList}"/>
</div>
<s:div styleClass="bg--pop-higher">
<div class="panels__panel__header">
<div class="g--tight">
<div class="g__item w--1-2 w--1-2-s">
<h2 class="heading--secondary epsilon">
<span class="is-hidden--l-up">
<a href="#" onclick="toggleColumn()">
#{messages['jsf.Languages']}
</a>
<i class="i i--arrow-right"></i>
</span>
<i class="i i--project l--push-right-quarter"></i>
#{versionGroupHomeAction.selectedLocale.retrieveDisplayName()}
#{messages['Projects']}
</h2>
</div>
<div
class="g__item w--1-2 w--1-2-s txt--align-right txt--s-align-right">
<zanata:sortlist id="project_sorting"
sortAction="#{versionGroupHomeAction.sortProjectList()}"
render="project_list"
sortingList="#{versionGroupHomeAction.projectSortingList}"/>
</div>
</div>
<h:form id="project_list">
<s:fragment
rendered="#{versionGroupHomeAction.selectedLocale != null and !versionGroupHomeAction.getProjectIterations().isEmpty()}">
<ul class="list--stats">
<ui:repeat
value="#{versionGroupHomeAction.getProjectIterations()}"
var="version">
<li
class="progress-bar__expander panels__panel__item bg--highest--hover">
<a href="#">
<div class="list__item">
<div class="list__item__info">
</div>
<h:form id="project_list">
<s:fragment
rendered="#{versionGroupHomeAction.selectedLocale != null and !versionGroupHomeAction.getProjectIterations().isEmpty()}">
<ul class="list--stats">
<ui:repeat
value="#{versionGroupHomeAction.getProjectIterations()}"
var="version">
<li
class="progress-bar__expander panels__panel__item bg--highest--hover">
<a href="#">
<div class="list__item">
<div class="list__item__info">
<span class="list__title">#{version.project.name}
<i class="i i--version"></i> #{version.slug}
</span>
</div>
<div class="list__item__stats">
</div>
<div class="list__item__stats">
<span class="stats--small">
<span class="stats__figure">
${versionGroupHomeAction.getStatisticFigure(versionGroupHomeAction.projectSortingList.selectedSortOption, versionGroupHomeAction.selectedLocale.localeId)}
Expand All @@ -150,37 +147,36 @@
${versionGroupHomeAction.getStatisticUnit(versionGroupHomeAction.projectSortingList.selectedSortOption)}
</span>
</span>
</div>
</div>
<zanata:statistic
value="${versionGroupHomeAction.getSelectedLocaleStatistic(version.id)}"/>
</a>
</li>
</ui:repeat>
</ul>
</s:fragment>
<s:fragment
rendered="#{versionGroupHomeAction.selectedLocale == null}">
<div class="l--pad-all-half">
<p class="txt--meta">
#{messages['jsf.SelectALanguageFromList']}
</p>
</div>
</s:fragment>
<s:fragment
rendered="#{versionGroupHomeAction.getProjectIterations().isEmpty()}">
<div class="l--pad-all-half">
<p class="txt--meta">#{messages['jsf.NoProjectsInGroup']}</p>

<p>
<a href="#" class="button--primary">
#{messages['jsf.AddProjectVersions']}
</div>
<zanata:statistic
value="${versionGroupHomeAction.getSelectedLocaleStatistic(version.id)}"/>
</a>
</p>
</div>
</s:fragment>
</h:form>
</s:fragment>
</li>
</ui:repeat>
</ul>
</s:fragment>
<s:fragment
rendered="#{versionGroupHomeAction.selectedLocale == null}">
<div class="l--pad-all-half">
<p class="txt--meta">
#{messages['jsf.SelectALanguageFromList']}
</p>
</div>
</s:fragment>
<s:fragment
rendered="#{versionGroupHomeAction.getProjectIterations().isEmpty()}">
<div class="l--pad-all-half">
<p class="txt--meta">#{messages['jsf.NoProjectsInGroup']}</p>

<p>
<a href="#" class="button--primary">
#{messages['jsf.AddProjectVersions']}
</a>
</p>
</div>
</s:fragment>
</h:form>
</s:div>
</div>
</div>
Expand Down
Expand Up @@ -4,5 +4,13 @@
xmlns:h="http://java.sun.com/jsf/html"
xmlns:zanata="http://java.sun.com/jsf/composite/zanata"
xmlns:a4j="http://richfaces.org/a4j">
projects

<s:link styleClass="action_link" view="/version-group/request_to_join.xhtml"
value="#{messages['jsf.RequestToJoinVersionGroup']}" propagation="none"
rendered="#{versionGroupHomeAction.isUserProjectMaintainer()}">
<f:param name="emailType" value="request_to_join_group"/>
<f:param name="versionGroupSlug"
value="#{versionGroupHomeAction.instance.slug}"/>
</s:link>

</ui:composition>
84 changes: 40 additions & 44 deletions zanata-war/src/main/webapp/version-group/version_group.xhtml
Expand Up @@ -21,22 +21,23 @@
renderStatistics();
});

function toggleActiveTab(tabId) {
jQuery("[id^=tab-]").removeClass('is-active');
function setActiveTab(tabId) {
jQuery("[id$=_tab]").removeClass('is-active');
jQuery('#' + tabId).addClass('is-active');

jQuery("[id$=_tab_content]").css('display', 'none');
jQuery('#' + tabId + '_content').css('display', 'block');
}
</script>

<h:form>
<a4j:jsFunction name="renderStatistics"
render="overall_statistic, language_list"
action="#{versionGroupHomeAction.setPageRendered(true)}"/>
<a4j:jsFunction name="renderStatistics"
render="overall_statistic, language_list"
action="#{versionGroupHomeAction.setPageRendered(true)}"/>

<a4j:jsFunction name="selectTab" render="tabs_content">
<a4j:param name="selectedView"
assignTo="#{versionGroupHomeAction.view}"/>
</a4j:jsFunction>
</h:form>
<a4j:jsFunction name="updateView">
<a4j:param name="selectedView"
assignTo="#{versionGroupHomeAction.view}"/>
</a4j:jsFunction>

<div class="g">
<div class="g__item w--1-2-m w--3-8-l w--1-3 l--push-bottom-1">
Expand Down Expand Up @@ -104,8 +105,8 @@
<ul>
<li>
<a4j:commandLink
onclick="toggleActiveTab(this.id);selectTab(this.id)"
id="tab-languages"
onclick="updateView(this.id);setActiveTab(this.id)"
id="languages_tab"
styleClass="#{versionGroupHomeAction.view eq component.id ? 'is-active' : ''}">
<i class="i i--language"></i>
<span class="is-hidden--m-down">
Expand All @@ -118,8 +119,8 @@
</li>
<li>
<a4j:commandLink
onclick="toggleActiveTab(this.id);selectTab(this.id)"
id="tab-projects"
onclick="updateView(this.id);setActiveTab(this.id)"
id="projects_tab"
styleClass="#{versionGroupHomeAction.view eq component.id ? 'is-active' : ''}">
<i class="i i--project"></i>
<span class="is-hidden--m-down">
Expand All @@ -132,8 +133,8 @@
</li>
<li>
<a4j:commandLink
onclick="toggleActiveTab(this.id);selectTab(this.id)"
id="tab-maintainers"
onclick="updateView(this.id);setActiveTab(this.id)"
id="maintainers_tab"
styleClass="#{versionGroupHomeAction.view eq component.id ? 'is-active' : ''}">
<i class="i i--users"></i>
<span class="is-hidden--m-down">
Expand All @@ -144,58 +145,53 @@
</span>
</a4j:commandLink>
</li>
<li>
<a4j:commandLink
onclick="toggleActiveTab(this.id);selectTab(this.id)"
id="tab-settings"
styleClass="#{versionGroupHomeAction.view eq component.id ? 'is-active' : ''}">
<i class="i i--settings"></i>
<s:fragment
rendered="#{s:hasPermission(versionGroupHomeAction.instance, 'update')}">
<li>
<a4j:commandLink
onclick="updateView(this.id);setActiveTab(this.id)"
id="settings_tab"
styleClass="#{versionGroupHomeAction.view eq component.id ? 'is-active' : ''}">
<i class="i i--settings"></i>
<span class="is-hidden--m-down">
#{messages['jsf.Settings']}
</span>
</a4j:commandLink>
</li>
</a4j:commandLink>
</li>
</s:fragment>
</ul>
</nav>

<s:div styleClass="tabs__content panels__container l--push-top-1"
id="tabs_content">
<s:div
style="#{versionGroupHomeAction.view eq 'tab-languages' ? 'display: initial' : 'display:none'}">
<div class="tabs__content panels__container l--push-top-1">
<s:div id="languages_tab_content"
style="#{versionGroupHomeAction.view.concat('_content') eq component.id ? '' : 'display:none'}">
<ui:include
src="../WEB-INF/layout/version-group/languages-tab.xhtml">
</ui:include>
</s:div>

<s:div
style="#{versionGroupHomeAction.view eq 'tab-projects' ? 'display: initial' : 'display:none'}">
<s:div id="projects_tab_content"
style="#{versionGroupHomeAction.view.concat('_content') eq component.id ? '' : 'display:none'}">
<ui:include
src="../WEB-INF/layout/version-group/projects-tab.xhtml"/>
</s:div>

<s:div
style="#{versionGroupHomeAction.view eq 'tab-maintainers' ? 'display: initial' : 'display:none'}">
<s:div id="maintainers_tab_content"
style="#{versionGroupHomeAction.view.concat('_content') eq component.id ? '' : 'display:none'}">
<ui:include
src="../WEB-INF/layout/version-group/maintainers-tab.xhtml"/>
</s:div>

<s:div
style="#{versionGroupHomeAction.view eq 'tab-settings' ? 'display: initial' : 'display:none'}">
<s:div id="settings_tab_content"
style="#{versionGroupHomeAction.view.concat('_content') eq component.id ? '' : 'display:none'}"
rendered="#{s:hasPermission(versionGroupHomeAction.instance, 'update')}">
<ui:include
src="../WEB-INF/layout/version-group/settings-tab.xhtml"/>
</s:div>
</s:div>
</div>
</div>
</div>
</div>

<s:link styleClass="action_link" view="/version-group/request_to_join.xhtml"
value="#{messages['jsf.RequestToJoinVersionGroup']}" propagation="none"
rendered="#{versionGroupHomeAction.isUserProjectMaintainer()}">
<f:param name="emailType" value="request_to_join_group"/>
<f:param name="versionGroupSlug"
value="#{versionGroupHomeAction.instance.slug}"/>
</s:link>
</ui:define>

</ui:composition>

0 comments on commit e8fe3f9

Please sign in to comment.