Skip to content
Snippets Groups Projects
Commit fe96c808 authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

Merge branch 'main-search' into 'master'

Main Search Autocomplete

Autocomplete modified to show thumbnail and redirect when selected

See merge request !155
parents 44eba709 5f916ab4
No related branches found
No related tags found
No related merge requests found
$(document).ready(function() {
$('#search input[name=query]').autocomplete({
minLength: 3,
source: function (request, response) {
$.ajax({
url: "/autocomplete",
data: { query: request.term, search_class: $('select[name="search_class"]').val()},
dataType: "json",
success: response,
error: function () {
response([]);
}
});
}
});
$('#search input[name=query]').autocomplete({
minLength: 3,
source: function (request, response) {
$.ajax({
url: "/autocomplete",
data: { query: request.term, search_class: $('select[name="search_class"]').val()},
dataType: "json",
success: response,
error: function () {
response([]);
}
});
},
select: function(event, ui) {
window.location.href = ui.item.url;
}
}).data("uiAutocomplete")._renderItem = function(ul, item) {
return $("<li></li>")
.append("<img class='autocomplete' src='" + item.thumbnail + "'>")
.append("<a>"+ item.name +"</a>" )
.appendTo(ul);
};
});
......@@ -2,6 +2,13 @@
background-color:green;
}
.autocomplete {
width: 56px;
height: 32px;
border: 0;
margin-right: 8px;
}
.search-sidebar {
margin-top: 40px;
display: none;
......
class SearchController < ApplicationController
include LearningObjectsHelper
def index
@types = LearningObject.object_types
......@@ -18,9 +20,9 @@ class SearchController < ApplicationController
when "LearningObject"
@result = LearningObject.search params[:query], where: where_hash(params), order: lo_order_hash(params), page: params[:page] || 1, per_page: 10
when "Collection"
@result = Collection.search params[:query], where: {privacy: "public"}, order: col_order_hash(params), page: params[:page]
@result = Collection.search params[:query], where: {privacy: "public"}, order: col_order_hash(params), page: params[:page] || 1, per_page: 10
when "User"
@result = User.search params[:query], order: user_order_hash(params), page: params[:page]
@result = User.search params[:query], order: user_order_hash(params), page: params[:page] || 1, per_page: 10
else
raise "Wrong search class parameter"
end
......@@ -29,32 +31,52 @@ class SearchController < ApplicationController
end
def autocomplete
response = []
case params[:search_class]
when "LearningObject"
render json: LearningObject.search(params[:query], {
los = LearningObject.search(params[:query], {
fields: ['name^5', 'description', 'author'],
limit: 10,
load: false,
misspellings: { below: 5 }
}).map(&:name)
})
los.each do |lo|
hash = {}
hash["name"] = lo.name
hash["thumbnail"] = "/assets/"+learning_object_thumbnail(lo)
hash["url"] = url_for([lo, :only_path => false])
response << hash
end
when "Collection"
render json: Collection.search(params[:query], {
cols = Collection.search(params[:query], {
where: {privacy: "public"},
fields: ['name^5', 'description', 'owner'],
limit: 10,
load: false,
misspellings: { below: 5 }
}).map(&:name)
})
cols.each do |col|
hash = {}
hash["name"] = col.name
hash["thumbnail"] = "/assets/icons/collection"
hash["url"] = url_for([col, :only_path => false])
response << hash
end
when "User"
render json: User.search(params[:query], {
users = User.search(params[:query], {
fields: ['name'],
limit: 10,
load: false,
misspellings: { below: 5 }
}).map(&:name)
})
users.each do |user|
hash = {}
hash["name"] = user.name
hash["thumbnail"] = user.avatar.url(:thumb)
hash["url"] = url_for([user, :only_path => false])
response << hash
end
else
raise "Wrong search class parameter"
end
render json: response
end
private
......
......@@ -9,7 +9,7 @@ module LearningObjectsHelper
when 'PDF' then
"<iframe src=\"/pdfjs/web/viewer.html?file=#{learning_object.retrieve_link }\" style=\"border: 0 \" width=\"125%\" height=\"280\" frameborder=\"0\" scrolling=\"no\"></iframe>".html_safe
else
learning_object_thumbnail learning_object, "large"
image_tag learning_object_thumbnail(learning_object, "large"), alt: learning_object_title(learning_object), class: "thumbnail"
end
end
......@@ -44,7 +44,7 @@ module LearningObjectsHelper
else
thumbnail = learning_object.thumbnail
end
image_tag thumbnail, alt: learning_object_title(learning_object), class: "thumbnail"
thumbnail
end
def learning_object_title(learning_object)
......
......@@ -4,7 +4,7 @@
<!-- <div class="col-md-5"> -->
<div class="learning-object-thumbnail">
<%= link_to link do
learning_object_thumbnail learning_object
image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
end %>
<% if user_signed_in? %>
......
......@@ -2,7 +2,7 @@
<div class="panel">
<div class="learning-object-thumbnail">
<%= link_to learning_object_path(id: learning_object.id) do
learning_object_thumbnail learning_object
image_tag learning_object_thumbnail(learning_object), alt: learning_object_title(learning_object), class: "thumbnail"
end %>
<% if user_signed_in? %>
<%= render 'learning_objects/actions_buttons', learning_object: learning_object %>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment