diff --git a/Gemfile b/Gemfile index decd76ff1a6fbf0d4127b9cafed50f45dc50630f..3e38292c01202d6dc380022a5f2e09709dd9fa3c 100644 --- a/Gemfile +++ b/Gemfile @@ -35,6 +35,8 @@ gem 'orientdb4r' # web server gem 'puma' +gem 'rufus-scheduler' + group :development, :test do gem 'better_errors' # Call 'byebug' anywhere in the code to stop execution and get a debugger console diff --git a/Gemfile.lock b/Gemfile.lock index 6411c69288061710b4f533e3451510ad25b7d2d4..8e8fa8fd423c085d90fd1aa49d5dbd13bd688af7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,6 +207,7 @@ GEM parser (>= 2.2.0, < 3.0) reek (= 1.6.5) virtus (~> 1.0) + rufus-scheduler (3.1.4) sass (3.4.18) sass-rails (5.0.4) railties (>= 4.0.0, < 5.0) @@ -297,6 +298,7 @@ DEPENDENCIES rmagick rsolr (~> 1.0.12) rubycritic + rufus-scheduler sass-rails (~> 5.0) sdoc (~> 0.4.0) shoulda diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 0bba296bea5d4d68f361a7a9cd418edade099971..8a653cb364e172b3ed9420d3255de776c3cd4a7f 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -22,6 +22,10 @@ $(document).ready(function(){ size_c = readCookie('fontSize'); if (size_c != null) { document.body.style.fontSize = size_c + 'px'; + $('.dropdown-menu').css('fontSize', document.body.style.fontSize); + $('h1').each(function(index,value) { + $(this).css('fontSize', (parseFloat($(this).css('fontSize')) + (size_c - 15)) + 'px'); + }); } Contrast(); }); @@ -57,14 +61,72 @@ function resizeText(increment) { if (increment > 0) { if (size < 25) { document.body.style.fontSize = parseFloat(document.body.style.fontSize) + increment + "px"; + $('.dropdown-menu').css('fontSize', document.body.style.fontSize); + $('h1').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h2').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h3').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h4').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h5').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h6').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); } } else if(increment < 0){ if (size > 10) { document.body.style.fontSize = parseFloat(document.body.style.fontSize) + increment + "px"; + $('.dropdown-menu').css('fontSize', document.body.style.fontSize); + $('h1').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h2').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h3').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h4').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h5').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); + $('h6').each(function(index,value) { + $(this).css('fontSize', parseFloat($(this).css('fontSize')) + increment + 'px'); + }); } } else{ - document.body.style.fontSize = '15px' + size = parseFloat(document.body.style.fontSize); + document.body.style.fontSize = '15px'; + $('.dropdown-menu').css('fontSize', document.body.style.fontSize); + $('h1').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); + $('h2').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); + $('h3').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); + $('h4').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); + $('h5').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); + $('h6').each(function(index,value) { + $(this).css('fontSize',Math.abs(parseFloat($(this).css('fontSize'))-(size-15)) + 'px'); + }); } createCookie('fontSize', parseFloat(document.body.style.fontSize), 365); } @@ -88,6 +150,15 @@ function Contrast() { $('#footer').removeClass("footer-contraste"); $('#footer div').removeClass("footer-contraste"); $('.dropdown-menu').removeClass("dropdown-menu-contrast"); + $('.general_highlights').removeClass("general_highlights-contrast"); + $(".nav > li > a").css('background-color','none'); + $(".nav > li > a").hover( + function(){ + $(this).css('background-color','#eee') + },function(){ + $(this).css('background-color','transparent') + } + ); }else { $('body').addClass("contraste"); $('body').addClass("alto-contraste"); @@ -96,6 +167,15 @@ function Contrast() { $('#footer').addClass("footer-contraste"); $('#footer div').addClass("footer-contraste"); $('.dropdown-menu').addClass("dropdown-menu-contrast"); + $('.general_highlights').addClass("general_highlights-contrast"); + $(".nav > li > a").css('background-color','#transparent'); + $(".nav > li > a").hover( + function(){ + $(this).css('background-color','#000'); + }, function() { + $(this).css('background-color','#transparent') + } + ); } } diff --git a/app/assets/stylesheets/application.css.scss b/app/assets/stylesheets/application.css.scss index c5ae1f36fa5702cec25ffc63fe395408159bbd67..9342e9a7227e8166fe65e3e550b642cc473714df 100644 --- a/app/assets/stylesheets/application.css.scss +++ b/app/assets/stylesheets/application.css.scss @@ -42,9 +42,58 @@ .dropdown-menu-contrast{ background-color: black !important; + border: 1px solid white; +} +.general_highlights-contrast{ + border: 1px solid white; } /*---------------*/ +.padding-left-0{ + padding-left: 0 !important; +} +.padding-right-0{ + padding-right: 0 !important; +} +.general_highlights{ + padding-bottom: 20px; + padding-left: 0px; +} +.font_roboto_light{ + font-family: 'Roboto', sans-serif; +} +#mec_portais{ + background-color: #2E3192; + width: 100px; + height: 50px; +} +#mec_portais2{ + background-color: #2E3192; + width: 100px; + height: 50px; + margin-left: 5px; +} +.rede_social{ + width: 30px; + height: 30px; + border-radius: 5px; +} +#rede_social1{ + background-color: #2E3192; +} +#rede_social2{ + background-color: #C01A2C; + margin-left: 5px; +} +#rede_social3{ + background-color: #00ADEF; + margin-left: 5px; +} +#rede_social4{ + background-color: #6A5E50; + margin-left: 5px; +} + #barra-brasil .brasil-flag{ height: 50px !important; } diff --git a/app/controllers/welcome_controller.rb b/app/controllers/welcome_controller.rb index dc53b3325d9eaf36e0445c15f4ebd50072aef913..37b8bd2034c9bb99f3b7830f66553a342ea4e03c 100644 --- a/app/controllers/welcome_controller.rb +++ b/app/controllers/welcome_controller.rb @@ -1,6 +1,17 @@ class WelcomeController < ApplicationController + def index - @highlights = repository.for(:highlight).find_all + @Carousel = Array.new + @General = Array.new + mainPage = repository.for(:mainPage).find_all + + @Carousel = mainPage[0]["carousel"].collect do |id| + repository.for(:webLink).find_by_id(id)[0] #orientdb returns a hash inside an array, I want only the hash + end + + @General = mainPage[0]["highlights"].collect do |id| + repository.for(:object).find_by_id(id)[0] + end end def faq diff --git a/app/repositories/active_record/carousel_repository.rb b/app/repositories/active_record/carousel_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..bfec616aa00ec56993f360f1f7cc03b22d12133c --- /dev/null +++ b/app/repositories/active_record/carousel_repository.rb @@ -0,0 +1,14 @@ +module ActiveRecord + class CarouselRepository + + def find_all + end + + def find_by_id + end + + def insert_data(name, url) + end + + end +end diff --git a/app/repositories/active_record/learning_object_repository.rb b/app/repositories/active_record/learning_object_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..66a3d4ea20afc0bacc80dbe47589defee4f0b22d --- /dev/null +++ b/app/repositories/active_record/learning_object_repository.rb @@ -0,0 +1,14 @@ +module ActiveRecord + class LearningObjectRepository + + def find_all + end + + def find_by_id + end + + def insert_data(name, url) + end + + end +end diff --git a/app/repositories/active_record/main_page_repository.rb b/app/repositories/active_record/main_page_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..656aab684c7eaa33e845387038aee21882f2615f --- /dev/null +++ b/app/repositories/active_record/main_page_repository.rb @@ -0,0 +1,14 @@ +module ActiveRecord + class MainPageRepository + + def find_all + end + + def find_by_id + end + + def insert_data(name, url) + end + + end +end diff --git a/app/repositories/active_record/highlight_repository.rb b/app/repositories/active_record/weblink_repository.rb similarity index 64% rename from app/repositories/active_record/highlight_repository.rb rename to app/repositories/active_record/weblink_repository.rb index 39afb4fc9432756044326b33dd6a197b7968c12b..a717c04fd8f450ca3d0e531ee82075d8614bde0e 100644 --- a/app/repositories/active_record/highlight_repository.rb +++ b/app/repositories/active_record/weblink_repository.rb @@ -1,9 +1,12 @@ module ActiveRecord - class HighlightRepository + class WeblinkRepository def find_all end + def find_by_id + end + def insert_data(name, url) end diff --git a/app/repositories/orient_db/carousel_repository.rb b/app/repositories/orient_db/carousel_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..a8a2d8c0a0c529dba2d7a43e4d02a0adfe9f5dd5 --- /dev/null +++ b/app/repositories/orient_db/carousel_repository.rb @@ -0,0 +1,24 @@ +module OrientDb + class CarouselRepository < Base + + def find_all + connection.query "SELECT FROM Carousel" + end + + def find_by_id(id) + connection.query "SELECT FROM Carousel where @rid = '#{id}'" + end + + def insert_data (name,url) + connection.command "INSERT INTO Carousel (name,URL) VALUES ('#{name}','#{url}')" + end + + + def destroy_data(id) + return @connection.command "DELETE VERTEX Carousel where @rid = '#{id}'" + rescue + return nil + end + + end +end diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index 9b2a24f7f1ad09145190170473b4470088884637..4be2e7802d881d77edb676d289616163bf691ded 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -21,8 +21,6 @@ module OrientDb def destroy(object) end - private - def initialize_learning_object args LearningObject.new( :id => args["@rid"], @@ -42,6 +40,39 @@ module OrientDb def has(rid) connection.query "SELECT expand(in) FROM (SELECT expand(out_has) FROM User WHERE @rid=#{rid})" + + def find_all + connection.query "SELECT FROM LearningObject" + end + + def find_by_id(id) + connection.query "SELECT FROM LearningObject where @rid = '#{id}'" + end + + def insert_data (name,url) + connection.command "INSERT INTO LearningObject (name,URL) VALUES ('#{name}','#{url}')" + end + + + def destroy_data(id) + return @connection.command "DELETE VERTEX LearningObject where @rid = '#{id}'" + rescue + return nil + end + + def get_likes(id) + likes = connection.query "select outE('Likes') from #{id}" + return likes[0]["outE"] + end + + def get_downloads(id) + downloads = connection.query "select outE('Downloads') from #{id}" + return downloads[0]["outE"] + end + + def get_views(id) + views = connection.query "select outE('Views') from #{id}" + return views[0]["outE"] end end diff --git a/app/repositories/orient_db/main_page_repository.rb b/app/repositories/orient_db/main_page_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..27b7e8e57eaaca569dd1bb55527780fd8ef8b9d5 --- /dev/null +++ b/app/repositories/orient_db/main_page_repository.rb @@ -0,0 +1,29 @@ +module OrientDb + class MainPageRepository < Base + + def find_all + connection.query "SELECT FROM MainPage" + end + + def find_by_id(id) + connection.query "SELECT FROM MainPage where @rid = '#{id}'" + end + + def insert_data (name,url) + connection.command "INSERT INTO MainPage (name,URL) VALUES ('#{name}','#{url}')" + end + + + def destroy_data(id) + return @connection.command "DELETE VERTEX MainPage where @rid = '#{id}'" + rescue + return nil + end + + def update(id,operation,atributte,new) + puts "update #{id} #{operation} #{atributte} = #{new}" + return @connection.command "update #{id} #{operation} #{atributte} = #{new}" + end + + end +end diff --git a/app/repositories/orient_db/weblink_repository.rb b/app/repositories/orient_db/weblink_repository.rb new file mode 100644 index 0000000000000000000000000000000000000000..4141dc96de6761ccfe87e0d0e7da4d40c3691ff7 --- /dev/null +++ b/app/repositories/orient_db/weblink_repository.rb @@ -0,0 +1,24 @@ +module OrientDb + class WeblinkRepository < Base + + def find_all + connection.query "SELECT FROM WebLink" + end + + def find_by_id(id) + connection.query "SELECT FROM WebLink where @rid = '#{id}'" + end + + def insert_data (name,url) + connection.command "INSERT INTO WebLink (name,URL) VALUES ('#{name}','#{url}')" + end + + + def destroy_data(id) + return @connection.command "DELETE VERTEX WebLink where @rid = '#{id}'" + rescue + return nil + end + + end +end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 75255c10fb0f2a9e9c349b29c986ae8ae89353c7..91214e8314b348751ea78190b9f95cb2e248eb5c 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -1,17 +1,16 @@ <!DOCTYPE html> <html> <head> - <title>ChartKickExample</title> + <title>PortalMEC</title> + <%= stylesheet_link_tag 'application', media: 'all' %> + <%= javascript_include_tag 'application' %> + <%= javascript_include_tag "http://www.google.com/jsapi", "chartkick" %> + <%= stylesheet_link_tag 'http://yandex.st/bootstrap/3.1.1/css/bootstrap.min.css' %> + <%= javascript_include_tag 'http://yandex.st/bootstrap/3.1.1/js/bootstrap.min.js' %> + <%= csrf_meta_tags %> - <%= stylesheet_link_tag 'application', media: 'all' %> - <%= javascript_include_tag 'application' %> - <%= javascript_include_tag "http://www.google.com/jsapi", "chartkick" %> - <%= stylesheet_link_tag 'http://yandex.st/bootstrap/3.1.1/css/bootstrap.min.css' %> - <%= javascript_include_tag 'http://yandex.st/bootstrap/3.1.1/js/bootstrap.min.js' %> + <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> - <%= csrf_meta_tags %> - <title>Portalmec</title> - <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> <%= csrf_meta_tags %> <meta property="creator.productor" content="http://estruturaorganizacional.dados.gov.br/id/unidade-organizacional/1"> diff --git a/app/views/shared/application/_footer.html.erb b/app/views/shared/application/_footer.html.erb index 4f3f0fe35e12667f4a7340ad494e08450a15cdcb..d2d8dca54b82afcc988bfa28cba00b67d0d80d48 100644 --- a/app/views/shared/application/_footer.html.erb +++ b/app/views/shared/application/_footer.html.erb @@ -23,12 +23,14 @@ quis. </div> </div> + <div class="footerbar"> <div class="container"> <%= image_tag 'cc.png' %> Creative Commons Attribution 4.0 International Licence </div> </div> + </div> </footer> <script> diff --git a/app/views/shared/application/_header.html.erb b/app/views/shared/application/_header.html.erb index 8afb5ef29dd80fcf154757ff441828675f8616d0..e1389a9f3d4f9619bbc9990efbdc653a18e2ae81 100644 --- a/app/views/shared/application/_header.html.erb +++ b/app/views/shared/application/_header.html.erb @@ -53,50 +53,44 @@ </div> - <div class="container"> - <div class="row"> - <ul class="nav navbar-nav"> - <li><%= link_to 'Principal' %></li> - <li><%= link_to 'Assunto' %></li> - <li class="dropdown mega-menu-fullwidth"> - <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0);">NÃveis</a> - <ul class="dropdown-menu"> - <li> - <div class="mega-menu-content disable-icons"> - <div class="container"> - <div class="row equal-height"> - <div class="col-md-3 equal-height-in"> - <ul class="list-unstyled equal-height-list"> - <li><h3>Ensino Básico</h3></li> - <li><a href="">1º Ano</a></li> - <li><a href="">2º Ano</a></li> - <li><a href="">3º Ano</a></li> - <li><a href="">4º Ano</a></li> - <li><a href="">5º Ano</a></li> - <li><a href="">6º Ano</a></li> - <li><a href="">7º Ano</a></li> - <li><a href="">8º Ano</a></li> - <li><a href="">9º Ano</a></li> - </ul> - </div> - <div class="col-md-3 equal-height-in"> - <ul class="list-unstyled equal-height-list"> - <li><h3>Ensino Médio</h3></li> - <li><a href="">1º Ano</a></li> - <li><a href="">2º Ano</a></li> - <li><a href="">3º Ano</a></li> - </ul> - </div> - </div> - </div> - </li> - </ul> - </li> - <li><%= link_to 'Formato' %></li> - <li><%= link_to 'Contatos' %></li> - <li><%= link_to 'FAQ', faq_path %></li> - </ul> - </div> +<div class="container"> + <div class="row"> + <ul class="nav navbar-nav"> + <li><%= link_to 'Principal' %></li> + <li><%= link_to 'Assunto' %></li> + <li class="dropdown"> + <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0);">NÃveis<span class="caret"></span></a> + <ul class="dropdown-menu"> + <li> + <div class="row" style="width: 400px;"> + <ul class="list-unstyled col-md-5 col-md-offset-1"> + <li><b>Ensino Básico</b></li> + <li role="separator" class="divider"></li> + <li><a href="">1º Ano</a></li> + <li><a href="">2º Ano</a></li> + <li><a href="">3º Ano</a></li> + <li><a href="">4º Ano</a></li> + <li><a href="">5º Ano</a></li> + <li><a href="">6º Ano</a></li> + <li><a href="">7º Ano</a></li> + <li><a href="">8º Ano</a></li> + <li><a href="">9º Ano</a></li> + </ul> + <ul class="list-unstyled col-md-5"> + <li><b>Ensino Médio</b></li> + <li role="separator" class="divider"></li> + <li><a href="">1º Ano</a></li> + <li><a href="">2º Ano</a></li> + <li><a href="">3º Ano</a></li> + </ul> + </div> + </li> + </ul> + </li> + <li><%= link_to 'Formato' %></li> + <li><%= link_to 'FAQ', faq_path %></li> + <li><%= link_to 'Contato', contact_path %></li> + </ul> </div> - +</div> </header> diff --git a/app/views/welcome/contact.html.erb b/app/views/welcome/contact.html.erb index f86576e1a217446e4fedc6a31b49ca733d555d69..f2774f8a33b602f3050f95fefc2e7da31d5f0cdb 100644 --- a/app/views/welcome/contact.html.erb +++ b/app/views/welcome/contact.html.erb @@ -1,5 +1,42 @@ -<div align='center'> - <h3>Contate-nos em:</h3> - <br> - <h5>xxx@c3sl.ufpr.br</h5> +<link href='https://fonts.googleapis.com/css?family=Roboto:300&subset=latin,latin-ext' rel='stylesheet' type='text/css'> +<br> +<div class="container"> + <div class="row"> + <div class="col-md-offset-2 col-md-5"> + <p class="font_roboto_light"> + Email: email@email.com + </p> + <p class="font_roboto_light"> + Redes Sociais + </p> + <div class="row"> + <div id='rede_social1' class='col-md-1 col-sm-offset-1 rede_social'></div> + <div id='rede_social2' class='col-md-1 rede_social'></div> + <div id='rede_social3' class='col-md-1 rede_social'></div> + <div id='rede_social4' class='col-md-1 rede_social'></div> + </div> + <br> + <p class="font_roboto_light"> + Outros sites do ministério da educação + </p> + <div class="row"> + <div id='mec_portais' class='col-md-1 col-sm-offset-1'></div> + <div id='mec_portais2' class='col-md-1'></div> + <div id='mec_portais2' class='col-md-1'></div> + <div id='mec_portais2' class='col-md-1'></div> + </div> + <br> + <p class="font_roboto_light"> + Portal desenvolvido por + </p> + <div class="row"> + <div id='mec_portais' class='col-md-1 col-sm-offset-1'></div> + </div> + </div> + <div class="col-md-3"> + <p class="font_roboto_light"> + Telefone: (01)2345-6789 + </p> + </div> + </div> </div> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index d6af2e7a35c15c283e8433cb208808808dab1c38..287dfa9f657ce4ff0541cc4add6ce32fd3fa0bc2 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -1,15 +1,14 @@ <div class="main container-fluid"> <div class="row"> - <div class="col-md-8"> + <div class="col-sm-offset-1 col-md-7"> <div class="row"> - <div class="col-md-12"> - <% if @highlights.present? %> + <% if @Carousel.present? %> <div id="myCarousel" class="carousel slide" data-ride="carousel"> <!-- Indicators --> <ol class="carousel-indicators"> <% i = 0 %> - <% @highlights.each do |highlight| %> - <% if highlight == @highlights.first %> + <% @Carousel.each do |highlight| %> + <% if highlight == @Carousel.first %> <li data-target="#myCarousel" data-slide-to="<%= i %>" class="active"></li> <% else %> <li data-target="#myCarousel" data-slide-to="<%= i %>"></li> @@ -18,36 +17,93 @@ <% end %> </ol> <div class="carousel-inner" role="listbox"> - <% @highlights.each do |highlight|%> - <% if highlight == @highlights.first %> - <div class="item active"> + <% @Carousel.each do |highlight|%> + <% if highlight == @Carousel.first %> + <% highlight_class="item active" %> <% else %> - <div class="item"> + <% highlight_class="item" %> <% end %> - <%= image_tag 'mecshow_logo.jpg' %> - <div class="container"> - <div class="carousel-caption"> - <h1><%= highlight['name'] %></h1> - <p id="carrousel-new-description">Descrição </p> - <p><a class="btn btn-lg btn-primary" href=<%= highlight['URL'] %> role="button">Mais informações</a></p> - </div> + <div class="<%= highlight_class %>"> + <%= image_tag 'mecshow_logo.jpg'%> + <div class="container"> + <div class="carousel-caption"> + <h1><%= highlight['title'] %></h1> + <p id="carrousel-new-description"><%= highlight['description'] %> </p> + <p><a class="btn btn-lg btn-primary" href=<%= highlight['URL'] %> role="button">Mais informações</a></p> </div> </div> + </div> <% end %> - <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> - <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> - <span class="sr-only">Previous</span> - </a> - <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> - <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> - <span class="sr-only">Next</span> - </a> + <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev"> + <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> + <span class="sr-only">Previous</span> + </a> + <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next"> + <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> + <span class="sr-only">Next</span> + </a> + </div> </div> - </div> + <% end %> </div> - <% end %> + <div class="row"> + <% if @General.present? %> + <ul class="list-unstyled"> + <h2>Destaques</h2> + <% @General.each do |highlight| %> + <li class="col-sm-12 general_highlights"> + <div class="media"> + <div class="media-left media-middle"> + <a href="#"> + <img src="http://dummyimage.com/250x150/363336/fff" alt='dummy image'> + </a> + </div> + <div class="media-body"> + <h4 class="media-heading"><%= highlight['name'] %></h4> + <span>Por <a>Usuário </a></span> + <span class="glyphicon glyphicon-eye-open"><%= highlight['views'] %>  </span> + <span class="glyphicon glyphicon-star"><%= highlight['likes'] %> </span><br> + <b>Descrição:</b> Descrição do objeto em destaque.Descrição do objeto em destaque.Descrição do objeto em destaque.Descrição do objeto em destaque.Descrição do objeto em destaque.<br> + Em<b> Biologia</b>, <b>Biologia Marinha</b> + </div> + </div> + </li> + <% end %> + <% end %> + </ul> + </div> + </div> + <div class="col-md-3 hidden-xs hidden-sm"> + <img src="http://dummyimage.com/350x500/363336/fff" alt='dummy image'> + </div> + </div> + + <div class="row"> + <div class="col-md-11 col-sm-offset-1 padding-left-0"> + <h2>Em Destaque</h2> + <ul class="list-unstyled"> + <% 8.times do %> + <li class="col-sm-3 padding-left-0"> + <div class="media"> + <h4>Matemática</h4> + <div> + <a href="#"> + <img src="http://dummyimage.com/250x150/363336/fff" alt='dummy image' class="img-responsive"> + </a> + </div> + <div class="media-body"> + <h4 class="media-heading">Nome</h4> + <span>Por <a>Usuário </a></span> + <span class="glyphicon glyphicon-eye-open">200  </span> + <span class="glyphicon glyphicon-star">4,5 </span> + <p align='center'> + <a>Ver Mais</a> + </p> + </div> + </div> + </li> + <% end %> + </ul> </div> </div> -</div> -</div> </div> diff --git a/config/initializers/repositories.rb b/config/initializers/repositories.rb index 40e8528a3ed07859f846be3c9a450ed5af37f9e1..3e79d5a19df528f57a9487f827c9685b87d242f8 100644 --- a/config/initializers/repositories.rb +++ b/config/initializers/repositories.rb @@ -1,26 +1,32 @@ Repository::Environments.create :development do |repository| repository.register :learning_object, OrientDb::LearningObjectRepository.new(OrientDb::Client.instance) - repository.register :edge, OrientDb::EdgeRepository.new(OrientDb::Client.instance) repository.register :university, OrientDb::UniversityRepository.new(OrientDb::Client.instance) - repository.register :highlight, OrientDb::HighlightRepository.new(OrientDb::Client.instance) + repository.register :edge, OrientDb::EdgeRepository.new(OrientDb::Client.instance) + repository.register :mainPage, OrientDb::MainPageRepository.new(OrientDb::Client.instance) + repository.register :webLink, OrientDb::WeblinkRepository.new(OrientDb::Client.instance) repository.register :country, OrientDb::CountryRepository.new(OrientDb::Client.instance) repository.register :user, ActiveRecord::UserRepository.new + repository.register :carousel, OrientDb::CarouselRepository.new(OrientDb::Client.instance) end Repository::Environments.create :test do |repository| repository.register :learning_object, OrientDb::LearningObjectRepository.new(OrientDb::Client.instance) repository.register :edge, OrientDb::EdgeRepository.new(OrientDb::Client.instance) repository.register :university, OrientDb::UniversityRepository.new(OrientDb::Client.instance) - repository.register :highlight, OrientDb::HighlightRepository.new(OrientDb::Client.instance) + repository.register :mainPage, OrientDb::MainPageRepository.new(OrientDb::Client.instance) + repository.register :webLink, OrientDb::WeblinkRepository.new(OrientDb::Client.instance) repository.register :country, OrientDb::CountryRepository.new(OrientDb::Client.instance) - repository.register :user, OrientDb::UserRepository.new(OrientDb::Client.instance) + repository.register :carousel, OrientDb::CarouselRepository.new(OrientDb::Client.instance) + repository.register :user, ActiveRecord::UserRepository.new end Repository::Environments.create :production do |repository| repository.register :learning_object, OrientDb::LearningObjectRepository.new(OrientDb::Client.instance) repository.register :edge, OrientDb::EdgeRepository.new(OrientDb::Client.instance) repository.register :university, OrientDb::UniversityRepository.new(OrientDb::Client.instance) - repository.register :highlight, OrientDb::HighlightRepository.new(OrientDb::Client.instance) + repository.register :mainPage, OrientDb::MainPageRepository.new(OrientDb::Client.instance) + repository.register :webLink, OrientDb::WeblinkRepository.new(OrientDb::Client.instance) repository.register :country, OrientDb::CountryRepository.new(OrientDb::Client.instance) - repository.register :user, OrientDb::UserRepository.new(OrientDb::Client.instance) + repository.register :carousel, OrientDb::CarouselRepository.new(OrientDb::Client.instance) + repository.register :user, ActiveRecord::UserRepository.new end \ No newline at end of file diff --git a/config/initializers/task_scheduler.rb b/config/initializers/task_scheduler.rb new file mode 100644 index 0000000000000000000000000000000000000000..58dab127e0d016d74fb860b6d1c1709a27df9766 --- /dev/null +++ b/config/initializers/task_scheduler.rb @@ -0,0 +1,4 @@ +scheduler = Rufus::Scheduler.new +scheduler.every '10m' do + system('rake mainPage:highlights') + end diff --git a/config/orientdb.yml b/config/orientdb.yml index 3e75a677c3e4b72537a2d1e07010159eaf9a278b..88e5d0367003e3f9b48b614ec04f7c910eb54769 100644 --- a/config/orientdb.yml +++ b/config/orientdb.yml @@ -10,4 +10,4 @@ test: database: dev-mauricio username: admin password: admin - port: 2480 \ No newline at end of file + port: 2480 diff --git a/lib/orient_db/client.rb b/lib/orient_db/client.rb index fdce7f7249e64b1192ad1fca8f9d450e5ae9b17a..a7089e51c3f6ca8618dc3347fd55b3aaa7eb3882 100644 --- a/lib/orient_db/client.rb +++ b/lib/orient_db/client.rb @@ -14,4 +14,4 @@ class OrientDb::Client end end -end \ No newline at end of file +end diff --git a/lib/ranking/README.md b/lib/ranking/README.md index 0f01c85eb3a4cd2569e817afd5c898141c39f2ff..7c698ed6867d324326f6dda0251102d44f03bf78 100644 --- a/lib/ranking/README.md +++ b/lib/ranking/README.md @@ -1,5 +1,5 @@ # Ranking docs - + # Refactored ```ruby @@ -8,6 +8,7 @@ items << Ranking::Item.new("ax",1,1,1,["otherStuffA","lala",'a']) items << Ranking::Item.new("bx",2,2,2,[1,2,3,"teste","lblb",'b']) items << Ranking::Item.new("cx",1,1,99,[3,2,1,"teste","lclc",'c']) + rater = Ranking::Rater.new(Ranking::Strategies::BasicRater.new(1000, 1, 100)) rater.sortByRate(items).each do |i| p i.name @@ -15,4 +16,4 @@ end ``` ## Output - - ordered array of Items, starting from the most ranked to the least \ No newline at end of file + - ordered array of Items, starting from the most ranked to the least diff --git a/lib/ranking/strategies/basic_rater.rb b/lib/ranking/strategies/basic_rater.rb index 069740879e7aa0c7a67d2301d6f90b0fc0eb1a63..d88d4951319be14be40f90ce16d2c461c249ca27 100644 --- a/lib/ranking/strategies/basic_rater.rb +++ b/lib/ranking/strategies/basic_rater.rb @@ -2,7 +2,7 @@ class Ranking::Strategies::BasicRater < Ranking::Strategy def sortByRate(items) items.zip( items.size.downto(1) ) - .collect { |item,reverseIndex| self.rateItem( item, reverseIndex ) } + .collect { |item,reverseIndex| rateItem( item, reverseIndex ) } .sort { |itemA,itemB| itemA.rate <=> itemB.rate } .collect { |ri| ri.item } .reverse # Best ranked comes first @@ -19,4 +19,4 @@ class Ranking::Strategies::BasicRater < Ranking::Strategy build_rated_item item, rate end -end \ No newline at end of file +end diff --git a/lib/tasks/mainPage.rake b/lib/tasks/mainPage.rake new file mode 100644 index 0000000000000000000000000000000000000000..c4b7bab948e06fc012bb577d140f5fdf8f59bb50 --- /dev/null +++ b/lib/tasks/mainPage.rake @@ -0,0 +1,27 @@ +namespace :mainPage do + desc "Generate the MainPage" + task :highlights => :environment do + repository = Portalmec::Application.repository + + puts 'Generating the main page highlights' + objects = repository.for(:learningObjet).find_all + objects = objects.collect do |object| + likes = repository.for(:learningObjet).get_likes(object['@rid']).size() + views = repository.for(:learningObjet).get_views(object['@rid']).size() + downloads = repository.for(:learningObjet).get_downloads(object['@rid']).size() + Ranking::Item.new(object['@rid'],views,downloads,likes) + end + rater = Ranking::Rater.new(Ranking::Strategies::BasicRater.new(1000,1,100)) + objects = rater.sortByRate(objects).take(5) + + mainPage = repository.for(:mainPage).find_all[0] + rid = mainPage['@rid'] + repository.for(:mainPage).update(rid,'set','highlights','[]') + objects.each do |object| + repository.for(:mainPage).update(rid,'add','highlights',object.name) + end + + puts 'Generate the main page subject highlights' + # TODO: generate + end +end