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

search via ajax

parent 4cd171aa
No related branches found
No related tags found
No related merge requests found
var search = function() {
function getUrlVars() {
var vars = {}, hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
// single value
if (typeof vars[hash[0]] === 'undefined'){
vars[hash[0]] = hash[1];
}
// multi value
else {
// transform to array if single string
if( typeof vars[hash[0]] === 'string' ) {
var string = vars[hash[0]];
vars[hash[0]] = [].push(string);
}
vars[hash[0]].push(hash[1]);
}
}
return vars;
}
function fetch() {
var params = getUrlVars();
$.ajax({
url:"/search/fetch",
type: 'get',
data: params,
beforeSend: function() {
$("#search-fetch").empty();
$("#search-fetch").append('<br><br><div style="text-align:center;"><div class="pong-loader">Carregando...</div></div>');
}
})
.done(function (data) {
$("#search-fetch").empty();
$("#search-fetch").append(data);
});
}
return {
fetch: function() { fetch(); }
};
};
$(document).ready(function () {
$(".select-tag-container").select2();
......@@ -17,4 +63,6 @@ $(document).ready(function () {
$('.nestedAccordion .dropdown').click(function () {
runDropdown(this);
});
search().fetch();
});
......@@ -6,6 +6,8 @@ $background-grey: #e7e7e8;
.panel-body {
padding: 0 !important;
margin-top: 3px;
overflow: hidden;
text-overflow: ellipsis;
}
.media-heading {
......
This diff is collapsed.
class SearchController < ApplicationController
include SearchEngine::OrientdbLucene
def index
end
def fetch
objectsFound = []
page=1
......@@ -16,6 +18,8 @@ class SearchController < ApplicationController
end
unless params[:qry].blank?
params[:sort] = "" if params[:sort].blank?
objectsFound = search params[:qry], params[:sort]
@numFound = objectsFound.length
......@@ -24,14 +28,6 @@ class SearchController < ApplicationController
# end
#
# case params[:sort]
# when "author"
# objectsFound = sort_author(objectsFound);
# when "publicationasc"
# objectsFound = objectsFound.sort_by{|item| [ item.id ]}
# when "publicationdesc"
# # objectsFound = objectsFound.sort_by{|item| - item.id }
# objectsFound
# when "relevance"
# items = objectsFound.collect{ |x| Ranking::Item.new(x.name,x.views,0,x.likes,x) } #puts each object in an item
#
# rater = Ranking::Rater.new(
......@@ -52,6 +48,8 @@ class SearchController < ApplicationController
@objects = build_page_result(objectsFound, page, @pagination_limit)
@result = Kaminari.paginate_array(objectsFound).page(page).per(@pagination_limit)
render partial: 'search/fetch'
end
private
......
<% unless @result.blank? %>
<div>
<%= page_entries_info @result %>
<form method="get">
<input type="hidden" name="qry" value="<%= params["qry"] %>">
<select name="page_limit" onchange='this.form.submit()'>
<option value="<%= @pagination_limit %>">Resultados por Página</option>
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
</select>
<select name="sort" onchange='this.form.submit()'>
<option value=<%= @ordena %>>Ordenar por</option>
<option value="author">Autores</option>
<option value="publicationasc">Mais novos</option>
<option value="publicationdesc">Mais velhos</option>
<option value="relevance">Relevância</option>
<option value="type">Tipo</option>
<option value="title">Título</option>
</select>
</form>
<br/>
</div>
<br/>
<% end %>
<%= render @objects, orientation: "horizontal" %>
<%= paginate @result %>
<div class="row">
<div class="col-sm-4 search-sidebar">
<!-- <h2>Busca Avançada</h2> -->
<!-- <div class="media">
<div class="media filters">
<div class="media-left">
<span class="glyphicon glyphicon-list" style="font-size: 40px" aria-hidden="true" />
<%= image_tag 'icons/filter.png', width:'40px', height:'40px' %>
</div>
<div class="media-body">
<h4 class="media-heading">Filtros</h4>
<h3 class="media-heading">Filtros</h3>
Nenhum selecionado
</div>
</div> -->
</div>
<div class="nestedAccordion">
<h3 class="dropdown open">Matérias<span class="caret caret-align-right"/></h3>
......@@ -261,38 +261,6 @@
<!-- search results -->
<div class="col-sm-8">
<% unless @result.empty? %>
<div>
<%= page_entries_info @result %>
<form method="get">
<input type="hidden" name="qry" value="<%= params["qry"] %>">
<select name="page_limit" onchange='this.form.submit()'>
<option value="<%= @pagination_limit %>">Resultados por Página</option>
<option value="10">10</option>
<option value="25">25</option>
<option value="50">50</option>
</select>
<select name="sort" onchange='this.form.submit()'>
<option value=<%= @ordena %>>Ordenar por</option>
<option value="author">Autores</option>
<option value="publicationasc">Mais novos</option>
<option value="publicationdesc">Mais velhos</option>
<option value="relevance">Relevância</option>
<option value="type">Tipo</option>
<option value="title">Título</option>
</select>
</form>
<br/>
</div>
<br/>
<div class="container-fluid">
<%= render @objects, orientation: "horizontal" %>
<%= paginate @result %>
</div>
<% end %>
<div id="search-fetch" class="container-fluid"></div>
</div>
<!-- col-sm-8 -->
</div><!-- /container -->
</div>
......@@ -45,10 +45,9 @@ Rails.application.routes.draw do
end
get 'users/:id', to: 'users#show', as: 'users_show'
get '/faq' => 'welcome#faq'
get '/contact' => 'welcome#contact', as: 'contact'
get '/complaint' => 'welcome#complaint', as: 'complaint'
get '/search' => 'search#index', as: 'search'
get '/search/fetch' => 'search#fetch', as: 'search_fetch'
get '/subject/:id' => 'welcome#subject', as:'subject_index'
end
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