diff --git a/app/assets/stylesheets/favorites.scss b/app/assets/stylesheets/favorites.scss index 8cb2d3a..0d9f5ff 100644 --- a/app/assets/stylesheets/favorites.scss +++ b/app/assets/stylesheets/favorites.scss @@ -43,4 +43,23 @@ } +} + +.thumb { + width: 3em; +} + +.table_wrapper { + table { + border-collapse: collapse; + width: 100%; + } + + th, td { + padding: 8px; + text-align: left; + border-bottom: 1px solid #ddd; + } + + } \ No newline at end of file diff --git a/app/assets/stylesheets/projects_crawler.scss b/app/assets/stylesheets/projects_crawler.scss index 9783c68..4950b24 100644 --- a/app/assets/stylesheets/projects_crawler.scss +++ b/app/assets/stylesheets/projects_crawler.scss @@ -1,3 +1,49 @@ // Place all the styles related to the ProjectsCrawler controller here. // They will automatically be included in application.css. // You can use Sass (SCSS) here: https://sass-lang.com/ + +.projects-list { + list-style: none; + padding: 0; + margin: 0; + + a { + text-decoration: none; + color: black; + } + + .project { + line-height: 72px; + width: 100%; + padding: 8px 0 8px 0; + + .list-link { + float: left; + width: 89%; + height: 72px; + } + + .project-title { + width: 100%; + display: inline-block; + text-align: left; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .add-to-fav { + display: inline-block; + vertical-align: middle; + float: right; + width: 36px; + height: 36px; + + svg { + width: 100%; + height: auto; + vertical-align: middle; + } + } + } +} diff --git a/app/controllers/crawlers/projects_crawler_controller.rb b/app/controllers/crawlers/projects_crawler_controller.rb index 13688c9..a830b7a 100644 --- a/app/controllers/crawlers/projects_crawler_controller.rb +++ b/app/controllers/crawlers/projects_crawler_controller.rb @@ -1,13 +1,42 @@ class Crawlers::ProjectsCrawlerController < Crawlers::TissCrawlerController def show_basic + params[:api] = '/api/search/projectFullSearch/v1.0/projects' + params[:search_parameter] = 'searchterm' + puts params[:search_context] + @host = TissCrawler.get_host + # TissCrawler performs general search over the available projects + @projects = TissCrawler.search(params) end def show_detail + params[:api] = '/api/pdb/rest/project/v2/' + @id = params[:id] + + puts params + # TissCrawler fetches the project's detail information + @project = TissCrawler.get_project_details(params) + # Host is needed for image rendering + @host = TissCrawler.get_host end def add_to_fav + params[:api] = '/api/pdb/rest/project/v2/' + puts params[:id] + @project = TissCrawler.get_project_details(params) + # create stores the object to the db after creation + favorite_hash = {id: params[:id], + # the user who is currently active + user_id: current_user.id, + title: @project['titleDe']} + if FavoriteProject.create(favorite_hash).valid? + FavoriteProject.create(favorite_hash) + flash[:alert] = 'Project added to your favorites!' + else + flash[:alert] = 'Project is already favorited!' + end + redirect_back(fallback_location: search) end end diff --git a/app/controllers/crawlers/tiss_crawler_controller.rb b/app/controllers/crawlers/tiss_crawler_controller.rb index d7f2368..aae78e3 100644 --- a/app/controllers/crawlers/tiss_crawler_controller.rb +++ b/app/controllers/crawlers/tiss_crawler_controller.rb @@ -19,6 +19,7 @@ class Crawlers::TissCrawlerController < ApplicationController # redirect to thesis_show_basic, propagate the search_term redirect_to :controller => 'crawlers/theses_crawler', :action => :show_basic, :search_term => params[:search_term] when 'Projects' + redirect_to :controller => 'crawlers/projects_crawler', :action => :show_basic, :search_term => params[:search_term] else puts 'Undefined search context' end diff --git a/app/views/crawlers/projects_crawler/show_basic.html.erb b/app/views/crawlers/projects_crawler/show_basic.html.erb new file mode 100644 index 0000000..21e2bab --- /dev/null +++ b/app/views/crawlers/projects_crawler/show_basic.html.erb @@ -0,0 +1,20 @@ +
<%= raw @project['abstractDe'] %>
+ <% else %> + <% if @project['abstractEn'] != nil %> +<%= raw @project['abstractEn'] %>
+ <% end %> + <% end %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 946e698..9b741ff 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -30,6 +30,14 @@ Rails.application.routes.draw do get 'add_to_fav' post 'add_to_fav' end + + namespace :projects_crawler do + get 'show_basic' + get 'show_detail' + post 'show_detail' + get 'add_to_fav' + post 'add_to_fav' + end end namespace :favorites do @@ -40,6 +48,7 @@ Rails.application.routes.draw do get 'theses' delete 'delete_thesis' get 'projects' + delete 'delete_projects' end # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html diff --git a/lib/tiss/tiss_crawler.rb b/lib/tiss/tiss_crawler.rb index bc764cb..207ccaf 100644 --- a/lib/tiss/tiss_crawler.rb +++ b/lib/tiss/tiss_crawler.rb @@ -46,6 +46,16 @@ class TissCrawler response.parsed_response['tuvienna']['thesis'] end + def self.get_project_details(params) + api = params[:api] + id = params[:id] + url = $host + api + id + puts(url) + + response = HTTParty.get(url) + response.parsed_response['tuVienna']['project'] + end + def self.get_host $host end