Skip to content
Snippets Groups Projects
Commit c8c37a9b authored by Mauricio Giacomini Girardello's avatar Mauricio Giacomini Girardello
Browse files

Merge branch 'master' of gitlab.c3sl.ufpr.br:portalmec/portalmec

parents 08d2b1d1 40f07701
No related branches found
No related tags found
No related merge requests found
......@@ -12,40 +12,31 @@ var fontSize = function() {
});
// init
size_c = readCookie('fontSize');
if (size_c != null) {
$(document).ready(function() {
reloadFontSize(size_c);
});
}
else {
createCookie('fontSize', 0, 365);
}
$(document).ready(function() {
size_c = readCookie('fontSize');
if (size_c != null) reloadFontSize(size_c);
else createCookie('fontSize', 0, 365);
});
function reloadFontSize(size) {
var i = 0;
size = (parseFloat(size) / 10) + 1;
// change body zoom
$('body').css('zoom', size, 'important');
$('body').css('-moz-transform', "scale("+size+")", 'important');
$('body').css('-moz-transform-origin', '0 0', 'important');
// change body font size
$('body').css('fontSize', (size * 100) + '%', 'important');
// change custom elements
for (i; i < elements_length; i++) {
$(elements[i]).css('fontSize', (parseFloat(elements_size[elements[i]]) * size) + "px", 'important');
}
}
return {
resizeText: function(increment) {
var size = parseFloat(readCookie('fontSize'));
increment = parseFloat(increment);
if (increment === 0) size = 0;
else if (((size > -6) && (increment < 0)) || ((size < 7) && (increment > 0))) {
size = size + increment;
};
reloadFontSize(size);
createCookie('fontSize', size, 365);
}
};
......
......@@ -12,17 +12,19 @@ var search = function() {
}
// change url with new parameters
searchState(params);
if (!fetch_init) { fetch_init = true; }
else if (!append) { searchState(params); }
$.ajax({
url:"/search/fetch",
type: 'get',
data: params.get(),
data: params.get_fetch(),
beforeSend: function() {
if (append) {
$('.search-more').remove();
}
else {
$('.result-bar').hide();
$("#search-fetch").empty();
}
$('#search-fetch').append('<div class="search-loading" style="text-align:center;"><br><div class="pong-loader">Carregando...</div></div>');
......@@ -34,6 +36,8 @@ var search = function() {
}
else {
$("#search-fetch").empty();
$('.result-info-count').html($(data).filter('input:hidden[name="learning-objects-count"]').val());
$('.result-bar').show();
}
$("#search-fetch").append(data);
......@@ -49,15 +53,12 @@ var search = function() {
var has_init = false;
function init() {
// init when document is ready
$(document).ready(function () {
// check url and set inputs with params
checkUrl();
watchSearchInput();
watchOrder();
watchFilters();
});
// check url and set inputs with params
checkUrl();
watchSearchInput();
watchOrder();
watchFilters();
}
// get parameters from url when page is loaded
......@@ -107,6 +108,7 @@ var search = function() {
watchCheckbox('school_year', 'filter-school-year');
}
// control ajax requisitions (fetch) of filters
function filtersFetchInterval() {
// cancel previous function call
clearInterval(intervalId);
......@@ -114,7 +116,7 @@ var search = function() {
searchFetch();
// cancel to not loop (interval)
clearInterval(intervalId);
}, 800 );
}, 800);
}
function watchFilterSubject() {
......@@ -183,38 +185,24 @@ var search = function() {
//// INIT
// initiate params
var params = searchParameters();
var fetch_init = false;
// init when document is ready
$(document).ready(function () {
// return previous state when back
$(window).on("popstate", function(e) {
var original = e.originalEvent.state;
history.replaceState(original, original.url, original.url);
searchFetch();
});
// run watchers
searchWatchers().init();
// run watchers
searchWatchers().init();
});
// TODO: find a way to manage all requisitions without page reload
};
//// SEARCH STATE
// take care of History API
var searchState = function(params, replace) {
if (replace === undefined) {
replace = false;
}
var newState = history.state;
if ((replace === undefined) || (replace !== true)) { replace = false; }
var newState = JSON.parse(JSON.stringify(history.state));
newState.url = params.url();
newState.search_params = params.get();
if (replace) {
history.replaceState(newState, newState.url, newState.url);
}
else {
history.pushState(newState, newState.url, newState.url);
}
if (replace) { history.replaceState(newState, location.href, location.href); }
else { history.pushState(newState, newState.url, newState.url); }
}
//// SEARCH PARAMETERS
......@@ -279,6 +267,13 @@ var searchParameters = function() {
}
return params[type];
},
get_fetch: function() {
var params_to_send = JSON.parse(JSON.stringify(params));
params_to_send.subject = params_to_send.subject.join(', ');
params_to_send.type = params_to_send.type.join(', ');
params_to_send.school_year = params_to_send.school_year.join(', ');
return params_to_send;
},
url: function() {
var url = history.state.url.split('?', 1) + "?",
keys = Object.keys(params),
......@@ -318,12 +313,14 @@ var searchParameters = function() {
//// DROPDOWN
var runDropdown = function(element) {
if ($(element).next().is(':hidden')) {
if (($(element).next().data('dropdown') === 'closed')) {
$('> .caret', element).addClass('caret-up');
$(element).next().slideDown();
$(element).next().data('dropdown', 'open');
}
else {
$('> .caret', element).removeClass('caret-up');
$(element).next().slideUp();
$(element).next().data('dropdown', 'closed');
}
};
.search-sidebar {
margin-top: 40px;
display: none;
.dropdown-element {
width: 95%;
margin-left: 3%;
}
}
.nestedAccordion {
......@@ -20,109 +20,18 @@
width: 100% !important;
}
.result-info{
font-weight: 500;
color: #88888D;
}
.result-bar {
display: none;
.sort-dropdown{
border: 0;
border-radius: 3px;
color: #59585A;
padding-right: 20px;
}
.result-info {
font-weight: 500;
color: #88888D;
}
// #nestedAccordion{
// width:100%;
// }
// #nestedAccordion h2, #nestedAccordion h3,
// #nestedAccordion div, #nestedAccordion ol,
// #nestedAccordion li{
// /* reset styles for accordion */
// margin:0;
// padding:0;
// font-size:1em;
// font-weight:normal;
// list-style:none;
// }
// #nestedAccordion div{
// color:#555;/*#555 #003300*/
// overflow:hidden;
// display:none;
// }
//
// #nestedAccordion h2{
// cursor:pointer;
// color:#fff;
// font-size:1.1em;
// moz-border-radius: 5px 5px 0 0;
// -webkit-border-radius: 5px 5px 0 0;
// border-radius: 5px 5px 0 0;
// padding:3px;
// margin-top:5px;
// background-color: #3F434F;
// background-image: -webkit-gradient(linear, left top, left bottom, from(#4B8CFF), to(#447FE8));
// background-image: -webkit-linear-gradient(top, #4B8CFF, #447FE8);/*#4B8CFF, #447FE8*/
// background-image: -moz-linear-gradient(top, #4B8CFF, #447FE8);
// background-image: -ms-linear-gradient(top, #4B8CFF, #447FE8);
// background-image: -o-linear-gradient(top, #4B8CFF, #447FE8);
// background-image: linear-gradient(to bottom, #4B8CFF, #447FE8);
// background-image: url("arrow.ico");
// background-repeat: no-repeat;
// background-position: right bottom;
// }
// #nestedAccordion h3{
// cursor:pointer;
// padding:4px;
// color: #666;
// text-shadow: 0 1px 0 rgba(255, 255, 255, .5);
// background-color: #f5f5f5;
// background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#ededed));
// background-image: -webkit-linear-gradient(top, #f5f5f5, #ededed);
// background-image: -moz-linear-gradient(top, #f5f5f5, #ededed);
// background-image: -ms-linear-gradient(top, #f5f5f5, #ededed);
// background-image: -o-linear-gradient(top, #f5f5f5, #ededed);
// background-image: linear-gradient(to bottom, #f5f5f5, #ededed);
//
// }
// #nestedAccordion h3:hover{
// color:#000;
// }
// #nestedAccordion h3 + div{
// display:none;
// background-color:#F5F5F5;
// padding:5px 5px 5px 30px;
// }
// #nestedAccordion li:hover{
// color:#000;
// cursor:pointer;
// }
// #nestedAccordion h2 +div.aberto{
// display:inherit;
// }
// ///Contrast
// .contraste{
// .thumbnail{
// background-color: black !important;
// }
// .navbar{
// select{
// color: black;
// }
// }
// #nestedAccordion{
// div{
// background-color: black !important;
// color: white !important;
// }
// h3{
// color: white;
// background-color: black !important;
// background-image: none !important;
// border-bottom: 1px solid white;
// }
// h3:hover{
// color: white;
// }
// }
// }
.sort-dropdown {
border: 0;
border-radius: 3px;
color: #59585A;
padding-right: 20px;
}
}
......@@ -7,6 +7,9 @@ class SearchController < ApplicationController
def fetch
objectsFound = []
params[:subject]= params[:subject].split(', ')
params[:type] = params[:type].split(', ')
params[:school_year] = params[:school_year].split(', ')
page=1
if (params[:page])
page = params[:page].to_i
......@@ -15,9 +18,7 @@ class SearchController < ApplicationController
@pagination_limit=10
unless params[:query].blank?
params[:order] = "" if params[:order].blank?
objectsFound = search params[:query], params[:order]
objectsFound = search params
@numFound = objectsFound.length
# case params[:order]
......
......@@ -129,32 +129,34 @@ module OrientDb
# ON LearningObject (name, description)
# FULLTEXT ENGINE LUCENE
# METADATA {"analyzer":"org.apache.lucene.analysis.br.BrazilianAnalyzer"}
def search(qry, order = nil)
def search(params)
# TODO: fix search metadata from dspace
order = params[:order]
qry = params[:query]
unless order.nil?
order = case order
when "author"
"metadata.key['dc.contributor.author']"
when "publicationasc"
"metadata.key['dc.date.submitted']"
when "publicationdesc"
"metadata.key['dc.date.submitted'] DESC"
when "title"
"name ASC"
else
nil
end
when "author"
"author"
when "publicationasc"
"created_at"
when "publicationdesc"
"created_at DESC"
when "title"
"name ASC"
else
nil
end
end
query = "SELECT EXPAND(rid) FROM index:learningobject_search WHERE key LUCENE '#{qry}'"
query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
query = "SELECT * FROM (" + query + ") ORDER BY #{order}" unless order.nil?
query = "SELECT @rid.asString(), last_modified FROM (" + query + ")"
learning_objects_hash = connection.query query, limit: 10000
# return only rids with their modification time
learning_objects_hash.map do |e|
{'@rid' => e['rid'], 'last_modified' => e['last_modified']}
{'@rid': e['rid'], 'last_modified': e['last_modified']}
end
end
......@@ -172,6 +174,15 @@ module OrientDb
hash
end
def fetch_types(types)
qry = ''
types.each do |type|
qry = qry + "type = '#{type}' " if type == types.first
qry = qry + "OR type = '#{type}' " if type != types.first
end
qry
end
private
def accepted_properties
......
......@@ -8,7 +8,7 @@
<%= csrf_meta_tags %>
<meta property="creator.productor" content="http://estruturaorganizacional.dados.gov.br/id/unidade-organizacional/1">
</head>
<body>
<body <%= yield(:body_attributes) %>>
<%= render 'shared/application/header' %>
<% if user_signed_in? %>
......
<input type="hidden" name="learning-objects-count" value="<%= @result.total_count %>"/>
<%= render @objects, orientation: "horizontal" %>
<a href="javascript:void(0);" class="btn btn-primary search-more">Ver mais</a>
<%= link_to "ver mais", "javascript:void(0);", class: "btn btn-primary search-more" unless @objects.blank? %>
<%= content_for(:body_attributes) do %> data-no-turbolink <% end %>
<div class="row">
<div class="col-sm-4 search-sidebar" id="menu-left">
<!-- <h2>Busca Avançada</h2> -->
......@@ -21,7 +22,7 @@
<select class="select-tag-container filter-subject" multiple="multiple">
<option value="Conjunto">Conjuntos</option>
<option value="Soma">Soma</option>
<option value="Álgebra">Álgebra</option>
<option value="Algebra">Álgebra</option>
</select>
</div>
<h4 class="dropdown">Biologia<span class="caret caret-align-right"/></h4>
......@@ -255,7 +256,7 @@
<!-- search results -->
<div class="col-sm-8">
<div>
<div class="result-bar">
<form method="get">
<input type="hidden" name="qry" value="<%= params["qry"] %>">
<div class="col-sm-6">
......@@ -265,7 +266,7 @@
<form method="get">
<input type="hidden" name="qry" value="<%= params["qry"] %>">
<select class="order" class="sort-dropdown" name="order">
<select class="order sort-dropdown" name="order">
<option value="">ordenar resultados</option>
<option value="author">autores</option>
<option value="publicationasc">mais novos</option>
......@@ -283,17 +284,13 @@
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
runDropdown($('.nestedAccordion .dropdown'));
$(".select-tag-container").select2();
search();
$('.nestedAccordion .dropdown').click(function () {
runDropdown(this);
});
$(".select-tag-container").select2();
runDropdown($('.nestedAccordion .dropdown'));
$('.nestedAccordion .dropdown').click(function () {
runDropdown(this);
});
$('.search-sidebar').show();
search();
</script>
module SearchEngine
module OrientdbLucene
def search(qry, order = nil)
learning_object_repository.search(qry, order)
def search(params)
learning_object_repository.search(params)
end
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