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

Commit

Permalink
WIP: scrolling for project search
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Jan 3, 2014
1 parent 57e5194 commit 60ad23f
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 43 deletions.
21 changes: 12 additions & 9 deletions zanata-war/src/main/java/org/zanata/action/ProjectSearch.java
@@ -1,10 +1,9 @@
package org.zanata.action;

import com.google.common.collect.Lists;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.List;
import javax.faces.model.DataModel;

import org.apache.commons.lang.StringUtils;
import org.apache.lucene.queryParser.ParseException;
import org.jboss.seam.ScopeType;
Expand All @@ -15,10 +14,12 @@
import org.zanata.dao.ProjectDAO;
import org.zanata.model.HProject;
import org.zanata.security.ZanataIdentity;
import com.google.common.collect.Lists;

import javax.faces.model.DataModel;
import java.io.Serializable;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Name("projectSearch")
@Scope(ScopeType.CONVERSATION)
Expand Down Expand Up @@ -70,7 +71,9 @@ public List<SearchResult> suggestProjects() {
"view-obsolete"));

for (HProject project : searchResult) {
result.add(new SearchResult(project));
for (int i = 0; i < 10; i++) {
result.add(new SearchResult(project));
}
}
result.add(new SearchResult());
return result;
Expand Down
2 changes: 1 addition & 1 deletion zanata-war/src/main/resources/messages.properties
Expand Up @@ -418,7 +418,7 @@ jsf.LanguageAlreadyInGroup=Language '{0}' is already added to group.
jsf.InvalidProjectVersion=Invalid project version
jsf.VersionAlreadyInGroup=Version '{0}' is already added to group.
jsf.ArchiveThisGroup=Archive this Group
jsf.ActivateThisGroup=Activate this Group
jsf.UnArchiveThisGroup=Unarchive this Group
jsf.MaintainerRemoveFromGroup=Maintainer '{0}' has been removed from group.
jsf.MaintainerAddedToGroup=Maintainer '{0}' has been added to group.
jsf.InvalidUsername=Invalid username.
Expand Down
Expand Up @@ -86,12 +86,14 @@
<p>
<a4j:commandLink styleClass="button--success"
action="#{versionGroupHome.setStatus('A')}" render="status">
#{messages['jsf.ActivateThisGroup']}
<i
class="i--left i--archive"></i> #{messages['jsf.UnArchiveThisGroup']}
</a4j:commandLink>
</p>

<p class="txt--meta">
#{messages['jsf.ActivateGroupMessage']}
<i
class="i--left i--archive"></i> #{messages['jsf.ActivateGroupMessage']}
</p>
</s:fragment>

Expand Down Expand Up @@ -127,7 +129,8 @@
selectedField="#{versionGroupHome.selectedLocale}"
getResultAction="#{versionGroupHome.suggestLocales()}"
onSelectItemAction="#{versionGroupHome.addLanguage()}"
maxlength="80" searchWhenFocus="true" id="languageAutocomplete"
maxlength="80" minlength="1" searchWhenFocus="true"
id="languageAutocomplete"
queryField="#{versionGroupHome.languageQuery}"
fetchValue="#{result.localeId}" render="settings-languages-form"
oncomplete="refreshStatistics();focusCurrentActiveInput()"
Expand Down
Expand Up @@ -36,9 +36,11 @@ jQuery(document).ready(function() {
});

function onResultKeyPressed(autocomplete, event, selectItemAction,
selectItemFunction) {
var currentSelected = jQuery(autocomplete).find('.autocomplete__results')
.children('.is-selected');
selectItemFunction) {

var resultDiv = jQuery(autocomplete).find('.autocomplete__results');

var currentSelected = jQuery(resultDiv).children('.is-selected');

if (isEnterKey(event)) {
event.preventDefault();
Expand All @@ -47,22 +49,20 @@ function onResultKeyPressed(autocomplete, event, selectItemAction,
}
} else if (event.keyCode == 40) {
// key: down
deselectRow(currentSelected);
clearAllSelection(resultDiv);
if (currentSelected.length == 0
|| jQuery(currentSelected).next().length == 0) {
selectRow(jQuery(autocomplete).find('.autocomplete__results').children(
'li').first());
|| jQuery(currentSelected).next().length == 0) {
selectRow(resultDiv, jQuery(resultDiv).children('li').first());
} else {
selectRow(jQuery(currentSelected).next("li"));
selectRow(resultDiv, jQuery(currentSelected).next("li"));
}
} else if (event.keyCode == 38) {
// key: up
deselectRow(currentSelected);
clearAllSelection(resultDiv);
if (currentSelected.length == 0) {
selectRow(jQuery(autocomplete).find('.autocomplete__results').children(
'li').last());
selectRow(resultDiv, jQuery(resultDiv).children('li').last());
} else {
selectRow(jQuery(currentSelected).prev("li"));
selectRow(resultDiv, jQuery(currentSelected).prev("li"));
}
}
}
Expand All @@ -76,8 +76,21 @@ function onSelectItem(row, selectItemAction, selectItemFunction) {
jQuery(row).parent().remove();
}

function selectRow(row) {
function selectRow(resultDiv, row) {
jQuery(row).addClass("is-selected");

var resultDivPos = jQuery(resultDiv).height();
var rowPos = jQuery(row).offset().top + jQuery(row).height();

console.info(resultDivPos + ":" + rowPos);

if (resultDivPos <= rowPos) {
console.log('out');
jQuery(resultDiv).animate({
scrollTop : (jQuery(row).offset().top)
}, 500);
}
// jQuery(resultDiv).scrollTop(rowPos);
}

function deselectRow(row) {
Expand Down Expand Up @@ -108,25 +121,33 @@ function onValueChange(inputField, event, renderResultFn) {
}

function registerMouseEvent(autocompleteId, selectItemAction,
selectItemFunction) {
jQuery("[id='" + autocompleteId + "']").find('.autocomplete__results')
.children('.autocomplete__result').each(function() {
jQuery(this).mouseover(function() {
selectRow(this);
});

jQuery(this).mouseout(function() {
deselectRow(this);
});

jQuery(this).click(function() {
onSelectItem(this, selectItemAction, selectItemFunction);
});
});
selectItemFunction) {
var resultDiv = jQuery("[id='" + autocompleteId + "']").find(
'.autocomplete__results');

jQuery(resultDiv).children('.autocomplete__result').each(function() {
jQuery(this).mouseover(function() {
clearAllSelection(resultDiv);
selectRow(resultDiv, this);
});

jQuery(this).mouseout(function() {
deselectRow(this);
});

jQuery(this).click(function() {
onSelectItem(this, selectItemAction, selectItemFunction);
});
});

var firstResult = jQuery("[id='" + autocompleteId + "']").find(
'.autocomplete__results').children('.autocomplete__result').first();
'.autocomplete__results').children('.autocomplete__result').first();
if (firstResult.length != 0) {
selectRow(firstResult);
selectRow(resultDiv, firstResult);
}
}

function clearAllSelection(resultDiv) {
jQuery(resultDiv).children('.autocomplete__result')
.removeClass("is-selected");
}

0 comments on commit 60ad23f

Please sign in to comment.