diff --git a/demo/example_scroll.html b/demo/example_scroll.html
new file mode 100644
index 0000000..c11a272
--- /dev/null
+++ b/demo/example_scroll.html
@@ -0,0 +1,79 @@
+
+
+
+ "),
classes = consts.getValue("WRAPPER_CSS_CLASS");
-
+
if (config.get("theme") && config.get("theme") !== "") {
classes += " eac-" + config.get("theme");
}
@@ -1000,7 +1010,7 @@ var EasyAutocomplete = (function(scope) {
if (template.getTemplateClass() !== "") {
classes += " " + template.getTemplateClass();
}
-
+
$wrapper
.addClass(classes);
@@ -1008,16 +1018,16 @@ var EasyAutocomplete = (function(scope) {
if (config.get("adjustWidth") === true) {
- adjustWrapperWidth();
+ adjustWrapperWidth();
}
-
+
}
function adjustWrapperWidth() {
var fieldWidth = $field.outerWidth();
- $field.parent().css("width", fieldWidth);
+ $field.parent().css("width", fieldWidth);
}
function removeWrapper() {
@@ -1055,15 +1065,22 @@ var EasyAutocomplete = (function(scope) {
break;
default:
+ if(num_records
");
-
(function() {
var j = i,
- itemCounter = counter,
+ itemCounter = counter + loaded_results_num,
elementsValue = listBuilders[builderIndex].getValue(listData[j]);
$item.find(" > div")
@@ -1142,7 +1159,7 @@ var EasyAutocomplete = (function(scope) {
.mouseover(function() {
selectedElement = itemCounter;
- selectElement(itemCounter);
+ selectElement(itemCounter);
config.get("list").onMouseOverEvent();
})
@@ -1151,16 +1168,36 @@ var EasyAutocomplete = (function(scope) {
})
.html(template.build(highlight(elementsValue, phrase), listData[j]));
})();
-
$listContainer.append($item);
elementsList.push(listData[i]);
counter += 1;
}
}
- $elements_container.append($listContainer);
+ loaded_results_num += listBuilders[0].data.length;
+ console.log('Number of to-be loaded records: ' + listBuilders[0].data.length);
+ if(listBuilders[0].data.length>0){
+ console.log('Number of records: ' + num_records);
+ console.log('Number of delta records: ' + delta);
+ if(num_records 40 || event.keyCode === 8) {
+ console.log('Key detected');
+ initVars();
+ console.log('Counter: '+ delta_counter);
+ console.log('Delta: '+ delta);
+ console.log('Offset: '+ offset_rows);
var inputPhrase = $field.val();
@@ -1311,16 +1361,22 @@ var EasyAutocomplete = (function(scope) {
} else {
hideContainer();
}
-
- }
+
+ } else if (event.keyCode === undefined) {
+ offset = delta*delta_counter + delta;
+ console.log("Keyup triggered by bottom scroll");
+ console.log('Counter: '+ delta_counter);
+ console.log('Delta: '+ delta);
+ console.log('Offset: '+ offset_rows);
+ loadData($("#buscador").val());
+ }
break;
}
-
- function loadData(inputPhrase) {
+ function loadData(inputPhrase) {
if (inputPhrase.length < config.get("minCharNumber")) {
return;
@@ -1334,13 +1390,13 @@ var EasyAutocomplete = (function(scope) {
var listBuilders = listBuilderService.init(data);
listBuilders = listBuilderService.updateCategories(listBuilders, data);
-
+
listBuilders = listBuilderService.processData(listBuilders, inputPhrase);
loadElements(listBuilders, inputPhrase);
if ($field.parent().find("li").length > 0) {
- showContainer();
+ showContainer();
} else {
hideContainer();
}
@@ -1356,32 +1412,36 @@ var EasyAutocomplete = (function(scope) {
if (settings.dataType === undefined || settings.dataType === "") {
settings.dataType = config.get("dataType");
}
-
+ ajax_url = '/_get_autocomplete?word='+ inputPhrase + '&offset=' + offset_rows;
+ console.log('Crafting ajax url: ' + ajax_url);
if (settings.url !== undefined && settings.url !== "list-required") {
-
settings.url = settings.url(inputPhrase);
settings.data = config.get("preparePostData")(settings.data, inputPhrase);
-
- $.ajax(settings)
+ console.log(settings.url);
+ console.log(settings.dataType);
+ $.ajax(settings)
.done(function(data) {
-
+ console.log('AJAX call');
+ printObject(data);
var listBuilders = listBuilderService.init(data);
listBuilders = listBuilderService.updateCategories(listBuilders, data);
-
+
listBuilders = listBuilderService.convertXml(listBuilders);
+
+ global_list = listBuilders;
+
if (checkInputPhraseMatchResponse(inputPhrase, data)) {
listBuilders = listBuilderService.processData(listBuilders, inputPhrase);
+ loadElements(listBuilders, inputPhrase);
- loadElements(listBuilders, inputPhrase);
-
}
- if (listBuilderService.checkIfDataExists(listBuilders) && $field.parent().find("li").length > 0) {
- showContainer();
+ if (listBuilderService.checkIfDataExists(listBuilders) && $field.parent().find("li").length > 0) {
+ showContainer();
} else {
hideContainer();
}
@@ -1397,7 +1457,7 @@ var EasyAutocomplete = (function(scope) {
});
}
-
+
function createAjaxSettings() {
@@ -1441,7 +1501,7 @@ var EasyAutocomplete = (function(scope) {
evt = evt || window.event;
var keyCode = evt.keyCode;
if (keyCode === 38) {
- suppressKeypress = true;
+ suppressKeypress = true;
return false;
}
})
@@ -1471,18 +1531,18 @@ var EasyAutocomplete = (function(scope) {
$field.focus(function() {
if ($field.val() !== "" && elementsList.length > 0) {
-
+
selectedElement = -1;
- showContainer();
+ showContainer();
}
-
+
});
}
function bindBlur() {
$field.blur(function() {
- setTimeout(function() {
-
+ setTimeout(function() {
+
selectedElement = -1;
hideContainer();
}, 250);
@@ -1504,12 +1564,28 @@ var EasyAutocomplete = (function(scope) {
}
function selectElement(index) {
-
+
$container.trigger("selectElement.eac", index);
}
function loadElements(list, phrase) {
- $container.trigger("loadElements.eac", [list, phrase]);
+
+ if (to_append){
+ //Assigning otherwise undefined
+ $container = $("#eac-container-buscador");
+ console.log('LoadElements to append: ');
+ //console.log($container);
+ }else{
+ console.log('LoadElements not to append: ');
+ //console.log($container);
+ }
+
+ if(list[0].data.length>0){
+ $container.trigger("loadElements.eac", [list, phrase]);
+ }else{
+ console.log('No items so scroll is disabled');
+ scroll_enabled = false;
+ }
}
function loseFieldFocus() {
@@ -1539,13 +1615,13 @@ var EasyAutocomplete = (function(scope) {
var fieldId = "";
do {
- fieldId = "eac-" + Math.floor(Math.random() * 10000);
+ fieldId = "eac-" + Math.floor(Math.random() * 10000);
} while ($("#" + fieldId).length !== 0);
-
+
elementId = scope.consts.getValue("CONTAINER_ID") + fieldId;
$(input).attr("id", fieldId);
-
+
};
scope.setHandle = function(handle, id) {