Skip to content

Commit

Permalink
Fix: Harmonize API and UI urls in Search, Annotator and Recommender p…
Browse files Browse the repository at this point in the history
…ages (#534)

* create a stimulus controller to customize forms urls

* harmonize search page api and ui urls

* harmonize recommender api and ui urls

* harmonize annotator api and ui urls

* clean form url controller code
  • Loading branch information
Bilelkihal authored and syphax-bouazzouni committed Mar 25, 2024
1 parent a0716d3 commit fef53e3
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 18 deletions.
10 changes: 5 additions & 5 deletions app/controllers/annotator_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,9 @@ def annotator_results(uri)
if params[:text] && !params[:text].empty?
api_params = {
text: params[:text],
ontologies: list_to_string(params[:ontologies_list]),
sementic_types: list_to_string(params[:semantic_types_list]),
semantic_groups: list_to_string(params[:semantic_groups_list]),
ontologies: params[:ontologies],
semantic_types: params[:semantic_types],
semantic_groups: params[:semantic_groups],
whole_word_only: params[:whole_word_only],
longest_only: params[:longest_only],
expand_mappings: params[:expand_mappings],
Expand Down Expand Up @@ -191,8 +191,8 @@ def initialize_options
end

def empty_advanced_options
params[:semantic_types_list].nil? &&
params[:semantic_groups_list].nil? &&
params[:semantic_types].nil? &&
params[:semantic_groups].nil? &&
params[:class_hierarchy_max_level] == 'None' &&
(params[:score].nil? || params[:score] == 'none') &&
params[:score_threshold] == '0' &&
Expand Down
3 changes: 1 addition & 2 deletions app/controllers/recommender_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ def index
@not_valid_max_num_set = (params[:max_elements_set] < '2') || (params[:max_elements_set] > '4')
end
unless params[:input].nil? || params[:input].empty? || @not_valid_max_num_set
params[:ontologies] = params[:ontologies_list]&.join(',') || ''
recommendations = LinkedData::Client::HTTP.post(RECOMMENDER_URI, params)
@advanced_options_open = !recommender_params_empty?
@results = []
Expand Down Expand Up @@ -52,6 +51,6 @@ def percentage(string)
end

def recommender_params_empty?
(params[:wc].eql?('0.55') && params[:wa].eql?('0.15') && params[:wd].eql?('0.15') && params[:ws].eql?('0.15') && params[:max_elements_set].eql?('3') && params[:ontologies_list].nil?)
(params[:wc].eql?('0.55') && params[:wa].eql?('0.15') && params[:wd].eql?('0.15') && params[:ws].eql?('0.15') && params[:max_elements_set].eql?('3') && params[:ontologies].nil?)
end
end
1 change: 0 additions & 1 deletion app/controllers/search_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ def index
return if @search_query.empty?

params[:pagesize] = "150"
params[:ontologies] = params[:ontologies_list]&.join(",")
results = LinkedData::Client::Models::Class.search(@search_query, params).collection

@advanced_options_open = !search_params_empty?
Expand Down
31 changes: 31 additions & 0 deletions app/javascript/controllers/form_url_controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
import { Controller } from "@hotwired/stimulus"


export default class extends Controller {

submit(event){
event.preventDefault();
let selectedOptions, hiddenInput, optionString, selectElem
let allSelects = this.element.querySelectorAll('select[name$="[]"]');
for (const select of allSelects) {
const selectElem = select.name.substring(0, select.name.indexOf('['));
const selectedOptions = select.selectedOptions;
if (selectedOptions.length > 0) {
const optionString = Array.from(selectedOptions, option => option.value).join(",");
const hiddenInput = this.#create_hidden_input_element(optionString, selectElem);
event.currentTarget.appendChild(hiddenInput);
select.remove();
}
}

event.currentTarget.submit();
}

#create_hidden_input_element(optionString, name){
let hiddenInput = document.createElement('input');
hiddenInput.type = 'hidden';
hiddenInput.name = name;
hiddenInput.value = optionString;
return hiddenInput
}
}
5 changes: 4 additions & 1 deletion app/javascript/controllers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,4 +95,7 @@ import SampleTextController from "./sample_text_controller"
application.register("sample-text", SampleTextController)

import AnnotatorController from "./annotator_controller"
application.register('annotator', AnnotatorController)
application.register('annotator', AnnotatorController)

import FormUrlController from "./form_url_controller"
application.register('form-url', FormUrlController)
8 changes: 4 additions & 4 deletions app/views/annotator/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
.line
.annotator-page-decription
= t('annotator.description')
= form_tag(@form_url, method: :get, 'data-turbo': true, novalidate: true) do
= form_tag(@form_url, method: :get, 'data-turbo': true, novalidate: true,'data-controller': 'form-url', 'data-action': 'submit->form-url#submit') do
.annotator-page-inputs{'data-controller': 'reveal-component'}
.inputs
%div
Expand All @@ -20,7 +20,7 @@
= t('annotator.options')
.select-ontologies
- get_ontologies_data
= render Input::SelectComponent.new(label: t('recommender.select_ontologies'), id: 'ontologies', name: 'ontologies_list[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies_list])
= render Input::SelectComponent.new(label: t('recommender.select_ontologies'), id: 'ontologies', name: 'ontologies[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies]&.split(','))
.prefrences
.preftitle
= t('annotator.prefrences')
Expand All @@ -35,8 +35,8 @@

.more-advanced-options{'data-reveal-component-target': 'item', class: "#{@advanced_options_open ? '' : 'd-none'}"}
.filters_line
= render Input::SelectComponent.new(label: t('annotator.select_umls_sementic_types'), id: 'umls_semantic_types', name: 'semantic_types_list[]', value: @semantic_types_for_select, multiple: true, selected: params[:semantic_types_list])
= render Input::SelectComponent.new(label: t('annotator.select_umls_sementic_groupes'), id: 'umls_semantic_groups', name: 'semantic_groups_list[]', value: @semantic_groups_for_select, multiple: true, selected: params[:semantic_groups_list])
= render Input::SelectComponent.new(label: t('annotator.select_umls_sementic_types'), id: 'umls_semantic_types', name: 'semantic_types[]', value: @semantic_types_for_select, multiple: true, selected: params[:semantic_types]&.split(','))
= render Input::SelectComponent.new(label: t('annotator.select_umls_sementic_groupes'), id: 'umls_semantic_groups', name: 'semantic_groups[]', value: @semantic_groups_for_select, multiple: true, selected: params[:semantic_groups]&.split(','))
= render Input::SelectComponent.new(label: t('annotator.include_ancentors'), id: 'ancestors_level', name: 'class_hierarchy_max_level', value: @ancestors_levels, selected: params[:class_hierarchy_max_level])
.filters_line
- include_score_helper = 'Score annotations following previous NCBO 2009 measure (old) or Score annotations following C-Value measure (cvalue) or Score annotations following C-Value measure with hierarchy expansion (cvalueh).'
Expand Down
4 changes: 2 additions & 2 deletions app/views/recommender/index.html.haml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
.recommender-page-decription
= t('recommender.intro')

= form_tag('/recommender', method: :get, 'data-turbo': true, novalidate: true) do
= form_tag('/recommender', method: :get, 'data-turbo': true, novalidate: true, 'data-action': 'submit->form-url#submit', 'data-controller': 'form-url') do
.recommender-page-inputs{'data-controller': 'reveal-component'}
.inputs
%div
Expand Down Expand Up @@ -66,7 +66,7 @@
.inputs-container
.ontologies.input
- get_ontologies_data
= render Input::SelectComponent.new(label: t('recommender.select_ontologies'), id: 'ontologies', name: 'ontologies_list[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies_list])
= render Input::SelectComponent.new(label: t('recommender.select_ontologies'), id: 'ontologies', name: 'ontologies[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies]&.split(','))
.maxsets.input.d-none{'data-recommender-target': 'maxset'}
= render Input::NumberComponent.new(label: t('recommender.max_ont_set'), name: "max_elements_set", value: params[:max_elements_set] || 3, min: '2', max: '4', step: '1', error_message: "#{@not_valid_max_num_set ? 'Valid values are: 2, 3, 4' : ''}")
.input{'data-recommender-target': 'empty'}
Expand Down
6 changes: 3 additions & 3 deletions app/views/search/index.html.haml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.search-page-container
.search-page-container
.search-page-subcontainer{'data-controller': 'reveal-component'}
= form_tag(search_path, method: :get, 'data-turbo': true) do
= form_tag(search_path, method: :get,data:{turbo: true, controller: 'form-url', action: 'submit->form-url#submit'}) do
.search-page-input-container{'data-controller': 'reveal'}
.search-page-input
%input{type:"text", placeholder: t('search.search_place_holder'), name: "q", value: @search_query}
Expand All @@ -23,7 +23,7 @@
= t("search.advanced_options.ontologies")
.field
- get_ontologies_data
= render Input::SelectComponent.new(id: 'search-ontologies', name: 'ontologies_list[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies_list])
= render Input::SelectComponent.new(id: 'search-ontologies', name: 'ontologies[]', value: @onts_for_select, multiple: "multiple", selected: params[:ontologies]&.split(','))

.right
.filter-container
Expand Down

0 comments on commit fef53e3

Please sign in to comment.