parsley/app/assets/javascripts/recipes.js
Dan Elbert 3b4134f684 units
2016-01-14 15:22:15 -06:00

79 lines
2.0 KiB
JavaScript

(function($) {
function reorder($container) {
$container.find("div.nested-fields").each(function(idx, editor) {
var $editor = $(editor);
$editor.find('input.sort-order').val(idx + 1).trigger("changed");
})
}
function initializeIngredientEditor($container, ingredientSearchEngine) {
$container.find(".ingredient-typeahead").typeahead({
},
{
name: 'ingredients',
source: ingredientSearchEngine,
display: function(datum) {
return datum.name;
}
});
}
$(document).on("ready page:load", function() {
var ingredientSearchEngine = new Bloodhound({
datumTokenizer: function(datum) {
return Bloodhound.tokenizers.whitespace(datum.name);
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
identify: function(datum) { return datum.id; },
sorter: function(a, b) {
if (a.name < b.name) {
return -1;
} else if (b.name < a.name) {
return 1;
} else {
return 0;
}
},
prefetch: {
url: '/ingredients/prefetch.json',
cache: false
},
remote: {
url: '/ingredients/search.json?query=%QUERY',
wildcard: '%QUERY'
}
});
$("#step-list")
.on("cocoon:after-insert", function(e, item) {
reorder($(this));
})
.on("cocoon:after-remove", function(e, item) {
reorder($(this));
})
.on('changed', 'input.sort-order', function() {
var $this = $(this);
var $span = $this.closest(".nested-fields").find(".sort-order-display");
$span.html($this.val());
});
var $ingredientList = $("#ingredient-list");
initializeIngredientEditor($ingredientList, ingredientSearchEngine);
$ingredientList
.on("cocoon:after-insert", function(e, item) {
reorder($(this));
initializeIngredientEditor(item, ingredientSearchEngine);
})
.on("cocoon:after-remove", function(e, item) {
reorder($(this));
});
});
})(jQuery);